@@ -33,6 +33,8 @@ const {
3333const readFileAsync = promisify ( fs . readFile ) ;
3434const JsonParse = JSON . parse ;
3535const { maybeCacheSourceMap } = require ( 'internal/source_map/source_map_cache' ) ;
36+ const moduleWrap = internalBinding ( 'module_wrap' ) ;
37+ const { ModuleWrap } = moduleWrap ;
3638
3739const debug = debuglog ( 'esm' ) ;
3840
@@ -78,22 +80,18 @@ translators.set('module', async function moduleStrategy(url) {
7880 const source = `${ await getSource ( url ) } ` ;
7981 maybeCacheSourceMap ( url , source ) ;
8082 debug ( `Translating StandardModule ${ url } ` ) ;
81- const { ModuleWrap, callbackMap } = internalBinding ( 'module_wrap' ) ;
8283 const module = new ModuleWrap ( stripShebang ( source ) , url ) ;
83- callbackMap . set ( module , {
84+ moduleWrap . callbackMap . set ( module , {
8485 initializeImportMeta,
8586 importModuleDynamically,
8687 } ) ;
87- return {
88- module,
89- reflect : undefined ,
90- } ;
88+ return module ;
9189} ) ;
9290
9391// Strategy for loading a node-style CommonJS module
9492const isWindows = process . platform === 'win32' ;
9593const winSepRegEx = / \/ / g;
96- translators . set ( 'commonjs' , async function commonjsStrategy ( url , isMain ) {
94+ translators . set ( 'commonjs' , function commonjsStrategy ( url , isMain ) {
9795 debug ( `Translating CJSModule ${ url } ` ) ;
9896 const pathname = internalURLModule . fileURLToPath ( new URL ( url ) ) ;
9997 const cached = this . cjsCache . get ( url ) ;
@@ -106,17 +104,17 @@ translators.set('commonjs', async function commonjsStrategy(url, isMain) {
106104 ] ;
107105 if ( module && module . loaded ) {
108106 const exports = module . exports ;
109- return createDynamicModule ( [ ] , [ 'default' ] , url , ( reflect ) => {
110- reflect . exports . default . set ( exports ) ;
111- } ) ;
107+ return new ModuleWrap ( function ( ) {
108+ this . setExport ( 'default' , exports ) ;
109+ } , [ 'default' ] , url ) ;
112110 }
113- return createDynamicModule ( [ ] , [ 'default' ] , url , ( ) => {
111+ return new ModuleWrap ( function ( ) {
114112 debug ( `Loading CJSModule ${ url } ` ) ;
115113 // We don't care about the return val of _load here because Module#load
116114 // will handle it for us by checking the loader registry and filling the
117115 // exports like above
118116 CJSModule . _load ( pathname , undefined , isMain ) ;
119- } ) ;
117+ } , [ 'default' ] , url ) ;
120118} ) ;
121119
122120// Strategy for loading a node builtin CommonJS module that isn't
@@ -146,9 +144,9 @@ translators.set('json', async function jsonStrategy(url) {
146144 module = CJSModule . _cache [ modulePath ] ;
147145 if ( module && module . loaded ) {
148146 const exports = module . exports ;
149- return createDynamicModule ( [ ] , [ 'default' ] , url , ( reflect ) => {
150- reflect . exports . default . set ( exports ) ;
151- } ) ;
147+ return new ModuleWrap ( function ( ) {
148+ this . setExport ( 'default' , exports ) ;
149+ } , [ 'default' ] , url ) ;
152150 }
153151 }
154152 const content = `${ await getSource ( url ) } ` ;
@@ -159,9 +157,9 @@ translators.set('json', async function jsonStrategy(url) {
159157 module = CJSModule . _cache [ modulePath ] ;
160158 if ( module && module . loaded ) {
161159 const exports = module . exports ;
162- return createDynamicModule ( [ 'default' ] , url , ( reflect ) => {
163- reflect . exports . default . set ( exports ) ;
164- } ) ;
160+ return new ModuleWrap ( function ( ) {
161+ this . setExport ( 'default' , exports ) ;
162+ } , [ 'default' ] , url ) ;
165163 }
166164 }
167165 try {
@@ -181,10 +179,10 @@ translators.set('json', async function jsonStrategy(url) {
181179 if ( pathname ) {
182180 CJSModule . _cache [ modulePath ] = module ;
183181 }
184- return createDynamicModule ( [ ] , [ 'default' ] , url , ( reflect ) => {
182+ return new ModuleWrap ( function ( ) {
185183 debug ( `Parsing JSONModule ${ url } ` ) ;
186- reflect . exports . default . set ( module . exports ) ;
187- } ) ;
184+ this . setExport ( 'default' , module . exports ) ;
185+ } , [ 'default' ] , url ) ;
188186} ) ;
189187
190188// Strategy for loading a wasm module
@@ -207,5 +205,5 @@ translators.set('wasm', async function(url) {
207205 const { exports } = new WebAssembly . Instance ( compiled , reflect . imports ) ;
208206 for ( const expt of Object . keys ( exports ) )
209207 reflect . exports [ expt ] . set ( exports [ expt ] ) ;
210- } ) ;
208+ } ) . module ;
211209} ) ;
0 commit comments