eslint-plugin-runtime-cleanup 1.2.8 → 1.2.10

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 (145) hide show
  1. package/README.md +29 -29
  2. package/dist/_internal/ast-node.d.ts +5 -1
  3. package/dist/_internal/ast-node.d.ts.map +1 -1
  4. package/dist/_internal/ast-node.js +2 -1
  5. package/dist/_internal/ast-node.js.map +1 -1
  6. package/dist/_internal/bounded-cache.d.ts.map +1 -1
  7. package/dist/_internal/bounded-cache.js +2 -1
  8. package/dist/_internal/bounded-cache.js.map +1 -1
  9. package/dist/_internal/expression-boolean-memoizer.d.ts.map +1 -1
  10. package/dist/_internal/expression-boolean-memoizer.js +2 -1
  11. package/dist/_internal/expression-boolean-memoizer.js.map +1 -1
  12. package/dist/_internal/filter-callback.d.ts +5 -1
  13. package/dist/_internal/filter-callback.d.ts.map +1 -1
  14. package/dist/_internal/filter-callback.js +9 -10
  15. package/dist/_internal/filter-callback.js.map +1 -1
  16. package/dist/_internal/floating-resource.d.ts +8 -0
  17. package/dist/_internal/floating-resource.d.ts.map +1 -1
  18. package/dist/_internal/floating-resource.js +42 -36
  19. package/dist/_internal/floating-resource.js.map +1 -1
  20. package/dist/_internal/normalize-expression-text.d.ts +6 -1
  21. package/dist/_internal/normalize-expression-text.d.ts.map +1 -1
  22. package/dist/_internal/normalize-expression-text.js +30 -28
  23. package/dist/_internal/normalize-expression-text.js.map +1 -1
  24. package/dist/_internal/nullish-comparison.d.ts +1 -1
  25. package/dist/_internal/nullish-comparison.d.ts.map +1 -1
  26. package/dist/_internal/nullish-comparison.js +16 -11
  27. package/dist/_internal/nullish-comparison.js.map +1 -1
  28. package/dist/_internal/plugin-settings.d.ts +2 -1
  29. package/dist/_internal/plugin-settings.d.ts.map +1 -1
  30. package/dist/_internal/plugin-settings.js +3 -2
  31. package/dist/_internal/plugin-settings.js.map +1 -1
  32. package/dist/_internal/report-adapter.d.ts +5 -4
  33. package/dist/_internal/report-adapter.d.ts.map +1 -1
  34. package/dist/_internal/report-adapter.js +3 -2
  35. package/dist/_internal/report-adapter.js.map +1 -1
  36. package/dist/_internal/rule-catalog.d.ts.map +1 -1
  37. package/dist/_internal/rule-catalog.js +3 -2
  38. package/dist/_internal/rule-catalog.js.map +1 -1
  39. package/dist/_internal/rule-docs-metadata.d.ts +2 -1
  40. package/dist/_internal/rule-docs-metadata.d.ts.map +1 -1
  41. package/dist/_internal/rule-docs-metadata.js +36 -33
  42. package/dist/_internal/rule-docs-metadata.js.map +1 -1
  43. package/dist/_internal/rules-registry.d.ts +2 -1
  44. package/dist/_internal/rules-registry.d.ts.map +1 -1
  45. package/dist/_internal/rules-registry.js.map +1 -1
  46. package/dist/_internal/runtime-cleanup-config-references.d.ts +2 -1
  47. package/dist/_internal/runtime-cleanup-config-references.d.ts.map +1 -1
  48. package/dist/_internal/runtime-cleanup-config-references.js +8 -7
  49. package/dist/_internal/runtime-cleanup-config-references.js.map +1 -1
  50. package/dist/_internal/scope-variable.d.ts.map +1 -1
  51. package/dist/_internal/scope-variable.js +5 -4
  52. package/dist/_internal/scope-variable.js.map +1 -1
  53. package/dist/_internal/type-checker.d.ts +2 -2
  54. package/dist/_internal/type-checker.d.ts.map +1 -1
  55. package/dist/_internal/type-checker.js +10 -8
  56. package/dist/_internal/type-checker.js.map +1 -1
  57. package/dist/_internal/type-predicate-autofix-safety.d.ts +5 -1
  58. package/dist/_internal/type-predicate-autofix-safety.d.ts.map +1 -1
  59. package/dist/_internal/type-predicate-autofix-safety.js +9 -10
  60. package/dist/_internal/type-predicate-autofix-safety.js.map +1 -1
  61. package/dist/_internal/type-reference-node.d.ts +7 -5
  62. package/dist/_internal/type-reference-node.d.ts.map +1 -1
  63. package/dist/_internal/type-reference-node.js +6 -6
  64. package/dist/_internal/type-reference-node.js.map +1 -1
  65. package/dist/_internal/typed-rule.d.ts +2 -1
  66. package/dist/_internal/typed-rule.d.ts.map +1 -1
  67. package/dist/_internal/typed-rule.js +6 -5
  68. package/dist/_internal/typed-rule.js.map +1 -1
  69. package/dist/_internal/value-rewrite-autofix-safety.d.ts +5 -1
  70. package/dist/_internal/value-rewrite-autofix-safety.d.ts.map +1 -1
  71. package/dist/_internal/value-rewrite-autofix-safety.js +10 -18
  72. package/dist/_internal/value-rewrite-autofix-safety.js.map +1 -1
  73. package/dist/plugin.cjs +571 -662
  74. package/dist/plugin.cjs.map +4 -4
  75. package/dist/plugin.d.cts +2 -1
  76. package/dist/plugin.d.ts +2 -1
  77. package/dist/plugin.d.ts.map +1 -1
  78. package/dist/plugin.js +8 -7
  79. package/dist/plugin.js.map +1 -1
  80. package/dist/rules/no-floating-abort-controllers.d.ts.map +1 -1
  81. package/dist/rules/no-floating-abort-controllers.js +24 -52
  82. package/dist/rules/no-floating-abort-controllers.js.map +1 -1
  83. package/dist/rules/no-floating-audio-contexts.d.ts.map +1 -1
  84. package/dist/rules/no-floating-audio-contexts.js +7 -6
  85. package/dist/rules/no-floating-audio-contexts.js.map +1 -1
  86. package/dist/rules/no-floating-broadcast-channels.d.ts.map +1 -1
  87. package/dist/rules/no-floating-broadcast-channels.js +31 -59
  88. package/dist/rules/no-floating-broadcast-channels.js.map +1 -1
  89. package/dist/rules/no-floating-child-processes.d.ts.map +1 -1
  90. package/dist/rules/no-floating-child-processes.js +43 -45
  91. package/dist/rules/no-floating-child-processes.js.map +1 -1
  92. package/dist/rules/no-floating-disposable-stacks.d.ts.map +1 -1
  93. package/dist/rules/no-floating-disposable-stacks.js +37 -38
  94. package/dist/rules/no-floating-disposable-stacks.js.map +1 -1
  95. package/dist/rules/no-floating-file-watchers.d.ts.map +1 -1
  96. package/dist/rules/no-floating-file-watchers.js +40 -42
  97. package/dist/rules/no-floating-file-watchers.js.map +1 -1
  98. package/dist/rules/no-floating-geolocation-watches.js +20 -20
  99. package/dist/rules/no-floating-geolocation-watches.js.map +1 -1
  100. package/dist/rules/no-floating-infinite-animations.d.ts.map +1 -1
  101. package/dist/rules/no-floating-infinite-animations.js +4 -3
  102. package/dist/rules/no-floating-infinite-animations.js.map +1 -1
  103. package/dist/rules/no-floating-media-streams.d.ts.map +1 -1
  104. package/dist/rules/no-floating-media-streams.js +24 -24
  105. package/dist/rules/no-floating-media-streams.js.map +1 -1
  106. package/dist/rules/no-floating-message-channels.js +30 -30
  107. package/dist/rules/no-floating-message-channels.js.map +1 -1
  108. package/dist/rules/no-floating-network-connections.d.ts.map +1 -1
  109. package/dist/rules/no-floating-network-connections.js +36 -36
  110. package/dist/rules/no-floating-network-connections.js.map +1 -1
  111. package/dist/rules/no-floating-object-urls.d.ts.map +1 -1
  112. package/dist/rules/no-floating-object-urls.js +4 -3
  113. package/dist/rules/no-floating-object-urls.js.map +1 -1
  114. package/dist/rules/no-floating-observers.d.ts.map +1 -1
  115. package/dist/rules/no-floating-observers.js +33 -34
  116. package/dist/rules/no-floating-observers.js.map +1 -1
  117. package/dist/rules/no-floating-servers.d.ts.map +1 -1
  118. package/dist/rules/no-floating-servers.js +50 -52
  119. package/dist/rules/no-floating-servers.js.map +1 -1
  120. package/dist/rules/no-floating-streams.d.ts.map +1 -1
  121. package/dist/rules/no-floating-streams.js +28 -29
  122. package/dist/rules/no-floating-streams.js.map +1 -1
  123. package/dist/rules/no-floating-timers.d.ts.map +1 -1
  124. package/dist/rules/no-floating-timers.js +7 -47
  125. package/dist/rules/no-floating-timers.js.map +1 -1
  126. package/dist/rules/no-floating-wake-locks.js +20 -20
  127. package/dist/rules/no-floating-wake-locks.js.map +1 -1
  128. package/dist/rules/no-floating-web-stream-locks.d.ts.map +1 -1
  129. package/dist/rules/no-floating-web-stream-locks.js +4 -3
  130. package/dist/rules/no-floating-web-stream-locks.js.map +1 -1
  131. package/dist/rules/no-floating-workers.d.ts.map +1 -1
  132. package/dist/rules/no-floating-workers.js +39 -40
  133. package/dist/rules/no-floating-workers.js.map +1 -1
  134. package/dist/rules/no-unmanaged-event-listeners.d.ts.map +1 -1
  135. package/dist/rules/no-unmanaged-event-listeners.js +23 -23
  136. package/dist/rules/no-unmanaged-event-listeners.js.map +1 -1
  137. package/docs/rules/no-floating-audio-contexts.md +1 -2
  138. package/docs/rules/no-floating-media-streams.md +1 -1
  139. package/docs/rules/no-floating-object-urls.md +3 -3
  140. package/docs/rules/no-floating-observers.md +1 -1
  141. package/docs/rules/no-floating-servers.md +1 -1
  142. package/docs/rules/no-floating-wake-locks.md +1 -1
  143. package/docs/rules/no-floating-web-stream-locks.md +1 -2
  144. package/docs/rules/presets/index.md +28 -28
  145. package/package.json +7 -4
@@ -2,6 +2,7 @@
2
2
  * @packageDocumentation
3
3
  * Shared runtime-cleanup preset/config reference constants and type guards.
4
4
  */
5
+ import { objectHasOwn } from "ts-extras";
5
6
  /** Canonical flat-config preset keys exposed through `plugin.configs`. */
6
7
  export const runtimeCleanupConfigNames = [
7
8
  "all",
@@ -16,37 +17,37 @@ export const runtimeCleanupConfigNames = [
16
17
  */
17
18
  export const runtimeCleanupConfigMetadataByName = {
18
19
  all: {
19
- icon: "A",
20
+ icon: "🟣",
20
21
  presetName: "runtime-cleanup:all",
21
22
  readmeOrder: 5,
22
23
  requiresTypeChecking: true,
23
24
  },
24
25
  experimental: {
25
- icon: "E",
26
+ icon: "🧪",
26
27
  presetName: "runtime-cleanup:experimental",
27
28
  readmeOrder: 6,
28
29
  requiresTypeChecking: false,
29
30
  },
30
31
  minimal: {
31
- icon: "M",
32
+ icon: "🟢",
32
33
  presetName: "runtime-cleanup:minimal",
33
34
  readmeOrder: 1,
34
35
  requiresTypeChecking: false,
35
36
  },
36
37
  recommended: {
37
- icon: "R",
38
+ icon: "🟡",
38
39
  presetName: "runtime-cleanup:recommended",
39
40
  readmeOrder: 2,
40
41
  requiresTypeChecking: false,
41
42
  },
42
43
  "recommended-type-checked": {
43
- icon: "T",
44
+ icon: "🧬",
44
45
  presetName: "runtime-cleanup:recommended-type-checked",
45
46
  readmeOrder: 3,
46
47
  requiresTypeChecking: true,
47
48
  },
48
49
  strict: {
49
- icon: "S",
50
+ icon: "🔴",
50
51
  presetName: "runtime-cleanup:strict",
51
52
  readmeOrder: 4,
52
53
  requiresTypeChecking: true,
@@ -74,5 +75,5 @@ export const runtimeCleanupConfigReferenceToName = {
74
75
  /**
75
76
  * Check whether a string is a supported rule docs preset reference.
76
77
  */
77
- export const isRuntimeCleanupConfigReference = (value) => Object.hasOwn(runtimeCleanupConfigReferenceToName, value);
78
+ export const isRuntimeCleanupConfigReference = (value) => objectHasOwn(runtimeCleanupConfigReferenceToName, value);
78
79
  //# sourceMappingURL=runtime-cleanup-config-references.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-cleanup-config-references.js","sourceRoot":"","sources":["../../src/_internal/runtime-cleanup-config-references.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,0EAA0E;AAC1E,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACrC,KAAK;IACL,cAAc;IACd,SAAS;IACT,aAAa;IACb,0BAA0B;IAC1B,QAAQ;CACF,CAAC;AAcX;;GAEG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAE3C;IACA,GAAG,EAAE;QACD,IAAI,EAAE,GAAG;QACT,UAAU,EAAE,qBAAqB;QACjC,WAAW,EAAE,CAAC;QACd,oBAAoB,EAAE,IAAI;KAC7B;IACD,YAAY,EAAE;QACV,IAAI,EAAE,GAAG;QACT,UAAU,EAAE,8BAA8B;QAC1C,WAAW,EAAE,CAAC;QACd,oBAAoB,EAAE,KAAK;KAC9B;IACD,OAAO,EAAE;QACL,IAAI,EAAE,GAAG;QACT,UAAU,EAAE,yBAAyB;QACrC,WAAW,EAAE,CAAC;QACd,oBAAoB,EAAE,KAAK;KAC9B;IACD,WAAW,EAAE;QACT,IAAI,EAAE,GAAG;QACT,UAAU,EAAE,6BAA6B;QACzC,WAAW,EAAE,CAAC;QACd,oBAAoB,EAAE,KAAK;KAC9B;IACD,0BAA0B,EAAE;QACxB,IAAI,EAAE,GAAG;QACT,UAAU,EAAE,0CAA0C;QACtD,WAAW,EAAE,CAAC;QACd,oBAAoB,EAAE,IAAI;KAC7B;IACD,MAAM,EAAE;QACJ,IAAI,EAAE,GAAG;QACT,UAAU,EAAE,wBAAwB;QACpC,WAAW,EAAE,CAAC;QACd,oBAAoB,EAAE,IAAI;KAC7B;CACJ,CAAC;AAEF,6DAA6D;AAC7D,MAAM,CAAC,MAAM,sCAAsC,GAC/C;IACI,SAAS;IACT,aAAa;IACb,0BAA0B;IAC1B,QAAQ;IACR,KAAK;IACL,cAAc;CACjB,CAAC;AAEN,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mCAAmC,GAQ3C;IACD,6BAA6B,EAAE,KAAK;IACpC,sCAAsC,EAAE,cAAc;IACtD,iCAAiC,EAAE,SAAS;IAC5C,qCAAqC,EAAE,aAAa;IACpD,kDAAkD,EAC9C,0BAA0B;IAC9B,gCAAgC,EAAE,QAAQ;IAC1C,qDAAqD,EACjD,0BAA0B;CACjC,CAAC;AAMF;;GAEG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAC3C,KAAa,EACyB,EAAE,CACxC,MAAM,CAAC,MAAM,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"runtime-cleanup-config-references.js","sourceRoot":"","sources":["../../src/_internal/runtime-cleanup-config-references.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,0EAA0E;AAC1E,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACrC,KAAK;IACL,cAAc;IACd,SAAS;IACT,aAAa;IACb,0BAA0B;IAC1B,QAAQ;CACF,CAAC;AAcX;;GAEG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAE3C;IACA,GAAG,EAAE;QACD,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,qBAAqB;QACjC,WAAW,EAAE,CAAC;QACd,oBAAoB,EAAE,IAAI;KAC7B;IACD,YAAY,EAAE;QACV,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,8BAA8B;QAC1C,WAAW,EAAE,CAAC;QACd,oBAAoB,EAAE,KAAK;KAC9B;IACD,OAAO,EAAE;QACL,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,yBAAyB;QACrC,WAAW,EAAE,CAAC;QACd,oBAAoB,EAAE,KAAK;KAC9B;IACD,WAAW,EAAE;QACT,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,6BAA6B;QACzC,WAAW,EAAE,CAAC;QACd,oBAAoB,EAAE,KAAK;KAC9B;IACD,0BAA0B,EAAE;QACxB,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,0CAA0C;QACtD,WAAW,EAAE,CAAC;QACd,oBAAoB,EAAE,IAAI;KAC7B;IACD,MAAM,EAAE;QACJ,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,wBAAwB;QACpC,WAAW,EAAE,CAAC;QACd,oBAAoB,EAAE,IAAI;KAC7B;CACJ,CAAC;AAEF,6DAA6D;AAC7D,MAAM,CAAC,MAAM,sCAAsC,GAC/C;IACI,SAAS;IACT,aAAa;IACb,0BAA0B;IAC1B,QAAQ;IACR,KAAK;IACL,cAAc;CACjB,CAAC;AAEN,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mCAAmC,GAQ3C;IACD,6BAA6B,EAAE,KAAK;IACpC,sCAAsC,EAAE,cAAc;IACtD,iCAAiC,EAAE,SAAS;IAC5C,qCAAqC,EAAE,aAAa;IACpD,kDAAkD,EAC9C,0BAA0B;IAC9B,gCAAgC,EAAE,QAAQ;IAC1C,qDAAqD,EACjD,0BAA0B;CACjC,CAAC;AAMF;;GAEG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAC3C,KAAa,EACyB,EAAE,CACxC,YAAY,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"scope-variable.d.ts","sourceRoot":"","sources":["../../src/_internal/scope-variable.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAIzD;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,GAChC,OAAO,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EACtD,cAAc,MAAM,KACrB,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,QAwBxB,CAAC"}
1
+ {"version":3,"file":"scope-variable.d.ts","sourceRoot":"","sources":["../../src/_internal/scope-variable.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAMzD;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,GAChC,OAAO,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EACtD,cAAc,MAAM,KACrB,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,QAwBxB,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { isDefined } from "ts-extras";
1
2
  import { resolveFirstValueInLinkedStructure } from "./cycle-safe-linked-search.js";
2
3
  /**
3
4
  * Resolve a variable binding by walking the current scope and all parent
@@ -14,13 +15,13 @@ export const getVariableInScopeChain = (scope, variableName) => {
14
15
  getNextNode: (currentScope) => currentScope.upper,
15
16
  resolveValue: (currentScope) => {
16
17
  const variable = currentScope.set.get(variableName);
17
- return variable === undefined
18
+ return isDefined(variable)
18
19
  ? {
19
- found: false,
20
- }
21
- : {
22
20
  found: true,
23
21
  value: variable,
22
+ }
23
+ : {
24
+ found: false,
24
25
  };
25
26
  },
26
27
  startNode: scope,
@@ -1 +1 @@
1
- {"version":3,"file":"scope-variable.js","sourceRoot":"","sources":["../../src/_internal/scope-variable.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kCAAkC,EAAE,MAAM,+BAA+B,CAAC;AAEnF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACnC,KAAsD,EACtD,YAAoB,EACU,EAAE;IAChC,MAAM,YAAY,GAAG,kCAAkC,CAGrD;QACE,WAAW,EAAE,CACT,YAA4C,EACP,EAAE,CAAC,YAAY,CAAC,KAAK;QAC9D,YAAY,EAAE,CAAC,YAA4C,EAAE,EAAE;YAC3D,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAEpD,OAAO,QAAQ,KAAK,SAAS;gBACzB,CAAC,CAAC;oBACI,KAAK,EAAE,KAAK;iBACf;gBACH,CAAC,CAAC;oBACI,KAAK,EAAE,IAAI;oBACX,KAAK,EAAE,QAAQ;iBAClB,CAAC;QACZ,CAAC;QACD,SAAS,EAAE,KAAK;KACnB,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1D,CAAC,CAAC"}
1
+ {"version":3,"file":"scope-variable.js","sourceRoot":"","sources":["../../src/_internal/scope-variable.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,kCAAkC,EAAE,MAAM,+BAA+B,CAAC;AAEnF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACnC,KAAsD,EACtD,YAAoB,EACU,EAAE;IAChC,MAAM,YAAY,GAAG,kCAAkC,CAGrD;QACE,WAAW,EAAE,CACT,YAA4C,EACP,EAAE,CAAC,YAAY,CAAC,KAAK;QAC9D,YAAY,EAAE,CAAC,YAA4C,EAAE,EAAE;YAC3D,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAEpD,OAAO,SAAS,CAAC,QAAQ,CAAC;gBACtB,CAAC,CAAC;oBACI,KAAK,EAAE,IAAI;oBACX,KAAK,EAAE,QAAQ;iBAClB;gBACH,CAAC,CAAC;oBACI,KAAK,EAAE,KAAK;iBACf,CAAC;QACZ,CAAC;QACD,SAAS,EAAE,KAAK;KACnB,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1D,CAAC,CAAC"}
@@ -2,10 +2,10 @@
2
2
  * @packageDocumentation
3
3
  * Shared TypeScript checker helpers for low-noise type-aware rules.
4
4
  */
5
- import type ts from "typescript";
5
+ import type { Type, TypeChecker } from "typescript";
6
6
  /**
7
7
  * Check whether a type or any type in its base hierarchy has a given symbol
8
8
  * name.
9
9
  */
10
- export declare const hasTypeNameInHierarchy: (checker: ts.TypeChecker, type: ts.Type, expectedTypeName: string, seenTypes?: ReadonlySet<ts.Type>) => boolean;
10
+ export declare const hasTypeNameInHierarchy: (checker: TypeChecker, candidate: Type, expectedTypeName: string, seenTypes?: ReadonlySet<Type>) => boolean;
11
11
  //# sourceMappingURL=type-checker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"type-checker.d.ts","sourceRoot":"","sources":["../../src/_internal/type-checker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GAC/B,SAAS,EAAE,CAAC,WAAW,EACvB,MAAM,EAAE,CAAC,IAAI,EACb,kBAAkB,MAAM,EACxB,YAAW,WAAW,CAAC,EAAE,CAAC,IAAI,CAAa,KAC5C,OAwCF,CAAC"}
1
+ {"version":3,"file":"type-checker.d.ts","sourceRoot":"","sources":["../../src/_internal/type-checker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAIpD;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GAC/B,SAAS,WAAW,EACpB,WAAW,IAAI,EACf,kBAAkB,MAAM,EACxB,YAAW,WAAW,CAAC,IAAI,CAAa,KACzC,OAyCF,CAAC"}
@@ -1,19 +1,21 @@
1
+ import { setHas } from "ts-extras";
1
2
  /**
2
3
  * Check whether a type or any type in its base hierarchy has a given symbol
3
4
  * name.
4
5
  */
5
- export const hasTypeNameInHierarchy = (checker, type, expectedTypeName, seenTypes = new Set()) => {
6
- if (seenTypes.has(type)) {
6
+ export const hasTypeNameInHierarchy = (checker, candidate, expectedTypeName, seenTypes = new Set()) => {
7
+ const seenCandidate = candidate;
8
+ if (setHas(seenTypes, seenCandidate)) {
7
9
  return false;
8
10
  }
9
11
  const nextSeenTypes = new Set(seenTypes);
10
- nextSeenTypes.add(type);
11
- if (type.isUnionOrIntersection()) {
12
- return type.types.some((entry) => hasTypeNameInHierarchy(checker, entry, expectedTypeName, nextSeenTypes));
12
+ nextSeenTypes.add(candidate);
13
+ if (candidate.isUnionOrIntersection()) {
14
+ return candidate.types.some((entry) => hasTypeNameInHierarchy(checker, entry, expectedTypeName, nextSeenTypes));
13
15
  }
14
- const apparentType = checker.getApparentType(type);
15
- const typeName = apparentType.symbol.getName();
16
- if (typeName === expectedTypeName) {
16
+ const apparentType = checker.getApparentType(candidate);
17
+ const candidateName = apparentType.symbol.getName();
18
+ if (candidateName === expectedTypeName) {
17
19
  return true;
18
20
  }
19
21
  if (!apparentType.isClassOrInterface()) {
@@ -1 +1 @@
1
- {"version":3,"file":"type-checker.js","sourceRoot":"","sources":["../../src/_internal/type-checker.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAClC,OAAuB,EACvB,IAAa,EACb,gBAAwB,EACxB,YAAkC,IAAI,GAAG,EAAE,EACpC,EAAE;IACT,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IACzC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAExB,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC7B,sBAAsB,CAClB,OAAO,EACP,KAAK,EACL,gBAAgB,EAChB,aAAa,CAChB,CACJ,CAAC;IACN,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IAE/C,IAAI,QAAQ,KAAK,gBAAgB,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IAErD,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC/B,sBAAsB,CAClB,OAAO,EACP,QAAQ,EACR,gBAAgB,EAChB,aAAa,CAChB,CACJ,CAAC;AACN,CAAC,CAAC"}
1
+ {"version":3,"file":"type-checker.js","sourceRoot":"","sources":["../../src/_internal/type-checker.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAClC,OAAoB,EACpB,SAAe,EACf,gBAAwB,EACxB,YAA+B,IAAI,GAAG,EAAE,EACjC,EAAE;IACT,MAAM,aAAa,GAAY,SAAS,CAAC;IACzC,IAAI,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IACzC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAE7B,IAAI,SAAS,CAAC,qBAAqB,EAAE,EAAE,CAAC;QACpC,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAW,EAAE,EAAE,CACxC,sBAAsB,CAClB,OAAO,EACP,KAAK,EACL,gBAAgB,EAChB,aAAa,CAChB,CACJ,CAAC;IACN,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IACxD,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IAEpD,IAAI,aAAa,KAAK,gBAAgB,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IAErD,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC/B,sBAAsB,CAClB,OAAO,EACP,QAAQ,EACR,gBAAgB,EAChB,aAAa,CAChB,CACJ,CAAC;AACN,CAAC,CAAC"}
@@ -1,4 +1,8 @@
1
- import type { TSESTree } from "@typescript-eslint/utils";
1
+ /**
2
+ * @packageDocumentation
3
+ * Conservative safety checks for autofixes that introduce type predicates.
4
+ */
5
+ import { type TSESTree } from "@typescript-eslint/utils";
2
6
  /**
3
7
  * Determine whether a call-expression replacement to a type-predicate helper is
4
8
  * safe to apply as an autofix.
@@ -1 +1 @@
1
- {"version":3,"file":"type-predicate-autofix-safety.d.ts","sourceRoot":"","sources":["../../src/_internal/type-predicate-autofix-safety.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AA4DzD;;;;;;;;GAQG;AACH,eAAO,MAAM,oCAAoC,GAC7C,MAAM,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,KACpC,OAiBF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B,GACnC,MAAM,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,KACxC,OAAqD,CAAC"}
1
+ {"version":3,"file":"type-predicate-autofix-safety.d.ts","sourceRoot":"","sources":["../../src/_internal/type-predicate-autofix-safety.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAwDzE;;;;;;;;GAQG;AACH,eAAO,MAAM,oCAAoC,GAC7C,MAAM,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,KACpC,OAgBF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B,GACnC,MAAM,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,KACxC,OAAqD,CAAC"}
@@ -3,6 +3,7 @@
3
3
  * Conservative safety checks for autofixes that introduce type predicates.
4
4
  */
5
5
  import { AST_NODE_TYPES } from "@typescript-eslint/utils";
6
+ import { isDefined } from "ts-extras";
6
7
  import { getParentNode } from "./ast-node.js";
7
8
  import { isTransparentExpressionWrapper } from "./value-rewrite-autofix-safety.js";
8
9
  const isLogicalExpressionOperand = (parentNode, currentNode) => parentNode.type === AST_NODE_TYPES.LogicalExpression &&
@@ -35,17 +36,15 @@ const isBooleanGuardContext = (parentNode, currentNode) => isUnaryNotArgument(pa
35
36
  */
36
37
  export const isTypePredicateExpressionAutofixSafe = (node) => {
37
38
  let currentNode = node;
38
- while (true) {
39
- const parentNode = getParentNode(currentNode);
40
- if (parentNode === undefined) {
41
- return true;
42
- }
43
- if (isTransparentExpressionWrapper(parentNode, currentNode)) {
44
- currentNode = parentNode;
45
- continue;
46
- }
47
- return !isBooleanGuardContext(parentNode, currentNode);
39
+ let parentNode = getParentNode(currentNode);
40
+ while (isDefined(parentNode) &&
41
+ isTransparentExpressionWrapper(parentNode, currentNode)) {
42
+ currentNode = parentNode;
43
+ parentNode = getParentNode(currentNode);
48
44
  }
45
+ return isDefined(parentNode)
46
+ ? !isBooleanGuardContext(parentNode, currentNode)
47
+ : true;
49
48
  };
50
49
  /**
51
50
  * Backward-compatible alias for call-expression-based callers.
@@ -1 +1 @@
1
- {"version":3,"file":"type-predicate-autofix-safety.js","sourceRoot":"","sources":["../../src/_internal/type-predicate-autofix-safety.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AAEnF,MAAM,0BAA0B,GAAG,CAC/B,UAAmC,EACnC,WAAoC,EAC7B,EAAE,CACT,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,iBAAiB;IACpD,CAAC,UAAU,CAAC,IAAI,KAAK,WAAW,IAAI,UAAU,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC;AAE1E,MAAM,iBAAiB,GAAG,CACtB,UAAmC,EACnC,WAAoC,EAC7B,EAAE,CACT,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,qBAAqB;IACxD,UAAU,CAAC,IAAI,KAAK,WAAW,CAAC;AAEpC,MAAM,cAAc,GAAG,CACnB,UAAmC,EACnC,WAAoC,EAC7B,EAAE,CACT,CAAC,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,gBAAgB;IAChD,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,YAAY;IAC/C,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW;IAC9C,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,cAAc,CAAC;IACtD,UAAU,CAAC,IAAI,KAAK,WAAW,CAAC;AAEpC,MAAM,gBAAgB,GAAG,CACrB,UAAmC,EACnC,WAAoC,EAC7B,EAAE,CACT,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU;IAC7C,UAAU,CAAC,IAAI,KAAK,WAAW,CAAC;AAEpC,MAAM,kBAAkB,GAAG,CACvB,UAAmC,EACnC,WAAoC,EAC7B,EAAE,CACT,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,eAAe;IAClD,UAAU,CAAC,QAAQ,KAAK,GAAG;IAC3B,UAAU,CAAC,QAAQ,KAAK,WAAW,CAAC;AAExC,MAAM,qBAAqB,GAAG,CAC1B,UAAmC,EACnC,WAAoC,EAC7B,EAAE,CACT,kBAAkB,CAAC,UAAU,EAAE,WAAW,CAAC;IAC3C,0BAA0B,CAAC,UAAU,EAAE,WAAW,CAAC;IACnD,iBAAiB,CAAC,UAAU,EAAE,WAAW,CAAC;IAC1C,cAAc,CAAC,UAAU,EAAE,WAAW,CAAC;IACvC,gBAAgB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAE9C;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAChD,IAAmC,EAC5B,EAAE;IACT,IAAI,WAAW,GAA4B,IAAI,CAAC;IAEhD,OAAO,IAAI,EAAE,CAAC;QACV,MAAM,UAAU,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;QAE9C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,8BAA8B,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC;YAC1D,WAAW,GAAG,UAAU,CAAC;YACzB,SAAS;QACb,CAAC;QAED,OAAO,CAAC,qBAAqB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAC3D,CAAC;AACL,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACtC,IAAuC,EAChC,EAAE,CAAC,oCAAoC,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"type-predicate-autofix-safety.js","sourceRoot":"","sources":["../../src/_internal/type-predicate-autofix-safety.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,cAAc,EAAiB,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AAGnF,MAAM,0BAA0B,GAAG,CAC/B,UAAmC,EACnC,WAAoC,EAC7B,EAAE,CACT,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,iBAAiB;IACpD,CAAC,UAAU,CAAC,IAAI,KAAK,WAAW,IAAI,UAAU,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC;AAE1E,MAAM,iBAAiB,GAAG,CACtB,UAAmC,EACnC,WAAoC,EAC7B,EAAE,CACT,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,qBAAqB;IACxD,UAAU,CAAC,IAAI,KAAK,WAAW,CAAC;AAEpC,MAAM,cAAc,GAAG,CACnB,UAAmC,EACnC,WAAoC,EAC7B,EAAE,CACT,CAAC,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,gBAAgB;IAChD,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,YAAY;IAC/C,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW;IAC9C,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,cAAc,CAAC;IACtD,UAAU,CAAC,IAAI,KAAK,WAAW,CAAC;AAEpC,MAAM,gBAAgB,GAAG,CACrB,UAAmC,EACnC,WAAoC,EAC7B,EAAE,CACT,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU;IAC7C,UAAU,CAAC,IAAI,KAAK,WAAW,CAAC;AAEpC,MAAM,kBAAkB,GAAG,CACvB,UAAmC,EACnC,WAAoC,EAC7B,EAAE,CACT,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,eAAe;IAClD,UAAU,CAAC,QAAQ,KAAK,GAAG;IAC3B,UAAU,CAAC,QAAQ,KAAK,WAAW,CAAC;AAExC,MAAM,qBAAqB,GAAG,CAC1B,UAAmC,EACnC,WAAoC,EAC7B,EAAE,CACT,kBAAkB,CAAC,UAAU,EAAE,WAAW,CAAC;IAC3C,0BAA0B,CAAC,UAAU,EAAE,WAAW,CAAC;IACnD,iBAAiB,CAAC,UAAU,EAAE,WAAW,CAAC;IAC1C,cAAc,CAAC,UAAU,EAAE,WAAW,CAAC;IACvC,gBAAgB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAE9C;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAChD,IAAmC,EAC5B,EAAE;IACT,IAAI,WAAW,GAA4B,IAAI,CAAC;IAEhD,IAAI,UAAU,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAE5C,OACI,SAAS,CAAC,UAAU,CAAC;QACrB,8BAA8B,CAAC,UAAU,EAAE,WAAW,CAAC,EACzD,CAAC;QACC,WAAW,GAAG,UAAU,CAAC;QACzB,UAAU,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,SAAS,CAAC,UAAU,CAAC;QACxB,CAAC,CAAC,CAAC,qBAAqB,CAAC,UAAU,EAAE,WAAW,CAAC;QACjD,CAAC,CAAC,IAAI,CAAC;AACf,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACtC,IAAuC,EAChC,EAAE,CAAC,oCAAoC,CAAC,IAAI,CAAC,CAAC"}
@@ -1,17 +1,19 @@
1
- import type { TSESTree } from "@typescript-eslint/utils";
1
+ /**
2
+ * @packageDocumentation
3
+ * Predicate helpers for narrowing `TSTypeReference` nodes by identifier name.
4
+ */
5
+ import { type TSESTree } from "@typescript-eslint/utils";
2
6
  /**
3
7
  * Checks whether a type node is an identifier-based type reference with a
4
8
  * specific symbol name.
5
9
  *
6
10
  * @param node - Type node candidate.
7
- * @param identifierName - Expected referenced identifier name.
11
+ * @param expectedIdentifierName - Expected referenced identifier name.
8
12
  *
9
13
  * @returns `true` when the node is `TSTypeReference` and the referenced
10
14
  * `typeName` identifier matches exactly.
11
15
  */
12
- export declare const isIdentifierTypeReference: (node: Readonly<TSESTree.TypeNode>, identifierName: string) => node is TSESTree.TSTypeReference & {
13
- typeName: TSESTree.Identifier;
14
- };
16
+ export declare const isIdentifierTypeReference: (node: Readonly<TSESTree.TypeNode>, expectedIdentifierName: string) => node is TSESTree.TSTypeReference;
15
17
  /**
16
18
  * Unwrap transparent parenthesized type nodes.
17
19
  *
@@ -1 +1 @@
1
- {"version":3,"file":"type-reference-node.d.ts","sourceRoot":"","sources":["../../src/_internal/type-reference-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAezD;;;;;;;;;GASG;AACH,eAAO,MAAM,yBAAyB,GAClC,MAAM,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EACjC,gBAAgB,MAAM,KACvB,IAAI,IAAI,QAAQ,CAAC,eAAe,GAAG;IAAE,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAA;CAG5B,CAAC;AAE1C;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,GACpC,MAAM,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAClC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAa5B,CAAC"}
1
+ {"version":3,"file":"type-reference-node.d.ts","sourceRoot":"","sources":["../../src/_internal/type-reference-node.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AASzE;;;;;;;;;GASG;AACH,eAAO,MAAM,yBAAyB,GAClC,MAAM,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EACjC,wBAAwB,MAAM,KAC/B,IAAI,IAAI,QAAQ,CAAC,eAG6B,CAAC;AAElD;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,GACpC,MAAM,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAClC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAa5B,CAAC"}
@@ -12,14 +12,14 @@ const isTypeNodeLike = (value) => typeof value === "object" &&
12
12
  * specific symbol name.
13
13
  *
14
14
  * @param node - Type node candidate.
15
- * @param identifierName - Expected referenced identifier name.
15
+ * @param expectedIdentifierName - Expected referenced identifier name.
16
16
  *
17
17
  * @returns `true` when the node is `TSTypeReference` and the referenced
18
18
  * `typeName` identifier matches exactly.
19
19
  */
20
- export const isIdentifierTypeReference = (node, identifierName) => node.type === AST_NODE_TYPES.TSTypeReference &&
20
+ export const isIdentifierTypeReference = (node, expectedIdentifierName) => node.type === AST_NODE_TYPES.TSTypeReference &&
21
21
  node.typeName.type === AST_NODE_TYPES.Identifier &&
22
- node.typeName.name === identifierName;
22
+ node.typeName.name === expectedIdentifierName;
23
23
  /**
24
24
  * Unwrap transparent parenthesized type nodes.
25
25
  *
@@ -33,9 +33,9 @@ export const unwrapParenthesizedTypeNode = (node) => {
33
33
  if (nodeType !== TS_PARENTHESIZED_TYPE) {
34
34
  return node;
35
35
  }
36
- const typeAnnotation = Reflect.get(nodeObject, "typeAnnotation");
37
- return isTypeNodeLike(typeAnnotation)
38
- ? unwrapParenthesizedTypeNode(typeAnnotation)
36
+ const annotation = Reflect.get(nodeObject, "typeAnnotation");
37
+ return isTypeNodeLike(annotation)
38
+ ? unwrapParenthesizedTypeNode(annotation)
39
39
  : node;
40
40
  };
41
41
  //# sourceMappingURL=type-reference-node.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"type-reference-node.js","sourceRoot":"","sources":["../../src/_internal/type-reference-node.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,MAAM,qBAAqB,GAAG,qBAAqB,CAAC;AAEpD,MAAM,cAAc,GAAG,CAAC,KAAc,EAAwC,EAAE,CAC5E,OAAO,KAAK,KAAK,QAAQ;IACzB,KAAK,KAAK,IAAI;IACd,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,QAAQ,CAAC;AAEnD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACrC,IAAiC,EACjC,cAAsB,EAC8C,EAAE,CACtE,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,eAAe;IAC5C,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU;IAChD,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,cAAc,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACvC,IAAiC,EACN,EAAE;IAC7B,MAAM,UAAU,GAAW,IAAI,CAAC;IAChC,MAAM,QAAQ,GAAY,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAE1D,IAAI,QAAQ,KAAK,qBAAqB,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,cAAc,GAAY,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;IAE1E,OAAO,cAAc,CAAC,cAAc,CAAC;QACjC,CAAC,CAAC,2BAA2B,CAAC,cAAc,CAAC;QAC7C,CAAC,CAAC,IAAI,CAAC;AACf,CAAC,CAAC"}
1
+ {"version":3,"file":"type-reference-node.js","sourceRoot":"","sources":["../../src/_internal/type-reference-node.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,cAAc,EAAiB,MAAM,0BAA0B,CAAC;AAEzE,MAAM,qBAAqB,GAAG,qBAAqB,CAAC;AAEpD,MAAM,cAAc,GAAG,CAAC,KAAc,EAAwC,EAAE,CAC5E,OAAO,KAAK,KAAK,QAAQ;IACzB,KAAK,KAAK,IAAI;IACd,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,QAAQ,CAAC;AAEnD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACrC,IAAiC,EACjC,sBAA8B,EACE,EAAE,CAClC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,eAAe;IAC5C,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU;IAChD,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,sBAAsB,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACvC,IAAiC,EACN,EAAE;IAC7B,MAAM,UAAU,GAAW,IAAI,CAAC;IAChC,MAAM,QAAQ,GAAY,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAE1D,IAAI,QAAQ,KAAK,qBAAqB,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,UAAU,GAAY,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;IAEtE,OAAO,cAAc,CAAC,UAAU,CAAC;QAC7B,CAAC,CAAC,2BAA2B,CAAC,UAAU,CAAC;QACzC,CAAC,CAAC,IAAI,CAAC;AACf,CAAC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { UnknownArray } from "type-fest";
1
2
  /**
2
3
  * @packageDocumentation
3
4
  * Internal shared utilities used by eslint-plugin-runtime-cleanup rule modules
@@ -30,7 +31,7 @@ interface RuntimeCleanupRuleDocs {
30
31
  runtimeCleanupConfigs?: readonly RuntimeCleanupConfigReference[] | RuntimeCleanupConfigReference;
31
32
  }
32
33
  /** Shared typed-rule context contract used by helper utilities. */
33
- type TypedRuleContext = Readonly<TSESLint.RuleContext<string, readonly unknown[]>>;
34
+ type TypedRuleContext = Readonly<TSESLint.RuleContext<string, Readonly<UnknownArray>>>;
34
35
  export type { TypedRuleContext };
35
36
  /**
36
37
  * Rule-creator wrapper used by plugin rules.
@@ -1 +1 @@
1
- {"version":3,"file":"typed-rule.d.ts","sourceRoot":"","sources":["../../src/_internal/typed-rule.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,WAAW,EAAE,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,wCAAwC,CAAC;AAO5F;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC;IACxB,cAAc,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,iBAAiB,CAAC,CAAC;CACpE;AAED,KAAK,yBAAyB,GAAG,UAAU,CACvC,OAAO,WAAW,CAAC,WAAW,CAAC,sBAAsB,CAAC,CACzD,CAAC;AAEF;;;;;;;GAOG;AACH,UAAU,sBAAsB;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qBAAqB,CAAC,EAChB,SAAS,6BAA6B,EAAE,GACxC,6BAA6B,CAAC;CACvC;AAED,mEAAmE;AACnE,KAAK,gBAAgB,GAAG,QAAQ,CAC5B,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,CAAC,CACnD,CAAC;AAEF,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAEjC;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,eAAe,EAAE,yBAyD7B,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,GAC7B,SAAS,gBAAgB,KAC1B,iBAcF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,SAAS,gBAAgB,KAAG,OAS3D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,+BAA+B,GACxC,SAAS,gBAAgB,KAC1B,iBAAiB,GAAG,SACiD,CAAC;AAEzE;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,GACpC,SAAS,QAAQ,CAAC;IACd,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC;IAClB,SAAS,EAAE,IAAI,GAAG,EAAE,CAAC,SAAS,GAAG,SAAS,CAAC;CAC9C,CAAC,KACH,EAAE,CAAC,IAAI,GAAG,SASZ,CAAC"}
1
+ {"version":3,"file":"typed-rule.d.ts","sourceRoot":"","sources":["../../src/_internal/typed-rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C;;;;GAIG;AACH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,WAAW,EAAE,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGtE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,wCAAwC,CAAC;AAO5F;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC;IACxB,cAAc,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,iBAAiB,CAAC,CAAC;CACpE;AAED,KAAK,yBAAyB,GAAG,UAAU,CACvC,OAAO,WAAW,CAAC,WAAW,CAAC,sBAAsB,CAAC,CACzD,CAAC;AAEF;;;;;;;GAOG;AACH,UAAU,sBAAsB;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qBAAqB,CAAC,EAChB,SAAS,6BAA6B,EAAE,GACxC,6BAA6B,CAAC;CACvC;AAED,mEAAmE;AACnE,KAAK,gBAAgB,GAAG,QAAQ,CAC5B,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CACvD,CAAC;AAEF,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAEjC;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,eAAe,EAAE,yBAyD7B,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,GAC7B,SAAS,gBAAgB,KAC1B,iBAcF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,SAAS,gBAAgB,KAAG,OAS3D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,+BAA+B,GACxC,SAAS,gBAAgB,KAC1B,iBAAiB,GAAG,SACiD,CAAC;AAEzE;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,GACpC,SAAS,QAAQ,CAAC;IACd,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC;IAClB,SAAS,EAAE,IAAI,GAAG,EAAE,CAAC,SAAS,GAAG,SAAS,CAAC;CAC9C,CAAC,KACH,EAAE,CAAC,IAAI,GAAG,SASZ,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { ESLintUtils } from "@typescript-eslint/utils";
2
+ import { isDefined } from "ts-extras";
2
3
  import { registerProgramSettingsForContext } from "./plugin-settings.js";
3
4
  import { getRuleCatalogEntryForRuleNameOrNull } from "./rule-catalog.js";
4
5
  import { createRuleDocsUrl } from "./rule-docs-url.js";
@@ -21,7 +22,7 @@ export const createTypedRule = (ruleDefinition) => {
21
22
  const catalogEntry = getRuleCatalogEntryForRuleNameOrNull(ruleDefinition.name);
22
23
  const createdRule = ESLintUtils.RuleCreator.withoutDocs(ruleDefinition);
23
24
  const ruleDocs = createdRule.meta.docs;
24
- if (ruleDocs === undefined) {
25
+ if (!isDefined(ruleDocs)) {
25
26
  throw new TypeError(`Rule '${ruleDefinition.name}' must declare meta.docs.`);
26
27
  }
27
28
  const canonicalDocsUrl = createRuleDocsUrl(ruleDefinition.name);
@@ -51,9 +52,9 @@ export const createTypedRule = (ruleDefinition) => {
51
52
  },
52
53
  meta: {
53
54
  ...createdRule.meta,
54
- ...(metaDefaultOptions === undefined
55
- ? {}
56
- : { defaultOptions: metaDefaultOptions }),
55
+ ...(isDefined(metaDefaultOptions)
56
+ ? { defaultOptions: metaDefaultOptions }
57
+ : {}),
57
58
  docs: docsWithCatalog,
58
59
  },
59
60
  name: ruleDefinition.name,
@@ -113,7 +114,7 @@ export const getTypedRuleServicesOrUndefined = (context) => hasTypeServices(cont
113
114
  export const getSignatureParameterTypeAt = (options) => {
114
115
  const { checker, index, location, signature } = options;
115
116
  const symbol = signature?.parameters[index];
116
- if (symbol === undefined) {
117
+ if (!isDefined(symbol)) {
117
118
  return undefined;
118
119
  }
119
120
  return checker.getTypeOfSymbolAtLocation(symbol, location);
@@ -1 +1 @@
1
- {"version":3,"file":"typed-rule.js","sourceRoot":"","sources":["../../src/_internal/typed-rule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"typed-rule.js","sourceRoot":"","sources":["../../src/_internal/typed-rule.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,8 @@
1
- import type { TSESTree } from "@typescript-eslint/utils";
1
+ /**
2
+ * @packageDocumentation
3
+ * Shared safety checks for value-expression autofixes.
4
+ */
5
+ import { type TSESTree } from "@typescript-eslint/utils";
2
6
  /**
3
7
  * Check whether a parent node is a transparent expression wrapper for `child`.
4
8
  */
@@ -1 +1 @@
1
- {"version":3,"file":"value-rewrite-autofix-safety.d.ts","sourceRoot":"","sources":["../../src/_internal/value-rewrite-autofix-safety.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAUzD;;GAEG;AACH,eAAO,MAAM,8BAA8B,GACvC,QAAQ,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC/B,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAC/B,OAsBF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,GAClC,MAAM,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,KACpC,OAGmB,CAAC;AAEvB;;GAEG;AACH,eAAO,MAAM,oCAAoC,GAC7C,MAAM,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,KACpC,OA+BF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,2BAA2B,GACpC,MAAM,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAC1C,OAUF,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,+BAA+B,GACxC,MAAM,QAAQ,CAAC,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,iBAAiB,CAAC,KACjE,IAAI,IAAI,QAAQ,CAAC,UAmCnB,CAAC"}
1
+ {"version":3,"file":"value-rewrite-autofix-safety.d.ts","sourceRoot":"","sources":["../../src/_internal/value-rewrite-autofix-safety.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAMzE;;GAEG;AACH,eAAO,MAAM,8BAA8B,GACvC,QAAQ,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC/B,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAC/B,OAsBF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,GAClC,MAAM,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,KACpC,OAGmB,CAAC;AAEvB;;GAEG;AACH,eAAO,MAAM,oCAAoC,GAC7C,MAAM,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,KACpC,OAmBF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,2BAA2B,GACpC,MAAM,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAC1C,OAUF,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,+BAA+B,GACxC,MAAM,QAAQ,CAAC,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,iBAAiB,CAAC,KACjE,IAAI,IAAI,QAAQ,CAAC,UAmCnB,CAAC"}
@@ -3,6 +3,7 @@
3
3
  * Shared safety checks for value-expression autofixes.
4
4
  */
5
5
  import { AST_NODE_TYPES } from "@typescript-eslint/utils";
6
+ import { isDefined } from "ts-extras";
6
7
  import { getParentNode } from "./ast-node.js";
7
8
  /**
8
9
  * Check whether a parent node is a transparent expression wrapper for `child`.
@@ -36,25 +37,16 @@ export const isOptionalChainExpression = (node) => node.type === AST_NODE_TYPES.
36
37
  */
37
38
  export const isDirectReturnLikeExpressionPosition = (node) => {
38
39
  let currentNode = node;
39
- while (true) {
40
- const parentNode = getParentNode(currentNode);
41
- if (parentNode === undefined) {
42
- return false;
43
- }
44
- if (isTransparentExpressionWrapper(parentNode, currentNode)) {
45
- currentNode = parentNode;
46
- continue;
47
- }
48
- if (parentNode.type === AST_NODE_TYPES.ReturnStatement &&
49
- parentNode.argument === currentNode) {
50
- return true;
51
- }
52
- if (parentNode.type === AST_NODE_TYPES.ArrowFunctionExpression &&
53
- parentNode.body === currentNode) {
54
- return true;
55
- }
56
- return false;
40
+ let parentNode = getParentNode(currentNode);
41
+ while (isDefined(parentNode) &&
42
+ isTransparentExpressionWrapper(parentNode, currentNode)) {
43
+ currentNode = parentNode;
44
+ parentNode = getParentNode(currentNode);
57
45
  }
46
+ return ((parentNode?.type === AST_NODE_TYPES.ReturnStatement &&
47
+ parentNode.argument === currentNode) ||
48
+ (parentNode?.type === AST_NODE_TYPES.ArrowFunctionExpression &&
49
+ parentNode.body === currentNode));
58
50
  };
59
51
  /**
60
52
  * Guard array index-to-helper rewrites known to be type-sensitive.
@@ -1 +1 @@
1
- {"version":3,"file":"value-rewrite-autofix-safety.js","sourceRoot":"","sources":["../../src/_internal/value-rewrite-autofix-safety.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"value-rewrite-autofix-safety.js","sourceRoot":"","sources":["../../src/_internal/value-rewrite-autofix-safety.ts"],"names":[],"mappings":"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"}