44
55const {
66 JSON ,
7+ Object,
78 SafeMap,
89 StringPrototype
910} = primordials ;
@@ -17,8 +18,6 @@ const CJSModule = require('internal/modules/cjs/loader');
1718const internalURLModule = require ( 'internal/url' ) ;
1819const createDynamicModule = require (
1920 'internal/modules/esm/create_dynamic_module' ) ;
20- const createWASMModule = require (
21- 'internal/modules/esm/create_wasm_module' ) ;
2221const fs = require ( 'fs' ) ;
2322const { fileURLToPath, URL } = require ( 'url' ) ;
2423const { debuglog } = require ( 'internal/util/debuglog' ) ;
@@ -76,11 +75,11 @@ translators.set('commonjs', async function commonjsStrategy(url, isMain) {
7675 ] ;
7776 if ( module && module . loaded ) {
7877 const exports = module . exports ;
79- return createDynamicModule ( [ 'default' ] , url , ( reflect ) => {
78+ return createDynamicModule ( [ ] , [ 'default' ] , url , ( reflect ) => {
8079 reflect . exports . default . set ( exports ) ;
8180 } ) ;
8281 }
83- return createDynamicModule ( [ 'default' ] , url , ( ) => {
82+ return createDynamicModule ( [ ] , [ 'default' ] , url , ( ) => {
8483 debug ( `Loading CJSModule ${ url } ` ) ;
8584 // We don't care about the return val of _load here because Module#load
8685 // will handle it for us by checking the loader registry and filling the
@@ -101,7 +100,7 @@ translators.set('builtin', async function builtinStrategy(url) {
101100 }
102101 module . compileForPublicLoader ( true ) ;
103102 return createDynamicModule (
104- [ ...module . exportKeys , 'default' ] , url , ( reflect ) => {
103+ [ ] , [ ...module . exportKeys , 'default' ] , url , ( reflect ) => {
105104 debug ( `Loading BuiltinModule ${ url } ` ) ;
106105 module . reflect = reflect ;
107106 for ( const key of module . exportKeys )
@@ -120,7 +119,7 @@ translators.set('json', async function jsonStrategy(url) {
120119 let module = CJSModule . _cache [ modulePath ] ;
121120 if ( module && module . loaded ) {
122121 const exports = module . exports ;
123- return createDynamicModule ( [ 'default' ] , url , ( reflect ) => {
122+ return createDynamicModule ( [ ] , [ 'default' ] , url , ( reflect ) => {
124123 reflect . exports . default . set ( exports ) ;
125124 } ) ;
126125 }
@@ -140,7 +139,7 @@ translators.set('json', async function jsonStrategy(url) {
140139 throw err ;
141140 }
142141 CJSModule . _cache [ modulePath ] = module ;
143- return createDynamicModule ( [ 'default' ] , url , ( reflect ) => {
142+ return createDynamicModule ( [ ] , [ 'default' ] , url , ( reflect ) => {
144143 debug ( `Parsing JSONModule ${ url } ` ) ;
145144 reflect . exports . default . set ( module . exports ) ;
146145 } ) ;
@@ -151,11 +150,21 @@ translators.set('wasm', async function(url) {
151150 const pathname = fileURLToPath ( url ) ;
152151 const buffer = await readFileAsync ( pathname ) ;
153152 debug ( `Translating WASMModule ${ url } ` ) ;
153+ let compiled ;
154154 try {
155- const compiled = await WebAssembly . compile ( buffer ) ;
156- return createWASMModule ( compiled , url ) ;
155+ compiled = await WebAssembly . compile ( buffer ) ;
157156 } catch ( err ) {
158157 err . message = pathname + ': ' + err . message ;
159158 throw err ;
160159 }
160+
161+ const imports =
162+ WebAssembly . Module . imports ( compiled ) . map ( ( { module } ) => module ) ;
163+ const exports = WebAssembly . Module . exports ( compiled ) . map ( ( { name } ) => name ) ;
164+
165+ return createDynamicModule ( imports , exports , url , ( reflect ) => {
166+ const { exports } = new WebAssembly . Instance ( compiled , reflect . imports ) ;
167+ for ( const expt of Object . keys ( exports ) )
168+ reflect . exports [ expt ] . set ( exports [ expt ] ) ;
169+ } ) ;
161170} ) ;
0 commit comments