11const parse = require ( "tns-core-modules/css" ) . parse ;
2+ const urlPattern = / ( ' | " ) ( .* ?) \1/ ;
23
34module . exports = function ( content , map ) {
45 const ast = parse ( content ) ;
@@ -7,14 +8,13 @@ module.exports = function (content, map) {
78 getImportsFrom ( ast )
89 . map ( mapURI )
910 . forEach ( ( { uri, requireURI } ) => {
10- dependencies . push ( `global.registerModule(${ uri } , () => require(${ requireURI } ));` ) ;
11+ dependencies . push ( `global.registerModule(" ${ uri } " , () => require(" ${ requireURI } " ));` ) ;
1112
12- // call registerModule with requireURI to handle cases like @import "~@nativescript/theme/css/blue.css";
13+ // Call registerModule with requireURI to handle cases like @import "~@nativescript/theme/css/blue.css";
1314 if ( uri !== requireURI ) {
14- dependencies . push ( `global.registerModule(${ requireURI } , () => require(${ requireURI } ));` ) ;
15+ dependencies . push ( `global.registerModule(" ${ requireURI } " , () => require(" ${ requireURI } " ));` ) ;
1516 }
1617 } ) ;
17-
1818 const str = JSON . stringify ( ast , ( k , v ) => k === "position" ? undefined : v ) ;
1919 this . callback ( null , `${ dependencies . join ( "\n" ) } module.exports = ${ str } ;` , map ) ;
2020}
@@ -25,12 +25,21 @@ function getImportsFrom(ast) {
2525 }
2626 return ast . stylesheet . rules
2727 . filter ( rule => rule . type === "import" )
28- . map ( importRule => importRule . import . replace ( / [ \' \" ] / gm , "" ) ) ;
28+ . map ( urlFromImportRule ) ;
2929}
3030
31+ /**
32+ * Extracts the url from import rule (ex. `url("./platform.css")`)
33+ */
34+ function urlFromImportRule ( importRule ) {
35+ const urlValue = importRule . import ;
36+ const urlMatch = urlValue && urlValue . match ( urlPattern ) ;
37+ return urlMatch && urlMatch [ 2 ] ;
38+ } ;
39+
3140function mapURI ( uri ) {
3241 return {
33- uri : JSON . stringify ( uri ) ,
34- requireURI : JSON . stringify ( uri [ 0 ] === "~" && uri [ 1 ] !== "/" ? uri . substr ( 1 ) : uri )
42+ uri : uri ,
43+ requireURI : uri [ 0 ] === "~" && uri [ 1 ] !== "/" ? uri . substr ( 1 ) : uri
3544 } ;
3645}
0 commit comments