oxlint-plugin-eslint 1.52.0

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 (305) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +36 -0
  3. package/common/ast-utils.cjs +5843 -0
  4. package/common/chunk.cjs +9 -0
  5. package/common/eslint-utils.cjs +1633 -0
  6. package/common/fix-tracker.cjs +89 -0
  7. package/common/ignore.cjs +123 -0
  8. package/common/keywords.cjs +15 -0
  9. package/common/regexpp.cjs +1720 -0
  10. package/common/regular-expressions.cjs +40 -0
  11. package/common/string-utils.cjs +39 -0
  12. package/index.js +7477 -0
  13. package/package.json +34 -0
  14. package/rules/accessor-pairs.cjs +233 -0
  15. package/rules/array-bracket-newline.cjs +172 -0
  16. package/rules/array-bracket-spacing.cjs +184 -0
  17. package/rules/array-callback-return.cjs +262 -0
  18. package/rules/array-element-newline.cjs +178 -0
  19. package/rules/arrow-body-style.cjs +135 -0
  20. package/rules/arrow-parens.cjs +130 -0
  21. package/rules/arrow-spacing.cjs +129 -0
  22. package/rules/block-scoped-var.cjs +101 -0
  23. package/rules/block-spacing.cjs +125 -0
  24. package/rules/brace-style.cjs +141 -0
  25. package/rules/callback-return.cjs +117 -0
  26. package/rules/camelcase.cjs +194 -0
  27. package/rules/capitalized-comments.cjs +168 -0
  28. package/rules/class-methods-use-this.cjs +155 -0
  29. package/rules/comma-dangle.cjs +274 -0
  30. package/rules/comma-spacing.cjs +111 -0
  31. package/rules/comma-style.cjs +180 -0
  32. package/rules/complexity.cjs +100 -0
  33. package/rules/computed-property-spacing.cjs +155 -0
  34. package/rules/consistent-return.cjs +113 -0
  35. package/rules/consistent-this.cjs +109 -0
  36. package/rules/constructor-super.cjs +207 -0
  37. package/rules/curly.cjs +173 -0
  38. package/rules/default-case-last.cjs +36 -0
  39. package/rules/default-case.cjs +50 -0
  40. package/rules/default-param-last.cjs +61 -0
  41. package/rules/dot-location.cjs +87 -0
  42. package/rules/dot-notation.cjs +77 -0
  43. package/rules/eol-last.cjs +91 -0
  44. package/rules/eqeqeq.cjs +127 -0
  45. package/rules/for-direction.cjs +94 -0
  46. package/rules/func-call-spacing.cjs +127 -0
  47. package/rules/func-name-matching.cjs +138 -0
  48. package/rules/func-names.cjs +121 -0
  49. package/rules/func-style.cjs +103 -0
  50. package/rules/function-call-argument-newline.cjs +109 -0
  51. package/rules/function-paren-newline.cjs +173 -0
  52. package/rules/generator-star-spacing.cjs +174 -0
  53. package/rules/getter-return.cjs +129 -0
  54. package/rules/global-require.cjs +84 -0
  55. package/rules/grouped-accessor-pairs.cjs +146 -0
  56. package/rules/guard-for-in.cjs +39 -0
  57. package/rules/handle-callback-err.cjs +86 -0
  58. package/rules/id-blacklist.cjs +135 -0
  59. package/rules/id-denylist.cjs +126 -0
  60. package/rules/id-length.cjs +119 -0
  61. package/rules/id-match.cjs +139 -0
  62. package/rules/implicit-arrow-linebreak.cjs +76 -0
  63. package/rules/indent-legacy.cjs +520 -0
  64. package/rules/indent.cjs +842 -0
  65. package/rules/init-declarations.cjs +88 -0
  66. package/rules/jsx-quotes.cjs +84 -0
  67. package/rules/key-spacing.cjs +399 -0
  68. package/rules/keyword-spacing.cjs +464 -0
  69. package/rules/line-comment-position.cjs +75 -0
  70. package/rules/linebreak-style.cjs +89 -0
  71. package/rules/lines-around-comment.cjs +290 -0
  72. package/rules/lines-around-directive.cjs +129 -0
  73. package/rules/lines-between-class-members.cjs +212 -0
  74. package/rules/logical-assignment-operators.cjs +305 -0
  75. package/rules/max-classes-per-file.cjs +61 -0
  76. package/rules/max-depth.cjs +117 -0
  77. package/rules/max-len.cjs +256 -0
  78. package/rules/max-lines-per-function.cjs +116 -0
  79. package/rules/max-lines.cjs +109 -0
  80. package/rules/max-nested-callbacks.cjs +78 -0
  81. package/rules/max-params.cjs +78 -0
  82. package/rules/max-statements-per-line.cjs +147 -0
  83. package/rules/max-statements.cjs +119 -0
  84. package/rules/multiline-comment-style.cjs +319 -0
  85. package/rules/multiline-ternary.cjs +106 -0
  86. package/rules/new-cap.cjs +139 -0
  87. package/rules/new-parens.cjs +70 -0
  88. package/rules/newline-after-var.cjs +159 -0
  89. package/rules/newline-before-return.cjs +128 -0
  90. package/rules/newline-per-chained-call.cjs +100 -0
  91. package/rules/no-alert.cjs +84 -0
  92. package/rules/no-array-constructor.cjs +91 -0
  93. package/rules/no-async-promise-executor.cjs +33 -0
  94. package/rules/no-await-in-loop.cjs +75 -0
  95. package/rules/no-bitwise.cjs +106 -0
  96. package/rules/no-buffer-constructor.cjs +51 -0
  97. package/rules/no-caller.cjs +34 -0
  98. package/rules/no-case-declarations.cjs +56 -0
  99. package/rules/no-catch-shadow.cjs +57 -0
  100. package/rules/no-class-assign.cjs +55 -0
  101. package/rules/no-compare-neg-zero.cjs +52 -0
  102. package/rules/no-cond-assign.cjs +104 -0
  103. package/rules/no-confusing-arrow.cjs +87 -0
  104. package/rules/no-console.cjs +138 -0
  105. package/rules/no-const-assign.cjs +50 -0
  106. package/rules/no-constant-binary-expression.cjs +284 -0
  107. package/rules/no-constant-condition.cjs +119 -0
  108. package/rules/no-constructor-return.cjs +43 -0
  109. package/rules/no-continue.cjs +33 -0
  110. package/rules/no-control-regex.cjs +74 -0
  111. package/rules/no-debugger.cjs +33 -0
  112. package/rules/no-delete-var.cjs +32 -0
  113. package/rules/no-div-regex.cjs +39 -0
  114. package/rules/no-dupe-args.cjs +61 -0
  115. package/rules/no-dupe-class-members.cjs +77 -0
  116. package/rules/no-dupe-else-if.cjs +74 -0
  117. package/rules/no-dupe-keys.cjs +88 -0
  118. package/rules/no-duplicate-case.cjs +49 -0
  119. package/rules/no-duplicate-imports.cjs +166 -0
  120. package/rules/no-else-return.cjs +182 -0
  121. package/rules/no-empty-character-class.cjs +47 -0
  122. package/rules/no-empty-function.cjs +141 -0
  123. package/rules/no-empty-pattern.cjs +50 -0
  124. package/rules/no-empty-static-block.cjs +50 -0
  125. package/rules/no-empty.cjs +78 -0
  126. package/rules/no-eq-null.cjs +34 -0
  127. package/rules/no-eval.cjs +165 -0
  128. package/rules/no-ex-assign.cjs +45 -0
  129. package/rules/no-extend-native.cjs +103 -0
  130. package/rules/no-extra-bind.cjs +127 -0
  131. package/rules/no-extra-boolean-cast.cjs +159 -0
  132. package/rules/no-extra-label.cjs +116 -0
  133. package/rules/no-extra-parens.cjs +665 -0
  134. package/rules/no-extra-semi.cjs +103 -0
  135. package/rules/no-fallthrough.cjs +136 -0
  136. package/rules/no-floating-decimal.cjs +66 -0
  137. package/rules/no-func-assign.cjs +63 -0
  138. package/rules/no-global-assign.cjs +62 -0
  139. package/rules/no-implicit-coercion.cjs +219 -0
  140. package/rules/no-implicit-globals.cjs +77 -0
  141. package/rules/no-implied-eval.cjs +87 -0
  142. package/rules/no-import-assign.cjs +123 -0
  143. package/rules/no-inline-comments.cjs +57 -0
  144. package/rules/no-inner-declarations.cjs +82 -0
  145. package/rules/no-invalid-regexp.cjs +130 -0
  146. package/rules/no-invalid-this.cjs +90 -0
  147. package/rules/no-irregular-whitespace.cjs +157 -0
  148. package/rules/no-iterator.cjs +34 -0
  149. package/rules/no-label-var.cjs +46 -0
  150. package/rules/no-labels.cjs +106 -0
  151. package/rules/no-lone-blocks.cjs +75 -0
  152. package/rules/no-lonely-if.cjs +42 -0
  153. package/rules/no-loop-func.cjs +143 -0
  154. package/rules/no-loss-of-precision.cjs +160 -0
  155. package/rules/no-magic-numbers.cjs +222 -0
  156. package/rules/no-misleading-character-class.cjs +500 -0
  157. package/rules/no-mixed-operators.cjs +197 -0
  158. package/rules/no-mixed-requires.cjs +117 -0
  159. package/rules/no-mixed-spaces-and-tabs.cjs +87 -0
  160. package/rules/no-multi-assign.cjs +38 -0
  161. package/rules/no-multi-spaces.cjs +95 -0
  162. package/rules/no-multi-str.cjs +44 -0
  163. package/rules/no-multiple-empty-lines.cjs +112 -0
  164. package/rules/no-native-reassign.cjs +72 -0
  165. package/rules/no-negated-condition.cjs +77 -0
  166. package/rules/no-negated-in-lhs.cjs +43 -0
  167. package/rules/no-nested-ternary.cjs +33 -0
  168. package/rules/no-new-func.cjs +50 -0
  169. package/rules/no-new-native-nonconstructor.cjs +42 -0
  170. package/rules/no-new-object.cjs +47 -0
  171. package/rules/no-new-require.cjs +50 -0
  172. package/rules/no-new-symbol.cjs +48 -0
  173. package/rules/no-new-wrappers.cjs +44 -0
  174. package/rules/no-new.cjs +33 -0
  175. package/rules/no-nonoctal-decimal-escape.cjs +80 -0
  176. package/rules/no-obj-calls.cjs +64 -0
  177. package/rules/no-object-constructor.cjs +69 -0
  178. package/rules/no-octal-escape.cjs +35 -0
  179. package/rules/no-octal.cjs +32 -0
  180. package/rules/no-param-reassign.cjs +135 -0
  181. package/rules/no-path-concat.cjs +52 -0
  182. package/rules/no-plusplus.cjs +64 -0
  183. package/rules/no-process-env.cjs +51 -0
  184. package/rules/no-process-exit.cjs +50 -0
  185. package/rules/no-promise-executor-return.cjs +131 -0
  186. package/rules/no-proto.cjs +34 -0
  187. package/rules/no-prototype-builtins.cjs +85 -0
  188. package/rules/no-redeclare.cjs +103 -0
  189. package/rules/no-regex-spaces.cjs +115 -0
  190. package/rules/no-restricted-exports.cjs +117 -0
  191. package/rules/no-restricted-globals.cjs +147 -0
  192. package/rules/no-restricted-imports.cjs +421 -0
  193. package/rules/no-restricted-modules.cjs +144 -0
  194. package/rules/no-restricted-properties.cjs +123 -0
  195. package/rules/no-restricted-syntax.cjs +49 -0
  196. package/rules/no-return-assign.cjs +45 -0
  197. package/rules/no-return-await.cjs +88 -0
  198. package/rules/no-script-url.cjs +49 -0
  199. package/rules/no-self-assign.cjs +88 -0
  200. package/rules/no-self-compare.cjs +53 -0
  201. package/rules/no-sequences.cjs +81 -0
  202. package/rules/no-setter-return.cjs +110 -0
  203. package/rules/no-shadow-restricted-names.cjs +60 -0
  204. package/rules/no-shadow.cjs +302 -0
  205. package/rules/no-spaced-func.cjs +69 -0
  206. package/rules/no-sparse-arrays.cjs +40 -0
  207. package/rules/no-sync.cjs +58 -0
  208. package/rules/no-tabs.cjs +73 -0
  209. package/rules/no-template-curly-in-string.cjs +33 -0
  210. package/rules/no-ternary.cjs +33 -0
  211. package/rules/no-this-before-super.cjs +177 -0
  212. package/rules/no-throw-literal.cjs +40 -0
  213. package/rules/no-trailing-spaces.cjs +123 -0
  214. package/rules/no-unassigned-vars.cjs +54 -0
  215. package/rules/no-undef-init.cjs +46 -0
  216. package/rules/no-undef.cjs +51 -0
  217. package/rules/no-undefined.cjs +58 -0
  218. package/rules/no-underscore-dangle.cjs +211 -0
  219. package/rules/no-unexpected-multiline.cjs +76 -0
  220. package/rules/no-unmodified-loop-condition.cjs +849 -0
  221. package/rules/no-unneeded-ternary.cjs +112 -0
  222. package/rules/no-unreachable-loop.cjs +128 -0
  223. package/rules/no-unreachable.cjs +195 -0
  224. package/rules/no-unsafe-finally.cjs +67 -0
  225. package/rules/no-unsafe-negation.cjs +86 -0
  226. package/rules/no-unsafe-optional-chaining.cjs +164 -0
  227. package/rules/no-unused-expressions.cjs +163 -0
  228. package/rules/no-unused-labels.cjs +97 -0
  229. package/rules/no-unused-private-class-members.cjs +69 -0
  230. package/rules/no-unused-vars.cjs +639 -0
  231. package/rules/no-use-before-define.cjs +245 -0
  232. package/rules/no-useless-assignment.cjs +250 -0
  233. package/rules/no-useless-backreference.cjs +137 -0
  234. package/rules/no-useless-call.cjs +57 -0
  235. package/rules/no-useless-catch.cjs +38 -0
  236. package/rules/no-useless-computed-key.cjs +106 -0
  237. package/rules/no-useless-concat.cjs +78 -0
  238. package/rules/no-useless-constructor.cjs +152 -0
  239. package/rules/no-useless-escape.cjs +164 -0
  240. package/rules/no-useless-rename.cjs +94 -0
  241. package/rules/no-useless-return.cjs +229 -0
  242. package/rules/no-var.cjs +235 -0
  243. package/rules/no-void.cjs +39 -0
  244. package/rules/no-warning-comments.cjs +112 -0
  245. package/rules/no-whitespace-before-property.cjs +72 -0
  246. package/rules/no-with.cjs +32 -0
  247. package/rules/nonblock-statement-body-position.cjs +107 -0
  248. package/rules/object-curly-newline.cjs +194 -0
  249. package/rules/object-curly-spacing.cjs +225 -0
  250. package/rules/object-property-newline.cjs +81 -0
  251. package/rules/object-shorthand.cjs +284 -0
  252. package/rules/one-var-declaration-per-line.cjs +75 -0
  253. package/rules/one-var.cjs +378 -0
  254. package/rules/operator-assignment.cjs +146 -0
  255. package/rules/operator-linebreak.cjs +150 -0
  256. package/rules/padded-blocks.cjs +192 -0
  257. package/rules/padding-line-between-statements.cjs +377 -0
  258. package/rules/prefer-arrow-callback.cjs +185 -0
  259. package/rules/prefer-const.cjs +240 -0
  260. package/rules/prefer-destructuring.cjs +188 -0
  261. package/rules/prefer-exponentiation-operator.cjs +100 -0
  262. package/rules/prefer-named-capture-group.cjs +111 -0
  263. package/rules/prefer-numeric-literals.cjs +75 -0
  264. package/rules/prefer-object-has-own.cjs +54 -0
  265. package/rules/prefer-object-spread.cjs +170 -0
  266. package/rules/prefer-promise-reject-errors.cjs +62 -0
  267. package/rules/prefer-reflect.cjs +100 -0
  268. package/rules/prefer-regex-literals.cjs +256 -0
  269. package/rules/prefer-rest-params.cjs +80 -0
  270. package/rules/prefer-spread.cjs +57 -0
  271. package/rules/prefer-template.cjs +147 -0
  272. package/rules/preserve-caught-error.cjs +196 -0
  273. package/rules/quote-props.cjs +224 -0
  274. package/rules/quotes.cjs +187 -0
  275. package/rules/radix.cjs +124 -0
  276. package/rules/require-atomic-updates.cjs +197 -0
  277. package/rules/require-await.cjs +90 -0
  278. package/rules/require-unicode-regexp.cjs +101 -0
  279. package/rules/require-yield.cjs +56 -0
  280. package/rules/rest-spread-spacing.cjs +99 -0
  281. package/rules/semi-spacing.cjs +215 -0
  282. package/rules/semi-style.cjs +116 -0
  283. package/rules/semi.cjs +239 -0
  284. package/rules/sort-imports.cjs +140 -0
  285. package/rules/sort-keys.cjs +165 -0
  286. package/rules/sort-vars.cjs +50 -0
  287. package/rules/space-before-blocks.cjs +132 -0
  288. package/rules/space-before-function-paren.cjs +126 -0
  289. package/rules/space-in-parens.cjs +175 -0
  290. package/rules/space-infix-ops.cjs +133 -0
  291. package/rules/space-unary-ops.cjs +237 -0
  292. package/rules/spaced-comment.cjs +233 -0
  293. package/rules/strict.cjs +206 -0
  294. package/rules/switch-colon-spacing.cjs +114 -0
  295. package/rules/symbol-description.cjs +49 -0
  296. package/rules/template-curly-spacing.cjs +112 -0
  297. package/rules/template-tag-spacing.cjs +82 -0
  298. package/rules/unicode-bom.cjs +52 -0
  299. package/rules/use-isnan.cjs +144 -0
  300. package/rules/valid-typeof.cjs +104 -0
  301. package/rules/vars-on-top.cjs +94 -0
  302. package/rules/wrap-iife.cjs +131 -0
  303. package/rules/wrap-regex.cjs +57 -0
  304. package/rules/yield-star-spacing.cjs +115 -0
  305. package/rules/yoda.cjs +185 -0
@@ -0,0 +1,164 @@
1
+ //#region ../../node_modules/.pnpm/eslint@9.39.3_jiti@2.6.1/node_modules/eslint/lib/rules/no-unsafe-optional-chaining.js
2
+ /**
3
+ * @fileoverview Rule to disallow unsafe optional chaining
4
+ * @author Yeon JuAn
5
+ */
6
+ var require_no_unsafe_optional_chaining = /* @__PURE__ */ require("../common/chunk.cjs").t(((exports, module) => {
7
+ let UNSAFE_ARITHMETIC_OPERATORS = new Set([
8
+ "+",
9
+ "-",
10
+ "/",
11
+ "*",
12
+ "%",
13
+ "**"
14
+ ]), UNSAFE_ASSIGNMENT_OPERATORS = new Set([
15
+ "+=",
16
+ "-=",
17
+ "/=",
18
+ "*=",
19
+ "%=",
20
+ "**="
21
+ ]), UNSAFE_RELATIONAL_OPERATORS = new Set(["in", "instanceof"]);
22
+ /**
23
+ * Checks whether a node is a destructuring pattern or not
24
+ * @param {ASTNode} node node to check
25
+ * @returns {boolean} `true` if a node is a destructuring pattern, otherwise `false`
26
+ */
27
+ function isDestructuringPattern(node) {
28
+ return node.type === "ObjectPattern" || node.type === "ArrayPattern";
29
+ }
30
+ /** @type {import('../types').Rule.RuleModule} */
31
+ module.exports = {
32
+ meta: {
33
+ type: "problem",
34
+ defaultOptions: [{ disallowArithmeticOperators: !1 }],
35
+ docs: {
36
+ description: "Disallow use of optional chaining in contexts where the `undefined` value is not allowed",
37
+ recommended: !0,
38
+ url: "https://eslint.org/docs/latest/rules/no-unsafe-optional-chaining"
39
+ },
40
+ schema: [{
41
+ type: "object",
42
+ properties: { disallowArithmeticOperators: { type: "boolean" } },
43
+ additionalProperties: !1
44
+ }],
45
+ fixable: null,
46
+ messages: {
47
+ unsafeOptionalChain: "Unsafe usage of optional chaining. If it short-circuits with 'undefined' the evaluation will throw TypeError.",
48
+ unsafeArithmetic: "Unsafe arithmetic operation on optional chaining. It can result in NaN."
49
+ }
50
+ },
51
+ create(context) {
52
+ let [{ disallowArithmeticOperators }] = context.options;
53
+ /**
54
+ * Reports unsafe usage of optional chaining
55
+ * @param {ASTNode} node node to report
56
+ * @returns {void}
57
+ */
58
+ function reportUnsafeUsage(node) {
59
+ context.report({
60
+ messageId: "unsafeOptionalChain",
61
+ node
62
+ });
63
+ }
64
+ /**
65
+ * Reports unsafe arithmetic operation on optional chaining
66
+ * @param {ASTNode} node node to report
67
+ * @returns {void}
68
+ */
69
+ function reportUnsafeArithmetic(node) {
70
+ context.report({
71
+ messageId: "unsafeArithmetic",
72
+ node
73
+ });
74
+ }
75
+ /**
76
+ * Checks and reports if a node can short-circuit with `undefined` by optional chaining.
77
+ * @param {ASTNode} [node] node to check
78
+ * @param {Function} reportFunc report function
79
+ * @returns {void}
80
+ */
81
+ function checkUndefinedShortCircuit(node, reportFunc) {
82
+ if (node) switch (node.type) {
83
+ case "LogicalExpression":
84
+ node.operator === "||" || node.operator === "??" ? checkUndefinedShortCircuit(node.right, reportFunc) : node.operator === "&&" && (checkUndefinedShortCircuit(node.left, reportFunc), checkUndefinedShortCircuit(node.right, reportFunc));
85
+ break;
86
+ case "SequenceExpression":
87
+ checkUndefinedShortCircuit(node.expressions.at(-1), reportFunc);
88
+ break;
89
+ case "ConditionalExpression":
90
+ checkUndefinedShortCircuit(node.consequent, reportFunc), checkUndefinedShortCircuit(node.alternate, reportFunc);
91
+ break;
92
+ case "AwaitExpression":
93
+ checkUndefinedShortCircuit(node.argument, reportFunc);
94
+ break;
95
+ case "ChainExpression":
96
+ reportFunc(node);
97
+ break;
98
+ default: break;
99
+ }
100
+ }
101
+ /**
102
+ * Checks unsafe usage of optional chaining
103
+ * @param {ASTNode} node node to check
104
+ * @returns {void}
105
+ */
106
+ function checkUnsafeUsage(node) {
107
+ checkUndefinedShortCircuit(node, reportUnsafeUsage);
108
+ }
109
+ /**
110
+ * Checks unsafe arithmetic operations on optional chaining
111
+ * @param {ASTNode} node node to check
112
+ * @returns {void}
113
+ */
114
+ function checkUnsafeArithmetic(node) {
115
+ checkUndefinedShortCircuit(node, reportUnsafeArithmetic);
116
+ }
117
+ return {
118
+ "AssignmentExpression, AssignmentPattern"(node) {
119
+ isDestructuringPattern(node.left) && checkUnsafeUsage(node.right);
120
+ },
121
+ "ClassDeclaration, ClassExpression"(node) {
122
+ checkUnsafeUsage(node.superClass);
123
+ },
124
+ CallExpression(node) {
125
+ node.optional || checkUnsafeUsage(node.callee);
126
+ },
127
+ NewExpression(node) {
128
+ checkUnsafeUsage(node.callee);
129
+ },
130
+ VariableDeclarator(node) {
131
+ isDestructuringPattern(node.id) && checkUnsafeUsage(node.init);
132
+ },
133
+ MemberExpression(node) {
134
+ node.optional || checkUnsafeUsage(node.object);
135
+ },
136
+ TaggedTemplateExpression(node) {
137
+ checkUnsafeUsage(node.tag);
138
+ },
139
+ ForOfStatement(node) {
140
+ checkUnsafeUsage(node.right);
141
+ },
142
+ SpreadElement(node) {
143
+ node.parent && node.parent.type !== "ObjectExpression" && checkUnsafeUsage(node.argument);
144
+ },
145
+ BinaryExpression(node) {
146
+ UNSAFE_RELATIONAL_OPERATORS.has(node.operator) && checkUnsafeUsage(node.right), disallowArithmeticOperators && UNSAFE_ARITHMETIC_OPERATORS.has(node.operator) && (checkUnsafeArithmetic(node.right), checkUnsafeArithmetic(node.left));
147
+ },
148
+ WithStatement(node) {
149
+ checkUnsafeUsage(node.object);
150
+ },
151
+ UnaryExpression(node) {
152
+ disallowArithmeticOperators && UNSAFE_ARITHMETIC_OPERATORS.has(node.operator) && checkUnsafeArithmetic(node.argument);
153
+ },
154
+ AssignmentExpression(node) {
155
+ disallowArithmeticOperators && UNSAFE_ASSIGNMENT_OPERATORS.has(node.operator) && checkUnsafeArithmetic(node.right);
156
+ }
157
+ };
158
+ }
159
+ };
160
+ }));
161
+ //#endregion
162
+ //#region src-js/generated/plugin-eslint/rules/no-unsafe-optional-chaining.cjs
163
+ module.exports = require_no_unsafe_optional_chaining().create;
164
+ //#endregion
@@ -0,0 +1,163 @@
1
+ const require_chunk = require("../common/chunk.cjs"), require_ast_utils$1 = require("../common/ast-utils.cjs");
2
+ //#region ../../node_modules/.pnpm/eslint@9.39.3_jiti@2.6.1/node_modules/eslint/lib/rules/no-unused-expressions.js
3
+ /**
4
+ * @fileoverview Flag expressions in statement position that do not side effect
5
+ * @author Michael Ficarra
6
+ */
7
+ var require_no_unused_expressions = /* @__PURE__ */ require_chunk.t(((exports, module) => {
8
+ let astUtils = require_ast_utils$1.t();
9
+ /**
10
+ * Returns `true`.
11
+ * @returns {boolean} `true`.
12
+ */
13
+ function alwaysTrue() {
14
+ return !0;
15
+ }
16
+ /**
17
+ * Returns `false`.
18
+ * @returns {boolean} `false`.
19
+ */
20
+ function alwaysFalse() {
21
+ return !1;
22
+ }
23
+ /** @type {import('../types').Rule.RuleModule} */
24
+ module.exports = {
25
+ meta: {
26
+ dialects: ["javascript", "typescript"],
27
+ language: "javascript",
28
+ type: "suggestion",
29
+ docs: {
30
+ description: "Disallow unused expressions",
31
+ recommended: !1,
32
+ url: "https://eslint.org/docs/latest/rules/no-unused-expressions"
33
+ },
34
+ schema: [{
35
+ type: "object",
36
+ properties: {
37
+ allowShortCircuit: { type: "boolean" },
38
+ allowTernary: { type: "boolean" },
39
+ allowTaggedTemplates: { type: "boolean" },
40
+ enforceForJSX: { type: "boolean" },
41
+ ignoreDirectives: { type: "boolean" }
42
+ },
43
+ additionalProperties: !1
44
+ }],
45
+ defaultOptions: [{
46
+ allowShortCircuit: !1,
47
+ allowTernary: !1,
48
+ allowTaggedTemplates: !1,
49
+ enforceForJSX: !1,
50
+ ignoreDirectives: !1
51
+ }],
52
+ messages: { unusedExpression: "Expected an assignment or function call and instead saw an expression." }
53
+ },
54
+ create(context) {
55
+ let [{ allowShortCircuit, allowTernary, allowTaggedTemplates, enforceForJSX, ignoreDirectives }] = context.options;
56
+ /**
57
+ * Has AST suggesting a directive.
58
+ * @param {ASTNode} node any node
59
+ * @returns {boolean} whether the given node structurally represents a directive
60
+ */
61
+ function looksLikeDirective(node) {
62
+ return node.type === "ExpressionStatement" && node.expression.type === "Literal" && typeof node.expression.value == "string";
63
+ }
64
+ /**
65
+ * Gets the leading sequence of members in a list that pass the predicate.
66
+ * @param {Function} predicate ([a] -> Boolean) the function used to make the determination
67
+ * @param {a[]} list the input list
68
+ * @returns {a[]} the leading sequence of members in the given list that pass the given predicate
69
+ */
70
+ function takeWhile(predicate, list) {
71
+ for (let i = 0; i < list.length; ++i) if (!predicate(list[i])) return list.slice(0, i);
72
+ return list.slice();
73
+ }
74
+ /**
75
+ * Gets leading directives nodes in a Node body.
76
+ * @param {ASTNode} node a Program or BlockStatement node
77
+ * @returns {ASTNode[]} the leading sequence of directive nodes in the given node's body
78
+ */
79
+ function directives(node) {
80
+ return takeWhile(looksLikeDirective, node.body);
81
+ }
82
+ /**
83
+ * Detect if a Node is a directive.
84
+ * @param {ASTNode} node any node
85
+ * @returns {boolean} whether the given node is considered a directive in its current position
86
+ */
87
+ function isDirective(node) {
88
+ /**
89
+ * https://tc39.es/ecma262/#directive-prologue
90
+ *
91
+ * Only `FunctionBody`, `ScriptBody` and `ModuleBody` can have directive prologue.
92
+ * Class static blocks do not have directive prologue.
93
+ */
94
+ return astUtils.isTopLevelExpressionStatement(node) && directives(node.parent).includes(node);
95
+ }
96
+ /**
97
+ * The member functions return `true` if the type has no side-effects.
98
+ * Unknown nodes are handled as `false`, then this rule ignores those.
99
+ */
100
+ let Checker = Object.assign(Object.create(null), {
101
+ isDisallowed(node) {
102
+ return (Checker[node.type] || alwaysFalse)(node);
103
+ },
104
+ ArrayExpression: alwaysTrue,
105
+ ArrowFunctionExpression: alwaysTrue,
106
+ BinaryExpression: alwaysTrue,
107
+ ChainExpression(node) {
108
+ return Checker.isDisallowed(node.expression);
109
+ },
110
+ ClassExpression: alwaysTrue,
111
+ ConditionalExpression(node) {
112
+ return allowTernary ? Checker.isDisallowed(node.consequent) || Checker.isDisallowed(node.alternate) : !0;
113
+ },
114
+ FunctionExpression: alwaysTrue,
115
+ Identifier: alwaysTrue,
116
+ JSXElement() {
117
+ return enforceForJSX;
118
+ },
119
+ JSXFragment() {
120
+ return enforceForJSX;
121
+ },
122
+ Literal: alwaysTrue,
123
+ LogicalExpression(node) {
124
+ return allowShortCircuit ? Checker.isDisallowed(node.right) : !0;
125
+ },
126
+ MemberExpression: alwaysTrue,
127
+ MetaProperty: alwaysTrue,
128
+ ObjectExpression: alwaysTrue,
129
+ SequenceExpression: alwaysTrue,
130
+ TaggedTemplateExpression() {
131
+ return !allowTaggedTemplates;
132
+ },
133
+ TemplateLiteral: alwaysTrue,
134
+ ThisExpression: alwaysTrue,
135
+ UnaryExpression(node) {
136
+ return node.operator !== "void" && node.operator !== "delete";
137
+ },
138
+ TSAsExpression(node) {
139
+ return Checker.isDisallowed(node.expression);
140
+ },
141
+ TSTypeAssertion(node) {
142
+ return Checker.isDisallowed(node.expression);
143
+ },
144
+ TSNonNullExpression(node) {
145
+ return Checker.isDisallowed(node.expression);
146
+ },
147
+ TSInstantiationExpression(node) {
148
+ return Checker.isDisallowed(node.expression);
149
+ }
150
+ });
151
+ return { ExpressionStatement(node) {
152
+ Checker.isDisallowed(node.expression) && !astUtils.isDirective(node) && !(ignoreDirectives && isDirective(node)) && context.report({
153
+ node,
154
+ messageId: "unusedExpression"
155
+ });
156
+ } };
157
+ }
158
+ };
159
+ }));
160
+ //#endregion
161
+ //#region src-js/generated/plugin-eslint/rules/no-unused-expressions.cjs
162
+ module.exports = require_no_unused_expressions().create;
163
+ //#endregion
@@ -0,0 +1,97 @@
1
+ const require_chunk = require("../common/chunk.cjs"), require_ast_utils$1 = require("../common/ast-utils.cjs");
2
+ //#region ../../node_modules/.pnpm/eslint@9.39.3_jiti@2.6.1/node_modules/eslint/lib/rules/no-unused-labels.js
3
+ /**
4
+ * @fileoverview Rule to disallow unused labels.
5
+ * @author Toru Nagashima
6
+ */
7
+ var require_no_unused_labels = /* @__PURE__ */ require_chunk.t(((exports, module) => {
8
+ let astUtils = require_ast_utils$1.t();
9
+ /** @type {import('../types').Rule.RuleModule} */
10
+ module.exports = {
11
+ meta: {
12
+ type: "suggestion",
13
+ docs: {
14
+ description: "Disallow unused labels",
15
+ recommended: !0,
16
+ url: "https://eslint.org/docs/latest/rules/no-unused-labels"
17
+ },
18
+ schema: [],
19
+ fixable: "code",
20
+ messages: { unused: "'{{name}}:' is defined but never used." }
21
+ },
22
+ create(context) {
23
+ let sourceCode = context.sourceCode, scopeInfo = null;
24
+ /**
25
+ * Adds a scope info to the stack.
26
+ * @param {ASTNode} node A node to add. This is a LabeledStatement.
27
+ * @returns {void}
28
+ */
29
+ function enterLabeledScope(node) {
30
+ scopeInfo = {
31
+ label: node.label.name,
32
+ used: !1,
33
+ upper: scopeInfo
34
+ };
35
+ }
36
+ /**
37
+ * Checks if a `LabeledStatement` node is fixable.
38
+ * For a node to be fixable, there must be no comments between the label and the body.
39
+ * Furthermore, is must be possible to remove the label without turning the body statement into a
40
+ * directive after other fixes are applied.
41
+ * @param {ASTNode} node The node to evaluate.
42
+ * @returns {boolean} Whether or not the node is fixable.
43
+ */
44
+ function isFixable(node) {
45
+ if (sourceCode.getTokenAfter(node.label, { includeComments: !0 }) !== sourceCode.getTokenBefore(node.body, { includeComments: !0 })) return !1;
46
+ let ancestor = node.parent;
47
+ for (; ancestor.type === "LabeledStatement";) ancestor = ancestor.parent;
48
+ if (ancestor.type === "Program" || ancestor.type === "BlockStatement" && astUtils.isFunction(ancestor.parent)) {
49
+ let { body } = node;
50
+ if (body.type === "ExpressionStatement" && (body.expression.type === "Literal" && typeof body.expression.value == "string" || astUtils.isStaticTemplateLiteral(body.expression))) return !1;
51
+ }
52
+ return !0;
53
+ }
54
+ /**
55
+ * Removes the top of the stack.
56
+ * At the same time, this reports the label if it's never used.
57
+ * @param {ASTNode} node A node to report. This is a LabeledStatement.
58
+ * @returns {void}
59
+ */
60
+ function exitLabeledScope(node) {
61
+ scopeInfo.used || context.report({
62
+ node: node.label,
63
+ messageId: "unused",
64
+ data: node.label,
65
+ fix: isFixable(node) ? (fixer) => fixer.removeRange([node.range[0], node.body.range[0]]) : null
66
+ }), scopeInfo = scopeInfo.upper;
67
+ }
68
+ /**
69
+ * Marks the label of a given node as used.
70
+ * @param {ASTNode} node A node to mark. This is a BreakStatement or
71
+ * ContinueStatement.
72
+ * @returns {void}
73
+ */
74
+ function markAsUsed(node) {
75
+ if (!node.label) return;
76
+ let label = node.label.name, info = scopeInfo;
77
+ for (; info;) {
78
+ if (info.label === label) {
79
+ info.used = !0;
80
+ break;
81
+ }
82
+ info = info.upper;
83
+ }
84
+ }
85
+ return {
86
+ LabeledStatement: enterLabeledScope,
87
+ "LabeledStatement:exit": exitLabeledScope,
88
+ BreakStatement: markAsUsed,
89
+ ContinueStatement: markAsUsed
90
+ };
91
+ }
92
+ };
93
+ }));
94
+ //#endregion
95
+ //#region src-js/generated/plugin-eslint/rules/no-unused-labels.cjs
96
+ module.exports = require_no_unused_labels().create;
97
+ //#endregion
@@ -0,0 +1,69 @@
1
+ //#region ../../node_modules/.pnpm/eslint@9.39.3_jiti@2.6.1/node_modules/eslint/lib/rules/no-unused-private-class-members.js
2
+ /**
3
+ * @fileoverview Rule to flag declared but unused private class members
4
+ * @author Tim van der Lippe
5
+ */
6
+ var require_no_unused_private_class_members = /* @__PURE__ */ require("../common/chunk.cjs").t(((exports, module) => {
7
+ /** @type {import('../types').Rule.RuleModule} */
8
+ module.exports = {
9
+ meta: {
10
+ type: "problem",
11
+ docs: {
12
+ description: "Disallow unused private class members",
13
+ recommended: !0,
14
+ url: "https://eslint.org/docs/latest/rules/no-unused-private-class-members"
15
+ },
16
+ schema: [],
17
+ messages: { unusedPrivateClassMember: "'{{classMemberName}}' is defined but never used." }
18
+ },
19
+ create(context) {
20
+ let trackedClasses = [];
21
+ /**
22
+ * Check whether the current node is in a write only assignment.
23
+ * @param {ASTNode} privateIdentifierNode Node referring to a private identifier
24
+ * @returns {boolean} Whether the node is in a write only assignment
25
+ * @private
26
+ */
27
+ function isWriteOnlyAssignment(privateIdentifierNode) {
28
+ let parentStatement = privateIdentifierNode.parent.parent, isAssignmentExpression = parentStatement.type === "AssignmentExpression";
29
+ return !isAssignmentExpression && parentStatement.type !== "ForInStatement" && parentStatement.type !== "ForOfStatement" && parentStatement.type !== "AssignmentPattern" || parentStatement.left !== privateIdentifierNode.parent ? !1 : isAssignmentExpression && parentStatement.operator !== "=" ? parentStatement.parent.type === "ExpressionStatement" : !0;
30
+ }
31
+ return {
32
+ ClassBody(classBodyNode) {
33
+ let privateMembers = /* @__PURE__ */ new Map();
34
+ trackedClasses.unshift(privateMembers);
35
+ for (let bodyMember of classBodyNode.body) (bodyMember.type === "PropertyDefinition" || bodyMember.type === "MethodDefinition") && bodyMember.key.type === "PrivateIdentifier" && privateMembers.set(bodyMember.key.name, {
36
+ declaredNode: bodyMember,
37
+ isAccessor: bodyMember.type === "MethodDefinition" && (bodyMember.kind === "set" || bodyMember.kind === "get")
38
+ });
39
+ },
40
+ PrivateIdentifier(privateIdentifierNode) {
41
+ let classBody = trackedClasses.find((classProperties) => classProperties.has(privateIdentifierNode.name));
42
+ if (!classBody) return;
43
+ let memberDefinition = classBody.get(privateIdentifierNode.name);
44
+ if (memberDefinition.isUsed || privateIdentifierNode.parent.type === "PropertyDefinition" || privateIdentifierNode.parent.type === "MethodDefinition") return;
45
+ if (memberDefinition.isAccessor) {
46
+ memberDefinition.isUsed = !0;
47
+ return;
48
+ }
49
+ if (isWriteOnlyAssignment(privateIdentifierNode)) return;
50
+ let wrappingExpressionType = privateIdentifierNode.parent.parent.type, parentOfWrappingExpressionType = privateIdentifierNode.parent.parent.parent.type;
51
+ wrappingExpressionType === "UpdateExpression" && parentOfWrappingExpressionType === "ExpressionStatement" || wrappingExpressionType === "Property" && parentOfWrappingExpressionType === "ObjectPattern" && privateIdentifierNode.parent.parent.value === privateIdentifierNode.parent || wrappingExpressionType !== "RestElement" && wrappingExpressionType !== "ArrayPattern" && (memberDefinition.isUsed = !0);
52
+ },
53
+ "ClassBody:exit"() {
54
+ let unusedPrivateMembers = trackedClasses.shift();
55
+ for (let [classMemberName, { declaredNode, isUsed }] of unusedPrivateMembers.entries()) isUsed || context.report({
56
+ node: declaredNode,
57
+ loc: declaredNode.key.loc,
58
+ messageId: "unusedPrivateClassMember",
59
+ data: { classMemberName: `#${classMemberName}` }
60
+ });
61
+ }
62
+ };
63
+ }
64
+ };
65
+ }));
66
+ //#endregion
67
+ //#region src-js/generated/plugin-eslint/rules/no-unused-private-class-members.cjs
68
+ module.exports = require_no_unused_private_class_members().create;
69
+ //#endregion