@@ -101,68 +101,51 @@ const createGenerator = (i = 0) => name =>
101101module . exports = postcss . plugin ( plugin , ( ) => ( css , result ) => {
102102 const { icssImports, icssExports } = extractICSS ( css ) ;
103103 const getAliasName = createGenerator ( ) ;
104+ const addExports = ( node , name , value ) => {
105+ if ( isForbidden ( name ) ) {
106+ result . warn ( `Dot and hash symbols are not allowed in value "${ name } "` , {
107+ node
108+ } ) ;
109+ } else {
110+ if ( icssExports [ name ] ) {
111+ result . warn ( `"${ name } " value already declared` , { node } ) ;
112+ }
113+ }
114+ icssExports [ name ] = replaceValueSymbols ( value , icssExports ) ;
115+ } ;
104116
105- css . walkAtRules ( "value" , atRule => {
106- if ( atRule . params . indexOf ( "@value" ) !== - 1 ) {
107- result . warn ( `Invalid value definition "${ atRule . params } "` , {
108- node : atRule
117+ css . walkAtRules ( "value" , atrule => {
118+ if ( atrule . params . indexOf ( "@value" ) !== - 1 ) {
119+ result . warn ( `Invalid value definition "${ atrule . params } "` , {
120+ node : atrule
109121 } ) ;
110122 } else {
111- const parsed = parse ( atRule . params ) ;
123+ const parsed = parse ( atrule . params ) ;
112124 if ( parsed ) {
113125 if ( parsed . type === "value" ) {
114126 const { name, value } = parsed ;
115- if ( isForbidden ( name ) ) {
116- result . warn (
117- `Dot and hash symbols are not allowed in value "${ name } "` ,
118- { node : atRule }
119- ) ;
120- } else {
121- if ( icssExports [ name ] ) {
122- result . warn ( `"${ name } " value already declared` , {
123- node : atRule
124- } ) ;
125- }
126- icssExports [ name ] = replaceValueSymbols ( value , icssExports ) ;
127- }
127+ addExports ( atrule , name , value ) ;
128128 }
129129 if ( parsed . type === "import" ) {
130- const pairs = parsed . pairs
131- . filter ( ( [ , local ] ) => {
132- if ( isForbidden ( local ) ) {
133- result . warn (
134- `Dot and hash symbols are not allowed in value "${ local } "`
135- ) ;
136- return false ;
137- }
138- return true ;
139- } )
140- . map ( ( [ imported , local ] ) => {
141- const alias = getAliasName ( local ) ;
142- if ( icssExports [ local ] ) {
143- result . warn ( `"${ local } " value already declared` , {
144- node : atRule
145- } ) ;
146- }
147- icssExports [ local ] = alias ;
148- return [ alias , imported ] ;
149- } ) ;
150- if ( pairs . length ) {
151- const aliases = fromPairs ( pairs ) ;
152- icssImports [ parsed . path ] = Object . assign (
153- { } ,
154- icssImports [ parsed . path ] ,
155- aliases
156- ) ;
157- }
130+ const pairs = parsed . pairs . map ( ( [ imported , local ] ) => {
131+ const alias = getAliasName ( local ) ;
132+ addExports ( atrule , local , alias ) ;
133+ return [ alias , imported ] ;
134+ } ) ;
135+ const aliases = fromPairs ( pairs ) ;
136+ icssImports [ parsed . path ] = Object . assign (
137+ { } ,
138+ icssImports [ parsed . path ] ,
139+ aliases
140+ ) ;
158141 }
159142 } else {
160- result . warn ( `Invalid value definition "${ atRule . params } "` , {
161- node : atRule
143+ result . warn ( `Invalid value definition "${ atrule . params } "` , {
144+ node : atrule
162145 } ) ;
163146 }
164147 }
165- atRule . remove ( ) ;
148+ atrule . remove ( ) ;
166149 } ) ;
167150
168151 replaceSymbols ( css , icssExports ) ;
0 commit comments