summaryrefslogtreecommitdiff
path: root/lib/internal/modules/esm/translators.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/internal/modules/esm/translators.js')
-rw-r--r--lib/internal/modules/esm/translators.js42
1 files changed, 20 insertions, 22 deletions
diff --git a/lib/internal/modules/esm/translators.js b/lib/internal/modules/esm/translators.js
index e8eddcfd21..b4d41685ed 100644
--- a/lib/internal/modules/esm/translators.js
+++ b/lib/internal/modules/esm/translators.js
@@ -32,6 +32,8 @@ const {
const readFileAsync = promisify(fs.readFile);
const JsonParse = JSON.parse;
const { maybeCacheSourceMap } = require('internal/source_map/source_map_cache');
+const moduleWrap = internalBinding('module_wrap');
+const { ModuleWrap } = moduleWrap;
const debug = debuglog('esm');
@@ -77,22 +79,18 @@ translators.set('module', async function moduleStrategy(url) {
const source = `${await getSource(url)}`;
maybeCacheSourceMap(url, source);
debug(`Translating StandardModule ${url}`);
- const { ModuleWrap, callbackMap } = internalBinding('module_wrap');
const module = new ModuleWrap(source, url);
- callbackMap.set(module, {
+ moduleWrap.callbackMap.set(module, {
initializeImportMeta,
importModuleDynamically,
});
- return {
- module,
- reflect: undefined,
- };
+ return module;
});
// Strategy for loading a node-style CommonJS module
const isWindows = process.platform === 'win32';
const winSepRegEx = /\//g;
-translators.set('commonjs', async function commonjsStrategy(url, isMain) {
+translators.set('commonjs', function commonjsStrategy(url, isMain) {
debug(`Translating CJSModule ${url}`);
const pathname = internalURLModule.fileURLToPath(new URL(url));
const cached = this.cjsCache.get(url);
@@ -105,17 +103,17 @@ translators.set('commonjs', async function commonjsStrategy(url, isMain) {
];
if (module && module.loaded) {
const exports = module.exports;
- return createDynamicModule([], ['default'], url, (reflect) => {
- reflect.exports.default.set(exports);
- });
+ return new ModuleWrap(function() {
+ this.setExport('default', exports);
+ }, ['default'], url);
}
- return createDynamicModule([], ['default'], url, () => {
+ return new ModuleWrap(function() {
debug(`Loading CJSModule ${url}`);
// We don't care about the return val of _load here because Module#load
// will handle it for us by checking the loader registry and filling the
// exports like above
CJSModule._load(pathname, undefined, isMain);
- });
+ }, ['default'], url);
});
// Strategy for loading a node builtin CommonJS module that isn't
@@ -145,9 +143,9 @@ translators.set('json', async function jsonStrategy(url) {
module = CJSModule._cache[modulePath];
if (module && module.loaded) {
const exports = module.exports;
- return createDynamicModule([], ['default'], url, (reflect) => {
- reflect.exports.default.set(exports);
- });
+ return new ModuleWrap(function() {
+ this.setExport('default', exports);
+ }, ['default'], url);
}
}
const content = `${await getSource(url)}`;
@@ -158,9 +156,9 @@ translators.set('json', async function jsonStrategy(url) {
module = CJSModule._cache[modulePath];
if (module && module.loaded) {
const exports = module.exports;
- return createDynamicModule(['default'], url, (reflect) => {
- reflect.exports.default.set(exports);
- });
+ return new ModuleWrap(function() {
+ this.setExport('default', exports);
+ }, ['default'], url);
}
}
try {
@@ -180,10 +178,10 @@ translators.set('json', async function jsonStrategy(url) {
if (pathname) {
CJSModule._cache[modulePath] = module;
}
- return createDynamicModule([], ['default'], url, (reflect) => {
+ return new ModuleWrap(function() {
debug(`Parsing JSONModule ${url}`);
- reflect.exports.default.set(module.exports);
- });
+ this.setExport('default', module.exports);
+ }, ['default'], url);
});
// Strategy for loading a wasm module
@@ -206,5 +204,5 @@ translators.set('wasm', async function(url) {
const { exports } = new WebAssembly.Instance(compiled, reflect.imports);
for (const expt of Object.keys(exports))
reflect.exports[expt].set(exports[expt]);
- });
+ }).module;
});