@@ -272,25 +272,46 @@ impl<'a> Context<'a> {
272
272
273
273
// generates somthing like
274
274
// ```js
275
+ // import * as import0 from './snippets/.../inline1.js';
276
+ // ```,
277
+ //
278
+ // ```js
275
279
// const imports = {
276
280
// __wbindgen_placeholder__: {
277
281
// __wbindgen_throw: function(..) { .. },
278
282
// ..
279
- // }
283
+ // },
284
+ // './snippets/deno-65e2634a84cc3c14/inline1.js': import0,
280
285
// }
281
286
// ```
282
- fn generate_deno_imports ( & self ) -> String {
283
- let mut imports = "const imports = {\n " . to_string ( ) ;
284
- imports. push_str ( & format ! ( " {}: {{\n " , crate :: PLACEHOLDER_MODULE ) ) ;
287
+ fn generate_deno_imports ( & self ) -> ( String , String ) {
288
+ let mut imports = String :: new ( ) ;
289
+ let mut wasm_import_object = "const imports = {\n " . to_string ( ) ;
290
+
291
+ wasm_import_object. push_str ( & format ! ( " {}: {{\n " , crate :: PLACEHOLDER_MODULE ) ) ;
285
292
286
293
for ( id, js) in crate :: sorted_iter ( & self . wasm_import_definitions ) {
287
294
let import = self . module . imports . get ( * id) ;
288
- imports. push_str ( & format ! ( "{}: {},\n " , & import. name, js. trim( ) ) ) ;
295
+ wasm_import_object. push_str ( & format ! ( "{}: {},\n " , & import. name, js. trim( ) ) ) ;
296
+ }
297
+
298
+ wasm_import_object. push_str ( "\t },\n " ) ;
299
+
300
+ // e.g. snippets without parameters
301
+ let import_modules = self
302
+ . module
303
+ . imports
304
+ . iter ( )
305
+ . map ( |import| & import. module )
306
+ . filter ( |module| module. as_str ( ) != PLACEHOLDER_MODULE ) ;
307
+ for ( i, module) in import_modules. enumerate ( ) {
308
+ imports. push_str ( & format ! ( "import * as import{} from '{}'\n " , i, module) ) ;
309
+ wasm_import_object. push_str ( & format ! ( " '{}': import{}," , module, i) )
289
310
}
290
311
291
- imports . push_str ( "\t } \n };\n \n " ) ;
312
+ wasm_import_object . push_str ( "\n };\n \n " ) ;
292
313
293
- imports
314
+ ( imports, wasm_import_object )
294
315
}
295
316
296
317
fn generate_deno_wasm_loading ( & self , module_name : & str ) -> String {
@@ -369,7 +390,10 @@ impl<'a> Context<'a> {
369
390
}
370
391
371
392
OutputMode :: Deno => {
372
- footer. push_str ( & self . generate_deno_imports ( ) ) ;
393
+ let ( js_imports, wasm_import_object) = self . generate_deno_imports ( ) ;
394
+ imports. push_str ( & js_imports) ;
395
+ footer. push_str ( & wasm_import_object) ;
396
+
373
397
footer. push_str ( & self . generate_deno_wasm_loading ( module_name) ) ;
374
398
375
399
if needs_manual_start {
0 commit comments