1- import type { File } from '../Workspace.svelte' ;
1+ import type { CompileResult } from 'svelte/compiler' ;
2+ import type { ExposedCompilerOptions , File } from '../Workspace.svelte' ;
23
34// hack for magic-string and Svelte 4 compiler
45// do not put this into a separate module and import it, would be treeshaken in prod
@@ -39,12 +40,10 @@ addEventListener('message', async (event) => {
3940 const { id, file, options } = event . data as {
4041 id : number ;
4142 file : File ;
42- options : { generate : 'client' | 'server' ; dev : boolean } ;
43+ options : ExposedCompilerOptions ;
4344 } ;
4445
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 ) {
4847 // .svelte.js file compiled with Svelte 3/4 compiler
4948 postMessage ( {
5049 id,
@@ -69,7 +68,22 @@ addEventListener('message', async (event) => {
6968 }
7069
7170 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+ }
7387
7488 postMessage ( {
7589 id,
0 commit comments