@@ -17,16 +17,19 @@ const processAtRule = (onError, atRule, root, targetClass, importPath) => {
17
17
if ( matchedDeclarations . length === 0 && nestedRules . length === 0 ) {
18
18
if ( importPath ) {
19
19
onError ( `Could not find class '${ targetClass } ' in file '${ importPath } '` ) ;
20
+ return [ ] ;
20
21
} else {
21
22
onError ( `Could not find class '${ targetClass } '` ) ;
23
+ return [ ] ;
22
24
}
23
25
}
24
26
25
27
nestedRules . forEach ( ( nestedRule ) => {
26
- nestedRule . selectors = nestedRule . selectors . map ( ( selector ) =>
27
- replaceClassName ( selector , targetClass , atRule . parent . selector ) ,
28
+ nestedRule . selector = replaceClassName (
29
+ nestedRule . selector ,
30
+ targetClass ,
31
+ atRule . parent . selector ,
28
32
) ;
29
- root . append ( nestedRule ) ;
30
33
} ) ;
31
34
32
35
mediaQueries . forEach ( ( mediaQuery ) => {
@@ -36,21 +39,23 @@ const processAtRule = (onError, atRule, root, targetClass, importPath) => {
36
39
replaceClassName ( selector , targetClass , atRule . parent . selector ) ,
37
40
) ) ,
38
41
) ;
39
-
40
- root . append ( mediaQuery ) ;
41
42
} ) ;
42
43
43
44
atRule . replaceWith ( matchedDeclarations ) ;
45
+ return [ ...nestedRules , ...mediaQueries ] ;
44
46
} ;
45
47
46
48
const walkAtRule = ( root , result , promises ) => ( atRule ) => {
47
49
const params = postcss . list . space ( atRule . params ) ;
48
50
const targetClass = params [ 0 ] ;
49
51
50
- const onError = ( message ) => atRule . warn ( result , message ) ;
52
+ const onError = ( message ) => {
53
+ atRule . warn ( result , message ) ;
54
+ atRule . remove ( ) ;
55
+ } ;
51
56
52
57
if ( params . length === 1 ) {
53
- processAtRule ( onError , atRule , root , targetClass ) ;
58
+ promises . push ( Promise . resolve ( processAtRule ( onError , atRule , root , targetClass ) ) ) ;
54
59
return ;
55
60
}
56
61
@@ -61,11 +66,11 @@ const walkAtRule = (root, result, promises) => (atRule) => {
61
66
readFile ( resolvedPath )
62
67
. then ( ( rawData ) => {
63
68
const importedRoot = postcss . parse ( rawData ) ;
64
- processAtRule ( onError , atRule , importedRoot , targetClass , importPath ) ;
69
+ return processAtRule ( onError , atRule , importedRoot , targetClass , importPath ) ;
65
70
} )
66
71
. catch ( ( ) => {
67
72
onError ( `Could not find file '${ importPath } '` ) ;
68
- atRule . remove ( ) ;
73
+ return [ ] ;
69
74
} ) ,
70
75
) ;
71
76
} ;
@@ -77,7 +82,12 @@ const processFile = (root, result) => (resolve) => {
77
82
78
83
root . walkRules ( ( rule ) => rule . walkAtRules ( 'inline' , atRuleWalker ) ) ;
79
84
80
- return Promise . all ( promises ) . then ( resolve ) . catch ( resolve ) ;
85
+ return Promise . all ( promises )
86
+ . then ( ( newNodes ) => {
87
+ root . append ( ...newNodes ) ;
88
+ return resolve ( ) ;
89
+ } )
90
+ . catch ( resolve ) ;
81
91
} ;
82
92
83
93
module . exports = postcss . plugin ( 'postcss-inline-class' , ( ) => ( root , result ) =>
0 commit comments