@checkdigit/eslint-plugin 7.4.1 → 7.5.0-PR.93-6f1c
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 +1 -1
- package/dist-mjs/index.mjs +64 -52
- package/dist-mjs/library/tree.mjs +2 -2
- package/dist-mjs/no-legacy-service-typing.mjs +39 -0
- package/dist-mjs/{agent/no-serve-runtime.mjs → no-serve-runtime.mjs} +3 -3
- package/dist-mjs/require-resolve-full-response.mjs +30 -15
- package/dist-types/index.d.ts +4 -2
- package/dist-types/no-legacy-service-typing.d.ts +5 -0
- package/package.json +1 -96
- package/src/index.ts +66 -52
- package/src/library/tree.ts +1 -0
- package/src/no-legacy-service-typing.ts +49 -0
- package/src/{agent/no-serve-runtime.ts → no-serve-runtime.ts} +2 -2
- package/src/require-resolve-full-response.ts +36 -21
- package/dist-mjs/agent/no-full-response.mjs +0 -35
- package/dist-types/agent/no-full-response.d.ts +0 -4
- package/src/agent/no-full-response.ts +0 -41
- /package/dist-types/{agent/no-serve-runtime.d.ts → no-serve-runtime.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -17,7 +17,7 @@ Copyright (c) 2021-2024 [Check Digit, LLC](https://checkdigit.com)
|
|
|
17
17
|
- `@checkdigit/no-side-effects`
|
|
18
18
|
- `@checkdigit/no-promise-instance-method`
|
|
19
19
|
- `@checkdigit/invalid-json-stringify`
|
|
20
|
-
- `@checkdigit/no-
|
|
20
|
+
- `@checkdigit/no-legacy-service-typing`
|
|
21
21
|
- `@checkdigit/require-resolve-full-response`
|
|
22
22
|
- `@checkdigit/require-type-out-of-type-only-imports`
|
|
23
23
|
|
package/dist-mjs/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// src/index.ts
|
|
2
2
|
import invalidJsonStringify, { ruleId as invalidJsonStringifyRuleId } from "./invalid-json-stringify.mjs";
|
|
3
3
|
import noDuplicatedImports, { ruleId as noDuplicatedImportsRuleId } from "./no-duplicated-imports.mjs";
|
|
4
|
-
import
|
|
4
|
+
import noLegacyServiceTyping, { ruleId as noLegacyServiceTypingRuleId } from "./no-legacy-service-typing.mjs";
|
|
5
5
|
import noPromiseInstanceMethod, { ruleId as noPromiseInstanceMethodRuleId } from "./no-promise-instance-method.mjs";
|
|
6
6
|
import requireFixedServicesImport, {
|
|
7
7
|
ruleId as requireFixedServicesImportRuleId
|
|
@@ -12,7 +12,7 @@ import requireResolveFullResponse, {
|
|
|
12
12
|
import requireTypeOutOfTypeOnlyImports, {
|
|
13
13
|
ruleId as requireTypeOutOfTypeOnlyImportsRuleId
|
|
14
14
|
} from "./require-type-out-of-type-only-imports.mjs";
|
|
15
|
-
import noServeRuntime, { ruleId as noServeRuntimeRuleId } from "./
|
|
15
|
+
import noServeRuntime, { ruleId as noServeRuntimeRuleId } from "./no-serve-runtime.mjs";
|
|
16
16
|
import filePathComment from "./file-path-comment.mjs";
|
|
17
17
|
import noCardNumbers from "./no-card-numbers.mjs";
|
|
18
18
|
import noSideEffects from "./no-side-effects.mjs";
|
|
@@ -38,70 +38,82 @@ var rules = {
|
|
|
38
38
|
"object-literal-response": objectLiteralResponse,
|
|
39
39
|
[invalidJsonStringifyRuleId]: invalidJsonStringify,
|
|
40
40
|
[noPromiseInstanceMethodRuleId]: noPromiseInstanceMethod,
|
|
41
|
-
[
|
|
41
|
+
[noLegacyServiceTypingRuleId]: noLegacyServiceTyping,
|
|
42
42
|
[requireResolveFullResponseRuleId]: requireResolveFullResponse,
|
|
43
|
-
[requireTypeOutOfTypeOnlyImportsRuleId]: requireTypeOutOfTypeOnlyImports,
|
|
44
43
|
[noDuplicatedImportsRuleId]: noDuplicatedImports,
|
|
44
|
+
[noServeRuntimeRuleId]: noServeRuntime,
|
|
45
45
|
[requireFixedServicesImportRuleId]: requireFixedServicesImport,
|
|
46
|
-
[
|
|
46
|
+
[requireTypeOutOfTypeOnlyImportsRuleId]: requireTypeOutOfTypeOnlyImports
|
|
47
47
|
};
|
|
48
48
|
var plugin = {
|
|
49
49
|
rules
|
|
50
50
|
};
|
|
51
51
|
var configs = {
|
|
52
|
-
all:
|
|
53
|
-
|
|
54
|
-
"
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
52
|
+
all: [
|
|
53
|
+
{
|
|
54
|
+
files: ["**/*.ts"],
|
|
55
|
+
plugins: {
|
|
56
|
+
"@checkdigit": plugin
|
|
57
|
+
},
|
|
58
|
+
rules: {
|
|
59
|
+
"@checkdigit/no-card-numbers": "error",
|
|
60
|
+
"@checkdigit/file-path-comment": "error",
|
|
61
|
+
"@checkdigit/no-random-v4-uuid": "error",
|
|
62
|
+
"@checkdigit/no-uuid": "error",
|
|
63
|
+
"@checkdigit/require-strict-assert": "error",
|
|
64
|
+
"@checkdigit/no-wallaby-comment": "error",
|
|
65
|
+
"@checkdigit/no-side-effects": ["error", { excludedIdentifiers: ["assert", "debug", "log", "promisify"] }],
|
|
66
|
+
"@checkdigit/regular-expression-comment": "error",
|
|
67
|
+
"@checkdigit/require-assert-predicate-rejects-throws": "error",
|
|
68
|
+
"@checkdigit/object-literal-response": "error",
|
|
69
|
+
"@checkdigit/no-test-import": "error",
|
|
70
|
+
[`@checkdigit/${invalidJsonStringifyRuleId}`]: "error",
|
|
71
|
+
[`@checkdigit/${noPromiseInstanceMethodRuleId}`]: "error",
|
|
72
|
+
[`@checkdigit/${noLegacyServiceTypingRuleId}`]: "error",
|
|
73
|
+
[`@checkdigit/${requireResolveFullResponseRuleId}`]: "error",
|
|
74
|
+
[`@checkdigit/${noDuplicatedImportsRuleId}`]: "error",
|
|
75
|
+
[`@checkdigit/${requireFixedServicesImportRuleId}`]: "error",
|
|
76
|
+
[`@checkdigit/${requireTypeOutOfTypeOnlyImportsRuleId}`]: "error",
|
|
77
|
+
[`@checkdigit/${noServeRuntimeRuleId}`]: "error"
|
|
78
|
+
}
|
|
76
79
|
}
|
|
77
|
-
|
|
78
|
-
recommended:
|
|
79
|
-
|
|
80
|
-
"
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
80
|
+
],
|
|
81
|
+
recommended: [
|
|
82
|
+
{
|
|
83
|
+
files: ["**/*.ts"],
|
|
84
|
+
plugins: {
|
|
85
|
+
"@checkdigit": plugin
|
|
86
|
+
},
|
|
87
|
+
rules: {
|
|
88
|
+
"@checkdigit/no-card-numbers": "error",
|
|
89
|
+
"@checkdigit/file-path-comment": "off",
|
|
90
|
+
"@checkdigit/no-random-v4-uuid": "error",
|
|
91
|
+
"@checkdigit/no-uuid": "error",
|
|
92
|
+
"@checkdigit/require-strict-assert": "error",
|
|
93
|
+
"@checkdigit/no-wallaby-comment": "off",
|
|
94
|
+
"@checkdigit/no-side-effects": "error",
|
|
95
|
+
"@checkdigit/regular-expression-comment": "error",
|
|
96
|
+
"@checkdigit/require-assert-predicate-rejects-throws": "error",
|
|
97
|
+
"@checkdigit/object-literal-response": "error",
|
|
98
|
+
"@checkdigit/no-test-import": "error",
|
|
99
|
+
[`@checkdigit/${invalidJsonStringifyRuleId}`]: "error",
|
|
100
|
+
[`@checkdigit/${noPromiseInstanceMethodRuleId}`]: "off",
|
|
101
|
+
[`@checkdigit/${noLegacyServiceTypingRuleId}`]: "off",
|
|
102
|
+
[`@checkdigit/${requireResolveFullResponseRuleId}`]: "off",
|
|
103
|
+
[`@checkdigit/${noDuplicatedImportsRuleId}`]: "error",
|
|
104
|
+
[`@checkdigit/${requireFixedServicesImportRuleId}`]: "off",
|
|
105
|
+
[`@checkdigit/${requireTypeOutOfTypeOnlyImportsRuleId}`]: "error",
|
|
106
|
+
[`@checkdigit/${noServeRuntimeRuleId}`]: "off"
|
|
107
|
+
}
|
|
96
108
|
}
|
|
97
|
-
|
|
109
|
+
]
|
|
98
110
|
};
|
|
99
|
-
var
|
|
111
|
+
var defaultToExport = {
|
|
100
112
|
...plugin,
|
|
101
113
|
configs
|
|
102
114
|
};
|
|
103
|
-
var src_default =
|
|
115
|
+
var src_default = defaultToExport;
|
|
104
116
|
export {
|
|
105
117
|
src_default as default
|
|
106
118
|
};
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,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
|
|
@@ -37,7 +37,7 @@ function isUsedInArrayOrAsArgument(node) {
|
|
|
37
37
|
if (!parent) {
|
|
38
38
|
return false;
|
|
39
39
|
}
|
|
40
|
-
if (parent.type === "ArrayExpression" || parent.type === "CallExpression" && parent.arguments.includes(node)) {
|
|
40
|
+
if (parent.type === "ArrayExpression" || parent.type === "ArrowFunctionExpression" || parent.type === "CallExpression" && parent.arguments.includes(node)) {
|
|
41
41
|
return true;
|
|
42
42
|
}
|
|
43
43
|
return isUsedInArrayOrAsArgument(parent);
|
|
@@ -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,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2xpYnJhcnkvdHJlZS50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFnQk8sU0FBUyxVQUFVLE1BQXFDO0FBQzdELFNBQVEsS0FBd0M7QUFDbEQ7QUFFTyxTQUFTLFlBQ2QsTUFDQSxTQUNBLGFBQ2tCO0FBQ2xCLFFBQU0sU0FBUyxVQUFVLElBQUk7QUFDN0IsTUFBSSxDQUFDLFFBQVE7QUFDWCxXQUFPO0FBQUEsRUFDVCxXQUFXLE9BQU8sWUFBWSxZQUFZLE9BQU8sU0FBUyxTQUFTO0FBQ2pFLFdBQU87QUFBQSxFQUNULFdBQVcsT0FBTyxZQUFZLGNBQWMsUUFBUSxNQUFNLEdBQUc7QUFDM0QsV0FBTztBQUFBLEVBQ1QsV0FBVyxPQUFPLGdCQUFnQixZQUFZLE9BQU8sU0FBUyxhQUFhO0FBQ3pFLFdBQU87QUFBQSxFQUNULFdBQVcsT0FBTyxnQkFBZ0IsY0FBYyxZQUFZLE1BQU0sR0FBRztBQUNuRSxXQUFPO0FBQUEsRUFDVDtBQUNBLFNBQU8sWUFBWSxRQUFRLFNBQVMsV0FBVztBQUNqRDtBQUVPLFNBQVMsaUJBQWlCLE1BQXFCO0FBQ3BELFNBQU8sS0FBSyxLQUFLLFNBQVMsV0FBVyxLQUFLLEtBQUssS0FBSyxTQUFTLGFBQWE7QUFDNUU7QUFFTyxTQUFTLHNCQUFzQixNQUE4QjtBQUNsRSxTQUFPLFlBQVksTUFBTSxnQkFBZ0I7QUFDM0M7QUFFTyxTQUFTLHNCQUFzQixNQUE4QjtBQUNsRSxTQUFPO0FBQUEsSUFBWTtBQUFBLElBQU0sQ0FBQyxlQUN4QixDQUFDLHNCQUFzQix1QkFBdUIsMkJBQTJCLFNBQVMsRUFBRSxTQUFTLFdBQVcsSUFBSTtBQUFBLEVBQzlHO0FBQ0Y7QUFFTyxTQUFTLDBCQUEwQixNQUFxQjtBQUM3RCxNQUFJLGlCQUFpQixJQUFJLEdBQUc7QUFDMUIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLFNBQVMsVUFBVSxJQUFJO0FBQzdCLE1BQUksQ0FBQyxRQUFRO0FBQ1gsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUNFLE9BQU8sU0FBUyxxQkFDaEIsT0FBTyxTQUFTLDZCQUNmLE9BQU8sU0FBUyxvQkFBb0IsT0FBTyxVQUFVLFNBQVMsSUFBa0IsR0FDakY7QUFDQSxXQUFPO0FBQUEsRUFDVDtBQUdBLFNBQU8sMEJBQTBCLE1BQU07QUFDekM7QUFFTyxTQUFTLHFCQUNkLE1BS1k7QUFDWixNQUNFLEtBQUssU0FBUyx5QkFDZCxLQUFLLFNBQVMsd0JBQ2QsS0FBSyxTQUFTLDJCQUNkO0FBQ0EsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLFNBQVMsVUFBVSxJQUFJO0FBQzdCLE1BQUksQ0FBQyxRQUFRO0FBQ1g7QUFBQSxFQUNGO0FBQ0EsU0FBTyxxQkFBcUIsTUFBTTtBQUNwQzsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// src/no-legacy-service-typing.ts
|
|
2
|
+
import { AST_NODE_TYPES, ESLintUtils } from "@typescript-eslint/utils";
|
|
3
|
+
import getDocumentationUrl from "./get-documentation-url.mjs";
|
|
4
|
+
var ruleId = "no-legacy-service-typing";
|
|
5
|
+
var createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
|
|
6
|
+
var DISALLOWED_SERVICE_TYPINGS = ["FullResponse", "Endpoint"];
|
|
7
|
+
var rule = createRule({
|
|
8
|
+
name: ruleId,
|
|
9
|
+
meta: {
|
|
10
|
+
type: "problem",
|
|
11
|
+
docs: {
|
|
12
|
+
description: "Legacy service typings should not be used."
|
|
13
|
+
},
|
|
14
|
+
messages: {
|
|
15
|
+
noLegacyServiceTyping: "Please remove the usage of legacy service typings."
|
|
16
|
+
},
|
|
17
|
+
schema: [{ type: "array", items: { type: "string" } }]
|
|
18
|
+
},
|
|
19
|
+
defaultOptions: [DISALLOWED_SERVICE_TYPINGS],
|
|
20
|
+
create(context) {
|
|
21
|
+
return {
|
|
22
|
+
TSTypeReference: (typeReference) => {
|
|
23
|
+
if (typeReference.typeName.type === AST_NODE_TYPES.Identifier && // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
24
|
+
(context.options[0] ?? DISALLOWED_SERVICE_TYPINGS).includes(typeReference.typeName.name)) {
|
|
25
|
+
context.report({
|
|
26
|
+
messageId: "noLegacyServiceTyping",
|
|
27
|
+
node: typeReference
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
var no_legacy_service_typing_default = rule;
|
|
35
|
+
export {
|
|
36
|
+
no_legacy_service_typing_default as default,
|
|
37
|
+
ruleId
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL25vLWxlZ2FjeS1zZXJ2aWNlLXR5cGluZy50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFRQSxTQUFTLGdCQUFnQixtQkFBNkI7QUFDdEQsT0FBTyx5QkFBeUI7QUFFekIsSUFBTSxTQUFTO0FBRXRCLElBQU0sYUFBYSxZQUFZLFlBQVksQ0FBQyxTQUFTLG9CQUFvQixJQUFJLENBQUM7QUFFOUUsSUFBTSw2QkFBbUQsQ0FBQyxnQkFBZ0IsVUFBVTtBQUVwRixJQUFNLE9BQTZGLFdBQVc7QUFBQSxFQUM1RyxNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsSUFDZjtBQUFBLElBQ0EsVUFBVTtBQUFBLE1BQ1IsdUJBQXVCO0FBQUEsSUFDekI7QUFBQSxJQUNBLFFBQVEsQ0FBQyxFQUFFLE1BQU0sU0FBUyxPQUFPLEVBQUUsTUFBTSxTQUFTLEVBQUUsQ0FBQztBQUFBLEVBQ3ZEO0FBQUEsRUFDQSxnQkFBZ0IsQ0FBQywwQkFBMEI7QUFBQSxFQUMzQyxPQUFPLFNBQVM7QUFDZCxXQUFPO0FBQUEsTUFDTCxpQkFBaUIsQ0FBQyxrQkFBNEM7QUFDNUQsWUFDRSxjQUFjLFNBQVMsU0FBUyxlQUFlO0FBQUEsU0FFOUMsUUFBUSxRQUFRLENBQUMsS0FBSyw0QkFBNEIsU0FBUyxjQUFjLFNBQVMsSUFBSSxHQUN2RjtBQUNBLGtCQUFRLE9BQU87QUFBQSxZQUNiLFdBQVc7QUFBQSxZQUNYLE1BQU07QUFBQSxVQUNSLENBQUM7QUFBQSxRQUNIO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0YsQ0FBQztBQUVELElBQU8sbUNBQVE7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
// src/
|
|
1
|
+
// src/no-serve-runtime.ts
|
|
2
2
|
import { ESLintUtils } from "@typescript-eslint/utils";
|
|
3
|
-
import getDocumentationUrl from "
|
|
3
|
+
import getDocumentationUrl from "./get-documentation-url.mjs";
|
|
4
4
|
var ruleId = "no-serve-runtime";
|
|
5
5
|
var createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
|
|
6
6
|
var rule = createRule({
|
|
@@ -34,4 +34,4 @@ export {
|
|
|
34
34
|
no_serve_runtime_default as default,
|
|
35
35
|
ruleId
|
|
36
36
|
};
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL25vLXNlcnZlLXJ1bnRpbWUudHMiXSwKICAibWFwcGluZ3MiOiAiO0FBUUEsU0FBUyxtQkFBNkI7QUFDdEMsT0FBTyx5QkFBeUI7QUFFekIsSUFBTSxTQUFTO0FBRXRCLElBQU0sYUFBYSxZQUFZLFlBQVksQ0FBQyxTQUFTLG9CQUFvQixJQUFJLENBQUM7QUFFOUUsSUFBTSxPQUFpRCxXQUFXO0FBQUEsRUFDaEUsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLElBQ04sTUFBTTtBQUFBLE1BQ0osYUFBYTtBQUFBLElBQ2Y7QUFBQSxJQUNBLFVBQVU7QUFBQSxNQUNSLGdCQUFnQjtBQUFBLElBQ2xCO0FBQUEsSUFDQSxRQUFRLENBQUM7QUFBQSxFQUNYO0FBQUEsRUFDQSxnQkFBZ0IsQ0FBQztBQUFBLEVBQ2pCLE9BQU8sU0FBUztBQUNkLFdBQU87QUFBQSxNQUNMLG1CQUFtQixDQUFDLHNCQUFrRDtBQUNwRSxZQUFJLGtCQUFrQixPQUFPLFVBQVUsNkJBQTZCO0FBQ2xFLGtCQUFRLE9BQU87QUFBQSxZQUNiLFdBQVc7QUFBQSxZQUNYLE1BQU07QUFBQSxVQUNSLENBQUM7QUFBQSxRQUNIO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0YsQ0FBQztBQUVELElBQU8sMkJBQVE7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -36,10 +36,12 @@ var rule = createRule({
|
|
|
36
36
|
const foundVariable = scope.variables.find((variable) => variable.name === urlArgument.name);
|
|
37
37
|
if (foundVariable) {
|
|
38
38
|
const variableDefinition = foundVariable.defs.find((def) => def.type === DefinitionType.Variable);
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
if (variableDefinition) {
|
|
40
|
+
const variableDefinitionNode = variableDefinition.node;
|
|
41
|
+
assert.ok(variableDefinitionNode.init, "Variable definition node has no init property");
|
|
42
|
+
return isUrlArgumentValid(variableDefinitionNode.init, scope);
|
|
43
|
+
}
|
|
44
|
+
return true;
|
|
43
45
|
}
|
|
44
46
|
}
|
|
45
47
|
return false;
|
|
@@ -116,23 +118,36 @@ var rule = createRule({
|
|
|
116
118
|
assert.ok(serviceCall.callee.property.type === AST_NODE_TYPES.Identifier);
|
|
117
119
|
const method = serviceCall.callee.property.name;
|
|
118
120
|
const optionsArgument = ["get", "head", "del"].includes(method) ? serviceCall.arguments[1] : serviceCall.arguments[2];
|
|
119
|
-
if (optionsArgument === void 0
|
|
121
|
+
if (optionsArgument === void 0) {
|
|
120
122
|
context.report({
|
|
121
123
|
node: serviceCall,
|
|
122
124
|
messageId: "invalidOptions"
|
|
123
125
|
});
|
|
124
126
|
return;
|
|
125
127
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
128
|
+
if (optionsArgument.type === AST_NODE_TYPES.Identifier) {
|
|
129
|
+
const optionsTypeString = getType(optionsArgument);
|
|
130
|
+
if (optionsTypeString === "FullResponseOptions") {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
const variable = parserService.esTreeNodeToTSNodeMap.get(optionsArgument);
|
|
134
|
+
const optionType = typeChecker.getTypeAtLocation(variable);
|
|
135
|
+
const resolveWithFullResponseProperty = optionType.getProperty("resolveWithFullResponse");
|
|
136
|
+
if (resolveWithFullResponseProperty?.declarations?.[0]?.getText() === "resolveWithFullResponse: true") {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
} else if (optionsArgument.type === AST_NODE_TYPES.ObjectExpression) {
|
|
140
|
+
const resolveWithFullResponseProperty = optionsArgument.properties.find(
|
|
141
|
+
(property) => property.type === AST_NODE_TYPES.Property && property.key.type === AST_NODE_TYPES.Identifier && property.key.name === "resolveWithFullResponse"
|
|
142
|
+
);
|
|
143
|
+
if (resolveWithFullResponseProperty?.type === AST_NODE_TYPES.Property && resolveWithFullResponseProperty.value.type === AST_NODE_TYPES.Literal && resolveWithFullResponseProperty.value.value === true) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
135
146
|
}
|
|
147
|
+
context.report({
|
|
148
|
+
node: optionsArgument,
|
|
149
|
+
messageId: "invalidOptions"
|
|
150
|
+
});
|
|
136
151
|
} catch (error) {
|
|
137
152
|
console.error(`Failed to apply ${ruleId} rule for file "${context.filename}":`, error);
|
|
138
153
|
context.report({
|
|
@@ -155,4 +170,4 @@ export {
|
|
|
155
170
|
require_resolve_full_response_default as default,
|
|
156
171
|
ruleId
|
|
157
172
|
};
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlcXVpcmUtcmVzb2x2ZS1mdWxsLXJlc3BvbnNlLnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQVFBLFNBQVMsVUFBVSxjQUFjO0FBQ2pDLFNBQVMsZ0JBQWdCLG1CQUE2QjtBQUN0RCxTQUFTLHNCQUFrQztBQUMzQyxPQUFPLHlCQUF5QjtBQUNoQyxTQUFTLDZCQUE2QjtBQUUvQixJQUFNLFNBQVM7QUFFZixJQUFNLG1CQUEyQjtBQUVqQyxJQUFNLHVCQUErQjtBQUU1QyxJQUFNLGFBQWEsWUFBWSxZQUFZLENBQUMsU0FBUyxvQkFBb0IsSUFBSSxDQUFDO0FBRTlFLElBQU0sT0FBa0UsV0FBVztBQUFBLEVBQ2pGLE1BQU07QUFBQSxFQUNOLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxJQUNOLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxVQUFVO0FBQUEsTUFDUixnQkFDRTtBQUFBLE1BQ0YsY0FBYztBQUFBLElBQ2hCO0FBQUEsSUFDQSxRQUFRLENBQUM7QUFBQSxFQUNYO0FBQUEsRUFDQSxnQkFBZ0IsQ0FBQztBQUFBLEVBQ2pCLE9BQU8sU0FBUztBQUNkLFVBQU0sYUFBYSxRQUFRO0FBQzNCLFVBQU0sZUFBZSxXQUFXO0FBQ2hDLFVBQU0sZ0JBQWdCLFlBQVksa0JBQWtCLE9BQU87QUFDM0QsVUFBTSxjQUFjLGNBQWMsUUFBUSxlQUFlO0FBRXpELGFBQVMsbUJBQW1CLGFBQXdDLE9BQWM7QUFDaEYsVUFDRyxhQUFhLFNBQVMsZUFBZSxXQUFXLE9BQU8sWUFBWSxVQUFVLFlBQzlFLGFBQWEsU0FBUyxlQUFlLGlCQUNyQztBQUNBLGNBQU0sVUFBVSxXQUFXLFFBQVEsV0FBVztBQUM5QyxlQUFPLGlCQUFpQixLQUFLLE9BQU8sS0FBSyxxQkFBcUIsS0FBSyxPQUFPO0FBQUEsTUFDNUU7QUFFQSxVQUFJLGFBQWEsU0FBUyxlQUFlLFlBQVk7QUFDbkQsY0FBTSxnQkFBZ0IsTUFBTSxVQUFVLEtBQUssQ0FB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
|
package/dist-types/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import type { TSESLint } from '@typescript-eslint/utils';
|
|
2
|
-
declare const
|
|
3
|
-
|
|
2
|
+
declare const defaultToExport: Exclude<TSESLint.FlatConfig.Plugin, 'config'> & {
|
|
3
|
+
configs: Record<string, TSESLint.FlatConfig.Config[]>;
|
|
4
|
+
};
|
|
5
|
+
export default defaultToExport;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ESLintUtils } from '@typescript-eslint/utils';
|
|
2
|
+
export declare const ruleId = "no-legacy-service-typing";
|
|
3
|
+
declare const DISALLOWED_SERVICE_TYPINGS: string[] | undefined;
|
|
4
|
+
declare const rule: ESLintUtils.RuleModule<'noLegacyServiceTyping', [typeof DISALLOWED_SERVICE_TYPINGS]>;
|
|
5
|
+
export default rule;
|
package/package.json
CHANGED
|
@@ -1,96 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@checkdigit/eslint-plugin",
|
|
3
|
-
"version": "7.4.1",
|
|
4
|
-
"description": "Check Digit eslint plugins",
|
|
5
|
-
"keywords": [
|
|
6
|
-
"eslint",
|
|
7
|
-
"eslintplugin"
|
|
8
|
-
],
|
|
9
|
-
"homepage": "https://github.com/checkdigit/eslint-plugin#readme",
|
|
10
|
-
"bugs": {
|
|
11
|
-
"url": "https://github.com/checkdigit/eslint-plugin/issues"
|
|
12
|
-
},
|
|
13
|
-
"repository": {
|
|
14
|
-
"type": "git",
|
|
15
|
-
"url": "https://github.com/checkdigit/eslint-plugin"
|
|
16
|
-
},
|
|
17
|
-
"license": "MIT",
|
|
18
|
-
"author": "Check Digit, LLC",
|
|
19
|
-
"sideEffects": false,
|
|
20
|
-
"type": "module",
|
|
21
|
-
"exports": {
|
|
22
|
-
".": {
|
|
23
|
-
"types": "./dist-types/index.d.ts",
|
|
24
|
-
"import": "./dist-mjs/index.mjs",
|
|
25
|
-
"default": "./dist-mjs/index.mjs"
|
|
26
|
-
}
|
|
27
|
-
},
|
|
28
|
-
"files": [
|
|
29
|
-
"src",
|
|
30
|
-
"dist-types",
|
|
31
|
-
"dist-mjs",
|
|
32
|
-
"!src/**/test/**",
|
|
33
|
-
"!src/**/*.test.ts",
|
|
34
|
-
"!src/**/*.spec.ts",
|
|
35
|
-
"!dist-types/**/test/**",
|
|
36
|
-
"!dist-types/**/*.test.d.ts",
|
|
37
|
-
"!dist-types/**/*.spec.d.ts",
|
|
38
|
-
"!dist-mjs/**/test/**",
|
|
39
|
-
"!dist-mjs/**/*.test.mjs",
|
|
40
|
-
"!dist-mjs/**/*.spec.mjs",
|
|
41
|
-
"SECURITY.md"
|
|
42
|
-
],
|
|
43
|
-
"scripts": {
|
|
44
|
-
"build:dist-mjs": "rimraf dist-mjs && npx builder --type=module --sourceMap --outDir=dist-mjs && node dist-mjs/index.mjs",
|
|
45
|
-
"build:dist-types": "rimraf dist-types && npx builder --type=types --outDir=dist-types",
|
|
46
|
-
"ci:compile": "tsc --noEmit",
|
|
47
|
-
"ci:coverage": "NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=true",
|
|
48
|
-
"ci:lint": "npm run lint",
|
|
49
|
-
"ci:style": "npm run prettier",
|
|
50
|
-
"ci:test": "NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=false",
|
|
51
|
-
"lint": "eslint --max-warnings 0 .",
|
|
52
|
-
"lint:fix": "eslint --max-warnings 0 --fix .",
|
|
53
|
-
"prepare": "",
|
|
54
|
-
"prepublishOnly": "npm run build:dist-types && npm run build:dist-mjs",
|
|
55
|
-
"prettier": "prettier --ignore-path .gitignore --list-different .",
|
|
56
|
-
"prettier:fix": "prettier --ignore-path .gitignore --write .",
|
|
57
|
-
"test": "npm run ci:compile && npm run ci:test && npm run ci:lint && npm run ci:style"
|
|
58
|
-
},
|
|
59
|
-
"prettier": "@checkdigit/prettier-config",
|
|
60
|
-
"jest": {
|
|
61
|
-
"preset": "@checkdigit/jest-config"
|
|
62
|
-
},
|
|
63
|
-
"dependencies": {
|
|
64
|
-
"@typescript-eslint/type-utils": "^8.15.0",
|
|
65
|
-
"@typescript-eslint/utils": "^8.15.0",
|
|
66
|
-
"ts-api-utils": "^1.4.0"
|
|
67
|
-
},
|
|
68
|
-
"devDependencies": {
|
|
69
|
-
"@checkdigit/jest-config": "^6.0.2",
|
|
70
|
-
"@checkdigit/prettier-config": "^5.5.1",
|
|
71
|
-
"@checkdigit/typescript-config": "^8.0.0",
|
|
72
|
-
"@eslint/js": "^9.15.0",
|
|
73
|
-
"@types/eslint": "^9.6.1",
|
|
74
|
-
"@types/eslint-config-prettier": "^6.11.3",
|
|
75
|
-
"@typescript-eslint/parser": "^8.15.0",
|
|
76
|
-
"@typescript-eslint/rule-tester": "^8.15.0",
|
|
77
|
-
"eslint": "^9.15.0",
|
|
78
|
-
"eslint-config-prettier": "^9.1.0",
|
|
79
|
-
"eslint-import-resolver-typescript": "^3.6.3",
|
|
80
|
-
"eslint-plugin-eslint-plugin": "^6.3.2",
|
|
81
|
-
"eslint-plugin-import": "^2.31.0",
|
|
82
|
-
"eslint-plugin-no-only-tests": "^3.3.0",
|
|
83
|
-
"eslint-plugin-no-secrets": "^1.1.2",
|
|
84
|
-
"eslint-plugin-node": "^11.1.0",
|
|
85
|
-
"eslint-plugin-sonarjs": "1.0.4",
|
|
86
|
-
"http-status-codes": "^2.3.0",
|
|
87
|
-
"rimraf": "^6.0.1",
|
|
88
|
-
"typescript-eslint": "^8.15.0"
|
|
89
|
-
},
|
|
90
|
-
"peerDependencies": {
|
|
91
|
-
"eslint": ">=9 <10"
|
|
92
|
-
},
|
|
93
|
-
"engines": {
|
|
94
|
-
"node": ">=20.17"
|
|
95
|
-
}
|
|
96
|
-
}
|
|
1
|
+
{"name":"@checkdigit/eslint-plugin","version":"7.5.0-PR.93-6f1c","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.15.0","@typescript-eslint/utils":"^8.15.0","debug":"^4.3.7","ts-api-utils":"^1.4.0"},"devDependencies":{"@checkdigit/jest-config":"^6.0.2","@checkdigit/prettier-config":"^5.5.1","@checkdigit/typescript-config":"^8.0.0","@eslint/js":"^9.15.0","@types/debug":"^4.1.12","@types/eslint":"^9.6.1","@types/eslint-config-prettier":"^6.11.3","@typescript-eslint/parser":"^8.15.0","@typescript-eslint/rule-tester":"^8.15.0","eslint":"^9.15.0","eslint-config-prettier":"^9.1.0","eslint-import-resolver-typescript":"^3.6.3","eslint-plugin-eslint-plugin":"^6.3.2","eslint-plugin-import":"^2.31.0","eslint-plugin-no-only-tests":"^3.3.0","eslint-plugin-no-secrets":"^1.1.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.15.0"},"peerDependencies":{"eslint":">=9 <10"},"engines":{"node":">=20.17"}}
|
package/src/index.ts
CHANGED
|
@@ -10,7 +10,7 @@ import type { TSESLint } from '@typescript-eslint/utils';
|
|
|
10
10
|
|
|
11
11
|
import invalidJsonStringify, { ruleId as invalidJsonStringifyRuleId } from './invalid-json-stringify';
|
|
12
12
|
import noDuplicatedImports, { ruleId as noDuplicatedImportsRuleId } from './no-duplicated-imports';
|
|
13
|
-
import
|
|
13
|
+
import noLegacyServiceTyping, { ruleId as noLegacyServiceTypingRuleId } from './no-legacy-service-typing';
|
|
14
14
|
import noPromiseInstanceMethod, { ruleId as noPromiseInstanceMethodRuleId } from './no-promise-instance-method';
|
|
15
15
|
import requireFixedServicesImport, {
|
|
16
16
|
ruleId as requireFixedServicesImportRuleId,
|
|
@@ -21,7 +21,7 @@ import requireResolveFullResponse, {
|
|
|
21
21
|
import requireTypeOutOfTypeOnlyImports, {
|
|
22
22
|
ruleId as requireTypeOutOfTypeOnlyImportsRuleId,
|
|
23
23
|
} from './require-type-out-of-type-only-imports';
|
|
24
|
-
import noServeRuntime, { ruleId as noServeRuntimeRuleId } from './
|
|
24
|
+
import noServeRuntime, { ruleId as noServeRuntimeRuleId } from './no-serve-runtime';
|
|
25
25
|
import filePathComment from './file-path-comment';
|
|
26
26
|
import noCardNumbers from './no-card-numbers';
|
|
27
27
|
import noSideEffects from './no-side-effects';
|
|
@@ -48,69 +48,83 @@ const rules: Record<string, TSESLint.LooseRuleDefinition> = {
|
|
|
48
48
|
'object-literal-response': objectLiteralResponse,
|
|
49
49
|
[invalidJsonStringifyRuleId]: invalidJsonStringify,
|
|
50
50
|
[noPromiseInstanceMethodRuleId]: noPromiseInstanceMethod,
|
|
51
|
-
[
|
|
51
|
+
[noLegacyServiceTypingRuleId]: noLegacyServiceTyping,
|
|
52
52
|
[requireResolveFullResponseRuleId]: requireResolveFullResponse,
|
|
53
|
-
[requireTypeOutOfTypeOnlyImportsRuleId]: requireTypeOutOfTypeOnlyImports,
|
|
54
53
|
[noDuplicatedImportsRuleId]: noDuplicatedImports,
|
|
55
|
-
[requireFixedServicesImportRuleId]: requireFixedServicesImport,
|
|
56
54
|
[noServeRuntimeRuleId]: noServeRuntime,
|
|
55
|
+
[requireFixedServicesImportRuleId]: requireFixedServicesImport,
|
|
56
|
+
[requireTypeOutOfTypeOnlyImportsRuleId]: requireTypeOutOfTypeOnlyImports,
|
|
57
57
|
};
|
|
58
58
|
|
|
59
59
|
const plugin: TSESLint.FlatConfig.Plugin = {
|
|
60
60
|
rules,
|
|
61
61
|
};
|
|
62
62
|
|
|
63
|
-
const configs: Record<string, TSESLint.FlatConfig.Config> = {
|
|
64
|
-
all:
|
|
65
|
-
|
|
66
|
-
'
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
plugins: {
|
|
92
|
-
'@checkdigit': plugin,
|
|
63
|
+
const configs: Record<string, TSESLint.FlatConfig.Config[]> = {
|
|
64
|
+
all: [
|
|
65
|
+
{
|
|
66
|
+
files: ['**/*.ts'],
|
|
67
|
+
plugins: {
|
|
68
|
+
'@checkdigit': plugin,
|
|
69
|
+
},
|
|
70
|
+
rules: {
|
|
71
|
+
'@checkdigit/no-card-numbers': 'error',
|
|
72
|
+
'@checkdigit/file-path-comment': 'error',
|
|
73
|
+
'@checkdigit/no-random-v4-uuid': 'error',
|
|
74
|
+
'@checkdigit/no-uuid': 'error',
|
|
75
|
+
'@checkdigit/require-strict-assert': 'error',
|
|
76
|
+
'@checkdigit/no-wallaby-comment': 'error',
|
|
77
|
+
'@checkdigit/no-side-effects': ['error', { excludedIdentifiers: ['assert', 'debug', 'log', 'promisify'] }],
|
|
78
|
+
'@checkdigit/regular-expression-comment': 'error',
|
|
79
|
+
'@checkdigit/require-assert-predicate-rejects-throws': 'error',
|
|
80
|
+
'@checkdigit/object-literal-response': 'error',
|
|
81
|
+
'@checkdigit/no-test-import': 'error',
|
|
82
|
+
[`@checkdigit/${invalidJsonStringifyRuleId}`]: 'error',
|
|
83
|
+
[`@checkdigit/${noPromiseInstanceMethodRuleId}`]: 'error',
|
|
84
|
+
[`@checkdigit/${noLegacyServiceTypingRuleId}`]: 'error',
|
|
85
|
+
[`@checkdigit/${requireResolveFullResponseRuleId}`]: 'error',
|
|
86
|
+
[`@checkdigit/${noDuplicatedImportsRuleId}`]: 'error',
|
|
87
|
+
[`@checkdigit/${requireFixedServicesImportRuleId}`]: 'error',
|
|
88
|
+
[`@checkdigit/${requireTypeOutOfTypeOnlyImportsRuleId}`]: 'error',
|
|
89
|
+
[`@checkdigit/${noServeRuntimeRuleId}`]: 'error',
|
|
90
|
+
},
|
|
93
91
|
},
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
92
|
+
],
|
|
93
|
+
recommended: [
|
|
94
|
+
{
|
|
95
|
+
files: ['**/*.ts'],
|
|
96
|
+
plugins: {
|
|
97
|
+
'@checkdigit': plugin,
|
|
98
|
+
},
|
|
99
|
+
rules: {
|
|
100
|
+
'@checkdigit/no-card-numbers': 'error',
|
|
101
|
+
'@checkdigit/file-path-comment': 'off',
|
|
102
|
+
'@checkdigit/no-random-v4-uuid': 'error',
|
|
103
|
+
'@checkdigit/no-uuid': 'error',
|
|
104
|
+
'@checkdigit/require-strict-assert': 'error',
|
|
105
|
+
'@checkdigit/no-wallaby-comment': 'off',
|
|
106
|
+
'@checkdigit/no-side-effects': 'error',
|
|
107
|
+
'@checkdigit/regular-expression-comment': 'error',
|
|
108
|
+
'@checkdigit/require-assert-predicate-rejects-throws': 'error',
|
|
109
|
+
'@checkdigit/object-literal-response': 'error',
|
|
110
|
+
'@checkdigit/no-test-import': 'error',
|
|
111
|
+
[`@checkdigit/${invalidJsonStringifyRuleId}`]: 'error',
|
|
112
|
+
[`@checkdigit/${noPromiseInstanceMethodRuleId}`]: 'off',
|
|
113
|
+
[`@checkdigit/${noLegacyServiceTypingRuleId}`]: 'off',
|
|
114
|
+
[`@checkdigit/${requireResolveFullResponseRuleId}`]: 'off',
|
|
115
|
+
[`@checkdigit/${noDuplicatedImportsRuleId}`]: 'error',
|
|
116
|
+
[`@checkdigit/${requireFixedServicesImportRuleId}`]: 'off',
|
|
117
|
+
[`@checkdigit/${requireTypeOutOfTypeOnlyImportsRuleId}`]: 'error',
|
|
118
|
+
[`@checkdigit/${noServeRuntimeRuleId}`]: 'off',
|
|
119
|
+
},
|
|
108
120
|
},
|
|
109
|
-
|
|
121
|
+
],
|
|
110
122
|
};
|
|
111
123
|
|
|
112
|
-
const
|
|
124
|
+
const defaultToExport: Exclude<TSESLint.FlatConfig.Plugin, 'config'> & {
|
|
125
|
+
configs: Record<string, TSESLint.FlatConfig.Config[]>;
|
|
126
|
+
} = {
|
|
113
127
|
...plugin,
|
|
114
128
|
configs,
|
|
115
129
|
};
|
|
116
|
-
export default
|
|
130
|
+
export default defaultToExport;
|
package/src/library/tree.ts
CHANGED
|
@@ -64,6 +64,7 @@ export function isUsedInArrayOrAsArgument(node: Node): boolean {
|
|
|
64
64
|
|
|
65
65
|
if (
|
|
66
66
|
parent.type === 'ArrayExpression' ||
|
|
67
|
+
parent.type === 'ArrowFunctionExpression' ||
|
|
67
68
|
(parent.type === 'CallExpression' && parent.arguments.includes(node as Expression))
|
|
68
69
|
) {
|
|
69
70
|
return true;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// no-legacy-service-typing.ts
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* Copyright (c) 2021-2024 Check Digit, LLC
|
|
5
|
+
*
|
|
6
|
+
* This code is licensed under the MIT license (see LICENSE.txt for details).
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { AST_NODE_TYPES, ESLintUtils, TSESTree } from '@typescript-eslint/utils';
|
|
10
|
+
import getDocumentationUrl from './get-documentation-url';
|
|
11
|
+
|
|
12
|
+
export const ruleId = 'no-legacy-service-typing';
|
|
13
|
+
|
|
14
|
+
const createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
|
|
15
|
+
|
|
16
|
+
const DISALLOWED_SERVICE_TYPINGS: string[] | undefined = ['FullResponse', 'Endpoint'];
|
|
17
|
+
|
|
18
|
+
const rule: ESLintUtils.RuleModule<'noLegacyServiceTyping', [typeof DISALLOWED_SERVICE_TYPINGS]> = createRule({
|
|
19
|
+
name: ruleId,
|
|
20
|
+
meta: {
|
|
21
|
+
type: 'problem',
|
|
22
|
+
docs: {
|
|
23
|
+
description: 'Legacy service typings should not be used.',
|
|
24
|
+
},
|
|
25
|
+
messages: {
|
|
26
|
+
noLegacyServiceTyping: 'Please remove the usage of legacy service typings.',
|
|
27
|
+
},
|
|
28
|
+
schema: [{ type: 'array', items: { type: 'string' } }],
|
|
29
|
+
},
|
|
30
|
+
defaultOptions: [DISALLOWED_SERVICE_TYPINGS],
|
|
31
|
+
create(context) {
|
|
32
|
+
return {
|
|
33
|
+
TSTypeReference: (typeReference: TSESTree.TSTypeReference) => {
|
|
34
|
+
if (
|
|
35
|
+
typeReference.typeName.type === AST_NODE_TYPES.Identifier &&
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
37
|
+
(context.options[0] ?? DISALLOWED_SERVICE_TYPINGS).includes(typeReference.typeName.name)
|
|
38
|
+
) {
|
|
39
|
+
context.report({
|
|
40
|
+
messageId: 'noLegacyServiceTyping',
|
|
41
|
+
node: typeReference,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
export default rule;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//
|
|
1
|
+
// no-serve-runtime.ts
|
|
2
2
|
|
|
3
3
|
/*
|
|
4
4
|
* Copyright (c) 2021-2024 Check Digit, LLC
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
import { ESLintUtils, TSESTree } from '@typescript-eslint/utils';
|
|
10
|
-
import getDocumentationUrl from '
|
|
10
|
+
import getDocumentationUrl from './get-documentation-url';
|
|
11
11
|
|
|
12
12
|
export const ruleId = 'no-serve-runtime';
|
|
13
13
|
|
|
@@ -54,10 +54,12 @@ const rule: ESLintUtils.RuleModule<'invalidOptions' | 'unknownError'> = createRu
|
|
|
54
54
|
const foundVariable = scope.variables.find((variable) => variable.name === urlArgument.name);
|
|
55
55
|
if (foundVariable) {
|
|
56
56
|
const variableDefinition = foundVariable.defs.find((def) => def.type === DefinitionType.Variable);
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
57
|
+
if (variableDefinition) {
|
|
58
|
+
const variableDefinitionNode = variableDefinition.node;
|
|
59
|
+
assert.ok(variableDefinitionNode.init, 'Variable definition node has no init property');
|
|
60
|
+
return isUrlArgumentValid(variableDefinitionNode.init, scope);
|
|
61
|
+
}
|
|
62
|
+
return true;
|
|
61
63
|
}
|
|
62
64
|
}
|
|
63
65
|
|
|
@@ -156,7 +158,7 @@ const rule: ESLintUtils.RuleModule<'invalidOptions' | 'unknownError'> = createRu
|
|
|
156
158
|
const optionsArgument = ['get', 'head', 'del'].includes(method)
|
|
157
159
|
? serviceCall.arguments[1]
|
|
158
160
|
: serviceCall.arguments[2];
|
|
159
|
-
if (optionsArgument === undefined
|
|
161
|
+
if (optionsArgument === undefined) {
|
|
160
162
|
context.report({
|
|
161
163
|
node: serviceCall,
|
|
162
164
|
messageId: 'invalidOptions',
|
|
@@ -164,23 +166,36 @@ const rule: ESLintUtils.RuleModule<'invalidOptions' | 'unknownError'> = createRu
|
|
|
164
166
|
return;
|
|
165
167
|
}
|
|
166
168
|
|
|
167
|
-
|
|
168
|
-
(
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
resolveWithFullResponseProperty
|
|
175
|
-
resolveWithFullResponseProperty
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
169
|
+
if (optionsArgument.type === AST_NODE_TYPES.Identifier) {
|
|
170
|
+
const optionsTypeString = getType(optionsArgument);
|
|
171
|
+
if (optionsTypeString === 'FullResponseOptions') {
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
const variable = parserService.esTreeNodeToTSNodeMap.get(optionsArgument);
|
|
175
|
+
const optionType = typeChecker.getTypeAtLocation(variable);
|
|
176
|
+
const resolveWithFullResponseProperty = optionType.getProperty('resolveWithFullResponse');
|
|
177
|
+
if (resolveWithFullResponseProperty?.declarations?.[0]?.getText() === 'resolveWithFullResponse: true') {
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
} else if (optionsArgument.type === AST_NODE_TYPES.ObjectExpression) {
|
|
181
|
+
const resolveWithFullResponseProperty = optionsArgument.properties.find(
|
|
182
|
+
(property) =>
|
|
183
|
+
property.type === AST_NODE_TYPES.Property &&
|
|
184
|
+
property.key.type === AST_NODE_TYPES.Identifier &&
|
|
185
|
+
property.key.name === 'resolveWithFullResponse',
|
|
186
|
+
);
|
|
187
|
+
if (
|
|
188
|
+
resolveWithFullResponseProperty?.type === AST_NODE_TYPES.Property &&
|
|
189
|
+
resolveWithFullResponseProperty.value.type === AST_NODE_TYPES.Literal &&
|
|
190
|
+
resolveWithFullResponseProperty.value.value === true
|
|
191
|
+
) {
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
183
194
|
}
|
|
195
|
+
context.report({
|
|
196
|
+
node: optionsArgument,
|
|
197
|
+
messageId: 'invalidOptions',
|
|
198
|
+
});
|
|
184
199
|
} catch (error) {
|
|
185
200
|
// eslint-disable-next-line no-console
|
|
186
201
|
console.error(`Failed to apply ${ruleId} rule for file "${context.filename}":`, error);
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
// src/agent/no-full-response.ts
|
|
2
|
-
import { ESLintUtils } from "@typescript-eslint/utils";
|
|
3
|
-
import getDocumentationUrl from "../get-documentation-url.mjs";
|
|
4
|
-
var ruleId = "no-full-response";
|
|
5
|
-
var createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
|
|
6
|
-
var rule = createRule({
|
|
7
|
-
name: ruleId,
|
|
8
|
-
meta: {
|
|
9
|
-
type: "suggestion",
|
|
10
|
-
docs: {
|
|
11
|
-
description: "FullResponse type should not be used."
|
|
12
|
-
},
|
|
13
|
-
messages: {
|
|
14
|
-
noFullResponse: "Please remove the usage of FullResponse type."
|
|
15
|
-
},
|
|
16
|
-
schema: []
|
|
17
|
-
},
|
|
18
|
-
defaultOptions: [],
|
|
19
|
-
create(context) {
|
|
20
|
-
return {
|
|
21
|
-
'TSTypeReference[typeName.name="FullResponse"]': (typeReference) => {
|
|
22
|
-
context.report({
|
|
23
|
-
messageId: "noFullResponse",
|
|
24
|
-
node: typeReference
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
var no_full_response_default = rule;
|
|
31
|
-
export {
|
|
32
|
-
no_full_response_default as default,
|
|
33
|
-
ruleId
|
|
34
|
-
};
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L25vLWZ1bGwtcmVzcG9uc2UudHMiXSwKICAibWFwcGluZ3MiOiAiO0FBUUEsU0FBUyxtQkFBNkI7QUFDdEMsT0FBTyx5QkFBeUI7QUFFekIsSUFBTSxTQUFTO0FBRXRCLElBQU0sYUFBYSxZQUFZLFlBQVksQ0FBQyxTQUFTLG9CQUFvQixJQUFJLENBQUM7QUFFOUUsSUFBTSxPQUFpRCxXQUFXO0FBQUEsRUFDaEUsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLElBQ04sTUFBTTtBQUFBLE1BQ0osYUFBYTtBQUFBLElBQ2Y7QUFBQSxJQUNBLFVBQVU7QUFBQSxNQUNSLGdCQUFnQjtBQUFBLElBQ2xCO0FBQUEsSUFDQSxRQUFRLENBQUM7QUFBQSxFQUNYO0FBQUEsRUFDQSxnQkFBZ0IsQ0FBQztBQUFBLEVBQ2pCLE9BQU8sU0FBUztBQUNkLFdBQU87QUFBQSxNQUNMLGlEQUFpRCxDQUFDLGtCQUE0QztBQUM1RixnQkFBUSxPQUFPO0FBQUEsVUFDYixXQUFXO0FBQUEsVUFDWCxNQUFNO0FBQUEsUUFDUixDQUFDO0FBQUEsTUFDSDtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0YsQ0FBQztBQUVELElBQU8sMkJBQVE7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
// agent/no-full-response.ts
|
|
2
|
-
|
|
3
|
-
/*
|
|
4
|
-
* Copyright (c) 2021-2024 Check Digit, LLC
|
|
5
|
-
*
|
|
6
|
-
* This code is licensed under the MIT license (see LICENSE.txt for details).
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import { ESLintUtils, TSESTree } from '@typescript-eslint/utils';
|
|
10
|
-
import getDocumentationUrl from '../get-documentation-url';
|
|
11
|
-
|
|
12
|
-
export const ruleId = 'no-full-response';
|
|
13
|
-
|
|
14
|
-
const createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
|
|
15
|
-
|
|
16
|
-
const rule: ESLintUtils.RuleModule<'noFullResponse'> = createRule({
|
|
17
|
-
name: ruleId,
|
|
18
|
-
meta: {
|
|
19
|
-
type: 'suggestion',
|
|
20
|
-
docs: {
|
|
21
|
-
description: 'FullResponse type should not be used.',
|
|
22
|
-
},
|
|
23
|
-
messages: {
|
|
24
|
-
noFullResponse: 'Please remove the usage of FullResponse type.',
|
|
25
|
-
},
|
|
26
|
-
schema: [],
|
|
27
|
-
},
|
|
28
|
-
defaultOptions: [],
|
|
29
|
-
create(context) {
|
|
30
|
-
return {
|
|
31
|
-
'TSTypeReference[typeName.name="FullResponse"]': (typeReference: TSESTree.TSTypeReference) => {
|
|
32
|
-
context.report({
|
|
33
|
-
messageId: 'noFullResponse',
|
|
34
|
-
node: typeReference,
|
|
35
|
-
});
|
|
36
|
-
},
|
|
37
|
-
};
|
|
38
|
-
},
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
export default rule;
|
|
File without changes
|