eslint-plugin-runtime-cleanup 1.2.9 → 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 (143) hide show
  1. package/dist/_internal/ast-node.d.ts +5 -1
  2. package/dist/_internal/ast-node.d.ts.map +1 -1
  3. package/dist/_internal/ast-node.js +2 -1
  4. package/dist/_internal/ast-node.js.map +1 -1
  5. package/dist/_internal/bounded-cache.d.ts.map +1 -1
  6. package/dist/_internal/bounded-cache.js +2 -1
  7. package/dist/_internal/bounded-cache.js.map +1 -1
  8. package/dist/_internal/expression-boolean-memoizer.d.ts.map +1 -1
  9. package/dist/_internal/expression-boolean-memoizer.js +2 -1
  10. package/dist/_internal/expression-boolean-memoizer.js.map +1 -1
  11. package/dist/_internal/filter-callback.d.ts +5 -1
  12. package/dist/_internal/filter-callback.d.ts.map +1 -1
  13. package/dist/_internal/filter-callback.js +9 -10
  14. package/dist/_internal/filter-callback.js.map +1 -1
  15. package/dist/_internal/floating-resource.d.ts +8 -0
  16. package/dist/_internal/floating-resource.d.ts.map +1 -1
  17. package/dist/_internal/floating-resource.js +42 -36
  18. package/dist/_internal/floating-resource.js.map +1 -1
  19. package/dist/_internal/normalize-expression-text.d.ts +6 -1
  20. package/dist/_internal/normalize-expression-text.d.ts.map +1 -1
  21. package/dist/_internal/normalize-expression-text.js +30 -28
  22. package/dist/_internal/normalize-expression-text.js.map +1 -1
  23. package/dist/_internal/nullish-comparison.d.ts +1 -1
  24. package/dist/_internal/nullish-comparison.d.ts.map +1 -1
  25. package/dist/_internal/nullish-comparison.js +16 -11
  26. package/dist/_internal/nullish-comparison.js.map +1 -1
  27. package/dist/_internal/plugin-settings.d.ts +2 -1
  28. package/dist/_internal/plugin-settings.d.ts.map +1 -1
  29. package/dist/_internal/plugin-settings.js +3 -2
  30. package/dist/_internal/plugin-settings.js.map +1 -1
  31. package/dist/_internal/report-adapter.d.ts +5 -4
  32. package/dist/_internal/report-adapter.d.ts.map +1 -1
  33. package/dist/_internal/report-adapter.js +3 -2
  34. package/dist/_internal/report-adapter.js.map +1 -1
  35. package/dist/_internal/rule-catalog.d.ts.map +1 -1
  36. package/dist/_internal/rule-catalog.js +3 -2
  37. package/dist/_internal/rule-catalog.js.map +1 -1
  38. package/dist/_internal/rule-docs-metadata.d.ts +2 -1
  39. package/dist/_internal/rule-docs-metadata.d.ts.map +1 -1
  40. package/dist/_internal/rule-docs-metadata.js +36 -33
  41. package/dist/_internal/rule-docs-metadata.js.map +1 -1
  42. package/dist/_internal/rules-registry.d.ts +2 -1
  43. package/dist/_internal/rules-registry.d.ts.map +1 -1
  44. package/dist/_internal/rules-registry.js.map +1 -1
  45. package/dist/_internal/runtime-cleanup-config-references.d.ts +2 -1
  46. package/dist/_internal/runtime-cleanup-config-references.d.ts.map +1 -1
  47. package/dist/_internal/runtime-cleanup-config-references.js +2 -1
  48. package/dist/_internal/runtime-cleanup-config-references.js.map +1 -1
  49. package/dist/_internal/scope-variable.d.ts.map +1 -1
  50. package/dist/_internal/scope-variable.js +5 -4
  51. package/dist/_internal/scope-variable.js.map +1 -1
  52. package/dist/_internal/type-checker.d.ts +2 -2
  53. package/dist/_internal/type-checker.d.ts.map +1 -1
  54. package/dist/_internal/type-checker.js +10 -8
  55. package/dist/_internal/type-checker.js.map +1 -1
  56. package/dist/_internal/type-predicate-autofix-safety.d.ts +5 -1
  57. package/dist/_internal/type-predicate-autofix-safety.d.ts.map +1 -1
  58. package/dist/_internal/type-predicate-autofix-safety.js +9 -10
  59. package/dist/_internal/type-predicate-autofix-safety.js.map +1 -1
  60. package/dist/_internal/type-reference-node.d.ts +7 -5
  61. package/dist/_internal/type-reference-node.d.ts.map +1 -1
  62. package/dist/_internal/type-reference-node.js +6 -6
  63. package/dist/_internal/type-reference-node.js.map +1 -1
  64. package/dist/_internal/typed-rule.d.ts +2 -1
  65. package/dist/_internal/typed-rule.d.ts.map +1 -1
  66. package/dist/_internal/typed-rule.js +6 -5
  67. package/dist/_internal/typed-rule.js.map +1 -1
  68. package/dist/_internal/value-rewrite-autofix-safety.d.ts +5 -1
  69. package/dist/_internal/value-rewrite-autofix-safety.d.ts.map +1 -1
  70. package/dist/_internal/value-rewrite-autofix-safety.js +10 -18
  71. package/dist/_internal/value-rewrite-autofix-safety.js.map +1 -1
  72. package/dist/plugin.cjs +565 -656
  73. package/dist/plugin.cjs.map +4 -4
  74. package/dist/plugin.d.cts +2 -1
  75. package/dist/plugin.d.ts +2 -1
  76. package/dist/plugin.d.ts.map +1 -1
  77. package/dist/plugin.js +8 -7
  78. package/dist/plugin.js.map +1 -1
  79. package/dist/rules/no-floating-abort-controllers.d.ts.map +1 -1
  80. package/dist/rules/no-floating-abort-controllers.js +24 -52
  81. package/dist/rules/no-floating-abort-controllers.js.map +1 -1
  82. package/dist/rules/no-floating-audio-contexts.d.ts.map +1 -1
  83. package/dist/rules/no-floating-audio-contexts.js +7 -6
  84. package/dist/rules/no-floating-audio-contexts.js.map +1 -1
  85. package/dist/rules/no-floating-broadcast-channels.d.ts.map +1 -1
  86. package/dist/rules/no-floating-broadcast-channels.js +31 -59
  87. package/dist/rules/no-floating-broadcast-channels.js.map +1 -1
  88. package/dist/rules/no-floating-child-processes.d.ts.map +1 -1
  89. package/dist/rules/no-floating-child-processes.js +43 -45
  90. package/dist/rules/no-floating-child-processes.js.map +1 -1
  91. package/dist/rules/no-floating-disposable-stacks.d.ts.map +1 -1
  92. package/dist/rules/no-floating-disposable-stacks.js +37 -38
  93. package/dist/rules/no-floating-disposable-stacks.js.map +1 -1
  94. package/dist/rules/no-floating-file-watchers.d.ts.map +1 -1
  95. package/dist/rules/no-floating-file-watchers.js +40 -42
  96. package/dist/rules/no-floating-file-watchers.js.map +1 -1
  97. package/dist/rules/no-floating-geolocation-watches.js +20 -20
  98. package/dist/rules/no-floating-geolocation-watches.js.map +1 -1
  99. package/dist/rules/no-floating-infinite-animations.d.ts.map +1 -1
  100. package/dist/rules/no-floating-infinite-animations.js +4 -3
  101. package/dist/rules/no-floating-infinite-animations.js.map +1 -1
  102. package/dist/rules/no-floating-media-streams.d.ts.map +1 -1
  103. package/dist/rules/no-floating-media-streams.js +24 -24
  104. package/dist/rules/no-floating-media-streams.js.map +1 -1
  105. package/dist/rules/no-floating-message-channels.js +30 -30
  106. package/dist/rules/no-floating-message-channels.js.map +1 -1
  107. package/dist/rules/no-floating-network-connections.d.ts.map +1 -1
  108. package/dist/rules/no-floating-network-connections.js +36 -36
  109. package/dist/rules/no-floating-network-connections.js.map +1 -1
  110. package/dist/rules/no-floating-object-urls.d.ts.map +1 -1
  111. package/dist/rules/no-floating-object-urls.js +4 -3
  112. package/dist/rules/no-floating-object-urls.js.map +1 -1
  113. package/dist/rules/no-floating-observers.d.ts.map +1 -1
  114. package/dist/rules/no-floating-observers.js +33 -34
  115. package/dist/rules/no-floating-observers.js.map +1 -1
  116. package/dist/rules/no-floating-servers.d.ts.map +1 -1
  117. package/dist/rules/no-floating-servers.js +50 -52
  118. package/dist/rules/no-floating-servers.js.map +1 -1
  119. package/dist/rules/no-floating-streams.d.ts.map +1 -1
  120. package/dist/rules/no-floating-streams.js +28 -29
  121. package/dist/rules/no-floating-streams.js.map +1 -1
  122. package/dist/rules/no-floating-timers.d.ts.map +1 -1
  123. package/dist/rules/no-floating-timers.js +7 -47
  124. package/dist/rules/no-floating-timers.js.map +1 -1
  125. package/dist/rules/no-floating-wake-locks.js +20 -20
  126. package/dist/rules/no-floating-wake-locks.js.map +1 -1
  127. package/dist/rules/no-floating-web-stream-locks.d.ts.map +1 -1
  128. package/dist/rules/no-floating-web-stream-locks.js +4 -3
  129. package/dist/rules/no-floating-web-stream-locks.js.map +1 -1
  130. package/dist/rules/no-floating-workers.d.ts.map +1 -1
  131. package/dist/rules/no-floating-workers.js +39 -40
  132. package/dist/rules/no-floating-workers.js.map +1 -1
  133. package/dist/rules/no-unmanaged-event-listeners.d.ts.map +1 -1
  134. package/dist/rules/no-unmanaged-event-listeners.js +23 -23
  135. package/dist/rules/no-unmanaged-event-listeners.js.map +1 -1
  136. package/docs/rules/no-floating-audio-contexts.md +1 -2
  137. package/docs/rules/no-floating-media-streams.md +1 -1
  138. package/docs/rules/no-floating-object-urls.md +3 -3
  139. package/docs/rules/no-floating-observers.md +1 -1
  140. package/docs/rules/no-floating-servers.md +1 -1
  141. package/docs/rules/no-floating-wake-locks.md +1 -1
  142. package/docs/rules/no-floating-web-stream-locks.md +1 -2
  143. package/package.json +7 -4
@@ -1,4 +1,8 @@
1
- import type { TSESTree } from "@typescript-eslint/utils";
1
+ /**
2
+ * @packageDocumentation
3
+ * AST parent-chain traversal helpers used by multiple rule utilities.
4
+ */
5
+ import { type TSESTree } from "@typescript-eslint/utils";
2
6
  /**
3
7
  * Gets a node's parent reference when available.
4
8
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ast-node.d.ts","sourceRoot":"","sources":["../../src/_internal/ast-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAwBzD;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GACtB,MAAM,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAC9B,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,SACgC,CAAC;AAE9D;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GACvB,MAAM,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAC9B,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAqBlC,CAAC"}
1
+ {"version":3,"file":"ast-node.d.ts","sourceRoot":"","sources":["../../src/_internal/ast-node.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAmBzE;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GACtB,MAAM,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAC9B,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,SACgC,CAAC;AAE9D;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GACvB,MAAM,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAC9B,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAqBlC,CAAC"}
@@ -3,11 +3,12 @@
3
3
  * AST parent-chain traversal helpers used by multiple rule utilities.
4
4
  */
5
5
  import { AST_NODE_TYPES } from "@typescript-eslint/utils";
6
+ import { keyIn } from "ts-extras";
6
7
  import { resolveFirstValueInLinkedStructure } from "./cycle-safe-linked-search.js";
7
8
  /**
8
9
  * Determine whether a node exposes an optional `parent` property.
9
10
  */
10
- const hasOptionalParentProperty = (node) => "parent" in node;
11
+ const hasOptionalParentProperty = (node) => keyIn(node, "parent");
11
12
  /**
12
13
  * Gets a node's parent reference when available.
13
14
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ast-node.js","sourceRoot":"","sources":["../../src/_internal/ast-node.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,kCAAkC,EAAE,MAAM,+BAA+B,CAAC;AASnF;;GAEG;AACH,MAAM,yBAAyB,GAAG,CAC9B,IAA6B,EACC,EAAE,CAAC,QAAQ,IAAI,IAAI,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CACzB,IAA6B,EACM,EAAE,CACrC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAE9D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC1B,IAA6B,EACI,EAAE;IACnC,MAAM,YAAY,GAAG,kCAAkC,CAGrD;QACE,WAAW,EAAE,CACT,WAAoC,EACN,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,IAAI;QACvE,YAAY,EAAE,CAAC,WAAoC,EAAE,EAAE,CACnD,WAAW,CAAC,IAAI,KAAK,cAAc,CAAC,OAAO;YACvC,CAAC,CAAC;gBACI,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,WAAW;aACrB;YACH,CAAC,CAAC;gBACI,KAAK,EAAE,KAAK;aACf;QACX,SAAS,EAAE,IAAI;KAClB,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":"ast-node.js","sourceRoot":"","sources":["../../src/_internal/ast-node.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,cAAc,EAAiB,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,kCAAkC,EAAE,MAAM,+BAA+B,CAAC;AASnF;;GAEG;AACH,MAAM,yBAAyB,GAAG,CAC9B,IAA6B,EACC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CACzB,IAA6B,EACM,EAAE,CACrC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAE9D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC1B,IAA6B,EACI,EAAE;IACnC,MAAM,YAAY,GAAG,kCAAkC,CAGrD;QACE,WAAW,EAAE,CACT,WAAoC,EACN,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,IAAI;QACvE,YAAY,EAAE,CAAC,WAAoC,EAAE,EAAE,CACnD,WAAW,CAAC,IAAI,KAAK,cAAc,CAAC,OAAO;YACvC,CAAC,CAAC;gBACI,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,WAAW;aACrB;YACH,CAAC,CAAC;gBACI,KAAK,EAAE,KAAK;aACf;QACX,SAAS,EAAE,IAAI;KAClB,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1D,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"bounded-cache.d.ts","sourceRoot":"","sources":["../../src/_internal/bounded-cache.ts"],"names":[],"mappings":"AAaA;;GAEG;AACH,MAAM,MAAM,wBAAwB,CAAC,KAAK,IACpC,QAAQ,CAAC;IACL,KAAK,EAAE,KAAK,CAAC;CAChB,CAAC,GACF,QAAQ,CAAC;IACL,KAAK,EAAE,IAAI,CAAC;IACZ,KAAK,EAAE,KAAK,CAAC;CAChB,CAAC,CAAC;AAET;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,GAAI,GAAG,EAAE,KAAK,EAC3C,OAAO,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,EACtB,KAAK,GAAG,KACT,wBAAwB,CAAC,KAAK,CAgBhC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,GAAI,GAAG,EAAE,KAAK,EAAE,oCAK9C,QAAQ,CAAC;IACR,KAAK,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACvB,GAAG,EAAE,GAAG,CAAC;IACT,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;CAChB,CAAC,KAAG,IAoBJ,CAAC"}
1
+ {"version":3,"file":"bounded-cache.d.ts","sourceRoot":"","sources":["../../src/_internal/bounded-cache.ts"],"names":[],"mappings":"AAeA;;GAEG;AACH,MAAM,MAAM,wBAAwB,CAAC,KAAK,IACpC,QAAQ,CAAC;IACL,KAAK,EAAE,KAAK,CAAC;CAChB,CAAC,GACF,QAAQ,CAAC;IACL,KAAK,EAAE,IAAI,CAAC;IACZ,KAAK,EAAE,KAAK,CAAC;CAChB,CAAC,CAAC;AAET;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,GAAI,GAAG,EAAE,KAAK,EAC3C,OAAO,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,EACtB,KAAK,GAAG,KACT,wBAAwB,CAAC,KAAK,CAgBhC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,GAAI,GAAG,EAAE,KAAK,EAAE,oCAK9C,QAAQ,CAAC;IACR,KAAK,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACvB,GAAG,EAAE,GAAG,CAAC;IACT,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;CAChB,CAAC,KAAG,IAoBJ,CAAC"}
@@ -4,6 +4,7 @@
4
4
  *
5
5
  * @packageDocumentation
6
6
  */
7
+ import { isSafeInteger } from "ts-extras";
7
8
  const isSameValueZero = (left, right) => left === right ||
8
9
  (typeof left === "number" &&
9
10
  typeof right === "number" &&
@@ -45,7 +46,7 @@ export const getBoundedCacheValue = (cache, key) => {
45
46
  * - `value`: Entry value.
46
47
  */
47
48
  export const setBoundedCacheValue = ({ cache, key, maxEntries, value, }) => {
48
- if (!Number.isSafeInteger(maxEntries) || maxEntries < 1) {
49
+ if (!isSafeInteger(maxEntries) || maxEntries < 1) {
49
50
  return;
50
51
  }
51
52
  if (cache.has(key)) {
@@ -1 +1 @@
1
- {"version":3,"file":"bounded-cache.js","sourceRoot":"","sources":["../../src/_internal/bounded-cache.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,eAAe,GAAG,CAAQ,IAAW,EAAE,KAAY,EAAW,EAAE,CAClE,IAAI,KAAK,KAAK;IACd,CAAC,OAAO,IAAI,KAAK,QAAQ;QACrB,OAAO,KAAK,KAAK,QAAQ;QACzB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;QAClB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAc7B;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAChC,KAAsB,EACtB,GAAQ,EACuB,EAAE;IACjC,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;QACpC,IAAI,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC;YACjC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAEtB,OAAO;gBACH,KAAK,EAAE,IAAI;gBACX,KAAK;aACR,CAAC;QACN,CAAC;IACL,CAAC;IAED,OAAO;QACH,KAAK,EAAE,KAAK;KACf,CAAC;AACN,CAAC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAa,EAC7C,KAAK,EACL,GAAG,EACH,UAAU,EACV,KAAK,GAMP,EAAQ,EAAE;IACR,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACtD,OAAO;IACX,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACjB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAEtB,OAAO,KAAK,CAAC,IAAI,GAAG,UAAU,EAAE,CAAC;QAC7B,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;QAExC,IAAI,WAAW,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC5B,OAAO;QACX,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;AACL,CAAC,CAAC"}
1
+ {"version":3,"file":"bounded-cache.js","sourceRoot":"","sources":["../../src/_internal/bounded-cache.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,eAAe,GAAG,CAAQ,IAAW,EAAE,KAAY,EAAW,EAAE,CAClE,IAAI,KAAK,KAAK;IACd,CAAC,OAAO,IAAI,KAAK,QAAQ;QACrB,OAAO,KAAK,KAAK,QAAQ;QACzB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;QAClB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAc7B;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAChC,KAAsB,EACtB,GAAQ,EACuB,EAAE;IACjC,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;QACpC,IAAI,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC;YACjC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAEtB,OAAO;gBACH,KAAK,EAAE,IAAI;gBACX,KAAK;aACR,CAAC;QACN,CAAC;IACL,CAAC;IAED,OAAO;QACH,KAAK,EAAE,KAAK;KACf,CAAC;AACN,CAAC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAa,EAC7C,KAAK,EACL,GAAG,EACH,UAAU,EACV,KAAK,GAMP,EAAQ,EAAE;IACR,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QAC/C,OAAO;IACX,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACjB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAEtB,OAAO,KAAK,CAAC,IAAI,GAAG,UAAU,EAAE,CAAC;QAC7B,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;QAExC,IAAI,WAAW,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC5B,OAAO;QACX,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;AACL,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"expression-boolean-memoizer.d.ts","sourceRoot":"","sources":["../../src/_internal/expression-boolean-memoizer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD;;;;;;;;GAQG;AACH,eAAO,MAAM,iCAAiC,GAC1C,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,OAAO,KACjE,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,OAAO,CAgBzD,CAAC"}
1
+ {"version":3,"file":"expression-boolean-memoizer.d.ts","sourceRoot":"","sources":["../../src/_internal/expression-boolean-memoizer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAIzD;;;;;;;;GAQG;AACH,eAAO,MAAM,iCAAiC,GAC1C,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,OAAO,KACjE,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,OAAO,CAgBzD,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { isDefined } from "ts-extras";
1
2
  /**
2
3
  * Memoize a boolean expression predicate using a `WeakMap` keyed by expression
3
4
  * node identity.
@@ -11,7 +12,7 @@ export const memoizeExpressionBooleanPredicate = (evaluate) => {
11
12
  const cache = new WeakMap();
12
13
  return (expression) => {
13
14
  const cachedResult = cache.get(expression);
14
- if (cachedResult !== undefined) {
15
+ if (isDefined(cachedResult)) {
15
16
  return cachedResult;
16
17
  }
17
18
  const result = evaluate(expression);
@@ -1 +1 @@
1
- {"version":3,"file":"expression-boolean-memoizer.js","sourceRoot":"","sources":["../../src/_internal/expression-boolean-memoizer.ts"],"names":[],"mappings":"AAOA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAC7C,QAAgE,EACR,EAAE;IAC1D,MAAM,KAAK,GAAG,IAAI,OAAO,EAA0C,CAAC;IAEpE,OAAO,CAAC,UAAU,EAAE,EAAE;QAClB,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE3C,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,YAAY,CAAC;QACxB,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;QAEpC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAE9B,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;AACN,CAAC,CAAC"}
1
+ {"version":3,"file":"expression-boolean-memoizer.js","sourceRoot":"","sources":["../../src/_internal/expression-boolean-memoizer.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAC7C,QAAgE,EACR,EAAE;IAC1D,MAAM,KAAK,GAAG,IAAI,OAAO,EAA0C,CAAC;IAEpE,OAAO,CAAC,UAAU,EAAE,EAAE;QAClB,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE3C,IAAI,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;YAC1B,OAAO,YAAY,CAAC;QACxB,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;QAEpC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAE9B,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;AACN,CAAC,CAAC"}
@@ -1,4 +1,8 @@
1
- import type { TSESTree } from "@typescript-eslint/utils";
1
+ /**
2
+ * @packageDocumentation
3
+ * Utilities for detecting nodes that live inside `.filter(...)` callbacks.
4
+ */
5
+ import { type TSESTree } from "@typescript-eslint/utils";
2
6
  /**
3
7
  * Narrows call expressions to direct `.filter(...)` calls.
4
8
  */
@@ -1 +1 @@
1
- {"version":3,"file":"filter-callback.d.ts","sourceRoot":"","sources":["../../src/_internal/filter-callback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAsBzD;;GAEG;AACH,eAAO,MAAM,sBAAsB,GAC/B,YAAY,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,KAC9C,UAAU,IAAI,QAAQ,CAAC,cAAc,GAAG;IACvC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,GAAG;QAChC,QAAQ,EAAE,KAAK,CAAC;QAChB,QAAQ,EAAE,KAAK,CAAC;QAChB,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC;KACjC,CAAC;IACF,QAAQ,EAAE,KAAK,CAAC;CAOsC,CAAC;AAE3D;;;;;;;;GAQG;AACH,eAAO,MAAM,iCAAiC,GAC1C,YAAY,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,KAC9C,IAAI,GAAG,QAAQ,CACd,QAAQ,CAAC,uBAAuB,GAAG,QAAQ,CAAC,kBAAkB,CAgBjE,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,iDAAiD,GAAG,QAAQ,CAAC;IACrE,QAAQ,EAAE,QAAQ,CAAC,uBAAuB,GAAG;QACzC,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC;QAC1B,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;KACjC,CAAC;IACF,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC;CAClC,CAAC,CAAC;AAqBH;;;;;;GAMG;AACH,eAAO,MAAM,+CAA+C,GACxD,YAAY,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,KAC9C,IAAI,GAAG,iDAgBT,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,GAC/B,MAAM,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAC9B,OAgCF,CAAC"}
1
+ {"version":3,"file":"filter-callback.d.ts","sourceRoot":"","sources":["../../src/_internal/filter-callback.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAiBzE;;GAEG;AACH,eAAO,MAAM,sBAAsB,GAC/B,YAAY,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,KAC9C,UAAU,IAAI,QAAQ,CAAC,cAAc,GAAG;IACvC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,GAAG;QAChC,QAAQ,EAAE,KAAK,CAAC;QAChB,QAAQ,EAAE,KAAK,CAAC;QAChB,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC;KACjC,CAAC;IACF,QAAQ,EAAE,KAAK,CAAC;CAOsC,CAAC;AAE3D;;;;;;;;GAQG;AACH,eAAO,MAAM,iCAAiC,GAC1C,YAAY,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,KAC9C,IAAI,GAAG,QAAQ,CACd,QAAQ,CAAC,uBAAuB,GAAG,QAAQ,CAAC,kBAAkB,CAgBjE,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,iDAAiD,GAAG,QAAQ,CAAC;IACrE,QAAQ,EAAE,QAAQ,CAAC,uBAAuB,GAAG;QACzC,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC;QAC1B,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;KACjC,CAAC;IACF,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC;CAClC,CAAC,CAAC;AAqBH;;;;;;GAMG;AACH,eAAO,MAAM,+CAA+C,GACxD,YAAY,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,KAC9C,IAAI,GAAG,iDAgBT,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,GAC/B,MAAM,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAC9B,OA6BF,CAAC"}
@@ -3,6 +3,7 @@
3
3
  * Utilities for detecting nodes that live inside `.filter(...)` callbacks.
4
4
  */
5
5
  import { AST_NODE_TYPES } from "@typescript-eslint/utils";
6
+ import { arrayAt, setHas } from "ts-extras";
6
7
  import { getParentNode } from "./ast-node.js";
7
8
  /** Target method name used for callback-context detection. */
8
9
  const FILTER_METHOD_NAME = "filter";
@@ -48,7 +49,7 @@ const isSingleParameterExpressionArrowFunction = (callback) => {
48
49
  if (callback.body.type === AST_NODE_TYPES.BlockStatement) {
49
50
  return false;
50
51
  }
51
- const firstParameter = callback.params.at(0);
52
+ const firstParameter = arrayAt(callback.params, 0);
52
53
  return firstParameter?.type === AST_NODE_TYPES.Identifier;
53
54
  };
54
55
  /**
@@ -85,20 +86,18 @@ export const isWithinFilterCallback = (node) => {
85
86
  let currentNode = node;
86
87
  const visitedNodes = new Set();
87
88
  while (currentNode) {
88
- if (visitedNodes.has(currentNode)) {
89
+ if (setHas(visitedNodes, currentNode)) {
89
90
  return false;
90
91
  }
91
92
  visitedNodes.add(currentNode);
92
93
  if (isFunctionCallbackNode(currentNode)) {
93
94
  const callbackParent = getParentNode(currentNode);
94
- if (callbackParent?.type !== AST_NODE_TYPES.CallExpression) {
95
- currentNode = getParentNode(currentNode);
96
- continue;
97
- }
98
- const [firstArgument] = callbackParent.arguments;
99
- if (firstArgument === currentNode &&
100
- isFilterCallExpression(callbackParent)) {
101
- return true;
95
+ if (callbackParent?.type === AST_NODE_TYPES.CallExpression) {
96
+ const [firstArgument] = callbackParent.arguments;
97
+ if (firstArgument === currentNode &&
98
+ isFilterCallExpression(callbackParent)) {
99
+ return true;
100
+ }
102
101
  }
103
102
  }
104
103
  currentNode = getParentNode(currentNode);
@@ -1 +1 @@
1
- {"version":3,"file":"filter-callback.js","sourceRoot":"","sources":["../../src/_internal/filter-callback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filter-callback.js","sourceRoot":"","sources":["../../src/_internal/filter-callback.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,14 @@ export declare const getStaticPropertyName: (node: Readonly<TSESTree.MemberExpre
15
15
  * Resolve a simple static member path such as `globalThis.URL.createObjectURL`.
16
16
  */
17
17
  export declare const collectStaticMemberPath: (node: Readonly<TSESTree.Expression>) => readonly string[] | undefined;
18
+ /**
19
+ * Walk through transparent syntax wrappers and return the first parent that
20
+ * changes ownership semantics.
21
+ */
22
+ export declare const getFirstOpaqueParent: (node: Readonly<TSESTree.Node>) => Readonly<{
23
+ current: Readonly<TSESTree.Node>;
24
+ parent: Readonly<TSESTree.Node>;
25
+ }> | undefined;
18
26
  /**
19
27
  * Check whether a resource-producing expression is discarded as a standalone
20
28
  * expression or explicitly voided.
@@ -1 +1 @@
1
- {"version":3,"file":"floating-resource.d.ts","sourceRoot":"","sources":["../../src/_internal/floating-resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAIzE;;GAEG;AACH,eAAO,MAAM,+BAA+B,GACxC,MAAM,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAC9B,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,SA0B5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAC9B,MAAM,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,EACrD,UAAU,OAAO,KAClB,MAAM,GAAG,SAcX,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAChC,MAAM,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,KACpC,SAAS,MAAM,EAAE,GAAG,SAetB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,6BAA6B,GACtC,MAAM,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAC9B,OAkCF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,GACzC,MAAM,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC7B,oBAAoB,WAAW,CAAC,MAAM,CAAC,KACxC,OAgCF,CAAC"}
1
+ {"version":3,"file":"floating-resource.d.ts","sourceRoot":"","sources":["../../src/_internal/floating-resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAMzE;;GAEG;AACH,eAAO,MAAM,+BAA+B,GACxC,MAAM,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAC9B,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,SA0B5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAC9B,MAAM,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,EACrD,UAAU,OAAO,KAClB,MAAM,GAAG,SAcX,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAChC,MAAM,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,KACpC,SAAS,MAAM,EAAE,GAAG,SAetB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAC7B,MAAM,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAE3B,QAAQ,CAAC;IACL,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;CACnC,CAAC,GACF,SAgBL,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,6BAA6B,GACtC,MAAM,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAC9B,OA2BF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,GACzC,MAAM,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC7B,oBAAoB,WAAW,CAAC,MAAM,CAAC,KACxC,OAoBF,CAAC"}
@@ -3,6 +3,7 @@
3
3
  * Shared AST helpers for rules that reject unowned cleanup handles.
4
4
  */
5
5
  import { AST_NODE_TYPES } from "@typescript-eslint/utils";
6
+ import { isDefined, setHas } from "ts-extras";
6
7
  import { getParentNode } from "./ast-node.js";
7
8
  /**
8
9
  * Unwrap syntax that does not change whether a resource expression is owned.
@@ -54,36 +55,47 @@ export const collectStaticMemberPath = (node) => {
54
55
  }
55
56
  const objectPath = collectStaticMemberPath(node.object);
56
57
  const propertyName = getStaticPropertyName(node.property, node.computed);
57
- return objectPath === undefined || propertyName === undefined
58
+ return !isDefined(objectPath) || !isDefined(propertyName)
58
59
  ? undefined
59
60
  : [...objectPath, propertyName];
60
61
  };
61
62
  /**
62
- * Check whether a resource-producing expression is discarded as a standalone
63
- * expression or explicitly voided.
63
+ * Walk through transparent syntax wrappers and return the first parent that
64
+ * changes ownership semantics.
64
65
  */
65
- export const isDiscardedResourceExpression = (node) => {
66
+ export const getFirstOpaqueParent = (node) => {
66
67
  let current = node;
67
68
  let parent = getParentNode(current);
68
- while (parent !== undefined) {
69
+ while (isDefined(parent)) {
69
70
  const wrappedExpression = getTransparentWrappedExpression(parent);
70
- if (wrappedExpression === current) {
71
- current = parent;
72
- parent = getParentNode(current);
73
- continue;
74
- }
75
- if (parent.type === AST_NODE_TYPES.ExpressionStatement &&
76
- parent.expression === current) {
77
- return true;
78
- }
79
- if (parent.type === AST_NODE_TYPES.UnaryExpression &&
80
- parent.operator === "void" &&
81
- parent.argument === current) {
82
- const unaryParent = getParentNode(parent);
83
- return unaryParent?.type === AST_NODE_TYPES.ExpressionStatement;
71
+ if (wrappedExpression !== current) {
72
+ return { current, parent };
84
73
  }
74
+ current = parent;
75
+ parent = getParentNode(current);
76
+ }
77
+ return undefined;
78
+ };
79
+ /**
80
+ * Check whether a resource-producing expression is discarded as a standalone
81
+ * expression or explicitly voided.
82
+ */
83
+ export const isDiscardedResourceExpression = (node) => {
84
+ const opaqueParent = getFirstOpaqueParent(node);
85
+ if (!isDefined(opaqueParent)) {
85
86
  return false;
86
87
  }
88
+ const { current, parent } = opaqueParent;
89
+ if (parent.type === AST_NODE_TYPES.ExpressionStatement &&
90
+ parent.expression === current) {
91
+ return true;
92
+ }
93
+ if (parent.type === AST_NODE_TYPES.UnaryExpression &&
94
+ parent.operator === "void" &&
95
+ parent.argument === current) {
96
+ const unaryParent = getParentNode(parent);
97
+ return unaryParent?.type === AST_NODE_TYPES.ExpressionStatement;
98
+ }
87
99
  return false;
88
100
  };
89
101
  /**
@@ -92,23 +104,17 @@ export const isDiscardedResourceExpression = (node) => {
92
104
  * calls such as `new AudioContext().close()` are not reported here.
93
105
  */
94
106
  export const isImmediateUnownedMemberReceiver = (node, cleanupMemberNames) => {
95
- let current = node;
96
- let parent = getParentNode(current);
97
- while (parent !== undefined) {
98
- const wrappedExpression = getTransparentWrappedExpression(parent);
99
- if (wrappedExpression === current) {
100
- current = parent;
101
- parent = getParentNode(current);
102
- continue;
103
- }
104
- if (parent.type !== AST_NODE_TYPES.MemberExpression ||
105
- parent.object !== current ||
106
- parent.optional) {
107
- return false;
108
- }
109
- const propertyName = getStaticPropertyName(parent.property, parent.computed);
110
- return (propertyName === undefined || !cleanupMemberNames.has(propertyName));
107
+ const opaqueParent = getFirstOpaqueParent(node);
108
+ if (!isDefined(opaqueParent)) {
109
+ return false;
111
110
  }
112
- return false;
111
+ const { current, parent } = opaqueParent;
112
+ if (parent.type !== AST_NODE_TYPES.MemberExpression ||
113
+ parent.object !== current ||
114
+ parent.optional) {
115
+ return false;
116
+ }
117
+ const propertyName = getStaticPropertyName(parent.property, parent.computed);
118
+ return !isDefined(propertyName) || !setHas(cleanupMemberNames, propertyName);
113
119
  };
114
120
  //# sourceMappingURL=floating-resource.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"floating-resource.js","sourceRoot":"","sources":["../../src/_internal/floating-resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,cAAc,EAAiB,MAAM,0BAA0B,CAAC;AAEzE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C;;GAEG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAC3C,IAA6B,EACM,EAAE;IACrC,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,eAAe,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,eAAe,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,cAAc,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,mBAAmB,EAAE,CAAC;QACnD,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,qBAAqB,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,eAAe,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACjC,IAAqD,EACrD,QAAiB,EACC,EAAE;IACpB,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU,EAAE,CAAC;QACvD,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,IACI,QAAQ;QACR,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,OAAO;QACpC,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAChC,CAAC;QACC,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACnC,IAAmC,EACN,EAAE;IAC/B,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU,EAAE,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,gBAAgB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACjE,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEzE,OAAO,UAAU,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS;QACzD,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,CAAC,GAAG,UAAU,EAAE,YAAY,CAAC,CAAC;AACxC,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CACzC,IAA6B,EACtB,EAAE;IACT,IAAI,OAAO,GAA4B,IAAI,CAAC;IAC5C,IAAI,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAEpC,OAAO,MAAM,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,iBAAiB,GAAG,+BAA+B,CAAC,MAAM,CAAC,CAAC;QAElE,IAAI,iBAAiB,KAAK,OAAO,EAAE,CAAC;YAChC,OAAO,GAAG,MAAM,CAAC;YACjB,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;YAChC,SAAS;QACb,CAAC;QAED,IACI,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,mBAAmB;YAClD,MAAM,CAAC,UAAU,KAAK,OAAO,EAC/B,CAAC;YACC,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IACI,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,eAAe;YAC9C,MAAM,CAAC,QAAQ,KAAK,MAAM;YAC1B,MAAM,CAAC,QAAQ,KAAK,OAAO,EAC7B,CAAC;YACC,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;YAE1C,OAAO,WAAW,EAAE,IAAI,KAAK,cAAc,CAAC,mBAAmB,CAAC;QACpE,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAC5C,IAA6B,EAC7B,kBAAuC,EAChC,EAAE;IACT,IAAI,OAAO,GAA4B,IAAI,CAAC;IAC5C,IAAI,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAEpC,OAAO,MAAM,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,iBAAiB,GAAG,+BAA+B,CAAC,MAAM,CAAC,CAAC;QAElE,IAAI,iBAAiB,KAAK,OAAO,EAAE,CAAC;YAChC,OAAO,GAAG,MAAM,CAAC;YACjB,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;YAChC,SAAS;QACb,CAAC;QAED,IACI,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,gBAAgB;YAC/C,MAAM,CAAC,MAAM,KAAK,OAAO;YACzB,MAAM,CAAC,QAAQ,EACjB,CAAC;YACC,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,YAAY,GAAG,qBAAqB,CACtC,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,QAAQ,CAClB,CAAC;QAEF,OAAO,CACH,YAAY,KAAK,SAAS,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,CACtE,CAAC;IACN,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC"}
1
+ {"version":3,"file":"floating-resource.js","sourceRoot":"","sources":["../../src/_internal/floating-resource.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,9 @@
1
- import type { TSESTree } from "@typescript-eslint/utils";
1
+ /**
2
+ * @packageDocumentation
3
+ * Structural normalization and equivalence checks for expressions and type
4
+ * nodes used by safe-fix heuristics.
5
+ */
6
+ import { type TSESTree } from "@typescript-eslint/utils";
2
7
  /**
3
8
  * Compare two expressions for structural equivalence after unwrapping
4
9
  * transparent TypeScript wrappers.
@@ -1 +1 @@
1
- {"version":3,"file":"normalize-expression-text.d.ts","sourceRoot":"","sources":["../../src/_internal/normalize-expression-text.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAgPzD;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,GACjC,MAAM,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EACnC,OAAO,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,KACrC,OAIE,CAAC;AAEN;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,GAC/B,MAAM,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EACjC,OAAO,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,KACnC,OAA+C,CAAC"}
1
+ {"version":3,"file":"normalize-expression-text.d.ts","sourceRoot":"","sources":["../../src/_internal/normalize-expression-text.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAiPzE;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,GACjC,MAAM,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EACnC,OAAO,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,KACrC,OAIE,CAAC;AAEN;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,GAC/B,MAAM,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EACjC,OAAO,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,KACnC,OAA+C,CAAC"}
@@ -4,6 +4,7 @@
4
4
  * nodes used by safe-fix heuristics.
5
5
  */
6
6
  import { AST_NODE_TYPES } from "@typescript-eslint/utils";
7
+ import { isDefined, not, objectHasOwn, objectKeys, setHas } from "ts-extras";
7
8
  /**
8
9
  * ESTree metadata keys ignored during structural-equivalence checks.
9
10
  */
@@ -30,7 +31,7 @@ const isComparableRecord = (value) => typeof value === "object" && value !== nul
30
31
  /**
31
32
  * Return stable comparable keys after stripping metadata properties.
32
33
  */
33
- const getComparableKeys = (value) => Object.keys(value).filter((key) => !ignoredPropertyKeys.has(key));
34
+ const getComparableKeys = (value) => objectKeys(value).filter(not((key) => setHas(ignoredPropertyKeys, key)));
34
35
  /**
35
36
  * Read comparable keys with per-comparison caching to reduce repeated
36
37
  * key-filter allocations during deep traversals.
@@ -42,7 +43,7 @@ const getComparableKeys = (value) => Object.keys(value).filter((key) => !ignored
42
43
  */
43
44
  const getCachedComparableKeys = (value, comparableKeysByObject) => {
44
45
  const existingComparableKeys = comparableKeysByObject.get(value);
45
- if (existingComparableKeys !== undefined) {
46
+ if (isDefined(existingComparableKeys)) {
46
47
  return existingComparableKeys;
47
48
  }
48
49
  const comparableKeys = getComparableKeys(value);
@@ -56,32 +57,33 @@ const getCachedComparableKeys = (value, comparableKeysByObject) => {
56
57
  *
57
58
  * @returns The innermost wrapped expression.
58
59
  */
60
+ const getTransparentExpression = (expression) => {
61
+ if (expression.type === AST_NODE_TYPES.TSAsExpression) {
62
+ return expression.expression;
63
+ }
64
+ if (expression.type === AST_NODE_TYPES.TSNonNullExpression) {
65
+ return expression.expression;
66
+ }
67
+ if (expression.type === AST_NODE_TYPES.TSSatisfiesExpression) {
68
+ return expression.expression;
69
+ }
70
+ if (expression.type === AST_NODE_TYPES.TSTypeAssertion) {
71
+ return expression.expression;
72
+ }
73
+ return undefined;
74
+ };
59
75
  const unwrapTransparentExpression = (expression) => {
60
76
  let currentExpression = expression;
61
77
  const visitedExpressions = new Set();
62
- while (true) {
63
- if (visitedExpressions.has(currentExpression)) {
64
- return currentExpression;
65
- }
78
+ while (!setHas(visitedExpressions, currentExpression)) {
66
79
  visitedExpressions.add(currentExpression);
67
- if (currentExpression.type === AST_NODE_TYPES.TSAsExpression) {
68
- currentExpression = currentExpression.expression;
69
- continue;
70
- }
71
- if (currentExpression.type === AST_NODE_TYPES.TSNonNullExpression) {
72
- currentExpression = currentExpression.expression;
73
- continue;
74
- }
75
- if (currentExpression.type === AST_NODE_TYPES.TSSatisfiesExpression) {
76
- currentExpression = currentExpression.expression;
77
- continue;
78
- }
79
- if (currentExpression.type === AST_NODE_TYPES.TSTypeAssertion) {
80
- currentExpression = currentExpression.expression;
81
- continue;
80
+ const transparentExpression = getTransparentExpression(currentExpression);
81
+ if (!isDefined(transparentExpression)) {
82
+ return currentExpression;
82
83
  }
83
- return currentExpression;
84
+ currentExpression = transparentExpression;
84
85
  }
86
+ return currentExpression;
85
87
  };
86
88
  /**
87
89
  * Records a compared object pair and reports whether that pair was already
@@ -95,14 +97,14 @@ const unwrapTransparentExpression = (expression) => {
95
97
  */
96
98
  const markAndCheckSeenPair = (left, right, seenPairs) => {
97
99
  const seenRightNodes = seenPairs.get(left);
98
- if (seenRightNodes?.has(right) === true) {
100
+ if (isDefined(seenRightNodes) && seenRightNodes.has(right)) {
99
101
  return true;
100
102
  }
101
- if (seenRightNodes === undefined) {
102
- seenPairs.set(left, new WeakSet([right]));
103
+ if (isDefined(seenRightNodes)) {
104
+ seenRightNodes.add(right);
103
105
  }
104
106
  else {
105
- seenRightNodes.add(right);
107
+ seenPairs.set(left, new WeakSet([right]));
106
108
  }
107
109
  return false;
108
110
  };
@@ -154,11 +156,11 @@ const areEquivalentNodeValues = (left, right, seenPairs = new WeakMap(), compara
154
156
  if (leftKeys.length !== rightKeys.length) {
155
157
  return false;
156
158
  }
157
- if (leftKeys.some((key) => !rightKeySet.has(key))) {
159
+ if (leftKeys.some((key) => !setHas(rightKeySet, key))) {
158
160
  return false;
159
161
  }
160
162
  return leftKeys.every((key) => {
161
- if (!Object.hasOwn(left, key) || !Object.hasOwn(right, key)) {
163
+ if (!objectHasOwn(left, key) || !objectHasOwn(right, key)) {
162
164
  return false;
163
165
  }
164
166
  return areEquivalentNodeValues(left[key], right[key], seenPairs, comparableKeysByObject, depth + 1);
@@ -1 +1 @@
1
- {"version":3,"file":"normalize-expression-text.js","sourceRoot":"","sources":["../../src/_internal/normalize-expression-text.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"normalize-expression-text.js","sourceRoot":"","sources":["../../src/_internal/normalize-expression-text.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * @packageDocumentation
3
3
  * Shared helpers for parsing and flattening nullish comparison expressions.
4
4
  */
5
- import type { TSESTree } from "@typescript-eslint/utils";
5
+ import { type TSESTree } from "@typescript-eslint/utils";
6
6
  /**
7
7
  * Normalized representation of one binary comparison against null/undefined.
8
8
  */
@@ -1 +1 @@
1
- {"version":3,"file":"nullish-comparison.d.ts","sourceRoot":"","sources":["../../src/_internal/nullish-comparison.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAIzD;;GAEG;AACH,KAAK,iBAAiB,GAAG,QAAQ,CAAC;IAC9B,kBAAkB,EAAE,QAAQ,CAAC,UAAU,CAAC;IACxC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,QAAQ,EAAE,yBAAyB,CAAC;CACvC,CAAC,CAAC;AAEH,gEAAgE;AAChE,KAAK,qBAAqB,GAAG,MAAM,GAAG,WAAW,CAAC;AAElD,4DAA4D;AAC5D,KAAK,yBAAyB,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;AAU7D;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAAI,2BAGjC,QAAQ,CAAC;IACR,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC1C,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;CACzB,CAAC,KAAG,SAAS,QAAQ,CAAC,UAAU,EAuBhC,CAAC;AAIF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GACzB,OAAO,SAAS,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAChD,KAAK,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAChB,CAAC;AA+J/C;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,mIAMlC,QAAQ,CAAC;IACR,gBAAgB,CAAC,EAAE,SAAS,yBAAyB,EAAE,CAAC;IACxD,yCAAyC,CAAC,EAAE,OAAO,CAAC;IACpD,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC1C,2BAA2B,EAAE,CACzB,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,KACxC,OAAO,CAAC;CAChB,CAAC,KAAG,IAAI,GAAG,iBAyDX,CAAC"}
1
+ {"version":3,"file":"nullish-comparison.d.ts","sourceRoot":"","sources":["../../src/_internal/nullish-comparison.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGzE;;GAEG;AACH,KAAK,iBAAiB,GAAG,QAAQ,CAAC;IAC9B,kBAAkB,EAAE,QAAQ,CAAC,UAAU,CAAC;IACxC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,QAAQ,EAAE,yBAAyB,CAAC;CACvC,CAAC,CAAC;AAEH,gEAAgE;AAChE,KAAK,qBAAqB,GAAG,MAAM,GAAG,WAAW,CAAC;AAElD,4DAA4D;AAC5D,KAAK,yBAAyB,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;AAU7D;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAAI,2BAGjC,QAAQ,CAAC;IACR,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC1C,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;CACzB,CAAC,KAAG,SAAS,QAAQ,CAAC,UAAU,EAoBhC,CAAC;AAIF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GACzB,OAAO,SAAS,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAChD,KAAK,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAChB,CAAC;AA+J/C;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,mIAMlC,QAAQ,CAAC;IACR,gBAAgB,CAAC,EAAE,SAAS,yBAAyB,EAAE,CAAC;IACxD,yCAAyC,CAAC,EAAE,OAAO,CAAC;IACpD,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC1C,2BAA2B,EAAE,CACzB,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,KACxC,OAAO,CAAC;CAChB,CAAC,KAAG,IAAI,GAAG,iBAyDX,CAAC"}
@@ -1,4 +1,9 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * Shared helpers for parsing and flattening nullish comparison expressions.
4
+ */
1
5
  import { AST_NODE_TYPES } from "@typescript-eslint/utils";
6
+ import { arrayIncludes, isDefined } from "ts-extras";
2
7
  /** Default accepted operators for nullish comparison parsing. */
3
8
  const defaultNullishComparisonOperators = [
4
9
  "!=",
@@ -18,15 +23,15 @@ export const flattenLogicalTerms = ({ expression, operator, }) => {
18
23
  const pendingTerms = [expression];
19
24
  while (pendingTerms.length > 0) {
20
25
  const currentTerm = pendingTerms.pop();
21
- if (!currentTerm) {
22
- continue;
23
- }
24
- if (currentTerm.type === AST_NODE_TYPES.LogicalExpression &&
25
- currentTerm.operator === operator) {
26
- pendingTerms.push(currentTerm.right, currentTerm.left);
27
- continue;
26
+ if (currentTerm) {
27
+ if (currentTerm.type === AST_NODE_TYPES.LogicalExpression &&
28
+ currentTerm.operator === operator) {
29
+ pendingTerms.push(currentTerm.right, currentTerm.left);
30
+ }
31
+ else {
32
+ flattenedTerms.push(currentTerm);
33
+ }
28
34
  }
29
- flattenedTerms.push(currentTerm);
30
35
  }
31
36
  return flattenedTerms;
32
37
  };
@@ -139,10 +144,10 @@ export const getNullishComparison = ({ allowedOperators = defaultNullishComparis
139
144
  return null;
140
145
  }
141
146
  if (allowedOperators !== defaultNullishComparisonOperators &&
142
- !allowedOperators.includes(expression.operator)) {
147
+ !arrayIncludes(allowedOperators, expression.operator)) {
143
148
  return null;
144
149
  }
145
- const matchesComparedExpression = (candidateExpression) => comparedIdentifierName === undefined ||
150
+ const matchesComparedExpression = (candidateExpression) => !isDefined(comparedIdentifierName) ||
146
151
  (candidateExpression.type === AST_NODE_TYPES.Identifier &&
147
152
  candidateExpression.name === comparedIdentifierName);
148
153
  const nullLiteralComparison = getNullLiteralComparison(expression.left, expression.right, expression.operator, matchesComparedExpression);
@@ -153,7 +158,7 @@ export const getNullishComparison = ({ allowedOperators = defaultNullishComparis
153
158
  if (undefinedIdentifierComparison !== null) {
154
159
  return undefinedIdentifierComparison;
155
160
  }
156
- if (comparedIdentifierName === undefined ||
161
+ if (!isDefined(comparedIdentifierName) ||
157
162
  !allowTypeofComparedIdentifierForUndefined) {
158
163
  return null;
159
164
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nullish-comparison.js","sourceRoot":"","sources":["../../src/_internal/nullish-comparison.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAiB1D,iEAAiE;AACjE,MAAM,iCAAiC,GAAG;IACtC,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,KAAK;CACgD,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAChC,UAAU,EACV,QAAQ,GAIV,EAAkC,EAAE;IAClC,MAAM,cAAc,GAA0B,EAAE,CAAC;IACjD,MAAM,YAAY,GAA0B,CAAC,UAAU,CAAC,CAAC;IAEzD,OAAO,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC;QAEvC,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,SAAS;QACb,CAAC;QAED,IACI,WAAW,CAAC,IAAI,KAAK,cAAc,CAAC,iBAAiB;YACrD,WAAW,CAAC,QAAQ,KAAK,QAAQ,EACnC,CAAC;YACC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;YACvD,SAAS;QACb,CAAC;QAED,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,cAAc,CAAC;AAC1B,CAAC,CAAC;AAEF,MAAM,yBAAyB,GAAG,CAAU,CAAC;AAE7C;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC5B,KAA+C,EACa,EAAE,CAC9D,KAAK,CAAC,MAAM,KAAK,yBAAyB,CAAC;AAE/C;;GAEG;AACH,MAAM,aAAa,GAAG,CAClB,UAAyC,EACO,EAAE,CAClD,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,OAAO,IAAI,UAAU,CAAC,KAAK,KAAK,IAAI,CAAC;AAE5E;;GAEG;AACH,MAAM,wBAAwB,GAAG,CAC7B,UAAyC,EACc,EAAE,CACzD,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,OAAO;IAC1C,UAAU,CAAC,KAAK,KAAK,WAAW,CAAC;AAErC;;GAEG;AACH,MAAM,4BAA4B,GAAG,CACjC,UAAyC,EACzC,cAAsB,EACoD,EAAE,CAC5E,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,eAAe;IAClD,UAAU,CAAC,QAAQ,KAAK,QAAQ;IAChC,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU;IACtD,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,cAAc,CAAC;AAEhD;;GAEG;AACH,MAAM,kCAAkC,GAAG,CACvC,QAA+C,EACV,EAAE,CACvC,QAAQ,KAAK,IAAI;IACjB,QAAQ,KAAK,KAAK;IAClB,QAAQ,KAAK,IAAI;IACjB,QAAQ,KAAK,KAAK,CAAC;AAEvB;;;GAGG;AACH,MAAM,gBAAgB,GAAG,CACrB,UAAsE,EACrC,EAAE,CACnC,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,iBAAiB,CAAC;AAEzD,MAAM,wBAAwB,GAAG,CAC7B,IAAgE,EAChE,KAAoC,EACpC,QAAmC,EACnC,yBAEY,EACY,EAAE;IAC1B,IACI,aAAa,CAAC,KAAK,CAAC;QACpB,gBAAgB,CAAC,IAAI,CAAC;QACtB,yBAAyB,CAAC,IAAI,CAAC,EACjC,CAAC;QACC,OAAO;YACH,kBAAkB,EAAE,IAAI;YACxB,IAAI,EAAE,MAAM;YACZ,QAAQ;SACX,CAAC;IACN,CAAC;IAED,IACI,gBAAgB,CAAC,IAAI,CAAC;QACtB,aAAa,CAAC,IAAI,CAAC;QACnB,yBAAyB,CAAC,KAAK,CAAC,EAClC,CAAC;QACC,OAAO;YACH,kBAAkB,EAAE,KAAK;YACzB,IAAI,EAAE,MAAM;YACZ,QAAQ;SACX,CAAC;IACN,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,gCAAgC,GAAG,CACrC,IAAgE,EAChE,KAAoC,EACpC,QAAmC,EACnC,yBAEY,EACZ,2BAEY,EACY,EAAE;IAC1B,IACI,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU;QACxC,2BAA2B,CAAC,KAAK,CAAC;QAClC,gBAAgB,CAAC,IAAI,CAAC;QACtB,yBAAyB,CAAC,IAAI,CAAC,EACjC,CAAC;QACC,OAAO;YACH,kBAAkB,EAAE,IAAI;YACxB,IAAI,EAAE,WAAW;YACjB,QAAQ;SACX,CAAC;IACN,CAAC;IAED,IACI,gBAAgB,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU;QACvC,2BAA2B,CAAC,IAAI,CAAC;QACjC,yBAAyB,CAAC,KAAK,CAAC,EAClC,CAAC;QACC,OAAO;YACH,kBAAkB,EAAE,KAAK;YACzB,IAAI,EAAE,WAAW;YACjB,QAAQ;SACX,CAAC;IACN,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,kCAAkC,GAAG,CACvC,IAAgE,EAChE,KAAoC,EACpC,QAAmC,EACnC,sBAA8B,EACN,EAAE;IAC1B,IACI,gBAAgB,CAAC,IAAI,CAAC;QACtB,4BAA4B,CAAC,IAAI,EAAE,sBAAsB,CAAC;QAC1D,wBAAwB,CAAC,KAAK,CAAC,EACjC,CAAC;QACC,OAAO;YACH,kBAAkB,EAAE,IAAI,CAAC,QAAQ;YACjC,IAAI,EAAE,WAAW;YACjB,QAAQ;SACX,CAAC;IACN,CAAC;IAED,IACI,gBAAgB,CAAC,IAAI,CAAC;QACtB,4BAA4B,CAAC,KAAK,EAAE,sBAAsB,CAAC;QAC3D,wBAAwB,CAAC,IAAI,CAAC,EAChC,CAAC;QACC,OAAO;YACH,kBAAkB,EAAE,KAAK,CAAC,QAAQ;YAClC,IAAI,EAAE,WAAW;YACjB,QAAQ;SACX,CAAC;IACN,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACjC,gBAAgB,GAAG,iCAAiC,EACpD,yCAAyC,GAAG,KAAK,EACjD,sBAAsB,EACtB,UAAU,EACV,2BAA2B,GAS7B,EAA4B,EAAE;IAC5B,IAAI,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,gBAAgB,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,kCAAkC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IACI,gBAAgB,KAAK,iCAAiC;QACtD,CAAC,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EACjD,CAAC;QACC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,yBAAyB,GAAG,CAC9B,mBAAkD,EAC3C,EAAE,CACT,sBAAsB,KAAK,SAAS;QACpC,CAAC,mBAAmB,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU;YACnD,mBAAmB,CAAC,IAAI,KAAK,sBAAsB,CAAC,CAAC;IAE7D,MAAM,qBAAqB,GAAG,wBAAwB,CAClD,UAAU,CAAC,IAAI,EACf,UAAU,CAAC,KAAK,EAChB,UAAU,CAAC,QAAQ,EACnB,yBAAyB,CAC5B,CAAC;IACF,IAAI,qBAAqB,KAAK,IAAI,EAAE,CAAC;QACjC,OAAO,qBAAqB,CAAC;IACjC,CAAC;IAED,MAAM,6BAA6B,GAAG,gCAAgC,CAClE,UAAU,CAAC,IAAI,EACf,UAAU,CAAC,KAAK,EAChB,UAAU,CAAC,QAAQ,EACnB,yBAAyB,EACzB,2BAA2B,CAC9B,CAAC;IACF,IAAI,6BAA6B,KAAK,IAAI,EAAE,CAAC;QACzC,OAAO,6BAA6B,CAAC;IACzC,CAAC;IAED,IACI,sBAAsB,KAAK,SAAS;QACpC,CAAC,yCAAyC,EAC5C,CAAC;QACC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,kCAAkC,CACrC,UAAU,CAAC,IAAI,EACf,UAAU,CAAC,KAAK,EAChB,UAAU,CAAC,QAAQ,EACnB,sBAAsB,CACzB,CAAC;AACN,CAAC,CAAC"}
1
+ {"version":3,"file":"nullish-comparison.js","sourceRoot":"","sources":["../../src/_internal/nullish-comparison.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@
3
3
  * Parsing and memoization helpers for plugin-level runtime settings.
4
4
  */
5
5
  import type { TSESLint, TSESTree } from "@typescript-eslint/utils";
6
+ import type { UnknownArray } from "type-fest";
6
7
  /**
7
8
  * Normalized per-program settings consumed by fix-generation helpers.
8
9
  */
@@ -16,7 +17,7 @@ interface ProgramSettings {
16
17
  *
17
18
  * @returns Memoized immutable settings for the context's program node.
18
19
  */
19
- export declare const registerProgramSettingsForContext: (context: Readonly<TSESLint.RuleContext<string, readonly unknown[]>>) => Readonly<ProgramSettings>;
20
+ export declare const registerProgramSettingsForContext: (context: Readonly<TSESLint.RuleContext<string, Readonly<UnknownArray>>>) => Readonly<ProgramSettings>;
20
21
  /**
21
22
  * Determine whether autofixes are globally disabled for the file containing the
22
23
  * provided node.
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-settings.d.ts","sourceRoot":"","sources":["../../src/_internal/plugin-settings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAUnE;;GAEG;AACH,UAAU,eAAe;IACrB,mBAAmB,EAAE,OAAO,CAAC;CAChC;AAmED;;;;;;GAMG;AACH,eAAO,MAAM,iCAAiC,GAC1C,SAAS,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,CAAC,CAAC,KACpE,QAAQ,CAAC,eAAe,CAiB1B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,GACpC,MAAM,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAC9B,OASF,CAAC"}
1
+ {"version":3,"file":"plugin-settings.d.ts","sourceRoot":"","sources":["../../src/_internal/plugin-settings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,WAAW,CAAC;AAY9D;;GAEG;AACH,UAAU,eAAe;IACrB,mBAAmB,EAAE,OAAO,CAAC;CAChC;AAmED;;;;;;GAMG;AACH,eAAO,MAAM,iCAAiC,GAC1C,SAAS,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,KACxE,QAAQ,CAAC,eAAe,CAiB1B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,GACpC,MAAM,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAC9B,OASF,CAAC"}