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.
- package/LICENSE +22 -0
- package/README.md +36 -0
- package/common/ast-utils.cjs +5843 -0
- package/common/chunk.cjs +9 -0
- package/common/eslint-utils.cjs +1633 -0
- package/common/fix-tracker.cjs +89 -0
- package/common/ignore.cjs +123 -0
- package/common/keywords.cjs +15 -0
- package/common/regexpp.cjs +1720 -0
- package/common/regular-expressions.cjs +40 -0
- package/common/string-utils.cjs +39 -0
- package/index.js +7477 -0
- package/package.json +34 -0
- package/rules/accessor-pairs.cjs +233 -0
- package/rules/array-bracket-newline.cjs +172 -0
- package/rules/array-bracket-spacing.cjs +184 -0
- package/rules/array-callback-return.cjs +262 -0
- package/rules/array-element-newline.cjs +178 -0
- package/rules/arrow-body-style.cjs +135 -0
- package/rules/arrow-parens.cjs +130 -0
- package/rules/arrow-spacing.cjs +129 -0
- package/rules/block-scoped-var.cjs +101 -0
- package/rules/block-spacing.cjs +125 -0
- package/rules/brace-style.cjs +141 -0
- package/rules/callback-return.cjs +117 -0
- package/rules/camelcase.cjs +194 -0
- package/rules/capitalized-comments.cjs +168 -0
- package/rules/class-methods-use-this.cjs +155 -0
- package/rules/comma-dangle.cjs +274 -0
- package/rules/comma-spacing.cjs +111 -0
- package/rules/comma-style.cjs +180 -0
- package/rules/complexity.cjs +100 -0
- package/rules/computed-property-spacing.cjs +155 -0
- package/rules/consistent-return.cjs +113 -0
- package/rules/consistent-this.cjs +109 -0
- package/rules/constructor-super.cjs +207 -0
- package/rules/curly.cjs +173 -0
- package/rules/default-case-last.cjs +36 -0
- package/rules/default-case.cjs +50 -0
- package/rules/default-param-last.cjs +61 -0
- package/rules/dot-location.cjs +87 -0
- package/rules/dot-notation.cjs +77 -0
- package/rules/eol-last.cjs +91 -0
- package/rules/eqeqeq.cjs +127 -0
- package/rules/for-direction.cjs +94 -0
- package/rules/func-call-spacing.cjs +127 -0
- package/rules/func-name-matching.cjs +138 -0
- package/rules/func-names.cjs +121 -0
- package/rules/func-style.cjs +103 -0
- package/rules/function-call-argument-newline.cjs +109 -0
- package/rules/function-paren-newline.cjs +173 -0
- package/rules/generator-star-spacing.cjs +174 -0
- package/rules/getter-return.cjs +129 -0
- package/rules/global-require.cjs +84 -0
- package/rules/grouped-accessor-pairs.cjs +146 -0
- package/rules/guard-for-in.cjs +39 -0
- package/rules/handle-callback-err.cjs +86 -0
- package/rules/id-blacklist.cjs +135 -0
- package/rules/id-denylist.cjs +126 -0
- package/rules/id-length.cjs +119 -0
- package/rules/id-match.cjs +139 -0
- package/rules/implicit-arrow-linebreak.cjs +76 -0
- package/rules/indent-legacy.cjs +520 -0
- package/rules/indent.cjs +842 -0
- package/rules/init-declarations.cjs +88 -0
- package/rules/jsx-quotes.cjs +84 -0
- package/rules/key-spacing.cjs +399 -0
- package/rules/keyword-spacing.cjs +464 -0
- package/rules/line-comment-position.cjs +75 -0
- package/rules/linebreak-style.cjs +89 -0
- package/rules/lines-around-comment.cjs +290 -0
- package/rules/lines-around-directive.cjs +129 -0
- package/rules/lines-between-class-members.cjs +212 -0
- package/rules/logical-assignment-operators.cjs +305 -0
- package/rules/max-classes-per-file.cjs +61 -0
- package/rules/max-depth.cjs +117 -0
- package/rules/max-len.cjs +256 -0
- package/rules/max-lines-per-function.cjs +116 -0
- package/rules/max-lines.cjs +109 -0
- package/rules/max-nested-callbacks.cjs +78 -0
- package/rules/max-params.cjs +78 -0
- package/rules/max-statements-per-line.cjs +147 -0
- package/rules/max-statements.cjs +119 -0
- package/rules/multiline-comment-style.cjs +319 -0
- package/rules/multiline-ternary.cjs +106 -0
- package/rules/new-cap.cjs +139 -0
- package/rules/new-parens.cjs +70 -0
- package/rules/newline-after-var.cjs +159 -0
- package/rules/newline-before-return.cjs +128 -0
- package/rules/newline-per-chained-call.cjs +100 -0
- package/rules/no-alert.cjs +84 -0
- package/rules/no-array-constructor.cjs +91 -0
- package/rules/no-async-promise-executor.cjs +33 -0
- package/rules/no-await-in-loop.cjs +75 -0
- package/rules/no-bitwise.cjs +106 -0
- package/rules/no-buffer-constructor.cjs +51 -0
- package/rules/no-caller.cjs +34 -0
- package/rules/no-case-declarations.cjs +56 -0
- package/rules/no-catch-shadow.cjs +57 -0
- package/rules/no-class-assign.cjs +55 -0
- package/rules/no-compare-neg-zero.cjs +52 -0
- package/rules/no-cond-assign.cjs +104 -0
- package/rules/no-confusing-arrow.cjs +87 -0
- package/rules/no-console.cjs +138 -0
- package/rules/no-const-assign.cjs +50 -0
- package/rules/no-constant-binary-expression.cjs +284 -0
- package/rules/no-constant-condition.cjs +119 -0
- package/rules/no-constructor-return.cjs +43 -0
- package/rules/no-continue.cjs +33 -0
- package/rules/no-control-regex.cjs +74 -0
- package/rules/no-debugger.cjs +33 -0
- package/rules/no-delete-var.cjs +32 -0
- package/rules/no-div-regex.cjs +39 -0
- package/rules/no-dupe-args.cjs +61 -0
- package/rules/no-dupe-class-members.cjs +77 -0
- package/rules/no-dupe-else-if.cjs +74 -0
- package/rules/no-dupe-keys.cjs +88 -0
- package/rules/no-duplicate-case.cjs +49 -0
- package/rules/no-duplicate-imports.cjs +166 -0
- package/rules/no-else-return.cjs +182 -0
- package/rules/no-empty-character-class.cjs +47 -0
- package/rules/no-empty-function.cjs +141 -0
- package/rules/no-empty-pattern.cjs +50 -0
- package/rules/no-empty-static-block.cjs +50 -0
- package/rules/no-empty.cjs +78 -0
- package/rules/no-eq-null.cjs +34 -0
- package/rules/no-eval.cjs +165 -0
- package/rules/no-ex-assign.cjs +45 -0
- package/rules/no-extend-native.cjs +103 -0
- package/rules/no-extra-bind.cjs +127 -0
- package/rules/no-extra-boolean-cast.cjs +159 -0
- package/rules/no-extra-label.cjs +116 -0
- package/rules/no-extra-parens.cjs +665 -0
- package/rules/no-extra-semi.cjs +103 -0
- package/rules/no-fallthrough.cjs +136 -0
- package/rules/no-floating-decimal.cjs +66 -0
- package/rules/no-func-assign.cjs +63 -0
- package/rules/no-global-assign.cjs +62 -0
- package/rules/no-implicit-coercion.cjs +219 -0
- package/rules/no-implicit-globals.cjs +77 -0
- package/rules/no-implied-eval.cjs +87 -0
- package/rules/no-import-assign.cjs +123 -0
- package/rules/no-inline-comments.cjs +57 -0
- package/rules/no-inner-declarations.cjs +82 -0
- package/rules/no-invalid-regexp.cjs +130 -0
- package/rules/no-invalid-this.cjs +90 -0
- package/rules/no-irregular-whitespace.cjs +157 -0
- package/rules/no-iterator.cjs +34 -0
- package/rules/no-label-var.cjs +46 -0
- package/rules/no-labels.cjs +106 -0
- package/rules/no-lone-blocks.cjs +75 -0
- package/rules/no-lonely-if.cjs +42 -0
- package/rules/no-loop-func.cjs +143 -0
- package/rules/no-loss-of-precision.cjs +160 -0
- package/rules/no-magic-numbers.cjs +222 -0
- package/rules/no-misleading-character-class.cjs +500 -0
- package/rules/no-mixed-operators.cjs +197 -0
- package/rules/no-mixed-requires.cjs +117 -0
- package/rules/no-mixed-spaces-and-tabs.cjs +87 -0
- package/rules/no-multi-assign.cjs +38 -0
- package/rules/no-multi-spaces.cjs +95 -0
- package/rules/no-multi-str.cjs +44 -0
- package/rules/no-multiple-empty-lines.cjs +112 -0
- package/rules/no-native-reassign.cjs +72 -0
- package/rules/no-negated-condition.cjs +77 -0
- package/rules/no-negated-in-lhs.cjs +43 -0
- package/rules/no-nested-ternary.cjs +33 -0
- package/rules/no-new-func.cjs +50 -0
- package/rules/no-new-native-nonconstructor.cjs +42 -0
- package/rules/no-new-object.cjs +47 -0
- package/rules/no-new-require.cjs +50 -0
- package/rules/no-new-symbol.cjs +48 -0
- package/rules/no-new-wrappers.cjs +44 -0
- package/rules/no-new.cjs +33 -0
- package/rules/no-nonoctal-decimal-escape.cjs +80 -0
- package/rules/no-obj-calls.cjs +64 -0
- package/rules/no-object-constructor.cjs +69 -0
- package/rules/no-octal-escape.cjs +35 -0
- package/rules/no-octal.cjs +32 -0
- package/rules/no-param-reassign.cjs +135 -0
- package/rules/no-path-concat.cjs +52 -0
- package/rules/no-plusplus.cjs +64 -0
- package/rules/no-process-env.cjs +51 -0
- package/rules/no-process-exit.cjs +50 -0
- package/rules/no-promise-executor-return.cjs +131 -0
- package/rules/no-proto.cjs +34 -0
- package/rules/no-prototype-builtins.cjs +85 -0
- package/rules/no-redeclare.cjs +103 -0
- package/rules/no-regex-spaces.cjs +115 -0
- package/rules/no-restricted-exports.cjs +117 -0
- package/rules/no-restricted-globals.cjs +147 -0
- package/rules/no-restricted-imports.cjs +421 -0
- package/rules/no-restricted-modules.cjs +144 -0
- package/rules/no-restricted-properties.cjs +123 -0
- package/rules/no-restricted-syntax.cjs +49 -0
- package/rules/no-return-assign.cjs +45 -0
- package/rules/no-return-await.cjs +88 -0
- package/rules/no-script-url.cjs +49 -0
- package/rules/no-self-assign.cjs +88 -0
- package/rules/no-self-compare.cjs +53 -0
- package/rules/no-sequences.cjs +81 -0
- package/rules/no-setter-return.cjs +110 -0
- package/rules/no-shadow-restricted-names.cjs +60 -0
- package/rules/no-shadow.cjs +302 -0
- package/rules/no-spaced-func.cjs +69 -0
- package/rules/no-sparse-arrays.cjs +40 -0
- package/rules/no-sync.cjs +58 -0
- package/rules/no-tabs.cjs +73 -0
- package/rules/no-template-curly-in-string.cjs +33 -0
- package/rules/no-ternary.cjs +33 -0
- package/rules/no-this-before-super.cjs +177 -0
- package/rules/no-throw-literal.cjs +40 -0
- package/rules/no-trailing-spaces.cjs +123 -0
- package/rules/no-unassigned-vars.cjs +54 -0
- package/rules/no-undef-init.cjs +46 -0
- package/rules/no-undef.cjs +51 -0
- package/rules/no-undefined.cjs +58 -0
- package/rules/no-underscore-dangle.cjs +211 -0
- package/rules/no-unexpected-multiline.cjs +76 -0
- package/rules/no-unmodified-loop-condition.cjs +849 -0
- package/rules/no-unneeded-ternary.cjs +112 -0
- package/rules/no-unreachable-loop.cjs +128 -0
- package/rules/no-unreachable.cjs +195 -0
- package/rules/no-unsafe-finally.cjs +67 -0
- package/rules/no-unsafe-negation.cjs +86 -0
- package/rules/no-unsafe-optional-chaining.cjs +164 -0
- package/rules/no-unused-expressions.cjs +163 -0
- package/rules/no-unused-labels.cjs +97 -0
- package/rules/no-unused-private-class-members.cjs +69 -0
- package/rules/no-unused-vars.cjs +639 -0
- package/rules/no-use-before-define.cjs +245 -0
- package/rules/no-useless-assignment.cjs +250 -0
- package/rules/no-useless-backreference.cjs +137 -0
- package/rules/no-useless-call.cjs +57 -0
- package/rules/no-useless-catch.cjs +38 -0
- package/rules/no-useless-computed-key.cjs +106 -0
- package/rules/no-useless-concat.cjs +78 -0
- package/rules/no-useless-constructor.cjs +152 -0
- package/rules/no-useless-escape.cjs +164 -0
- package/rules/no-useless-rename.cjs +94 -0
- package/rules/no-useless-return.cjs +229 -0
- package/rules/no-var.cjs +235 -0
- package/rules/no-void.cjs +39 -0
- package/rules/no-warning-comments.cjs +112 -0
- package/rules/no-whitespace-before-property.cjs +72 -0
- package/rules/no-with.cjs +32 -0
- package/rules/nonblock-statement-body-position.cjs +107 -0
- package/rules/object-curly-newline.cjs +194 -0
- package/rules/object-curly-spacing.cjs +225 -0
- package/rules/object-property-newline.cjs +81 -0
- package/rules/object-shorthand.cjs +284 -0
- package/rules/one-var-declaration-per-line.cjs +75 -0
- package/rules/one-var.cjs +378 -0
- package/rules/operator-assignment.cjs +146 -0
- package/rules/operator-linebreak.cjs +150 -0
- package/rules/padded-blocks.cjs +192 -0
- package/rules/padding-line-between-statements.cjs +377 -0
- package/rules/prefer-arrow-callback.cjs +185 -0
- package/rules/prefer-const.cjs +240 -0
- package/rules/prefer-destructuring.cjs +188 -0
- package/rules/prefer-exponentiation-operator.cjs +100 -0
- package/rules/prefer-named-capture-group.cjs +111 -0
- package/rules/prefer-numeric-literals.cjs +75 -0
- package/rules/prefer-object-has-own.cjs +54 -0
- package/rules/prefer-object-spread.cjs +170 -0
- package/rules/prefer-promise-reject-errors.cjs +62 -0
- package/rules/prefer-reflect.cjs +100 -0
- package/rules/prefer-regex-literals.cjs +256 -0
- package/rules/prefer-rest-params.cjs +80 -0
- package/rules/prefer-spread.cjs +57 -0
- package/rules/prefer-template.cjs +147 -0
- package/rules/preserve-caught-error.cjs +196 -0
- package/rules/quote-props.cjs +224 -0
- package/rules/quotes.cjs +187 -0
- package/rules/radix.cjs +124 -0
- package/rules/require-atomic-updates.cjs +197 -0
- package/rules/require-await.cjs +90 -0
- package/rules/require-unicode-regexp.cjs +101 -0
- package/rules/require-yield.cjs +56 -0
- package/rules/rest-spread-spacing.cjs +99 -0
- package/rules/semi-spacing.cjs +215 -0
- package/rules/semi-style.cjs +116 -0
- package/rules/semi.cjs +239 -0
- package/rules/sort-imports.cjs +140 -0
- package/rules/sort-keys.cjs +165 -0
- package/rules/sort-vars.cjs +50 -0
- package/rules/space-before-blocks.cjs +132 -0
- package/rules/space-before-function-paren.cjs +126 -0
- package/rules/space-in-parens.cjs +175 -0
- package/rules/space-infix-ops.cjs +133 -0
- package/rules/space-unary-ops.cjs +237 -0
- package/rules/spaced-comment.cjs +233 -0
- package/rules/strict.cjs +206 -0
- package/rules/switch-colon-spacing.cjs +114 -0
- package/rules/symbol-description.cjs +49 -0
- package/rules/template-curly-spacing.cjs +112 -0
- package/rules/template-tag-spacing.cjs +82 -0
- package/rules/unicode-bom.cjs +52 -0
- package/rules/use-isnan.cjs +144 -0
- package/rules/valid-typeof.cjs +104 -0
- package/rules/vars-on-top.cjs +94 -0
- package/rules/wrap-iife.cjs +131 -0
- package/rules/wrap-regex.cjs +57 -0
- package/rules/yield-star-spacing.cjs +115 -0
- package/rules/yoda.cjs +185 -0
|
@@ -0,0 +1,464 @@
|
|
|
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/keyword-spacing.js
|
|
3
|
+
/**
|
|
4
|
+
* @fileoverview Rule to enforce spacing before and after keywords.
|
|
5
|
+
* @author Toru Nagashima
|
|
6
|
+
* @deprecated in ESLint v8.53.0
|
|
7
|
+
*/
|
|
8
|
+
var require_keyword_spacing = /* @__PURE__ */ require_chunk.t(((exports, module) => {
|
|
9
|
+
let astUtils = require_ast_utils$1.t(), keywords = require_keywords$1.t(), PREV_TOKEN = /^[)\]}>]$/u, NEXT_TOKEN = /^(?:[([{<~!]|\+\+?|--?)$/u, PREV_TOKEN_M = /^[)\]}>*]$/u, NEXT_TOKEN_M = /^[{*]$/u, TEMPLATE_OPEN_PAREN = /\$\{$/u, TEMPLATE_CLOSE_PAREN = /^\}/u, CHECK_TYPE = /^(?:JSXElement|RegularExpression|String|Template|PrivateIdentifier)$/u, KEYS = keywords.concat([
|
|
10
|
+
"as",
|
|
11
|
+
"async",
|
|
12
|
+
"await",
|
|
13
|
+
"from",
|
|
14
|
+
"get",
|
|
15
|
+
"let",
|
|
16
|
+
"of",
|
|
17
|
+
"set",
|
|
18
|
+
"yield"
|
|
19
|
+
]);
|
|
20
|
+
(function() {
|
|
21
|
+
KEYS.sort();
|
|
22
|
+
for (let i = 1; i < KEYS.length; ++i) if (KEYS[i] === KEYS[i - 1]) throw Error(`Duplication was found in the keyword list: ${KEYS[i]}`);
|
|
23
|
+
})();
|
|
24
|
+
/**
|
|
25
|
+
* Checks whether or not a given token is a "Template" token ends with "${".
|
|
26
|
+
* @param {Token} token A token to check.
|
|
27
|
+
* @returns {boolean} `true` if the token is a "Template" token ends with "${".
|
|
28
|
+
*/
|
|
29
|
+
function isOpenParenOfTemplate(token) {
|
|
30
|
+
return token.type === "Template" && TEMPLATE_OPEN_PAREN.test(token.value);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Checks whether or not a given token is a "Template" token starts with "}".
|
|
34
|
+
* @param {Token} token A token to check.
|
|
35
|
+
* @returns {boolean} `true` if the token is a "Template" token starts with "}".
|
|
36
|
+
*/
|
|
37
|
+
function isCloseParenOfTemplate(token) {
|
|
38
|
+
return token.type === "Template" && TEMPLATE_CLOSE_PAREN.test(token.value);
|
|
39
|
+
}
|
|
40
|
+
/** @type {import('../types').Rule.RuleModule} */
|
|
41
|
+
module.exports = {
|
|
42
|
+
meta: {
|
|
43
|
+
deprecated: {
|
|
44
|
+
message: "Formatting rules are being moved out of ESLint core.",
|
|
45
|
+
url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/",
|
|
46
|
+
deprecatedSince: "8.53.0",
|
|
47
|
+
availableUntil: "11.0.0",
|
|
48
|
+
replacedBy: [{
|
|
49
|
+
message: "ESLint Stylistic now maintains deprecated stylistic core rules.",
|
|
50
|
+
url: "https://eslint.style/guide/migration",
|
|
51
|
+
plugin: {
|
|
52
|
+
name: "@stylistic/eslint-plugin",
|
|
53
|
+
url: "https://eslint.style"
|
|
54
|
+
},
|
|
55
|
+
rule: {
|
|
56
|
+
name: "keyword-spacing",
|
|
57
|
+
url: "https://eslint.style/rules/keyword-spacing"
|
|
58
|
+
}
|
|
59
|
+
}]
|
|
60
|
+
},
|
|
61
|
+
type: "layout",
|
|
62
|
+
docs: {
|
|
63
|
+
description: "Enforce consistent spacing before and after keywords",
|
|
64
|
+
recommended: !1,
|
|
65
|
+
url: "https://eslint.org/docs/latest/rules/keyword-spacing"
|
|
66
|
+
},
|
|
67
|
+
fixable: "whitespace",
|
|
68
|
+
schema: [{
|
|
69
|
+
type: "object",
|
|
70
|
+
properties: {
|
|
71
|
+
before: {
|
|
72
|
+
type: "boolean",
|
|
73
|
+
default: !0
|
|
74
|
+
},
|
|
75
|
+
after: {
|
|
76
|
+
type: "boolean",
|
|
77
|
+
default: !0
|
|
78
|
+
},
|
|
79
|
+
overrides: {
|
|
80
|
+
type: "object",
|
|
81
|
+
properties: KEYS.reduce((retv, key) => (retv[key] = {
|
|
82
|
+
type: "object",
|
|
83
|
+
properties: {
|
|
84
|
+
before: { type: "boolean" },
|
|
85
|
+
after: { type: "boolean" }
|
|
86
|
+
},
|
|
87
|
+
additionalProperties: !1
|
|
88
|
+
}, retv), {}),
|
|
89
|
+
additionalProperties: !1
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
additionalProperties: !1
|
|
93
|
+
}],
|
|
94
|
+
messages: {
|
|
95
|
+
expectedBefore: "Expected space(s) before \"{{value}}\".",
|
|
96
|
+
expectedAfter: "Expected space(s) after \"{{value}}\".",
|
|
97
|
+
unexpectedBefore: "Unexpected space(s) before \"{{value}}\".",
|
|
98
|
+
unexpectedAfter: "Unexpected space(s) after \"{{value}}\"."
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
create(context) {
|
|
102
|
+
let sourceCode = context.sourceCode, tokensToIgnore = /* @__PURE__ */ new WeakSet();
|
|
103
|
+
/**
|
|
104
|
+
* Reports a given token if there are not space(s) before the token.
|
|
105
|
+
* @param {Token} token A token to report.
|
|
106
|
+
* @param {RegExp} pattern A pattern of the previous token to check.
|
|
107
|
+
* @returns {void}
|
|
108
|
+
*/
|
|
109
|
+
function expectSpaceBefore(token, pattern) {
|
|
110
|
+
let prevToken = sourceCode.getTokenBefore(token);
|
|
111
|
+
prevToken && (CHECK_TYPE.test(prevToken.type) || pattern.test(prevToken.value)) && !isOpenParenOfTemplate(prevToken) && !tokensToIgnore.has(prevToken) && astUtils.isTokenOnSameLine(prevToken, token) && !sourceCode.isSpaceBetweenTokens(prevToken, token) && context.report({
|
|
112
|
+
loc: token.loc,
|
|
113
|
+
messageId: "expectedBefore",
|
|
114
|
+
data: token,
|
|
115
|
+
fix(fixer) {
|
|
116
|
+
return fixer.insertTextBefore(token, " ");
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Reports a given token if there are space(s) before the token.
|
|
122
|
+
* @param {Token} token A token to report.
|
|
123
|
+
* @param {RegExp} pattern A pattern of the previous token to check.
|
|
124
|
+
* @returns {void}
|
|
125
|
+
*/
|
|
126
|
+
function unexpectSpaceBefore(token, pattern) {
|
|
127
|
+
let prevToken = sourceCode.getTokenBefore(token);
|
|
128
|
+
prevToken && (CHECK_TYPE.test(prevToken.type) || pattern.test(prevToken.value)) && !isOpenParenOfTemplate(prevToken) && !tokensToIgnore.has(prevToken) && astUtils.isTokenOnSameLine(prevToken, token) && sourceCode.isSpaceBetweenTokens(prevToken, token) && context.report({
|
|
129
|
+
loc: {
|
|
130
|
+
start: prevToken.loc.end,
|
|
131
|
+
end: token.loc.start
|
|
132
|
+
},
|
|
133
|
+
messageId: "unexpectedBefore",
|
|
134
|
+
data: token,
|
|
135
|
+
fix(fixer) {
|
|
136
|
+
return fixer.removeRange([prevToken.range[1], token.range[0]]);
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Reports a given token if there are not space(s) after the token.
|
|
142
|
+
* @param {Token} token A token to report.
|
|
143
|
+
* @param {RegExp} pattern A pattern of the next token to check.
|
|
144
|
+
* @returns {void}
|
|
145
|
+
*/
|
|
146
|
+
function expectSpaceAfter(token, pattern) {
|
|
147
|
+
let nextToken = sourceCode.getTokenAfter(token);
|
|
148
|
+
nextToken && (CHECK_TYPE.test(nextToken.type) || pattern.test(nextToken.value)) && !isCloseParenOfTemplate(nextToken) && !tokensToIgnore.has(nextToken) && astUtils.isTokenOnSameLine(token, nextToken) && !sourceCode.isSpaceBetweenTokens(token, nextToken) && context.report({
|
|
149
|
+
loc: token.loc,
|
|
150
|
+
messageId: "expectedAfter",
|
|
151
|
+
data: token,
|
|
152
|
+
fix(fixer) {
|
|
153
|
+
return fixer.insertTextAfter(token, " ");
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Reports a given token if there are space(s) after the token.
|
|
159
|
+
* @param {Token} token A token to report.
|
|
160
|
+
* @param {RegExp} pattern A pattern of the next token to check.
|
|
161
|
+
* @returns {void}
|
|
162
|
+
*/
|
|
163
|
+
function unexpectSpaceAfter(token, pattern) {
|
|
164
|
+
let nextToken = sourceCode.getTokenAfter(token);
|
|
165
|
+
nextToken && (CHECK_TYPE.test(nextToken.type) || pattern.test(nextToken.value)) && !isCloseParenOfTemplate(nextToken) && !tokensToIgnore.has(nextToken) && astUtils.isTokenOnSameLine(token, nextToken) && sourceCode.isSpaceBetweenTokens(token, nextToken) && context.report({
|
|
166
|
+
loc: {
|
|
167
|
+
start: token.loc.end,
|
|
168
|
+
end: nextToken.loc.start
|
|
169
|
+
},
|
|
170
|
+
messageId: "unexpectedAfter",
|
|
171
|
+
data: token,
|
|
172
|
+
fix(fixer) {
|
|
173
|
+
return fixer.removeRange([token.range[1], nextToken.range[0]]);
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Parses the option object and determines check methods for each keyword.
|
|
179
|
+
* @param {Object|undefined} options The option object to parse.
|
|
180
|
+
* @returns {Object} - Normalized option object.
|
|
181
|
+
* Keys are keywords (there are for every keyword).
|
|
182
|
+
* Values are instances of `{"before": function, "after": function}`.
|
|
183
|
+
*/
|
|
184
|
+
function parseOptions(options = {}) {
|
|
185
|
+
let before = options.before !== !1, after = options.after !== !1, defaultValue = {
|
|
186
|
+
before: before ? expectSpaceBefore : unexpectSpaceBefore,
|
|
187
|
+
after: after ? expectSpaceAfter : unexpectSpaceAfter
|
|
188
|
+
}, overrides = options && options.overrides || {}, retv = Object.create(null);
|
|
189
|
+
for (let i = 0; i < KEYS.length; ++i) {
|
|
190
|
+
let key = KEYS[i], override = overrides[key];
|
|
191
|
+
if (override) {
|
|
192
|
+
let thisBefore = "before" in override ? override.before : before, thisAfter = "after" in override ? override.after : after;
|
|
193
|
+
retv[key] = {
|
|
194
|
+
before: thisBefore ? expectSpaceBefore : unexpectSpaceBefore,
|
|
195
|
+
after: thisAfter ? expectSpaceAfter : unexpectSpaceAfter
|
|
196
|
+
};
|
|
197
|
+
} else retv[key] = defaultValue;
|
|
198
|
+
}
|
|
199
|
+
return retv;
|
|
200
|
+
}
|
|
201
|
+
let checkMethodMap = parseOptions(context.options[0]);
|
|
202
|
+
/**
|
|
203
|
+
* Reports a given token if usage of spacing followed by the token is
|
|
204
|
+
* invalid.
|
|
205
|
+
* @param {Token} token A token to report.
|
|
206
|
+
* @param {RegExp} [pattern] Optional. A pattern of the previous
|
|
207
|
+
* token to check.
|
|
208
|
+
* @returns {void}
|
|
209
|
+
*/
|
|
210
|
+
function checkSpacingBefore(token, pattern) {
|
|
211
|
+
checkMethodMap[token.value].before(token, pattern || PREV_TOKEN);
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Reports a given token if usage of spacing preceded by the token is
|
|
215
|
+
* invalid.
|
|
216
|
+
* @param {Token} token A token to report.
|
|
217
|
+
* @param {RegExp} [pattern] Optional. A pattern of the next
|
|
218
|
+
* token to check.
|
|
219
|
+
* @returns {void}
|
|
220
|
+
*/
|
|
221
|
+
function checkSpacingAfter(token, pattern) {
|
|
222
|
+
checkMethodMap[token.value].after(token, pattern || NEXT_TOKEN);
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Reports a given token if usage of spacing around the token is invalid.
|
|
226
|
+
* @param {Token} token A token to report.
|
|
227
|
+
* @returns {void}
|
|
228
|
+
*/
|
|
229
|
+
function checkSpacingAround(token) {
|
|
230
|
+
checkSpacingBefore(token), checkSpacingAfter(token);
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Reports the first token of a given node if the first token is a keyword
|
|
234
|
+
* and usage of spacing around the token is invalid.
|
|
235
|
+
* @param {ASTNode|null} node A node to report.
|
|
236
|
+
* @returns {void}
|
|
237
|
+
*/
|
|
238
|
+
function checkSpacingAroundFirstToken(node) {
|
|
239
|
+
let firstToken = node && sourceCode.getFirstToken(node);
|
|
240
|
+
firstToken && firstToken.type === "Keyword" && checkSpacingAround(firstToken);
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Reports the first token of a given node if the first token is a keyword
|
|
244
|
+
* and usage of spacing followed by the token is invalid.
|
|
245
|
+
*
|
|
246
|
+
* This is used for unary operators (e.g. `typeof`), `function`, and `super`.
|
|
247
|
+
* Other rules are handling usage of spacing preceded by those keywords.
|
|
248
|
+
* @param {ASTNode|null} node A node to report.
|
|
249
|
+
* @returns {void}
|
|
250
|
+
*/
|
|
251
|
+
function checkSpacingBeforeFirstToken(node) {
|
|
252
|
+
let firstToken = node && sourceCode.getFirstToken(node);
|
|
253
|
+
firstToken && firstToken.type === "Keyword" && checkSpacingBefore(firstToken);
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Reports the previous token of a given node if the token is a keyword and
|
|
257
|
+
* usage of spacing around the token is invalid.
|
|
258
|
+
* @param {ASTNode|null} node A node to report.
|
|
259
|
+
* @returns {void}
|
|
260
|
+
*/
|
|
261
|
+
function checkSpacingAroundTokenBefore(node) {
|
|
262
|
+
node && checkSpacingAround(sourceCode.getTokenBefore(node, astUtils.isKeywordToken));
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Reports `async` or `function` keywords of a given node if usage of
|
|
266
|
+
* spacing around those keywords is invalid.
|
|
267
|
+
* @param {ASTNode} node A node to report.
|
|
268
|
+
* @returns {void}
|
|
269
|
+
*/
|
|
270
|
+
function checkSpacingForFunction(node) {
|
|
271
|
+
let firstToken = node && sourceCode.getFirstToken(node);
|
|
272
|
+
firstToken && (firstToken.type === "Keyword" && firstToken.value === "function" || firstToken.value === "async") && checkSpacingBefore(firstToken);
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Reports `class` and `extends` keywords of a given node if usage of
|
|
276
|
+
* spacing around those keywords is invalid.
|
|
277
|
+
* @param {ASTNode} node A node to report.
|
|
278
|
+
* @returns {void}
|
|
279
|
+
*/
|
|
280
|
+
function checkSpacingForClass(node) {
|
|
281
|
+
checkSpacingAroundFirstToken(node), checkSpacingAroundTokenBefore(node.superClass);
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Reports `if` and `else` keywords of a given node if usage of spacing
|
|
285
|
+
* around those keywords is invalid.
|
|
286
|
+
* @param {ASTNode} node A node to report.
|
|
287
|
+
* @returns {void}
|
|
288
|
+
*/
|
|
289
|
+
function checkSpacingForIfStatement(node) {
|
|
290
|
+
checkSpacingAroundFirstToken(node), checkSpacingAroundTokenBefore(node.alternate);
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Reports `try`, `catch`, and `finally` keywords of a given node if usage
|
|
294
|
+
* of spacing around those keywords is invalid.
|
|
295
|
+
* @param {ASTNode} node A node to report.
|
|
296
|
+
* @returns {void}
|
|
297
|
+
*/
|
|
298
|
+
function checkSpacingForTryStatement(node) {
|
|
299
|
+
checkSpacingAroundFirstToken(node), checkSpacingAroundFirstToken(node.handler), checkSpacingAroundTokenBefore(node.finalizer);
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Reports `do` and `while` keywords of a given node if usage of spacing
|
|
303
|
+
* around those keywords is invalid.
|
|
304
|
+
* @param {ASTNode} node A node to report.
|
|
305
|
+
* @returns {void}
|
|
306
|
+
*/
|
|
307
|
+
function checkSpacingForDoWhileStatement(node) {
|
|
308
|
+
checkSpacingAroundFirstToken(node), checkSpacingAroundTokenBefore(node.test);
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Reports `for` and `in` keywords of a given node if usage of spacing
|
|
312
|
+
* around those keywords is invalid.
|
|
313
|
+
* @param {ASTNode} node A node to report.
|
|
314
|
+
* @returns {void}
|
|
315
|
+
*/
|
|
316
|
+
function checkSpacingForForInStatement(node) {
|
|
317
|
+
checkSpacingAroundFirstToken(node);
|
|
318
|
+
let inToken = sourceCode.getTokenBefore(node.right, astUtils.isNotOpeningParenToken);
|
|
319
|
+
sourceCode.getTokenBefore(inToken).type !== "PrivateIdentifier" && checkSpacingBefore(inToken), checkSpacingAfter(inToken);
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Reports `for` and `of` keywords of a given node if usage of spacing
|
|
323
|
+
* around those keywords is invalid.
|
|
324
|
+
* @param {ASTNode} node A node to report.
|
|
325
|
+
* @returns {void}
|
|
326
|
+
*/
|
|
327
|
+
function checkSpacingForForOfStatement(node) {
|
|
328
|
+
node.await ? (checkSpacingBefore(sourceCode.getFirstToken(node, 0)), checkSpacingAfter(sourceCode.getFirstToken(node, 1))) : checkSpacingAroundFirstToken(node);
|
|
329
|
+
let ofToken = sourceCode.getTokenBefore(node.right, astUtils.isNotOpeningParenToken);
|
|
330
|
+
sourceCode.getTokenBefore(ofToken).type !== "PrivateIdentifier" && checkSpacingBefore(ofToken), checkSpacingAfter(ofToken);
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Reports `import`, `export`, `as`, and `from` keywords of a given node if
|
|
334
|
+
* usage of spacing around those keywords is invalid.
|
|
335
|
+
*
|
|
336
|
+
* This rule handles the `*` token in module declarations.
|
|
337
|
+
*
|
|
338
|
+
* import*as A from "./a"; /*error Expected space(s) after "import".
|
|
339
|
+
* error Expected space(s) before "as".
|
|
340
|
+
* @param {ASTNode} node A node to report.
|
|
341
|
+
* @returns {void}
|
|
342
|
+
*/
|
|
343
|
+
function checkSpacingForModuleDeclaration(node) {
|
|
344
|
+
let firstToken = sourceCode.getFirstToken(node);
|
|
345
|
+
if (checkSpacingBefore(firstToken, PREV_TOKEN_M), checkSpacingAfter(firstToken, NEXT_TOKEN_M), node.type === "ExportDefaultDeclaration" && checkSpacingAround(sourceCode.getTokenAfter(firstToken)), node.type === "ExportAllDeclaration" && node.exported) {
|
|
346
|
+
let asToken = sourceCode.getTokenBefore(node.exported);
|
|
347
|
+
checkSpacingBefore(asToken, PREV_TOKEN_M), checkSpacingAfter(asToken, NEXT_TOKEN_M);
|
|
348
|
+
}
|
|
349
|
+
if (node.source) {
|
|
350
|
+
let fromToken = sourceCode.getTokenBefore(node.source);
|
|
351
|
+
checkSpacingBefore(fromToken, PREV_TOKEN_M), checkSpacingAfter(fromToken, NEXT_TOKEN_M);
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Reports `as` keyword of a given node if usage of spacing around this
|
|
356
|
+
* keyword is invalid.
|
|
357
|
+
* @param {ASTNode} node An `ImportSpecifier` node to check.
|
|
358
|
+
* @returns {void}
|
|
359
|
+
*/
|
|
360
|
+
function checkSpacingForImportSpecifier(node) {
|
|
361
|
+
node.imported.range[0] !== node.local.range[0] && checkSpacingBefore(sourceCode.getTokenBefore(node.local), PREV_TOKEN_M);
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Reports `as` keyword of a given node if usage of spacing around this
|
|
365
|
+
* keyword is invalid.
|
|
366
|
+
* @param {ASTNode} node An `ExportSpecifier` node to check.
|
|
367
|
+
* @returns {void}
|
|
368
|
+
*/
|
|
369
|
+
function checkSpacingForExportSpecifier(node) {
|
|
370
|
+
if (node.local.range[0] !== node.exported.range[0]) {
|
|
371
|
+
let asToken = sourceCode.getTokenBefore(node.exported);
|
|
372
|
+
checkSpacingBefore(asToken, PREV_TOKEN_M), checkSpacingAfter(asToken, NEXT_TOKEN_M);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Reports `as` keyword of a given node if usage of spacing around this
|
|
377
|
+
* keyword is invalid.
|
|
378
|
+
* @param {ASTNode} node A node to report.
|
|
379
|
+
* @returns {void}
|
|
380
|
+
*/
|
|
381
|
+
function checkSpacingForImportNamespaceSpecifier(node) {
|
|
382
|
+
checkSpacingBefore(sourceCode.getFirstToken(node, 1), PREV_TOKEN_M);
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* Reports `static`, `get`, and `set` keywords of a given node if usage of
|
|
386
|
+
* spacing around those keywords is invalid.
|
|
387
|
+
* @param {ASTNode} node A node to report.
|
|
388
|
+
* @throws {Error} If unable to find token get, set, or async beside method name.
|
|
389
|
+
* @returns {void}
|
|
390
|
+
*/
|
|
391
|
+
function checkSpacingForProperty(node) {
|
|
392
|
+
if (node.static && checkSpacingAroundFirstToken(node), node.kind === "get" || node.kind === "set" || (node.method || node.type === "MethodDefinition") && node.value.async) {
|
|
393
|
+
let token = sourceCode.getTokenBefore(node.key, (tok) => {
|
|
394
|
+
switch (tok.value) {
|
|
395
|
+
case "get":
|
|
396
|
+
case "set":
|
|
397
|
+
case "async": return !0;
|
|
398
|
+
default: return !1;
|
|
399
|
+
}
|
|
400
|
+
});
|
|
401
|
+
if (!token) throw Error("Failed to find token get, set, or async beside method name");
|
|
402
|
+
checkSpacingAround(token);
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Reports `await` keyword of a given node if usage of spacing before
|
|
407
|
+
* this keyword is invalid.
|
|
408
|
+
* @param {ASTNode} node A node to report.
|
|
409
|
+
* @returns {void}
|
|
410
|
+
*/
|
|
411
|
+
function checkSpacingForAwaitExpression(node) {
|
|
412
|
+
checkSpacingBefore(sourceCode.getFirstToken(node));
|
|
413
|
+
}
|
|
414
|
+
return {
|
|
415
|
+
DebuggerStatement: checkSpacingAroundFirstToken,
|
|
416
|
+
WithStatement: checkSpacingAroundFirstToken,
|
|
417
|
+
BreakStatement: checkSpacingAroundFirstToken,
|
|
418
|
+
ContinueStatement: checkSpacingAroundFirstToken,
|
|
419
|
+
ReturnStatement: checkSpacingAroundFirstToken,
|
|
420
|
+
ThrowStatement: checkSpacingAroundFirstToken,
|
|
421
|
+
TryStatement: checkSpacingForTryStatement,
|
|
422
|
+
IfStatement: checkSpacingForIfStatement,
|
|
423
|
+
SwitchStatement: checkSpacingAroundFirstToken,
|
|
424
|
+
SwitchCase: checkSpacingAroundFirstToken,
|
|
425
|
+
DoWhileStatement: checkSpacingForDoWhileStatement,
|
|
426
|
+
ForInStatement: checkSpacingForForInStatement,
|
|
427
|
+
ForOfStatement: checkSpacingForForOfStatement,
|
|
428
|
+
ForStatement: checkSpacingAroundFirstToken,
|
|
429
|
+
WhileStatement: checkSpacingAroundFirstToken,
|
|
430
|
+
ClassDeclaration: checkSpacingForClass,
|
|
431
|
+
ExportNamedDeclaration: checkSpacingForModuleDeclaration,
|
|
432
|
+
ExportDefaultDeclaration: checkSpacingForModuleDeclaration,
|
|
433
|
+
ExportAllDeclaration: checkSpacingForModuleDeclaration,
|
|
434
|
+
FunctionDeclaration: checkSpacingForFunction,
|
|
435
|
+
ImportDeclaration: checkSpacingForModuleDeclaration,
|
|
436
|
+
VariableDeclaration: checkSpacingAroundFirstToken,
|
|
437
|
+
ArrowFunctionExpression: checkSpacingForFunction,
|
|
438
|
+
AwaitExpression: checkSpacingForAwaitExpression,
|
|
439
|
+
ClassExpression: checkSpacingForClass,
|
|
440
|
+
FunctionExpression: checkSpacingForFunction,
|
|
441
|
+
NewExpression: checkSpacingBeforeFirstToken,
|
|
442
|
+
Super: checkSpacingBeforeFirstToken,
|
|
443
|
+
ThisExpression: checkSpacingBeforeFirstToken,
|
|
444
|
+
UnaryExpression: checkSpacingBeforeFirstToken,
|
|
445
|
+
YieldExpression: checkSpacingBeforeFirstToken,
|
|
446
|
+
ImportSpecifier: checkSpacingForImportSpecifier,
|
|
447
|
+
ExportSpecifier: checkSpacingForExportSpecifier,
|
|
448
|
+
ImportNamespaceSpecifier: checkSpacingForImportNamespaceSpecifier,
|
|
449
|
+
MethodDefinition: checkSpacingForProperty,
|
|
450
|
+
PropertyDefinition: checkSpacingForProperty,
|
|
451
|
+
StaticBlock: checkSpacingAroundFirstToken,
|
|
452
|
+
Property: checkSpacingForProperty,
|
|
453
|
+
"BinaryExpression[operator='>']"(node) {
|
|
454
|
+
let operatorToken = sourceCode.getTokenBefore(node.right, astUtils.isNotOpeningParenToken);
|
|
455
|
+
tokensToIgnore.add(operatorToken);
|
|
456
|
+
}
|
|
457
|
+
};
|
|
458
|
+
}
|
|
459
|
+
};
|
|
460
|
+
}));
|
|
461
|
+
//#endregion
|
|
462
|
+
//#region src-js/generated/plugin-eslint/rules/keyword-spacing.cjs
|
|
463
|
+
module.exports = require_keyword_spacing().create;
|
|
464
|
+
//#endregion
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
const require_chunk = require("../common/chunk.cjs"), require_ast_utils$1 = require("../common/ast-utils.cjs");
|
|
2
|
+
//#region ../../node_modules/.pnpm/eslint@9.39.3_jiti@2.6.1/node_modules/eslint/lib/rules/line-comment-position.js
|
|
3
|
+
/**
|
|
4
|
+
* @fileoverview Rule to enforce the position of line comments
|
|
5
|
+
* @author Alberto Rodríguez
|
|
6
|
+
* @deprecated in ESLint v9.3.0
|
|
7
|
+
*/
|
|
8
|
+
var require_line_comment_position = /* @__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: "9.3.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: "line-comment-position",
|
|
27
|
+
url: "https://eslint.style/rules/line-comment-position"
|
|
28
|
+
}
|
|
29
|
+
}]
|
|
30
|
+
},
|
|
31
|
+
type: "layout",
|
|
32
|
+
docs: {
|
|
33
|
+
description: "Enforce position of line comments",
|
|
34
|
+
recommended: !1,
|
|
35
|
+
url: "https://eslint.org/docs/latest/rules/line-comment-position"
|
|
36
|
+
},
|
|
37
|
+
schema: [{ oneOf: [{ enum: ["above", "beside"] }, {
|
|
38
|
+
type: "object",
|
|
39
|
+
properties: {
|
|
40
|
+
position: { enum: ["above", "beside"] },
|
|
41
|
+
ignorePattern: { type: "string" },
|
|
42
|
+
applyDefaultPatterns: { type: "boolean" },
|
|
43
|
+
applyDefaultIgnorePatterns: { type: "boolean" }
|
|
44
|
+
},
|
|
45
|
+
additionalProperties: !1
|
|
46
|
+
}] }],
|
|
47
|
+
messages: {
|
|
48
|
+
above: "Expected comment to be above code.",
|
|
49
|
+
beside: "Expected comment to be beside code."
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
create(context) {
|
|
53
|
+
let options = context.options[0], above, ignorePattern, applyDefaultIgnorePatterns = !0;
|
|
54
|
+
!options || typeof options == "string" ? above = !options || options === "above" : (above = !options.position || options.position === "above", ignorePattern = options.ignorePattern, applyDefaultIgnorePatterns = Object.hasOwn(options, "applyDefaultIgnorePatterns") ? options.applyDefaultIgnorePatterns : options.applyDefaultPatterns !== !1);
|
|
55
|
+
let defaultIgnoreRegExp = astUtils.COMMENTS_IGNORE_PATTERN, fallThroughRegExp = /^\s*falls?\s?through/u, customIgnoreRegExp = new RegExp(ignorePattern, "u"), sourceCode = context.sourceCode;
|
|
56
|
+
return { Program() {
|
|
57
|
+
sourceCode.getAllComments().filter((token) => token.type === "Line").forEach((node) => {
|
|
58
|
+
if (applyDefaultIgnorePatterns && (defaultIgnoreRegExp.test(node.value) || fallThroughRegExp.test(node.value)) || ignorePattern && customIgnoreRegExp.test(node.value)) return;
|
|
59
|
+
let previous = sourceCode.getTokenBefore(node, { includeComments: !0 }), isOnSameLine = previous && previous.loc.end.line === node.loc.start.line;
|
|
60
|
+
above ? isOnSameLine && context.report({
|
|
61
|
+
node,
|
|
62
|
+
messageId: "above"
|
|
63
|
+
}) : isOnSameLine || context.report({
|
|
64
|
+
node,
|
|
65
|
+
messageId: "beside"
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
} };
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
}));
|
|
72
|
+
//#endregion
|
|
73
|
+
//#region src-js/generated/plugin-eslint/rules/line-comment-position.cjs
|
|
74
|
+
module.exports = require_line_comment_position().create;
|
|
75
|
+
//#endregion
|
|
@@ -0,0 +1,89 @@
|
|
|
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/linebreak-style.js
|
|
3
|
+
/**
|
|
4
|
+
* @fileoverview Rule to enforce a single linebreak style.
|
|
5
|
+
* @author Erik Mueller
|
|
6
|
+
* @deprecated in ESLint v8.53.0
|
|
7
|
+
*/
|
|
8
|
+
var require_linebreak_style = /* @__PURE__ */ require_chunk.t(((exports, module) => {
|
|
9
|
+
/**
|
|
10
|
+
* @import { SourceRange } from "@eslint/core";
|
|
11
|
+
*/
|
|
12
|
+
let astUtils = require_ast_utils$1.t();
|
|
13
|
+
/** @type {import('../types').Rule.RuleModule} */
|
|
14
|
+
module.exports = {
|
|
15
|
+
meta: {
|
|
16
|
+
deprecated: {
|
|
17
|
+
message: "Formatting rules are being moved out of ESLint core.",
|
|
18
|
+
url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/",
|
|
19
|
+
deprecatedSince: "8.53.0",
|
|
20
|
+
availableUntil: "11.0.0",
|
|
21
|
+
replacedBy: [{
|
|
22
|
+
message: "ESLint Stylistic now maintains deprecated stylistic core rules.",
|
|
23
|
+
url: "https://eslint.style/guide/migration",
|
|
24
|
+
plugin: {
|
|
25
|
+
name: "@stylistic/eslint-plugin",
|
|
26
|
+
url: "https://eslint.style"
|
|
27
|
+
},
|
|
28
|
+
rule: {
|
|
29
|
+
name: "linebreak-style",
|
|
30
|
+
url: "https://eslint.style/rules/linebreak-style"
|
|
31
|
+
}
|
|
32
|
+
}]
|
|
33
|
+
},
|
|
34
|
+
type: "layout",
|
|
35
|
+
docs: {
|
|
36
|
+
description: "Enforce consistent linebreak style",
|
|
37
|
+
recommended: !1,
|
|
38
|
+
url: "https://eslint.org/docs/latest/rules/linebreak-style"
|
|
39
|
+
},
|
|
40
|
+
fixable: "whitespace",
|
|
41
|
+
schema: [{ enum: ["unix", "windows"] }],
|
|
42
|
+
messages: {
|
|
43
|
+
expectedLF: "Expected linebreaks to be 'LF' but found 'CRLF'.",
|
|
44
|
+
expectedCRLF: "Expected linebreaks to be 'CRLF' but found 'LF'."
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
create(context) {
|
|
48
|
+
let sourceCode = context.sourceCode;
|
|
49
|
+
/**
|
|
50
|
+
* Builds a fix function that replaces text at the specified range in the source text.
|
|
51
|
+
* @param {SourceRange} range The range to replace
|
|
52
|
+
* @param {string} text The text to insert.
|
|
53
|
+
* @returns {Function} Fixer function
|
|
54
|
+
* @private
|
|
55
|
+
*/
|
|
56
|
+
function createFix(range, text) {
|
|
57
|
+
return function(fixer) {
|
|
58
|
+
return fixer.replaceTextRange(range, text);
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
return { Program: function checkForLinebreakStyle(node) {
|
|
62
|
+
let expectedLF = (context.options[0] || "unix") === "unix", expectedLFChars = expectedLF ? "\n" : "\r\n", source = sourceCode.getText(), pattern = astUtils.createGlobalLinebreakMatcher(), match, i = 0;
|
|
63
|
+
for (; (match = pattern.exec(source)) !== null;) {
|
|
64
|
+
if (i++, match[0] === expectedLFChars) continue;
|
|
65
|
+
let index = match.index, range = [index, index + match[0].length];
|
|
66
|
+
context.report({
|
|
67
|
+
node,
|
|
68
|
+
loc: {
|
|
69
|
+
start: {
|
|
70
|
+
line: i,
|
|
71
|
+
column: sourceCode.lines[i - 1].length
|
|
72
|
+
},
|
|
73
|
+
end: {
|
|
74
|
+
line: i + 1,
|
|
75
|
+
column: 0
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
messageId: expectedLF ? "expectedLF" : "expectedCRLF",
|
|
79
|
+
fix: createFix(range, expectedLFChars)
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
} };
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
}));
|
|
86
|
+
//#endregion
|
|
87
|
+
//#region src-js/generated/plugin-eslint/rules/linebreak-style.cjs
|
|
88
|
+
module.exports = require_linebreak_style().create;
|
|
89
|
+
//#endregion
|