Summary: As a first step I've configured bundling for the main process code using Metro. For now I haven't converted anything to ts, just made that possible. The bundle is just produced into the "static" directory. To avoid too many changes I kept the "static" folder as it is, but probably non-static code should be moved from there. Also installed modules from "node_modules" for the main process are not bundled to avoid potential issues with node native modules. Reviewed By: mweststrate Differential Revision: D19960982 fbshipit-source-id: efbd426254e2b37c913c5f5f75f042c50ccee2f3
67 lines
1.7 KiB
JavaScript
67 lines
1.7 KiB
JavaScript
/**
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*
|
|
* @format
|
|
*/
|
|
|
|
import {transform} from '@babel/core';
|
|
import electronProcess from '../electron-process';
|
|
|
|
const babelOptions = {
|
|
ast: true,
|
|
plugins: [electronProcess],
|
|
filename: 'index.js',
|
|
};
|
|
|
|
test('transform "process.exit(0);"', () => {
|
|
const src = 'process.exit(0);';
|
|
const code = transform(src, babelOptions).code;
|
|
expect(code).toMatchInlineSnapshot(`"electronProcess.exit(0);"`);
|
|
});
|
|
|
|
test('transform "global.process.exit(0);"', () => {
|
|
const src = 'global.process.exit(0);';
|
|
const code = transform(src, babelOptions).code;
|
|
expect(code).toMatchInlineSnapshot(`"global.electronProcess.exit(0);"`);
|
|
});
|
|
|
|
test('transform "process.ENV.TEST = "true";"', () => {
|
|
const src = 'process.ENV.TEST = "true";';
|
|
const code = transform(src, babelOptions).code;
|
|
expect(code).toMatchInlineSnapshot(
|
|
`"electronProcess.ENV.TEST = \\"true\\";"`,
|
|
);
|
|
});
|
|
|
|
test('do not transform if process bound in an upper scope', () => {
|
|
const src = `
|
|
const process = {};
|
|
for (const i=0; i<10; i++) {
|
|
process.ENV[i] = i;
|
|
}
|
|
`;
|
|
const code = transform(src, babelOptions).code;
|
|
expect(code).toMatchInlineSnapshot(`
|
|
"const process = {};
|
|
|
|
for (const i = 0; i < 10; i++) {
|
|
process.ENV[i] = i;
|
|
}"
|
|
`);
|
|
});
|
|
|
|
test('do not transform if process bound to the current scope', () => {
|
|
const src = `
|
|
const process = {};
|
|
process.ENV.TEST = "true";
|
|
`;
|
|
const code = transform(src, babelOptions).code;
|
|
expect(code).toMatchInlineSnapshot(`
|
|
"const process = {};
|
|
process.ENV.TEST = \\"true\\";"
|
|
`);
|
|
});
|