summaryrefslogtreecommitdiff
path: root/lib/internal/modules/esm
diff options
context:
space:
mode:
authorcjihrig <cjihrig@gmail.com>2019-05-21 23:07:26 -0400
committercjihrig <cjihrig@gmail.com>2019-05-24 08:33:53 -0400
commit3293bbf77a4e940ccb8f250b65129b3c4dc44fb5 (patch)
tree345f34a8f0264e83f54b6f3633d04618e5286656 /lib/internal/modules/esm
parent77b9ce57e209c82b43d39caa50dc301f00a8abdb (diff)
downloadandroid-node-v8-3293bbf77a4e940ccb8f250b65129b3c4dc44fb5.tar.gz
android-node-v8-3293bbf77a4e940ccb8f250b65129b3c4dc44fb5.tar.bz2
android-node-v8-3293bbf77a4e940ccb8f250b65129b3c4dc44fb5.zip
esm: refactor createDynamicModule()
This commit refactors createDynamicModule() for readability: - The map() callback functions are named and moved to a higher scope. - The two export map() loops are combined. - JSON.stringify() is only called once per import. PR-URL: https://github.com/nodejs/node/pull/27809 Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com> Reviewed-By: Guy Bedford <guybedford@gmail.com> Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Yongsheng Zhang <zyszys98@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'lib/internal/modules/esm')
-rw-r--r--lib/internal/modules/esm/create_dynamic_module.js25
1 files changed, 14 insertions, 11 deletions
diff --git a/lib/internal/modules/esm/create_dynamic_module.js b/lib/internal/modules/esm/create_dynamic_module.js
index 45f964d5ad..1201820003 100644
--- a/lib/internal/modules/esm/create_dynamic_module.js
+++ b/lib/internal/modules/esm/create_dynamic_module.js
@@ -4,24 +4,27 @@ const { ArrayPrototype, JSON, Object } = primordials;
const debug = require('internal/util/debuglog').debuglog('esm');
-const createDynamicModule = (imports, exports, url = '', evaluate) => {
- debug('creating ESM facade for %s with exports: %j', url, exports);
- const names = ArrayPrototype.map(exports, (name) => `${name}`);
-
- const source = `
-${ArrayPrototype.join(ArrayPrototype.map(imports, (impt, index) =>
- `import * as $import_${index} from ${JSON.stringify(impt)};
-import.meta.imports[${JSON.stringify(impt)}] = $import_${index};`), '\n')
+function createImport(impt, index) {
+ const imptPath = JSON.stringify(impt);
+ return `import * as $import_${index} from ${imptPath};
+import.meta.imports[${imptPath}] = $import_${index};`;
}
-${ArrayPrototype.join(ArrayPrototype.map(names, (name) =>
- `let $${name};
+
+function createExport(expt) {
+ const name = `${expt}`;
+ return `let $${name};
export { $${name} as ${name} };
import.meta.exports.${name} = {
get: () => $${name},
set: (v) => $${name} = v,
-};`), '\n')
+};`;
}
+const createDynamicModule = (imports, exports, url = '', evaluate) => {
+ debug('creating ESM facade for %s with exports: %j', url, exports);
+ const source = `
+${ArrayPrototype.join(ArrayPrototype.map(imports, createImport), '\n')}
+${ArrayPrototype.join(ArrayPrototype.map(exports, createExport), '\n')}
import.meta.done();
`;
const { ModuleWrap, callbackMap } = internalBinding('module_wrap');