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,140 @@
|
|
|
1
|
+
//#region ../../node_modules/.pnpm/eslint@9.39.3_jiti@2.6.1/node_modules/eslint/lib/rules/sort-imports.js
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Rule to enforce sorted `import` declarations within modules
|
|
4
|
+
* @author Christian Schuller
|
|
5
|
+
*/
|
|
6
|
+
var require_sort_imports = /* @__PURE__ */ require("../common/chunk.cjs").t(((exports, module) => {
|
|
7
|
+
/** @type {import('../types').Rule.RuleModule} */
|
|
8
|
+
module.exports = {
|
|
9
|
+
meta: {
|
|
10
|
+
type: "suggestion",
|
|
11
|
+
defaultOptions: [{
|
|
12
|
+
allowSeparatedGroups: !1,
|
|
13
|
+
ignoreCase: !1,
|
|
14
|
+
ignoreDeclarationSort: !1,
|
|
15
|
+
ignoreMemberSort: !1,
|
|
16
|
+
memberSyntaxSortOrder: [
|
|
17
|
+
"none",
|
|
18
|
+
"all",
|
|
19
|
+
"multiple",
|
|
20
|
+
"single"
|
|
21
|
+
]
|
|
22
|
+
}],
|
|
23
|
+
docs: {
|
|
24
|
+
description: "Enforce sorted `import` declarations within modules",
|
|
25
|
+
recommended: !1,
|
|
26
|
+
frozen: !0,
|
|
27
|
+
url: "https://eslint.org/docs/latest/rules/sort-imports"
|
|
28
|
+
},
|
|
29
|
+
schema: [{
|
|
30
|
+
type: "object",
|
|
31
|
+
properties: {
|
|
32
|
+
ignoreCase: { type: "boolean" },
|
|
33
|
+
memberSyntaxSortOrder: {
|
|
34
|
+
type: "array",
|
|
35
|
+
items: { enum: [
|
|
36
|
+
"none",
|
|
37
|
+
"all",
|
|
38
|
+
"multiple",
|
|
39
|
+
"single"
|
|
40
|
+
] },
|
|
41
|
+
uniqueItems: !0,
|
|
42
|
+
minItems: 4,
|
|
43
|
+
maxItems: 4
|
|
44
|
+
},
|
|
45
|
+
ignoreDeclarationSort: { type: "boolean" },
|
|
46
|
+
ignoreMemberSort: { type: "boolean" },
|
|
47
|
+
allowSeparatedGroups: { type: "boolean" }
|
|
48
|
+
},
|
|
49
|
+
additionalProperties: !1
|
|
50
|
+
}],
|
|
51
|
+
fixable: "code",
|
|
52
|
+
messages: {
|
|
53
|
+
sortImportsAlphabetically: "Imports should be sorted alphabetically.",
|
|
54
|
+
sortMembersAlphabetically: "Member '{{memberName}}' of the import declaration should be sorted alphabetically.",
|
|
55
|
+
unexpectedSyntaxOrder: "Expected '{{syntaxA}}' syntax before '{{syntaxB}}' syntax."
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
create(context) {
|
|
59
|
+
let [{ ignoreCase, ignoreDeclarationSort, ignoreMemberSort, memberSyntaxSortOrder, allowSeparatedGroups }] = context.options, sourceCode = context.sourceCode, previousDeclaration = null;
|
|
60
|
+
/**
|
|
61
|
+
* Gets the used member syntax style.
|
|
62
|
+
*
|
|
63
|
+
* import "my-module.js" --> none
|
|
64
|
+
* import * as myModule from "my-module.js" --> all
|
|
65
|
+
* import {myMember} from "my-module.js" --> single
|
|
66
|
+
* import {foo, bar} from "my-module.js" --> multiple
|
|
67
|
+
* @param {ASTNode} node the ImportDeclaration node.
|
|
68
|
+
* @returns {string} used member parameter style, ["all", "multiple", "single"]
|
|
69
|
+
*/
|
|
70
|
+
function usedMemberSyntax(node) {
|
|
71
|
+
return node.specifiers.length === 0 ? "none" : node.specifiers[0].type === "ImportNamespaceSpecifier" ? "all" : node.specifiers.length === 1 ? "single" : "multiple";
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Gets the group by member parameter index for given declaration.
|
|
75
|
+
* @param {ASTNode} node the ImportDeclaration node.
|
|
76
|
+
* @returns {number} the declaration group by member index.
|
|
77
|
+
*/
|
|
78
|
+
function getMemberParameterGroupIndex(node) {
|
|
79
|
+
return memberSyntaxSortOrder.indexOf(usedMemberSyntax(node));
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Gets the local name of the first imported module.
|
|
83
|
+
* @param {ASTNode} node the ImportDeclaration node.
|
|
84
|
+
* @returns {?string} the local name of the first imported module.
|
|
85
|
+
*/
|
|
86
|
+
function getFirstLocalMemberName(node) {
|
|
87
|
+
return node.specifiers[0] ? node.specifiers[0].local.name : null;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Calculates number of lines between two nodes. It is assumed that the given `left` node appears before
|
|
91
|
+
* the given `right` node in the source code. Lines are counted from the end of the `left` node till the
|
|
92
|
+
* start of the `right` node. If the given nodes are on the same line, it returns `0`, same as if they were
|
|
93
|
+
* on two consecutive lines.
|
|
94
|
+
* @param {ASTNode} left node that appears before the given `right` node.
|
|
95
|
+
* @param {ASTNode} right node that appears after the given `left` node.
|
|
96
|
+
* @returns {number} number of lines between nodes.
|
|
97
|
+
*/
|
|
98
|
+
function getNumberOfLinesBetween(left, right) {
|
|
99
|
+
return Math.max(right.loc.start.line - left.loc.end.line - 1, 0);
|
|
100
|
+
}
|
|
101
|
+
return { ImportDeclaration(node) {
|
|
102
|
+
if (!ignoreDeclarationSort) {
|
|
103
|
+
if (previousDeclaration && allowSeparatedGroups && getNumberOfLinesBetween(previousDeclaration, node) > 0 && (previousDeclaration = null), previousDeclaration) {
|
|
104
|
+
let currentMemberSyntaxGroupIndex = getMemberParameterGroupIndex(node), previousMemberSyntaxGroupIndex = getMemberParameterGroupIndex(previousDeclaration), currentLocalMemberName = getFirstLocalMemberName(node), previousLocalMemberName = getFirstLocalMemberName(previousDeclaration);
|
|
105
|
+
ignoreCase && (previousLocalMemberName &&= previousLocalMemberName.toLowerCase(), currentLocalMemberName &&= currentLocalMemberName.toLowerCase()), currentMemberSyntaxGroupIndex === previousMemberSyntaxGroupIndex ? previousLocalMemberName && currentLocalMemberName && currentLocalMemberName < previousLocalMemberName && context.report({
|
|
106
|
+
node,
|
|
107
|
+
messageId: "sortImportsAlphabetically"
|
|
108
|
+
}) : currentMemberSyntaxGroupIndex < previousMemberSyntaxGroupIndex && context.report({
|
|
109
|
+
node,
|
|
110
|
+
messageId: "unexpectedSyntaxOrder",
|
|
111
|
+
data: {
|
|
112
|
+
syntaxA: memberSyntaxSortOrder[currentMemberSyntaxGroupIndex],
|
|
113
|
+
syntaxB: memberSyntaxSortOrder[previousMemberSyntaxGroupIndex]
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
previousDeclaration = node;
|
|
118
|
+
}
|
|
119
|
+
if (!ignoreMemberSort) {
|
|
120
|
+
let importSpecifiers = node.specifiers.filter((specifier) => specifier.type === "ImportSpecifier"), getSortableName = ignoreCase ? (specifier) => specifier.local.name.toLowerCase() : (specifier) => specifier.local.name, firstUnsortedIndex = importSpecifiers.map(getSortableName).findIndex((name, index, array) => array[index - 1] > name);
|
|
121
|
+
firstUnsortedIndex !== -1 && context.report({
|
|
122
|
+
node: importSpecifiers[firstUnsortedIndex],
|
|
123
|
+
messageId: "sortMembersAlphabetically",
|
|
124
|
+
data: { memberName: importSpecifiers[firstUnsortedIndex].local.name },
|
|
125
|
+
fix(fixer) {
|
|
126
|
+
return importSpecifiers.some((specifier) => sourceCode.getCommentsBefore(specifier).length || sourceCode.getCommentsAfter(specifier).length) ? null : fixer.replaceTextRange([importSpecifiers[0].range[0], importSpecifiers.at(-1).range[1]], importSpecifiers.slice().sort((specifierA, specifierB) => getSortableName(specifierA) > getSortableName(specifierB) ? 1 : -1).reduce((sourceText, specifier, index) => {
|
|
127
|
+
let textAfterSpecifier = index === importSpecifiers.length - 1 ? "" : sourceCode.getText().slice(importSpecifiers[index].range[1], importSpecifiers[index + 1].range[0]);
|
|
128
|
+
return sourceText + sourceCode.getText(specifier) + textAfterSpecifier;
|
|
129
|
+
}, ""));
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
} };
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
}));
|
|
137
|
+
//#endregion
|
|
138
|
+
//#region src-js/generated/plugin-eslint/rules/sort-imports.cjs
|
|
139
|
+
module.exports = require_sort_imports().create;
|
|
140
|
+
//#endregion
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
const require_chunk = require("../common/chunk.cjs"), require_ast_utils$1 = require("../common/ast-utils.cjs");
|
|
2
|
+
//#region ../../node_modules/.pnpm/natural-compare@1.4.0/node_modules/natural-compare/index.js
|
|
3
|
+
var require_natural_compare = /* @__PURE__ */ require_chunk.t(((exports, module) => {
|
|
4
|
+
/*
|
|
5
|
+
* @version 1.4.0
|
|
6
|
+
* @date 2015-10-26
|
|
7
|
+
* @stability 3 - Stable
|
|
8
|
+
* @author Lauri Rooden (https://github.com/litejs/natural-compare-lite)
|
|
9
|
+
* @license MIT License
|
|
10
|
+
*/
|
|
11
|
+
var naturalCompare = function(a, b) {
|
|
12
|
+
var i, codeA, codeB = 1, posA = 0, posB = 0, alphabet = String.alphabet;
|
|
13
|
+
function getCode(str, pos, code) {
|
|
14
|
+
if (code) {
|
|
15
|
+
for (i = pos; code = getCode(str, i), code < 76 && code > 65;) ++i;
|
|
16
|
+
return +str.slice(pos - 1, i);
|
|
17
|
+
}
|
|
18
|
+
return code = alphabet && alphabet.indexOf(str.charAt(pos)), code > -1 ? code + 76 : (code = str.charCodeAt(pos) || 0, code < 45 || code > 127 ? code : code < 46 ? 65 : code < 48 ? code - 1 : code < 58 ? code + 18 : code < 65 ? code - 11 : code < 91 ? code + 11 : code < 97 ? code - 37 : code < 123 ? code + 5 : code - 63);
|
|
19
|
+
}
|
|
20
|
+
if ((a += "") != (b += "")) {
|
|
21
|
+
for (; codeB;) if (codeA = getCode(a, posA++), codeB = getCode(b, posB++), codeA < 76 && codeB < 76 && codeA > 66 && codeB > 66 && (codeA = getCode(a, posA, posA), codeB = getCode(b, posB, posA = i), posB = i), codeA != codeB) return codeA < codeB ? -1 : 1;
|
|
22
|
+
}
|
|
23
|
+
return 0;
|
|
24
|
+
};
|
|
25
|
+
try {
|
|
26
|
+
module.exports = naturalCompare;
|
|
27
|
+
} catch {
|
|
28
|
+
String.naturalCompare = naturalCompare;
|
|
29
|
+
}
|
|
30
|
+
})), require_sort_keys = /* @__PURE__ */ require_chunk.t(((exports, module) => {
|
|
31
|
+
let astUtils = require_ast_utils$1.t(), naturalCompare = require_natural_compare();
|
|
32
|
+
/**
|
|
33
|
+
* Gets the property name of the given `Property` node.
|
|
34
|
+
*
|
|
35
|
+
* - If the property's key is an `Identifier` node, this returns the key's name
|
|
36
|
+
* whether it's a computed property or not.
|
|
37
|
+
* - If the property has a static name, this returns the static name.
|
|
38
|
+
* - Otherwise, this returns null.
|
|
39
|
+
* @param {ASTNode} node The `Property` node to get.
|
|
40
|
+
* @returns {string|null} The property name or null.
|
|
41
|
+
* @private
|
|
42
|
+
*/
|
|
43
|
+
function getPropertyName(node) {
|
|
44
|
+
let staticName = astUtils.getStaticPropertyName(node);
|
|
45
|
+
return staticName === null ? node.key.name || null : staticName;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Functions which check that the given 2 names are in specific order.
|
|
49
|
+
*
|
|
50
|
+
* Postfix `I` is meant insensitive.
|
|
51
|
+
* Postfix `N` is meant natural.
|
|
52
|
+
* @private
|
|
53
|
+
*/
|
|
54
|
+
let isValidOrders = {
|
|
55
|
+
asc(a, b) {
|
|
56
|
+
return a <= b;
|
|
57
|
+
},
|
|
58
|
+
ascI(a, b) {
|
|
59
|
+
return a.toLowerCase() <= b.toLowerCase();
|
|
60
|
+
},
|
|
61
|
+
ascN(a, b) {
|
|
62
|
+
return naturalCompare(a, b) <= 0;
|
|
63
|
+
},
|
|
64
|
+
ascIN(a, b) {
|
|
65
|
+
return naturalCompare(a.toLowerCase(), b.toLowerCase()) <= 0;
|
|
66
|
+
},
|
|
67
|
+
desc(a, b) {
|
|
68
|
+
return isValidOrders.asc(b, a);
|
|
69
|
+
},
|
|
70
|
+
descI(a, b) {
|
|
71
|
+
return isValidOrders.ascI(b, a);
|
|
72
|
+
},
|
|
73
|
+
descN(a, b) {
|
|
74
|
+
return isValidOrders.ascN(b, a);
|
|
75
|
+
},
|
|
76
|
+
descIN(a, b) {
|
|
77
|
+
return isValidOrders.ascIN(b, a);
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
/** @type {import('../types').Rule.RuleModule} */
|
|
81
|
+
module.exports = {
|
|
82
|
+
meta: {
|
|
83
|
+
type: "suggestion",
|
|
84
|
+
defaultOptions: ["asc", {
|
|
85
|
+
allowLineSeparatedGroups: !1,
|
|
86
|
+
caseSensitive: !0,
|
|
87
|
+
ignoreComputedKeys: !1,
|
|
88
|
+
minKeys: 2,
|
|
89
|
+
natural: !1
|
|
90
|
+
}],
|
|
91
|
+
docs: {
|
|
92
|
+
description: "Require object keys to be sorted",
|
|
93
|
+
recommended: !1,
|
|
94
|
+
frozen: !0,
|
|
95
|
+
url: "https://eslint.org/docs/latest/rules/sort-keys"
|
|
96
|
+
},
|
|
97
|
+
schema: [{ enum: ["asc", "desc"] }, {
|
|
98
|
+
type: "object",
|
|
99
|
+
properties: {
|
|
100
|
+
caseSensitive: { type: "boolean" },
|
|
101
|
+
natural: { type: "boolean" },
|
|
102
|
+
minKeys: {
|
|
103
|
+
type: "integer",
|
|
104
|
+
minimum: 2
|
|
105
|
+
},
|
|
106
|
+
allowLineSeparatedGroups: { type: "boolean" },
|
|
107
|
+
ignoreComputedKeys: { type: "boolean" }
|
|
108
|
+
},
|
|
109
|
+
additionalProperties: !1
|
|
110
|
+
}],
|
|
111
|
+
messages: { sortKeys: "Expected object keys to be in {{natural}}{{insensitive}}{{order}}ending order. '{{thisName}}' should be before '{{prevName}}'." }
|
|
112
|
+
},
|
|
113
|
+
create(context) {
|
|
114
|
+
let [order, { caseSensitive, natural, minKeys, allowLineSeparatedGroups, ignoreComputedKeys }] = context.options, insensitive = !caseSensitive, isValidOrder = isValidOrders[order + (insensitive ? "I" : "") + (natural ? "N" : "")], stack = null, sourceCode = context.sourceCode;
|
|
115
|
+
return {
|
|
116
|
+
ObjectExpression(node) {
|
|
117
|
+
stack = {
|
|
118
|
+
upper: stack,
|
|
119
|
+
prevNode: null,
|
|
120
|
+
prevBlankLine: !1,
|
|
121
|
+
prevName: null,
|
|
122
|
+
numKeys: node.properties.length
|
|
123
|
+
};
|
|
124
|
+
},
|
|
125
|
+
"ObjectExpression:exit"() {
|
|
126
|
+
stack = stack.upper;
|
|
127
|
+
},
|
|
128
|
+
SpreadElement(node) {
|
|
129
|
+
node.parent.type === "ObjectExpression" && (stack.prevName = null);
|
|
130
|
+
},
|
|
131
|
+
Property(node) {
|
|
132
|
+
if (node.parent.type === "ObjectPattern") return;
|
|
133
|
+
if (ignoreComputedKeys && node.computed) {
|
|
134
|
+
stack.prevName = null;
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
let prevName = stack.prevName, numKeys = stack.numKeys, thisName = getPropertyName(node), tokens = stack.prevNode && sourceCode.getTokensBetween(stack.prevNode, node, { includeComments: !0 }), isBlankLineBetweenNodes = stack.prevBlankLine;
|
|
138
|
+
if (tokens && (tokens.forEach((token, index) => {
|
|
139
|
+
let previousToken = tokens[index - 1];
|
|
140
|
+
previousToken && token.loc.start.line - previousToken.loc.end.line > 1 && (isBlankLineBetweenNodes = !0);
|
|
141
|
+
}), !isBlankLineBetweenNodes && node.loc.start.line - tokens.at(-1).loc.end.line > 1 && (isBlankLineBetweenNodes = !0), !isBlankLineBetweenNodes && tokens[0].loc.start.line - stack.prevNode.loc.end.line > 1 && (isBlankLineBetweenNodes = !0)), stack.prevNode = node, thisName !== null && (stack.prevName = thisName), allowLineSeparatedGroups && isBlankLineBetweenNodes) {
|
|
142
|
+
stack.prevBlankLine = thisName === null;
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
prevName === null || thisName === null || numKeys < minKeys || isValidOrder(prevName, thisName) || context.report({
|
|
146
|
+
node,
|
|
147
|
+
loc: node.key.loc,
|
|
148
|
+
messageId: "sortKeys",
|
|
149
|
+
data: {
|
|
150
|
+
thisName,
|
|
151
|
+
prevName,
|
|
152
|
+
order,
|
|
153
|
+
insensitive: insensitive ? "insensitive " : "",
|
|
154
|
+
natural: natural ? "natural " : ""
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
}));
|
|
162
|
+
//#endregion
|
|
163
|
+
//#region src-js/generated/plugin-eslint/rules/sort-keys.cjs
|
|
164
|
+
module.exports = require_sort_keys().create;
|
|
165
|
+
//#endregion
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
//#region ../../node_modules/.pnpm/eslint@9.39.3_jiti@2.6.1/node_modules/eslint/lib/rules/sort-vars.js
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Rule to require sorting of variables within a single Variable Declaration block
|
|
4
|
+
* @author Ilya Volodin
|
|
5
|
+
*/
|
|
6
|
+
var require_sort_vars = /* @__PURE__ */ require("../common/chunk.cjs").t(((exports, module) => {
|
|
7
|
+
/** @type {import('../types').Rule.RuleModule} */
|
|
8
|
+
module.exports = {
|
|
9
|
+
meta: {
|
|
10
|
+
type: "suggestion",
|
|
11
|
+
defaultOptions: [{ ignoreCase: !1 }],
|
|
12
|
+
docs: {
|
|
13
|
+
description: "Require variables within the same declaration block to be sorted",
|
|
14
|
+
recommended: !1,
|
|
15
|
+
frozen: !0,
|
|
16
|
+
url: "https://eslint.org/docs/latest/rules/sort-vars"
|
|
17
|
+
},
|
|
18
|
+
schema: [{
|
|
19
|
+
type: "object",
|
|
20
|
+
properties: { ignoreCase: { type: "boolean" } },
|
|
21
|
+
additionalProperties: !1
|
|
22
|
+
}],
|
|
23
|
+
fixable: "code",
|
|
24
|
+
messages: { sortVars: "Variables within the same declaration block should be sorted alphabetically." }
|
|
25
|
+
},
|
|
26
|
+
create(context) {
|
|
27
|
+
let [{ ignoreCase }] = context.options, sourceCode = context.sourceCode;
|
|
28
|
+
return { VariableDeclaration(node) {
|
|
29
|
+
let idDeclarations = node.declarations.filter((decl) => decl.id.type === "Identifier"), getSortableName = ignoreCase ? (decl) => decl.id.name.toLowerCase() : (decl) => decl.id.name, unfixable = idDeclarations.some((decl) => decl.init !== null && decl.init.type !== "Literal"), fixed = !1;
|
|
30
|
+
idDeclarations.slice(1).reduce((memo, decl) => {
|
|
31
|
+
let lastVariableName = getSortableName(memo);
|
|
32
|
+
return getSortableName(decl) < lastVariableName ? (context.report({
|
|
33
|
+
node: decl,
|
|
34
|
+
messageId: "sortVars",
|
|
35
|
+
fix(fixer) {
|
|
36
|
+
return unfixable || fixed ? null : fixer.replaceTextRange([idDeclarations[0].range[0], idDeclarations.at(-1).range[1]], idDeclarations.slice().sort((declA, declB) => getSortableName(declA) > getSortableName(declB) ? 1 : -1).reduce((sourceText, identifier, index) => {
|
|
37
|
+
let textAfterIdentifier = index === idDeclarations.length - 1 ? "" : sourceCode.getText().slice(idDeclarations[index].range[1], idDeclarations[index + 1].range[0]);
|
|
38
|
+
return sourceText + sourceCode.getText(identifier) + textAfterIdentifier;
|
|
39
|
+
}, ""));
|
|
40
|
+
}
|
|
41
|
+
}), fixed = !0, memo) : decl;
|
|
42
|
+
}, idDeclarations[0]);
|
|
43
|
+
} };
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
}));
|
|
47
|
+
//#endregion
|
|
48
|
+
//#region src-js/generated/plugin-eslint/rules/sort-vars.cjs
|
|
49
|
+
module.exports = require_sort_vars().create;
|
|
50
|
+
//#endregion
|
|
@@ -0,0 +1,132 @@
|
|
|
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/space-before-blocks.js
|
|
3
|
+
/**
|
|
4
|
+
* @fileoverview A rule to ensure whitespace before blocks.
|
|
5
|
+
* @author Mathias Schreck <https://github.com/lo1tuma>
|
|
6
|
+
* @deprecated in ESLint v8.53.0
|
|
7
|
+
*/
|
|
8
|
+
var require_space_before_blocks = /* @__PURE__ */ require_chunk.t(((exports, module) => {
|
|
9
|
+
let astUtils = require_ast_utils$1.t();
|
|
10
|
+
/**
|
|
11
|
+
* Checks whether the given node represents the body of a function.
|
|
12
|
+
* @param {ASTNode} node the node to check.
|
|
13
|
+
* @returns {boolean} `true` if the node is function body.
|
|
14
|
+
*/
|
|
15
|
+
function isFunctionBody(node) {
|
|
16
|
+
let parent = node.parent;
|
|
17
|
+
return node.type === "BlockStatement" && astUtils.isFunction(parent) && parent.body === node;
|
|
18
|
+
}
|
|
19
|
+
/** @type {import('../types').Rule.RuleModule} */
|
|
20
|
+
module.exports = {
|
|
21
|
+
meta: {
|
|
22
|
+
deprecated: {
|
|
23
|
+
message: "Formatting rules are being moved out of ESLint core.",
|
|
24
|
+
url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/",
|
|
25
|
+
deprecatedSince: "8.53.0",
|
|
26
|
+
availableUntil: "11.0.0",
|
|
27
|
+
replacedBy: [{
|
|
28
|
+
message: "ESLint Stylistic now maintains deprecated stylistic core rules.",
|
|
29
|
+
url: "https://eslint.style/guide/migration",
|
|
30
|
+
plugin: {
|
|
31
|
+
name: "@stylistic/eslint-plugin",
|
|
32
|
+
url: "https://eslint.style"
|
|
33
|
+
},
|
|
34
|
+
rule: {
|
|
35
|
+
name: "space-before-blocks",
|
|
36
|
+
url: "https://eslint.style/rules/space-before-blocks"
|
|
37
|
+
}
|
|
38
|
+
}]
|
|
39
|
+
},
|
|
40
|
+
type: "layout",
|
|
41
|
+
docs: {
|
|
42
|
+
description: "Enforce consistent spacing before blocks",
|
|
43
|
+
recommended: !1,
|
|
44
|
+
url: "https://eslint.org/docs/latest/rules/space-before-blocks"
|
|
45
|
+
},
|
|
46
|
+
fixable: "whitespace",
|
|
47
|
+
schema: [{ oneOf: [{ enum: ["always", "never"] }, {
|
|
48
|
+
type: "object",
|
|
49
|
+
properties: {
|
|
50
|
+
keywords: { enum: [
|
|
51
|
+
"always",
|
|
52
|
+
"never",
|
|
53
|
+
"off"
|
|
54
|
+
] },
|
|
55
|
+
functions: { enum: [
|
|
56
|
+
"always",
|
|
57
|
+
"never",
|
|
58
|
+
"off"
|
|
59
|
+
] },
|
|
60
|
+
classes: { enum: [
|
|
61
|
+
"always",
|
|
62
|
+
"never",
|
|
63
|
+
"off"
|
|
64
|
+
] }
|
|
65
|
+
},
|
|
66
|
+
additionalProperties: !1
|
|
67
|
+
}] }],
|
|
68
|
+
messages: {
|
|
69
|
+
unexpectedSpace: "Unexpected space before opening brace.",
|
|
70
|
+
missingSpace: "Missing space before opening brace."
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
create(context) {
|
|
74
|
+
let config = context.options[0], sourceCode = context.sourceCode, alwaysFunctions = !0, alwaysKeywords = !0, alwaysClasses = !0, neverFunctions = !1, neverKeywords = !1, neverClasses = !1;
|
|
75
|
+
typeof config == "object" ? (alwaysFunctions = config.functions === "always", alwaysKeywords = config.keywords === "always", alwaysClasses = config.classes === "always", neverFunctions = config.functions === "never", neverKeywords = config.keywords === "never", neverClasses = config.classes === "never") : config === "never" && (alwaysFunctions = !1, alwaysKeywords = !1, alwaysClasses = !1, neverFunctions = !0, neverKeywords = !0, neverClasses = !0);
|
|
76
|
+
/**
|
|
77
|
+
* Checks whether the spacing before the given block is already controlled by another rule:
|
|
78
|
+
* - `arrow-spacing` checks spaces after `=>`.
|
|
79
|
+
* - `keyword-spacing` checks spaces after keywords in certain contexts.
|
|
80
|
+
* - `switch-colon-spacing` checks spaces after `:` of switch cases.
|
|
81
|
+
* @param {Token} precedingToken first token before the block.
|
|
82
|
+
* @param {ASTNode|Token} node `BlockStatement` node or `{` token of a `SwitchStatement` node.
|
|
83
|
+
* @returns {boolean} `true` if requiring or disallowing spaces before the given block could produce conflicts with other rules.
|
|
84
|
+
*/
|
|
85
|
+
function isConflicted(precedingToken, node) {
|
|
86
|
+
return astUtils.isArrowToken(precedingToken) || astUtils.isKeywordToken(precedingToken) && !isFunctionBody(node) || astUtils.isColonToken(precedingToken) && node.parent && node.parent.type === "SwitchCase" && precedingToken === astUtils.getSwitchCaseColonToken(node.parent, sourceCode);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Checks the given BlockStatement node has a preceding space if it doesn’t start on a new line.
|
|
90
|
+
* @param {ASTNode|Token} node The AST node of a BlockStatement.
|
|
91
|
+
* @returns {void} undefined.
|
|
92
|
+
*/
|
|
93
|
+
function checkPrecedingSpace(node) {
|
|
94
|
+
let precedingToken = sourceCode.getTokenBefore(node);
|
|
95
|
+
if (precedingToken && !isConflicted(precedingToken, node) && astUtils.isTokenOnSameLine(precedingToken, node)) {
|
|
96
|
+
let hasSpace = sourceCode.isSpaceBetweenTokens(precedingToken, node), requireSpace, requireNoSpace;
|
|
97
|
+
isFunctionBody(node) ? (requireSpace = alwaysFunctions, requireNoSpace = neverFunctions) : node.type === "ClassBody" ? (requireSpace = alwaysClasses, requireNoSpace = neverClasses) : (requireSpace = alwaysKeywords, requireNoSpace = neverKeywords), requireSpace && !hasSpace ? context.report({
|
|
98
|
+
node,
|
|
99
|
+
messageId: "missingSpace",
|
|
100
|
+
fix(fixer) {
|
|
101
|
+
return fixer.insertTextBefore(node, " ");
|
|
102
|
+
}
|
|
103
|
+
}) : requireNoSpace && hasSpace && context.report({
|
|
104
|
+
node,
|
|
105
|
+
messageId: "unexpectedSpace",
|
|
106
|
+
fix(fixer) {
|
|
107
|
+
return fixer.removeRange([precedingToken.range[1], node.range[0]]);
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Checks if the CaseBlock of an given SwitchStatement node has a preceding space.
|
|
114
|
+
* @param {ASTNode} node The node of a SwitchStatement.
|
|
115
|
+
* @returns {void} undefined.
|
|
116
|
+
*/
|
|
117
|
+
function checkSpaceBeforeCaseBlock(node) {
|
|
118
|
+
let cases = node.cases, openingBrace;
|
|
119
|
+
openingBrace = cases.length > 0 ? sourceCode.getTokenBefore(cases[0]) : sourceCode.getLastToken(node, 1), checkPrecedingSpace(openingBrace);
|
|
120
|
+
}
|
|
121
|
+
return {
|
|
122
|
+
BlockStatement: checkPrecedingSpace,
|
|
123
|
+
ClassBody: checkPrecedingSpace,
|
|
124
|
+
SwitchStatement: checkSpaceBeforeCaseBlock
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
}));
|
|
129
|
+
//#endregion
|
|
130
|
+
//#region src-js/generated/plugin-eslint/rules/space-before-blocks.cjs
|
|
131
|
+
module.exports = require_space_before_blocks().create;
|
|
132
|
+
//#endregion
|
|
@@ -0,0 +1,126 @@
|
|
|
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/space-before-function-paren.js
|
|
3
|
+
/**
|
|
4
|
+
* @fileoverview Rule to validate spacing before function paren.
|
|
5
|
+
* @author Mathias Schreck <https://github.com/lo1tuma>
|
|
6
|
+
* @deprecated in ESLint v8.53.0
|
|
7
|
+
*/
|
|
8
|
+
var require_space_before_function_paren = /* @__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: "space-before-function-paren",
|
|
27
|
+
url: "https://eslint.style/rules/space-before-function-paren"
|
|
28
|
+
}
|
|
29
|
+
}]
|
|
30
|
+
},
|
|
31
|
+
type: "layout",
|
|
32
|
+
docs: {
|
|
33
|
+
description: "Enforce consistent spacing before `function` definition opening parenthesis",
|
|
34
|
+
recommended: !1,
|
|
35
|
+
url: "https://eslint.org/docs/latest/rules/space-before-function-paren"
|
|
36
|
+
},
|
|
37
|
+
fixable: "whitespace",
|
|
38
|
+
schema: [{ oneOf: [{ enum: ["always", "never"] }, {
|
|
39
|
+
type: "object",
|
|
40
|
+
properties: {
|
|
41
|
+
anonymous: { enum: [
|
|
42
|
+
"always",
|
|
43
|
+
"never",
|
|
44
|
+
"ignore"
|
|
45
|
+
] },
|
|
46
|
+
named: { enum: [
|
|
47
|
+
"always",
|
|
48
|
+
"never",
|
|
49
|
+
"ignore"
|
|
50
|
+
] },
|
|
51
|
+
asyncArrow: { enum: [
|
|
52
|
+
"always",
|
|
53
|
+
"never",
|
|
54
|
+
"ignore"
|
|
55
|
+
] }
|
|
56
|
+
},
|
|
57
|
+
additionalProperties: !1
|
|
58
|
+
}] }],
|
|
59
|
+
messages: {
|
|
60
|
+
unexpectedSpace: "Unexpected space before function parentheses.",
|
|
61
|
+
missingSpace: "Missing space before function parentheses."
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
create(context) {
|
|
65
|
+
let sourceCode = context.sourceCode, baseConfig = typeof context.options[0] == "string" ? context.options[0] : "always", overrideConfig = typeof context.options[0] == "object" ? context.options[0] : {};
|
|
66
|
+
/**
|
|
67
|
+
* Determines whether a function has a name.
|
|
68
|
+
* @param {ASTNode} node The function node.
|
|
69
|
+
* @returns {boolean} Whether the function has a name.
|
|
70
|
+
*/
|
|
71
|
+
function isNamedFunction(node) {
|
|
72
|
+
if (node.id) return !0;
|
|
73
|
+
let parent = node.parent;
|
|
74
|
+
return parent.type === "MethodDefinition" || parent.type === "Property" && (parent.kind === "get" || parent.kind === "set" || parent.method);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Gets the config for a given function
|
|
78
|
+
* @param {ASTNode} node The function node
|
|
79
|
+
* @returns {string} "always", "never", or "ignore"
|
|
80
|
+
*/
|
|
81
|
+
function getConfigForFunction(node) {
|
|
82
|
+
if (node.type === "ArrowFunctionExpression") {
|
|
83
|
+
if (node.async && astUtils.isOpeningParenToken(sourceCode.getFirstToken(node, { skip: 1 }))) return overrideConfig.asyncArrow || baseConfig;
|
|
84
|
+
} else if (isNamedFunction(node)) return overrideConfig.named || baseConfig;
|
|
85
|
+
else if (!node.generator) return overrideConfig.anonymous || baseConfig;
|
|
86
|
+
return "ignore";
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Checks the parens of a function node
|
|
90
|
+
* @param {ASTNode} node A function node
|
|
91
|
+
* @returns {void}
|
|
92
|
+
*/
|
|
93
|
+
function checkFunction(node) {
|
|
94
|
+
let functionConfig = getConfigForFunction(node);
|
|
95
|
+
if (functionConfig === "ignore") return;
|
|
96
|
+
let rightToken = sourceCode.getFirstToken(node, astUtils.isOpeningParenToken), leftToken = sourceCode.getTokenBefore(rightToken), hasSpacing = sourceCode.isSpaceBetweenTokens(leftToken, rightToken);
|
|
97
|
+
hasSpacing && functionConfig === "never" ? context.report({
|
|
98
|
+
node,
|
|
99
|
+
loc: {
|
|
100
|
+
start: leftToken.loc.end,
|
|
101
|
+
end: rightToken.loc.start
|
|
102
|
+
},
|
|
103
|
+
messageId: "unexpectedSpace",
|
|
104
|
+
fix(fixer) {
|
|
105
|
+
let comments = sourceCode.getCommentsBefore(rightToken);
|
|
106
|
+
return comments.some((comment) => comment.type === "Line") ? null : fixer.replaceTextRange([leftToken.range[1], rightToken.range[0]], comments.reduce((text, comment) => text + sourceCode.getText(comment), ""));
|
|
107
|
+
}
|
|
108
|
+
}) : !hasSpacing && functionConfig === "always" && context.report({
|
|
109
|
+
node,
|
|
110
|
+
loc: rightToken.loc,
|
|
111
|
+
messageId: "missingSpace",
|
|
112
|
+
fix: (fixer) => fixer.insertTextAfter(leftToken, " ")
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
ArrowFunctionExpression: checkFunction,
|
|
117
|
+
FunctionDeclaration: checkFunction,
|
|
118
|
+
FunctionExpression: checkFunction
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
}));
|
|
123
|
+
//#endregion
|
|
124
|
+
//#region src-js/generated/plugin-eslint/rules/space-before-function-paren.cjs
|
|
125
|
+
module.exports = require_space_before_function_paren().create;
|
|
126
|
+
//#endregion
|