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,192 @@
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/padded-blocks.js
3
+ /**
4
+ * @fileoverview A rule to ensure blank lines within blocks.
5
+ * @author Mathias Schreck <https://github.com/lo1tuma>
6
+ * @deprecated in ESLint v8.53.0
7
+ */
8
+ var require_padded_blocks = /* @__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: "padded-blocks",
27
+ url: "https://eslint.style/rules/padded-blocks"
28
+ }
29
+ }]
30
+ },
31
+ type: "layout",
32
+ docs: {
33
+ description: "Require or disallow padding within blocks",
34
+ recommended: !1,
35
+ url: "https://eslint.org/docs/latest/rules/padded-blocks"
36
+ },
37
+ fixable: "whitespace",
38
+ schema: [{ oneOf: [{ enum: ["always", "never"] }, {
39
+ type: "object",
40
+ properties: {
41
+ blocks: { enum: ["always", "never"] },
42
+ switches: { enum: ["always", "never"] },
43
+ classes: { enum: ["always", "never"] }
44
+ },
45
+ additionalProperties: !1,
46
+ minProperties: 1
47
+ }] }, {
48
+ type: "object",
49
+ properties: { allowSingleLineBlocks: { type: "boolean" } },
50
+ additionalProperties: !1
51
+ }],
52
+ messages: {
53
+ alwaysPadBlock: "Block must be padded by blank lines.",
54
+ neverPadBlock: "Block must not be padded by blank lines."
55
+ }
56
+ },
57
+ create(context) {
58
+ let options = {}, typeOptions = context.options[0] || "always", exceptOptions = context.options[1] || {};
59
+ if (typeof typeOptions == "string") {
60
+ let shouldHavePadding = typeOptions === "always";
61
+ options.blocks = shouldHavePadding, options.switches = shouldHavePadding, options.classes = shouldHavePadding;
62
+ } else Object.hasOwn(typeOptions, "blocks") && (options.blocks = typeOptions.blocks === "always"), Object.hasOwn(typeOptions, "switches") && (options.switches = typeOptions.switches === "always"), Object.hasOwn(typeOptions, "classes") && (options.classes = typeOptions.classes === "always");
63
+ Object.hasOwn(exceptOptions, "allowSingleLineBlocks") && (options.allowSingleLineBlocks = exceptOptions.allowSingleLineBlocks === !0);
64
+ let sourceCode = context.sourceCode;
65
+ /**
66
+ * Gets the open brace token from a given node.
67
+ * @param {ASTNode} node A BlockStatement or SwitchStatement node from which to get the open brace.
68
+ * @returns {Token} The token of the open brace.
69
+ */
70
+ function getOpenBrace(node) {
71
+ return node.type === "SwitchStatement" ? sourceCode.getTokenBefore(node.cases[0]) : node.type === "StaticBlock" ? sourceCode.getFirstToken(node, { skip: 1 }) : sourceCode.getFirstToken(node);
72
+ }
73
+ /**
74
+ * Checks if the given parameter is a comment node
75
+ * @param {ASTNode|Token} node An AST node or token
76
+ * @returns {boolean} True if node is a comment
77
+ */
78
+ function isComment(node) {
79
+ return node.type === "Line" || node.type === "Block";
80
+ }
81
+ /**
82
+ * Checks if there is padding between two tokens
83
+ * @param {Token} first The first token
84
+ * @param {Token} second The second token
85
+ * @returns {boolean} True if there is at least a line between the tokens
86
+ */
87
+ function isPaddingBetweenTokens(first, second) {
88
+ return second.loc.start.line - first.loc.end.line >= 2;
89
+ }
90
+ /**
91
+ * Checks if the given token has a blank line after it.
92
+ * @param {Token} token The token to check.
93
+ * @returns {boolean} Whether or not the token is followed by a blank line.
94
+ */
95
+ function getFirstBlockToken(token) {
96
+ let prev, first = token;
97
+ do
98
+ prev = first, first = sourceCode.getTokenAfter(first, { includeComments: !0 });
99
+ while (isComment(first) && first.loc.start.line === prev.loc.end.line);
100
+ return first;
101
+ }
102
+ /**
103
+ * Checks if the given token is preceded by a blank line.
104
+ * @param {Token} token The token to check
105
+ * @returns {boolean} Whether or not the token is preceded by a blank line
106
+ */
107
+ function getLastBlockToken(token) {
108
+ let last = token, next;
109
+ do
110
+ next = last, last = sourceCode.getTokenBefore(last, { includeComments: !0 });
111
+ while (isComment(last) && last.loc.end.line === next.loc.start.line);
112
+ return last;
113
+ }
114
+ /**
115
+ * Checks if a node should be padded, according to the rule config.
116
+ * @param {ASTNode} node The AST node to check.
117
+ * @throws {Error} (Unreachable)
118
+ * @returns {boolean} True if the node should be padded, false otherwise.
119
+ */
120
+ function requirePaddingFor(node) {
121
+ switch (node.type) {
122
+ case "BlockStatement":
123
+ case "StaticBlock": return options.blocks;
124
+ case "SwitchStatement": return options.switches;
125
+ case "ClassBody": return options.classes;
126
+ default: throw Error("unreachable");
127
+ }
128
+ }
129
+ /**
130
+ * Checks the given BlockStatement node to be padded if the block is not empty.
131
+ * @param {ASTNode} node The AST node of a BlockStatement.
132
+ * @returns {void} undefined.
133
+ */
134
+ function checkPadding(node) {
135
+ let firstBlockToken = getFirstBlockToken(getOpenBrace(node)), tokenBeforeFirst = sourceCode.getTokenBefore(firstBlockToken, { includeComments: !0 }), lastBlockToken = getLastBlockToken(sourceCode.getLastToken(node)), tokenAfterLast = sourceCode.getTokenAfter(lastBlockToken, { includeComments: !0 }), blockHasTopPadding = isPaddingBetweenTokens(tokenBeforeFirst, firstBlockToken), blockHasBottomPadding = isPaddingBetweenTokens(lastBlockToken, tokenAfterLast);
136
+ options.allowSingleLineBlocks && astUtils.isTokenOnSameLine(tokenBeforeFirst, tokenAfterLast) || (requirePaddingFor(node) ? (blockHasTopPadding || context.report({
137
+ node,
138
+ loc: {
139
+ start: tokenBeforeFirst.loc.start,
140
+ end: firstBlockToken.loc.start
141
+ },
142
+ fix(fixer) {
143
+ return fixer.insertTextAfter(tokenBeforeFirst, "\n");
144
+ },
145
+ messageId: "alwaysPadBlock"
146
+ }), blockHasBottomPadding || context.report({
147
+ node,
148
+ loc: {
149
+ end: tokenAfterLast.loc.start,
150
+ start: lastBlockToken.loc.end
151
+ },
152
+ fix(fixer) {
153
+ return fixer.insertTextBefore(tokenAfterLast, "\n");
154
+ },
155
+ messageId: "alwaysPadBlock"
156
+ })) : (blockHasTopPadding && context.report({
157
+ node,
158
+ loc: {
159
+ start: tokenBeforeFirst.loc.start,
160
+ end: firstBlockToken.loc.start
161
+ },
162
+ fix(fixer) {
163
+ return fixer.replaceTextRange([tokenBeforeFirst.range[1], firstBlockToken.range[0] - firstBlockToken.loc.start.column], "\n");
164
+ },
165
+ messageId: "neverPadBlock"
166
+ }), blockHasBottomPadding && context.report({
167
+ node,
168
+ loc: {
169
+ end: tokenAfterLast.loc.start,
170
+ start: lastBlockToken.loc.end
171
+ },
172
+ messageId: "neverPadBlock",
173
+ fix(fixer) {
174
+ return fixer.replaceTextRange([lastBlockToken.range[1], tokenAfterLast.range[0] - tokenAfterLast.loc.start.column], "\n");
175
+ }
176
+ })));
177
+ }
178
+ let rule = {};
179
+ return Object.hasOwn(options, "switches") && (rule.SwitchStatement = function(node) {
180
+ node.cases.length !== 0 && checkPadding(node);
181
+ }), Object.hasOwn(options, "blocks") && (rule.BlockStatement = function(node) {
182
+ node.body.length !== 0 && checkPadding(node);
183
+ }, rule.StaticBlock = rule.BlockStatement), Object.hasOwn(options, "classes") && (rule.ClassBody = function(node) {
184
+ node.body.length !== 0 && checkPadding(node);
185
+ }), rule;
186
+ }
187
+ };
188
+ }));
189
+ //#endregion
190
+ //#region src-js/generated/plugin-eslint/rules/padded-blocks.cjs
191
+ module.exports = require_padded_blocks().create;
192
+ //#endregion
@@ -0,0 +1,377 @@
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/padding-line-between-statements.js
3
+ /**
4
+ * @fileoverview Rule to require or disallow newlines between statements
5
+ * @author Toru Nagashima
6
+ * @deprecated in ESLint v8.53.0
7
+ */
8
+ var require_padding_line_between_statements = /* @__PURE__ */ require_chunk.t(((exports, module) => {
9
+ let astUtils = require_ast_utils$1.t(), LT = `[${Array.from(astUtils.LINEBREAKS).join("")}]`, PADDING_LINE_SEQUENCE = new RegExp(String.raw`^(\s*?${LT})\s*${LT}(\s*;?)$`, "u"), CJS_EXPORT = /^(?:module\s*\.\s*)?exports(?:\s*\.|\s*\[|$)/u, CJS_IMPORT = /^require\(/u;
10
+ /**
11
+ * Creates tester which check if a node starts with specific keyword.
12
+ * @param {string} keyword The keyword to test.
13
+ * @returns {Object} the created tester.
14
+ * @private
15
+ */
16
+ function newKeywordTester(keyword) {
17
+ return { test: (node, sourceCode) => sourceCode.getFirstToken(node).value === keyword };
18
+ }
19
+ /**
20
+ * Creates tester which check if a node starts with specific keyword and spans a single line.
21
+ * @param {string} keyword The keyword to test.
22
+ * @returns {Object} the created tester.
23
+ * @private
24
+ */
25
+ function newSinglelineKeywordTester(keyword) {
26
+ return { test: (node, sourceCode) => node.loc.start.line === node.loc.end.line && sourceCode.getFirstToken(node).value === keyword };
27
+ }
28
+ /**
29
+ * Creates tester which check if a node starts with specific keyword and spans multiple lines.
30
+ * @param {string} keyword The keyword to test.
31
+ * @returns {Object} the created tester.
32
+ * @private
33
+ */
34
+ function newMultilineKeywordTester(keyword) {
35
+ return { test: (node, sourceCode) => node.loc.start.line !== node.loc.end.line && sourceCode.getFirstToken(node).value === keyword };
36
+ }
37
+ /**
38
+ * Creates tester which check if a node is specific type.
39
+ * @param {string} type The node type to test.
40
+ * @returns {Object} the created tester.
41
+ * @private
42
+ */
43
+ function newNodeTypeTester(type) {
44
+ return { test: (node) => node.type === type };
45
+ }
46
+ /**
47
+ * Checks the given node is an expression statement of IIFE.
48
+ * @param {ASTNode} node The node to check.
49
+ * @returns {boolean} `true` if the node is an expression statement of IIFE.
50
+ * @private
51
+ */
52
+ function isIIFEStatement(node) {
53
+ if (node.type === "ExpressionStatement") {
54
+ let call = astUtils.skipChainExpression(node.expression);
55
+ return call.type === "UnaryExpression" && (call = astUtils.skipChainExpression(call.argument)), call.type === "CallExpression" && astUtils.isFunction(call.callee);
56
+ }
57
+ return !1;
58
+ }
59
+ /**
60
+ * Checks whether the given node is a block-like statement.
61
+ * This checks the last token of the node is the closing brace of a block.
62
+ * @param {SourceCode} sourceCode The source code to get tokens.
63
+ * @param {ASTNode} node The node to check.
64
+ * @returns {boolean} `true` if the node is a block-like statement.
65
+ * @private
66
+ */
67
+ function isBlockLikeStatement(sourceCode, node) {
68
+ if (node.type === "DoWhileStatement" && node.body.type === "BlockStatement" || isIIFEStatement(node)) return !0;
69
+ let lastToken = sourceCode.getLastToken(node, astUtils.isNotSemicolonToken), belongingNode = lastToken && astUtils.isClosingBraceToken(lastToken) ? sourceCode.getNodeByRangeIndex(lastToken.range[0]) : null;
70
+ return !!belongingNode && (belongingNode.type === "BlockStatement" || belongingNode.type === "SwitchStatement");
71
+ }
72
+ /**
73
+ * Gets the actual last token.
74
+ *
75
+ * If a semicolon is semicolon-less style's semicolon, this ignores it.
76
+ * For example:
77
+ *
78
+ * foo()
79
+ * ;[1, 2, 3].forEach(bar)
80
+ * @param {SourceCode} sourceCode The source code to get tokens.
81
+ * @param {ASTNode} node The node to get.
82
+ * @returns {Token} The actual last token.
83
+ * @private
84
+ */
85
+ function getActualLastToken(sourceCode, node) {
86
+ let semiToken = sourceCode.getLastToken(node), prevToken = sourceCode.getTokenBefore(semiToken), nextToken = sourceCode.getTokenAfter(semiToken);
87
+ return prevToken && nextToken && prevToken.range[0] >= node.range[0] && astUtils.isSemicolonToken(semiToken) && semiToken.loc.start.line !== prevToken.loc.end.line && semiToken.loc.end.line === nextToken.loc.start.line ? prevToken : semiToken;
88
+ }
89
+ /**
90
+ * This returns the concatenation of the first 2 captured strings.
91
+ * @param {string} _ Unused. Whole matched string.
92
+ * @param {string} trailingSpaces The trailing spaces of the first line.
93
+ * @param {string} indentSpaces The indentation spaces of the last line.
94
+ * @returns {string} The concatenation of trailingSpaces and indentSpaces.
95
+ * @private
96
+ */
97
+ function replacerToRemovePaddingLines(_, trailingSpaces, indentSpaces) {
98
+ return trailingSpaces + indentSpaces;
99
+ }
100
+ /**
101
+ * Check and report statements for `any` configuration.
102
+ * It does nothing.
103
+ * @returns {void}
104
+ * @private
105
+ */
106
+ function verifyForAny() {}
107
+ /**
108
+ * Check and report statements for `never` configuration.
109
+ * This autofix removes blank lines between the given 2 statements.
110
+ * However, if comments exist between 2 blank lines, it does not remove those
111
+ * blank lines automatically.
112
+ * @param {RuleContext} context The rule context to report.
113
+ * @param {ASTNode} _ Unused. The previous node to check.
114
+ * @param {ASTNode} nextNode The next node to check.
115
+ * @param {Array<Token[]>} paddingLines The array of token pairs that blank
116
+ * lines exist between the pair.
117
+ * @returns {void}
118
+ * @private
119
+ */
120
+ function verifyForNever(context, _, nextNode, paddingLines) {
121
+ paddingLines.length !== 0 && context.report({
122
+ node: nextNode,
123
+ messageId: "unexpectedBlankLine",
124
+ fix(fixer) {
125
+ if (paddingLines.length >= 2) return null;
126
+ let prevToken = paddingLines[0][0], nextToken = paddingLines[0][1], start = prevToken.range[1], end = nextToken.range[0], text = context.sourceCode.text.slice(start, end).replace(PADDING_LINE_SEQUENCE, replacerToRemovePaddingLines);
127
+ return fixer.replaceTextRange([start, end], text);
128
+ }
129
+ });
130
+ }
131
+ /**
132
+ * Check and report statements for `always` configuration.
133
+ * This autofix inserts a blank line between the given 2 statements.
134
+ * If the `prevNode` has trailing comments, it inserts a blank line after the
135
+ * trailing comments.
136
+ * @param {RuleContext} context The rule context to report.
137
+ * @param {ASTNode} prevNode The previous node to check.
138
+ * @param {ASTNode} nextNode The next node to check.
139
+ * @param {Array<Token[]>} paddingLines The array of token pairs that blank
140
+ * lines exist between the pair.
141
+ * @returns {void}
142
+ * @private
143
+ */
144
+ function verifyForAlways(context, prevNode, nextNode, paddingLines) {
145
+ paddingLines.length > 0 || context.report({
146
+ node: nextNode,
147
+ messageId: "expectedBlankLine",
148
+ fix(fixer) {
149
+ let sourceCode = context.sourceCode, prevToken = getActualLastToken(sourceCode, prevNode), nextToken = sourceCode.getFirstTokenBetween(prevToken, nextNode, {
150
+ includeComments: !0,
151
+ filter(token) {
152
+ return astUtils.isTokenOnSameLine(prevToken, token) ? (prevToken = token, !1) : !0;
153
+ }
154
+ }) || nextNode, insertText = astUtils.isTokenOnSameLine(prevToken, nextToken) ? "\n\n" : "\n";
155
+ return fixer.insertTextAfter(prevToken, insertText);
156
+ }
157
+ });
158
+ }
159
+ /**
160
+ * Types of blank lines.
161
+ * `any`, `never`, and `always` are defined.
162
+ * Those have `verify` method to check and report statements.
163
+ * @private
164
+ */
165
+ let PaddingTypes = {
166
+ any: { verify: verifyForAny },
167
+ never: { verify: verifyForNever },
168
+ always: { verify: verifyForAlways }
169
+ }, StatementTypes = {
170
+ "*": { test: () => !0 },
171
+ "block-like": { test: (node, sourceCode) => isBlockLikeStatement(sourceCode, node) },
172
+ "cjs-export": { test: (node, sourceCode) => node.type === "ExpressionStatement" && node.expression.type === "AssignmentExpression" && CJS_EXPORT.test(sourceCode.getText(node.expression.left)) },
173
+ "cjs-import": { test: (node, sourceCode) => node.type === "VariableDeclaration" && node.declarations.length > 0 && !!node.declarations[0].init && CJS_IMPORT.test(sourceCode.getText(node.declarations[0].init)) },
174
+ directive: { test: astUtils.isDirective },
175
+ expression: { test: (node) => node.type === "ExpressionStatement" && !astUtils.isDirective(node) },
176
+ iife: { test: isIIFEStatement },
177
+ "multiline-block-like": { test: (node, sourceCode) => node.loc.start.line !== node.loc.end.line && isBlockLikeStatement(sourceCode, node) },
178
+ "multiline-expression": { test: (node) => node.loc.start.line !== node.loc.end.line && node.type === "ExpressionStatement" && !astUtils.isDirective(node) },
179
+ "multiline-const": newMultilineKeywordTester("const"),
180
+ "multiline-let": newMultilineKeywordTester("let"),
181
+ "multiline-var": newMultilineKeywordTester("var"),
182
+ "singleline-const": newSinglelineKeywordTester("const"),
183
+ "singleline-let": newSinglelineKeywordTester("let"),
184
+ "singleline-var": newSinglelineKeywordTester("var"),
185
+ block: newNodeTypeTester("BlockStatement"),
186
+ empty: newNodeTypeTester("EmptyStatement"),
187
+ function: newNodeTypeTester("FunctionDeclaration"),
188
+ break: newKeywordTester("break"),
189
+ case: newKeywordTester("case"),
190
+ class: newKeywordTester("class"),
191
+ const: newKeywordTester("const"),
192
+ continue: newKeywordTester("continue"),
193
+ debugger: newKeywordTester("debugger"),
194
+ default: newKeywordTester("default"),
195
+ do: newKeywordTester("do"),
196
+ export: newKeywordTester("export"),
197
+ for: newKeywordTester("for"),
198
+ if: newKeywordTester("if"),
199
+ import: newKeywordTester("import"),
200
+ let: newKeywordTester("let"),
201
+ return: newKeywordTester("return"),
202
+ switch: newKeywordTester("switch"),
203
+ throw: newKeywordTester("throw"),
204
+ try: newKeywordTester("try"),
205
+ var: newKeywordTester("var"),
206
+ while: newKeywordTester("while"),
207
+ with: newKeywordTester("with")
208
+ };
209
+ /** @type {import('../types').Rule.RuleModule} */
210
+ module.exports = {
211
+ meta: {
212
+ deprecated: {
213
+ message: "Formatting rules are being moved out of ESLint core.",
214
+ url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/",
215
+ deprecatedSince: "8.53.0",
216
+ availableUntil: "11.0.0",
217
+ replacedBy: [{
218
+ message: "ESLint Stylistic now maintains deprecated stylistic core rules.",
219
+ url: "https://eslint.style/guide/migration",
220
+ plugin: {
221
+ name: "@stylistic/eslint-plugin",
222
+ url: "https://eslint.style"
223
+ },
224
+ rule: {
225
+ name: "padding-line-between-statements",
226
+ url: "https://eslint.style/rules/padding-line-between-statements"
227
+ }
228
+ }]
229
+ },
230
+ type: "layout",
231
+ docs: {
232
+ description: "Require or disallow padding lines between statements",
233
+ recommended: !1,
234
+ url: "https://eslint.org/docs/latest/rules/padding-line-between-statements"
235
+ },
236
+ fixable: "whitespace",
237
+ schema: {
238
+ definitions: {
239
+ paddingType: { enum: Object.keys(PaddingTypes) },
240
+ statementType: { anyOf: [{ enum: Object.keys(StatementTypes) }, {
241
+ type: "array",
242
+ items: { enum: Object.keys(StatementTypes) },
243
+ minItems: 1,
244
+ uniqueItems: !0
245
+ }] }
246
+ },
247
+ type: "array",
248
+ items: {
249
+ type: "object",
250
+ properties: {
251
+ blankLine: { $ref: "#/definitions/paddingType" },
252
+ prev: { $ref: "#/definitions/statementType" },
253
+ next: { $ref: "#/definitions/statementType" }
254
+ },
255
+ additionalProperties: !1,
256
+ required: [
257
+ "blankLine",
258
+ "prev",
259
+ "next"
260
+ ]
261
+ }
262
+ },
263
+ messages: {
264
+ unexpectedBlankLine: "Unexpected blank line before this statement.",
265
+ expectedBlankLine: "Expected blank line before this statement."
266
+ }
267
+ },
268
+ create(context) {
269
+ let sourceCode = context.sourceCode, configureList = context.options || [], scopeInfo = null;
270
+ /**
271
+ * Processes to enter to new scope.
272
+ * This manages the current previous statement.
273
+ * @returns {void}
274
+ * @private
275
+ */
276
+ function enterScope() {
277
+ scopeInfo = {
278
+ upper: scopeInfo,
279
+ prevNode: null
280
+ };
281
+ }
282
+ /**
283
+ * Processes to exit from the current scope.
284
+ * @returns {void}
285
+ * @private
286
+ */
287
+ function exitScope() {
288
+ scopeInfo = scopeInfo.upper;
289
+ }
290
+ /**
291
+ * Checks whether the given node matches the given type.
292
+ * @param {ASTNode} node The statement node to check.
293
+ * @param {string|string[]} type The statement type to check.
294
+ * @returns {boolean} `true` if the statement node matched the type.
295
+ * @private
296
+ */
297
+ function match(node, type) {
298
+ let innerStatementNode = node;
299
+ for (; innerStatementNode.type === "LabeledStatement";) innerStatementNode = innerStatementNode.body;
300
+ return Array.isArray(type) ? type.some(match.bind(null, innerStatementNode)) : StatementTypes[type].test(innerStatementNode, sourceCode);
301
+ }
302
+ /**
303
+ * Finds the last matched configure from configureList.
304
+ * @param {ASTNode} prevNode The previous statement to match.
305
+ * @param {ASTNode} nextNode The current statement to match.
306
+ * @returns {Object} The tester of the last matched configure.
307
+ * @private
308
+ */
309
+ function getPaddingType(prevNode, nextNode) {
310
+ for (let i = configureList.length - 1; i >= 0; --i) {
311
+ let configure = configureList[i];
312
+ if (match(prevNode, configure.prev) && match(nextNode, configure.next)) return PaddingTypes[configure.blankLine];
313
+ }
314
+ return PaddingTypes.any;
315
+ }
316
+ /**
317
+ * Gets padding line sequences between the given 2 statements.
318
+ * Comments are separators of the padding line sequences.
319
+ * @param {ASTNode} prevNode The previous statement to count.
320
+ * @param {ASTNode} nextNode The current statement to count.
321
+ * @returns {Array<Token[]>} The array of token pairs.
322
+ * @private
323
+ */
324
+ function getPaddingLineSequences(prevNode, nextNode) {
325
+ let pairs = [], prevToken = getActualLastToken(sourceCode, prevNode);
326
+ if (nextNode.loc.start.line - prevToken.loc.end.line >= 2) do {
327
+ let token = sourceCode.getTokenAfter(prevToken, { includeComments: !0 });
328
+ token.loc.start.line - prevToken.loc.end.line >= 2 && pairs.push([prevToken, token]), prevToken = token;
329
+ } while (prevToken.range[0] < nextNode.range[0]);
330
+ return pairs;
331
+ }
332
+ /**
333
+ * Verify padding lines between the given node and the previous node.
334
+ * @param {ASTNode} node The node to verify.
335
+ * @returns {void}
336
+ * @private
337
+ */
338
+ function verify(node) {
339
+ let parentType = node.parent.type;
340
+ if (!(astUtils.STATEMENT_LIST_PARENTS.has(parentType) || parentType === "SwitchStatement")) return;
341
+ let prevNode = scopeInfo.prevNode;
342
+ if (prevNode) {
343
+ let type = getPaddingType(prevNode, node), paddingLines = getPaddingLineSequences(prevNode, node);
344
+ type.verify(context, prevNode, node, paddingLines);
345
+ }
346
+ scopeInfo.prevNode = node;
347
+ }
348
+ /**
349
+ * Verify padding lines between the given node and the previous node.
350
+ * Then process to enter to new scope.
351
+ * @param {ASTNode} node The node to verify.
352
+ * @returns {void}
353
+ * @private
354
+ */
355
+ function verifyThenEnterScope(node) {
356
+ verify(node), enterScope();
357
+ }
358
+ return {
359
+ Program: enterScope,
360
+ BlockStatement: enterScope,
361
+ SwitchStatement: enterScope,
362
+ StaticBlock: enterScope,
363
+ "Program:exit": exitScope,
364
+ "BlockStatement:exit": exitScope,
365
+ "SwitchStatement:exit": exitScope,
366
+ "StaticBlock:exit": exitScope,
367
+ ":statement": verify,
368
+ SwitchCase: verifyThenEnterScope,
369
+ "SwitchCase:exit": exitScope
370
+ };
371
+ }
372
+ };
373
+ }));
374
+ //#endregion
375
+ //#region src-js/generated/plugin-eslint/rules/padding-line-between-statements.cjs
376
+ module.exports = require_padding_line_between_statements().create;
377
+ //#endregion