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,100 @@
1
+ const require_chunk = require("../common/chunk.cjs"), require_ast_utils$1 = require("../common/ast-utils.cjs"), require_eslint_utils$1 = require("../common/eslint-utils.cjs");
2
+ //#region ../../node_modules/.pnpm/eslint@9.39.3_jiti@2.6.1/node_modules/eslint/lib/rules/prefer-exponentiation-operator.js
3
+ /**
4
+ * @fileoverview Rule to disallow Math.pow in favor of the ** operator
5
+ * @author Milos Djermanovic
6
+ */
7
+ var require_prefer_exponentiation_operator = /* @__PURE__ */ require_chunk.t(((exports, module) => {
8
+ let astUtils = require_ast_utils$1.t(), { CALL, ReferenceTracker } = require_eslint_utils$1.t(), PRECEDENCE_OF_EXPONENTIATION_EXPR = astUtils.getPrecedence({
9
+ type: "BinaryExpression",
10
+ operator: "**"
11
+ });
12
+ /**
13
+ * Determines whether the given node needs parens if used as the base in an exponentiation binary expression.
14
+ * @param {ASTNode} base The node to check.
15
+ * @returns {boolean} `true` if the node needs to be parenthesised.
16
+ */
17
+ function doesBaseNeedParens(base) {
18
+ return astUtils.getPrecedence(base) <= PRECEDENCE_OF_EXPONENTIATION_EXPR || base.type === "AwaitExpression" || base.type === "UnaryExpression";
19
+ }
20
+ /**
21
+ * Determines whether the given node needs parens if used as the exponent in an exponentiation binary expression.
22
+ * @param {ASTNode} exponent The node to check.
23
+ * @returns {boolean} `true` if the node needs to be parenthesised.
24
+ */
25
+ function doesExponentNeedParens(exponent) {
26
+ return astUtils.getPrecedence(exponent) < PRECEDENCE_OF_EXPONENTIATION_EXPR;
27
+ }
28
+ /**
29
+ * Determines whether an exponentiation binary expression at the place of the given node would need parens.
30
+ * @param {ASTNode} node A node that would be replaced by an exponentiation binary expression.
31
+ * @param {SourceCode} sourceCode A SourceCode object.
32
+ * @returns {boolean} `true` if the expression needs to be parenthesised.
33
+ */
34
+ function doesExponentiationExpressionNeedParens(node, sourceCode) {
35
+ let parent = node.parent.type === "ChainExpression" ? node.parent.parent : node.parent, parentPrecedence = astUtils.getPrecedence(parent);
36
+ return (parent.type === "ClassDeclaration" || parent.type.endsWith("Expression") && (parentPrecedence === -1 || parentPrecedence >= PRECEDENCE_OF_EXPONENTIATION_EXPR) && !(parent.type === "BinaryExpression" && parent.operator === "**" && parent.right === node) && !((parent.type === "CallExpression" || parent.type === "NewExpression") && parent.arguments.includes(node)) && !(parent.type === "MemberExpression" && parent.computed && parent.property === node) && parent.type !== "ArrayExpression") && !astUtils.isParenthesised(sourceCode, node);
37
+ }
38
+ /**
39
+ * Optionally parenthesizes given text.
40
+ * @param {string} text The text to parenthesize.
41
+ * @param {boolean} shouldParenthesize If `true`, the text will be parenthesised.
42
+ * @returns {string} parenthesised or unchanged text.
43
+ */
44
+ function parenthesizeIfShould(text, shouldParenthesize) {
45
+ return shouldParenthesize ? `(${text})` : text;
46
+ }
47
+ /** @type {import('../types').Rule.RuleModule} */
48
+ module.exports = {
49
+ meta: {
50
+ type: "suggestion",
51
+ docs: {
52
+ description: "Disallow the use of `Math.pow` in favor of the `**` operator",
53
+ recommended: !1,
54
+ frozen: !0,
55
+ url: "https://eslint.org/docs/latest/rules/prefer-exponentiation-operator"
56
+ },
57
+ schema: [],
58
+ fixable: "code",
59
+ messages: { useExponentiation: "Use the '**' operator instead of 'Math.pow'." }
60
+ },
61
+ create(context) {
62
+ let sourceCode = context.sourceCode;
63
+ /**
64
+ * Reports the given node.
65
+ * @param {ASTNode} node 'Math.pow()' node to report.
66
+ * @returns {void}
67
+ */
68
+ function report(node) {
69
+ context.report({
70
+ node,
71
+ messageId: "useExponentiation",
72
+ fix(fixer) {
73
+ if (node.arguments.length !== 2 || node.arguments.some((arg) => arg.type === "SpreadElement") || sourceCode.getCommentsInside(node).length > 0) return null;
74
+ let base = node.arguments[0], exponent = node.arguments[1], baseText = sourceCode.getText(base), exponentText = sourceCode.getText(exponent), shouldParenthesizeBase = doesBaseNeedParens(base), shouldParenthesizeExponent = doesExponentNeedParens(exponent), shouldParenthesizeAll = doesExponentiationExpressionNeedParens(node, sourceCode), prefix = "", suffix = "";
75
+ if (!shouldParenthesizeAll) {
76
+ if (!shouldParenthesizeBase) {
77
+ let firstReplacementToken = sourceCode.getFirstToken(base), tokenBefore = sourceCode.getTokenBefore(node);
78
+ tokenBefore && tokenBefore.range[1] === node.range[0] && !astUtils.canTokensBeAdjacent(tokenBefore, firstReplacementToken) && (prefix = " ");
79
+ }
80
+ if (!shouldParenthesizeExponent) {
81
+ let lastReplacementToken = sourceCode.getLastToken(exponent), tokenAfter = sourceCode.getTokenAfter(node);
82
+ tokenAfter && node.range[1] === tokenAfter.range[0] && !astUtils.canTokensBeAdjacent(lastReplacementToken, tokenAfter) && (suffix = " ");
83
+ }
84
+ }
85
+ let replacement = parenthesizeIfShould(`${parenthesizeIfShould(baseText, shouldParenthesizeBase)}**${parenthesizeIfShould(exponentText, shouldParenthesizeExponent)}`, shouldParenthesizeAll);
86
+ return fixer.replaceText(node, `${prefix}${replacement}${suffix}`);
87
+ }
88
+ });
89
+ }
90
+ return { Program(node) {
91
+ let tracker = new ReferenceTracker(sourceCode.getScope(node)), trackMap = { Math: { pow: { [CALL]: !0 } } };
92
+ for (let { node: refNode } of tracker.iterateGlobalReferences(trackMap)) report(refNode);
93
+ } };
94
+ }
95
+ };
96
+ }));
97
+ //#endregion
98
+ //#region src-js/generated/plugin-eslint/rules/prefer-exponentiation-operator.cjs
99
+ module.exports = require_prefer_exponentiation_operator().create;
100
+ //#endregion
@@ -0,0 +1,111 @@
1
+ const require_chunk = require("../common/chunk.cjs"), require_eslint_utils$1 = require("../common/eslint-utils.cjs"), require_regexpp$1 = require("../common/regexpp.cjs");
2
+ //#region ../../node_modules/.pnpm/eslint@9.39.3_jiti@2.6.1/node_modules/eslint/lib/rules/prefer-named-capture-group.js
3
+ /**
4
+ * @fileoverview Rule to enforce requiring named capture groups in regular expression.
5
+ * @author Pig Fang <https://github.com/g-plane>
6
+ */
7
+ var require_prefer_named_capture_group = /* @__PURE__ */ require_chunk.t(((exports, module) => {
8
+ let { CALL, CONSTRUCT, ReferenceTracker, getStringIfConstant } = require_eslint_utils$1.t(), regexpp = require_regexpp$1.t(), parser = new regexpp.RegExpParser();
9
+ /**
10
+ * Creates fixer suggestions for the regex, if statically determinable.
11
+ * @param {number} groupStart Starting index of the regex group.
12
+ * @param {string} pattern The regular expression pattern to be checked.
13
+ * @param {string} rawText Source text of the regexNode.
14
+ * @param {ASTNode} regexNode AST node which contains the regular expression.
15
+ * @returns {Array<SuggestedEdit>} Fixer suggestions for the regex, if statically determinable.
16
+ */
17
+ function suggestIfPossible(groupStart, pattern, rawText, regexNode) {
18
+ switch (regexNode.type) {
19
+ case "Literal":
20
+ if (typeof regexNode.value == "string" && rawText.includes("\\")) return null;
21
+ break;
22
+ case "TemplateLiteral":
23
+ if (regexNode.expressions.length || rawText.slice(1, -1) !== pattern) return null;
24
+ break;
25
+ default: return null;
26
+ }
27
+ let start = regexNode.range[0] + groupStart + 2;
28
+ return [{
29
+ fix(fixer) {
30
+ let highestTempCount = (pattern.match(/temp\d+/gu) || []).reduce((previous, next) => Math.max(previous, Number(next.slice(4))), 0);
31
+ return fixer.insertTextBeforeRange([start, start], `?<temp${highestTempCount + 1}>`);
32
+ },
33
+ messageId: "addGroupName"
34
+ }, {
35
+ fix(fixer) {
36
+ return fixer.insertTextBeforeRange([start, start], "?:");
37
+ },
38
+ messageId: "addNonCapture"
39
+ }];
40
+ }
41
+ /** @type {import('../types').Rule.RuleModule} */
42
+ module.exports = {
43
+ meta: {
44
+ type: "suggestion",
45
+ docs: {
46
+ description: "Enforce using named capture group in regular expression",
47
+ recommended: !1,
48
+ url: "https://eslint.org/docs/latest/rules/prefer-named-capture-group"
49
+ },
50
+ hasSuggestions: !0,
51
+ schema: [],
52
+ messages: {
53
+ addGroupName: "Add name to capture group.",
54
+ addNonCapture: "Convert group to non-capturing.",
55
+ required: "Capture group '{{group}}' should be converted to a named or non-capturing group."
56
+ }
57
+ },
58
+ create(context) {
59
+ let sourceCode = context.sourceCode;
60
+ /**
61
+ * Function to check regular expression.
62
+ * @param {string} pattern The regular expression pattern to be checked.
63
+ * @param {ASTNode} node AST node which contains the regular expression or a call/new expression.
64
+ * @param {ASTNode} regexNode AST node which contains the regular expression.
65
+ * @param {string|null} flags The regular expression flags to be checked.
66
+ * @returns {void}
67
+ */
68
+ function checkRegex(pattern, node, regexNode, flags) {
69
+ let ast;
70
+ try {
71
+ ast = parser.parsePattern(pattern, 0, pattern.length, {
72
+ unicode: !!(flags && flags.includes("u")),
73
+ unicodeSets: !!(flags && flags.includes("v"))
74
+ });
75
+ } catch {
76
+ return;
77
+ }
78
+ regexpp.visitRegExpAST(ast, { onCapturingGroupEnter(group) {
79
+ if (!group.name) {
80
+ let rawText = sourceCode.getText(regexNode), suggest = suggestIfPossible(group.start, pattern, rawText, regexNode);
81
+ context.report({
82
+ node,
83
+ messageId: "required",
84
+ data: { group: group.raw },
85
+ suggest
86
+ });
87
+ }
88
+ } });
89
+ }
90
+ return {
91
+ Literal(node) {
92
+ node.regex && checkRegex(node.regex.pattern, node, node, node.regex.flags);
93
+ },
94
+ Program(node) {
95
+ let tracker = new ReferenceTracker(sourceCode.getScope(node)), traceMap = { RegExp: {
96
+ [CALL]: !0,
97
+ [CONSTRUCT]: !0
98
+ } };
99
+ for (let { node: refNode } of tracker.iterateGlobalReferences(traceMap)) {
100
+ let regex = getStringIfConstant(refNode.arguments[0]), flags = getStringIfConstant(refNode.arguments[1]);
101
+ regex && checkRegex(regex, refNode, refNode.arguments[0], flags);
102
+ }
103
+ }
104
+ };
105
+ }
106
+ };
107
+ }));
108
+ //#endregion
109
+ //#region src-js/generated/plugin-eslint/rules/prefer-named-capture-group.cjs
110
+ module.exports = require_prefer_named_capture_group().create;
111
+ //#endregion
@@ -0,0 +1,75 @@
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/prefer-numeric-literals.js
3
+ /**
4
+ * @fileoverview Rule to disallow `parseInt()` in favor of binary, octal, and hexadecimal literals
5
+ * @author Annie Zhang, Henry Zhu
6
+ */
7
+ var require_prefer_numeric_literals = /* @__PURE__ */ require_chunk.t(((exports, module) => {
8
+ let astUtils = require_ast_utils$1.t(), radixMap = new Map([
9
+ [2, {
10
+ system: "binary",
11
+ literalPrefix: "0b"
12
+ }],
13
+ [8, {
14
+ system: "octal",
15
+ literalPrefix: "0o"
16
+ }],
17
+ [16, {
18
+ system: "hexadecimal",
19
+ literalPrefix: "0x"
20
+ }]
21
+ ]);
22
+ /**
23
+ * Checks to see if a CallExpression's callee node is `parseInt` or
24
+ * `Number.parseInt`.
25
+ * @param {ASTNode} calleeNode The callee node to evaluate.
26
+ * @returns {boolean} True if the callee is `parseInt` or `Number.parseInt`,
27
+ * false otherwise.
28
+ */
29
+ function isParseInt(calleeNode) {
30
+ return astUtils.isSpecificId(calleeNode, "parseInt") || astUtils.isSpecificMemberAccess(calleeNode, "Number", "parseInt");
31
+ }
32
+ /** @type {import('../types').Rule.RuleModule} */
33
+ module.exports = {
34
+ meta: {
35
+ type: "suggestion",
36
+ docs: {
37
+ description: "Disallow `parseInt()` and `Number.parseInt()` in favor of binary, octal, and hexadecimal literals",
38
+ recommended: !1,
39
+ frozen: !0,
40
+ url: "https://eslint.org/docs/latest/rules/prefer-numeric-literals"
41
+ },
42
+ schema: [],
43
+ messages: { useLiteral: "Use {{system}} literals instead of {{functionName}}()." },
44
+ fixable: "code"
45
+ },
46
+ create(context) {
47
+ let sourceCode = context.sourceCode;
48
+ return { "CallExpression[arguments.length=2]"(node) {
49
+ let [strNode, radixNode] = node.arguments, str = astUtils.getStaticStringValue(strNode), radix = radixNode.value;
50
+ if (str !== null && astUtils.isStringLiteral(strNode) && radixNode.type === "Literal" && typeof radix == "number" && radixMap.has(radix) && isParseInt(node.callee)) {
51
+ let { system, literalPrefix } = radixMap.get(radix);
52
+ context.report({
53
+ node,
54
+ messageId: "useLiteral",
55
+ data: {
56
+ system,
57
+ functionName: sourceCode.getText(node.callee)
58
+ },
59
+ fix(fixer) {
60
+ if (sourceCode.getCommentsInside(node).length) return null;
61
+ let replacement = `${literalPrefix}${str}`;
62
+ if (+replacement !== parseInt(str, radix)) return null;
63
+ let tokenBefore = sourceCode.getTokenBefore(node), tokenAfter = sourceCode.getTokenAfter(node), prefix = "", suffix = "";
64
+ return tokenBefore && tokenBefore.range[1] === node.range[0] && !astUtils.canTokensBeAdjacent(tokenBefore, replacement) && (prefix = " "), tokenAfter && node.range[1] === tokenAfter.range[0] && !astUtils.canTokensBeAdjacent(replacement, tokenAfter) && (suffix = " "), fixer.replaceText(node, `${prefix}${replacement}${suffix}`);
65
+ }
66
+ });
67
+ }
68
+ } };
69
+ }
70
+ };
71
+ }));
72
+ //#endregion
73
+ //#region src-js/generated/plugin-eslint/rules/prefer-numeric-literals.cjs
74
+ module.exports = require_prefer_numeric_literals().create;
75
+ //#endregion
@@ -0,0 +1,54 @@
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/prefer-object-has-own.js
3
+ /**
4
+ * @fileoverview Prefers Object.hasOwn() instead of Object.prototype.hasOwnProperty.call()
5
+ * @author Nitin Kumar
6
+ * @author Gautam Arora
7
+ */
8
+ var require_prefer_object_has_own = /* @__PURE__ */ require_chunk.t(((exports, module) => {
9
+ let astUtils = require_ast_utils$1.t();
10
+ /**
11
+ * Checks if the given node is considered to be an access to a property of `Object.prototype`.
12
+ * @param {ASTNode} node `MemberExpression` node to evaluate.
13
+ * @returns {boolean} `true` if `node.object` is `Object`, `Object.prototype`, or `{}` (empty 'ObjectExpression' node).
14
+ */
15
+ function hasLeftHandObject(node) {
16
+ if (node.object.type === "ObjectExpression" && node.object.properties.length === 0) return !0;
17
+ let objectNodeToCheck = node.object.type === "MemberExpression" && astUtils.getStaticPropertyName(node.object) === "prototype" ? node.object.object : node.object;
18
+ return objectNodeToCheck.type === "Identifier" && objectNodeToCheck.name === "Object";
19
+ }
20
+ /** @type {import('../types').Rule.RuleModule} */
21
+ module.exports = {
22
+ meta: {
23
+ type: "suggestion",
24
+ docs: {
25
+ description: "Disallow use of `Object.prototype.hasOwnProperty.call()` and prefer use of `Object.hasOwn()`",
26
+ recommended: !1,
27
+ url: "https://eslint.org/docs/latest/rules/prefer-object-has-own"
28
+ },
29
+ schema: [],
30
+ messages: { useHasOwn: "Use 'Object.hasOwn()' instead of 'Object.prototype.hasOwnProperty.call()'." },
31
+ fixable: "code"
32
+ },
33
+ create(context) {
34
+ let sourceCode = context.sourceCode;
35
+ return { CallExpression(node) {
36
+ if (!(node.callee.type === "MemberExpression" && node.callee.object.type === "MemberExpression")) return;
37
+ let calleePropertyName = astUtils.getStaticPropertyName(node.callee), objectPropertyName = astUtils.getStaticPropertyName(node.callee.object), isObject = hasLeftHandObject(node.callee.object), scope = sourceCode.getScope(node), variable = astUtils.getVariableByName(scope, "Object");
38
+ calleePropertyName === "call" && objectPropertyName === "hasOwnProperty" && isObject && variable && variable.scope.type === "global" && context.report({
39
+ node,
40
+ messageId: "useHasOwn",
41
+ fix(fixer) {
42
+ if (sourceCode.getCommentsInside(node.callee).length > 0) return null;
43
+ let tokenJustBeforeNode = sourceCode.getTokenBefore(node.callee, { includeComments: !0 });
44
+ return tokenJustBeforeNode && tokenJustBeforeNode.range[1] === node.callee.range[0] && !astUtils.canTokensBeAdjacent(tokenJustBeforeNode, "Object.hasOwn") ? fixer.replaceText(node.callee, " Object.hasOwn") : fixer.replaceText(node.callee, "Object.hasOwn");
45
+ }
46
+ });
47
+ } };
48
+ }
49
+ };
50
+ }));
51
+ //#endregion
52
+ //#region src-js/generated/plugin-eslint/rules/prefer-object-has-own.cjs
53
+ module.exports = require_prefer_object_has_own().create;
54
+ //#endregion
@@ -0,0 +1,170 @@
1
+ const require_chunk = require("../common/chunk.cjs"), require_ast_utils$1 = require("../common/ast-utils.cjs"), require_eslint_utils$1 = require("../common/eslint-utils.cjs");
2
+ //#region ../../node_modules/.pnpm/eslint@9.39.3_jiti@2.6.1/node_modules/eslint/lib/rules/prefer-object-spread.js
3
+ /**
4
+ * @fileoverview Rule to disallow using `Object.assign` with an object literal as the first argument and prefer the use of object spread instead
5
+ * @author Sharmila Jesupaul
6
+ */
7
+ var require_prefer_object_spread = /* @__PURE__ */ require_chunk.t(((exports, module) => {
8
+ let { CALL, ReferenceTracker } = require_eslint_utils$1.t(), { isCommaToken, isOpeningParenToken, isClosingParenToken, isParenthesised } = require_ast_utils$1.t(), ANY_SPACE = /\s/u;
9
+ /**
10
+ * Helper that checks if the Object.assign call has array spread
11
+ * @param {ASTNode} node The node that the rule warns on
12
+ * @returns {boolean} - Returns true if the Object.assign call has array spread
13
+ */
14
+ function hasArraySpread(node) {
15
+ return node.arguments.some((arg) => arg.type === "SpreadElement");
16
+ }
17
+ /**
18
+ * Determines whether the given node is an accessor property (getter/setter).
19
+ * @param {ASTNode} node Node to check.
20
+ * @returns {boolean} `true` if the node is a getter or a setter.
21
+ */
22
+ function isAccessorProperty(node) {
23
+ return node.type === "Property" && (node.kind === "get" || node.kind === "set");
24
+ }
25
+ /**
26
+ * Determines whether the given object expression node has accessor properties (getters/setters).
27
+ * @param {ASTNode} node `ObjectExpression` node to check.
28
+ * @returns {boolean} `true` if the node has at least one getter/setter.
29
+ */
30
+ function hasAccessors(node) {
31
+ return node.properties.some(isAccessorProperty);
32
+ }
33
+ /**
34
+ * Determines whether the given call expression node has object expression arguments with accessor properties (getters/setters).
35
+ * @param {ASTNode} node `CallExpression` node to check.
36
+ * @returns {boolean} `true` if the node has at least one argument that is an object expression with at least one getter/setter.
37
+ */
38
+ function hasArgumentsWithAccessors(node) {
39
+ return node.arguments.filter((arg) => arg.type === "ObjectExpression").some(hasAccessors);
40
+ }
41
+ /**
42
+ * Helper that checks if the node needs parentheses to be valid JS.
43
+ * The default is to wrap the node in parentheses to avoid parsing errors.
44
+ * @param {ASTNode} node The node that the rule warns on
45
+ * @param {Object} sourceCode in context sourcecode object
46
+ * @returns {boolean} - Returns true if the node needs parentheses
47
+ */
48
+ function needsParens(node, sourceCode) {
49
+ let parent = node.parent;
50
+ switch (parent.type) {
51
+ case "VariableDeclarator":
52
+ case "ArrayExpression":
53
+ case "ReturnStatement":
54
+ case "CallExpression":
55
+ case "Property": return !1;
56
+ case "AssignmentExpression": return parent.left === node && !isParenthesised(sourceCode, node);
57
+ default: return !isParenthesised(sourceCode, node);
58
+ }
59
+ }
60
+ /**
61
+ * Determines if an argument needs parentheses. The default is to not add parens.
62
+ * @param {ASTNode} node The node to be checked.
63
+ * @param {Object} sourceCode in context sourcecode object
64
+ * @returns {boolean} True if the node needs parentheses
65
+ */
66
+ function argNeedsParens(node, sourceCode) {
67
+ switch (node.type) {
68
+ case "AssignmentExpression":
69
+ case "ArrowFunctionExpression":
70
+ case "ConditionalExpression": return !isParenthesised(sourceCode, node);
71
+ default: return !1;
72
+ }
73
+ }
74
+ /**
75
+ * Get the parenthesis tokens of a given ObjectExpression node.
76
+ * This includes the braces of the object literal and enclosing parentheses.
77
+ * @param {ASTNode} node The node to get.
78
+ * @param {Token} leftArgumentListParen The opening paren token of the argument list.
79
+ * @param {SourceCode} sourceCode The source code object to get tokens.
80
+ * @returns {Token[]} The parenthesis tokens of the node. This is sorted by the location.
81
+ */
82
+ function getParenTokens(node, leftArgumentListParen, sourceCode) {
83
+ let parens = [sourceCode.getFirstToken(node), sourceCode.getLastToken(node)], leftNext = sourceCode.getTokenBefore(node), rightNext = sourceCode.getTokenAfter(node);
84
+ for (; leftNext && rightNext && leftNext.range[0] > leftArgumentListParen.range[0] && isOpeningParenToken(leftNext) && isClosingParenToken(rightNext);) parens.push(leftNext, rightNext), leftNext = sourceCode.getTokenBefore(leftNext), rightNext = sourceCode.getTokenAfter(rightNext);
85
+ return parens.sort((a, b) => a.range[0] - b.range[0]);
86
+ }
87
+ /**
88
+ * Get the range of a given token and around whitespaces.
89
+ * @param {Token} token The token to get range.
90
+ * @param {SourceCode} sourceCode The source code object to get tokens.
91
+ * @returns {number} The end of the range of the token and around whitespaces.
92
+ */
93
+ function getStartWithSpaces(token, sourceCode) {
94
+ let text = sourceCode.text, start = token.range[0];
95
+ {
96
+ let prevToken = sourceCode.getTokenBefore(token, { includeComments: !0 });
97
+ if (prevToken && prevToken.type === "Line") return start;
98
+ }
99
+ for (; ANY_SPACE.test(text[start - 1] || "");) --start;
100
+ return start;
101
+ }
102
+ /**
103
+ * Get the range of a given token and around whitespaces.
104
+ * @param {Token} token The token to get range.
105
+ * @param {SourceCode} sourceCode The source code object to get tokens.
106
+ * @returns {number} The start of the range of the token and around whitespaces.
107
+ */
108
+ function getEndWithSpaces(token, sourceCode) {
109
+ let text = sourceCode.text, end = token.range[1];
110
+ for (; ANY_SPACE.test(text[end] || "");) end += 1;
111
+ return end;
112
+ }
113
+ /**
114
+ * Autofixes the Object.assign call to use an object spread instead.
115
+ * @param {ASTNode|null} node The node that the rule warns on, i.e. the Object.assign call
116
+ * @param {string} sourceCode sourceCode of the Object.assign call
117
+ * @returns {Function} autofixer - replaces the Object.assign with a spread object.
118
+ */
119
+ function defineFixer(node, sourceCode) {
120
+ return function* (fixer) {
121
+ let leftParen = sourceCode.getTokenAfter(node.callee, isOpeningParenToken), rightParen = sourceCode.getLastToken(node);
122
+ yield fixer.removeRange([node.range[0], leftParen.range[0]]), needsParens(node, sourceCode) ? (yield fixer.replaceText(leftParen, "({"), yield fixer.replaceText(rightParen, "})")) : (yield fixer.replaceText(leftParen, "{"), yield fixer.replaceText(rightParen, "}"));
123
+ for (let argNode of node.arguments) {
124
+ let innerParens = getParenTokens(argNode, leftParen, sourceCode), left = innerParens.shift(), right = innerParens.pop();
125
+ if (argNode.type === "ObjectExpression") {
126
+ let maybeTrailingComma = sourceCode.getLastToken(argNode, 1), maybeArgumentComma = sourceCode.getTokenAfter(right);
127
+ for (let innerParen of innerParens) yield fixer.remove(innerParen);
128
+ let leftRange = [left.range[0], getEndWithSpaces(left, sourceCode)], rightRange = [Math.max(getStartWithSpaces(right, sourceCode), leftRange[1]), right.range[1]];
129
+ yield fixer.removeRange(leftRange), yield fixer.removeRange(rightRange), (argNode.properties.length === 0 || isCommaToken(maybeTrailingComma)) && isCommaToken(maybeArgumentComma) && (yield fixer.remove(maybeArgumentComma));
130
+ } else argNeedsParens(argNode, sourceCode) ? (yield fixer.insertTextBefore(left, "...("), yield fixer.insertTextAfter(right, ")")) : yield fixer.insertTextBefore(left, "...");
131
+ }
132
+ };
133
+ }
134
+ /** @type {import('../types').Rule.RuleModule} */
135
+ module.exports = {
136
+ meta: {
137
+ type: "suggestion",
138
+ docs: {
139
+ description: "Disallow using `Object.assign` with an object literal as the first argument and prefer the use of object spread instead",
140
+ recommended: !1,
141
+ frozen: !0,
142
+ url: "https://eslint.org/docs/latest/rules/prefer-object-spread"
143
+ },
144
+ schema: [],
145
+ fixable: "code",
146
+ messages: {
147
+ useSpreadMessage: "Use an object spread instead of `Object.assign` eg: `{ ...foo }`.",
148
+ useLiteralMessage: "Use an object literal instead of `Object.assign`. eg: `{ foo: bar }`."
149
+ }
150
+ },
151
+ create(context) {
152
+ let sourceCode = context.sourceCode;
153
+ return { Program(node) {
154
+ let tracker = new ReferenceTracker(sourceCode.getScope(node)), trackMap = { Object: { assign: { [CALL]: !0 } } };
155
+ for (let { node: refNode } of tracker.iterateGlobalReferences(trackMap)) if (refNode.arguments.length >= 1 && refNode.arguments[0].type === "ObjectExpression" && !hasArraySpread(refNode) && !(refNode.arguments.length > 1 && hasArgumentsWithAccessors(refNode))) {
156
+ let messageId = refNode.arguments.length === 1 ? "useLiteralMessage" : "useSpreadMessage", fix = defineFixer(refNode, sourceCode);
157
+ context.report({
158
+ node: refNode,
159
+ messageId,
160
+ fix
161
+ });
162
+ }
163
+ } };
164
+ }
165
+ };
166
+ }));
167
+ //#endregion
168
+ //#region src-js/generated/plugin-eslint/rules/prefer-object-spread.cjs
169
+ module.exports = require_prefer_object_spread().create;
170
+ //#endregion
@@ -0,0 +1,62 @@
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/prefer-promise-reject-errors.js
3
+ /**
4
+ * @fileoverview restrict values that can be used as Promise rejection reasons
5
+ * @author Teddy Katz
6
+ */
7
+ var require_prefer_promise_reject_errors = /* @__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
+ defaultOptions: [{ allowEmptyReject: !1 }],
14
+ docs: {
15
+ description: "Require using Error objects as Promise rejection reasons",
16
+ recommended: !1,
17
+ url: "https://eslint.org/docs/latest/rules/prefer-promise-reject-errors"
18
+ },
19
+ fixable: null,
20
+ schema: [{
21
+ type: "object",
22
+ properties: { allowEmptyReject: { type: "boolean" } },
23
+ additionalProperties: !1
24
+ }],
25
+ messages: { rejectAnError: "Expected the Promise rejection reason to be an Error." }
26
+ },
27
+ create(context) {
28
+ let [{ allowEmptyReject }] = context.options, sourceCode = context.sourceCode;
29
+ /**
30
+ * Checks the argument of a reject() or Promise.reject() CallExpression, and reports it if it can't be an Error
31
+ * @param {ASTNode} callExpression A CallExpression node which is used to reject a Promise
32
+ * @returns {void}
33
+ */
34
+ function checkRejectCall(callExpression) {
35
+ !callExpression.arguments.length && allowEmptyReject || (!callExpression.arguments.length || !astUtils.couldBeError(callExpression.arguments[0]) || callExpression.arguments[0].type === "Identifier" && callExpression.arguments[0].name === "undefined") && context.report({
36
+ node: callExpression,
37
+ messageId: "rejectAnError"
38
+ });
39
+ }
40
+ /**
41
+ * Determines whether a function call is a Promise.reject() call
42
+ * @param {ASTNode} node A CallExpression node
43
+ * @returns {boolean} `true` if the call is a Promise.reject() call
44
+ */
45
+ function isPromiseRejectCall(node) {
46
+ return astUtils.isSpecificMemberAccess(node.callee, "Promise", "reject");
47
+ }
48
+ return {
49
+ CallExpression(node) {
50
+ isPromiseRejectCall(node) && checkRejectCall(node);
51
+ },
52
+ "NewExpression:exit"(node) {
53
+ node.callee.type === "Identifier" && node.callee.name === "Promise" && node.arguments.length && astUtils.isFunction(node.arguments[0]) && node.arguments[0].params.length > 1 && node.arguments[0].params[1].type === "Identifier" && sourceCode.getDeclaredVariables(node.arguments[0]).find((variable) => variable.name === node.arguments[0].params[1].name).references.filter((ref) => ref.isRead()).filter((ref) => ref.identifier.parent.type === "CallExpression" && ref.identifier === ref.identifier.parent.callee).forEach((ref) => checkRejectCall(ref.identifier.parent));
54
+ }
55
+ };
56
+ }
57
+ };
58
+ }));
59
+ //#endregion
60
+ //#region src-js/generated/plugin-eslint/rules/prefer-promise-reject-errors.cjs
61
+ module.exports = require_prefer_promise_reject_errors().create;
62
+ //#endregion