@@ -17,14 +17,20 @@ import type {
17
17
import { StylesheetLanguage , StylesheetPluginOptions } from './stylesheet-plugin-factory' ;
18
18
19
19
let sassWorkerPool : SassWorkerImplementation | undefined ;
20
+ let sassWorkerPoolPromise : Promise < SassWorkerImplementation > | undefined ;
20
21
21
22
function isSassException ( error : unknown ) : error is Exception {
22
23
return ! ! error && typeof error === 'object' && 'sassMessage' in error ;
23
24
}
24
25
25
26
export function shutdownSassWorkerPool ( ) : void {
26
- sassWorkerPool ?. close ( ) ;
27
- sassWorkerPool = undefined ;
27
+ if ( sassWorkerPool ) {
28
+ sassWorkerPool . close ( ) ;
29
+ sassWorkerPool = undefined ;
30
+ } else if ( sassWorkerPoolPromise ) {
31
+ void sassWorkerPoolPromise . then ( shutdownSassWorkerPool ) ;
32
+ }
33
+ sassWorkerPoolPromise = undefined ;
28
34
}
29
35
30
36
export const SassStylesheetLanguage = Object . freeze < StylesheetLanguage > ( {
@@ -104,8 +110,12 @@ async function compileString(
104
110
) : Promise < OnLoadResult > {
105
111
// Lazily load Sass when a Sass file is found
106
112
if ( sassWorkerPool === undefined ) {
107
- const sassService = await import ( '../../sass/sass-service' ) ;
108
- sassWorkerPool = new sassService . SassWorkerImplementation ( true ) ;
113
+ if ( sassWorkerPoolPromise === undefined ) {
114
+ sassWorkerPoolPromise = import ( '../../sass/sass-service' ) . then (
115
+ ( sassService ) => new sassService . SassWorkerImplementation ( true ) ,
116
+ ) ;
117
+ }
118
+ sassWorkerPool = await sassWorkerPoolPromise ;
109
119
}
110
120
111
121
// Cache is currently local to individual compile requests.
0 commit comments