@kernlang/review 3.1.9 → 3.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/dist/cache.js +143 -2
  2. package/dist/cache.js.map +1 -1
  3. package/dist/call-graph.d.ts +4 -1
  4. package/dist/call-graph.js +290 -25
  5. package/dist/call-graph.js.map +1 -1
  6. package/dist/external-tools.d.ts +23 -4
  7. package/dist/external-tools.js +68 -12
  8. package/dist/external-tools.js.map +1 -1
  9. package/dist/file-context.d.ts +6 -0
  10. package/dist/file-context.js +6 -1
  11. package/dist/file-context.js.map +1 -1
  12. package/dist/graph.js +149 -39
  13. package/dist/graph.js.map +1 -1
  14. package/dist/index.d.ts +27 -3
  15. package/dist/index.js +254 -41
  16. package/dist/index.js.map +1 -1
  17. package/dist/inferrer.d.ts +5 -0
  18. package/dist/inferrer.js +1 -1
  19. package/dist/inferrer.js.map +1 -1
  20. package/dist/mappers/ts-concepts.js +31 -6
  21. package/dist/mappers/ts-concepts.js.map +1 -1
  22. package/dist/public-api.d.ts +73 -0
  23. package/dist/public-api.js +351 -0
  24. package/dist/public-api.js.map +1 -0
  25. package/dist/reporter.d.ts +5 -0
  26. package/dist/reporter.js +119 -84
  27. package/dist/reporter.js.map +1 -1
  28. package/dist/review-health.d.ts +38 -0
  29. package/dist/review-health.js +60 -0
  30. package/dist/review-health.js.map +1 -0
  31. package/dist/rules/a11y.d.ts +10 -0
  32. package/dist/rules/a11y.js +294 -0
  33. package/dist/rules/a11y.js.map +1 -0
  34. package/dist/rules/async.d.ts +8 -0
  35. package/dist/rules/async.js +142 -0
  36. package/dist/rules/async.js.map +1 -0
  37. package/dist/rules/base.js +112 -87
  38. package/dist/rules/base.js.map +1 -1
  39. package/dist/rules/confidence.d.ts +2 -2
  40. package/dist/rules/confidence.js +32 -15
  41. package/dist/rules/confidence.js.map +1 -1
  42. package/dist/rules/dead-code.d.ts +2 -1
  43. package/dist/rules/dead-code.js +49 -3
  44. package/dist/rules/dead-code.js.map +1 -1
  45. package/dist/rules/index.d.ts +12 -0
  46. package/dist/rules/index.js +414 -4
  47. package/dist/rules/index.js.map +1 -1
  48. package/dist/rules/ink.js +41 -0
  49. package/dist/rules/ink.js.map +1 -1
  50. package/dist/rules/kern-source-cross-file.d.ts +2 -0
  51. package/dist/rules/kern-source-cross-file.js +102 -0
  52. package/dist/rules/kern-source-cross-file.js.map +1 -0
  53. package/dist/rules/kern-source.js +145 -18
  54. package/dist/rules/kern-source.js.map +1 -1
  55. package/dist/rules/nextjs-app-router.d.ts +11 -0
  56. package/dist/rules/nextjs-app-router.js +1182 -0
  57. package/dist/rules/nextjs-app-router.js.map +1 -0
  58. package/dist/rules/nextjs.js +266 -7
  59. package/dist/rules/nextjs.js.map +1 -1
  60. package/dist/rules/perf.d.ts +11 -0
  61. package/dist/rules/perf.js +131 -0
  62. package/dist/rules/perf.js.map +1 -0
  63. package/dist/rules/react-composition.d.ts +12 -0
  64. package/dist/rules/react-composition.js +741 -0
  65. package/dist/rules/react-composition.js.map +1 -0
  66. package/dist/rules/react-hooks.d.ts +11 -0
  67. package/dist/rules/react-hooks.js +429 -0
  68. package/dist/rules/react-hooks.js.map +1 -0
  69. package/dist/rules/react.js +265 -49
  70. package/dist/rules/react.js.map +1 -1
  71. package/dist/rules/security-v5.d.ts +11 -0
  72. package/dist/rules/security-v5.js +200 -0
  73. package/dist/rules/security-v5.js.map +1 -0
  74. package/dist/rules/utils.d.ts +52 -1
  75. package/dist/rules/utils.js +159 -0
  76. package/dist/rules/utils.js.map +1 -1
  77. package/dist/semantic-diff.js +1 -1
  78. package/dist/semantic-diff.js.map +1 -1
  79. package/dist/taint-ast.js +260 -10
  80. package/dist/taint-ast.js.map +1 -1
  81. package/dist/taint-crossfile.d.ts +30 -2
  82. package/dist/taint-crossfile.js +280 -59
  83. package/dist/taint-crossfile.js.map +1 -1
  84. package/dist/taint-findings.js +3 -0
  85. package/dist/taint-findings.js.map +1 -1
  86. package/dist/taint-types.d.ts +4 -3
  87. package/dist/taint-types.js +70 -6
  88. package/dist/taint-types.js.map +1 -1
  89. package/dist/taint.d.ts +1 -1
  90. package/dist/taint.js +1 -1
  91. package/dist/taint.js.map +1 -1
  92. package/dist/types.d.ts +98 -0
  93. package/dist/types.js.map +1 -1
  94. package/package.json +3 -3
@@ -13,6 +13,8 @@
13
13
  * [nextjs] Active when target = nextjs (on top of react)
14
14
  * [nuxt] Active when target = nuxt (on top of vue)
15
15
  */
16
+ import { a11yRules } from './a11y.js';
17
+ import { asyncRules } from './async.js';
16
18
  import { baseRules } from './base.js';
17
19
  import { cliRules } from './cli.js';
18
20
  import { deadLogicRules } from './dead-logic.js';
@@ -20,13 +22,18 @@ import { expressRules } from './express.js';
20
22
  import { fastapiRules } from './fastapi.js';
21
23
  import { inkRules } from './ink.js';
22
24
  import { nextjsRules } from './nextjs.js';
25
+ import { nextjsAppRouterRules } from './nextjs-app-router.js';
23
26
  import { nullSafetyRules } from './null-safety.js';
24
27
  import { nuxtRules } from './nuxt.js';
28
+ import { perfRules } from './perf.js';
25
29
  import { reactRules } from './react.js';
30
+ import { reactCompositionRules } from './react-composition.js';
31
+ import { reactHooksRules } from './react-hooks.js';
26
32
  import { securityRules } from './security.js';
27
33
  import { securityV2Rules } from './security-v2.js';
28
34
  import { securityV3Rules } from './security-v3.js';
29
35
  import { securityV4Rules } from './security-v4.js';
36
+ import { securityV5Rules } from './security-v5.js';
30
37
  import { terminalRules } from './terminal.js';
31
38
  import { vueRules } from './vue.js';
32
39
  const REACT_TARGETS = new Set(['nextjs', 'tailwind', 'web', 'native', 'ink']);
@@ -44,19 +51,26 @@ export function getActiveRules(target) {
44
51
  ...securityV2Rules,
45
52
  ...securityV3Rules,
46
53
  ...securityV4Rules,
54
+ ...securityV5Rules,
47
55
  ...deadLogicRules,
48
56
  ...nullSafetyRules,
57
+ ...asyncRules,
49
58
  ];
50
59
  // Backend targets never load frontend-specific rules
51
60
  const isBackend = target ? BACKEND_TARGETS.has(target) : false;
52
61
  if (!isBackend && target && REACT_TARGETS.has(target)) {
53
62
  rules.push(...reactRules);
63
+ rules.push(...reactHooksRules);
64
+ rules.push(...reactCompositionRules);
65
+ rules.push(...a11yRules);
66
+ rules.push(...perfRules);
54
67
  }
55
68
  if (!isBackend && target && VUE_TARGETS.has(target)) {
56
69
  rules.push(...vueRules);
57
70
  }
58
71
  if (!isBackend && target === 'nextjs') {
59
72
  rules.push(...nextjsRules);
73
+ rules.push(...nextjsAppRouterRules);
60
74
  }
61
75
  if (!isBackend && target === 'nuxt') {
62
76
  rules.push(...nuxtRules);
@@ -386,32 +400,262 @@ const REGISTRY = [
386
400
  description: 'Unsafe type assertion without runtime guard',
387
401
  },
388
402
  // React (target: nextjs, tailwind, web, native, ink)
389
- { id: 'async-effect', layer: 'react', severity: 'error', description: 'Async function passed directly to useEffect' },
403
+ {
404
+ id: 'async-effect',
405
+ layer: 'react',
406
+ severity: 'error',
407
+ description: 'Async function passed directly to useEffect',
408
+ precision: 'high',
409
+ },
390
410
  {
391
411
  id: 'render-side-effect',
392
412
  layer: 'react',
393
413
  severity: 'error',
394
414
  description: 'Side effect (fetch, mutation) during render',
415
+ precision: 'high',
395
416
  },
396
417
  {
397
418
  id: 'unstable-key',
398
419
  layer: 'react',
399
420
  severity: 'warning',
400
421
  description: 'Non-stable key prop (index, random, Date.now)',
422
+ precision: 'high',
423
+ },
424
+ {
425
+ id: 'mapped-fragment-key',
426
+ layer: 'react',
427
+ severity: 'warning',
428
+ description: 'Fragment returned from .map() cannot carry a key in shorthand form',
429
+ precision: 'high',
430
+ },
431
+ {
432
+ id: 'stale-closure',
433
+ layer: 'react',
434
+ severity: 'warning',
435
+ description: 'Stale variable captured in hook closure',
436
+ precision: 'medium',
401
437
  },
402
- { id: 'stale-closure', layer: 'react', severity: 'warning', description: 'Stale variable captured in hook closure' },
403
438
  {
404
439
  id: 'state-explosion',
405
440
  layer: 'react',
406
441
  severity: 'warning',
407
442
  description: 'Excessive useState calls — consider useReducer',
443
+ precision: 'medium',
444
+ },
445
+ {
446
+ id: 'hook-order',
447
+ layer: 'react',
448
+ severity: 'error',
449
+ description: 'React hook called inside condition or loop',
450
+ precision: 'high',
408
451
  },
409
- { id: 'hook-order', layer: 'react', severity: 'error', description: 'React hook called inside condition or loop' },
410
452
  {
411
453
  id: 'effect-self-update-loop',
412
454
  layer: 'react',
413
455
  severity: 'error',
414
456
  description: 'useEffect updates its own dependency — infinite loop',
457
+ precision: 'high',
458
+ },
459
+ // React — backfilled from reactRules export (were exported but missing from registry)
460
+ {
461
+ id: 'missing-effect-cleanup',
462
+ layer: 'react',
463
+ severity: 'warning',
464
+ description: 'useEffect uses setInterval/setTimeout/addEventListener without a cleanup return',
465
+ precision: 'high',
466
+ },
467
+ {
468
+ id: 'inline-context-value',
469
+ layer: 'react',
470
+ severity: 'warning',
471
+ description: 'Inline object/array passed to Context.Provider value — forces consumer re-renders',
472
+ precision: 'high',
473
+ },
474
+ {
475
+ id: 'ref-in-render',
476
+ layer: 'react',
477
+ severity: 'error',
478
+ description: 'Reading or writing ref.current during render — breaks React purity',
479
+ precision: 'high',
480
+ },
481
+ {
482
+ id: 'missing-memo-deps',
483
+ layer: 'react',
484
+ severity: 'warning',
485
+ description: 'useMemo/useCallback called without any dependency array',
486
+ precision: 'high',
487
+ },
488
+ {
489
+ id: 'reducer-mutation',
490
+ layer: 'react',
491
+ severity: 'error',
492
+ description: 'Reducer mutates state instead of returning a new object',
493
+ precision: 'high',
494
+ },
495
+ // React Hooks — Wave 2 net-new rules
496
+ {
497
+ id: 'exhaustive-deps',
498
+ layer: 'react-hooks',
499
+ severity: 'warning',
500
+ description: 'useEffect/useMemo/useCallback body references identifiers missing from the dependency array',
501
+ precision: 'medium',
502
+ rolloutPhase: 2,
503
+ },
504
+ {
505
+ id: 'ref-in-deps',
506
+ layer: 'react-hooks',
507
+ severity: 'warning',
508
+ description: 'useRef result included in a dependency array — refs are stable, so this has no effect',
509
+ precision: 'high',
510
+ rolloutPhase: 2,
511
+ },
512
+ {
513
+ id: 'state-derived-from-props',
514
+ layer: 'react-hooks',
515
+ severity: 'warning',
516
+ description: 'useState initialized from props — state will not update when the prop changes (stale UI)',
517
+ precision: 'high',
518
+ rolloutPhase: 2,
519
+ },
520
+ {
521
+ id: 'usecallback-no-benefit',
522
+ layer: 'react-hooks',
523
+ severity: 'info',
524
+ description: 'useCallback value is only used as a host-element event handler and has no memoized consumer in the current file',
525
+ precision: 'high',
526
+ rolloutPhase: 2,
527
+ },
528
+ // Async — Wave 2 net-new rules
529
+ {
530
+ id: 'promise-all-error-swallow',
531
+ layer: 'async',
532
+ severity: 'warning',
533
+ description: 'Promise.all without .catch, try/catch, or await — single rejection is silently unhandled',
534
+ precision: 'high',
535
+ rolloutPhase: 2,
536
+ },
537
+ {
538
+ id: 'abortcontroller-leak',
539
+ layer: 'async',
540
+ severity: 'warning',
541
+ description: 'AbortController created in useEffect without .abort() in cleanup — in-flight requests survive unmount',
542
+ precision: 'high',
543
+ rolloutPhase: 2,
544
+ },
545
+ // React composition — Wave 4 (children-as-perf, prop drilling)
546
+ {
547
+ id: 'children-not-used',
548
+ layer: 'react-composition',
549
+ severity: 'warning',
550
+ description: "Component destructures 'children' from props but never renders it — dead API or forgotten {children}",
551
+ precision: 'high',
552
+ rolloutPhase: 4,
553
+ },
554
+ {
555
+ id: 'prop-drill-passthrough',
556
+ layer: 'react-composition',
557
+ severity: 'warning',
558
+ description: 'Component passes >= 2 props through to a single child without reading them — use children prop or context',
559
+ precision: 'medium',
560
+ rolloutPhase: 4,
561
+ },
562
+ {
563
+ id: 'prop-drill-chain',
564
+ layer: 'react-composition',
565
+ severity: 'warning',
566
+ description: 'Component passes props into an imported wrapper that also passes them through — multi-hop prop drilling across files',
567
+ precision: 'high',
568
+ rolloutPhase: 4,
569
+ },
570
+ {
571
+ id: 'memoized-child-inline-prop',
572
+ layer: 'react-composition',
573
+ severity: 'warning',
574
+ description: 'React.memo child receives inline object/array/function props that change identity every render and defeat memoization',
575
+ precision: 'high',
576
+ rolloutPhase: 4,
577
+ },
578
+ {
579
+ id: 'memoized-child-inline-children',
580
+ layer: 'react-composition',
581
+ severity: 'warning',
582
+ description: 'React.memo child receives inline JSX children that create new element identities every render and defeat memoization',
583
+ precision: 'high',
584
+ rolloutPhase: 4,
585
+ },
586
+ {
587
+ id: 'parent-rerender-via-state',
588
+ layer: 'react-composition',
589
+ severity: 'info',
590
+ description: 'Parent with useState renders a child that does not receive that state — lift child to children prop to avoid re-render',
591
+ precision: 'medium',
592
+ rolloutPhase: 4,
593
+ },
594
+ // a11y — Wave 3
595
+ {
596
+ id: 'img-missing-alt',
597
+ layer: 'a11y',
598
+ severity: 'error',
599
+ description: '<img> missing alt attribute — use alt="" for decorative images',
600
+ precision: 'high',
601
+ rolloutPhase: 3,
602
+ },
603
+ {
604
+ id: 'button-missing-name',
605
+ layer: 'a11y',
606
+ severity: 'error',
607
+ description: '<button> has no accessible name (text, aria-label, or aria-labelledby)',
608
+ precision: 'high',
609
+ rolloutPhase: 3,
610
+ },
611
+ {
612
+ id: 'label-missing-for',
613
+ layer: 'a11y',
614
+ severity: 'warning',
615
+ description: '<label> not associated with a form control via htmlFor or nesting',
616
+ precision: 'high',
617
+ rolloutPhase: 3,
618
+ },
619
+ {
620
+ id: 'aria-invalid-role',
621
+ layer: 'a11y',
622
+ severity: 'error',
623
+ description: 'role attribute value is not a valid WAI-ARIA 1.2 role',
624
+ precision: 'high',
625
+ rolloutPhase: 3,
626
+ },
627
+ {
628
+ id: 'interactive-noninteractive',
629
+ layer: 'a11y',
630
+ severity: 'warning',
631
+ description: 'onClick/onKeyDown on div/span without role+tabIndex — keyboard inaccessible',
632
+ precision: 'high',
633
+ rolloutPhase: 3,
634
+ },
635
+ // perf — Wave 3
636
+ {
637
+ id: 'image-no-lazy',
638
+ layer: 'perf',
639
+ severity: 'info',
640
+ description: '<img> without loading="lazy" — below-the-fold images should lazy-load',
641
+ precision: 'medium',
642
+ rolloutPhase: 3,
643
+ },
644
+ {
645
+ id: 'heavy-computation-in-render',
646
+ layer: 'perf',
647
+ severity: 'info',
648
+ description: 'Chained expensive array operations (sort/filter/reduce) inline in JSX — consider useMemo',
649
+ precision: 'medium',
650
+ rolloutPhase: 3,
651
+ },
652
+ {
653
+ id: 'large-list-no-virtualization',
654
+ layer: 'perf',
655
+ severity: 'info',
656
+ description: 'Large list rendered with .map() without a virtualization library',
657
+ precision: 'experimental',
658
+ rolloutPhase: 3,
415
659
  },
416
660
  // CLI (target: cli)
417
661
  {
@@ -544,18 +788,176 @@ const REGISTRY = [
544
788
  description: 'Ink render() without error handling',
545
789
  },
546
790
  // Next.js (target: nextjs)
547
- { id: 'server-hook', layer: 'nextjs', severity: 'error', description: 'React hook used in Server Component' },
791
+ {
792
+ id: 'server-hook',
793
+ layer: 'nextjs',
794
+ severity: 'error',
795
+ description: 'React hook used in Server Component',
796
+ precision: 'high',
797
+ },
548
798
  {
549
799
  id: 'hydration-mismatch',
550
800
  layer: 'nextjs',
551
801
  severity: 'warning',
552
802
  description: 'Nondeterministic expression causes SSR/client mismatch',
803
+ precision: 'high',
804
+ },
805
+ {
806
+ id: 'next-client-api-in-server',
807
+ layer: 'nextjs',
808
+ severity: 'error',
809
+ description: 'Client-only next/navigation hook used in a Server Component',
810
+ precision: 'high',
553
811
  },
554
812
  {
555
813
  id: 'missing-use-client',
556
814
  layer: 'nextjs',
557
815
  severity: 'warning',
558
816
  description: 'Event handler in Server Component — needs use client',
817
+ precision: 'high',
818
+ },
819
+ {
820
+ id: 'undefined-reference',
821
+ layer: 'kern-source',
822
+ severity: 'error',
823
+ description: 'Handler references names not declared in visible KERN scope',
824
+ },
825
+ {
826
+ id: 'type-model-mismatch',
827
+ layer: 'kern-source',
828
+ severity: 'warning',
829
+ description: 'Literal-union type used like an object in handler code',
830
+ },
831
+ {
832
+ id: 'unused-state',
833
+ layer: 'kern-source',
834
+ severity: 'warning',
835
+ description: 'State declared but never referenced within its KERN scope',
836
+ },
837
+ {
838
+ id: 'handler-heavy',
839
+ layer: 'kern-source',
840
+ severity: 'warning',
841
+ description: 'Inline handler JS dominates the .kern file',
842
+ },
843
+ {
844
+ id: 'missing-confidence',
845
+ layer: 'kern-source',
846
+ severity: 'info',
847
+ description: 'No confidence annotations found on external or uncertain logic',
848
+ },
849
+ {
850
+ id: 'kern-duplicate-symbol',
851
+ layer: 'kern-source',
852
+ severity: 'error',
853
+ description: 'Top-level named KERN declaration defined in multiple files',
854
+ },
855
+ // Next.js App Router (Wave 1)
856
+ {
857
+ id: 'use-client-drilled-too-high',
858
+ layer: 'nextjs-app-router',
859
+ severity: 'warning',
860
+ description: "'use client' directive placed on a file that uses no client APIs itself — move it to the leaf component",
861
+ precision: 'medium',
862
+ rolloutPhase: 1,
863
+ },
864
+ {
865
+ id: 'server-api-in-client',
866
+ layer: 'nextjs-app-router',
867
+ severity: 'error',
868
+ description: 'next/headers (cookies/headers/draftMode) or server-only imported in a Client Component',
869
+ precision: 'high',
870
+ rolloutPhase: 1,
871
+ },
872
+ {
873
+ id: 'browser-api-in-server',
874
+ layer: 'nextjs-app-router',
875
+ severity: 'error',
876
+ description: 'Browser globals like window/document/localStorage used in a Server Component or server boundary',
877
+ precision: 'high',
878
+ rolloutPhase: 1,
879
+ },
880
+ {
881
+ id: 'use-action-state-missing-pending',
882
+ layer: 'nextjs-app-router',
883
+ severity: 'warning',
884
+ description: 'useActionState is wired to a form action but the pending tuple value is not captured',
885
+ precision: 'medium',
886
+ rolloutPhase: 1,
887
+ },
888
+ {
889
+ id: 'use-action-state-missing-feedback',
890
+ layer: 'nextjs-app-router',
891
+ severity: 'warning',
892
+ description: 'useActionState is wired to a form action but its returned state is never read for success/error feedback',
893
+ precision: 'medium',
894
+ rolloutPhase: 1,
895
+ },
896
+ {
897
+ id: 'server-action-form-missing-pending',
898
+ layer: 'nextjs-app-router',
899
+ severity: 'warning',
900
+ description: 'Native submit control posts directly to a same-file Server Action but no pending-state UX substrate was detected',
901
+ precision: 'medium',
902
+ rolloutPhase: 1,
903
+ },
904
+ {
905
+ id: 'server-action-form-return-value-ignored',
906
+ layer: 'nextjs-app-router',
907
+ severity: 'warning',
908
+ description: 'Direct form action points at a same-file Server Action that returns data no plain form can observe',
909
+ precision: 'high',
910
+ rolloutPhase: 1,
911
+ },
912
+ {
913
+ id: 'server-action-form-mutation-missing-invalidation',
914
+ layer: 'nextjs-app-router',
915
+ severity: 'warning',
916
+ description: 'Direct form action points at a mutating Server Action that neither revalidates cache nor redirects after submit',
917
+ precision: 'medium',
918
+ rolloutPhase: 1,
919
+ },
920
+ {
921
+ id: 'server-action-unvalidated-input',
922
+ layer: 'nextjs-app-router',
923
+ severity: 'warning',
924
+ description: "Exported 'use server' async function uses parameters without validator (.parse/.safeParse/zod)",
925
+ precision: 'high',
926
+ rolloutPhase: 1,
927
+ },
928
+ // Security v5 (Wave 1)
929
+ {
930
+ id: 'xss-href-javascript',
931
+ layer: 'security-v5',
932
+ severity: 'error',
933
+ description: 'JSX href/src/action set to a javascript: URL — executes script on click',
934
+ precision: 'high',
935
+ rolloutPhase: 1,
936
+ },
937
+ {
938
+ id: 'crypto-iv-reuse',
939
+ layer: 'security-v5',
940
+ severity: 'error',
941
+ description: 'createCipheriv called with a literal or constant IV — reused IV breaks AES-GCM and CBC',
942
+ precision: 'high',
943
+ rolloutPhase: 1,
944
+ },
945
+ {
946
+ id: 'crypto-weak-kdf',
947
+ layer: 'security-v5',
948
+ severity: 'error',
949
+ description: 'pbkdf2 iterations below 100k — key derivation can be brute-forced',
950
+ precision: 'high',
951
+ rolloutPhase: 1,
952
+ },
953
+ // Taint-engine auto-emitted rules (Wave 0 added the sinks)
954
+ {
955
+ id: 'taint-ssrf',
956
+ layer: 'security-v5',
957
+ severity: 'warning',
958
+ description: 'User input flows into fetch/axios/http.request URL — server-side request forgery',
959
+ precision: 'high',
960
+ rolloutPhase: 1,
559
961
  },
560
962
  // Nuxt (target: nuxt)
561
963
  {
@@ -661,15 +1063,23 @@ const LAYER_TARGET_MAP = {
661
1063
  'security-v2': null,
662
1064
  'security-v3': null,
663
1065
  'security-v4': null,
1066
+ 'security-v5': null,
664
1067
  'dead-logic': null,
665
1068
  'null-safety': null,
1069
+ async: null,
666
1070
  concept: null,
667
1071
  react: ['nextjs', 'tailwind', 'web', 'native', 'ink'],
1072
+ 'react-hooks': ['nextjs', 'tailwind', 'web', 'native', 'ink'],
1073
+ 'react-composition': ['nextjs', 'tailwind', 'web', 'native', 'ink'],
1074
+ a11y: ['nextjs', 'tailwind', 'web', 'native', 'ink'],
1075
+ perf: ['nextjs', 'tailwind', 'web', 'native', 'ink'],
668
1076
  cli: ['cli'],
669
1077
  vue: ['vue', 'nuxt'],
670
1078
  ink: ['ink'],
1079
+ 'kern-source': null,
671
1080
  terminal: ['terminal'],
672
1081
  nextjs: ['nextjs'],
1082
+ 'nextjs-app-router': ['nextjs'],
673
1083
  nuxt: ['nuxt'],
674
1084
  express: ['express'],
675
1085
  fastapi: ['fastapi'],
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AAC9E,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAC7C,2DAA2D;AAC3D,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;AAElF;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAe;IAC5C,MAAM,KAAK,GAAiB;QAC1B,GAAG,SAAS;QACZ,GAAG,aAAa;QAChB,GAAG,eAAe;QAClB,GAAG,eAAe;QAClB,GAAG,eAAe;QAClB,GAAG,eAAe;QAClB,GAAG,cAAc;QACjB,GAAG,eAAe;QAClB,GAAG,UAAU;KACd,CAAC;IAEF,qDAAqD;IACrD,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAE/D,IAAI,CAAC,SAAS,IAAI,MAAM,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,CAAC,SAAS,IAAI,MAAM,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC,SAAS,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,CAAC,SAAS,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAuBD,MAAM,QAAQ,GAAe;IAC3B,uBAAuB;IACvB;QACE,EAAE,EAAE,kBAAkB;QACtB,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,wDAAwD;KACtE;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,kDAAkD;KAChE;IACD,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,yCAAyC,EAAE;IACjH;QACE,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,0DAA0D;KACxE;IACD;QACE,EAAE,EAAE,yBAAyB;QAC7B,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,2CAA2C;KACzD;IACD;QACE,EAAE,EAAE,oBAAoB;QACxB,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,4CAA4C;KAC1D;IACD;QACE,EAAE,EAAE,uBAAuB;QAC3B,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,6CAA6C;KAC3D;IACD;QACE,EAAE,EAAE,sBAAsB;QAC1B,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,iDAAiD;KAC/D;IACD;QACE,EAAE,EAAE,oBAAoB;QACxB,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE,4CAA4C;KAC1D;IACD;QACE,EAAE,EAAE,oBAAoB;QACxB,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE,iDAAiD;KAC/D;IACD,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,sCAAsC,EAAE;IAC5G,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,uCAAuC,EAAE;IACnH;QACE,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,iDAAiD;KAC/D;IACD;QACE,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,6CAA6C;KAC3D;IAED,WAAW;IACX;QACE,EAAE,EAAE,iBAAiB;QACrB,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,uDAAuD;KACrE;IACD;QACE,EAAE,EAAE,kBAAkB;QACtB,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,6CAA6C;KAC3D;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,uCAAuC;KACrD;IACD,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,wCAAwC,EAAE;IAC9G;QACE,EAAE,EAAE,iBAAiB;QACrB,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,sDAAsD;KACpE;IACD,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,kCAAkC,EAAE;IAChH;QACE,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,6CAA6C;KAC3D;IACD;QACE,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,6CAA6C;KAC3D;IAED,cAAc;IACd;QACE,EAAE,EAAE,uBAAuB;QAC3B,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,4CAA4C;KAC1D;IACD;QACE,EAAE,EAAE,kBAAkB;QACtB,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,+CAA+C;KAC7D;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,iDAAiD;KAC/D;IACD;QACE,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,sCAAsC;KACpD;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,gDAAgD;KAC9D;IACD;QACE,EAAE,EAAE,uBAAuB;QAC3B,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,wDAAwD;KACtE;IAED,kCAAkC;IAClC;QACE,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,uDAAuD;KACrE;IACD;QACE,EAAE,EAAE,0BAA0B;QAC9B,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,oCAAoC;KAClD;IACD;QACE,EAAE,EAAE,qBAAqB;QACzB,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,oDAAoD;KAClE;IACD;QACE,EAAE,EAAE,sBAAsB;QAC1B,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,qDAAqD;KACnE;IACD;QACE,EAAE,EAAE,kBAAkB;QACtB,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,0CAA0C;KACxD;IAED,mCAAmC;IACnC;QACE,EAAE,EAAE,2BAA2B;QAC/B,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,mDAAmD;KACjE;IACD;QACE,EAAE,EAAE,sBAAsB;QAC1B,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,gDAAgD;KAC9D;IACD;QACE,EAAE,EAAE,uBAAuB;QAC3B,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,mDAAmD;KACjE;IACD;QACE,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,iDAAiD;KAC/D;IACD;QACE,EAAE,EAAE,2BAA2B;QAC/B,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,yDAAyD;KACvE;IACD;QACE,EAAE,EAAE,iBAAiB;QACrB,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,uDAAuD;KACrE;IACD;QACE,EAAE,EAAE,qBAAqB;QACzB,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,0CAA0C;KACxD;IACD;QACE,EAAE,EAAE,qBAAqB;QACzB,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,gDAAgD;KAC9D;IACD;QACE,EAAE,EAAE,0BAA0B;QAC9B,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,gDAAgD;KAC9D;IACD;QACE,EAAE,EAAE,2BAA2B;QAC/B,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,wCAAwC;KACtD;IAED,aAAa;IACb;QACE,EAAE,EAAE,sBAAsB;QAC1B,KAAK,EAAE,YAAY;QACnB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,uCAAuC;KACrD;IACD;QACE,EAAE,EAAE,uBAAuB;QAC3B,KAAK,EAAE,YAAY;QACnB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,2CAA2C;KACzD;IACD;QACE,EAAE,EAAE,wBAAwB;QAC5B,KAAK,EAAE,YAAY;QACnB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,qCAAqC;KACnD;IACD;QACE,EAAE,EAAE,oBAAoB;QACxB,KAAK,EAAE,YAAY;QACnB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,0CAA0C;KACxD;IACD;QACE,EAAE,EAAE,oBAAoB;QACxB,KAAK,EAAE,YAAY;QACnB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,2CAA2C;KACzD;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,YAAY;QACnB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,mCAAmC;KACjD;IACD;QACE,EAAE,EAAE,yBAAyB;QAC7B,KAAK,EAAE,YAAY;QACnB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,iDAAiD;KAC/D;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,YAAY;QACnB,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE,8CAA8C;KAC5D;IAED,cAAc;IACd;QACE,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,6CAA6C;KAC3D;IACD;QACE,EAAE,EAAE,qBAAqB;QACzB,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,kEAAkE;KAChF;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,6CAA6C;KAC3D;IAED,qDAAqD;IACrD;QACE,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,6CAA6C;QAC1D,SAAS,EAAE,MAAM;KAClB;IACD;QACE,EAAE,EAAE,oBAAoB;QACxB,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,6CAA6C;QAC1D,SAAS,EAAE,MAAM;KAClB;IACD;QACE,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,+CAA+C;QAC5D,SAAS,EAAE,MAAM;KAClB;IACD;QACE,EAAE,EAAE,qBAAqB;QACzB,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,oEAAoE;QACjF,SAAS,EAAE,MAAM;KAClB;IACD;QACE,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,yCAAyC;QACtD,SAAS,EAAE,QAAQ;KACpB;IACD;QACE,EAAE,EAAE,iBAAiB;QACrB,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,gDAAgD;QAC7D,SAAS,EAAE,QAAQ;KACpB;IACD;QACE,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,4CAA4C;QACzD,SAAS,EAAE,MAAM;KAClB;IACD;QACE,EAAE,EAAE,yBAAyB;QAC7B,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,sDAAsD;QACnE,SAAS,EAAE,MAAM;KAClB;IACD,sFAAsF;IACtF;QACE,EAAE,EAAE,wBAAwB;QAC5B,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,iFAAiF;QAC9F,SAAS,EAAE,MAAM;KAClB;IACD;QACE,EAAE,EAAE,sBAAsB;QAC1B,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,mFAAmF;QAChG,SAAS,EAAE,MAAM;KAClB;IACD;QACE,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,oEAAoE;QACjF,SAAS,EAAE,MAAM;KAClB;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,yDAAyD;QACtE,SAAS,EAAE,MAAM;KAClB;IACD;QACE,EAAE,EAAE,kBAAkB;QACtB,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,yDAAyD;QACtE,SAAS,EAAE,MAAM;KAClB;IAED,qCAAqC;IACrC;QACE,EAAE,EAAE,iBAAiB;QACrB,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,6FAA6F;QAC1G,SAAS,EAAE,QAAQ;QACnB,YAAY,EAAE,CAAC;KAChB;IACD;QACE,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,uFAAuF;QACpG,SAAS,EAAE,MAAM;QACjB,YAAY,EAAE,CAAC;KAChB;IACD;QACE,EAAE,EAAE,0BAA0B;QAC9B,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,0FAA0F;QACvG,SAAS,EAAE,MAAM;QACjB,YAAY,EAAE,CAAC;KAChB;IACD;QACE,EAAE,EAAE,wBAAwB;QAC5B,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,MAAM;QAChB,WAAW,EACT,iHAAiH;QACnH,SAAS,EAAE,MAAM;QACjB,YAAY,EAAE,CAAC;KAChB;IAED,+BAA+B;IAC/B;QACE,EAAE,EAAE,2BAA2B;QAC/B,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,0FAA0F;QACvG,SAAS,EAAE,MAAM;QACjB,YAAY,EAAE,CAAC;KAChB;IACD;QACE,EAAE,EAAE,sBAAsB;QAC1B,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,SAAS;QACnB,WAAW,EACT,uGAAuG;QACzG,SAAS,EAAE,MAAM;QACjB,YAAY,EAAE,CAAC;KAChB;IAED,+DAA+D;IAC/D;QACE,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,mBAAmB;QAC1B,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,sGAAsG;QACnH,SAAS,EAAE,MAAM;QACjB,YAAY,EAAE,CAAC;KAChB;IACD;QACE,EAAE,EAAE,wBAAwB;QAC5B,KAAK,EAAE,mBAAmB;QAC1B,QAAQ,EAAE,SAAS;QACnB,WAAW,EACT,2GAA2G;QAC7G,SAAS,EAAE,QAAQ;QACnB,YAAY,EAAE,CAAC;KAChB;IACD;QACE,EAAE,EAAE,kBAAkB;QACtB,KAAK,EAAE,mBAAmB;QAC1B,QAAQ,EAAE,SAAS;QACnB,WAAW,EACT,sHAAsH;QACxH,SAAS,EAAE,MAAM;QACjB,YAAY,EAAE,CAAC;KAChB;IACD;QACE,EAAE,EAAE,4BAA4B;QAChC,KAAK,EAAE,mBAAmB;QAC1B,QAAQ,EAAE,SAAS;QACnB,WAAW,EACT,uHAAuH;QACzH,SAAS,EAAE,MAAM;QACjB,YAAY,EAAE,CAAC;KAChB;IACD;QACE,EAAE,EAAE,gCAAgC;QACpC,KAAK,EAAE,mBAAmB;QAC1B,QAAQ,EAAE,SAAS;QACnB,WAAW,EACT,sHAAsH;QACxH,SAAS,EAAE,MAAM;QACjB,YAAY,EAAE,CAAC;KAChB;IACD;QACE,EAAE,EAAE,2BAA2B;QAC/B,KAAK,EAAE,mBAAmB;QAC1B,QAAQ,EAAE,MAAM;QAChB,WAAW,EACT,wHAAwH;QAC1H,SAAS,EAAE,QAAQ;QACnB,YAAY,EAAE,CAAC;KAChB;IAED,gBAAgB;IAChB;QACE,EAAE,EAAE,iBAAiB;QACrB,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,gEAAgE;QAC7E,SAAS,EAAE,MAAM;QACjB,YAAY,EAAE,CAAC;KAChB;IACD;QACE,EAAE,EAAE,qBAAqB;QACzB,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,wEAAwE;QACrF,SAAS,EAAE,MAAM;QACjB,YAAY,EAAE,CAAC;KAChB;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,mEAAmE;QAChF,SAAS,EAAE,MAAM;QACjB,YAAY,EAAE,CAAC;KAChB;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,uDAAuD;QACpE,SAAS,EAAE,MAAM;QACjB,YAAY,EAAE,CAAC;KAChB;IACD;QACE,EAAE,EAAE,4BAA4B;QAChC,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,6EAA6E;QAC1F,SAAS,EAAE,MAAM;QACjB,YAAY,EAAE,CAAC;KAChB;IAED,gBAAgB;IAChB;QACE,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE,uEAAuE;QACpF,SAAS,EAAE,QAAQ;QACnB,YAAY,EAAE,CAAC;KAChB;IACD;QACE,EAAE,EAAE,6BAA6B;QACjC,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE,0FAA0F;QACvG,SAAS,EAAE,QAAQ;QACnB,YAAY,EAAE,CAAC;KAChB;IACD;QACE,EAAE,EAAE,8BAA8B;QAClC,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE,kEAAkE;QAC/E,SAAS,EAAE,cAAc;QACzB,YAAY,EAAE,CAAC;KAChB;IAED,oBAAoB;IACpB;QACE,EAAE,EAAE,qBAAqB;QACzB,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,sDAAsD;KACpE;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,uDAAuD;KACrE;IACD;QACE,EAAE,EAAE,sBAAsB;QAC1B,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,oEAAoE;KAClF;IACD;QACE,EAAE,EAAE,4BAA4B;QAChC,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,wDAAwD;KACtE;IAED,0BAA0B;IAC1B;QACE,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,2CAA2C;KACzD;IACD;QACE,EAAE,EAAE,qBAAqB;QACzB,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,oDAAoD;KAClE;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,4CAA4C;KAC1D;IACD;QACE,EAAE,EAAE,sBAAsB;QAC1B,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,2CAA2C;KACzD;IAED,8BAA8B;IAC9B;QACE,EAAE,EAAE,4BAA4B;QAChC,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,kDAAkD;KAChE;IACD;QACE,EAAE,EAAE,8BAA8B;QAClC,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,gDAAgD;KAC9D;IACD;QACE,EAAE,EAAE,4BAA4B;QAChC,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,oDAAoD;KAClE;IACD;QACE,EAAE,EAAE,gCAAgC;QACpC,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,kDAAkD;KAChE;IACD;QACE,EAAE,EAAE,iCAAiC;QACrC,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,uCAAuC;KACrD;IACD;QACE,EAAE,EAAE,8BAA8B;QAClC,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,uCAAuC;KACrD;IACD;QACE,EAAE,EAAE,6BAA6B;QACjC,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,yCAAyC;KACvD;IAED,qCAAqC;IACrC;QACE,EAAE,EAAE,oBAAoB;QACxB,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,kDAAkD;KAChE;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,iDAAiD;KAC/D;IACD;QACE,EAAE,EAAE,kBAAkB;QACtB,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,gDAAgD;KAC9D;IACD;QACE,EAAE,EAAE,kBAAkB;QACtB,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,oDAAoD;KAClE;IACD;QACE,EAAE,EAAE,wBAAwB;QAC5B,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,8CAA8C;KAC5D;IACD;QACE,EAAE,EAAE,4BAA4B;QAChC,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,qCAAqC;KACnD;IAED,2BAA2B;IAC3B;QACE,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,qCAAqC;QAClD,SAAS,EAAE,MAAM;KAClB;IACD;QACE,EAAE,EAAE,oBAAoB;QACxB,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,wDAAwD;QACrE,SAAS,EAAE,MAAM;KAClB;IACD;QACE,EAAE,EAAE,2BAA2B;QAC/B,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,6DAA6D;QAC1E,SAAS,EAAE,MAAM;KAClB;IACD;QACE,EAAE,EAAE,oBAAoB;QACxB,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,sDAAsD;QACnE,SAAS,EAAE,MAAM;KAClB;IACD;QACE,EAAE,EAAE,qBAAqB;QACzB,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,6DAA6D;KAC3E;IACD;QACE,EAAE,EAAE,qBAAqB;QACzB,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,wDAAwD;KACtE;IACD;QACE,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,2DAA2D;KACzE;IACD;QACE,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,4CAA4C;KAC1D;IACD;QACE,EAAE,EAAE,oBAAoB;QACxB,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE,gEAAgE;KAC9E;IACD;QACE,EAAE,EAAE,uBAAuB;QAC3B,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,4DAA4D;KAC1E;IAED,8BAA8B;IAC9B;QACE,EAAE,EAAE,6BAA6B;QACjC,KAAK,EAAE,mBAAmB;QAC1B,QAAQ,EAAE,SAAS;QACnB,WAAW,EACT,yGAAyG;QAC3G,SAAS,EAAE,QAAQ;QACnB,YAAY,EAAE,CAAC;KAChB;IACD;QACE,EAAE,EAAE,sBAAsB;QAC1B,KAAK,EAAE,mBAAmB;QAC1B,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,wFAAwF;QACrG,SAAS,EAAE,MAAM;QACjB,YAAY,EAAE,CAAC;KAChB;IACD;QACE,EAAE,EAAE,uBAAuB;QAC3B,KAAK,EAAE,mBAAmB;QAC1B,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,iGAAiG;QAC9G,SAAS,EAAE,MAAM;QACjB,YAAY,EAAE,CAAC;KAChB;IACD;QACE,EAAE,EAAE,kCAAkC;QACtC,KAAK,EAAE,mBAAmB;QAC1B,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,sFAAsF;QACnG,SAAS,EAAE,QAAQ;QACnB,YAAY,EAAE,CAAC;KAChB;IACD;QACE,EAAE,EAAE,mCAAmC;QACvC,KAAK,EAAE,mBAAmB;QAC1B,QAAQ,EAAE,SAAS;QACnB,WAAW,EACT,0GAA0G;QAC5G,SAAS,EAAE,QAAQ;QACnB,YAAY,EAAE,CAAC;KAChB;IACD;QACE,EAAE,EAAE,oCAAoC;QACxC,KAAK,EAAE,mBAAmB;QAC1B,QAAQ,EAAE,SAAS;QACnB,WAAW,EACT,kHAAkH;QACpH,SAAS,EAAE,QAAQ;QACnB,YAAY,EAAE,CAAC;KAChB;IACD;QACE,EAAE,EAAE,yCAAyC;QAC7C,KAAK,EAAE,mBAAmB;QAC1B,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,oGAAoG;QACjH,SAAS,EAAE,MAAM;QACjB,YAAY,EAAE,CAAC;KAChB;IACD;QACE,EAAE,EAAE,kDAAkD;QACtD,KAAK,EAAE,mBAAmB;QAC1B,QAAQ,EAAE,SAAS;QACnB,WAAW,EACT,iHAAiH;QACnH,SAAS,EAAE,QAAQ;QACnB,YAAY,EAAE,CAAC;KAChB;IACD;QACE,EAAE,EAAE,iCAAiC;QACrC,KAAK,EAAE,mBAAmB;QAC1B,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,gGAAgG;QAC7G,SAAS,EAAE,MAAM;QACjB,YAAY,EAAE,CAAC;KAChB;IAED,uBAAuB;IACvB;QACE,EAAE,EAAE,qBAAqB;QACzB,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,yEAAyE;QACtF,SAAS,EAAE,MAAM;QACjB,YAAY,EAAE,CAAC;KAChB;IACD;QACE,EAAE,EAAE,iBAAiB;QACrB,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,wFAAwF;QACrG,SAAS,EAAE,MAAM;QACjB,YAAY,EAAE,CAAC;KAChB;IACD;QACE,EAAE,EAAE,iBAAiB;QACrB,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,mEAAmE;QAChF,SAAS,EAAE,MAAM;QACjB,YAAY,EAAE,CAAC;KAChB;IACD,2DAA2D;IAC3D;QACE,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,kFAAkF;QAC/F,SAAS,EAAE,MAAM;QACjB,YAAY,EAAE,CAAC;KAChB;IAED,sBAAsB;IACtB;QACE,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,2CAA2C;KACzD;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,0DAA0D;KACxE;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,8CAA8C;KAC5D;IAED,4BAA4B;IAC5B;QACE,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,+CAA+C;KAC7D;IACD;QACE,EAAE,EAAE,0BAA0B;QAC9B,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,+CAA+C;KAC7D;IACD,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,iCAAiC,EAAE;IAChH;QACE,EAAE,EAAE,iBAAiB;QACrB,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,0CAA0C;KACxD;IACD;QACE,EAAE,EAAE,sBAAsB;QAC1B,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,4DAA4D;KAC1E;IAED,2DAA2D;IAC3D;QACE,EAAE,EAAE,gCAAgC;QACpC,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,yDAAyD;KACvE;IACD;QACE,EAAE,EAAE,6BAA6B;QACjC,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,gDAAgD;KAC9D;IACD;QACE,EAAE,EAAE,sBAAsB;QAC1B,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,oDAAoD;KAClE;IACD;QACE,EAAE,EAAE,sBAAsB;QAC1B,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,+CAA+C;KAC7D;IACD;QACE,EAAE,EAAE,oBAAoB;QACxB,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,6DAA6D;KAC3E;IAED,mDAAmD;IACnD;QACE,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,gDAAgD;KAC9D;IACD,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,mCAAmC,EAAE;IAChH;QACE,EAAE,EAAE,kBAAkB;QACtB,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,iDAAiD;KAC/D;IACD;QACE,EAAE,EAAE,oBAAoB;QACxB,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,0CAA0C;KACxD;CACF,CAAC;AAEF,2CAA2C;AAC3C,MAAM,gBAAgB,GAAoC;IACxD,IAAI,EAAE,IAAI,EAAE,gBAAgB;IAC5B,QAAQ,EAAE,IAAI;IACd,aAAa,EAAE,IAAI;IACnB,aAAa,EAAE,IAAI;IACnB,aAAa,EAAE,IAAI;IACnB,aAAa,EAAE,IAAI;IACnB,YAAY,EAAE,IAAI;IAClB,aAAa,EAAE,IAAI;IACnB,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,IAAI;IACb,KAAK,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC;IACrD,aAAa,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC;IAC7D,mBAAmB,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC;IACnE,IAAI,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC;IACpD,IAAI,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC;IACpD,GAAG,EAAE,CAAC,KAAK,CAAC;IACZ,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,CAAC,KAAK,CAAC;IACZ,aAAa,EAAE,IAAI;IACnB,QAAQ,EAAE,CAAC,UAAU,CAAC;IACtB,MAAM,EAAE,CAAC,QAAQ,CAAC;IAClB,mBAAmB,EAAE,CAAC,QAAQ,CAAC;IAC/B,IAAI,EAAE,CAAC,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,SAAS,CAAC;IACpB,OAAO,EAAE,CAAC,SAAS,CAAC;CACrB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,MAAe;IAC7C,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;IAClC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QAC3B,MAAM,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC1C,OAAO,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC"}
package/dist/rules/ink.js CHANGED
@@ -77,6 +77,45 @@ function missingErrorBoundary(ctx) {
77
77
  }
78
78
  return [];
79
79
  }
80
+ // ── Rule: ink-raw-setter-in-async (Claude) ─────────────────────────────
81
+ function rawSetterInAsync(ctx) {
82
+ const fullText = ctx.sourceFile.getFullText();
83
+ if (!isInkFile(fullText))
84
+ return [];
85
+ // Detect raw _set*Raw calls outside of KERN-generated wrappers (__inkSafe, throttle, debounce).
86
+ // Lines containing __inkSafe, useMemo, or setTimeout are part of the generated wrapper — skip them.
87
+ const lines = fullText.split('\n');
88
+ const findings = [];
89
+ for (let i = 0; i < lines.length; i++) {
90
+ const line = lines[i];
91
+ if (!/_set\w+Raw\s*\(/.test(line))
92
+ continue;
93
+ // Skip KERN-generated wrapper patterns
94
+ if (/__inkSafe/.test(line) || /useMemo/.test(line) || /setTimeout/.test(line))
95
+ continue;
96
+ findings.push(finding('ink-raw-setter-in-async', 'warning', 'bug', 'Raw state setter (_set*Raw) called directly — bypasses __inkSafe wrapper, may cause missed Ink repaints', ctx.filePath, i + 1, 1, {
97
+ suggestion: 'Use the safe setter (without Raw suffix) which auto-bridges microtask → macrotask via setTimeout',
98
+ }));
99
+ }
100
+ return findings;
101
+ }
102
+ // ── Rule: ink-animation-too-fast (Phase 5) ─────────────────────────────
103
+ function animationTooFast(ctx) {
104
+ const fullText = ctx.sourceFile.getFullText();
105
+ if (!isInkFile(fullText))
106
+ return [];
107
+ // Match setInterval with very short intervals (< 16ms = faster than 60fps)
108
+ const pattern = /setInterval\s*\([^,]+,\s*(\d+)\s*\)/g;
109
+ const findings = [];
110
+ let match;
111
+ while ((match = pattern.exec(fullText)) !== null) {
112
+ const interval = Number(match[1]);
113
+ if (interval < 16) {
114
+ findings.push(finding('ink-animation-too-fast', 'warning', 'pattern', `setInterval with ${interval}ms interval — faster than 60fps, wastes CPU in terminal rendering`, ctx.filePath, lineForIndex(fullText, match.index), 1, { suggestion: 'Use at least 16ms (60fps) or higher intervals for terminal animations' }));
115
+ }
116
+ }
117
+ return findings;
118
+ }
80
119
  export const inkRules = [
81
120
  consoleOutput,
82
121
  directStdout,
@@ -84,5 +123,7 @@ export const inkRules = [
84
123
  stdinBypass,
85
124
  unclearedInterval,
86
125
  missingErrorBoundary,
126
+ rawSetterInAsync,
127
+ animationTooFast,
87
128
  ];
88
129
  //# sourceMappingURL=ink.js.map