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,131 @@
|
|
|
1
|
+
const require_chunk = require("../common/chunk.cjs"), require_ast_utils$1 = require("../common/ast-utils.cjs"), require_eslint_utils$1 = require("../common/eslint-utils.cjs");
|
|
2
|
+
//#region ../../node_modules/.pnpm/eslint@9.39.3_jiti@2.6.1/node_modules/eslint/lib/rules/wrap-iife.js
|
|
3
|
+
/**
|
|
4
|
+
* @fileoverview Rule to flag when IIFE is not wrapped in parens
|
|
5
|
+
* @author Ilya Volodin
|
|
6
|
+
* @deprecated in ESLint v8.53.0
|
|
7
|
+
*/
|
|
8
|
+
var require_wrap_iife = /* @__PURE__ */ require_chunk.t(((exports, module) => {
|
|
9
|
+
let astUtils = require_ast_utils$1.t(), eslintUtils = require_eslint_utils$1.t();
|
|
10
|
+
/**
|
|
11
|
+
* Check if the given node is callee of a `NewExpression` node
|
|
12
|
+
* @param {ASTNode} node node to check
|
|
13
|
+
* @returns {boolean} True if the node is callee of a `NewExpression` node
|
|
14
|
+
* @private
|
|
15
|
+
*/
|
|
16
|
+
function isCalleeOfNewExpression(node) {
|
|
17
|
+
let maybeCallee = node.parent.type === "ChainExpression" ? node.parent : node;
|
|
18
|
+
return maybeCallee.parent.type === "NewExpression" && maybeCallee.parent.callee === maybeCallee;
|
|
19
|
+
}
|
|
20
|
+
/** @type {import('../types').Rule.RuleModule} */
|
|
21
|
+
module.exports = {
|
|
22
|
+
meta: {
|
|
23
|
+
deprecated: {
|
|
24
|
+
message: "Formatting rules are being moved out of ESLint core.",
|
|
25
|
+
url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/",
|
|
26
|
+
deprecatedSince: "8.53.0",
|
|
27
|
+
availableUntil: "11.0.0",
|
|
28
|
+
replacedBy: [{
|
|
29
|
+
message: "ESLint Stylistic now maintains deprecated stylistic core rules.",
|
|
30
|
+
url: "https://eslint.style/guide/migration",
|
|
31
|
+
plugin: {
|
|
32
|
+
name: "@stylistic/eslint-plugin",
|
|
33
|
+
url: "https://eslint.style"
|
|
34
|
+
},
|
|
35
|
+
rule: {
|
|
36
|
+
name: "wrap-iife",
|
|
37
|
+
url: "https://eslint.style/rules/wrap-iife"
|
|
38
|
+
}
|
|
39
|
+
}]
|
|
40
|
+
},
|
|
41
|
+
type: "layout",
|
|
42
|
+
docs: {
|
|
43
|
+
description: "Require parentheses around immediate `function` invocations",
|
|
44
|
+
recommended: !1,
|
|
45
|
+
url: "https://eslint.org/docs/latest/rules/wrap-iife"
|
|
46
|
+
},
|
|
47
|
+
schema: [{ enum: [
|
|
48
|
+
"outside",
|
|
49
|
+
"inside",
|
|
50
|
+
"any"
|
|
51
|
+
] }, {
|
|
52
|
+
type: "object",
|
|
53
|
+
properties: { functionPrototypeMethods: {
|
|
54
|
+
type: "boolean",
|
|
55
|
+
default: !1
|
|
56
|
+
} },
|
|
57
|
+
additionalProperties: !1
|
|
58
|
+
}],
|
|
59
|
+
fixable: "code",
|
|
60
|
+
messages: {
|
|
61
|
+
wrapInvocation: "Wrap an immediate function invocation in parentheses.",
|
|
62
|
+
wrapExpression: "Wrap only the function expression in parens.",
|
|
63
|
+
moveInvocation: "Move the invocation into the parens that contain the function."
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
create(context) {
|
|
67
|
+
let style = context.options[0] || "outside", includeFunctionPrototypeMethods = context.options[1] && context.options[1].functionPrototypeMethods, sourceCode = context.sourceCode;
|
|
68
|
+
/**
|
|
69
|
+
* Check if the node is wrapped in any (). All parens count: grouping parens and parens for constructs such as if()
|
|
70
|
+
* @param {ASTNode} node node to evaluate
|
|
71
|
+
* @returns {boolean} True if it is wrapped in any parens
|
|
72
|
+
* @private
|
|
73
|
+
*/
|
|
74
|
+
function isWrappedInAnyParens(node) {
|
|
75
|
+
return astUtils.isParenthesised(sourceCode, node);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Check if the node is wrapped in grouping (). Parens for constructs such as if() don't count
|
|
79
|
+
* @param {ASTNode} node node to evaluate
|
|
80
|
+
* @returns {boolean} True if it is wrapped in grouping parens
|
|
81
|
+
* @private
|
|
82
|
+
*/
|
|
83
|
+
function isWrappedInGroupingParens(node) {
|
|
84
|
+
return eslintUtils.isParenthesized(1, node, sourceCode);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Get the function node from an IIFE
|
|
88
|
+
* @param {ASTNode} node node to evaluate
|
|
89
|
+
* @returns {ASTNode} node that is the function expression of the given IIFE, or null if none exist
|
|
90
|
+
*/
|
|
91
|
+
function getFunctionNodeFromIIFE(node) {
|
|
92
|
+
let callee = astUtils.skipChainExpression(node.callee);
|
|
93
|
+
return callee.type === "FunctionExpression" ? callee : includeFunctionPrototypeMethods && callee.type === "MemberExpression" && callee.object.type === "FunctionExpression" && (astUtils.getStaticPropertyName(callee) === "call" || astUtils.getStaticPropertyName(callee) === "apply") ? callee.object : null;
|
|
94
|
+
}
|
|
95
|
+
return { CallExpression(node) {
|
|
96
|
+
let innerNode = getFunctionNodeFromIIFE(node);
|
|
97
|
+
if (!innerNode) return;
|
|
98
|
+
let isCallExpressionWrapped = isWrappedInAnyParens(node), isFunctionExpressionWrapped = isWrappedInAnyParens(innerNode);
|
|
99
|
+
!isCallExpressionWrapped && !isFunctionExpressionWrapped ? context.report({
|
|
100
|
+
node,
|
|
101
|
+
messageId: "wrapInvocation",
|
|
102
|
+
fix(fixer) {
|
|
103
|
+
let nodeToSurround = style === "inside" ? innerNode : node;
|
|
104
|
+
return fixer.replaceText(nodeToSurround, `(${sourceCode.getText(nodeToSurround)})`);
|
|
105
|
+
}
|
|
106
|
+
}) : style === "inside" && !isFunctionExpressionWrapped ? context.report({
|
|
107
|
+
node,
|
|
108
|
+
messageId: "wrapExpression",
|
|
109
|
+
fix(fixer) {
|
|
110
|
+
if (isWrappedInGroupingParens(node) && !isCalleeOfNewExpression(node)) {
|
|
111
|
+
let parenAfter = sourceCode.getTokenAfter(node);
|
|
112
|
+
return fixer.replaceTextRange([innerNode.range[1], parenAfter.range[1]], `)${sourceCode.getText().slice(innerNode.range[1], parenAfter.range[0])}`);
|
|
113
|
+
}
|
|
114
|
+
return fixer.replaceText(innerNode, `(${sourceCode.getText(innerNode)})`);
|
|
115
|
+
}
|
|
116
|
+
}) : style === "outside" && !isCallExpressionWrapped && context.report({
|
|
117
|
+
node,
|
|
118
|
+
messageId: "moveInvocation",
|
|
119
|
+
fix(fixer) {
|
|
120
|
+
let parenAfter = sourceCode.getTokenAfter(innerNode);
|
|
121
|
+
return fixer.replaceTextRange([parenAfter.range[0], node.range[1]], `${sourceCode.getText().slice(parenAfter.range[1], node.range[1])})`);
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
} };
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
}));
|
|
128
|
+
//#endregion
|
|
129
|
+
//#region src-js/generated/plugin-eslint/rules/wrap-iife.cjs
|
|
130
|
+
module.exports = require_wrap_iife().create;
|
|
131
|
+
//#endregion
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
//#region ../../node_modules/.pnpm/eslint@9.39.3_jiti@2.6.1/node_modules/eslint/lib/rules/wrap-regex.js
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Rule to flag when regex literals are not wrapped in parens
|
|
4
|
+
* @author Matt DuVall <http://www.mattduvall.com>
|
|
5
|
+
* @deprecated in ESLint v8.53.0
|
|
6
|
+
*/
|
|
7
|
+
var require_wrap_regex = /* @__PURE__ */ require("../common/chunk.cjs").t(((exports, module) => {
|
|
8
|
+
/** @type {import('../types').Rule.RuleModule} */
|
|
9
|
+
module.exports = {
|
|
10
|
+
meta: {
|
|
11
|
+
deprecated: {
|
|
12
|
+
message: "Formatting rules are being moved out of ESLint core.",
|
|
13
|
+
url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/",
|
|
14
|
+
deprecatedSince: "8.53.0",
|
|
15
|
+
availableUntil: "11.0.0",
|
|
16
|
+
replacedBy: [{
|
|
17
|
+
message: "ESLint Stylistic now maintains deprecated stylistic core rules.",
|
|
18
|
+
url: "https://eslint.style/guide/migration",
|
|
19
|
+
plugin: {
|
|
20
|
+
name: "@stylistic/eslint-plugin",
|
|
21
|
+
url: "https://eslint.style"
|
|
22
|
+
},
|
|
23
|
+
rule: {
|
|
24
|
+
name: "wrap-regex",
|
|
25
|
+
url: "https://eslint.style/rules/wrap-regex"
|
|
26
|
+
}
|
|
27
|
+
}]
|
|
28
|
+
},
|
|
29
|
+
type: "layout",
|
|
30
|
+
docs: {
|
|
31
|
+
description: "Require parenthesis around regex literals",
|
|
32
|
+
recommended: !1,
|
|
33
|
+
url: "https://eslint.org/docs/latest/rules/wrap-regex"
|
|
34
|
+
},
|
|
35
|
+
schema: [],
|
|
36
|
+
fixable: "code",
|
|
37
|
+
messages: { requireParens: "Wrap the regexp literal in parens to disambiguate the slash." }
|
|
38
|
+
},
|
|
39
|
+
create(context) {
|
|
40
|
+
let sourceCode = context.sourceCode;
|
|
41
|
+
return { Literal(node) {
|
|
42
|
+
if (sourceCode.getFirstToken(node).type === "RegularExpression") {
|
|
43
|
+
let beforeToken = sourceCode.getTokenBefore(node), afterToken = sourceCode.getTokenAfter(node), { parent } = node;
|
|
44
|
+
parent.type === "MemberExpression" && parent.object === node && !(beforeToken && beforeToken.value === "(" && afterToken && afterToken.value === ")") && context.report({
|
|
45
|
+
node,
|
|
46
|
+
messageId: "requireParens",
|
|
47
|
+
fix: (fixer) => fixer.replaceText(node, `(${sourceCode.getText(node)})`)
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
} };
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
}));
|
|
54
|
+
//#endregion
|
|
55
|
+
//#region src-js/generated/plugin-eslint/rules/wrap-regex.cjs
|
|
56
|
+
module.exports = require_wrap_regex().create;
|
|
57
|
+
//#endregion
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
//#region ../../node_modules/.pnpm/eslint@9.39.3_jiti@2.6.1/node_modules/eslint/lib/rules/yield-star-spacing.js
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Rule to check the spacing around the * in yield* expressions.
|
|
4
|
+
* @author Bryan Smith
|
|
5
|
+
* @deprecated in ESLint v8.53.0
|
|
6
|
+
*/
|
|
7
|
+
var require_yield_star_spacing = /* @__PURE__ */ require("../common/chunk.cjs").t(((exports, module) => {
|
|
8
|
+
/** @type {import('../types').Rule.RuleModule} */
|
|
9
|
+
module.exports = {
|
|
10
|
+
meta: {
|
|
11
|
+
deprecated: {
|
|
12
|
+
message: "Formatting rules are being moved out of ESLint core.",
|
|
13
|
+
url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/",
|
|
14
|
+
deprecatedSince: "8.53.0",
|
|
15
|
+
availableUntil: "11.0.0",
|
|
16
|
+
replacedBy: [{
|
|
17
|
+
message: "ESLint Stylistic now maintains deprecated stylistic core rules.",
|
|
18
|
+
url: "https://eslint.style/guide/migration",
|
|
19
|
+
plugin: {
|
|
20
|
+
name: "@stylistic/eslint-plugin",
|
|
21
|
+
url: "https://eslint.style"
|
|
22
|
+
},
|
|
23
|
+
rule: {
|
|
24
|
+
name: "yield-star-spacing",
|
|
25
|
+
url: "https://eslint.style/rules/yield-star-spacing"
|
|
26
|
+
}
|
|
27
|
+
}]
|
|
28
|
+
},
|
|
29
|
+
type: "layout",
|
|
30
|
+
docs: {
|
|
31
|
+
description: "Require or disallow spacing around the `*` in `yield*` expressions",
|
|
32
|
+
recommended: !1,
|
|
33
|
+
url: "https://eslint.org/docs/latest/rules/yield-star-spacing"
|
|
34
|
+
},
|
|
35
|
+
fixable: "whitespace",
|
|
36
|
+
schema: [{ oneOf: [{ enum: [
|
|
37
|
+
"before",
|
|
38
|
+
"after",
|
|
39
|
+
"both",
|
|
40
|
+
"neither"
|
|
41
|
+
] }, {
|
|
42
|
+
type: "object",
|
|
43
|
+
properties: {
|
|
44
|
+
before: { type: "boolean" },
|
|
45
|
+
after: { type: "boolean" }
|
|
46
|
+
},
|
|
47
|
+
additionalProperties: !1
|
|
48
|
+
}] }],
|
|
49
|
+
messages: {
|
|
50
|
+
missingBefore: "Missing space before *.",
|
|
51
|
+
missingAfter: "Missing space after *.",
|
|
52
|
+
unexpectedBefore: "Unexpected space before *.",
|
|
53
|
+
unexpectedAfter: "Unexpected space after *."
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
create(context) {
|
|
57
|
+
let sourceCode = context.sourceCode, mode = (function(option) {
|
|
58
|
+
return !option || typeof option == "string" ? {
|
|
59
|
+
before: {
|
|
60
|
+
before: !0,
|
|
61
|
+
after: !1
|
|
62
|
+
},
|
|
63
|
+
after: {
|
|
64
|
+
before: !1,
|
|
65
|
+
after: !0
|
|
66
|
+
},
|
|
67
|
+
both: {
|
|
68
|
+
before: !0,
|
|
69
|
+
after: !0
|
|
70
|
+
},
|
|
71
|
+
neither: {
|
|
72
|
+
before: !1,
|
|
73
|
+
after: !1
|
|
74
|
+
}
|
|
75
|
+
}[option || "after"] : option;
|
|
76
|
+
})(context.options[0]);
|
|
77
|
+
/**
|
|
78
|
+
* Checks the spacing between two tokens before or after the star token.
|
|
79
|
+
* @param {string} side Either "before" or "after".
|
|
80
|
+
* @param {Token} leftToken `function` keyword token if side is "before", or
|
|
81
|
+
* star token if side is "after".
|
|
82
|
+
* @param {Token} rightToken Star token if side is "before", or identifier
|
|
83
|
+
* token if side is "after".
|
|
84
|
+
* @returns {void}
|
|
85
|
+
*/
|
|
86
|
+
function checkSpacing(side, leftToken, rightToken) {
|
|
87
|
+
if (sourceCode.isSpaceBetweenTokens(leftToken, rightToken) !== mode[side]) {
|
|
88
|
+
let after = leftToken.value === "*", spaceRequired = mode[side], node = after ? leftToken : rightToken, messageId;
|
|
89
|
+
messageId = spaceRequired ? side === "before" ? "missingBefore" : "missingAfter" : side === "before" ? "unexpectedBefore" : "unexpectedAfter", context.report({
|
|
90
|
+
node,
|
|
91
|
+
messageId,
|
|
92
|
+
fix(fixer) {
|
|
93
|
+
return spaceRequired ? after ? fixer.insertTextAfter(node, " ") : fixer.insertTextBefore(node, " ") : fixer.removeRange([leftToken.range[1], rightToken.range[0]]);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Enforces the spacing around the star if node is a yield* expression.
|
|
100
|
+
* @param {ASTNode} node A yield expression node.
|
|
101
|
+
* @returns {void}
|
|
102
|
+
*/
|
|
103
|
+
function checkExpression(node) {
|
|
104
|
+
if (!node.delegate) return;
|
|
105
|
+
let tokens = sourceCode.getFirstTokens(node, 3), yieldToken = tokens[0], starToken = tokens[1], nextToken = tokens[2];
|
|
106
|
+
checkSpacing("before", yieldToken, starToken), checkSpacing("after", starToken, nextToken);
|
|
107
|
+
}
|
|
108
|
+
return { YieldExpression: checkExpression };
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
}));
|
|
112
|
+
//#endregion
|
|
113
|
+
//#region src-js/generated/plugin-eslint/rules/yield-star-spacing.cjs
|
|
114
|
+
module.exports = require_yield_star_spacing().create;
|
|
115
|
+
//#endregion
|
package/rules/yoda.cjs
ADDED
|
@@ -0,0 +1,185 @@
|
|
|
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/yoda.js
|
|
3
|
+
/**
|
|
4
|
+
* @fileoverview Rule to require or disallow yoda comparisons
|
|
5
|
+
* @author Nicholas C. Zakas
|
|
6
|
+
*/
|
|
7
|
+
var require_yoda = /* @__PURE__ */ require_chunk.t(((exports, module) => {
|
|
8
|
+
let astUtils = require_ast_utils$1.t();
|
|
9
|
+
/**
|
|
10
|
+
* Determines whether an operator is a comparison operator.
|
|
11
|
+
* @param {string} operator The operator to check.
|
|
12
|
+
* @returns {boolean} Whether or not it is a comparison operator.
|
|
13
|
+
*/
|
|
14
|
+
function isComparisonOperator(operator) {
|
|
15
|
+
return /^(?:==|===|!=|!==|<|>|<=|>=)$/u.test(operator);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Determines whether an operator is an equality operator.
|
|
19
|
+
* @param {string} operator The operator to check.
|
|
20
|
+
* @returns {boolean} Whether or not it is an equality operator.
|
|
21
|
+
*/
|
|
22
|
+
function isEqualityOperator(operator) {
|
|
23
|
+
return /^(?:==|===)$/u.test(operator);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Determines whether an operator is one used in a range test.
|
|
27
|
+
* Allowed operators are `<` and `<=`.
|
|
28
|
+
* @param {string} operator The operator to check.
|
|
29
|
+
* @returns {boolean} Whether the operator is used in range tests.
|
|
30
|
+
*/
|
|
31
|
+
function isRangeTestOperator(operator) {
|
|
32
|
+
return ["<", "<="].includes(operator);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Determines whether a non-Literal node is a negative number that should be
|
|
36
|
+
* treated as if it were a single Literal node.
|
|
37
|
+
* @param {ASTNode} node Node to test.
|
|
38
|
+
* @returns {boolean} True if the node is a negative number that looks like a
|
|
39
|
+
* real literal and should be treated as such.
|
|
40
|
+
*/
|
|
41
|
+
function isNegativeNumericLiteral(node) {
|
|
42
|
+
return node.type === "UnaryExpression" && node.operator === "-" && node.prefix && astUtils.isNumericLiteral(node.argument);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Determines whether a non-Literal node should be treated as a single Literal node.
|
|
46
|
+
* @param {ASTNode} node Node to test
|
|
47
|
+
* @returns {boolean} True if the node should be treated as a single Literal node.
|
|
48
|
+
*/
|
|
49
|
+
function looksLikeLiteral(node) {
|
|
50
|
+
return isNegativeNumericLiteral(node) || astUtils.isStaticTemplateLiteral(node);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Attempts to derive a Literal node from nodes that are treated like literals.
|
|
54
|
+
* @param {ASTNode} node Node to normalize.
|
|
55
|
+
* @returns {ASTNode} One of the following options.
|
|
56
|
+
* 1. The original node if the node is already a Literal
|
|
57
|
+
* 2. A normalized Literal node with the negative number as the value if the
|
|
58
|
+
* node represents a negative number literal.
|
|
59
|
+
* 3. A normalized Literal node with the string as the value if the node is
|
|
60
|
+
* a Template Literal without expression.
|
|
61
|
+
* 4. Otherwise `null`.
|
|
62
|
+
*/
|
|
63
|
+
function getNormalizedLiteral(node) {
|
|
64
|
+
return node.type === "Literal" ? node : isNegativeNumericLiteral(node) ? {
|
|
65
|
+
type: "Literal",
|
|
66
|
+
value: -node.argument.value,
|
|
67
|
+
raw: `-${node.argument.value}`
|
|
68
|
+
} : astUtils.isStaticTemplateLiteral(node) ? {
|
|
69
|
+
type: "Literal",
|
|
70
|
+
value: node.quasis[0].value.cooked,
|
|
71
|
+
raw: node.quasis[0].value.raw
|
|
72
|
+
} : null;
|
|
73
|
+
}
|
|
74
|
+
/** @type {import('../types').Rule.RuleModule} */
|
|
75
|
+
module.exports = {
|
|
76
|
+
meta: {
|
|
77
|
+
type: "suggestion",
|
|
78
|
+
defaultOptions: ["never", {
|
|
79
|
+
exceptRange: !1,
|
|
80
|
+
onlyEquality: !1
|
|
81
|
+
}],
|
|
82
|
+
docs: {
|
|
83
|
+
description: "Require or disallow \"Yoda\" conditions",
|
|
84
|
+
recommended: !1,
|
|
85
|
+
frozen: !0,
|
|
86
|
+
url: "https://eslint.org/docs/latest/rules/yoda"
|
|
87
|
+
},
|
|
88
|
+
schema: [{ enum: ["always", "never"] }, {
|
|
89
|
+
type: "object",
|
|
90
|
+
properties: {
|
|
91
|
+
exceptRange: { type: "boolean" },
|
|
92
|
+
onlyEquality: { type: "boolean" }
|
|
93
|
+
},
|
|
94
|
+
additionalProperties: !1
|
|
95
|
+
}],
|
|
96
|
+
fixable: "code",
|
|
97
|
+
messages: { expected: "Expected literal to be on the {{expectedSide}} side of {{operator}}." }
|
|
98
|
+
},
|
|
99
|
+
create(context) {
|
|
100
|
+
let [when, { exceptRange, onlyEquality }] = context.options, always = when === "always", sourceCode = context.sourceCode;
|
|
101
|
+
/**
|
|
102
|
+
* Determines whether node represents a range test.
|
|
103
|
+
* A range test is a "between" test like `(0 <= x && x < 1)` or an "outside"
|
|
104
|
+
* test like `(x < 0 || 1 <= x)`. It must be wrapped in parentheses, and
|
|
105
|
+
* both operators must be `<` or `<=`. Finally, the literal on the left side
|
|
106
|
+
* must be less than or equal to the literal on the right side so that the
|
|
107
|
+
* test makes any sense.
|
|
108
|
+
* @param {ASTNode} node LogicalExpression node to test.
|
|
109
|
+
* @returns {boolean} Whether node is a range test.
|
|
110
|
+
*/
|
|
111
|
+
function isRangeTest(node) {
|
|
112
|
+
let left = node.left, right = node.right;
|
|
113
|
+
/**
|
|
114
|
+
* Determines whether node is of the form `0 <= x && x < 1`.
|
|
115
|
+
* @returns {boolean} Whether node is a "between" range test.
|
|
116
|
+
*/
|
|
117
|
+
function isBetweenTest() {
|
|
118
|
+
if (node.operator === "&&" && astUtils.isSameReference(left.right, right.left)) {
|
|
119
|
+
let leftLiteral = getNormalizedLiteral(left.left), rightLiteral = getNormalizedLiteral(right.right);
|
|
120
|
+
if (leftLiteral === null && rightLiteral === null) return !1;
|
|
121
|
+
if (rightLiteral === null || leftLiteral === null || leftLiteral.value <= rightLiteral.value) return !0;
|
|
122
|
+
}
|
|
123
|
+
return !1;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Determines whether node is of the form `x < 0 || 1 <= x`.
|
|
127
|
+
* @returns {boolean} Whether node is an "outside" range test.
|
|
128
|
+
*/
|
|
129
|
+
function isOutsideTest() {
|
|
130
|
+
if (node.operator === "||" && astUtils.isSameReference(left.left, right.right)) {
|
|
131
|
+
let leftLiteral = getNormalizedLiteral(left.right), rightLiteral = getNormalizedLiteral(right.left);
|
|
132
|
+
if (leftLiteral === null && rightLiteral === null) return !1;
|
|
133
|
+
if (rightLiteral === null || leftLiteral === null || leftLiteral.value <= rightLiteral.value) return !0;
|
|
134
|
+
}
|
|
135
|
+
return !1;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Determines whether node is wrapped in parentheses.
|
|
139
|
+
* @returns {boolean} Whether node is preceded immediately by an open
|
|
140
|
+
* paren token and followed immediately by a close
|
|
141
|
+
* paren token.
|
|
142
|
+
*/
|
|
143
|
+
function isParenWrapped() {
|
|
144
|
+
return astUtils.isParenthesised(sourceCode, node);
|
|
145
|
+
}
|
|
146
|
+
return node.type === "LogicalExpression" && left.type === "BinaryExpression" && right.type === "BinaryExpression" && isRangeTestOperator(left.operator) && isRangeTestOperator(right.operator) && (isBetweenTest() || isOutsideTest()) && isParenWrapped();
|
|
147
|
+
}
|
|
148
|
+
let OPERATOR_FLIP_MAP = {
|
|
149
|
+
"===": "===",
|
|
150
|
+
"!==": "!==",
|
|
151
|
+
"==": "==",
|
|
152
|
+
"!=": "!=",
|
|
153
|
+
"<": ">",
|
|
154
|
+
">": "<",
|
|
155
|
+
"<=": ">=",
|
|
156
|
+
">=": "<="
|
|
157
|
+
};
|
|
158
|
+
/**
|
|
159
|
+
* Returns a string representation of a BinaryExpression node with its sides/operator flipped around.
|
|
160
|
+
* @param {ASTNode} node The BinaryExpression node
|
|
161
|
+
* @returns {string} A string representation of the node with the sides and operator flipped
|
|
162
|
+
*/
|
|
163
|
+
function getFlippedString(node) {
|
|
164
|
+
let operatorToken = sourceCode.getFirstTokenBetween(node.left, node.right, (token) => token.value === node.operator), lastLeftToken = sourceCode.getTokenBefore(operatorToken), firstRightToken = sourceCode.getTokenAfter(operatorToken), source = sourceCode.getText(), leftText = source.slice(node.range[0], lastLeftToken.range[1]), textBeforeOperator = source.slice(lastLeftToken.range[1], operatorToken.range[0]), textAfterOperator = source.slice(operatorToken.range[1], firstRightToken.range[0]), rightText = source.slice(firstRightToken.range[0], node.range[1]), tokenBefore = sourceCode.getTokenBefore(node), tokenAfter = sourceCode.getTokenAfter(node), prefix = "", suffix = "";
|
|
165
|
+
return tokenBefore && tokenBefore.range[1] === node.range[0] && !astUtils.canTokensBeAdjacent(tokenBefore, firstRightToken) && (prefix = " "), tokenAfter && node.range[1] === tokenAfter.range[0] && !astUtils.canTokensBeAdjacent(lastLeftToken, tokenAfter) && (suffix = " "), prefix + rightText + textBeforeOperator + OPERATOR_FLIP_MAP[operatorToken.value] + textAfterOperator + leftText + suffix;
|
|
166
|
+
}
|
|
167
|
+
return { BinaryExpression(node) {
|
|
168
|
+
let expectedLiteral = always ? node.left : node.right, expectedNonLiteral = always ? node.right : node.left;
|
|
169
|
+
(expectedNonLiteral.type === "Literal" || looksLikeLiteral(expectedNonLiteral)) && !(expectedLiteral.type === "Literal" || looksLikeLiteral(expectedLiteral)) && !(!isEqualityOperator(node.operator) && onlyEquality) && isComparisonOperator(node.operator) && !(exceptRange && isRangeTest(node.parent)) && context.report({
|
|
170
|
+
node,
|
|
171
|
+
messageId: "expected",
|
|
172
|
+
data: {
|
|
173
|
+
operator: node.operator,
|
|
174
|
+
expectedSide: always ? "left" : "right"
|
|
175
|
+
},
|
|
176
|
+
fix: (fixer) => fixer.replaceText(node, getFlippedString(node))
|
|
177
|
+
});
|
|
178
|
+
} };
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
}));
|
|
182
|
+
//#endregion
|
|
183
|
+
//#region src-js/generated/plugin-eslint/rules/yoda.cjs
|
|
184
|
+
module.exports = require_yoda().create;
|
|
185
|
+
//#endregion
|