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,378 @@
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/one-var.js
3
+ /**
4
+ * @fileoverview A rule to control the use of single variable declarations.
5
+ * @author Ian Christian Myers
6
+ */
7
+ var require_one_var = /* @__PURE__ */ require_chunk.t(((exports, module) => {
8
+ let astUtils = require_ast_utils$1.t();
9
+ /**
10
+ * Determines whether the given node is in a statement list.
11
+ * @param {ASTNode} node node to check
12
+ * @returns {boolean} `true` if the given node is in a statement list
13
+ */
14
+ function isInStatementList(node) {
15
+ return astUtils.STATEMENT_LIST_PARENTS.has(node.parent.type);
16
+ }
17
+ /** @type {import('../types').Rule.RuleModule} */
18
+ module.exports = {
19
+ meta: {
20
+ type: "suggestion",
21
+ docs: {
22
+ description: "Enforce variables to be declared either together or separately in functions",
23
+ recommended: !1,
24
+ frozen: !0,
25
+ url: "https://eslint.org/docs/latest/rules/one-var"
26
+ },
27
+ fixable: "code",
28
+ schema: [{ oneOf: [
29
+ { enum: [
30
+ "always",
31
+ "never",
32
+ "consecutive"
33
+ ] },
34
+ {
35
+ type: "object",
36
+ properties: {
37
+ separateRequires: { type: "boolean" },
38
+ var: { enum: [
39
+ "always",
40
+ "never",
41
+ "consecutive"
42
+ ] },
43
+ let: { enum: [
44
+ "always",
45
+ "never",
46
+ "consecutive"
47
+ ] },
48
+ const: { enum: [
49
+ "always",
50
+ "never",
51
+ "consecutive"
52
+ ] },
53
+ using: { enum: [
54
+ "always",
55
+ "never",
56
+ "consecutive"
57
+ ] },
58
+ awaitUsing: { enum: [
59
+ "always",
60
+ "never",
61
+ "consecutive"
62
+ ] }
63
+ },
64
+ additionalProperties: !1
65
+ },
66
+ {
67
+ type: "object",
68
+ properties: {
69
+ initialized: { enum: [
70
+ "always",
71
+ "never",
72
+ "consecutive"
73
+ ] },
74
+ uninitialized: { enum: [
75
+ "always",
76
+ "never",
77
+ "consecutive"
78
+ ] }
79
+ },
80
+ additionalProperties: !1
81
+ }
82
+ ] }],
83
+ messages: {
84
+ combineUninitialized: "Combine this with the previous '{{type}}' statement with uninitialized variables.",
85
+ combineInitialized: "Combine this with the previous '{{type}}' statement with initialized variables.",
86
+ splitUninitialized: "Split uninitialized '{{type}}' declarations into multiple statements.",
87
+ splitInitialized: "Split initialized '{{type}}' declarations into multiple statements.",
88
+ splitRequires: "Split requires to be separated into a single block.",
89
+ combine: "Combine this with the previous '{{type}}' statement.",
90
+ split: "Split '{{type}}' declarations into multiple statements."
91
+ }
92
+ },
93
+ create(context) {
94
+ let MODE_ALWAYS = "always", MODE_NEVER = "never", MODE_CONSECUTIVE = "consecutive", mode = context.options[0] || MODE_ALWAYS, options = {};
95
+ typeof mode == "string" ? (options.var = {
96
+ uninitialized: mode,
97
+ initialized: mode
98
+ }, options.let = {
99
+ uninitialized: mode,
100
+ initialized: mode
101
+ }, options.const = {
102
+ uninitialized: mode,
103
+ initialized: mode
104
+ }, options.using = {
105
+ uninitialized: mode,
106
+ initialized: mode
107
+ }, options.awaitUsing = {
108
+ uninitialized: mode,
109
+ initialized: mode
110
+ }) : typeof mode == "object" && (options.separateRequires = !!mode.separateRequires, options.var = {
111
+ uninitialized: mode.var,
112
+ initialized: mode.var
113
+ }, options.let = {
114
+ uninitialized: mode.let,
115
+ initialized: mode.let
116
+ }, options.const = {
117
+ uninitialized: mode.const,
118
+ initialized: mode.const
119
+ }, options.using = {
120
+ uninitialized: mode.using,
121
+ initialized: mode.using
122
+ }, options.awaitUsing = {
123
+ uninitialized: mode.awaitUsing,
124
+ initialized: mode.awaitUsing
125
+ }, Object.hasOwn(mode, "uninitialized") && (options.var.uninitialized = mode.uninitialized, options.let.uninitialized = mode.uninitialized, options.const.uninitialized = mode.uninitialized, options.using.uninitialized = mode.uninitialized, options.awaitUsing.uninitialized = mode.uninitialized), Object.hasOwn(mode, "initialized") && (options.var.initialized = mode.initialized, options.let.initialized = mode.initialized, options.const.initialized = mode.initialized, options.using.initialized = mode.initialized, options.awaitUsing.initialized = mode.initialized));
126
+ let sourceCode = context.sourceCode, functionStack = [], blockStack = [];
127
+ /**
128
+ * Increments the blockStack counter.
129
+ * @returns {void}
130
+ * @private
131
+ */
132
+ function startBlock() {
133
+ blockStack.push({
134
+ let: {
135
+ initialized: !1,
136
+ uninitialized: !1
137
+ },
138
+ const: {
139
+ initialized: !1,
140
+ uninitialized: !1
141
+ },
142
+ using: {
143
+ initialized: !1,
144
+ uninitialized: !1
145
+ },
146
+ awaitUsing: {
147
+ initialized: !1,
148
+ uninitialized: !1
149
+ }
150
+ });
151
+ }
152
+ /**
153
+ * Increments the functionStack counter.
154
+ * @returns {void}
155
+ * @private
156
+ */
157
+ function startFunction() {
158
+ functionStack.push({
159
+ initialized: !1,
160
+ uninitialized: !1
161
+ }), startBlock();
162
+ }
163
+ /**
164
+ * Decrements the blockStack counter.
165
+ * @returns {void}
166
+ * @private
167
+ */
168
+ function endBlock() {
169
+ blockStack.pop();
170
+ }
171
+ /**
172
+ * Decrements the functionStack counter.
173
+ * @returns {void}
174
+ * @private
175
+ */
176
+ function endFunction() {
177
+ functionStack.pop(), endBlock();
178
+ }
179
+ /**
180
+ * Check if a variable declaration is a require.
181
+ * @param {ASTNode} decl variable declaration Node
182
+ * @returns {bool} if decl is a require, return true; else return false.
183
+ * @private
184
+ */
185
+ function isRequire(decl) {
186
+ return decl.init && decl.init.type === "CallExpression" && decl.init.callee.name === "require";
187
+ }
188
+ /**
189
+ * Records whether initialized/uninitialized/required variables are defined in current scope.
190
+ * @param {string} statementType one of: "var", "let", "const", "using", or "awaitUsing"
191
+ * @param {ASTNode[]} declarations List of declarations
192
+ * @param {Object} currentScope The scope being investigated
193
+ * @returns {void}
194
+ * @private
195
+ */
196
+ function recordTypes(statementType, declarations, currentScope) {
197
+ for (let i = 0; i < declarations.length; i++) declarations[i].init === null ? options[statementType] && options[statementType].uninitialized === MODE_ALWAYS && (currentScope.uninitialized = !0) : options[statementType] && options[statementType].initialized === MODE_ALWAYS && (options.separateRequires && isRequire(declarations[i]) ? currentScope.required = !0 : currentScope.initialized = !0);
198
+ }
199
+ /**
200
+ * Determines the current scope (function or block)
201
+ * @param {string} statementType one of: "var", "let", "const", "using", or "awaitUsing"
202
+ * @returns {Object} The scope associated with statementType
203
+ */
204
+ function getCurrentScope(statementType) {
205
+ let currentScope;
206
+ return statementType === "var" ? currentScope = functionStack.at(-1) : statementType === "let" ? currentScope = blockStack.at(-1).let : statementType === "const" ? currentScope = blockStack.at(-1).const : statementType === "using" ? currentScope = blockStack.at(-1).using : statementType === "awaitUsing" && (currentScope = blockStack.at(-1).awaitUsing), currentScope;
207
+ }
208
+ /**
209
+ * Counts the number of initialized and uninitialized declarations in a list of declarations
210
+ * @param {ASTNode[]} declarations List of declarations
211
+ * @returns {Object} Counts of 'uninitialized' and 'initialized' declarations
212
+ * @private
213
+ */
214
+ function countDeclarations(declarations) {
215
+ let counts = {
216
+ uninitialized: 0,
217
+ initialized: 0
218
+ };
219
+ for (let i = 0; i < declarations.length; i++) declarations[i].init === null ? counts.uninitialized++ : counts.initialized++;
220
+ return counts;
221
+ }
222
+ /**
223
+ * Determines if there is more than one var statement in the current scope.
224
+ * @param {string} statementType one of: "var", "let", "const", "using", or "awaitUsing"
225
+ * @param {ASTNode[]} declarations List of declarations
226
+ * @returns {boolean} Returns true if it is the first var declaration, false if not.
227
+ * @private
228
+ */
229
+ function hasOnlyOneStatement(statementType, declarations) {
230
+ let declarationCounts = countDeclarations(declarations), currentOptions = options[statementType] || {}, currentScope = getCurrentScope(statementType), hasRequires = declarations.some(isRequire);
231
+ return currentOptions.uninitialized === MODE_ALWAYS && currentOptions.initialized === MODE_ALWAYS && (currentScope.uninitialized || currentScope.initialized) && !hasRequires || declarationCounts.uninitialized > 0 && currentOptions.uninitialized === MODE_ALWAYS && currentScope.uninitialized || declarationCounts.initialized > 0 && currentOptions.initialized === MODE_ALWAYS && currentScope.initialized && !hasRequires || currentScope.required && hasRequires ? !1 : (recordTypes(statementType, declarations, currentScope), !0);
232
+ }
233
+ /**
234
+ * Fixer to join VariableDeclaration's into a single declaration
235
+ * @param {VariableDeclarator[]} declarations The `VariableDeclaration` to join
236
+ * @returns {Function} The fixer function
237
+ */
238
+ function joinDeclarations(declarations) {
239
+ let declaration = declarations[0], body = Array.isArray(declaration.parent.parent.body) ? declaration.parent.parent.body : [], previousNode = body[body.findIndex((node) => node.range[0] === declaration.parent.range[0]) - 1];
240
+ return function* joinDeclarationsFixer(fixer) {
241
+ let type = sourceCode.getFirstToken(declaration.parent), beforeType = sourceCode.getTokenBefore(type);
242
+ if (previousNode && previousNode.kind === declaration.parent.kind) {
243
+ if (beforeType.value === ";" ? yield fixer.replaceText(beforeType, ",") : yield fixer.insertTextAfter(beforeType, ","), declaration.parent.kind === "await using") {
244
+ let usingToken = sourceCode.getTokenAfter(type);
245
+ yield fixer.remove(usingToken);
246
+ }
247
+ yield fixer.replaceText(type, "");
248
+ }
249
+ };
250
+ }
251
+ /**
252
+ * Fixer to split a VariableDeclaration into individual declarations
253
+ * @param {VariableDeclaration} declaration The `VariableDeclaration` to split
254
+ * @returns {Function|null} The fixer function
255
+ */
256
+ function splitDeclarations(declaration) {
257
+ let { parent } = declaration;
258
+ return isInStatementList(parent.type === "ExportNamedDeclaration" ? parent : declaration) ? (fixer) => declaration.declarations.map((declarator) => {
259
+ let tokenAfterDeclarator = sourceCode.getTokenAfter(declarator);
260
+ if (tokenAfterDeclarator === null) return null;
261
+ let afterComma = sourceCode.getTokenAfter(tokenAfterDeclarator, { includeComments: !0 });
262
+ if (tokenAfterDeclarator.value !== ",") return null;
263
+ let exportPlacement = declaration.parent.type === "ExportNamedDeclaration" ? "export " : "";
264
+ if (afterComma.range[0] === tokenAfterDeclarator.range[1]) return fixer.replaceText(tokenAfterDeclarator, `; ${exportPlacement}${declaration.kind} `);
265
+ if (afterComma.loc.start.line > tokenAfterDeclarator.loc.end.line || afterComma.type === "Line" || afterComma.type === "Block") {
266
+ let lastComment = afterComma;
267
+ for (; lastComment.type === "Line" || lastComment.type === "Block";) lastComment = sourceCode.getTokenAfter(lastComment, { includeComments: !0 });
268
+ return fixer.replaceTextRange([tokenAfterDeclarator.range[0], lastComment.range[0]], `;${sourceCode.text.slice(tokenAfterDeclarator.range[1], lastComment.range[0])}${exportPlacement}${declaration.kind} `);
269
+ }
270
+ return fixer.replaceText(tokenAfterDeclarator, `; ${exportPlacement}${declaration.kind}`);
271
+ }).filter((x) => x) : null;
272
+ }
273
+ /**
274
+ * Checks a given VariableDeclaration node for errors.
275
+ * @param {ASTNode} node The VariableDeclaration node to check
276
+ * @returns {void}
277
+ * @private
278
+ */
279
+ function checkVariableDeclaration(node) {
280
+ let parent = node.parent, type = node.kind, key = type === "await using" ? "awaitUsing" : type;
281
+ if (!options[key]) return;
282
+ let declarations = node.declarations, declarationCounts = countDeclarations(declarations), mixedRequires = declarations.some(isRequire) && !declarations.every(isRequire);
283
+ options[key].initialized === MODE_ALWAYS && options.separateRequires && mixedRequires && context.report({
284
+ node,
285
+ messageId: "splitRequires"
286
+ });
287
+ let nodeIndex = parent.body && parent.body.length > 0 && parent.body.indexOf(node) || 0;
288
+ if (nodeIndex > 0) {
289
+ let previousNode = parent.body[nodeIndex - 1], isPreviousNodeDeclaration = previousNode.type === "VariableDeclaration", declarationsWithPrevious = declarations.concat(previousNode.declarations || []);
290
+ if (isPreviousNodeDeclaration && previousNode.kind === type && !(declarationsWithPrevious.some(isRequire) && !declarationsWithPrevious.every(isRequire))) {
291
+ let previousDeclCounts = countDeclarations(previousNode.declarations);
292
+ options[key].initialized === MODE_CONSECUTIVE && options[key].uninitialized === MODE_CONSECUTIVE ? context.report({
293
+ node,
294
+ messageId: "combine",
295
+ data: { type },
296
+ fix: joinDeclarations(declarations)
297
+ }) : options[key].initialized === MODE_CONSECUTIVE && declarationCounts.initialized > 0 && previousDeclCounts.initialized > 0 ? context.report({
298
+ node,
299
+ messageId: "combineInitialized",
300
+ data: { type },
301
+ fix: joinDeclarations(declarations)
302
+ }) : options[key].uninitialized === MODE_CONSECUTIVE && declarationCounts.uninitialized > 0 && previousDeclCounts.uninitialized > 0 && context.report({
303
+ node,
304
+ messageId: "combineUninitialized",
305
+ data: { type },
306
+ fix: joinDeclarations(declarations)
307
+ });
308
+ }
309
+ }
310
+ if (!hasOnlyOneStatement(key, declarations)) {
311
+ if (options[key].initialized === MODE_ALWAYS && options[key].uninitialized === MODE_ALWAYS) context.report({
312
+ node,
313
+ messageId: "combine",
314
+ data: { type },
315
+ fix: joinDeclarations(declarations)
316
+ });
317
+ else if (options[key].initialized === MODE_ALWAYS && declarationCounts.initialized > 0 && context.report({
318
+ node,
319
+ messageId: "combineInitialized",
320
+ data: { type },
321
+ fix: joinDeclarations(declarations)
322
+ }), options[key].uninitialized === MODE_ALWAYS && declarationCounts.uninitialized > 0) {
323
+ if (node.parent.left === node && (node.parent.type === "ForInStatement" || node.parent.type === "ForOfStatement")) return;
324
+ context.report({
325
+ node,
326
+ messageId: "combineUninitialized",
327
+ data: { type },
328
+ fix: joinDeclarations(declarations)
329
+ });
330
+ }
331
+ }
332
+ (parent.type !== "ForStatement" || parent.init !== node) && declarationCounts.uninitialized + declarationCounts.initialized > 1 && (options[key].initialized === MODE_NEVER && options[key].uninitialized === MODE_NEVER ? context.report({
333
+ node,
334
+ messageId: "split",
335
+ data: { type },
336
+ fix: splitDeclarations(node)
337
+ }) : options[key].initialized === MODE_NEVER && declarationCounts.initialized > 0 ? context.report({
338
+ node,
339
+ messageId: "splitInitialized",
340
+ data: { type },
341
+ fix: splitDeclarations(node)
342
+ }) : options[key].uninitialized === MODE_NEVER && declarationCounts.uninitialized > 0 && context.report({
343
+ node,
344
+ messageId: "splitUninitialized",
345
+ data: { type },
346
+ fix: splitDeclarations(node)
347
+ }));
348
+ }
349
+ return {
350
+ Program: startFunction,
351
+ FunctionDeclaration: startFunction,
352
+ FunctionExpression: startFunction,
353
+ ArrowFunctionExpression: startFunction,
354
+ StaticBlock: startFunction,
355
+ BlockStatement: startBlock,
356
+ ForStatement: startBlock,
357
+ ForInStatement: startBlock,
358
+ ForOfStatement: startBlock,
359
+ SwitchStatement: startBlock,
360
+ VariableDeclaration: checkVariableDeclaration,
361
+ "ForStatement:exit": endBlock,
362
+ "ForOfStatement:exit": endBlock,
363
+ "ForInStatement:exit": endBlock,
364
+ "SwitchStatement:exit": endBlock,
365
+ "BlockStatement:exit": endBlock,
366
+ "Program:exit": endFunction,
367
+ "FunctionDeclaration:exit": endFunction,
368
+ "FunctionExpression:exit": endFunction,
369
+ "ArrowFunctionExpression:exit": endFunction,
370
+ "StaticBlock:exit": endFunction
371
+ };
372
+ }
373
+ };
374
+ }));
375
+ //#endregion
376
+ //#region src-js/generated/plugin-eslint/rules/one-var.cjs
377
+ module.exports = require_one_var().create;
378
+ //#endregion
@@ -0,0 +1,146 @@
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/operator-assignment.js
3
+ /**
4
+ * @fileoverview Rule to replace assignment expressions with operator assignment
5
+ * @author Brandon Mills
6
+ */
7
+ var require_operator_assignment = /* @__PURE__ */ require_chunk.t(((exports, module) => {
8
+ let astUtils = require_ast_utils$1.t();
9
+ /**
10
+ * Checks whether an operator is commutative and has an operator assignment
11
+ * shorthand form.
12
+ * @param {string} operator Operator to check.
13
+ * @returns {boolean} True if the operator is commutative and has a
14
+ * shorthand form.
15
+ */
16
+ function isCommutativeOperatorWithShorthand(operator) {
17
+ return [
18
+ "*",
19
+ "&",
20
+ "^",
21
+ "|"
22
+ ].includes(operator);
23
+ }
24
+ /**
25
+ * Checks whether an operator is not commutative and has an operator assignment
26
+ * shorthand form.
27
+ * @param {string} operator Operator to check.
28
+ * @returns {boolean} True if the operator is not commutative and has
29
+ * a shorthand form.
30
+ */
31
+ function isNonCommutativeOperatorWithShorthand(operator) {
32
+ return [
33
+ "+",
34
+ "-",
35
+ "/",
36
+ "%",
37
+ "<<",
38
+ ">>",
39
+ ">>>",
40
+ "**"
41
+ ].includes(operator);
42
+ }
43
+ /**
44
+ * Determines if the left side of a node can be safely fixed (i.e. if it activates the same getters/setters and)
45
+ * toString calls regardless of whether assignment shorthand is used)
46
+ * @param {ASTNode} node The node on the left side of the expression
47
+ * @returns {boolean} `true` if the node can be fixed
48
+ */
49
+ function canBeFixed(node) {
50
+ return node.type === "Identifier" || node.type === "MemberExpression" && (node.object.type === "Identifier" || node.object.type === "ThisExpression") && (!node.computed || node.property.type === "Literal");
51
+ }
52
+ /** @type {import('../types').Rule.RuleModule} */
53
+ module.exports = {
54
+ meta: {
55
+ type: "suggestion",
56
+ defaultOptions: ["always"],
57
+ docs: {
58
+ description: "Require or disallow assignment operator shorthand where possible",
59
+ recommended: !1,
60
+ frozen: !0,
61
+ url: "https://eslint.org/docs/latest/rules/operator-assignment"
62
+ },
63
+ schema: [{ enum: ["always", "never"] }],
64
+ fixable: "code",
65
+ messages: {
66
+ replaced: "Assignment (=) can be replaced with operator assignment ({{operator}}).",
67
+ unexpected: "Unexpected operator assignment ({{operator}}) shorthand."
68
+ }
69
+ },
70
+ create(context) {
71
+ let never = context.options[0] === "never", sourceCode = context.sourceCode;
72
+ /**
73
+ * Returns the operator token of an AssignmentExpression or BinaryExpression
74
+ * @param {ASTNode} node An AssignmentExpression or BinaryExpression node
75
+ * @returns {Token} The operator token in the node
76
+ */
77
+ function getOperatorToken(node) {
78
+ return sourceCode.getFirstTokenBetween(node.left, node.right, (token) => token.value === node.operator);
79
+ }
80
+ /**
81
+ * Ensures that an assignment uses the shorthand form where possible.
82
+ * @param {ASTNode} node An AssignmentExpression node.
83
+ * @returns {void}
84
+ */
85
+ function verify(node) {
86
+ if (node.operator !== "=" || node.right.type !== "BinaryExpression") return;
87
+ let left = node.left, expr = node.right, operator = expr.operator;
88
+ if (isCommutativeOperatorWithShorthand(operator) || isNonCommutativeOperatorWithShorthand(operator)) {
89
+ let replacementOperator = `${operator}=`;
90
+ astUtils.isSameReference(left, expr.left, !0) ? context.report({
91
+ node,
92
+ messageId: "replaced",
93
+ data: { operator: replacementOperator },
94
+ fix(fixer) {
95
+ if (canBeFixed(left) && canBeFixed(expr.left)) {
96
+ let equalsToken = getOperatorToken(node), operatorToken = getOperatorToken(expr), leftText = sourceCode.getText().slice(node.range[0], equalsToken.range[0]), rightText = sourceCode.getText().slice(operatorToken.range[1], node.right.range[1]);
97
+ return sourceCode.commentsExistBetween(equalsToken, operatorToken) ? null : fixer.replaceText(node, `${leftText}${replacementOperator}${rightText}`);
98
+ }
99
+ return null;
100
+ }
101
+ }) : astUtils.isSameReference(left, expr.right, !0) && isCommutativeOperatorWithShorthand(operator) && context.report({
102
+ node,
103
+ messageId: "replaced",
104
+ data: { operator: replacementOperator }
105
+ });
106
+ }
107
+ }
108
+ /**
109
+ * Warns if an assignment expression uses operator assignment shorthand.
110
+ * @param {ASTNode} node An AssignmentExpression node.
111
+ * @returns {void}
112
+ */
113
+ function prohibit(node) {
114
+ node.operator !== "=" && !astUtils.isLogicalAssignmentOperator(node.operator) && context.report({
115
+ node,
116
+ messageId: "unexpected",
117
+ data: { operator: node.operator },
118
+ fix(fixer) {
119
+ if (canBeFixed(node.left)) {
120
+ let firstToken = sourceCode.getFirstToken(node), operatorToken = getOperatorToken(node), leftText = sourceCode.getText().slice(node.range[0], operatorToken.range[0]), newOperator = node.operator.slice(0, -1), rightText;
121
+ if (sourceCode.commentsExistBetween(firstToken, operatorToken)) return null;
122
+ if (astUtils.getPrecedence(node.right) <= astUtils.getPrecedence({
123
+ type: "BinaryExpression",
124
+ operator: newOperator
125
+ }) && !astUtils.isParenthesised(sourceCode, node.right)) rightText = `${sourceCode.text.slice(operatorToken.range[1], node.right.range[0])}(${sourceCode.getText(node.right)})`;
126
+ else {
127
+ let tokenAfterOperator = sourceCode.getTokenAfter(operatorToken, { includeComments: !0 }), rightTextPrefix = "";
128
+ operatorToken.range[1] === tokenAfterOperator.range[0] && !astUtils.canTokensBeAdjacent({
129
+ type: "Punctuator",
130
+ value: newOperator
131
+ }, tokenAfterOperator) && (rightTextPrefix = " "), rightText = `${rightTextPrefix}${sourceCode.text.slice(operatorToken.range[1], node.range[1])}`;
132
+ }
133
+ return fixer.replaceText(node, `${leftText}= ${leftText}${newOperator}${rightText}`);
134
+ }
135
+ return null;
136
+ }
137
+ });
138
+ }
139
+ return { AssignmentExpression: never ? prohibit : verify };
140
+ }
141
+ };
142
+ }));
143
+ //#endregion
144
+ //#region src-js/generated/plugin-eslint/rules/operator-assignment.cjs
145
+ module.exports = require_operator_assignment().create;
146
+ //#endregion
@@ -0,0 +1,150 @@
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/operator-linebreak.js
3
+ /**
4
+ * @fileoverview Operator linebreak - enforces operator linebreak style of two types: after and before
5
+ * @author Benoît Zugmeyer
6
+ * @deprecated in ESLint v8.53.0
7
+ */
8
+ var require_operator_linebreak = /* @__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: "operator-linebreak",
27
+ url: "https://eslint.style/rules/operator-linebreak"
28
+ }
29
+ }]
30
+ },
31
+ type: "layout",
32
+ docs: {
33
+ description: "Enforce consistent linebreak style for operators",
34
+ recommended: !1,
35
+ url: "https://eslint.org/docs/latest/rules/operator-linebreak"
36
+ },
37
+ schema: [{ enum: [
38
+ "after",
39
+ "before",
40
+ "none",
41
+ null
42
+ ] }, {
43
+ type: "object",
44
+ properties: { overrides: {
45
+ type: "object",
46
+ additionalProperties: { enum: [
47
+ "after",
48
+ "before",
49
+ "none",
50
+ "ignore"
51
+ ] }
52
+ } },
53
+ additionalProperties: !1
54
+ }],
55
+ fixable: "code",
56
+ messages: {
57
+ operatorAtBeginning: "'{{operator}}' should be placed at the beginning of the line.",
58
+ operatorAtEnd: "'{{operator}}' should be placed at the end of the line.",
59
+ badLinebreak: "Bad line breaking before and after '{{operator}}'.",
60
+ noLinebreak: "There should be no line break before or after '{{operator}}'."
61
+ }
62
+ },
63
+ create(context) {
64
+ let usedDefaultGlobal = !context.options[0], globalStyle = context.options[0] || "after", options = context.options[1] || {}, styleOverrides = options.overrides ? Object.assign({}, options.overrides) : {};
65
+ usedDefaultGlobal && !styleOverrides["?"] && (styleOverrides["?"] = "before"), usedDefaultGlobal && !styleOverrides[":"] && (styleOverrides[":"] = "before");
66
+ let sourceCode = context.sourceCode;
67
+ /**
68
+ * Gets a fixer function to fix rule issues
69
+ * @param {Token} operatorToken The operator token of an expression
70
+ * @param {string} desiredStyle The style for the rule. One of 'before', 'after', 'none'
71
+ * @returns {Function} A fixer function
72
+ */
73
+ function getFixer(operatorToken, desiredStyle) {
74
+ return (fixer) => {
75
+ let tokenBefore = sourceCode.getTokenBefore(operatorToken), tokenAfter = sourceCode.getTokenAfter(operatorToken), textBefore = sourceCode.text.slice(tokenBefore.range[1], operatorToken.range[0]), textAfter = sourceCode.text.slice(operatorToken.range[1], tokenAfter.range[0]), hasLinebreakBefore = !astUtils.isTokenOnSameLine(tokenBefore, operatorToken), hasLinebreakAfter = !astUtils.isTokenOnSameLine(operatorToken, tokenAfter), newTextBefore, newTextAfter;
76
+ if (hasLinebreakBefore !== hasLinebreakAfter && desiredStyle !== "none") {
77
+ if (sourceCode.getTokenBefore(operatorToken, { includeComments: !0 }) !== tokenBefore && sourceCode.getTokenAfter(operatorToken, { includeComments: !0 }) !== tokenAfter) return null;
78
+ newTextBefore = textAfter, newTextAfter = textBefore;
79
+ } else {
80
+ let LINEBREAK_REGEX = astUtils.createGlobalLinebreakMatcher();
81
+ if (newTextBefore = desiredStyle === "before" || textBefore.trim() ? textBefore : textBefore.replace(LINEBREAK_REGEX, ""), newTextAfter = desiredStyle === "after" || textAfter.trim() ? textAfter : textAfter.replace(LINEBREAK_REGEX, ""), newTextBefore === textBefore && newTextAfter === textAfter) return null;
82
+ }
83
+ return newTextAfter === "" && tokenAfter.type === "Punctuator" && "+-".includes(operatorToken.value) && tokenAfter.value === operatorToken.value && (newTextAfter += " "), fixer.replaceTextRange([tokenBefore.range[1], tokenAfter.range[0]], newTextBefore + operatorToken.value + newTextAfter);
84
+ };
85
+ }
86
+ /**
87
+ * Checks the operator placement
88
+ * @param {ASTNode} node The node to check
89
+ * @param {ASTNode} rightSide The node that comes after the operator in `node`
90
+ * @param {string} operator The operator
91
+ * @private
92
+ * @returns {void}
93
+ */
94
+ function validateNode(node, rightSide, operator) {
95
+ let operatorToken = sourceCode.getTokenBefore(rightSide, (token) => token.value === operator), leftToken = sourceCode.getTokenBefore(operatorToken), rightToken = sourceCode.getTokenAfter(operatorToken), operatorStyleOverride = styleOverrides[operator], style = operatorStyleOverride || globalStyle, fix = getFixer(operatorToken, style);
96
+ astUtils.isTokenOnSameLine(leftToken, operatorToken) && astUtils.isTokenOnSameLine(operatorToken, rightToken) || (operatorStyleOverride !== "ignore" && !astUtils.isTokenOnSameLine(leftToken, operatorToken) && !astUtils.isTokenOnSameLine(operatorToken, rightToken) ? context.report({
97
+ node,
98
+ loc: operatorToken.loc,
99
+ messageId: "badLinebreak",
100
+ data: { operator },
101
+ fix
102
+ }) : style === "before" && astUtils.isTokenOnSameLine(leftToken, operatorToken) ? context.report({
103
+ node,
104
+ loc: operatorToken.loc,
105
+ messageId: "operatorAtBeginning",
106
+ data: { operator },
107
+ fix
108
+ }) : style === "after" && astUtils.isTokenOnSameLine(operatorToken, rightToken) ? context.report({
109
+ node,
110
+ loc: operatorToken.loc,
111
+ messageId: "operatorAtEnd",
112
+ data: { operator },
113
+ fix
114
+ }) : style === "none" && context.report({
115
+ node,
116
+ loc: operatorToken.loc,
117
+ messageId: "noLinebreak",
118
+ data: { operator },
119
+ fix
120
+ }));
121
+ }
122
+ /**
123
+ * Validates a binary expression using `validateNode`
124
+ * @param {BinaryExpression|LogicalExpression|AssignmentExpression} node node to be validated
125
+ * @returns {void}
126
+ */
127
+ function validateBinaryExpression(node) {
128
+ validateNode(node, node.right, node.operator);
129
+ }
130
+ return {
131
+ BinaryExpression: validateBinaryExpression,
132
+ LogicalExpression: validateBinaryExpression,
133
+ AssignmentExpression: validateBinaryExpression,
134
+ VariableDeclarator(node) {
135
+ node.init && validateNode(node, node.init, "=");
136
+ },
137
+ PropertyDefinition(node) {
138
+ node.value && validateNode(node, node.value, "=");
139
+ },
140
+ ConditionalExpression(node) {
141
+ validateNode(node, node.consequent, "?"), validateNode(node, node.alternate, ":");
142
+ }
143
+ };
144
+ }
145
+ };
146
+ }));
147
+ //#endregion
148
+ //#region src-js/generated/plugin-eslint/rules/operator-linebreak.cjs
149
+ module.exports = require_operator_linebreak().create;
150
+ //#endregion