@checkdigit/eslint-plugin 7.0.0-PR.88-46de → 7.0.0-PR.88-5561
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/README.md +6 -2
- package/dist-mjs/agent/no-full-response.mjs +8 -40
- package/dist-mjs/index.mjs +7 -5
- package/dist-mjs/library/format.mjs +1 -1
- package/dist-mjs/library/tree.mjs +1 -1
- package/dist-mjs/library/ts-tree.mjs +1 -1
- package/dist-mjs/library/variable.mjs +1 -1
- package/dist-mjs/require-resolve-full-response.mjs +1 -2
- package/dist-mjs/require-type-out-of-type-only-imports.mjs +1 -1
- package/dist-types/agent/no-full-response.d.ts +1 -1
- package/dist-types/index.d.ts +2 -10
- package/dist-types/library/tree.d.ts +1 -1
- package/dist-types/require-resolve-full-response.d.ts +1 -1
- package/dist-types/require-type-out-of-type-only-imports.d.ts +1 -1
- package/package.json +1 -1
- package/src/agent/no-full-response.ts +7 -41
- package/src/index.ts +7 -4
- package/src/library/format.ts +1 -1
- package/src/library/tree.ts +11 -5
- package/src/library/ts-tree.ts +11 -5
- package/src/library/variable.ts +1 -1
- package/src/require-resolve-full-response.ts +5 -4
- package/src/require-type-out-of-type-only-imports.ts +1 -1
- package/dist-cjs/index.cjs +0 -92245
- package/dist-cjs/metafile.json +0 -14260
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# checkdigit/eslint-plugin
|
|
1
|
+
# @checkdigit/eslint-plugin
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2021-
|
|
3
|
+
Copyright (c) 2021-2024 [Check Digit, LLC](https://checkdigit.com)
|
|
4
4
|
|
|
5
5
|
## Rules
|
|
6
6
|
|
|
@@ -14,6 +14,10 @@ Copyright (c) 2021-2023 [Check Digit, LLC](https://checkdigit.com)
|
|
|
14
14
|
- `@checkdigit/object-literal-response`
|
|
15
15
|
- `@checkdigit/no-test-import`
|
|
16
16
|
- `@checkdigit/no-promise-instance-method`
|
|
17
|
+
- `@checkdigit/invalid-json-stringify`
|
|
18
|
+
- `@checkdigit/no-full-response`
|
|
19
|
+
- `@checkdigit/require-resolve-full-response`
|
|
20
|
+
- `@checkdigit/require-type-out-of-type-only-imports`
|
|
17
21
|
|
|
18
22
|
## Configurations
|
|
19
23
|
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
// src/agent/no-full-response.ts
|
|
2
|
-
import {
|
|
3
|
-
import { ESLintUtils, TSESTree } from "@typescript-eslint/utils";
|
|
2
|
+
import { ESLintUtils } from "@typescript-eslint/utils";
|
|
4
3
|
import getDocumentationUrl from "../get-documentation-url.mjs";
|
|
5
|
-
import { getTypeParentNode } from "../library/ts-tree.mjs";
|
|
6
4
|
var ruleId = "no-full-response";
|
|
7
5
|
var createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
|
|
8
6
|
var rule = createRule({
|
|
@@ -10,51 +8,21 @@ var rule = createRule({
|
|
|
10
8
|
meta: {
|
|
11
9
|
type: "suggestion",
|
|
12
10
|
docs: {
|
|
13
|
-
description: "
|
|
11
|
+
description: "FullResponse type should not be used."
|
|
14
12
|
},
|
|
15
13
|
messages: {
|
|
16
|
-
|
|
17
|
-
unknownError: 'Unknown error occurred in file "{{fileName}}": {{ error }}.'
|
|
14
|
+
noFullResponse: "Please remove the usage of FullResponse type."
|
|
18
15
|
},
|
|
19
|
-
fixable: "code",
|
|
20
16
|
schema: []
|
|
21
17
|
},
|
|
22
18
|
defaultOptions: [],
|
|
23
19
|
create(context) {
|
|
24
|
-
const sourceCode = context.sourceCode;
|
|
25
20
|
return {
|
|
26
21
|
'TSTypeReference[typeName.name="FullResponse"]': (typeReference) => {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
context.report({
|
|
32
|
-
messageId: "removeFullResponse",
|
|
33
|
-
node: typeReference,
|
|
34
|
-
fix(fixer) {
|
|
35
|
-
return fixer.replaceText(typeParentNode, sourceCode.getText(typeParentNode.expression));
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
} else {
|
|
39
|
-
context.report({
|
|
40
|
-
messageId: "removeFullResponse",
|
|
41
|
-
node: typeReference,
|
|
42
|
-
fix(fixer) {
|
|
43
|
-
return fixer.remove(typeParentNode);
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
} catch (error) {
|
|
48
|
-
console.error(`Failed to apply ${ruleId} rule for file "${context.filename}":`, error);
|
|
49
|
-
context.report({
|
|
50
|
-
node: typeReference,
|
|
51
|
-
messageId: "unknownError",
|
|
52
|
-
data: {
|
|
53
|
-
fileName: context.filename,
|
|
54
|
-
error: error instanceof Error ? error.toString() : JSON.stringify(error)
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
}
|
|
22
|
+
context.report({
|
|
23
|
+
messageId: "noFullResponse",
|
|
24
|
+
node: typeReference
|
|
25
|
+
});
|
|
58
26
|
}
|
|
59
27
|
};
|
|
60
28
|
}
|
|
@@ -64,4 +32,4 @@ export {
|
|
|
64
32
|
no_full_response_default as default,
|
|
65
33
|
ruleId
|
|
66
34
|
};
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L25vLWZ1bGwtcmVzcG9uc2UudHMiXSwKICAibWFwcGluZ3MiOiAiO0FBUUEsU0FBUyxtQkFBNkI7QUFDdEMsT0FBTyx5QkFBeUI7QUFFekIsSUFBTSxTQUFTO0FBRXRCLElBQU0sYUFBYSxZQUFZLFlBQVksQ0FBQyxTQUFTLG9CQUFvQixJQUFJLENBQUM7QUFFOUUsSUFBTSxPQUFpRCxXQUFXO0FBQUEsRUFDaEUsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLElBQ04sTUFBTTtBQUFBLE1BQ0osYUFBYTtBQUFBLElBQ2Y7QUFBQSxJQUNBLFVBQVU7QUFBQSxNQUNSLGdCQUFnQjtBQUFBLElBQ2xCO0FBQUEsSUFDQSxRQUFRLENBQUM7QUFBQSxFQUNYO0FBQUEsRUFDQSxnQkFBZ0IsQ0FBQztBQUFBLEVBQ2pCLE9BQU8sU0FBUztBQUNkLFdBQU87QUFBQSxNQUNMLGlEQUFpRCxDQUFDLGtCQUE0QztBQUM1RixnQkFBUSxPQUFPO0FBQUEsVUFDYixXQUFXO0FBQUEsVUFDWCxNQUFNO0FBQUEsUUFDUixDQUFDO0FBQUEsTUFDSDtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0YsQ0FBQztBQUVELElBQU8sMkJBQVE7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
package/dist-mjs/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/index.ts
|
|
2
|
-
import
|
|
2
|
+
import fs from "node:fs";
|
|
3
3
|
import invalidJsonStringify, { ruleId as invalidJsonStringifyRuleId } from "./invalid-json-stringify.mjs";
|
|
4
4
|
import noFullResponse, { ruleId as noFullResponseRuleId } from "./agent/no-full-response.mjs";
|
|
5
5
|
import noPromiseInstanceMethod, { ruleId as noPromiseInstanceMethodRuleId } from "./no-promise-instance-method.mjs";
|
|
@@ -34,10 +34,11 @@ var rules = {
|
|
|
34
34
|
[requireResolveFullResponseRuleId]: requireResolveFullResponse,
|
|
35
35
|
[requireTypeOutOfTypeOnlyImportsRuleId]: requireTypeOutOfTypeOnlyImports
|
|
36
36
|
};
|
|
37
|
+
var packageJson = JSON.parse(fs.readFileSync("package.json", "utf-8"));
|
|
37
38
|
var plugin = {
|
|
38
39
|
meta: {
|
|
39
|
-
name:
|
|
40
|
-
version:
|
|
40
|
+
name: packageJson.name,
|
|
41
|
+
version: packageJson.version
|
|
41
42
|
},
|
|
42
43
|
rules
|
|
43
44
|
};
|
|
@@ -82,11 +83,12 @@ var configs = {
|
|
|
82
83
|
}
|
|
83
84
|
}
|
|
84
85
|
};
|
|
85
|
-
var
|
|
86
|
+
var pluginToExport = {
|
|
86
87
|
...plugin,
|
|
87
88
|
configs
|
|
88
89
|
};
|
|
90
|
+
var src_default = pluginToExport;
|
|
89
91
|
export {
|
|
90
92
|
src_default as default
|
|
91
93
|
};
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,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
|
|
@@ -11,4 +11,4 @@ function getIndentation(node, sourceCode) {
|
|
|
11
11
|
export {
|
|
12
12
|
getIndentation
|
|
13
13
|
};
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2xpYnJhcnkvZm9ybWF0LnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQVFBLFNBQVMsVUFBVSxjQUFjO0FBQ2pDLE9BQW1DO0FBSTVCLFNBQVMsZUFBZSxNQUE0QixZQUFzRDtBQUMvRyxTQUFPLEdBQUcsS0FBSyxHQUFHO0FBQ2xCLFFBQU0sT0FBTyxXQUFXLE1BQU0sS0FBSyxJQUFJLE1BQU0sT0FBTyxDQUFDO0FBQ3JELFNBQU8sR0FBRyxTQUFTLE1BQVM7QUFDNUIsUUFBTSxjQUFjLFFBQVEsS0FBSyxJQUFJO0FBQ3JDLFNBQU8sY0FBYyxZQUFZLENBQUMsSUFBSTtBQUN4QzsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -61,4 +61,4 @@ export {
|
|
|
61
61
|
isBlockStatement,
|
|
62
62
|
isUsedInArrayOrAsArgument
|
|
63
63
|
};
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2xpYnJhcnkvdHJlZS50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFnQk8sU0FBUyxVQUFVLE1BQXFDO0FBQzdELFNBQVEsS0FBd0M7QUFDbEQ7QUFFTyxTQUFTLFlBQ2QsTUFDQSxTQUNBLGFBQ2tCO0FBQ2xCLFFBQU0sU0FBUyxVQUFVLElBQUk7QUFDN0IsTUFBSSxDQUFDLFFBQVE7QUFDWCxXQUFPO0FBQUEsRUFDVCxXQUFXLE9BQU8sWUFBWSxZQUFZLE9BQU8sU0FBUyxTQUFTO0FBQ2pFLFdBQU87QUFBQSxFQUNULFdBQVcsT0FBTyxZQUFZLGNBQWMsUUFBUSxNQUFNLEdBQUc7QUFDM0QsV0FBTztBQUFBLEVBQ1QsV0FBVyxPQUFPLGdCQUFnQixZQUFZLE9BQU8sU0FBUyxhQUFhO0FBQ3pFLFdBQU87QUFBQSxFQUNULFdBQVcsT0FBTyxnQkFBZ0IsY0FBYyxZQUFZLE1BQU0sR0FBRztBQUNuRSxXQUFPO0FBQUEsRUFDVDtBQUNBLFNBQU8sWUFBWSxRQUFRLFNBQVMsV0FBVztBQUNqRDtBQUVPLFNBQVMsaUJBQWlCLE1BQXFCO0FBQ3BELFNBQU8sS0FBSyxLQUFLLFNBQVMsV0FBVyxLQUFLLEtBQUssS0FBSyxTQUFTLGFBQWE7QUFDNUU7QUFFTyxTQUFTLHNCQUFzQixNQUE4QjtBQUNsRSxTQUFPLFlBQVksTUFBTSxnQkFBZ0I7QUFDM0M7QUFFTyxTQUFTLHNCQUFzQixNQUE4QjtBQUNsRSxTQUFPO0FBQUEsSUFBWTtBQUFBLElBQU0sQ0FBQyxlQUN4QixDQUFDLHNCQUFzQix1QkFBdUIsMkJBQTJCLFNBQVMsRUFBRSxTQUFTLFdBQVcsSUFBSTtBQUFBLEVBQzlHO0FBQ0Y7QUFFTyxTQUFTLDBCQUEwQixNQUFxQjtBQUM3RCxNQUFJLGlCQUFpQixJQUFJLEdBQUc7QUFDMUIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLFNBQVMsVUFBVSxJQUFJO0FBQzdCLE1BQUksQ0FBQyxRQUFRO0FBQ1gsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUNFLE9BQU8sU0FBUyxxQkFDZixPQUFPLFNBQVMsb0JBQW9CLE9BQU8sVUFBVSxTQUFTLElBQWtCLEdBQ2pGO0FBQ0EsV0FBTztBQUFBLEVBQ1Q7QUFHQSxTQUFPLDBCQUEwQixNQUFNO0FBQ3pDO0FBRU8sU0FBUyxxQkFDZCxNQUtZO0FBQ1osTUFDRSxLQUFLLFNBQVMseUJBQ2QsS0FBSyxTQUFTLHdCQUNkLEtBQUssU0FBUywyQkFDZDtBQUNBLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxTQUFTLFVBQVUsSUFBSTtBQUM3QixNQUFJLENBQUMsUUFBUTtBQUNYO0FBQUEsRUFDRjtBQUNBLFNBQU8scUJBQXFCLE1BQU07QUFDcEM7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -69,4 +69,4 @@ export {
|
|
|
69
69
|
isBlockStatement,
|
|
70
70
|
isUsedInArrayOrAsArgument
|
|
71
71
|
};
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2xpYnJhcnkvdHMtdHJlZS50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFRQSxTQUFTLHNCQUFnQztBQVFsQyxTQUFTLFVBQVUsTUFBdUQ7QUFDL0UsU0FBUSxLQUF3QztBQUNsRDtBQUVPLFNBQVMsWUFDZCxNQUNBLFNBQ0EsYUFDMkI7QUFDM0IsUUFBTSxTQUFTLFVBQVUsSUFBSTtBQUM3QixNQUFJLENBQUMsUUFBUTtBQUNYLFdBQU87QUFBQSxFQUNULFdBQVcsT0FBTyxZQUFZLFlBQVksT0FBTyxTQUFTLFNBQVM7QUFDakUsV0FBTztBQUFBLEVBQ1QsV0FBVyxPQUFPLFlBQVksY0FBYyxRQUFRLE1BQU0sR0FBRztBQUMzRCxXQUFPO0FBQUEsRUFDVCxXQUFXLE9BQU8sZ0JBQWdCLFlBQVksT0FBTyxTQUFTLGFBQWE7QUFDekUsV0FBTztBQUFBLEVBQ1QsV0FBVyxPQUFPLGdCQUFnQixjQUFjLFlBQVksTUFBTSxHQUFHO0FBQ25FLFdBQU87QUFBQSxFQUNUO0FBQ0EsU0FBTyxZQUFZLFFBQVEsU0FBUyxXQUFXO0FBQ2pEO0FBRU8sU0FBUyxpQkFBaUIsTUFBOEI7QUFDN0QsU0FBTyxLQUFLLEtBQUssU0FBUyxXQUFXLEtBQUssS0FBSyxLQUFLLFNBQVMsYUFBYTtBQUM1RTtBQUVPLFNBQVMsc0JBQXNCLE1BQWdEO0FBQ3BGLFNBQU8sWUFBWSxNQUFNLGdCQUFnQjtBQUMzQztBQUVPLFNBQVMsc0JBQXNCLE1BQWdEO0FBQ3BGLFNBQU87QUFBQSxJQUFZO0FBQUEsSUFBTSxDQUFDLGVBQ3hCLENBQUMsc0JBQXNCLHVCQUF1QiwyQkFBMkIsU0FBUyxFQUFFLFNBQVMsV0FBVyxJQUFJO0FBQUEsRUFDOUc7QUFDRjtBQUVPLFNBQVMsMEJBQTBCLE1BQThCO0FBQ3RFLE1BQUksaUJBQWlCLElBQUksR0FBRztBQUMxQixXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sU0FBUyxVQUFVLElBQUk7QUFDN0IsTUFBSSxDQUFDLFFBQVE7QUFDWCxXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQ0UsT0FBTyxTQUFTLGVBQWUsbUJBQzlCLE9BQU8sU0FBUyxlQUFlLGtCQUFrQixPQUFPLFVBQVUsU0FBUyxJQUEyQixHQUN2RztBQUNBLFdBQU87QUFBQSxFQUNUO0FBR0EsU0FBTywwQkFBMEIsTUFBTTtBQUN6QztBQUVPLFNBQVMscUJBQ2QsTUFLWTtBQUNaLE1BQ0UsS0FBSyxTQUFTLGVBQWUsdUJBQzdCLEtBQUssU0FBUyxlQUFlLHNCQUM3QixLQUFLLFNBQVMsZUFBZSx5QkFDN0I7QUFDQSxXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sU0FBUyxVQUFVLElBQUk7QUFDN0IsTUFBSSxDQUFDLFFBQVE7QUFDWDtBQUFBLEVBQ0Y7QUFDQSxTQUFPLHFCQUFxQixNQUFNO0FBQ3BDO0FBRU8sU0FBUyxrQkFDZCxNQUNpRTtBQUNqRSxNQUFJLENBQUMsTUFBTTtBQUNULFdBQU87QUFBQSxFQUNUO0FBQ0EsU0FBTyxLQUFLLFNBQVMsZUFBZSxvQkFBb0IsS0FBSyxTQUFTLGVBQWUsaUJBQ2pGLE9BQ0Esa0JBQWtCLEtBQUssTUFBTTtBQUNuQzsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -5,4 +5,4 @@ function isValidPropertyName(name) {
|
|
|
5
5
|
export {
|
|
6
6
|
isValidPropertyName
|
|
7
7
|
};
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2xpYnJhcnkvdmFyaWFibGUudHMiXSwKICAibWFwcGluZ3MiOiAiO0FBRU8sU0FBUyxvQkFBb0IsTUFBd0I7QUFDMUQsU0FBTyxPQUFPLFNBQVMsWUFBWSw4QkFBOEIsS0FBSyxJQUFJO0FBQzVFOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -38,7 +38,6 @@ var rule = createRule({
|
|
|
38
38
|
const variableDefinition = foundVariable.defs.find((def) => def.type === DefinitionType.Variable);
|
|
39
39
|
assert.ok(variableDefinition, `Variable "${urlArgument.name}" not defined in scope`);
|
|
40
40
|
const variableDefinitionNode = variableDefinition.node;
|
|
41
|
-
assert.ok(variableDefinitionNode.type === AST_NODE_TYPES.VariableDeclarator);
|
|
42
41
|
assert.ok(variableDefinitionNode.init, "Variable definition node has no init property");
|
|
43
42
|
return isUrlArgumentValid(variableDefinitionNode.init, scope);
|
|
44
43
|
}
|
|
@@ -156,4 +155,4 @@ export {
|
|
|
156
155
|
require_resolve_full_response_default as default,
|
|
157
156
|
ruleId
|
|
158
157
|
};
|
|
159
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlcXVpcmUtcmVzb2x2ZS1mdWxsLXJlc3BvbnNlLnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQVFBLFNBQVMsVUFBVSxjQUFjO0FBQ2pDLFNBQVMsZ0JBQWdCLG1CQUE2QjtBQUN0RCxTQUFTLHNCQUFrQztBQUMzQyxPQUFPLHlCQUF5QjtBQUNoQyxTQUFTLDZCQUE2QjtBQUUvQixJQUFNLFNBQVM7QUFFZixJQUFNLG1CQUEyQjtBQUVqQyxJQUFNLHVCQUErQjtBQUU1QyxJQUFNLGFBQWEsWUFBWSxZQUFZLENBQUMsU0FBUyxvQkFBb0IsSUFBSSxDQUFDO0FBRTlFLElBQU0sT0FBa0UsV0FBVztBQUFBLEVBQ2pGLE1BQU07QUFBQSxFQUNOLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxJQUNOLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxVQUFVO0FBQUEsTUFDUixnQkFDRTtBQUFBLE1BQ0YsY0FBYztBQUFBLElBQ2hCO0FBQUEsSUFDQSxRQUFRLENBQUM7QUFBQSxFQUNYO0FBQUEsRUFDQSxnQkFBZ0IsQ0FBQztBQUFBLEVBQ2pCLE9BQU8sU0FBUztBQUNkLFVBQU0sYUFBYSxRQUFRO0FBQzNCLFVBQU0sZUFBZSxXQUFXO0FBQ2hDLFVBQU0sZ0JBQWdCLFlBQVksa0JBQWtCLE9BQU87QUFDM0QsVUFBTSxjQUFjLGNBQWMsUUFBUSxlQUFlO0FBRXpELGFBQVMsbUJBQW1CLGFBQXdDLE9BQWM7QUFDaEYsVUFDRyxhQUFhLFNBQVMsZUFBZSxXQUFXLE9BQU8sWUFBWSxVQUFVLFlBQzlFLGFBQWEsU0FBUyxlQUFlLGlCQUNyQztBQUNBLGNBQU0sVUFBVSxXQUFXLFFBQVEsV0FBVztBQUM5QyxlQUFPLGlCQUFpQixLQUFLLE9BQU8sS0FBSyxxQkFBcUIsS0FBSyxPQUFPO0FBQUEsTUFDNUU7QUFFQSxVQUFJLGFBQWEsU0FBUyxlQUFlLFlBQVk7QUFDbkQsY0FBTSxnQkFBZ0IsTUFBTSxVQUFVLEtBQUssQ0FB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
|
|
@@ -45,4 +45,4 @@ export {
|
|
|
45
45
|
require_type_out_of_type_only_imports_default as default,
|
|
46
46
|
ruleId
|
|
47
47
|
};
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlcXVpcmUtdHlwZS1vdXQtb2YtdHlwZS1vbmx5LWltcG9ydHMudHMiXSwKICAibWFwcGluZ3MiOiAiO0FBUUEsU0FBUyxhQUFhLGdCQUFnQjtBQUN0QyxPQUFPLHlCQUF5QjtBQUV6QixJQUFNLFNBQVM7QUFFdEIsSUFBTSxhQUFhLFlBQVksWUFBWSxDQUFDLFNBQVMsb0JBQW9CLElBQUksQ0FBQztBQUU5RSxJQUFNLE9BQWtELFdBQVc7QUFBQSxFQUNqRSxNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsSUFDZjtBQUFBLElBQ0EsVUFBVTtBQUFBLE1BQ1IsaUJBQWlCO0FBQUEsSUFDbkI7QUFBQSxJQUNBLFNBQVM7QUFBQSxJQUNULFFBQVEsQ0FBQztBQUFBLEVBQ1g7QUFBQSxFQUNBLGdCQUFnQixDQUFDO0FBQUEsRUFDakIsT0FBTyxTQUFTO0FBQ2QsVUFBTSxhQUFhLFFBQVE7QUFFM0IsV0FBTztBQUFBLE1BQ0wsa0JBQWtCLGFBQWE7QUFDN0IsWUFDRSxZQUFZLGVBQWUsVUFDM0IsWUFBWSxXQUFXLFdBQVcsS0FDbEMsQ0FBQyxZQUFZLFdBQVc7QUFBQSxVQUN0QixDQUFDLGNBQ0MsVUFBVSxTQUFTLFNBQVMsZUFBZSxtQkFBbUIsVUFBVSxlQUFlO0FBQUEsUUFDM0YsR0FDQTtBQUNBO0FBQUEsUUFDRjtBQUVBLGdCQUFRLE9BQU87QUFBQSxVQUNiLFdBQVc7QUFBQSxVQUNYLE1BQU07QUFBQSxVQUNOLENBQUMsSUFBSSxPQUFPO0FBQ1Ysa0JBQU0sYUFBYSxZQUFZLE9BQU87QUFDdEMsa0JBQU0sbUJBQW1CLFlBQVksV0FDbEMsT0FBTyxDQUFDLGNBQWMsVUFBVSxTQUFTLFNBQVMsZUFBZSxzQkFBc0IsRUFDdkYsSUFBSSxDQUFDLGNBQWMsV0FBVyxRQUFRLFNBQVMsRUFBRSxRQUFRLFNBQVMsRUFBRSxDQUFDO0FBQ3hFLGtCQUFNLDJCQUEyQixpQkFBaUIsaUJBQWlCLEtBQUssSUFBSSxDQUFDLFlBQVksVUFBVTtBQUVuRyxrQkFBTSxNQUFNLFlBQVksYUFBYSx3QkFBd0I7QUFBQSxVQUMvRDtBQUFBLFFBQ0YsQ0FBQztBQUFBLE1BQ0g7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGLENBQUM7QUFFRCxJQUFPLGdEQUFROyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { ESLintUtils } from '@typescript-eslint/utils';
|
|
2
2
|
export declare const ruleId = "no-full-response";
|
|
3
|
-
declare const rule: ESLintUtils.RuleModule<
|
|
3
|
+
declare const rule: ESLintUtils.RuleModule<'noFullResponse'>;
|
|
4
4
|
export default rule;
|
package/dist-types/index.d.ts
CHANGED
|
@@ -1,11 +1,3 @@
|
|
|
1
1
|
import type { TSESLint } from '@typescript-eslint/utils';
|
|
2
|
-
declare const
|
|
3
|
-
|
|
4
|
-
meta?: {
|
|
5
|
-
name?: string | undefined;
|
|
6
|
-
version?: string | undefined;
|
|
7
|
-
};
|
|
8
|
-
processors?: Partial<Record<string, TSESLint.Processor.LooseProcessorModule>> | undefined;
|
|
9
|
-
rules?: Record<string, TSESLint.LooseRuleDefinition> | undefined;
|
|
10
|
-
};
|
|
11
|
-
export default _default;
|
|
2
|
+
declare const pluginToExport: TSESLint.FlatConfig.Plugin;
|
|
3
|
+
export default pluginToExport;
|
|
@@ -5,4 +5,4 @@ export declare function isBlockStatement(node: Node): boolean;
|
|
|
5
5
|
export declare function getEnclosingStatement(node: Node): Node | undefined;
|
|
6
6
|
export declare function getEnclosingScopeNode(node: Node): Node | undefined;
|
|
7
7
|
export declare function isUsedInArrayOrAsArgument(node: Node): boolean;
|
|
8
|
-
export declare function getEnclosingFunction(node: Node): import(
|
|
8
|
+
export declare function getEnclosingFunction(node: Node): import('estree').ArrowFunctionExpression | import('estree').FunctionExpression | import('estree').FunctionDeclaration | undefined;
|
|
@@ -2,5 +2,5 @@ import { ESLintUtils } from '@typescript-eslint/utils';
|
|
|
2
2
|
export declare const ruleId = "require-resolve-full-response";
|
|
3
3
|
export declare const PLAIN_URL_REGEXP: RegExp;
|
|
4
4
|
export declare const TOKENIZED_URL_REGEXP: RegExp;
|
|
5
|
-
declare const rule: ESLintUtils.RuleModule<
|
|
5
|
+
declare const rule: ESLintUtils.RuleModule<'invalidOptions' | 'unknownError'>;
|
|
6
6
|
export default rule;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { ESLintUtils } from '@typescript-eslint/utils';
|
|
2
2
|
export declare const ruleId = "require-type-out-of-type-only-imports";
|
|
3
|
-
declare const rule: ESLintUtils.RuleModule<
|
|
3
|
+
declare const rule: ESLintUtils.RuleModule<'moveTypeOutside'>;
|
|
4
4
|
export default rule;
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@checkdigit/eslint-plugin","version":"7.0.0-PR.88-
|
|
1
|
+
{"name":"@checkdigit/eslint-plugin","version":"7.0.0-PR.88-5561","description":"Check Digit eslint plugins","keywords":["eslint","eslintplugin"],"homepage":"https://github.com/checkdigit/eslint-plugin#readme","bugs":{"url":"https://github.com/checkdigit/eslint-plugin/issues"},"repository":{"type":"git","url":"https://github.com/checkdigit/eslint-plugin"},"license":"MIT","author":"Check Digit, LLC","sideEffects":false,"type":"module","exports":{".":{"types":"./dist-types/index.d.ts","import":"./dist-mjs/index.mjs","default":"./dist-mjs/index.mjs"}},"files":["src","dist-types","dist-mjs","!src/**/test/**","!src/**/*.test.ts","!src/**/*.spec.ts","!dist-types/**/test/**","!dist-types/**/*.test.d.ts","!dist-types/**/*.spec.d.ts","!dist-mjs/**/test/**","!dist-mjs/**/*.test.mjs","!dist-mjs/**/*.spec.mjs","SECURITY.md"],"scripts":{"build:dist-mjs":"rimraf dist-mjs && npx builder --type=module --sourceMap --outDir=dist-mjs && node dist-mjs/index.mjs","build:dist-types":"rimraf dist-types && npx builder --type=types --outDir=dist-types","ci:compile":"tsc --noEmit","ci:coverage":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=true","ci:lint":"npm run lint","ci:style":"npm run prettier","ci:test":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=false","lint":"eslint --max-warnings 0 .","lint:fix":"eslint --max-warnings 0 --fix .","prepare":"","prepublishOnly":"npm run build:dist-types && npm run build:dist-mjs","prettier":"prettier --ignore-path .gitignore --list-different .","prettier:fix":"prettier --ignore-path .gitignore --write .","test":"npm run ci:compile && npm run ci:test && npm run ci:lint && npm run ci:style"},"prettier":"@checkdigit/prettier-config","jest":{"preset":"@checkdigit/jest-config"},"dependencies":{"@typescript-eslint/type-utils":"^8.10.0","@typescript-eslint/utils":"^8.10.0","ts-api-utils":"^1.3.0"},"devDependencies":{"@checkdigit/jest-config":"^6.0.2","@checkdigit/prettier-config":"^5.5.1","@checkdigit/typescript-config":"8.0.0","@eslint/js":"^9.12.0","@types/eslint":"^9.6.1","@types/eslint-config-prettier":"^6.11.3","@typescript-eslint/parser":"^8.10.0","@typescript-eslint/rule-tester":"^8.10.0","eslint":"^9.12.0","eslint-config-prettier":"^9.1.0","eslint-import-resolver-typescript":"^3.6.3","eslint-plugin-eslint-plugin":"^6.2.0","eslint-plugin-import":"^2.31.0","eslint-plugin-no-only-tests":"^3.3.0","eslint-plugin-no-secrets":"^1.0.2","eslint-plugin-node":"^11.1.0","eslint-plugin-sonarjs":"1.0.4","http-status-codes":"^2.3.0","rimraf":"^6.0.1","typescript-eslint":"^8.10.0"},"peerDependencies":{"eslint":">=9 <10"},"engines":{"node":">=20.17"}}
|
|
@@ -6,67 +6,33 @@
|
|
|
6
6
|
* This code is licensed under the MIT license (see LICENSE.txt for details).
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import { strict as assert } from 'node:assert';
|
|
10
9
|
import { ESLintUtils, TSESTree } from '@typescript-eslint/utils';
|
|
11
10
|
import getDocumentationUrl from '../get-documentation-url';
|
|
12
|
-
import { getTypeParentNode } from '../library/ts-tree';
|
|
13
11
|
|
|
14
12
|
export const ruleId = 'no-full-response';
|
|
15
13
|
|
|
16
14
|
const createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
|
|
17
15
|
|
|
18
|
-
const rule = createRule({
|
|
16
|
+
const rule: ESLintUtils.RuleModule<'noFullResponse'> = createRule({
|
|
19
17
|
name: ruleId,
|
|
20
18
|
meta: {
|
|
21
19
|
type: 'suggestion',
|
|
22
20
|
docs: {
|
|
23
|
-
description: '
|
|
21
|
+
description: 'FullResponse type should not be used.',
|
|
24
22
|
},
|
|
25
23
|
messages: {
|
|
26
|
-
|
|
27
|
-
unknownError: 'Unknown error occurred in file "{{fileName}}": {{ error }}.',
|
|
24
|
+
noFullResponse: 'Please remove the usage of FullResponse type.',
|
|
28
25
|
},
|
|
29
|
-
fixable: 'code',
|
|
30
26
|
schema: [],
|
|
31
27
|
},
|
|
32
28
|
defaultOptions: [],
|
|
33
29
|
create(context) {
|
|
34
|
-
const sourceCode = context.sourceCode;
|
|
35
|
-
|
|
36
30
|
return {
|
|
37
31
|
'TSTypeReference[typeName.name="FullResponse"]': (typeReference: TSESTree.TSTypeReference) => {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
context.report({
|
|
43
|
-
messageId: 'removeFullResponse',
|
|
44
|
-
node: typeReference,
|
|
45
|
-
fix(fixer) {
|
|
46
|
-
return fixer.replaceText(typeParentNode, sourceCode.getText(typeParentNode.expression));
|
|
47
|
-
},
|
|
48
|
-
});
|
|
49
|
-
} else {
|
|
50
|
-
context.report({
|
|
51
|
-
messageId: 'removeFullResponse',
|
|
52
|
-
node: typeReference,
|
|
53
|
-
fix(fixer) {
|
|
54
|
-
return fixer.remove(typeParentNode);
|
|
55
|
-
},
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
} catch (error) {
|
|
59
|
-
// eslint-disable-next-line no-console
|
|
60
|
-
console.error(`Failed to apply ${ruleId} rule for file "${context.filename}":`, error);
|
|
61
|
-
context.report({
|
|
62
|
-
node: typeReference,
|
|
63
|
-
messageId: 'unknownError',
|
|
64
|
-
data: {
|
|
65
|
-
fileName: context.filename,
|
|
66
|
-
error: error instanceof Error ? error.toString() : JSON.stringify(error),
|
|
67
|
-
},
|
|
68
|
-
});
|
|
69
|
-
}
|
|
32
|
+
context.report({
|
|
33
|
+
messageId: 'noFullResponse',
|
|
34
|
+
node: typeReference,
|
|
35
|
+
});
|
|
70
36
|
},
|
|
71
37
|
};
|
|
72
38
|
},
|
package/src/index.ts
CHANGED
|
@@ -6,9 +6,10 @@
|
|
|
6
6
|
* This code is licensed under the MIT license (see LICENSE.txt for details).
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
+
import fs from 'node:fs';
|
|
10
|
+
|
|
9
11
|
import type { TSESLint } from '@typescript-eslint/utils';
|
|
10
12
|
|
|
11
|
-
import _package from '../package.json' with { type: 'json' };
|
|
12
13
|
import invalidJsonStringify, { ruleId as invalidJsonStringifyRuleId } from './invalid-json-stringify';
|
|
13
14
|
import noFullResponse, { ruleId as noFullResponseRuleId } from './agent/no-full-response';
|
|
14
15
|
import noPromiseInstanceMethod, { ruleId as noPromiseInstanceMethodRuleId } from './no-promise-instance-method';
|
|
@@ -45,10 +46,11 @@ const rules: Record<string, TSESLint.LooseRuleDefinition> = {
|
|
|
45
46
|
[requireTypeOutOfTypeOnlyImportsRuleId]: requireTypeOutOfTypeOnlyImports,
|
|
46
47
|
};
|
|
47
48
|
|
|
49
|
+
const packageJson = JSON.parse(fs.readFileSync('package.json', 'utf-8')) as { name: string; version: string };
|
|
48
50
|
const plugin: TSESLint.FlatConfig.Plugin = {
|
|
49
51
|
meta: {
|
|
50
|
-
name:
|
|
51
|
-
version:
|
|
52
|
+
name: packageJson.name,
|
|
53
|
+
version: packageJson.version,
|
|
52
54
|
},
|
|
53
55
|
rules,
|
|
54
56
|
};
|
|
@@ -95,7 +97,8 @@ const configs: Record<string, TSESLint.FlatConfig.Config> = {
|
|
|
95
97
|
},
|
|
96
98
|
};
|
|
97
99
|
|
|
98
|
-
|
|
100
|
+
const pluginToExport: TSESLint.FlatConfig.Plugin = {
|
|
99
101
|
...plugin,
|
|
100
102
|
configs,
|
|
101
103
|
};
|
|
104
|
+
export default pluginToExport;
|
package/src/library/format.ts
CHANGED
|
@@ -11,7 +11,7 @@ import { TSESLint, TSESTree } from '@typescript-eslint/utils';
|
|
|
11
11
|
import type { Node } from 'estree';
|
|
12
12
|
import type { SourceCode } from 'eslint';
|
|
13
13
|
|
|
14
|
-
export function getIndentation(node: Node | TSESTree.Node, sourceCode: SourceCode | TSESLint.SourceCode) {
|
|
14
|
+
export function getIndentation(node: Node | TSESTree.Node, sourceCode: SourceCode | TSESLint.SourceCode): string {
|
|
15
15
|
assert.ok(node.loc);
|
|
16
16
|
const line = sourceCode.lines[node.loc.start.line - 1];
|
|
17
17
|
assert.ok(line !== undefined);
|
package/src/library/tree.ts
CHANGED
|
@@ -38,21 +38,21 @@ export function getAncestor(
|
|
|
38
38
|
return getAncestor(parent, matcher, exitMatcher);
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
export function isBlockStatement(node: Node) {
|
|
41
|
+
export function isBlockStatement(node: Node): boolean {
|
|
42
42
|
return node.type.endsWith('Statement') || node.type.endsWith('Declaration');
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
export function getEnclosingStatement(node: Node) {
|
|
45
|
+
export function getEnclosingStatement(node: Node): Node | undefined {
|
|
46
46
|
return getAncestor(node, isBlockStatement);
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
export function getEnclosingScopeNode(node: Node) {
|
|
49
|
+
export function getEnclosingScopeNode(node: Node): Node | undefined {
|
|
50
50
|
return getAncestor(node, (parentNode) =>
|
|
51
51
|
['FunctionExpression', 'FunctionDeclaration', 'ArrowFunctionExpression', 'Program'].includes(parentNode.type),
|
|
52
52
|
);
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
export function isUsedInArrayOrAsArgument(node: Node) {
|
|
55
|
+
export function isUsedInArrayOrAsArgument(node: Node): boolean {
|
|
56
56
|
if (isBlockStatement(node)) {
|
|
57
57
|
return false;
|
|
58
58
|
}
|
|
@@ -73,7 +73,13 @@ export function isUsedInArrayOrAsArgument(node: Node) {
|
|
|
73
73
|
return isUsedInArrayOrAsArgument(parent);
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
-
export function getEnclosingFunction(
|
|
76
|
+
export function getEnclosingFunction(
|
|
77
|
+
node: Node,
|
|
78
|
+
):
|
|
79
|
+
| import('estree').ArrowFunctionExpression
|
|
80
|
+
| import('estree').FunctionExpression
|
|
81
|
+
| import('estree').FunctionDeclaration
|
|
82
|
+
| undefined {
|
|
77
83
|
if (
|
|
78
84
|
node.type === 'FunctionDeclaration' ||
|
|
79
85
|
node.type === 'FunctionExpression' ||
|
package/src/library/ts-tree.ts
CHANGED
|
@@ -38,21 +38,21 @@ export function getAncestor(
|
|
|
38
38
|
return getAncestor(parent, matcher, exitMatcher);
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
export function isBlockStatement(node: TSESTree.Node) {
|
|
41
|
+
export function isBlockStatement(node: TSESTree.Node): boolean {
|
|
42
42
|
return node.type.endsWith('Statement') || node.type.endsWith('Declaration');
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
export function getEnclosingStatement(node: TSESTree.Node) {
|
|
45
|
+
export function getEnclosingStatement(node: TSESTree.Node): TSESTree.Node | undefined {
|
|
46
46
|
return getAncestor(node, isBlockStatement);
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
export function getEnclosingScopeNode(node: TSESTree.Node) {
|
|
49
|
+
export function getEnclosingScopeNode(node: TSESTree.Node): TSESTree.Node | undefined {
|
|
50
50
|
return getAncestor(node, (parentNode) =>
|
|
51
51
|
['FunctionExpression', 'FunctionDeclaration', 'ArrowFunctionExpression', 'Program'].includes(parentNode.type),
|
|
52
52
|
);
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
export function isUsedInArrayOrAsArgument(node: TSESTree.Node) {
|
|
55
|
+
export function isUsedInArrayOrAsArgument(node: TSESTree.Node): boolean {
|
|
56
56
|
if (isBlockStatement(node)) {
|
|
57
57
|
return false;
|
|
58
58
|
}
|
|
@@ -73,7 +73,13 @@ export function isUsedInArrayOrAsArgument(node: TSESTree.Node) {
|
|
|
73
73
|
return isUsedInArrayOrAsArgument(parent);
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
-
export function getEnclosingFunction(
|
|
76
|
+
export function getEnclosingFunction(
|
|
77
|
+
node: TSESTree.Node,
|
|
78
|
+
):
|
|
79
|
+
| TSESTree.ArrowFunctionExpression
|
|
80
|
+
| TSESTree.FunctionDeclarationWithOptionalName
|
|
81
|
+
| TSESTree.FunctionExpression
|
|
82
|
+
| undefined {
|
|
77
83
|
if (
|
|
78
84
|
node.type === AST_NODE_TYPES.FunctionDeclaration ||
|
|
79
85
|
node.type === AST_NODE_TYPES.FunctionExpression ||
|
package/src/library/variable.ts
CHANGED
|
@@ -13,12 +13,14 @@ import getDocumentationUrl from './get-documentation-url';
|
|
|
13
13
|
import { getEnclosingScopeNode } from './library/ts-tree';
|
|
14
14
|
|
|
15
15
|
export const ruleId = 'require-resolve-full-response';
|
|
16
|
-
|
|
17
|
-
export const
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/no-inferrable-types
|
|
17
|
+
export const PLAIN_URL_REGEXP: RegExp = /^[`']\/\w+(?<serviceNamePart>-\w+)*\/v\d+\/(?<any>.|\r|\n)+[`']$/u;
|
|
18
|
+
// eslint-disable-next-line @typescript-eslint/no-inferrable-types
|
|
19
|
+
export const TOKENIZED_URL_REGEXP: RegExp = /^`\$\{(?<serviceNamePart>[A-Z]+_)*BASE_PATH\}\/(?<any>.|\r|\n)+`$/u;
|
|
18
20
|
|
|
19
21
|
const createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
|
|
20
22
|
|
|
21
|
-
const rule = createRule({
|
|
23
|
+
const rule: ESLintUtils.RuleModule<'invalidOptions' | 'unknownError'> = createRule({
|
|
22
24
|
name: ruleId,
|
|
23
25
|
meta: {
|
|
24
26
|
type: 'suggestion',
|
|
@@ -54,7 +56,6 @@ const rule = createRule({
|
|
|
54
56
|
const variableDefinition = foundVariable.defs.find((def) => def.type === DefinitionType.Variable);
|
|
55
57
|
assert.ok(variableDefinition, `Variable "${urlArgument.name}" not defined in scope`);
|
|
56
58
|
const variableDefinitionNode = variableDefinition.node;
|
|
57
|
-
assert.ok(variableDefinitionNode.type === AST_NODE_TYPES.VariableDeclarator);
|
|
58
59
|
assert.ok(variableDefinitionNode.init, 'Variable definition node has no init property');
|
|
59
60
|
return isUrlArgumentValid(variableDefinitionNode.init, scope);
|
|
60
61
|
}
|
|
@@ -13,7 +13,7 @@ export const ruleId = 'require-type-out-of-type-only-imports';
|
|
|
13
13
|
|
|
14
14
|
const createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
|
|
15
15
|
|
|
16
|
-
const rule = createRule({
|
|
16
|
+
const rule: ESLintUtils.RuleModule<'moveTypeOutside'> = createRule({
|
|
17
17
|
name: ruleId,
|
|
18
18
|
meta: {
|
|
19
19
|
type: 'suggestion',
|