summaryrefslogtreecommitdiff
path: root/lib/module.js
diff options
context:
space:
mode:
authorBradley Farias <bradley.meck@gmail.com>2017-11-20 10:49:54 -0600
committerAnna Henningsen <anna@addaleax.net>2017-11-28 02:52:43 +0100
commit2219859675743f158c46178464b2db042a6b3294 (patch)
tree04f8c6dc67186c3cee162cc3d7b9cac17ec7909a /lib/module.js
parentb44efded8481877c1ec782112b9ae4c4fec37463 (diff)
downloadandroid-node-v8-2219859675743f158c46178464b2db042a6b3294.tar.gz
android-node-v8-2219859675743f158c46178464b2db042a6b3294.tar.bz2
android-node-v8-2219859675743f158c46178464b2db042a6b3294.zip
module: be lazy when creating CJS facades
This should remove the penalty for loading CJS that is never imported. PR-URL: https://github.com/nodejs/node/pull/17153 Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Timothy Gu <timothygu99@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'lib/module.js')
-rw-r--r--lib/module.js16
1 files changed, 11 insertions, 5 deletions
diff --git a/lib/module.js b/lib/module.js
index e1279b75bc..a2d772a381 100644
--- a/lib/module.js
+++ b/lib/module.js
@@ -575,15 +575,21 @@ Module.prototype.load = function(filename) {
if (ESMLoader) {
const url = getURLFromFilePath(filename);
const urlString = `${url}`;
+ const exports = this.exports;
if (ESMLoader.moduleMap.has(urlString) !== true) {
- const ctx = createDynamicModule(['default'], url);
- ctx.reflect.exports.default.set(this.exports);
- ESMLoader.moduleMap.set(urlString,
- new ModuleJob(ESMLoader, url, async () => ctx));
+ ESMLoader.moduleMap.set(
+ urlString,
+ new ModuleJob(ESMLoader, url, async () => {
+ const ctx = createDynamicModule(
+ ['default'], url);
+ ctx.reflect.exports.default.set(exports);
+ return ctx;
+ })
+ );
} else {
const job = ESMLoader.moduleMap.get(urlString);
if (job.reflect)
- job.reflect.exports.default.set(this.exports);
+ job.reflect.exports.default.set(exports);
}
}
};