@@ -27,72 +27,69 @@ let svelte_url: string;
27
27
let version : string ;
28
28
let current_id : number ;
29
29
30
- let fulfil_ready : ( arg ?: never ) => void ;
31
- let reject_ready : ( arg ?: Error ) => void ;
32
- const ready = new Promise ( ( f , r ) => {
33
- fulfil_ready = f ;
34
- reject_ready = r ;
35
- } ) ;
36
-
37
30
let files : Map < string , string > ;
38
31
let package_json : any ;
39
32
40
- self . addEventListener ( 'message' , async ( event : MessageEvent < BundleMessageData > ) => {
41
- switch ( event . data . type ) {
42
- case 'init' : {
43
- const svelte_version = event . data . svelte_version ;
44
- packages_url = event . data . packages_url ;
33
+ let inited = Promise . withResolvers < typeof svelte > ( ) ;
45
34
46
- svelte_url = `${ packages_url } /svelte@${ svelte_version } ` ;
47
- const match = / ^ ( p r | c o m m i t ) - ( .+ ) / . exec ( svelte_version ) ;
35
+ async function init ( v : string , packages_url : string ) {
36
+ svelte_url = `${ packages_url } /svelte@${ v } ` ;
37
+ const match = / ^ ( p r | c o m m i t ) - ( .+ ) / . exec ( v ) ;
48
38
49
- let tarball : FileDescription [ ] | undefined ;
39
+ let tarball : FileDescription [ ] | undefined ;
50
40
51
- if ( match ) {
52
- try {
53
- const response = await fetch ( `https://pkg.pr.new/svelte@${ match [ 2 ] } ` ) ;
41
+ if ( match ) {
42
+ const response = await fetch ( `https://pkg.pr.new/svelte@${ match [ 2 ] } ` ) ;
54
43
55
- if ( ! response . ok ) {
56
- throw new Error (
57
- `impossible to fetch the compiler from this ${ match [ 1 ] === 'pr' ? 'PR' : 'commit' } `
58
- ) ;
59
- }
44
+ if ( ! response . ok ) {
45
+ throw new Error (
46
+ `impossible to fetch the compiler from this ${ match [ 1 ] === 'pr' ? 'PR' : 'commit' } `
47
+ ) ;
48
+ }
60
49
61
- tarball = await parseTar ( await response . arrayBuffer ( ) ) ;
62
- files = new Map (
63
- tarball . map ( ( file ) => [ file . name . substring ( 'package' . length ) , file . text ] )
64
- ) ;
65
- const package_json_content = files . get ( '/package.json' ) ! ;
66
- package_json = JSON . parse ( package_json_content ) ;
67
- } catch ( e ) {
68
- reject_ready ( e as Error ) ;
69
- return ;
70
- }
71
- }
50
+ tarball = await parseTar ( await response . arrayBuffer ( ) ) ;
51
+ files = new Map ( tarball . map ( ( file ) => [ file . name . substring ( 'package' . length ) , file . text ] ) ) ;
52
+
53
+ const json = files . get ( '/package.json' ) ! ;
54
+ package_json = JSON . parse ( json ) ;
55
+ version = package_json . version ;
56
+ } else {
57
+ version = ( await fetch ( `${ svelte_url } /package.json` ) . then ( ( r ) => r . json ( ) ) ) . version ;
58
+ }
59
+
60
+ console . log ( `Using Svelte compiler version ${ version } ` ) ;
61
+
62
+ const entry = version . startsWith ( '3.' )
63
+ ? 'compiler.js'
64
+ : version . startsWith ( '4.' )
65
+ ? 'compiler.cjs'
66
+ : 'compiler/index.js' ;
67
+
68
+ const compiler = tarball
69
+ ? tarball . find ( ( file ) => file . name === `package/${ entry } ` ) ! . text
70
+ : await fetch ( `${ svelte_url } /${ entry } ` ) . then ( ( r ) => r . text ( ) ) ;
71
+
72
+ ( 0 , eval ) ( compiler + `\n//# sourceURL=${ entry } @` + version ) ;
72
73
73
- ( { version } =
74
- package_json ?? ( await fetch ( `${ svelte_url } /package.json` ) . then ( ( r ) => r . json ( ) ) ) ) ;
75
- console . log ( `Using Svelte compiler version ${ version } ` ) ;
74
+ return svelte ;
75
+ }
76
76
77
- const entry = version . startsWith ( '3.' )
78
- ? 'compiler.js'
79
- : version . startsWith ( '4.' )
80
- ? 'compiler.cjs'
81
- : 'compiler/index.js' ;
77
+ self . addEventListener ( 'message' , async ( event : MessageEvent < BundleMessageData > ) => {
78
+ switch ( event . data . type ) {
79
+ case 'init' : {
80
+ const svelte_version = event . data . svelte_version ;
82
81
83
- const compiler = tarball
84
- ? tarball . find ( ( file ) => file . name === `package/${ entry } ` ) ! . text
85
- : await fetch ( `${ svelte_url } /${ entry } ` ) . then ( ( r ) => r . text ( ) ) ;
82
+ packages_url = event . data . packages_url ;
83
+ svelte_url = `${ packages_url } /svelte@${ svelte_version } ` ;
86
84
87
- ( 0 , eval ) ( compiler + `\n//# sourceURL= ${ entry } @` + version ) ;
85
+ init ( svelte_version , packages_url ) . then ( inited . resolve , inited . reject ) ;
88
86
89
- fulfil_ready ( ) ;
90
87
break ;
91
88
}
92
89
93
90
case 'bundle' : {
94
91
try {
95
- await ready ;
92
+ await inited . promise ;
96
93
} catch ( e ) {
97
94
self . postMessage ( {
98
95
type : 'error' ,
0 commit comments