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,110 @@
|
|
|
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/no-setter-return.js
|
|
3
|
+
/**
|
|
4
|
+
* @fileoverview Rule to disallow returning values from setters
|
|
5
|
+
* @author Milos Djermanovic
|
|
6
|
+
*/
|
|
7
|
+
var require_no_setter_return = /* @__PURE__ */ require_chunk.t(((exports, module) => {
|
|
8
|
+
let astUtils = require_ast_utils$1.t();
|
|
9
|
+
/**
|
|
10
|
+
* Determines whether the given node is an argument of the specified global method call, at the given `index` position.
|
|
11
|
+
* E.g., for given `index === 1`, this function checks for `objectName.methodName(foo, node)`, where objectName is a global variable.
|
|
12
|
+
* @param {ASTNode} node The node to check.
|
|
13
|
+
* @param {SourceCode} sourceCode Source code to which the node belongs.
|
|
14
|
+
* @param {string} objectName Name of the global object.
|
|
15
|
+
* @param {string} methodName Name of the method.
|
|
16
|
+
* @param {number} index The given position.
|
|
17
|
+
* @returns {boolean} `true` if the node is argument at the given position.
|
|
18
|
+
*/
|
|
19
|
+
function isArgumentOfGlobalMethodCall(node, sourceCode, objectName, methodName, index) {
|
|
20
|
+
let callNode = node.parent;
|
|
21
|
+
return callNode.type === "CallExpression" && callNode.arguments[index] === node && astUtils.isSpecificMemberAccess(callNode.callee, objectName, methodName) && sourceCode.isGlobalReference(astUtils.skipChainExpression(callNode.callee).object);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Determines whether the given node is used as a property descriptor.
|
|
25
|
+
* @param {ASTNode} node The node to check.
|
|
26
|
+
* @param {SourceCode} sourceCode Source code to which the node belongs.
|
|
27
|
+
* @returns {boolean} `true` if the node is a property descriptor.
|
|
28
|
+
*/
|
|
29
|
+
function isPropertyDescriptor(node, sourceCode) {
|
|
30
|
+
if (isArgumentOfGlobalMethodCall(node, sourceCode, "Object", "defineProperty", 2) || isArgumentOfGlobalMethodCall(node, sourceCode, "Reflect", "defineProperty", 2)) return !0;
|
|
31
|
+
let parent = node.parent;
|
|
32
|
+
if (parent.type === "Property" && parent.value === node) {
|
|
33
|
+
let grandparent = parent.parent;
|
|
34
|
+
if (grandparent.type === "ObjectExpression" && (isArgumentOfGlobalMethodCall(grandparent, sourceCode, "Object", "create", 1) || isArgumentOfGlobalMethodCall(grandparent, sourceCode, "Object", "defineProperties", 1))) return !0;
|
|
35
|
+
}
|
|
36
|
+
return !1;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Determines whether the given function node is used as a setter function.
|
|
40
|
+
* @param {ASTNode} node The node to check.
|
|
41
|
+
* @param {SourceCode} sourceCode Source code to which the node belongs.
|
|
42
|
+
* @returns {boolean} `true` if the node is a setter.
|
|
43
|
+
*/
|
|
44
|
+
function isSetter(node, sourceCode) {
|
|
45
|
+
let parent = node.parent;
|
|
46
|
+
return !!((parent.type === "Property" || parent.type === "MethodDefinition") && parent.kind === "set" && parent.value === node || parent.type === "Property" && parent.value === node && astUtils.getStaticPropertyName(parent) === "set" && parent.parent.type === "ObjectExpression" && isPropertyDescriptor(parent.parent, sourceCode));
|
|
47
|
+
}
|
|
48
|
+
/** @type {import('../types').Rule.RuleModule} */
|
|
49
|
+
module.exports = {
|
|
50
|
+
meta: {
|
|
51
|
+
type: "problem",
|
|
52
|
+
docs: {
|
|
53
|
+
description: "Disallow returning values from setters",
|
|
54
|
+
recommended: !0,
|
|
55
|
+
url: "https://eslint.org/docs/latest/rules/no-setter-return"
|
|
56
|
+
},
|
|
57
|
+
schema: [],
|
|
58
|
+
messages: { returnsValue: "Setter cannot return a value." }
|
|
59
|
+
},
|
|
60
|
+
create(context) {
|
|
61
|
+
let funcInfo = null, sourceCode = context.sourceCode;
|
|
62
|
+
/**
|
|
63
|
+
* Creates and pushes to the stack a function info object for the given function node.
|
|
64
|
+
* @param {ASTNode} node The function node.
|
|
65
|
+
* @returns {void}
|
|
66
|
+
*/
|
|
67
|
+
function enterFunction(node) {
|
|
68
|
+
funcInfo = {
|
|
69
|
+
upper: funcInfo,
|
|
70
|
+
isSetter: isSetter(node, sourceCode)
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Pops the current function info object from the stack.
|
|
75
|
+
* @returns {void}
|
|
76
|
+
*/
|
|
77
|
+
function exitFunction() {
|
|
78
|
+
funcInfo = funcInfo.upper;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Reports the given node.
|
|
82
|
+
* @param {ASTNode} node Node to report.
|
|
83
|
+
* @returns {void}
|
|
84
|
+
*/
|
|
85
|
+
function report(node) {
|
|
86
|
+
context.report({
|
|
87
|
+
node,
|
|
88
|
+
messageId: "returnsValue"
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
FunctionDeclaration: enterFunction,
|
|
93
|
+
FunctionExpression: enterFunction,
|
|
94
|
+
ArrowFunctionExpression(node) {
|
|
95
|
+
enterFunction(node), funcInfo.isSetter && node.expression && report(node.body);
|
|
96
|
+
},
|
|
97
|
+
"FunctionDeclaration:exit": exitFunction,
|
|
98
|
+
"FunctionExpression:exit": exitFunction,
|
|
99
|
+
"ArrowFunctionExpression:exit": exitFunction,
|
|
100
|
+
ReturnStatement(node) {
|
|
101
|
+
funcInfo && funcInfo.isSetter && node.argument && report(node);
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
}));
|
|
107
|
+
//#endregion
|
|
108
|
+
//#region src-js/generated/plugin-eslint/rules/no-setter-return.cjs
|
|
109
|
+
module.exports = require_no_setter_return().create;
|
|
110
|
+
//#endregion
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
//#region ../../node_modules/.pnpm/eslint@9.39.3_jiti@2.6.1/node_modules/eslint/lib/rules/no-shadow-restricted-names.js
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Disallow shadowing of globalThis, NaN, undefined, and Infinity (ES2020 section 18.1)
|
|
4
|
+
* @author Michael Ficarra
|
|
5
|
+
*/
|
|
6
|
+
var require_no_shadow_restricted_names = /* @__PURE__ */ require("../common/chunk.cjs").t(((exports, module) => {
|
|
7
|
+
/**
|
|
8
|
+
* Determines if a variable safely shadows undefined.
|
|
9
|
+
* This is the case when a variable named `undefined` is never assigned to a value (i.e. it always shares the same value
|
|
10
|
+
* as the global).
|
|
11
|
+
* @param {eslintScope.Variable} variable The variable to check
|
|
12
|
+
* @returns {boolean} true if this variable safely shadows `undefined`
|
|
13
|
+
*/
|
|
14
|
+
function safelyShadowsUndefined(variable) {
|
|
15
|
+
return variable.name === "undefined" && variable.references.every((ref) => !ref.isWrite()) && variable.defs.every((def) => def.node.type === "VariableDeclarator" && def.node.init === null);
|
|
16
|
+
}
|
|
17
|
+
/** @type {import('../types').Rule.RuleModule} */
|
|
18
|
+
module.exports = {
|
|
19
|
+
meta: {
|
|
20
|
+
type: "suggestion",
|
|
21
|
+
defaultOptions: [{ reportGlobalThis: !1 }],
|
|
22
|
+
docs: {
|
|
23
|
+
description: "Disallow identifiers from shadowing restricted names",
|
|
24
|
+
recommended: !0,
|
|
25
|
+
url: "https://eslint.org/docs/latest/rules/no-shadow-restricted-names"
|
|
26
|
+
},
|
|
27
|
+
schema: [{
|
|
28
|
+
type: "object",
|
|
29
|
+
properties: { reportGlobalThis: { type: "boolean" } },
|
|
30
|
+
additionalProperties: !1
|
|
31
|
+
}],
|
|
32
|
+
messages: { shadowingRestrictedName: "Shadowing of global property '{{name}}'." }
|
|
33
|
+
},
|
|
34
|
+
create(context) {
|
|
35
|
+
let [{ reportGlobalThis }] = context.options, RESTRICTED = new Set([
|
|
36
|
+
"undefined",
|
|
37
|
+
"NaN",
|
|
38
|
+
"Infinity",
|
|
39
|
+
"arguments",
|
|
40
|
+
"eval"
|
|
41
|
+
]);
|
|
42
|
+
reportGlobalThis && RESTRICTED.add("globalThis");
|
|
43
|
+
let sourceCode = context.sourceCode, reportedNodes = /* @__PURE__ */ new Set();
|
|
44
|
+
return { "VariableDeclaration, :function, CatchClause, ImportDeclaration, ClassDeclaration, ClassExpression"(node) {
|
|
45
|
+
for (let variable of sourceCode.getDeclaredVariables(node)) if (variable.defs.length > 0 && RESTRICTED.has(variable.name) && !safelyShadowsUndefined(variable)) for (let def of variable.defs) {
|
|
46
|
+
let nodeToReport = def.name;
|
|
47
|
+
reportedNodes.has(nodeToReport) || (reportedNodes.add(nodeToReport), context.report({
|
|
48
|
+
node: nodeToReport,
|
|
49
|
+
messageId: "shadowingRestrictedName",
|
|
50
|
+
data: { name: variable.name }
|
|
51
|
+
}));
|
|
52
|
+
}
|
|
53
|
+
} };
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
}));
|
|
57
|
+
//#endregion
|
|
58
|
+
//#region src-js/generated/plugin-eslint/rules/no-shadow-restricted-names.cjs
|
|
59
|
+
module.exports = require_no_shadow_restricted_names().create;
|
|
60
|
+
//#endregion
|
|
@@ -0,0 +1,302 @@
|
|
|
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/no-shadow.js
|
|
3
|
+
/**
|
|
4
|
+
* @fileoverview Rule to flag on declaring variables already declared in the outer scope
|
|
5
|
+
* @author Ilya Volodin
|
|
6
|
+
*/
|
|
7
|
+
var require_no_shadow = /* @__PURE__ */ require_chunk.t(((exports, module) => {
|
|
8
|
+
let astUtils = require_ast_utils$1.t(), FUNC_EXPR_NODE_TYPES = new Set(["ArrowFunctionExpression", "FunctionExpression"]), CALL_EXPR_NODE_TYPE = new Set(["CallExpression"]), FOR_IN_OF_TYPE = /^For(?:In|Of)Statement$/u, SENTINEL_TYPE = /^(?:(?:Function|Class)(?:Declaration|Expression)|ArrowFunctionExpression|CatchClause|ImportDeclaration|ExportNamedDeclaration)$/u, TYPES_HOISTED_NODES = new Set(["TSInterfaceDeclaration", "TSTypeAliasDeclaration"]), ALLOWED_FUNCTION_VARIABLE_DEF_TYPES = new Set([
|
|
9
|
+
"TSCallSignatureDeclaration",
|
|
10
|
+
"TSFunctionType",
|
|
11
|
+
"TSMethodSignature",
|
|
12
|
+
"TSEmptyBodyFunctionExpression",
|
|
13
|
+
"TSDeclareFunction",
|
|
14
|
+
"TSConstructSignatureDeclaration",
|
|
15
|
+
"TSConstructorType"
|
|
16
|
+
]);
|
|
17
|
+
/** @type {import('../types').Rule.RuleModule} */
|
|
18
|
+
module.exports = {
|
|
19
|
+
meta: {
|
|
20
|
+
type: "suggestion",
|
|
21
|
+
dialects: ["typescript", "javascript"],
|
|
22
|
+
language: "javascript",
|
|
23
|
+
defaultOptions: [{
|
|
24
|
+
allow: [],
|
|
25
|
+
builtinGlobals: !1,
|
|
26
|
+
hoist: "functions",
|
|
27
|
+
ignoreOnInitialization: !1,
|
|
28
|
+
ignoreTypeValueShadow: !0,
|
|
29
|
+
ignoreFunctionTypeParameterNameValueShadow: !0
|
|
30
|
+
}],
|
|
31
|
+
docs: {
|
|
32
|
+
description: "Disallow variable declarations from shadowing variables declared in the outer scope",
|
|
33
|
+
recommended: !1,
|
|
34
|
+
url: "https://eslint.org/docs/latest/rules/no-shadow"
|
|
35
|
+
},
|
|
36
|
+
schema: [{
|
|
37
|
+
type: "object",
|
|
38
|
+
properties: {
|
|
39
|
+
builtinGlobals: { type: "boolean" },
|
|
40
|
+
hoist: { enum: [
|
|
41
|
+
"all",
|
|
42
|
+
"functions",
|
|
43
|
+
"never",
|
|
44
|
+
"types",
|
|
45
|
+
"functions-and-types"
|
|
46
|
+
] },
|
|
47
|
+
allow: {
|
|
48
|
+
type: "array",
|
|
49
|
+
items: { type: "string" }
|
|
50
|
+
},
|
|
51
|
+
ignoreOnInitialization: { type: "boolean" },
|
|
52
|
+
ignoreTypeValueShadow: { type: "boolean" },
|
|
53
|
+
ignoreFunctionTypeParameterNameValueShadow: { type: "boolean" }
|
|
54
|
+
},
|
|
55
|
+
additionalProperties: !1
|
|
56
|
+
}],
|
|
57
|
+
messages: {
|
|
58
|
+
noShadow: "'{{name}}' is already declared in the upper scope on line {{shadowedLine}} column {{shadowedColumn}}.",
|
|
59
|
+
noShadowGlobal: "'{{name}}' is already a global variable."
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
create(context) {
|
|
63
|
+
let [{ builtinGlobals, hoist, allow, ignoreOnInitialization, ignoreTypeValueShadow, ignoreFunctionTypeParameterNameValueShadow }] = context.options, sourceCode = context.sourceCode;
|
|
64
|
+
/**
|
|
65
|
+
* Check if a scope is a TypeScript module augmenting the global namespace.
|
|
66
|
+
* @param {Scope} scope The scope to check
|
|
67
|
+
* @returns {boolean} Whether the scope is a global augmentation
|
|
68
|
+
*/
|
|
69
|
+
function isGlobalAugmentation(scope) {
|
|
70
|
+
return scope.block.kind === "global" || !!scope.upper && isGlobalAugmentation(scope.upper);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Check if variable is a `this` parameter.
|
|
74
|
+
* @param {Object} variable The variable to check
|
|
75
|
+
* @returns {boolean} Whether the variable is a this parameter
|
|
76
|
+
*/
|
|
77
|
+
function isThisParam(variable) {
|
|
78
|
+
return variable.name === "this";
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Checks if type and value shadows each other
|
|
82
|
+
* @param {Object} variable The variable to check
|
|
83
|
+
* @param {Object} shadowedVariable The shadowed variable
|
|
84
|
+
* @returns {boolean} Whether it's a type/value shadow case to ignore
|
|
85
|
+
*/
|
|
86
|
+
function isTypeValueShadow(variable, shadowedVariable) {
|
|
87
|
+
if (ignoreTypeValueShadow !== !0 || !("isValueVariable" in variable)) return !1;
|
|
88
|
+
let firstDefinition = shadowedVariable.defs[0], isTypeImport = firstDefinition && firstDefinition.parent?.type === "ImportDeclaration" && (firstDefinition.parent.importKind === "type" || firstDefinition.parent.specifiers.some((s) => s.importKind === "type")), isShadowedValue = !firstDefinition || (isTypeImport ? !1 : shadowedVariable.isValueVariable);
|
|
89
|
+
return variable.isValueVariable !== isShadowedValue;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Checks if it's a function type parameter shadow
|
|
93
|
+
* @param {Object} variable The variable to check
|
|
94
|
+
* @returns {boolean} Whether it's a function type parameter shadow case to ignore
|
|
95
|
+
*/
|
|
96
|
+
function isFunctionTypeParameterNameValueShadow(variable) {
|
|
97
|
+
return ignoreFunctionTypeParameterNameValueShadow === !0 ? variable.defs.some((def) => ALLOWED_FUNCTION_VARIABLE_DEF_TYPES.has(def.node.type)) : !1;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Checks if the variable is a generic of a static method
|
|
101
|
+
* @param {Object} variable The variable to check
|
|
102
|
+
* @returns {boolean} Whether the variable is a generic of a static method
|
|
103
|
+
*/
|
|
104
|
+
function isTypeParameterOfStaticMethod(variable) {
|
|
105
|
+
let typeParameterDecl = variable.identifiers[0].parent.parent;
|
|
106
|
+
return typeParameterDecl.type === "TSTypeParameterDeclaration" ? typeParameterDecl.parent.parent.static : !1;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Checks for static method generic shadowing class generic
|
|
110
|
+
* @param {Object} variable The variable to check
|
|
111
|
+
* @returns {boolean} Whether it's a static method generic shadowing class generic
|
|
112
|
+
*/
|
|
113
|
+
function isGenericOfAStaticMethodShadow(variable) {
|
|
114
|
+
return isTypeParameterOfStaticMethod(variable);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Checks whether or not a given location is inside of the range of a given node.
|
|
118
|
+
* @param {ASTNode} node An node to check.
|
|
119
|
+
* @param {number} location A location to check.
|
|
120
|
+
* @returns {boolean} `true` if the location is inside of the range of the node.
|
|
121
|
+
*/
|
|
122
|
+
function isInRange(node, location) {
|
|
123
|
+
return node && node.range[0] <= location && location <= node.range[1];
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Searches from the current node through its ancestry to find a matching node.
|
|
127
|
+
* @param {ASTNode} node a node to get.
|
|
128
|
+
* @param {(node: ASTNode) => boolean} match a callback that checks whether or not the node verifies its condition or not.
|
|
129
|
+
* @returns {ASTNode|null} the matching node.
|
|
130
|
+
*/
|
|
131
|
+
function findSelfOrAncestor(node, match) {
|
|
132
|
+
let currentNode = node;
|
|
133
|
+
for (; currentNode && !match(currentNode);) currentNode = currentNode.parent;
|
|
134
|
+
return currentNode;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Finds function's outer scope.
|
|
138
|
+
* @param {Scope} scope Function's own scope.
|
|
139
|
+
* @returns {Scope} Function's outer scope.
|
|
140
|
+
*/
|
|
141
|
+
function getOuterScope(scope) {
|
|
142
|
+
let upper = scope.upper;
|
|
143
|
+
return upper && upper.type === "function-expression-name" ? upper.upper : upper;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Checks if a variable and a shadowedVariable have the same init pattern ancestor.
|
|
147
|
+
* @param {Object} variable a variable to check.
|
|
148
|
+
* @param {Object} shadowedVariable a shadowedVariable to check.
|
|
149
|
+
* @returns {boolean} Whether or not the variable and the shadowedVariable have the same init pattern ancestor.
|
|
150
|
+
*/
|
|
151
|
+
function isInitPatternNode(variable, shadowedVariable) {
|
|
152
|
+
let outerDef = shadowedVariable.defs[0];
|
|
153
|
+
if (!outerDef) return !1;
|
|
154
|
+
let { variableScope } = variable.scope;
|
|
155
|
+
if (!(FUNC_EXPR_NODE_TYPES.has(variableScope.block.type) && getOuterScope(variableScope) === shadowedVariable.scope)) return !1;
|
|
156
|
+
let { parent } = variableScope.block, callExpression = findSelfOrAncestor(parent, (node) => CALL_EXPR_NODE_TYPE.has(node.type));
|
|
157
|
+
if (!callExpression) return !1;
|
|
158
|
+
let node = outerDef.name, location = callExpression.range[1];
|
|
159
|
+
for (; node;) {
|
|
160
|
+
if (node.type === "VariableDeclarator") {
|
|
161
|
+
if (isInRange(node.init, location) || FOR_IN_OF_TYPE.test(node.parent.parent.type) && isInRange(node.parent.parent.right, location)) return !0;
|
|
162
|
+
break;
|
|
163
|
+
} else if (node.type === "AssignmentPattern") {
|
|
164
|
+
if (isInRange(node.right, location)) return !0;
|
|
165
|
+
} else if (SENTINEL_TYPE.test(node.type)) break;
|
|
166
|
+
node = node.parent;
|
|
167
|
+
}
|
|
168
|
+
return !1;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Check if variable name is allowed.
|
|
172
|
+
* @param {ASTNode} variable The variable to check.
|
|
173
|
+
* @returns {boolean} Whether or not the variable name is allowed.
|
|
174
|
+
*/
|
|
175
|
+
function isAllowed(variable) {
|
|
176
|
+
return allow.includes(variable.name);
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Checks if a variable of the class name in the class scope of ClassDeclaration.
|
|
180
|
+
*
|
|
181
|
+
* ClassDeclaration creates two variables of its name into its outer scope and its class scope.
|
|
182
|
+
* So we should ignore the variable in the class scope.
|
|
183
|
+
* @param {Object} variable The variable to check.
|
|
184
|
+
* @returns {boolean} Whether or not the variable of the class name in the class scope of ClassDeclaration.
|
|
185
|
+
*/
|
|
186
|
+
function isDuplicatedClassNameVariable(variable) {
|
|
187
|
+
let block = variable.scope.block;
|
|
188
|
+
return block.type === "ClassDeclaration" && block.id === variable.identifiers[0];
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Checks if a variable is inside the initializer of scopeVar.
|
|
192
|
+
*
|
|
193
|
+
* To avoid reporting at declarations such as `var a = function a() {};`.
|
|
194
|
+
* But it should report `var a = function(a) {};` or `var a = function() { function a() {} };`.
|
|
195
|
+
* @param {Object} variable The variable to check.
|
|
196
|
+
* @param {Object} scopeVar The scope variable to look for.
|
|
197
|
+
* @returns {boolean} Whether or not the variable is inside initializer of scopeVar.
|
|
198
|
+
*/
|
|
199
|
+
function isOnInitializer(variable, scopeVar) {
|
|
200
|
+
let outerScope = scopeVar.scope, outerDef = scopeVar.defs[0], outer = outerDef && outerDef.parent && outerDef.parent.range, innerScope = variable.scope, innerDef = variable.defs[0], inner = innerDef && innerDef.name.range;
|
|
201
|
+
return outer && inner && outer[0] < inner[0] && inner[1] < outer[1] && (innerDef.type === "FunctionName" && innerDef.node.type === "FunctionExpression" || innerDef.node.type === "ClassExpression") && outerScope === innerScope.upper;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Get a range of a variable's identifier node.
|
|
205
|
+
* @param {Object} variable The variable to get.
|
|
206
|
+
* @returns {Array|undefined} The range of the variable's identifier node.
|
|
207
|
+
*/
|
|
208
|
+
function getNameRange(variable) {
|
|
209
|
+
let def = variable.defs[0];
|
|
210
|
+
return def && def.name.range;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Get declared line and column of a variable.
|
|
214
|
+
* @param {eslint-scope.Variable} variable The variable to get.
|
|
215
|
+
* @returns {Object} The declared line and column of the variable.
|
|
216
|
+
*/
|
|
217
|
+
function getDeclaredLocation(variable) {
|
|
218
|
+
let identifier = variable.identifiers[0], obj;
|
|
219
|
+
return obj = identifier ? {
|
|
220
|
+
global: !1,
|
|
221
|
+
line: identifier.loc.start.line,
|
|
222
|
+
column: identifier.loc.start.column + 1
|
|
223
|
+
} : { global: !0 }, obj;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Checks if a variable is in TDZ of scopeVar.
|
|
227
|
+
* @param {Object} variable The variable to check.
|
|
228
|
+
* @param {Object} scopeVar The variable of TDZ.
|
|
229
|
+
* @returns {boolean} Whether or not the variable is in TDZ of scopeVar.
|
|
230
|
+
*/
|
|
231
|
+
function isInTdz(variable, scopeVar) {
|
|
232
|
+
let outerDef = scopeVar.defs[0], inner = getNameRange(variable), outer = getNameRange(scopeVar);
|
|
233
|
+
return !outer || inner[1] >= outer[0] ? !1 : hoist === "types" ? !TYPES_HOISTED_NODES.has(outerDef.node.type) : hoist === "functions-and-types" ? outerDef.node.type !== "FunctionDeclaration" && !TYPES_HOISTED_NODES.has(outerDef.node.type) : inner && outer && inner[1] < outer[0] && (hoist !== "functions" || !outerDef || outerDef.node.type !== "FunctionDeclaration");
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Checks if the initialization of a variable has the declare modifier in a
|
|
237
|
+
* definition file.
|
|
238
|
+
* @param {Object} variable The variable to check
|
|
239
|
+
* @returns {boolean} Whether the variable is declared in a definition file
|
|
240
|
+
*/
|
|
241
|
+
function isDeclareInDTSFile(variable) {
|
|
242
|
+
let fileName = context.filename;
|
|
243
|
+
return !fileName.endsWith(".d.ts") && !fileName.endsWith(".d.cts") && !fileName.endsWith(".d.mts") ? !1 : variable.defs.some((def) => def.type === "Variable" && def.parent.declare || def.type === "ClassName" && def.node.declare || def.type === "TSEnumName" && def.node.declare || def.type === "TSModuleName" && def.node.declare);
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Checks if a variable is a duplicate of an enum name in the enum scope
|
|
247
|
+
* @param {Object} variable The variable to check
|
|
248
|
+
* @returns {boolean} Whether it's a duplicate enum name variable
|
|
249
|
+
*/
|
|
250
|
+
function isDuplicatedEnumNameVariable(variable) {
|
|
251
|
+
let block = variable.scope.block;
|
|
252
|
+
return block.type === "TSEnumDeclaration" && block.id === variable.identifiers[0];
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Check if this is an external module declaration merging with a type import
|
|
256
|
+
* @param {Scope} scope Current scope
|
|
257
|
+
* @param {Object} variable Current variable
|
|
258
|
+
* @param {Object} shadowedVariable Shadowed variable
|
|
259
|
+
* @returns {boolean} Whether it's an external declaration merging
|
|
260
|
+
*/
|
|
261
|
+
function isExternalDeclarationMerging(scope, variable, shadowedVariable) {
|
|
262
|
+
let firstDefinition = shadowedVariable.defs[0];
|
|
263
|
+
if (!firstDefinition || !firstDefinition.parent || !(firstDefinition.parent.type === "ImportDeclaration" && (firstDefinition.parent.importKind === "type" || firstDefinition.parent.specifiers?.some((s) => s.type === "ImportSpecifier" && s.importKind === "type" && s.local.name === shadowedVariable.name)))) return !1;
|
|
264
|
+
let moduleDecl = findSelfOrAncestor(variable.identifiers[0]?.parent, (node) => node.type === "TSModuleDeclaration");
|
|
265
|
+
return moduleDecl ? firstDefinition.parent.source.value === (moduleDecl.id.type === "Literal" ? moduleDecl.id.value : moduleDecl.id.name) : !1;
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Checks the current context for shadowed variables.
|
|
269
|
+
* @param {Scope} scope Fixme
|
|
270
|
+
* @returns {void}
|
|
271
|
+
*/
|
|
272
|
+
function checkForShadows(scope) {
|
|
273
|
+
if (isGlobalAugmentation(scope)) return;
|
|
274
|
+
let variables = scope.variables;
|
|
275
|
+
for (let i = 0; i < variables.length; ++i) {
|
|
276
|
+
let variable = variables[i];
|
|
277
|
+
if (variable.identifiers.length === 0 || isDuplicatedClassNameVariable(variable) || isDuplicatedEnumNameVariable(variable) || isAllowed(variable) || isDeclareInDTSFile(variable) || isThisParam(variable)) continue;
|
|
278
|
+
let shadowed = astUtils.getVariableByName(scope.upper, variable.name);
|
|
279
|
+
if (shadowed && (shadowed.identifiers.length > 0 || builtinGlobals && "writeable" in shadowed) && !isOnInitializer(variable, shadowed) && !(ignoreOnInitialization && isInitPatternNode(variable, shadowed)) && !(hoist !== "all" && isInTdz(variable, shadowed)) && !isTypeValueShadow(variable, shadowed) && !isFunctionTypeParameterNameValueShadow(variable) && !isGenericOfAStaticMethodShadow(variable, shadowed) && !isExternalDeclarationMerging(scope, variable, shadowed)) {
|
|
280
|
+
let location = getDeclaredLocation(shadowed), messageId = location.global ? "noShadowGlobal" : "noShadow", data = { name: variable.name };
|
|
281
|
+
location.global || (data.shadowedLine = location.line, data.shadowedColumn = location.column), context.report({
|
|
282
|
+
node: variable.identifiers[0],
|
|
283
|
+
messageId,
|
|
284
|
+
data
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
return { "Program:exit"(node) {
|
|
290
|
+
let stack = sourceCode.getScope(node).childScopes.slice();
|
|
291
|
+
for (; stack.length;) {
|
|
292
|
+
let scope = stack.pop();
|
|
293
|
+
stack.push(...scope.childScopes), checkForShadows(scope);
|
|
294
|
+
}
|
|
295
|
+
} };
|
|
296
|
+
}
|
|
297
|
+
};
|
|
298
|
+
}));
|
|
299
|
+
//#endregion
|
|
300
|
+
//#region src-js/generated/plugin-eslint/rules/no-shadow.cjs
|
|
301
|
+
module.exports = require_no_shadow().create;
|
|
302
|
+
//#endregion
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
//#region ../../node_modules/.pnpm/eslint@9.39.3_jiti@2.6.1/node_modules/eslint/lib/rules/no-spaced-func.js
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Rule to check that spaced function application
|
|
4
|
+
* @author Matt DuVall <http://www.mattduvall.com>
|
|
5
|
+
* @deprecated in ESLint v3.3.0
|
|
6
|
+
*/
|
|
7
|
+
var require_no_spaced_func = /* @__PURE__ */ require("../common/chunk.cjs").t(((exports, module) => {
|
|
8
|
+
/** @type {import('../types').Rule.RuleModule} */
|
|
9
|
+
module.exports = {
|
|
10
|
+
meta: {
|
|
11
|
+
type: "layout",
|
|
12
|
+
docs: {
|
|
13
|
+
description: "Disallow spacing between function identifiers and their applications (deprecated)",
|
|
14
|
+
recommended: !1,
|
|
15
|
+
url: "https://eslint.org/docs/latest/rules/no-spaced-func"
|
|
16
|
+
},
|
|
17
|
+
deprecated: {
|
|
18
|
+
message: "Formatting rules are being moved out of ESLint core.",
|
|
19
|
+
url: "https://eslint.org/blog/2016/08/eslint-v3.3.0-released/#deprecated-rules",
|
|
20
|
+
deprecatedSince: "3.3.0",
|
|
21
|
+
availableUntil: "11.0.0",
|
|
22
|
+
replacedBy: [{
|
|
23
|
+
message: "ESLint Stylistic now maintains deprecated stylistic core rules.",
|
|
24
|
+
url: "https://eslint.style/guide/migration",
|
|
25
|
+
plugin: {
|
|
26
|
+
name: "@stylistic/eslint-plugin",
|
|
27
|
+
url: "https://eslint.style"
|
|
28
|
+
},
|
|
29
|
+
rule: {
|
|
30
|
+
name: "function-call-spacing",
|
|
31
|
+
url: "https://eslint.style/rules/function-call-spacing"
|
|
32
|
+
}
|
|
33
|
+
}]
|
|
34
|
+
},
|
|
35
|
+
fixable: "whitespace",
|
|
36
|
+
schema: [],
|
|
37
|
+
messages: { noSpacedFunction: "Unexpected space between function name and paren." }
|
|
38
|
+
},
|
|
39
|
+
create(context) {
|
|
40
|
+
let sourceCode = context.sourceCode;
|
|
41
|
+
/**
|
|
42
|
+
* Check if open space is present in a function name
|
|
43
|
+
* @param {ASTNode} node node to evaluate
|
|
44
|
+
* @returns {void}
|
|
45
|
+
* @private
|
|
46
|
+
*/
|
|
47
|
+
function detectOpenSpaces(node) {
|
|
48
|
+
let lastCalleeToken = sourceCode.getLastToken(node.callee), prevToken = lastCalleeToken, parenToken = sourceCode.getTokenAfter(lastCalleeToken);
|
|
49
|
+
for (; parenToken && parenToken.range[1] < node.range[1] && parenToken.value !== "(";) prevToken = parenToken, parenToken = sourceCode.getTokenAfter(parenToken);
|
|
50
|
+
parenToken && parenToken.range[1] < node.range[1] && sourceCode.isSpaceBetweenTokens(prevToken, parenToken) && context.report({
|
|
51
|
+
node,
|
|
52
|
+
loc: lastCalleeToken.loc.start,
|
|
53
|
+
messageId: "noSpacedFunction",
|
|
54
|
+
fix(fixer) {
|
|
55
|
+
return fixer.removeRange([prevToken.range[1], parenToken.range[0]]);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
CallExpression: detectOpenSpaces,
|
|
61
|
+
NewExpression: detectOpenSpaces
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
}));
|
|
66
|
+
//#endregion
|
|
67
|
+
//#region src-js/generated/plugin-eslint/rules/no-spaced-func.cjs
|
|
68
|
+
module.exports = require_no_spaced_func().create;
|
|
69
|
+
//#endregion
|
|
@@ -0,0 +1,40 @@
|
|
|
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/no-sparse-arrays.js
|
|
3
|
+
/**
|
|
4
|
+
* @fileoverview Disallow sparse arrays
|
|
5
|
+
* @author Nicholas C. Zakas
|
|
6
|
+
*/
|
|
7
|
+
var require_no_sparse_arrays = /* @__PURE__ */ require_chunk.t(((exports, module) => {
|
|
8
|
+
let astUtils = require_ast_utils$1.t();
|
|
9
|
+
/** @type {import('../types').Rule.RuleModule} */
|
|
10
|
+
module.exports = {
|
|
11
|
+
meta: {
|
|
12
|
+
type: "problem",
|
|
13
|
+
docs: {
|
|
14
|
+
description: "Disallow sparse arrays",
|
|
15
|
+
recommended: !0,
|
|
16
|
+
url: "https://eslint.org/docs/latest/rules/no-sparse-arrays"
|
|
17
|
+
},
|
|
18
|
+
schema: [],
|
|
19
|
+
messages: { unexpectedSparseArray: "Unexpected comma in middle of array." }
|
|
20
|
+
},
|
|
21
|
+
create(context) {
|
|
22
|
+
return { ArrayExpression(node) {
|
|
23
|
+
if (!node.elements.includes(null)) return;
|
|
24
|
+
let { sourceCode } = context, commaToken;
|
|
25
|
+
for (let [index, element] of node.elements.entries()) {
|
|
26
|
+
if (index === node.elements.length - 1 && element) return;
|
|
27
|
+
commaToken = sourceCode.getTokenAfter(element ?? commaToken ?? sourceCode.getFirstToken(node), astUtils.isCommaToken), !element && context.report({
|
|
28
|
+
node,
|
|
29
|
+
loc: commaToken.loc,
|
|
30
|
+
messageId: "unexpectedSparseArray"
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
} };
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
}));
|
|
37
|
+
//#endregion
|
|
38
|
+
//#region src-js/generated/plugin-eslint/rules/no-sparse-arrays.cjs
|
|
39
|
+
module.exports = require_no_sparse_arrays().create;
|
|
40
|
+
//#endregion
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
//#region ../../node_modules/.pnpm/eslint@9.39.3_jiti@2.6.1/node_modules/eslint/lib/rules/no-sync.js
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Rule to check for properties whose identifier ends with the string Sync
|
|
4
|
+
* @author Matt DuVall<http://mattduvall.com/>
|
|
5
|
+
* @deprecated in ESLint v7.0.0
|
|
6
|
+
*/
|
|
7
|
+
var require_no_sync = /* @__PURE__ */ require("../common/chunk.cjs").t(((exports, module) => {
|
|
8
|
+
/** @type {import('../types').Rule.RuleModule} */
|
|
9
|
+
module.exports = {
|
|
10
|
+
meta: {
|
|
11
|
+
deprecated: {
|
|
12
|
+
message: "Node.js rules were moved out of ESLint core.",
|
|
13
|
+
url: "https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules",
|
|
14
|
+
deprecatedSince: "7.0.0",
|
|
15
|
+
availableUntil: "11.0.0",
|
|
16
|
+
replacedBy: [{
|
|
17
|
+
message: "eslint-plugin-n now maintains deprecated Node.js-related rules.",
|
|
18
|
+
plugin: {
|
|
19
|
+
name: "eslint-plugin-n",
|
|
20
|
+
url: "https://github.com/eslint-community/eslint-plugin-n"
|
|
21
|
+
},
|
|
22
|
+
rule: {
|
|
23
|
+
name: "no-sync",
|
|
24
|
+
url: "https://github.com/eslint-community/eslint-plugin-n/tree/master/docs/rules/no-sync.md"
|
|
25
|
+
}
|
|
26
|
+
}]
|
|
27
|
+
},
|
|
28
|
+
type: "suggestion",
|
|
29
|
+
docs: {
|
|
30
|
+
description: "Disallow synchronous methods",
|
|
31
|
+
recommended: !1,
|
|
32
|
+
url: "https://eslint.org/docs/latest/rules/no-sync"
|
|
33
|
+
},
|
|
34
|
+
schema: [{
|
|
35
|
+
type: "object",
|
|
36
|
+
properties: { allowAtRootLevel: {
|
|
37
|
+
type: "boolean",
|
|
38
|
+
default: !1
|
|
39
|
+
} },
|
|
40
|
+
additionalProperties: !1
|
|
41
|
+
}],
|
|
42
|
+
messages: { noSync: "Unexpected sync method: '{{propertyName}}'." }
|
|
43
|
+
},
|
|
44
|
+
create(context) {
|
|
45
|
+
return { [context.options[0] && context.options[0].allowAtRootLevel ? ":function MemberExpression[property.name=/.*Sync$/]" : "MemberExpression[property.name=/.*Sync$/]"](node) {
|
|
46
|
+
context.report({
|
|
47
|
+
node,
|
|
48
|
+
messageId: "noSync",
|
|
49
|
+
data: { propertyName: node.property.name }
|
|
50
|
+
});
|
|
51
|
+
} };
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
}));
|
|
55
|
+
//#endregion
|
|
56
|
+
//#region src-js/generated/plugin-eslint/rules/no-sync.cjs
|
|
57
|
+
module.exports = require_no_sync().create;
|
|
58
|
+
//#endregion
|