@@ -19,6 +19,7 @@ import type { File } from 'editor';
19
19
20
20
let packages_url : string ;
21
21
let svelte_url : string ;
22
+ let version : string ;
22
23
let current_id : number ;
23
24
24
25
let fulfil_ready : ( arg ?: never ) => void ;
@@ -31,11 +32,18 @@ self.addEventListener('message', async (event: MessageEvent<BundleMessageData>)
31
32
case 'init' : {
32
33
( { packages_url, svelte_url } = event . data ) ;
33
34
34
- const { version } = await fetch ( `${ svelte_url } /package.json` ) . then ( ( r ) => r . json ( ) ) ;
35
+ ( { version } = await fetch ( `${ svelte_url } /package.json` ) . then ( ( r ) => r . json ( ) ) ) ;
35
36
console . log ( `Using Svelte compiler version ${ version } ` ) ;
36
37
37
- const compiler = await fetch ( `${ svelte_url } /compiler/index.js` ) . then ( ( r ) => r . text ( ) ) ;
38
- ( 0 , eval ) ( compiler + '\n//# sourceURL=compiler/index.js@' + version ) ;
38
+ if ( version . startsWith ( '4.' ) ) {
39
+ // unpkg doesn't set the correct MIME type for .cjs files
40
+ // https://github.com/mjackson/unpkg/issues/355
41
+ const compiler = await fetch ( `${ svelte_url } /compiler.cjs` ) . then ( ( r ) => r . text ( ) ) ;
42
+ ( 0 , eval ) ( compiler + '\n//# sourceURL=compiler.cjs@' + version ) ;
43
+ } else {
44
+ const compiler = await fetch ( `${ svelte_url } /compiler/index.js` ) . then ( ( r ) => r . text ( ) ) ;
45
+ ( 0 , eval ) ( compiler + '\n//# sourceURL=compiler/index.js@' + version ) ;
46
+ }
39
47
40
48
fulfil_ready ( ) ;
41
49
break ;
@@ -359,7 +367,7 @@ async function get_bundle(
359
367
dev : true
360
368
} ) ;
361
369
362
- if ( result . css ) {
370
+ if ( result . css ?. code ) {
363
371
// resolve local files by inlining them
364
372
result . css . code = result . css . code . replace (
365
373
/ u r l \( [ ' " ] ? ( \. .+ ?\. ( s v g | w e b p | p n g ) ) [ ' " ] ? \) / g,
@@ -481,7 +489,9 @@ async function bundle({
481
489
type : 'file' ,
482
490
name : '__entry.js' ,
483
491
basename : '__entry.js' ,
484
- contents : `
492
+ contents :
493
+ version . split ( '.' ) [ 0 ] >= '5'
494
+ ? `
485
495
import { unmount as u } from 'svelte';
486
496
import { styles } from './__shared.js';
487
497
export { mount, untrack } from 'svelte';
@@ -490,6 +500,20 @@ async function bundle({
490
500
u(component);
491
501
styles.forEach(style => style.remove());
492
502
}
503
+ `
504
+ : `
505
+ import { styles } from './__shared.js';
506
+ export {default as App} from './App.svelte';
507
+ export function mount(component, options) {
508
+ return new component(options);
509
+ }
510
+ export function unmount(component) {
511
+ component.$destroy();
512
+ styles.forEach(style => style.remove());
513
+ }
514
+ export function untrack(fn) {
515
+ return fn();
516
+ }
493
517
` ,
494
518
text : true
495
519
} ) ;
0 commit comments