1
- import browserslist from 'browserslist' ;
1
+ import browserslist from 'browserslist'
2
2
3
3
const plugin = opts => {
4
4
return {
@@ -8,83 +8,83 @@ const plugin = opts => {
8
8
const clientBrowserList = browserslist (
9
9
Object ( opts ) . browsers || null ,
10
10
{ path : root . source && root . source . input && root . source . input . file }
11
- ) ;
11
+ )
12
12
13
13
// root children references
14
- const references = root . nodes . slice ( 0 ) ;
14
+ const references = root . nodes . slice ( 0 )
15
15
16
16
// for each child node of the root children references
17
- for ( let node of references ) {
17
+ for ( const node of references ) {
18
18
// if the node is a comment browser comment node
19
19
if ( isBrowserCommentNode ( node ) ) {
20
20
// rule following the browser comment
21
- const rule = node . next ( ) ;
21
+ const rule = node . next ( )
22
22
23
23
// browser data
24
- const browserdata = getBrowserData ( node . text ) ;
24
+ const browserdata = getBrowserData ( node . text )
25
25
26
26
if ( browserdata . isNumbered ) {
27
27
rule . nodes . filter ( isBrowserReferenceCommentNode ) . map (
28
28
comment => {
29
- const browserdataIndex = parseFloat ( comment . text ) - 1 ;
30
- const browserslistPart = browserdata . browserslist [ browserdataIndex ] ;
29
+ const browserdataIndex = parseFloat ( comment . text ) - 1
30
+ const browserslistPart = browserdata . browserslist [ browserdataIndex ]
31
31
32
32
// whether to remove the rule if the comment browserslist does not match the client browserslist
33
33
const removeRule = ! clientBrowserList . some (
34
34
clientBrowser => browserslist ( browserslistPart ) . some (
35
35
commentBrowser => commentBrowser === clientBrowser
36
36
)
37
- ) ;
37
+ )
38
38
39
39
// conditionally remove the declaration and reference comment
40
40
if ( removeRule ) {
41
- comment . prev ( ) . remove ( ) ;
42
- comment . remove ( ) ;
41
+ comment . prev ( ) . remove ( )
42
+ comment . remove ( )
43
43
}
44
44
}
45
- ) ;
45
+ )
46
46
47
47
// conditionally remove the empty rule and comment
48
48
if ( ! rule . nodes . length ) {
49
- rule . remove ( ) ;
50
- node . remove ( ) ;
49
+ rule . remove ( )
50
+ node . remove ( )
51
51
}
52
52
} else {
53
53
// whether to remove the rule if the comment browserslist does not match the client browserslist
54
54
const removeRule = ! clientBrowserList . some (
55
55
clientBrowser => browserslist ( browserdata . browserslist ) . some (
56
56
commentBrowser => commentBrowser === clientBrowser
57
57
)
58
- ) ;
58
+ )
59
59
60
60
// conditionally remove the rule and comment
61
61
if ( removeRule ) {
62
- rule . remove ( ) ;
63
- node . remove ( ) ;
62
+ rule . remove ( )
63
+ node . remove ( )
64
64
}
65
65
}
66
66
}
67
67
}
68
68
}
69
69
}
70
- } ;
70
+ }
71
71
72
- plugin . postcss = true ;
72
+ plugin . postcss = true
73
73
74
- export default plugin ;
74
+ export default plugin
75
75
76
76
// returns whether a node is a browser comment
77
- const isBrowserCommentNode = node => node . type === 'comment' && isBrowserCommentNodeRegExp . test ( node . text ) && node . next ( ) . type === 'rule' ;
78
- const isBrowserCommentNodeRegExp = / ^ \* \n * / ;
77
+ const isBrowserCommentNode = node => node . type === 'comment' && isBrowserCommentNodeRegExp . test ( node . text ) && node . next ( ) . type === 'rule'
78
+ const isBrowserCommentNodeRegExp = / ^ \* \n * /
79
79
80
80
// returns whether a node is a browser reference comment
81
- const isBrowserReferenceCommentNode = node => node . type === 'comment' && isBrowserReferenceCommentNodeRegExp . test ( node . text ) ;
82
- const isBrowserReferenceCommentNodeRegExp = / ^ \d + $ / ;
81
+ const isBrowserReferenceCommentNode = node => node . type === 'comment' && isBrowserReferenceCommentNodeRegExp . test ( node . text )
82
+ const isBrowserReferenceCommentNodeRegExp = / ^ \d + $ /
83
83
84
84
// returns browser data from comment text
85
85
const getBrowserData = text => {
86
- const browserDataNumbered = text . match ( browserDataMutliRegExp ) ;
87
- const isNumbered = Boolean ( browserDataNumbered ) ;
86
+ const browserDataNumbered = text . match ( browserDataMutliRegExp )
87
+ const isNumbered = Boolean ( browserDataNumbered )
88
88
89
89
return {
90
90
browserslist : isNumbered
@@ -96,10 +96,10 @@ const getBrowserData = text => {
96
96
) ,
97
97
isNumbered
98
98
}
99
- } ;
100
- const browserDataMutliRegExp = / ( \n \* \d + \. (?: [ ^ \n ] + | \n \* { 4 , } ) + ) / g;
101
- const browserDataNewlineRegExp = / ^ \* \n \* ? | \n \* / g;
102
- const browserDataNumberedNewlineRegExp = / \n \* (?: ( ) \s * ) ? / g;
99
+ }
100
+ const browserDataMutliRegExp = / ( \n \* \d + \. (?: [ ^ \n ] + | \n \* { 4 , } ) + ) / g
101
+ const browserDataNewlineRegExp = / ^ \* \n \* ? | \n \* / g
102
+ const browserDataNumberedNewlineRegExp = / \n \* (?: ( ) \s * ) ? / g
103
103
104
104
// returns a browserlist from comment text
105
105
const getBrowsersList = text => text . split ( getBrowsersListInSplitRegExp ) . slice ( 1 ) . map (
@@ -119,7 +119,7 @@ const getBrowsersList = text => text.split(getBrowsersListInSplitRegExp).slice(1
119
119
: ' > 0'
120
120
} `
121
121
) . toLowerCase ( )
122
- ) ;
123
- const getBrowsersListInSplitRegExp = / \s + i n \s + / ;
124
- const getBrowsersListAndSplitRegExp = / (?: a n d | , a n d | , ) / ;
125
- const getBrowsersListQueryRegExp = / ^ \s * ( \w + ) (?: ( (?: (?: \d * \. ) ? \d + - ) ? (?: \d * \. ) ? \d + [ + - ] ? ) ) ? .* $ / ;
122
+ )
123
+ const getBrowsersListInSplitRegExp = / \s + i n \s + /
124
+ const getBrowsersListAndSplitRegExp = / (?: a n d | , a n d | , ) /
125
+ const getBrowsersListQueryRegExp = / ^ \s * ( \w + ) (?: ( (?: (?: \d * \. ) ? \d + - ) ? (?: \d * \. ) ? \d + [ + - ] ? ) ) ? .* $ /
0 commit comments