1616 include: <condition>, -> resource.include
1717 exclude: <condition>, -> resource.exclude
1818 resourceQuery: <condition>,
19+ compiler: <condition>,
1920 issuer: <condition>,
2021 use: "loader", -> use[0].loader
2122 loader: <>, -> use[0].loader
@@ -55,6 +56,7 @@ normalized:
5556{
5657 resource: function(),
5758 resourceQuery: function(),
59+ compiler: function(),
5860 issuer: function(),
5961 use: [
6062 {
@@ -138,6 +140,14 @@ module.exports = class RuleSet {
138140 }
139141 }
140142
143+ if ( rule . compiler ) {
144+ try {
145+ newRule . compiler = RuleSet . normalizeCondition ( rule . compiler ) ;
146+ } catch ( error ) {
147+ throw new Error ( RuleSet . buildErrorMessage ( rule . compiler , error ) ) ;
148+ }
149+ }
150+
141151 if ( rule . issuer ) {
142152 try {
143153 newRule . issuer = RuleSet . normalizeCondition ( rule . issuer ) ;
@@ -181,7 +191,7 @@ module.exports = class RuleSet {
181191 newRule . oneOf = RuleSet . normalizeRules ( rule . oneOf , refs , `${ ident } -oneOf` ) ;
182192
183193 const keys = Object . keys ( rule ) . filter ( ( key ) => {
184- return [ "resource" , "resourceQuery" , "test" , "include" , "exclude" , "issuer" , "loader" , "options" , "query" , "loaders" , "use" , "rules" , "oneOf" ] . indexOf ( key ) < 0 ;
194+ return [ "resource" , "resourceQuery" , "compiler" , " test", "include" , "exclude" , "issuer" , "loader" , "options" , "query" , "loaders" , "use" , "rules" , "oneOf" ] . indexOf ( key ) < 0 ;
185195 } ) ;
186196 keys . forEach ( ( key ) => {
187197 newRule [ key ] = rule [ key ] ;
@@ -350,6 +360,8 @@ module.exports = class RuleSet {
350360 return false ;
351361 if ( rule . resourceQuery && ! data . resourceQuery )
352362 return false ;
363+ if ( rule . compiler && ! data . compiler )
364+ return false ;
353365 if ( rule . issuer && ! data . issuer )
354366 return false ;
355367 if ( rule . resource && ! rule . resource ( data . resource ) )
@@ -358,10 +370,12 @@ module.exports = class RuleSet {
358370 return false ;
359371 if ( data . resourceQuery && rule . resourceQuery && ! rule . resourceQuery ( data . resourceQuery ) )
360372 return false ;
373+ if ( data . compiler && rule . compiler && ! rule . compiler ( data . compiler ) )
374+ return false ;
361375
362376 // apply
363377 const keys = Object . keys ( rule ) . filter ( ( key ) => {
364- return [ "resource" , "resourceQuery" , "issuer" , "rules" , "oneOf" , "use" , "enforce" ] . indexOf ( key ) < 0 ;
378+ return [ "resource" , "resourceQuery" , "compiler" , " issuer", "rules" , "oneOf" , "use" , "enforce" ] . indexOf ( key ) < 0 ;
365379 } ) ;
366380 keys . forEach ( ( key ) => {
367381 result . push ( {
0 commit comments