11
11
* limitations under the License.
12
12
*/
13
13
14
- const postcss = require ( 'postcss' )
15
- const fs = require ( 'fs' ) ;
16
- const glob = require ( 'tiny-glob/sync' ) ;
14
+ const fs = require ( 'fs' ) ;
17
15
const crypto = require ( 'crypto' ) ;
18
16
17
+ const glob = require ( 'tiny-glob/sync' ) ;
18
+
19
19
const processed = Symbol ( 'processed' )
20
20
21
21
const getAdaptivePropSelector = ( userProps ) => {
@@ -28,6 +28,7 @@ const getAdaptivePropSelector = (userProps) => {
28
28
}
29
29
}
30
30
31
+ /** @type { import('postcss').PluginCreator<any> }*/
31
32
module . exports = ( UserProps ) => {
32
33
const FilePropsCache = new Map ( ) ;
33
34
@@ -40,7 +41,7 @@ module.exports = (UserProps) => {
40
41
mapped : null , // track prepended props
41
42
mapped_dark : null , // track dark mode prepended props
42
43
43
- target_layer : null , // layer for props
44
+ target_layer : null , // layer for props
44
45
target_rule : null , // :root for props
45
46
target_rule_dark : null , // :root for dark props
46
47
target_ss : null , // stylesheet for keyframes/MQs
@@ -50,7 +51,7 @@ module.exports = (UserProps) => {
50
51
const adaptivePropSelector = getAdaptivePropSelector ( UserProps )
51
52
52
53
return {
53
- async Once ( node , { result, Rule, AtRule } ) {
54
+ Once ( node , { parse , result, Rule, AtRule } ) {
54
55
let target_selector = ':root'
55
56
56
57
if ( ! Object . keys ( UserPropsCopy ) . length ) {
@@ -63,7 +64,7 @@ module.exports = (UserProps) => {
63
64
. map ( ( file ) => glob ( file ) )
64
65
. reduce ( ( flattenedFileList , files ) => flattenedFileList . concat ( files ) , [ ] )
65
66
66
- await Promise . all ( files . map ( async file => {
67
+ files . map ( file => {
67
68
result . messages . push ( {
68
69
type : 'dependency' ,
69
70
plugin : 'postcss-jit-props' ,
@@ -86,11 +87,11 @@ module.exports = (UserProps) => {
86
87
87
88
return
88
89
}
89
-
90
+
90
91
const fileProps = new Map ( )
91
92
FilePropsCache . set ( fileCacheKey , fileProps )
92
-
93
- let dependencyResult = postcss . parse ( data , { from : file } )
93
+
94
+ let dependencyResult = parse ( data , { from : file } )
94
95
95
96
dependencyResult . walkDecls ( decl => {
96
97
if ( ! decl . variable ) return
@@ -111,7 +112,7 @@ module.exports = (UserProps) => {
111
112
fileProps . set ( keyframeName , keyframes )
112
113
}
113
114
} )
114
- } ) )
115
+ } )
115
116
}
116
117
117
118
if ( UserPropsCopy ?. custom_selector ) {
@@ -134,34 +135,36 @@ module.exports = (UserProps) => {
134
135
STATE . target_ss = node . root ( )
135
136
} ,
136
137
137
- AtRule ( atrule ) {
138
- // bail early if possible
139
- if ( atrule . name !== 'media' || atrule [ processed ] ) return
138
+ AtRule : {
139
+ media : atrule => {
140
+ // bail early if possible
141
+ if ( atrule [ processed ] ) return
140
142
141
- // extract prop from atrule params
142
- let prop = atrule . params . replace ( / [ ( ) ] + / g, '' ) ;
143
+ // extract prop from atrule params
144
+ let prop = atrule . params . replace ( / [ ( ) ] + / g, '' ) ;
143
145
144
- // bail if media prop already prepended
145
- if ( STATE . mapped . has ( prop ) ) return
146
+ // bail if media prop already prepended
147
+ if ( STATE . mapped . has ( prop ) ) return
146
148
147
- // create :root {} context just in time
148
- if ( STATE . mapped . size === 0 )
149
- STATE . target_ss . prepend ( STATE . target_rule )
149
+ // create :root {} context just in time
150
+ if ( STATE . mapped . size === 0 )
151
+ STATE . target_ss . prepend ( STATE . target_rule )
150
152
151
- // lookup prop value from pool
152
- let value = UserPropsCopy [ prop ] || null
153
+ // lookup prop value from pool
154
+ let value = UserPropsCopy [ prop ] || null
153
155
154
- // warn if media prop not resolved
155
- if ( ! value ) {
156
- return
157
- }
156
+ // warn if media prop not resolved
157
+ if ( ! value ) {
158
+ return
159
+ }
158
160
159
- // prepend the custom media
160
- STATE . target_ss . prepend ( value )
161
+ // prepend the custom media
162
+ STATE . target_ss . prepend ( value )
161
163
162
- // track work to prevent duplication
163
- atrule [ processed ] = true
164
- STATE . mapped . add ( prop )
164
+ // track work to prevent duplication
165
+ atrule [ processed ] = true
166
+ STATE . mapped . add ( prop )
167
+ }
165
168
} ,
166
169
167
170
Declaration ( node , { Declaration } ) {
0 commit comments