1
- import type { File } from '../Workspace.svelte' ;
1
+ import type { CompileResult } from 'svelte/compiler' ;
2
+ import type { ExposedCompilerOptions , File } from '../Workspace.svelte' ;
2
3
3
4
// hack for magic-string and Svelte 4 compiler
4
5
// do not put this into a separate module and import it, would be treeshaken in prod
@@ -39,12 +40,10 @@ addEventListener('message', async (event) => {
39
40
const { id, file, options } = event . data as {
40
41
id : number ;
41
42
file : File ;
42
- options : { generate : 'client' | 'server' ; dev : boolean } ;
43
+ options : ExposedCompilerOptions ;
43
44
} ;
44
45
45
- const fn = file . name . endsWith ( '.svelte' ) ? self . svelte . compile : self . svelte . compileModule ;
46
-
47
- if ( ! fn ) {
46
+ if ( ! file . name . endsWith ( '.svelte' ) && ! self . svelte . compileModule ) {
48
47
// .svelte.js file compiled with Svelte 3/4 compiler
49
48
postMessage ( {
50
49
id,
@@ -69,7 +68,22 @@ addEventListener('message', async (event) => {
69
68
}
70
69
71
70
try {
72
- const result = fn ( file . contents , { ...options , filename : file . name } ) ;
71
+ let result : CompileResult ;
72
+
73
+ if ( file . name . endsWith ( '.svelte' ) ) {
74
+ result = self . svelte . compile ( file . contents , {
75
+ generate : options . generate , // TODO do we need to adjust this for 3/4?
76
+ dev : options . dev ,
77
+ modernAst : options . modernAst ,
78
+ filename : file . name
79
+ } ) ;
80
+ } else {
81
+ result = self . svelte . compileModule ( file . contents , {
82
+ generate : options . generate ,
83
+ dev : options . dev ,
84
+ filename : file . name
85
+ } ) ;
86
+ }
73
87
74
88
postMessage ( {
75
89
id,
0 commit comments