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,173 @@
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/curly.js
3
+ /**
4
+ * @fileoverview Rule to flag statements without curly braces
5
+ * @author Nicholas C. Zakas
6
+ */
7
+ var require_curly = /* @__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: "Enforce consistent brace style for all control statements",
15
+ recommended: !1,
16
+ frozen: !0,
17
+ url: "https://eslint.org/docs/latest/rules/curly"
18
+ },
19
+ schema: { anyOf: [{
20
+ type: "array",
21
+ items: [{ enum: ["all"] }],
22
+ minItems: 0,
23
+ maxItems: 1
24
+ }, {
25
+ type: "array",
26
+ items: [{ enum: [
27
+ "multi",
28
+ "multi-line",
29
+ "multi-or-nest"
30
+ ] }, { enum: ["consistent"] }],
31
+ minItems: 0,
32
+ maxItems: 2
33
+ }] },
34
+ defaultOptions: ["all"],
35
+ fixable: "code",
36
+ messages: {
37
+ missingCurlyAfter: "Expected { after '{{name}}'.",
38
+ missingCurlyAfterCondition: "Expected { after '{{name}}' condition.",
39
+ unexpectedCurlyAfter: "Unnecessary { after '{{name}}'.",
40
+ unexpectedCurlyAfterCondition: "Unnecessary { after '{{name}}' condition."
41
+ }
42
+ },
43
+ create(context) {
44
+ let multiOnly = context.options[0] === "multi", multiLine = context.options[0] === "multi-line", multiOrNest = context.options[0] === "multi-or-nest", consistent = context.options[1] === "consistent", sourceCode = context.sourceCode;
45
+ /**
46
+ * Determines if a given node is a one-liner that's on the same line as it's preceding code.
47
+ * @param {ASTNode} node The node to check.
48
+ * @returns {boolean} True if the node is a one-liner that's on the same line as it's preceding code.
49
+ * @private
50
+ */
51
+ function isCollapsedOneLiner(node) {
52
+ let before = sourceCode.getTokenBefore(node), last = sourceCode.getLastToken(node), lastExcludingSemicolon = astUtils.isSemicolonToken(last) ? sourceCode.getTokenBefore(last) : last;
53
+ return before.loc.start.line === lastExcludingSemicolon.loc.end.line;
54
+ }
55
+ /**
56
+ * Determines if a given node is a one-liner.
57
+ * @param {ASTNode} node The node to check.
58
+ * @returns {boolean} True if the node is a one-liner.
59
+ * @private
60
+ */
61
+ function isOneLiner(node) {
62
+ if (node.type === "EmptyStatement") return !0;
63
+ let first = sourceCode.getFirstToken(node), last = sourceCode.getLastToken(node), lastExcludingSemicolon = astUtils.isSemicolonToken(last) ? sourceCode.getTokenBefore(last) : last;
64
+ return first.loc.start.line === lastExcludingSemicolon.loc.end.line;
65
+ }
66
+ /**
67
+ * Determines if a semicolon needs to be inserted after removing a set of curly brackets, in order to avoid a SyntaxError.
68
+ * @param {Token} closingBracket The } token
69
+ * @returns {boolean} `true` if a semicolon needs to be inserted after the last statement in the block.
70
+ */
71
+ function needsSemicolon(closingBracket) {
72
+ let tokenBefore = sourceCode.getTokenBefore(closingBracket), tokenAfter = sourceCode.getTokenAfter(closingBracket), lastBlockNode = sourceCode.getNodeByRangeIndex(tokenBefore.range[0]);
73
+ return astUtils.isSemicolonToken(tokenBefore) || !tokenAfter || lastBlockNode.type === "BlockStatement" && lastBlockNode.parent.type !== "FunctionExpression" && lastBlockNode.parent.type !== "ArrowFunctionExpression" ? !1 : !!(tokenBefore.loc.end.line === tokenAfter.loc.start.line || /^[([/`+-]/u.test(tokenAfter.value) || tokenBefore.type === "Punctuator" && (tokenBefore.value === "++" || tokenBefore.value === "--"));
74
+ }
75
+ /**
76
+ * Prepares to check the body of a node to see if it's a block statement.
77
+ * @param {ASTNode} node The node to report if there's a problem.
78
+ * @param {ASTNode} body The body node to check for blocks.
79
+ * @param {string} name The name to report if there's a problem.
80
+ * @param {{ condition: boolean }} opts Options to pass to the report functions
81
+ * @returns {Object} a prepared check object, with "actual", "expected", "check" properties.
82
+ * "actual" will be `true` or `false` whether the body is already a block statement.
83
+ * "expected" will be `true` or `false` if the body should be a block statement or not, or
84
+ * `null` if it doesn't matter, depending on the rule options. It can be modified to change
85
+ * the final behavior of "check".
86
+ * "check" will be a function reporting appropriate problems depending on the other
87
+ * properties.
88
+ */
89
+ function prepareCheck(node, body, name, opts) {
90
+ let hasBlock = body.type === "BlockStatement", expected = null;
91
+ if (hasBlock && (body.body.length !== 1 || astUtils.areBracesNecessary(body, sourceCode))) expected = !0;
92
+ else if (multiOnly) expected = !1;
93
+ else if (multiLine) isCollapsedOneLiner(body) || (expected = !0);
94
+ else if (multiOrNest) if (hasBlock) {
95
+ let statement = body.body[0], leadingCommentsInBlock = sourceCode.getCommentsBefore(statement);
96
+ expected = !isOneLiner(statement) || leadingCommentsInBlock.length > 0;
97
+ } else expected = !isOneLiner(body);
98
+ else expected = !0;
99
+ return {
100
+ actual: hasBlock,
101
+ expected,
102
+ check() {
103
+ this.expected !== null && this.expected !== this.actual && (this.expected ? context.report({
104
+ node,
105
+ loc: body.loc,
106
+ messageId: opts && opts.condition ? "missingCurlyAfterCondition" : "missingCurlyAfter",
107
+ data: { name },
108
+ fix: (fixer) => fixer.replaceText(body, `{${sourceCode.getText(body)}}`)
109
+ }) : context.report({
110
+ node,
111
+ loc: body.loc,
112
+ messageId: opts && opts.condition ? "unexpectedCurlyAfterCondition" : "unexpectedCurlyAfter",
113
+ data: { name },
114
+ fix(fixer) {
115
+ let needsPrecedingSpace = node.type === "DoWhileStatement" && sourceCode.getTokenBefore(body).range[1] === body.range[0] && !astUtils.canTokensBeAdjacent("do", sourceCode.getFirstToken(body, { skip: 1 })), openingBracket = sourceCode.getFirstToken(body), closingBracket = sourceCode.getLastToken(body), lastTokenInBlock = sourceCode.getTokenBefore(closingBracket);
116
+ if (needsSemicolon(closingBracket)) return null;
117
+ let resultingBodyText = sourceCode.getText().slice(openingBracket.range[1], lastTokenInBlock.range[0]) + sourceCode.getText(lastTokenInBlock) + sourceCode.getText().slice(lastTokenInBlock.range[1], closingBracket.range[0]);
118
+ return fixer.replaceText(body, (needsPrecedingSpace ? " " : "") + resultingBodyText);
119
+ }
120
+ }));
121
+ }
122
+ };
123
+ }
124
+ /**
125
+ * Prepares to check the bodies of a "if", "else if" and "else" chain.
126
+ * @param {ASTNode} node The first IfStatement node of the chain.
127
+ * @returns {Object[]} prepared checks for each body of the chain. See `prepareCheck` for more
128
+ * information.
129
+ */
130
+ function prepareIfChecks(node) {
131
+ let preparedChecks = [];
132
+ for (let currentNode = node; currentNode; currentNode = currentNode.alternate) if (preparedChecks.push(prepareCheck(currentNode, currentNode.consequent, "if", { condition: !0 })), currentNode.alternate && currentNode.alternate.type !== "IfStatement") {
133
+ preparedChecks.push(prepareCheck(currentNode, currentNode.alternate, "else"));
134
+ break;
135
+ }
136
+ if (consistent) {
137
+ let expected = preparedChecks.some((preparedCheck) => preparedCheck.expected === null ? preparedCheck.actual : preparedCheck.expected);
138
+ preparedChecks.forEach((preparedCheck) => {
139
+ preparedCheck.expected = expected;
140
+ });
141
+ }
142
+ return preparedChecks;
143
+ }
144
+ return {
145
+ IfStatement(node) {
146
+ let parent = node.parent;
147
+ parent.type === "IfStatement" && parent.alternate === node || prepareIfChecks(node).forEach((preparedCheck) => {
148
+ preparedCheck.check();
149
+ });
150
+ },
151
+ WhileStatement(node) {
152
+ prepareCheck(node, node.body, "while", { condition: !0 }).check();
153
+ },
154
+ DoWhileStatement(node) {
155
+ prepareCheck(node, node.body, "do").check();
156
+ },
157
+ ForStatement(node) {
158
+ prepareCheck(node, node.body, "for", { condition: !0 }).check();
159
+ },
160
+ ForInStatement(node) {
161
+ prepareCheck(node, node.body, "for-in").check();
162
+ },
163
+ ForOfStatement(node) {
164
+ prepareCheck(node, node.body, "for-of").check();
165
+ }
166
+ };
167
+ }
168
+ };
169
+ }));
170
+ //#endregion
171
+ //#region src-js/generated/plugin-eslint/rules/curly.cjs
172
+ module.exports = require_curly().create;
173
+ //#endregion
@@ -0,0 +1,36 @@
1
+ //#region ../../node_modules/.pnpm/eslint@9.39.3_jiti@2.6.1/node_modules/eslint/lib/rules/default-case-last.js
2
+ /**
3
+ * @fileoverview Rule to enforce `default` clauses in `switch` statements to be last
4
+ * @author Milos Djermanovic
5
+ */
6
+ var require_default_case_last = /* @__PURE__ */ require("../common/chunk.cjs").t(((exports, module) => {
7
+ /** @type {import('../types').Rule.RuleModule} */
8
+ module.exports = {
9
+ meta: {
10
+ type: "suggestion",
11
+ docs: {
12
+ description: "Enforce `default` clauses in `switch` statements to be last",
13
+ recommended: !1,
14
+ url: "https://eslint.org/docs/latest/rules/default-case-last"
15
+ },
16
+ schema: [],
17
+ messages: { notLast: "Default clause should be the last clause." }
18
+ },
19
+ create(context) {
20
+ return { SwitchStatement(node) {
21
+ let cases = node.cases, indexOfDefault = cases.findIndex((c) => c.test === null);
22
+ if (indexOfDefault !== -1 && indexOfDefault !== cases.length - 1) {
23
+ let defaultClause = cases[indexOfDefault];
24
+ context.report({
25
+ node: defaultClause,
26
+ messageId: "notLast"
27
+ });
28
+ }
29
+ } };
30
+ }
31
+ };
32
+ }));
33
+ //#endregion
34
+ //#region src-js/generated/plugin-eslint/rules/default-case-last.cjs
35
+ module.exports = require_default_case_last().create;
36
+ //#endregion
@@ -0,0 +1,50 @@
1
+ //#region ../../node_modules/.pnpm/eslint@9.39.3_jiti@2.6.1/node_modules/eslint/lib/rules/default-case.js
2
+ /**
3
+ * @fileoverview require default case in switch statements
4
+ * @author Aliaksei Shytkin
5
+ */
6
+ var require_default_case = /* @__PURE__ */ require("../common/chunk.cjs").t(((exports, module) => {
7
+ let DEFAULT_COMMENT_PATTERN = /^no default$/iu;
8
+ /** @type {import('../types').Rule.RuleModule} */
9
+ module.exports = {
10
+ meta: {
11
+ type: "suggestion",
12
+ defaultOptions: [{}],
13
+ docs: {
14
+ description: "Require `default` cases in `switch` statements",
15
+ recommended: !1,
16
+ url: "https://eslint.org/docs/latest/rules/default-case"
17
+ },
18
+ schema: [{
19
+ type: "object",
20
+ properties: { commentPattern: { type: "string" } },
21
+ additionalProperties: !1
22
+ }],
23
+ messages: { missingDefaultCase: "Expected a default case." }
24
+ },
25
+ create(context) {
26
+ let [options] = context.options, commentPattern = options.commentPattern ? new RegExp(options.commentPattern, "u") : DEFAULT_COMMENT_PATTERN, sourceCode = context.sourceCode;
27
+ /**
28
+ * Shortcut to get last element of array
29
+ * @param {*[]} collection Array
30
+ * @returns {any} Last element
31
+ */
32
+ function last(collection) {
33
+ return collection.at(-1);
34
+ }
35
+ return { SwitchStatement(node) {
36
+ if (node.cases.length && !node.cases.some((v) => v.test === null)) {
37
+ let comment, lastCase = last(node.cases), comments = sourceCode.getCommentsAfter(lastCase);
38
+ comments.length && (comment = last(comments)), (!comment || !commentPattern.test(comment.value.trim())) && context.report({
39
+ node,
40
+ messageId: "missingDefaultCase"
41
+ });
42
+ }
43
+ } };
44
+ }
45
+ };
46
+ }));
47
+ //#endregion
48
+ //#region src-js/generated/plugin-eslint/rules/default-case.cjs
49
+ module.exports = require_default_case().create;
50
+ //#endregion
@@ -0,0 +1,61 @@
1
+ //#region ../../node_modules/.pnpm/eslint@9.39.3_jiti@2.6.1/node_modules/eslint/lib/rules/default-param-last.js
2
+ /**
3
+ * @fileoverview enforce default parameters to be last
4
+ * @author Chiawen Chen
5
+ */
6
+ var require_default_param_last = /* @__PURE__ */ require("../common/chunk.cjs").t(((exports, module) => {
7
+ /**
8
+ * Checks if node is required: i.e. does not have a default value or ? optional indicator.
9
+ * @param {ASTNode} node the node to be evaluated
10
+ * @returns {boolean} true if the node is required, false if not.
11
+ */
12
+ function isRequiredParameter(node) {
13
+ return !(node.type === "AssignmentPattern" || node.type === "RestElement" || node.optional);
14
+ }
15
+ /** @type {import('../types').Rule.RuleModule} */
16
+ module.exports = {
17
+ meta: {
18
+ dialects: ["javascript", "typescript"],
19
+ language: "javascript",
20
+ type: "suggestion",
21
+ docs: {
22
+ description: "Enforce default parameters to be last",
23
+ recommended: !1,
24
+ frozen: !0,
25
+ url: "https://eslint.org/docs/latest/rules/default-param-last"
26
+ },
27
+ schema: [],
28
+ messages: { shouldBeLast: "Default parameters should be last." }
29
+ },
30
+ create(context) {
31
+ /**
32
+ * Handler for function contexts.
33
+ * @param {ASTNode} node function node
34
+ * @returns {void}
35
+ */
36
+ function handleFunction(node) {
37
+ let hasSeenRequiredParameter = !1;
38
+ for (let i = node.params.length - 1; i >= 0; --i) {
39
+ let current = node.params[i];
40
+ if (isRequiredParameter(current.type === "TSParameterProperty" ? current.parameter : current)) {
41
+ hasSeenRequiredParameter = !0;
42
+ continue;
43
+ }
44
+ hasSeenRequiredParameter && context.report({
45
+ node: current,
46
+ messageId: "shouldBeLast"
47
+ });
48
+ }
49
+ }
50
+ return {
51
+ FunctionDeclaration: handleFunction,
52
+ FunctionExpression: handleFunction,
53
+ ArrowFunctionExpression: handleFunction
54
+ };
55
+ }
56
+ };
57
+ }));
58
+ //#endregion
59
+ //#region src-js/generated/plugin-eslint/rules/default-param-last.cjs
60
+ module.exports = require_default_param_last().create;
61
+ //#endregion
@@ -0,0 +1,87 @@
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/dot-location.js
3
+ /**
4
+ * @fileoverview Validates newlines before and after dots
5
+ * @author Greg Cochard
6
+ * @deprecated in ESLint v8.53.0
7
+ */
8
+ var require_dot_location = /* @__PURE__ */ require_chunk.t(((exports, module) => {
9
+ let astUtils = require_ast_utils$1.t();
10
+ /** @type {import('../types').Rule.RuleModule} */
11
+ module.exports = {
12
+ meta: {
13
+ deprecated: {
14
+ message: "Formatting rules are being moved out of ESLint core.",
15
+ url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/",
16
+ deprecatedSince: "8.53.0",
17
+ availableUntil: "11.0.0",
18
+ replacedBy: [{
19
+ message: "ESLint Stylistic now maintains deprecated stylistic core rules.",
20
+ url: "https://eslint.style/guide/migration",
21
+ plugin: {
22
+ name: "@stylistic/eslint-plugin",
23
+ url: "https://eslint.style"
24
+ },
25
+ rule: {
26
+ name: "dot-location",
27
+ url: "https://eslint.style/rules/dot-location"
28
+ }
29
+ }]
30
+ },
31
+ type: "layout",
32
+ docs: {
33
+ description: "Enforce consistent newlines before and after dots",
34
+ recommended: !1,
35
+ url: "https://eslint.org/docs/latest/rules/dot-location"
36
+ },
37
+ schema: [{ enum: ["object", "property"] }],
38
+ fixable: "code",
39
+ messages: {
40
+ expectedDotAfterObject: "Expected dot to be on same line as object.",
41
+ expectedDotBeforeProperty: "Expected dot to be on same line as property."
42
+ }
43
+ },
44
+ create(context) {
45
+ let config = context.options[0], onObject = config === "object" || !config, sourceCode = context.sourceCode;
46
+ /**
47
+ * Reports if the dot between object and property is on the correct location.
48
+ * @param {ASTNode} node The `MemberExpression` node.
49
+ * @returns {void}
50
+ */
51
+ function checkDotLocation(node) {
52
+ let property = node.property, dotToken = sourceCode.getTokenBefore(property);
53
+ if (onObject) {
54
+ let tokenBeforeDot = sourceCode.getTokenBefore(dotToken);
55
+ astUtils.isTokenOnSameLine(tokenBeforeDot, dotToken) || context.report({
56
+ node,
57
+ loc: dotToken.loc,
58
+ messageId: "expectedDotAfterObject",
59
+ *fix(fixer) {
60
+ dotToken.value.startsWith(".") && astUtils.isDecimalIntegerNumericToken(tokenBeforeDot) ? yield fixer.insertTextAfter(tokenBeforeDot, ` ${dotToken.value}`) : yield fixer.insertTextAfter(tokenBeforeDot, dotToken.value), yield fixer.remove(dotToken);
61
+ }
62
+ });
63
+ } else astUtils.isTokenOnSameLine(dotToken, property) || context.report({
64
+ node,
65
+ loc: dotToken.loc,
66
+ messageId: "expectedDotBeforeProperty",
67
+ *fix(fixer) {
68
+ yield fixer.remove(dotToken), yield fixer.insertTextBefore(property, dotToken.value);
69
+ }
70
+ });
71
+ }
72
+ /**
73
+ * Checks the spacing of the dot within a member expression.
74
+ * @param {ASTNode} node The node to check.
75
+ * @returns {void}
76
+ */
77
+ function checkNode(node) {
78
+ node.computed || checkDotLocation(node);
79
+ }
80
+ return { MemberExpression: checkNode };
81
+ }
82
+ };
83
+ }));
84
+ //#endregion
85
+ //#region src-js/generated/plugin-eslint/rules/dot-location.cjs
86
+ module.exports = require_dot_location().create;
87
+ //#endregion
@@ -0,0 +1,77 @@
1
+ const require_chunk = require("../common/chunk.cjs"), require_ast_utils$1 = require("../common/ast-utils.cjs"), require_keywords$1 = require("../common/keywords.cjs");
2
+ //#region ../../node_modules/.pnpm/eslint@9.39.3_jiti@2.6.1/node_modules/eslint/lib/rules/dot-notation.js
3
+ /**
4
+ * @fileoverview Rule to warn about using dot notation instead of square bracket notation when possible.
5
+ * @author Josh Perez
6
+ */
7
+ var require_dot_notation = /* @__PURE__ */ require_chunk.t(((exports, module) => {
8
+ let astUtils = require_ast_utils$1.t(), keywords = require_keywords$1.t(), validIdentifier = /^[a-zA-Z_$][\w$]*$/u, literalTypesToCheck = new Set(["string", "boolean"]);
9
+ /** @type {import('../types').Rule.RuleModule} */
10
+ module.exports = {
11
+ meta: {
12
+ type: "suggestion",
13
+ defaultOptions: [{
14
+ allowKeywords: !0,
15
+ allowPattern: ""
16
+ }],
17
+ docs: {
18
+ description: "Enforce dot notation whenever possible",
19
+ recommended: !1,
20
+ frozen: !0,
21
+ url: "https://eslint.org/docs/latest/rules/dot-notation"
22
+ },
23
+ schema: [{
24
+ type: "object",
25
+ properties: {
26
+ allowKeywords: { type: "boolean" },
27
+ allowPattern: { type: "string" }
28
+ },
29
+ additionalProperties: !1
30
+ }],
31
+ fixable: "code",
32
+ messages: {
33
+ useDot: "[{{key}}] is better written in dot notation.",
34
+ useBrackets: ".{{key}} is a syntax error."
35
+ }
36
+ },
37
+ create(context) {
38
+ let [options] = context.options, allowKeywords = options.allowKeywords, sourceCode = context.sourceCode, allowPattern;
39
+ options.allowPattern && (allowPattern = new RegExp(options.allowPattern, "u"));
40
+ /**
41
+ * Check if the property is valid dot notation
42
+ * @param {ASTNode} node The dot notation node
43
+ * @param {string} value Value which is to be checked
44
+ * @returns {void}
45
+ */
46
+ function checkComputedProperty(node, value) {
47
+ if (validIdentifier.test(value) && (allowKeywords || !keywords.includes(String(value))) && !(allowPattern && allowPattern.test(value))) {
48
+ let formattedValue = node.property.type === "Literal" ? JSON.stringify(value) : `\`${value}\``;
49
+ context.report({
50
+ node: node.property,
51
+ messageId: "useDot",
52
+ data: { key: formattedValue },
53
+ *fix(fixer) {
54
+ let leftBracket = sourceCode.getTokenAfter(node.object, astUtils.isOpeningBracketToken), rightBracket = sourceCode.getLastToken(node), nextToken = sourceCode.getTokenAfter(node);
55
+ sourceCode.commentsExistBetween(leftBracket, rightBracket) || (node.optional || (yield fixer.insertTextBefore(leftBracket, astUtils.isDecimalInteger(node.object) ? " ." : ".")), yield fixer.replaceTextRange([leftBracket.range[0], rightBracket.range[1]], value), nextToken && rightBracket.range[1] === nextToken.range[0] && !astUtils.canTokensBeAdjacent(String(value), nextToken) && (yield fixer.insertTextAfter(node, " ")));
56
+ }
57
+ });
58
+ }
59
+ }
60
+ return { MemberExpression(node) {
61
+ node.computed && node.property.type === "Literal" && (literalTypesToCheck.has(typeof node.property.value) || astUtils.isNullLiteral(node.property)) && checkComputedProperty(node, node.property.value), node.computed && astUtils.isStaticTemplateLiteral(node.property) && checkComputedProperty(node, node.property.quasis[0].value.cooked), !allowKeywords && !node.computed && node.property.type === "Identifier" && keywords.includes(String(node.property.name)) && context.report({
62
+ node: node.property,
63
+ messageId: "useBrackets",
64
+ data: { key: node.property.name },
65
+ *fix(fixer) {
66
+ let dotToken = sourceCode.getTokenBefore(node.property);
67
+ node.object.type === "Identifier" && node.object.name === "let" && !node.optional || sourceCode.commentsExistBetween(dotToken, node.property) || (node.optional || (yield fixer.remove(dotToken)), yield fixer.replaceText(node.property, `["${node.property.name}"]`));
68
+ }
69
+ });
70
+ } };
71
+ }
72
+ };
73
+ }));
74
+ //#endregion
75
+ //#region src-js/generated/plugin-eslint/rules/dot-notation.cjs
76
+ module.exports = require_dot_notation().create;
77
+ //#endregion
@@ -0,0 +1,91 @@
1
+ //#region ../../node_modules/.pnpm/eslint@9.39.3_jiti@2.6.1/node_modules/eslint/lib/rules/eol-last.js
2
+ /**
3
+ * @fileoverview Require or disallow newline at the end of files
4
+ * @author Nodeca Team <https://github.com/nodeca>
5
+ * @deprecated in ESLint v8.53.0
6
+ */
7
+ var require_eol_last = /* @__PURE__ */ require("../common/chunk.cjs").t(((exports, module) => {
8
+ /** @type {import('../types').Rule.RuleModule} */
9
+ module.exports = {
10
+ meta: {
11
+ deprecated: {
12
+ message: "Formatting rules are being moved out of ESLint core.",
13
+ url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/",
14
+ deprecatedSince: "8.53.0",
15
+ availableUntil: "11.0.0",
16
+ replacedBy: [{
17
+ message: "ESLint Stylistic now maintains deprecated stylistic core rules.",
18
+ url: "https://eslint.style/guide/migration",
19
+ plugin: {
20
+ name: "@stylistic/eslint-plugin",
21
+ url: "https://eslint.style"
22
+ },
23
+ rule: {
24
+ name: "eol-last",
25
+ url: "https://eslint.style/rules/eol-last"
26
+ }
27
+ }]
28
+ },
29
+ type: "layout",
30
+ docs: {
31
+ description: "Require or disallow newline at the end of files",
32
+ recommended: !1,
33
+ url: "https://eslint.org/docs/latest/rules/eol-last"
34
+ },
35
+ fixable: "whitespace",
36
+ schema: [{ enum: [
37
+ "always",
38
+ "never",
39
+ "unix",
40
+ "windows"
41
+ ] }],
42
+ messages: {
43
+ missing: "Newline required at end of file but not found.",
44
+ unexpected: "Newline not allowed at end of file."
45
+ }
46
+ },
47
+ create(context) {
48
+ return { Program: function checkBadEOF(node) {
49
+ let sourceCode = context.sourceCode, src = sourceCode.getText(), location = {
50
+ column: sourceCode.lines.at(-1).length,
51
+ line: sourceCode.lines.length
52
+ }, endsWithNewline = src.endsWith("\n");
53
+ if (!src.length) return;
54
+ let mode = context.options[0] || "always", appendCRLF = !1;
55
+ if (mode === "unix" && (mode = "always"), mode === "windows" && (mode = "always", appendCRLF = !0), mode === "always" && !endsWithNewline) context.report({
56
+ node,
57
+ loc: location,
58
+ messageId: "missing",
59
+ fix(fixer) {
60
+ return fixer.insertTextAfterRange([0, src.length], appendCRLF ? "\r\n" : "\n");
61
+ }
62
+ });
63
+ else if (mode === "never" && endsWithNewline) {
64
+ let secondLastLine = sourceCode.lines.at(-2);
65
+ context.report({
66
+ node,
67
+ loc: {
68
+ start: {
69
+ line: sourceCode.lines.length - 1,
70
+ column: secondLastLine.length
71
+ },
72
+ end: {
73
+ line: sourceCode.lines.length,
74
+ column: 0
75
+ }
76
+ },
77
+ messageId: "unexpected",
78
+ fix(fixer) {
79
+ let start = /(?:\r?\n)+$/u.exec(sourceCode.text).index, end = sourceCode.text.length;
80
+ return fixer.replaceTextRange([start, end], "");
81
+ }
82
+ });
83
+ }
84
+ } };
85
+ }
86
+ };
87
+ }));
88
+ //#endregion
89
+ //#region src-js/generated/plugin-eslint/rules/eol-last.cjs
90
+ module.exports = require_eol_last().create;
91
+ //#endregion