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,421 @@
|
|
|
1
|
+
const require_chunk = require("../common/chunk.cjs"), require_ast_utils$1 = require("../common/ast-utils.cjs"), require_ignore$1 = require("../common/ignore.cjs");
|
|
2
|
+
//#region ../../node_modules/.pnpm/eslint@9.39.3_jiti@2.6.1/node_modules/eslint/lib/rules/no-restricted-imports.js
|
|
3
|
+
/**
|
|
4
|
+
* @fileoverview Restrict usage of specified node imports.
|
|
5
|
+
* @author Guy Ellis
|
|
6
|
+
*/
|
|
7
|
+
var require_no_restricted_imports = /* @__PURE__ */ require_chunk.t(((exports, module) => {
|
|
8
|
+
let astUtils = require_ast_utils$1.t(), ignore = require_ignore$1.t(), arrayOfStringsOrObjects = {
|
|
9
|
+
type: "array",
|
|
10
|
+
items: { anyOf: [{ type: "string" }, {
|
|
11
|
+
type: "object",
|
|
12
|
+
properties: {
|
|
13
|
+
name: { type: "string" },
|
|
14
|
+
message: {
|
|
15
|
+
type: "string",
|
|
16
|
+
minLength: 1
|
|
17
|
+
},
|
|
18
|
+
importNames: {
|
|
19
|
+
type: "array",
|
|
20
|
+
items: { type: "string" }
|
|
21
|
+
},
|
|
22
|
+
allowImportNames: {
|
|
23
|
+
type: "array",
|
|
24
|
+
items: { type: "string" }
|
|
25
|
+
},
|
|
26
|
+
allowTypeImports: {
|
|
27
|
+
type: "boolean",
|
|
28
|
+
description: "Whether to allow type-only imports for a path."
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
additionalProperties: !1,
|
|
32
|
+
required: ["name"],
|
|
33
|
+
not: { required: ["importNames", "allowImportNames"] }
|
|
34
|
+
}] },
|
|
35
|
+
uniqueItems: !0
|
|
36
|
+
};
|
|
37
|
+
/** @type {import('../types').Rule.RuleModule} */
|
|
38
|
+
module.exports = {
|
|
39
|
+
meta: {
|
|
40
|
+
type: "suggestion",
|
|
41
|
+
dialects: ["typescript", "javascript"],
|
|
42
|
+
language: "javascript",
|
|
43
|
+
docs: {
|
|
44
|
+
description: "Disallow specified modules when loaded by `import`",
|
|
45
|
+
recommended: !1,
|
|
46
|
+
url: "https://eslint.org/docs/latest/rules/no-restricted-imports"
|
|
47
|
+
},
|
|
48
|
+
messages: {
|
|
49
|
+
path: "'{{importSource}}' import is restricted from being used.",
|
|
50
|
+
pathWithCustomMessage: "'{{importSource}}' import is restricted from being used. {{customMessage}}",
|
|
51
|
+
patterns: "'{{importSource}}' import is restricted from being used by a pattern.",
|
|
52
|
+
patternWithCustomMessage: "'{{importSource}}' import is restricted from being used by a pattern. {{customMessage}}",
|
|
53
|
+
patternAndImportName: "'{{importName}}' import from '{{importSource}}' is restricted from being used by a pattern.",
|
|
54
|
+
patternAndImportNameWithCustomMessage: "'{{importName}}' import from '{{importSource}}' is restricted from being used by a pattern. {{customMessage}}",
|
|
55
|
+
patternAndEverything: "* import is invalid because '{{importNames}}' from '{{importSource}}' is restricted from being used by a pattern.",
|
|
56
|
+
patternAndEverythingWithRegexImportName: "* import is invalid because import name matching '{{importNames}}' pattern from '{{importSource}}' is restricted from being used.",
|
|
57
|
+
patternAndEverythingWithCustomMessage: "* import is invalid because '{{importNames}}' from '{{importSource}}' is restricted from being used by a pattern. {{customMessage}}",
|
|
58
|
+
patternAndEverythingWithRegexImportNameAndCustomMessage: "* import is invalid because import name matching '{{importNames}}' pattern from '{{importSource}}' is restricted from being used. {{customMessage}}",
|
|
59
|
+
everything: "* import is invalid because '{{importNames}}' from '{{importSource}}' is restricted.",
|
|
60
|
+
everythingWithCustomMessage: "* import is invalid because '{{importNames}}' from '{{importSource}}' is restricted. {{customMessage}}",
|
|
61
|
+
importName: "'{{importName}}' import from '{{importSource}}' is restricted.",
|
|
62
|
+
importNameWithCustomMessage: "'{{importName}}' import from '{{importSource}}' is restricted. {{customMessage}}",
|
|
63
|
+
allowedImportName: "'{{importName}}' import from '{{importSource}}' is restricted because only '{{allowedImportNames}}' import(s) is/are allowed.",
|
|
64
|
+
allowedImportNameWithCustomMessage: "'{{importName}}' import from '{{importSource}}' is restricted because only '{{allowedImportNames}}' import(s) is/are allowed. {{customMessage}}",
|
|
65
|
+
everythingWithAllowImportNames: "* import is invalid because only '{{allowedImportNames}}' from '{{importSource}}' is/are allowed.",
|
|
66
|
+
everythingWithAllowImportNamesAndCustomMessage: "* import is invalid because only '{{allowedImportNames}}' from '{{importSource}}' is/are allowed. {{customMessage}}",
|
|
67
|
+
allowedImportNamePattern: "'{{importName}}' import from '{{importSource}}' is restricted because only imports that match the pattern '{{allowedImportNamePattern}}' are allowed from '{{importSource}}'.",
|
|
68
|
+
allowedImportNamePatternWithCustomMessage: "'{{importName}}' import from '{{importSource}}' is restricted because only imports that match the pattern '{{allowedImportNamePattern}}' are allowed from '{{importSource}}'. {{customMessage}}",
|
|
69
|
+
everythingWithAllowedImportNamePattern: "* import is invalid because only imports that match the pattern '{{allowedImportNamePattern}}' from '{{importSource}}' are allowed.",
|
|
70
|
+
everythingWithAllowedImportNamePatternWithCustomMessage: "* import is invalid because only imports that match the pattern '{{allowedImportNamePattern}}' from '{{importSource}}' are allowed. {{customMessage}}"
|
|
71
|
+
},
|
|
72
|
+
schema: { anyOf: [arrayOfStringsOrObjects, {
|
|
73
|
+
type: "array",
|
|
74
|
+
items: [{
|
|
75
|
+
type: "object",
|
|
76
|
+
properties: {
|
|
77
|
+
paths: arrayOfStringsOrObjects,
|
|
78
|
+
patterns: { anyOf: [{
|
|
79
|
+
type: "array",
|
|
80
|
+
items: { type: "string" },
|
|
81
|
+
uniqueItems: !0
|
|
82
|
+
}, {
|
|
83
|
+
type: "array",
|
|
84
|
+
items: {
|
|
85
|
+
type: "object",
|
|
86
|
+
properties: {
|
|
87
|
+
importNames: {
|
|
88
|
+
type: "array",
|
|
89
|
+
items: { type: "string" },
|
|
90
|
+
minItems: 1,
|
|
91
|
+
uniqueItems: !0
|
|
92
|
+
},
|
|
93
|
+
allowImportNames: {
|
|
94
|
+
type: "array",
|
|
95
|
+
items: { type: "string" },
|
|
96
|
+
minItems: 1,
|
|
97
|
+
uniqueItems: !0
|
|
98
|
+
},
|
|
99
|
+
group: {
|
|
100
|
+
type: "array",
|
|
101
|
+
items: { type: "string" },
|
|
102
|
+
minItems: 1,
|
|
103
|
+
uniqueItems: !0
|
|
104
|
+
},
|
|
105
|
+
regex: { type: "string" },
|
|
106
|
+
importNamePattern: { type: "string" },
|
|
107
|
+
allowImportNamePattern: { type: "string" },
|
|
108
|
+
message: {
|
|
109
|
+
type: "string",
|
|
110
|
+
minLength: 1
|
|
111
|
+
},
|
|
112
|
+
caseSensitive: { type: "boolean" },
|
|
113
|
+
allowTypeImports: {
|
|
114
|
+
type: "boolean",
|
|
115
|
+
description: "Whether to allow type-only imports for a pattern."
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
additionalProperties: !1,
|
|
119
|
+
not: { anyOf: [
|
|
120
|
+
{ required: ["importNames", "allowImportNames"] },
|
|
121
|
+
{ required: ["importNamePattern", "allowImportNamePattern"] },
|
|
122
|
+
{ required: ["importNames", "allowImportNamePattern"] },
|
|
123
|
+
{ required: ["importNamePattern", "allowImportNames"] },
|
|
124
|
+
{ required: ["allowImportNames", "allowImportNamePattern"] }
|
|
125
|
+
] },
|
|
126
|
+
oneOf: [{ required: ["group"] }, { required: ["regex"] }]
|
|
127
|
+
},
|
|
128
|
+
uniqueItems: !0
|
|
129
|
+
}] }
|
|
130
|
+
},
|
|
131
|
+
additionalProperties: !1
|
|
132
|
+
}],
|
|
133
|
+
additionalItems: !1
|
|
134
|
+
}] }
|
|
135
|
+
},
|
|
136
|
+
create(context) {
|
|
137
|
+
let sourceCode = context.sourceCode, options = Array.isArray(context.options) ? context.options : [], isPathAndPatternsObject = typeof options[0] == "object" && (Object.hasOwn(options[0], "paths") || Object.hasOwn(options[0], "patterns")), restrictedPaths = (isPathAndPatternsObject ? options[0].paths : context.options) || [], groupedRestrictedPaths = restrictedPaths.reduce((memo, importSource) => {
|
|
138
|
+
let path = typeof importSource == "string" ? importSource : importSource.name;
|
|
139
|
+
return memo[path] || (memo[path] = []), typeof importSource == "string" ? memo[path].push({}) : memo[path].push({
|
|
140
|
+
message: importSource.message,
|
|
141
|
+
importNames: importSource.importNames,
|
|
142
|
+
allowImportNames: importSource.allowImportNames,
|
|
143
|
+
allowTypeImports: importSource.allowTypeImports
|
|
144
|
+
}), memo;
|
|
145
|
+
}, Object.create(null)), restrictedPatterns = (isPathAndPatternsObject ? options[0].patterns : []) || [];
|
|
146
|
+
restrictedPatterns.length > 0 && typeof restrictedPatterns[0] == "string" && (restrictedPatterns = [{ group: restrictedPatterns }]);
|
|
147
|
+
let restrictedPatternGroups = restrictedPatterns.map(({ group, regex, message, caseSensitive, importNames, importNamePattern, allowImportNames, allowImportNamePattern, allowTypeImports }) => ({
|
|
148
|
+
...group ? { matcher: ignore({
|
|
149
|
+
allowRelativePaths: !0,
|
|
150
|
+
ignorecase: !caseSensitive
|
|
151
|
+
}).add(group) } : {},
|
|
152
|
+
...typeof regex == "string" ? { regexMatcher: new RegExp(regex, caseSensitive ? "u" : "iu") } : {},
|
|
153
|
+
customMessage: message,
|
|
154
|
+
importNames,
|
|
155
|
+
importNamePattern,
|
|
156
|
+
allowImportNames,
|
|
157
|
+
allowImportNamePattern,
|
|
158
|
+
allowTypeImports
|
|
159
|
+
}));
|
|
160
|
+
if (Object.keys(restrictedPaths).length === 0 && restrictedPatternGroups.length === 0) return {};
|
|
161
|
+
/**
|
|
162
|
+
* Check if the node is a type-only import
|
|
163
|
+
* @param {ASTNode} node The node to check
|
|
164
|
+
* @returns {boolean} Whether the node is a type-only import
|
|
165
|
+
*/
|
|
166
|
+
function isTypeOnlyImport(node) {
|
|
167
|
+
return node.importKind === "type" || node.specifiers?.length > 0 && node.specifiers.every((specifier) => specifier.importKind === "type");
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Check if a specifier is type-only
|
|
171
|
+
* @param {ASTNode} specifier The specifier to check
|
|
172
|
+
* @returns {boolean} Whether the specifier is type-only
|
|
173
|
+
*/
|
|
174
|
+
function isTypeOnlySpecifier(specifier) {
|
|
175
|
+
return specifier.importKind === "type" || specifier.exportKind === "type";
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Check if the node is a type-only export
|
|
179
|
+
* @param {ASTNode} node The node to check
|
|
180
|
+
* @returns {boolean} Whether the node is a type-only export
|
|
181
|
+
*/
|
|
182
|
+
function isTypeOnlyExport(node) {
|
|
183
|
+
return node.exportKind === "type" || node.specifiers?.length > 0 && node.specifiers.every((specifier) => specifier.exportKind === "type");
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Report a restricted path.
|
|
187
|
+
* @param {string} importSource path of the import
|
|
188
|
+
* @param {Map<string,Object[]>} importNames Map of import names that are being imported
|
|
189
|
+
* @param {node} node representing the restricted path reference
|
|
190
|
+
* @returns {void}
|
|
191
|
+
* @private
|
|
192
|
+
*/
|
|
193
|
+
function checkRestrictedPathAndReport(importSource, importNames, node) {
|
|
194
|
+
Object.hasOwn(groupedRestrictedPaths, importSource) && groupedRestrictedPaths[importSource].forEach((restrictedPathEntry) => {
|
|
195
|
+
let customMessage = restrictedPathEntry.message, restrictedImportNames = restrictedPathEntry.importNames, allowedImportNames = restrictedPathEntry.allowImportNames, allowTypeImports = restrictedPathEntry.allowTypeImports;
|
|
196
|
+
if (!(allowTypeImports && (node.type === "ImportDeclaration" || node.type === "TSImportEqualsDeclaration") && isTypeOnlyImport(node)) && !(allowTypeImports && (node.type === "ExportNamedDeclaration" || node.type === "ExportAllDeclaration") && isTypeOnlyExport(node))) {
|
|
197
|
+
if (!restrictedImportNames && !allowedImportNames) {
|
|
198
|
+
context.report({
|
|
199
|
+
node,
|
|
200
|
+
messageId: customMessage ? "pathWithCustomMessage" : "path",
|
|
201
|
+
data: {
|
|
202
|
+
importSource,
|
|
203
|
+
customMessage
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
importNames.forEach((specifiers, importName) => {
|
|
209
|
+
if (importName === "*") {
|
|
210
|
+
let [specifier] = specifiers;
|
|
211
|
+
restrictedImportNames ? context.report({
|
|
212
|
+
node,
|
|
213
|
+
messageId: customMessage ? "everythingWithCustomMessage" : "everything",
|
|
214
|
+
loc: specifier.loc,
|
|
215
|
+
data: {
|
|
216
|
+
importSource,
|
|
217
|
+
importNames: restrictedImportNames,
|
|
218
|
+
customMessage
|
|
219
|
+
}
|
|
220
|
+
}) : allowedImportNames && context.report({
|
|
221
|
+
node,
|
|
222
|
+
messageId: customMessage ? "everythingWithAllowImportNamesAndCustomMessage" : "everythingWithAllowImportNames",
|
|
223
|
+
loc: specifier.loc,
|
|
224
|
+
data: {
|
|
225
|
+
importSource,
|
|
226
|
+
allowedImportNames,
|
|
227
|
+
customMessage
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
restrictedImportNames && restrictedImportNames.includes(importName) && specifiers.forEach((specifier) => {
|
|
233
|
+
allowTypeImports && isTypeOnlySpecifier(specifier.specifier) || context.report({
|
|
234
|
+
node,
|
|
235
|
+
messageId: customMessage ? "importNameWithCustomMessage" : "importName",
|
|
236
|
+
loc: specifier.loc,
|
|
237
|
+
data: {
|
|
238
|
+
importSource,
|
|
239
|
+
customMessage,
|
|
240
|
+
importName
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
}), allowedImportNames && !allowedImportNames.includes(importName) && specifiers.forEach((specifier) => {
|
|
244
|
+
allowTypeImports && isTypeOnlySpecifier(specifier.specifier) || context.report({
|
|
245
|
+
node,
|
|
246
|
+
loc: specifier.loc,
|
|
247
|
+
messageId: customMessage ? "allowedImportNameWithCustomMessage" : "allowedImportName",
|
|
248
|
+
data: {
|
|
249
|
+
importSource,
|
|
250
|
+
customMessage,
|
|
251
|
+
importName,
|
|
252
|
+
allowedImportNames
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Report a restricted path specifically for patterns.
|
|
262
|
+
* @param {node} node representing the restricted path reference
|
|
263
|
+
* @param {Object} group contains an Ignore instance for paths, the customMessage to show on failure,
|
|
264
|
+
* and any restricted import names that have been specified in the config
|
|
265
|
+
* @param {Map<string,Object[]>} importNames Map of import names that are being imported
|
|
266
|
+
* @param {string} importSource the import source string
|
|
267
|
+
* @returns {void}
|
|
268
|
+
* @private
|
|
269
|
+
*/
|
|
270
|
+
function reportPathForPatterns(node, group, importNames, importSource) {
|
|
271
|
+
if (group.allowTypeImports && (node.type === "ImportDeclaration" || node.type === "TSImportEqualsDeclaration") && isTypeOnlyImport(node) || group.allowTypeImports && (node.type === "ExportNamedDeclaration" || node.type === "ExportAllDeclaration") && isTypeOnlyExport(node)) return;
|
|
272
|
+
let customMessage = group.customMessage, restrictedImportNames = group.importNames, restrictedImportNamePattern = group.importNamePattern ? new RegExp(group.importNamePattern, "u") : null, allowedImportNames = group.allowImportNames, allowedImportNamePattern = group.allowImportNamePattern ? new RegExp(group.allowImportNamePattern, "u") : null;
|
|
273
|
+
/**
|
|
274
|
+
* If we are not restricting to any specific import names and just the pattern itself,
|
|
275
|
+
* report the error and move on
|
|
276
|
+
*/
|
|
277
|
+
if (!restrictedImportNames && !allowedImportNames && !restrictedImportNamePattern && !allowedImportNamePattern) {
|
|
278
|
+
context.report({
|
|
279
|
+
node,
|
|
280
|
+
messageId: customMessage ? "patternWithCustomMessage" : "patterns",
|
|
281
|
+
data: {
|
|
282
|
+
importSource,
|
|
283
|
+
customMessage
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
importNames.forEach((specifiers, importName) => {
|
|
289
|
+
if (importName === "*") {
|
|
290
|
+
let [specifier] = specifiers;
|
|
291
|
+
restrictedImportNames ? context.report({
|
|
292
|
+
node,
|
|
293
|
+
messageId: customMessage ? "patternAndEverythingWithCustomMessage" : "patternAndEverything",
|
|
294
|
+
loc: specifier.loc,
|
|
295
|
+
data: {
|
|
296
|
+
importSource,
|
|
297
|
+
importNames: restrictedImportNames,
|
|
298
|
+
customMessage
|
|
299
|
+
}
|
|
300
|
+
}) : allowedImportNames ? context.report({
|
|
301
|
+
node,
|
|
302
|
+
messageId: customMessage ? "everythingWithAllowImportNamesAndCustomMessage" : "everythingWithAllowImportNames",
|
|
303
|
+
loc: specifier.loc,
|
|
304
|
+
data: {
|
|
305
|
+
importSource,
|
|
306
|
+
allowedImportNames,
|
|
307
|
+
customMessage
|
|
308
|
+
}
|
|
309
|
+
}) : allowedImportNamePattern ? context.report({
|
|
310
|
+
node,
|
|
311
|
+
messageId: customMessage ? "everythingWithAllowedImportNamePatternWithCustomMessage" : "everythingWithAllowedImportNamePattern",
|
|
312
|
+
loc: specifier.loc,
|
|
313
|
+
data: {
|
|
314
|
+
importSource,
|
|
315
|
+
allowedImportNamePattern,
|
|
316
|
+
customMessage
|
|
317
|
+
}
|
|
318
|
+
}) : context.report({
|
|
319
|
+
node,
|
|
320
|
+
messageId: customMessage ? "patternAndEverythingWithRegexImportNameAndCustomMessage" : "patternAndEverythingWithRegexImportName",
|
|
321
|
+
loc: specifier.loc,
|
|
322
|
+
data: {
|
|
323
|
+
importSource,
|
|
324
|
+
importNames: restrictedImportNamePattern,
|
|
325
|
+
customMessage
|
|
326
|
+
}
|
|
327
|
+
});
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
(restrictedImportNames && restrictedImportNames.includes(importName) || restrictedImportNamePattern && restrictedImportNamePattern.test(importName)) && specifiers.forEach((specifier) => {
|
|
331
|
+
group.allowTypeImports && isTypeOnlySpecifier(specifier.specifier) || context.report({
|
|
332
|
+
node,
|
|
333
|
+
messageId: customMessage ? "patternAndImportNameWithCustomMessage" : "patternAndImportName",
|
|
334
|
+
loc: specifier.loc,
|
|
335
|
+
data: {
|
|
336
|
+
importSource,
|
|
337
|
+
customMessage,
|
|
338
|
+
importName
|
|
339
|
+
}
|
|
340
|
+
});
|
|
341
|
+
}), allowedImportNames && !allowedImportNames.includes(importName) ? specifiers.forEach((specifier) => {
|
|
342
|
+
group.allowTypeImports && isTypeOnlySpecifier(specifier.specifier) || context.report({
|
|
343
|
+
node,
|
|
344
|
+
messageId: customMessage ? "allowedImportNameWithCustomMessage" : "allowedImportName",
|
|
345
|
+
loc: specifier.loc,
|
|
346
|
+
data: {
|
|
347
|
+
importSource,
|
|
348
|
+
customMessage,
|
|
349
|
+
importName,
|
|
350
|
+
allowedImportNames
|
|
351
|
+
}
|
|
352
|
+
});
|
|
353
|
+
}) : allowedImportNamePattern && !allowedImportNamePattern.test(importName) && specifiers.forEach((specifier) => {
|
|
354
|
+
group.allowTypeImports && isTypeOnlySpecifier(specifier.specifier) || context.report({
|
|
355
|
+
node,
|
|
356
|
+
messageId: customMessage ? "allowedImportNamePatternWithCustomMessage" : "allowedImportNamePattern",
|
|
357
|
+
loc: specifier.loc,
|
|
358
|
+
data: {
|
|
359
|
+
importSource,
|
|
360
|
+
customMessage,
|
|
361
|
+
importName,
|
|
362
|
+
allowedImportNamePattern
|
|
363
|
+
}
|
|
364
|
+
});
|
|
365
|
+
});
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* Check if the given importSource is restricted by a pattern.
|
|
370
|
+
* @param {string} importSource path of the import
|
|
371
|
+
* @param {Object} group contains a Ignore instance for paths, and the customMessage to show if it fails
|
|
372
|
+
* @returns {boolean} whether the variable is a restricted pattern or not
|
|
373
|
+
* @private
|
|
374
|
+
*/
|
|
375
|
+
function isRestrictedPattern(importSource, group) {
|
|
376
|
+
return group.regexMatcher ? group.regexMatcher.test(importSource) : group.matcher.ignores(importSource);
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Checks a node to see if any problems should be reported.
|
|
380
|
+
* @param {ASTNode} node The node to check.
|
|
381
|
+
* @returns {void}
|
|
382
|
+
* @private
|
|
383
|
+
*/
|
|
384
|
+
function checkNode(node) {
|
|
385
|
+
let importSource = node.source.value.trim(), importNames = /* @__PURE__ */ new Map();
|
|
386
|
+
if (node.type === "ExportAllDeclaration") {
|
|
387
|
+
let starToken = sourceCode.getFirstToken(node, 1);
|
|
388
|
+
importNames.set("*", [{ loc: starToken.loc }]);
|
|
389
|
+
} else if (node.specifiers) for (let specifier of node.specifiers) {
|
|
390
|
+
let name, specifierData = {
|
|
391
|
+
loc: specifier.loc,
|
|
392
|
+
specifier
|
|
393
|
+
};
|
|
394
|
+
specifier.type === "ImportDefaultSpecifier" ? name = "default" : specifier.type === "ImportNamespaceSpecifier" ? name = "*" : specifier.imported ? name = astUtils.getModuleExportName(specifier.imported) : specifier.local && (name = astUtils.getModuleExportName(specifier.local)), typeof name == "string" && (importNames.has(name) ? importNames.get(name).push(specifierData) : importNames.set(name, [specifierData]));
|
|
395
|
+
}
|
|
396
|
+
checkRestrictedPathAndReport(importSource, importNames, node), restrictedPatternGroups.forEach((group) => {
|
|
397
|
+
isRestrictedPattern(importSource, group) && reportPathForPatterns(node, group, importNames, importSource);
|
|
398
|
+
});
|
|
399
|
+
}
|
|
400
|
+
return {
|
|
401
|
+
ImportDeclaration: checkNode,
|
|
402
|
+
ExportNamedDeclaration(node) {
|
|
403
|
+
node.source && checkNode(node);
|
|
404
|
+
},
|
|
405
|
+
ExportAllDeclaration: checkNode,
|
|
406
|
+
TSImportEqualsDeclaration(node) {
|
|
407
|
+
if (node.moduleReference.type === "TSExternalModuleReference") {
|
|
408
|
+
let importSource = node.moduleReference.expression.value, importNames = /* @__PURE__ */ new Map();
|
|
409
|
+
checkRestrictedPathAndReport(importSource, importNames, node), restrictedPatternGroups.forEach((group) => {
|
|
410
|
+
isRestrictedPattern(importSource, group) && reportPathForPatterns(node, group, importNames, importSource);
|
|
411
|
+
});
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
};
|
|
415
|
+
}
|
|
416
|
+
};
|
|
417
|
+
}));
|
|
418
|
+
//#endregion
|
|
419
|
+
//#region src-js/generated/plugin-eslint/rules/no-restricted-imports.cjs
|
|
420
|
+
module.exports = require_no_restricted_imports().create;
|
|
421
|
+
//#endregion
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
const require_chunk = require("../common/chunk.cjs"), require_ast_utils$1 = require("../common/ast-utils.cjs"), require_ignore$1 = require("../common/ignore.cjs");
|
|
2
|
+
//#region ../../node_modules/.pnpm/eslint@9.39.3_jiti@2.6.1/node_modules/eslint/lib/rules/no-restricted-modules.js
|
|
3
|
+
/**
|
|
4
|
+
* @fileoverview Restrict usage of specified node modules.
|
|
5
|
+
* @author Christian Schulz
|
|
6
|
+
* @deprecated in ESLint v7.0.0
|
|
7
|
+
*/
|
|
8
|
+
var require_no_restricted_modules = /* @__PURE__ */ require_chunk.t(((exports, module) => {
|
|
9
|
+
let astUtils = require_ast_utils$1.t(), ignore = require_ignore$1.t(), arrayOfStrings = {
|
|
10
|
+
type: "array",
|
|
11
|
+
items: { type: "string" },
|
|
12
|
+
uniqueItems: !0
|
|
13
|
+
}, arrayOfStringsOrObjects = {
|
|
14
|
+
type: "array",
|
|
15
|
+
items: { anyOf: [{ type: "string" }, {
|
|
16
|
+
type: "object",
|
|
17
|
+
properties: {
|
|
18
|
+
name: { type: "string" },
|
|
19
|
+
message: {
|
|
20
|
+
type: "string",
|
|
21
|
+
minLength: 1
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
additionalProperties: !1,
|
|
25
|
+
required: ["name"]
|
|
26
|
+
}] },
|
|
27
|
+
uniqueItems: !0
|
|
28
|
+
};
|
|
29
|
+
/** @type {import('../types').Rule.RuleModule} */
|
|
30
|
+
module.exports = {
|
|
31
|
+
meta: {
|
|
32
|
+
deprecated: {
|
|
33
|
+
message: "Node.js rules were moved out of ESLint core.",
|
|
34
|
+
url: "https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules",
|
|
35
|
+
deprecatedSince: "7.0.0",
|
|
36
|
+
availableUntil: "11.0.0",
|
|
37
|
+
replacedBy: [{
|
|
38
|
+
message: "eslint-plugin-n now maintains deprecated Node.js-related rules.",
|
|
39
|
+
plugin: {
|
|
40
|
+
name: "eslint-plugin-n",
|
|
41
|
+
url: "https://github.com/eslint-community/eslint-plugin-n"
|
|
42
|
+
},
|
|
43
|
+
rule: {
|
|
44
|
+
name: "no-restricted-require",
|
|
45
|
+
url: "https://github.com/eslint-community/eslint-plugin-n/tree/master/docs/rules/no-restricted-require.md"
|
|
46
|
+
}
|
|
47
|
+
}]
|
|
48
|
+
},
|
|
49
|
+
type: "suggestion",
|
|
50
|
+
docs: {
|
|
51
|
+
description: "Disallow specified modules when loaded by `require`",
|
|
52
|
+
recommended: !1,
|
|
53
|
+
url: "https://eslint.org/docs/latest/rules/no-restricted-modules"
|
|
54
|
+
},
|
|
55
|
+
schema: { anyOf: [arrayOfStringsOrObjects, {
|
|
56
|
+
type: "array",
|
|
57
|
+
items: {
|
|
58
|
+
type: "object",
|
|
59
|
+
properties: {
|
|
60
|
+
paths: arrayOfStringsOrObjects,
|
|
61
|
+
patterns: arrayOfStrings
|
|
62
|
+
},
|
|
63
|
+
additionalProperties: !1
|
|
64
|
+
},
|
|
65
|
+
additionalItems: !1
|
|
66
|
+
}] },
|
|
67
|
+
messages: {
|
|
68
|
+
defaultMessage: "'{{name}}' module is restricted from being used.",
|
|
69
|
+
customMessage: "'{{name}}' module is restricted from being used. {{customMessage}}",
|
|
70
|
+
patternMessage: "'{{name}}' module is restricted from being used by a pattern."
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
create(context) {
|
|
74
|
+
let options = Array.isArray(context.options) ? context.options : [], isPathAndPatternsObject = typeof options[0] == "object" && (Object.hasOwn(options[0], "paths") || Object.hasOwn(options[0], "patterns")), restrictedPaths = (isPathAndPatternsObject ? options[0].paths : context.options) || [], restrictedPatterns = (isPathAndPatternsObject ? options[0].patterns : []) || [], restrictedPathMessages = restrictedPaths.reduce((memo, importName) => (typeof importName == "string" ? memo[importName] = null : memo[importName.name] = importName.message, memo), {});
|
|
75
|
+
if (Object.keys(restrictedPaths).length === 0 && restrictedPatterns.length === 0) return {};
|
|
76
|
+
let ig = ignore({ allowRelativePaths: !0 }).add(restrictedPatterns);
|
|
77
|
+
/**
|
|
78
|
+
* Function to check if a node is a string literal.
|
|
79
|
+
* @param {ASTNode} node The node to check.
|
|
80
|
+
* @returns {boolean} If the node is a string literal.
|
|
81
|
+
*/
|
|
82
|
+
function isStringLiteral(node) {
|
|
83
|
+
return node && node.type === "Literal" && typeof node.value == "string";
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Function to check if a node is a require call.
|
|
87
|
+
* @param {ASTNode} node The node to check.
|
|
88
|
+
* @returns {boolean} If the node is a require call.
|
|
89
|
+
*/
|
|
90
|
+
function isRequireCall(node) {
|
|
91
|
+
return node.callee.type === "Identifier" && node.callee.name === "require";
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Extract string from Literal or TemplateLiteral node
|
|
95
|
+
* @param {ASTNode} node The node to extract from
|
|
96
|
+
* @returns {string|null} Extracted string or null if node doesn't represent a string
|
|
97
|
+
*/
|
|
98
|
+
function getFirstArgumentString(node) {
|
|
99
|
+
return isStringLiteral(node) ? node.value.trim() : astUtils.isStaticTemplateLiteral(node) ? node.quasis[0].value.cooked.trim() : null;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Report a restricted path.
|
|
103
|
+
* @param {node} node representing the restricted path reference
|
|
104
|
+
* @param {string} name restricted path
|
|
105
|
+
* @returns {void}
|
|
106
|
+
* @private
|
|
107
|
+
*/
|
|
108
|
+
function reportPath(node, name) {
|
|
109
|
+
let customMessage = restrictedPathMessages[name], messageId = customMessage ? "customMessage" : "defaultMessage";
|
|
110
|
+
context.report({
|
|
111
|
+
node,
|
|
112
|
+
messageId,
|
|
113
|
+
data: {
|
|
114
|
+
name,
|
|
115
|
+
customMessage
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Check if the given name is a restricted path name
|
|
121
|
+
* @param {string} name name of a variable
|
|
122
|
+
* @returns {boolean} whether the variable is a restricted path or not
|
|
123
|
+
* @private
|
|
124
|
+
*/
|
|
125
|
+
function isRestrictedPath(name) {
|
|
126
|
+
return Object.hasOwn(restrictedPathMessages, name);
|
|
127
|
+
}
|
|
128
|
+
return { CallExpression(node) {
|
|
129
|
+
if (isRequireCall(node) && node.arguments.length) {
|
|
130
|
+
let name = getFirstArgumentString(node.arguments[0]);
|
|
131
|
+
name && (isRestrictedPath(name) && reportPath(node, name), restrictedPatterns.length > 0 && ig.ignores(name) && context.report({
|
|
132
|
+
node,
|
|
133
|
+
messageId: "patternMessage",
|
|
134
|
+
data: { name }
|
|
135
|
+
}));
|
|
136
|
+
}
|
|
137
|
+
} };
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
}));
|
|
141
|
+
//#endregion
|
|
142
|
+
//#region src-js/generated/plugin-eslint/rules/no-restricted-modules.cjs
|
|
143
|
+
module.exports = require_no_restricted_modules().create;
|
|
144
|
+
//#endregion
|