@@ -240,8 +240,6 @@ function analyzeInternal<T extends boolean>(css: string, options: Options, useLo
240240 }
241241 //#endregion
242242
243- let complexity = 1
244-
245243 if ( node . prelude === null ) {
246244 if ( str_equals ( 'layer' , node . name ) ) {
247245 // @layer without a prelude is anonymous
@@ -291,11 +289,8 @@ function analyzeInternal<T extends boolean>(css: string, options: Options, useLo
291289 registeredProperties . p ( node . prelude , wallaceLoc ( node ) )
292290 }
293291 }
294-
295- // atRuleComplexities.push(complexity)
296292 } else if ( node . type_name === 'Rule' ) {
297293 totalRules ++
298- ruleNesting . push ( depth )
299294
300295 // Check if rule is empty (no declarations in block)
301296 if ( node . block && node . block . is_empty ) {
@@ -305,13 +300,14 @@ function analyzeInternal<T extends boolean>(css: string, options: Options, useLo
305300 // Count selectors and declarations in this rule
306301 let numSelectors = 0
307302 let numDeclarations = 0
303+ let loc = wallaceLoc ( node )
308304
309305 // Find the SelectorList child and count Selector nodes inside it
310306 if ( node . children && Array . isArray ( node . children ) ) {
311307 for ( const child of node . children ) {
312308 if ( child . type_name === 'SelectorList' ) {
313309 // Count Selector nodes inside the SelectorList
314- if ( child . children && Array . isArray ( child . children ) ) {
310+ if ( Array . isArray ( child . children ) ) {
315311 for ( const selector of child . children ) {
316312 if ( selector . type_name === 'Selector' ) {
317313 numSelectors ++
@@ -323,7 +319,7 @@ function analyzeInternal<T extends boolean>(css: string, options: Options, useLo
323319 }
324320
325321 // Count declarations in the block
326- if ( node . block && node . block . children && Array . isArray ( node . block . children ) ) {
322+ if ( node . block && Array . isArray ( node . block . children ) ) {
327323 for ( const child of node . block . children ) {
328324 if ( child . type_name === 'Declaration' ) {
329325 numDeclarations ++
@@ -333,8 +329,16 @@ function analyzeInternal<T extends boolean>(css: string, options: Options, useLo
333329
334330 // Track rule metrics
335331 ruleSizes . push ( numSelectors + numDeclarations )
332+ uniqueRuleSize . p ( numSelectors + numDeclarations , loc )
333+
336334 selectorsPerRule . push ( numSelectors )
335+ uniqueSelectorsPerRule . p ( numSelectors , loc )
336+
337337 declarationsPerRule . push ( numDeclarations )
338+ uniqueDeclarationsPerRule . p ( numDeclarations , loc )
339+
340+ ruleNesting . push ( depth )
341+ uniqueRuleNesting . p ( depth , loc )
338342 } else if ( node . type_name === 'Selector' ) {
339343 selectorNesting . push ( depth > 0 ? depth - 1 : 0 )
340344 } else if ( node . type_name === 'Declaration' ) {
@@ -406,18 +410,17 @@ function analyzeInternal<T extends boolean>(css: string, options: Options, useLo
406410 if ( node . prelude !== null ) {
407411 let prelude = node . prelude
408412 let preludeStr = prelude && stringifyNode ( node . prelude )
409- let loc = prelude . loc !
410413
411414 if ( atRuleName === 'media' ) {
412415 if ( isMediaBrowserhack ( prelude ) ) {
413- mediaBrowserhacks . p ( preludeStr , loc )
416+ mediaBrowserhacks . p ( preludeStr , prelude . loc ! )
414417 complexity ++
415418 }
416419 } else if ( atRuleName === 'supports' ) {
417420 // TODO: analyze vendor prefixes in @supports
418421 // TODO: analyze complexity of @supports 'declaration'
419422 if ( isSupportsBrowserhack ( prelude ) ) {
420- supportsBrowserhacks . p ( preludeStr , loc )
423+ supportsBrowserhacks . p ( preludeStr , prelude . loc ! )
421424 complexity ++
422425 }
423426 } else if ( endsWith ( 'keyframes' , atRuleName ) ) {
@@ -439,25 +442,6 @@ function analyzeInternal<T extends boolean>(css: string, options: Options, useLo
439442 mediaFeatures . p ( node . name , node . loc )
440443 break
441444 }
442- case Rule : {
443- let prelude = node . prelude as SelectorList
444- let block = node . block
445-
446- let preludeChildren = prelude . children
447- let blockChildren = block . children
448- let numSelectors = preludeChildren ? preludeChildren . size : 0
449- let numDeclarations = blockChildren ? blockChildren . size : 0
450-
451- // ruleSizes, selectorsPerRule, declarationsPerRule now tracked by Wallace parser
452- uniqueRuleSize . p ( numSelectors + numDeclarations , node . loc ! )
453- uniqueSelectorsPerRule . p ( numSelectors , prelude . loc ! )
454- uniqueDeclarationsPerRule . p ( numDeclarations , block . loc ! )
455- // ruleNesting now tracked by Wallace parser
456- uniqueRuleNesting . p ( nestingDepth , node . loc ! )
457-
458- // emptyRules now counted by Wallace parser
459- break
460- }
461445 case Selector : {
462446 let selector = stringifyNode ( node )
463447 let loc = node . loc !
0 commit comments