@@ -42,25 +42,21 @@ const ESM_ENV = '__esm-env.js';
42
42
43
43
let current_id : number ;
44
44
45
- let ready : ReturnType < typeof load_svelte > ;
46
-
47
45
self . addEventListener ( 'message' , async ( event : MessageEvent < BundleMessageData > ) => {
48
46
switch ( event . data . type ) {
49
47
case 'init' : {
50
- ready = load_svelte ( event . data . svelte_version , ( version ) => {
51
- self . postMessage ( {
52
- type : 'version' ,
53
- message : version
54
- } ) ;
55
- } ) ;
56
-
48
+ get_svelte ( event . data . svelte_version ) ;
57
49
break ;
58
50
}
59
51
60
52
case 'bundle' : {
61
53
try {
62
- const { svelte, version : svelte_version , can_use_experimental_async } = await ready ;
63
54
const { uid, files, options } = event . data ;
55
+ const {
56
+ svelte,
57
+ version : svelte_version ,
58
+ can_use_experimental_async
59
+ } = await get_svelte ( options . svelte_version ) ;
64
60
65
61
current_id = uid ;
66
62
@@ -92,6 +88,25 @@ self.addEventListener('message', async (event: MessageEvent<BundleMessageData>)
92
88
}
93
89
} ) ;
94
90
91
+ let ready : ReturnType < typeof load_svelte > ;
92
+ let ready_version : string ;
93
+
94
+ function get_svelte ( svelte_version : string ) {
95
+ if ( ready_version === svelte_version ) return ready ;
96
+
97
+ self . postMessage ( { type : 'status' , message : `fetching svelte@${ svelte_version } ` } ) ;
98
+ ready_version = svelte_version ;
99
+ ready = load_svelte ( svelte_version || 'latest' ) ;
100
+ ready . then ( ( { version } ) => {
101
+ ready_version = version ;
102
+ self . postMessage ( {
103
+ type : 'version' ,
104
+ message : version
105
+ } ) ;
106
+ } ) ;
107
+ return ready ;
108
+ }
109
+
95
110
const ABORT = { aborted : true } ;
96
111
97
112
let previous : {
0 commit comments