@@ -23,28 +23,48 @@ export interface StylePreprocessorResults {
2323
2424// .scss/.sass processor 
2525const  scss : StylePreprocessor  =  ( source ,  map ,  options ,  load  =  require )  =>  { 
26-   const  nodeSass  =  load ( 'sass' ) 
27-   const  finalOptions  =  { 
28-     ...options , 
29-     data : getSource ( source ,  options . filename ,  options . additionalData ) , 
30-     file : options . filename , 
31-     outFile : options . filename , 
32-     sourceMap : ! ! map , 
33-   } 
26+   const  nodeSass : typeof  import ( 'sass' )  =  load ( 'sass' ) 
27+   const  {  compileString,  renderSync }  =  nodeSass 
28+ 
29+   const  data  =  getSource ( source ,  options . filename ,  options . additionalData ) 
30+   let  css : string 
31+   let  dependencies : string [ ] 
32+   let  sourceMap : any 
3433
3534  try  { 
36-     const  result  =  nodeSass . renderSync ( finalOptions ) 
37-     const  dependencies  =  result . stats . includedFiles 
35+     if  ( compileString )  { 
36+       const  {  pathToFileURL,  fileURLToPath } : typeof  import ( 'url' )  =  load ( 'url' ) 
37+ 
38+       const  result  =  compileString ( data ,  { 
39+         ...options , 
40+         url : pathToFileURL ( options . filename ) , 
41+         sourceMap : ! ! map , 
42+       } ) 
43+       css  =  result . css 
44+       dependencies  =  result . loadedUrls . map ( url  =>  fileURLToPath ( url ) ) 
45+       sourceMap  =  map  ? result . sourceMap !  : undefined 
46+     }  else  { 
47+       const  result  =  renderSync ( { 
48+         ...options , 
49+         data, 
50+         file : options . filename , 
51+         outFile : options . filename , 
52+         sourceMap : ! ! map , 
53+       } ) 
54+       css  =  result . css . toString ( ) 
55+       dependencies  =  result . stats . includedFiles 
56+       sourceMap  =  map  ? JSON . parse ( result . map ! . toString ( ) )  : undefined 
57+     } 
58+ 
3859    if  ( map )  { 
3960      return  { 
40-         code : result . css . toString ( ) , 
41-         map : merge ( map ,  JSON . parse ( result . map . toString ( ) ) ) , 
61+         code : css , 
4262        errors : [ ] , 
4363        dependencies, 
64+         map : merge ( map ,  sourceMap ! ) , 
4465      } 
4566    } 
46- 
47-     return  {  code : result . css . toString ( ) ,  errors : [ ] ,  dependencies } 
67+     return  {  code : css ,  errors : [ ] ,  dependencies } 
4868  }  catch  ( e : any )  { 
4969    return  {  code : '' ,  errors : [ e ] ,  dependencies : [ ]  } 
5070  } 
0 commit comments