@checkdigit/eslint-plugin 7.3.0-PR.75-dffd → 7.3.0-PR.75-1901
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/dist-mjs/agent/add-assert-import.mjs +58 -0
- package/dist-mjs/agent/fix-function-call-arguments.mjs +2 -3
- package/dist-mjs/agent/no-service-wrapper.mjs +3 -3
- package/dist-mjs/agent/url.mjs +10 -4
- package/dist-mjs/index.mjs +9 -4
- package/dist-types/agent/add-assert-import.d.ts +4 -0
- package/dist-types/agent/url.d.ts +1 -2
- package/package.json +1 -1
- package/src/agent/add-assert-import.ts +74 -0
- package/src/agent/fix-function-call-arguments.ts +4 -2
- package/src/agent/no-service-wrapper.ts +2 -2
- package/src/agent/url.ts +11 -4
- package/src/index.ts +5 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// src/agent/add-assert-import.ts
|
|
2
|
+
import { strict as assert } from "node:assert";
|
|
3
|
+
import { AST_NODE_TYPES, ESLintUtils } from "@typescript-eslint/utils";
|
|
4
|
+
import getDocumentationUrl from "../get-documentation-url.mjs";
|
|
5
|
+
var ruleId = "add-assert-import";
|
|
6
|
+
var ASSERT_IMPORT_STATEMENT = "import { strict as assert } from 'node:assert';";
|
|
7
|
+
var createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
|
|
8
|
+
var rule = createRule({
|
|
9
|
+
name: ruleId,
|
|
10
|
+
meta: {
|
|
11
|
+
type: "suggestion",
|
|
12
|
+
docs: {
|
|
13
|
+
description: "Add import of assert module of node."
|
|
14
|
+
},
|
|
15
|
+
messages: {
|
|
16
|
+
addAssertImport: "Add import of assert module of node."
|
|
17
|
+
},
|
|
18
|
+
fixable: "code",
|
|
19
|
+
schema: []
|
|
20
|
+
},
|
|
21
|
+
defaultOptions: [],
|
|
22
|
+
create(context) {
|
|
23
|
+
let isAssertImported = false;
|
|
24
|
+
let isAssertUsed = false;
|
|
25
|
+
return {
|
|
26
|
+
ImportDeclaration: (node) => {
|
|
27
|
+
if (node.source.value === "assert" || node.source.value === "node:assert") {
|
|
28
|
+
isAssertImported = true;
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
CallExpression: (callExpression) => {
|
|
32
|
+
if (callExpression.callee.type === AST_NODE_TYPES.Identifier && callExpression.callee.name === "assert" || callExpression.callee.type === AST_NODE_TYPES.MemberExpression && callExpression.callee.object.type === AST_NODE_TYPES.Identifier && callExpression.callee.object.name === "assert") {
|
|
33
|
+
isAssertUsed = true;
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"Program:exit": (program) => {
|
|
37
|
+
if (isAssertUsed && !isAssertImported) {
|
|
38
|
+
const firstStatement = program.body[0];
|
|
39
|
+
assert(firstStatement);
|
|
40
|
+
context.report({
|
|
41
|
+
node: program,
|
|
42
|
+
messageId: "addAssertImport",
|
|
43
|
+
fix(fixer) {
|
|
44
|
+
return fixer.insertTextBefore(firstStatement, `${ASSERT_IMPORT_STATEMENT}
|
|
45
|
+
`);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
var add_assert_import_default = rule;
|
|
54
|
+
export {
|
|
55
|
+
add_assert_import_default as default,
|
|
56
|
+
ruleId
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L2FkZC1hc3NlcnQtaW1wb3J0LnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQVFBLFNBQVMsVUFBVSxjQUFjO0FBRWpDLFNBQVMsZ0JBQWdCLG1CQUFtQjtBQUU1QyxPQUFPLHlCQUF5QjtBQUV6QixJQUFNLFNBQVM7QUFFdEIsSUFBTSwwQkFBMEI7QUFFaEMsSUFBTSxhQUFhLFlBQVksWUFBWSxDQUFDLFNBQVMsb0JBQW9CLElBQUksQ0FBQztBQUU5RSxJQUFNLE9BQWtELFdBQVc7QUFBQSxFQUNqRSxNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsSUFDZjtBQUFBLElBQ0EsVUFBVTtBQUFBLE1BQ1IsaUJBQWlCO0FBQUEsSUFDbkI7QUFBQSxJQUNBLFNBQVM7QUFBQSxJQUNULFFBQVEsQ0FBQztBQUFBLEVBQ1g7QUFBQSxFQUNBLGdCQUFnQixDQUFDO0FBQUEsRUFDakIsT0FBTyxTQUFTO0FBQ2QsUUFBSSxtQkFBbUI7QUFDdkIsUUFBSSxlQUFlO0FBRW5CLFdBQU87QUFBQSxNQUNMLG1CQUFtQixDQUFDLFNBQVM7QUFDM0IsWUFBSSxLQUFLLE9BQU8sVUFBVSxZQUFZLEtBQUssT0FBTyxVQUFVLGVBQWU7QUFDekUsNkJBQW1CO0FBQUEsUUFDckI7QUFBQSxNQUNGO0FBQUEsTUFDQSxnQkFBZ0IsQ0FBQyxtQkFBbUI7QUFFbEMsWUFDRyxlQUFlLE9BQU8sU0FBUyxlQUFlLGNBQWMsZUFBZSxPQUFPLFNBQVMsWUFDM0YsZUFBZSxPQUFPLFNBQVMsZUFBZSxvQkFDN0MsZUFBZSxPQUFPLE9BQU8sU0FBUyxlQUFlLGNBQ3JELGVBQWUsT0FBTyxPQUFPLFNBQVMsVUFDeEM7QUFDQSx5QkFBZTtBQUFBLFFBQ2pCO0FBQUEsTUFDRjtBQUFBLE1BQ0EsZ0JBQWdCLENBQUMsWUFBWTtBQUUzQixZQUFJLGdCQUFnQixDQUFDLGtCQUFrQjtBQUNyQyxnQkFBTSxpQkFBaUIsUUFBUSxLQUFLLENBQUM7QUFDckMsaUJBQU8sY0FBYztBQUNyQixrQkFBUSxPQUFPO0FBQUEsWUFDYixNQUFNO0FBQUEsWUFDTixXQUFXO0FBQUEsWUFDWCxJQUFJLE9BQU87QUFDVCxxQkFBTyxNQUFNLGlCQUFpQixnQkFBZ0IsR0FBRyx1QkFBdUI7QUFBQSxDQUFJO0FBQUEsWUFDOUU7QUFBQSxVQUNGLENBQUM7QUFBQSxRQUNIO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0YsQ0FBQztBQUVELElBQU8sNEJBQVE7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -60,8 +60,7 @@ var rule = createRule({
|
|
|
60
60
|
return;
|
|
61
61
|
}
|
|
62
62
|
const signature = signatures[0];
|
|
63
|
-
|
|
64
|
-
if (signature.typeParameters !== void 0 && signature.typeParameters.length > 0) {
|
|
63
|
+
if (signature === void 0 || signature.typeParameters !== void 0 && signature.typeParameters.length > 0) {
|
|
65
64
|
return;
|
|
66
65
|
}
|
|
67
66
|
log("signature:", signature.getDeclaration().getText());
|
|
@@ -148,4 +147,4 @@ export {
|
|
|
148
147
|
fix_function_call_arguments_default as default,
|
|
149
148
|
ruleId
|
|
150
149
|
};
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L2ZpeC1mdW5jdGlvbi1jYWxsLWFyZ3VtZW50cy50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFRQSxTQUFTLFVBQVUsY0FBYztBQUNqQyxTQUFTLG1CQUE2QjtBQUN0QyxPQUFPLFdBQVc7QUFDbEIsT0FBTyx5QkFBeUI7QUFFekIsSUFBTSxTQUFTO0FBS3RCLElBQU0sa0JBQWtCO0FBQUEsRUFDdEIsY0FBYztBQUFBLElBQ1o7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGO0FBQ0Y7QUFFQSxJQUFNLGFBQWEsWUFBWSxZQUFZLENBQUMsU0FBUyxvQkFBb0IsSUFBSSxDQUFDO0FBQzlFLElBQU0sTUFBTSxNQUFNLDJDQUEyQztBQUU3RCxJQUFNLE9BR0YsV0FBVztBQUFBLEVBQ2IsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLElBQ04sTUFBTTtBQUFBLE1BQ0osYUFBYTtBQUFBLElBQ2Y7QUFBQSxJQUNBLFVBQVU7QUFBQSxNQUNSLHFDQUFxQztBQUFBLE1BQ3JDLGNBQWM7QUFBQSxJQUNoQjtBQUFBLElBQ0EsU0FBUztBQUFBLElBQ1QsUUFBUTtBQUFBLE1BQ047QUFBQSxRQUNFLE1BQU07QUFBQSxRQUNOLFlBQVk7QUFBQSxVQUNWLGNBQWM7QUFBQSxZQUNaLGFBQWE7QUFBQSxZQUNiLE1BQU07QUFBQSxZQUNOLE9BQU87QUFBQSxjQUNMLE1BQU07QUFBQSxZQUNSO0FBQUEsVUFDRjtBQUFBLFFBQ0Y7QUFBQSxRQUNBLHNCQUFzQjtBQUFBLE1BQ3hCO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFBQSxFQUNBLGdCQUFnQixDQUFDLGVBQWU7QUFBQSxFQUNoQyxPQUFPLFNBQVM7QUFFZCxVQUFNLEVBQUUsYUFBYSxJQUFJLFFBQVEsUUFBUSxDQUFDLEtBQUs7QUFDL0MsVUFBTSxpQkFBaUIsWUFBWSxrQkFBa0IsT0FBTztBQUM1RCxVQUFNLGNBQWMsZUFBZSxRQUFRLGVBQWU7QUFDMUQsVUFBTSxhQUFhLFFBQVE7QUFFM0IsV0FBTztBQUFBLE1BQ0wsZUFBZSxnQkFBZ0I7QUFPN0IsWUFBSSxvQkFBb0IsUUFBUSxRQUFRO0FBQ3hDLFlBQUksbUJBQW1CLFdBQVcsUUFBUSxjQUFjLENBQUM7QUFDekQsWUFBSTtBQUNGLGdCQUFNLGVBQWUsZUFBZSxzQkFBc0IsSUFBSSxlQUFlLE1BQU07QUFDbkYsZ0JBQU0sYUFBYSxZQUFZLGtCQUFrQixZQUFZO0FBRTdELGdCQUFNLGFBQWEsV0FBVyxrQkFBa0I7QUFDaEQsY0FBSSxXQUFXLFNBQVMsR0FBRztBQUV6QjtBQUFBLFVBQ0Y7QUFFQSxnQkFBTSxZQUFZLFdBQVcsQ0FBQztBQUM5QixjQUNFLGNBQWMsVUFDYixVQUFVLG1CQUFtQixVQUFhLFVBQVUsZUFBZSxTQUFTLEdBQzdFO0FBRUE7QUFBQSxVQUNGO0FBRUEsY0FBSSxjQUFjLFVBQVUsZUFBZSxFQUFFLFFBQVEsQ0FBQztBQUN0RCxnQkFBTSxxQkFBcUIsVUFBVSxjQUFjO0FBQ25EO0FBQUEsWUFDRTtBQUFBLFlBQ0EsbUJBQW1CO0FBQUEsY0FBSSxDQUFDLHNCQUN0QixZQUFZLGFBQWEsWUFBWSxnQkFBZ0IsaUJBQWlCLENBQUM7QUFBQSxZQUN6RTtBQUFBLFVBQ0Y7QUFDQSxnQkFBTSwwQkFBMEIsbUJBQW1CO0FBQ25ELGdCQUFNLG1CQUFtQixlQUFlO0FBQ3hDLGdCQUFNLHdCQUF3QixpQkFBaUI7QUFDL0MsY0FBSSwwQkFBMEIsR0FBRztBQUMvQjtBQUFBLFVBQ0Y7QUFFQSxnQkFBTSxtQkFBc0QsQ0FBQztBQUM3RCxjQUFJLHlCQUF5QjtBQUM3QixxQkFBVyxDQUFDLHNCQUFzQixlQUFlLEtBQUssaUJBQWlCLFFBQVEsR0FBRztBQUNoRixnQkFBSSwwQkFBMEIseUJBQXlCO0FBQ3JEO0FBQUEsWUFDRjtBQUVBLGtCQUFNLG9CQUFvQixtQkFBbUIsc0JBQXNCO0FBQ25FLG1CQUFPLEdBQUcsbUJBQW1CLCtCQUErQjtBQUU1RCxrQkFBTSxlQUFlLFlBQVksZ0JBQWdCLGlCQUFpQjtBQUNsRSxrQkFBTSxhQUFhLFlBQVksa0JBQWtCLGVBQWUsc0JBQXNCLElBQUksZUFBZSxDQUFDO0FBQzFHLGtCQUFNLG1CQUFtQixZQUFZLGFBQWEsVUFBVTtBQUM1RDtBQUFBLGNBQ0U7QUFBQSxjQUNBO0FBQUEsY0FDQSxrQkFBa0I7QUFBQSxjQUNsQixZQUFZLGFBQWEsWUFBWTtBQUFBLFlBQ3ZDO0FBQ0EsZ0JBQUksa0JBQWtCLHNCQUFzQixXQUFXLFFBQVEsZUFBZSxHQUFHLGdCQUFnQjtBQUVqRyxnQkFBSSxDQUFDLGFBQWEsU0FBUyxnQkFBZ0IsS0FBSyxDQUFDLGlCQUFpQixTQUFTLGFBQWEsR0FBRztBQUV6RiwrQkFBaUIsS0FBSyxlQUFlO0FBQ3JDO0FBQ0Esa0JBQUksU0FBUztBQUFBLFlBQ2YsV0FBVyxZQUFZLG1CQUFtQixZQUFZLFlBQVksR0FBRztBQUNuRSwrQkFBaUIsS0FBSyxlQUFlO0FBQ3JDO0FBQ0Esa0JBQUksU0FBUztBQUFBLFlBQ2YsT0FBTztBQUNMLGtCQUFJLGFBQWE7QUFBQSxZQUNuQjtBQUFBLFVBQ0Y7QUFFQSxjQUFJLGlCQUFpQixXQUFXLHVCQUF1QjtBQUNyRDtBQUFBLFVBQ0Y7QUFFQSxnQkFBTSxpQkFBaUIsaUJBQWlCLENBQUM7QUFDekMsZ0JBQU0sZ0JBQWdCLGlCQUFpQixHQUFHLEVBQUU7QUFDNUMsaUJBQU8sR0FBRyxtQkFBbUIsVUFBYSxrQkFBa0IsTUFBUztBQUNyRSxnQkFBTSx1QkFBdUIsV0FBVyxjQUFjLGFBQWE7QUFFbkUsa0JBQVEsT0FBTztBQUFBLFlBQ2IsTUFBTTtBQUFBLFlBQ04sV0FBVztBQUFBLFlBQ1gsSUFBSSxPQUFPO0FBQ1QscUJBQU8sTUFBTTtBQUFBLGdCQUNYO0FBQUEsa0JBQ0UsZUFBZSxNQUFNLENBQUM7QUFBQSxrQkFDdEIsc0JBQXNCLFVBQVUsTUFBTSxxQkFBcUIsTUFBTSxDQUFDLElBQUksY0FBYyxNQUFNLENBQUM7QUFBQSxnQkFDN0Y7QUFBQSxnQkFDQSxpQkFBaUIsSUFBSSxDQUFDLFFBQVEsV0FBVyxRQUFRLEdBQUcsQ0FBQyxFQUFFLEtBQUssSUFBSTtBQUFBLGNBQ2xFO0FBQUEsWUFDRjtBQUFBLFVBQ0YsQ0FBQztBQUFBLFFBQ0gsU0FBUyxPQUFPO0FBRWQsa0JBQVEsTUFBTSxtQkFBbUIsTUFBTSxtQkFBbUIsUUFBUSxRQUFRLE1BQU0sS0FBSztBQUNyRixrQkFBUSxPQUFPO0FBQUEsWUFDYixNQUFNO0FBQUEsWUFDTixXQUFXO0FBQUEsWUFDWCxNQUFNO0FBQUEsY0FDSixVQUFVLFFBQVE7QUFBQSxjQUNsQixPQUFPLGlCQUFpQixRQUFRLE1BQU0sU0FBUyxJQUFJLEtBQUssVUFBVSxLQUFLO0FBQUEsWUFDekU7QUFBQSxVQUNGLENBQUM7QUFBQSxRQUNIO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0YsQ0FBQztBQUVELElBQU8sc0NBQVE7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -5,7 +5,7 @@ import { AST_NODE_TYPES, ESLintUtils } from "@typescript-eslint/utils";
|
|
|
5
5
|
import getDocumentationUrl from "../get-documentation-url.mjs";
|
|
6
6
|
import { getEnclosingScopeNode } from "../library/ts-tree.mjs";
|
|
7
7
|
import { getIndentation } from "../library/format.mjs";
|
|
8
|
-
import {
|
|
8
|
+
import { isServiceApiCallUrl, replaceEndpointUrlPrefixWithDomain } from "./url.mjs";
|
|
9
9
|
var ruleId = "no-service-wrapper";
|
|
10
10
|
var createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
|
|
11
11
|
var rule = createRule({
|
|
@@ -32,7 +32,7 @@ var rule = createRule({
|
|
|
32
32
|
function isUrlArgumentValid(urlArgument, scope) {
|
|
33
33
|
if (urlArgument?.type === AST_NODE_TYPES.Literal && typeof urlArgument.value === "string" || urlArgument?.type === AST_NODE_TYPES.TemplateLiteral) {
|
|
34
34
|
const urlText = sourceCode.getText(urlArgument);
|
|
35
|
-
return
|
|
35
|
+
return isServiceApiCallUrl(urlText);
|
|
36
36
|
}
|
|
37
37
|
if (urlArgument?.type === AST_NODE_TYPES.Identifier) {
|
|
38
38
|
const foundVariable = scope.variables.find((variable) => variable.name === urlArgument.name);
|
|
@@ -180,4 +180,4 @@ export {
|
|
|
180
180
|
no_service_wrapper_default as default,
|
|
181
181
|
ruleId
|
|
182
182
|
};
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L25vLXNlcnZpY2Utd3JhcHBlci50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFRQSxTQUFTLFVBQVUsY0FBYztBQUVqQyxTQUFTLHNCQUFrQztBQUMzQyxTQUFTLGdCQUFnQixtQkFBNkI7QUFFdEQsT0FBTyx5QkFBeUI7QUFDaEMsU0FBUyw2QkFBNkI7QUFDdEMsU0FBUyxzQkFBc0I7QUFDL0IsU0FBUyxxQkFBcUIsMENBQTBDO0FBRWpFLElBQU0sU0FBUztBQUV0QixJQUFNLGFBQWEsWUFBWSxZQUFZLENBQUMsU0FBUyxvQkFBb0IsSUFBSSxDQUFDO0FBRTlFLElBQU0sT0FBd0YsV0FBVztBQUFBLEVBQ3ZHLE1BQU07QUFBQSxFQUNOLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxJQUNOLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxVQUFVO0FBQUEsTUFDUixtQkFBbUI7QUFBQSxNQUNuQixnQkFDRTtBQUFBLE1BQ0YsY0FDRTtBQUFBLElBQ0o7QUFBQSxJQUNBLFNBQVM7QUFBQSxJQUNULFFBQVEsQ0FBQztBQUFBLEVBQ1g7QUFBQSxFQUNBLGdCQUFnQixDQUFDO0FBQUEsRUFDakIsT0FBTyxTQUFTO0FBQ2QsVUFBTSxhQUFhLFFBQVE7QUFDM0IsVUFBTSxlQUFlLFdBQVc7QUFDaEMsVUFBTSxnQkFBZ0IsWUFBWSxrQkFBa0IsT0FBTztBQUMzRCxVQUFNLGNBQWMsY0FBYyxRQUFRLGVBQWU7QUFFekQsYUFBUyxtQkFBbUIsYUFBd0MsT0FBYztBQUNoRixVQUNHLGFBQWEsU0FBUyxlQUFlLFdBQVcsT0FBTyxZQUFZLFVBQVUsWUFDOUUsYUFBYSxTQUFTLGVBQWUsaUJBQ3JDO0FBQ0EsY0FBTSxVQUFVLFdBQVcsUUFBUSxXQUFXO0FBQzlDLGVBQU8sb0JBQW9CLE9BQU87QUFBQSxNQUNwQztBQUVBLFVBQUksYUFBYSxTQUFTLGVBQWUsWUFBWTtBQUNuRCxjQUFNLGdCQUFnQixNQUFNLFVB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
|
package/dist-mjs/agent/url.mjs
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
// src/agent/url.ts
|
|
2
2
|
var PLAIN_URL_REGEXP = /^[`']\/\w+(?<serviceNamePart>-\w+)*\/v\d+\/(?<any>.|\r|\n)+[`']$/u;
|
|
3
3
|
var TOKENIZED_URL_REGEXP = /^`\$\{(?<serviceNamePart>[A-Z]+_)*BASE_PATH\}\/(?<any>.|\r|\n)+`$/u;
|
|
4
|
+
function isServiceApiCallUrl(url) {
|
|
5
|
+
return PLAIN_URL_REGEXP.test(url) || TOKENIZED_URL_REGEXP.test(url);
|
|
6
|
+
}
|
|
4
7
|
function replaceEndpointUrlPrefixWithBasePath(url) {
|
|
5
|
-
return url.replace(
|
|
8
|
+
return url.replace(
|
|
9
|
+
/^(?<quotStart>[`'])\/(?<servicename>\w+(?<parts>-\w+)*)(?<path>\/v\d+\/)(?<endpoint>(?<any>.|\r|\n)+)(?<quotEnd>[`'])$/u,
|
|
10
|
+
// eslint-disable-next-line no-template-curly-in-string
|
|
11
|
+
"`${BASE_PATH}/$5`"
|
|
12
|
+
);
|
|
6
13
|
}
|
|
7
14
|
function replaceEndpointUrlPrefixWithDomain(url) {
|
|
8
15
|
return url.replace(
|
|
@@ -17,10 +24,9 @@ function addBasePathUrlDomain(url) {
|
|
|
17
24
|
);
|
|
18
25
|
}
|
|
19
26
|
export {
|
|
20
|
-
PLAIN_URL_REGEXP,
|
|
21
|
-
TOKENIZED_URL_REGEXP,
|
|
22
27
|
addBasePathUrlDomain,
|
|
28
|
+
isServiceApiCallUrl,
|
|
23
29
|
replaceEndpointUrlPrefixWithBasePath,
|
|
24
30
|
replaceEndpointUrlPrefixWithDomain
|
|
25
31
|
};
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L3VybC50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFHQSxJQUFNLG1CQUEyQjtBQUVqQyxJQUFNLHVCQUErQjtBQUU5QixTQUFTLG9CQUFvQixLQUFzQjtBQUN4RCxTQUFPLGlCQUFpQixLQUFLLEdBQUcsS0FBSyxxQkFBcUIsS0FBSyxHQUFHO0FBQ3BFO0FBRU8sU0FBUyxxQ0FBcUMsS0FBcUI7QUFDeEUsU0FBTyxJQUFJO0FBQUEsSUFDVDtBQUFBO0FBQUEsSUFFQTtBQUFBLEVBQ0Y7QUFDRjtBQUVPLFNBQVMsbUNBQW1DLEtBQXFCO0FBQ3RFLFNBQU8sSUFBSTtBQUFBLElBQ1Q7QUFBQSxJQUNBO0FBQUEsRUFDRjtBQUNGO0FBRU8sU0FBUyxxQkFBcUIsS0FBcUI7QUFDeEQsU0FBTyxJQUFJO0FBQUEsSUFDVDtBQUFBLElBQ0E7QUFBQSxFQUNGO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
package/dist-mjs/index.mjs
CHANGED
|
@@ -34,6 +34,7 @@ import requireTypeOutOfTypeOnlyImports, {
|
|
|
34
34
|
import noServeRuntime, { ruleId as noServeRuntimeRuleId } from "./agent/no-serve-runtime.mjs";
|
|
35
35
|
import addBasePathConst, { ruleId as addBasePathConstRuleId } from "./agent/add-base-path-const.mjs";
|
|
36
36
|
import addBasePathImport, { ruleId as addBasePathImportRuleId } from "./agent/add-base-path-import.mjs";
|
|
37
|
+
import addAssertImport, { ruleId as addAssertImportRuleId } from "./agent/add-assert-import.mjs";
|
|
37
38
|
import filePathComment from "./file-path-comment.mjs";
|
|
38
39
|
import noCardNumbers from "./no-card-numbers.mjs";
|
|
39
40
|
import noTestImport from "./no-test-import.mjs";
|
|
@@ -69,6 +70,7 @@ var rules = {
|
|
|
69
70
|
[noServeRuntimeRuleId]: noServeRuntime,
|
|
70
71
|
[addBasePathConstRuleId]: addBasePathConst,
|
|
71
72
|
[addBasePathImportRuleId]: addBasePathImport,
|
|
73
|
+
[addAssertImportRuleId]: addAssertImport,
|
|
72
74
|
[requireFixedServicesImportRuleId]: requireFixedServicesImport,
|
|
73
75
|
[requireTypeOutOfTypeOnlyImportsRuleId]: requireTypeOutOfTypeOnlyImports,
|
|
74
76
|
[noUnusedFunctionArgumentsRuleId]: noUnusedFunctionArguments,
|
|
@@ -120,7 +122,8 @@ var configs = {
|
|
|
120
122
|
[`@checkdigit/${fixFunctionCallArgumentsRuleId}`]: "off",
|
|
121
123
|
[`@checkdigit/${agentTestWiringRuleId}`]: "off",
|
|
122
124
|
[`@checkdigit/${addBasePathConstRuleId}`]: "off",
|
|
123
|
-
[`@checkdigit/${addBasePathImportRuleId}`]: "off"
|
|
125
|
+
[`@checkdigit/${addBasePathImportRuleId}`]: "off",
|
|
126
|
+
[`@checkdigit/${addAssertImportRuleId}`]: "off"
|
|
124
127
|
// --- agent rules END ---
|
|
125
128
|
}
|
|
126
129
|
}
|
|
@@ -168,7 +171,8 @@ var configs = {
|
|
|
168
171
|
[`@checkdigit/${noUnusedImportsRuleId}`]: "error",
|
|
169
172
|
[`@checkdigit/${fixFunctionCallArgumentsRuleId}`]: "error",
|
|
170
173
|
[`@checkdigit/${addBasePathConstRuleId}`]: "error",
|
|
171
|
-
[`@checkdigit/${addBasePathImportRuleId}`]: "error"
|
|
174
|
+
[`@checkdigit/${addBasePathImportRuleId}`]: "error",
|
|
175
|
+
[`@checkdigit/${addAssertImportRuleId}`]: "error"
|
|
172
176
|
}
|
|
173
177
|
},
|
|
174
178
|
{
|
|
@@ -203,7 +207,8 @@ var configs = {
|
|
|
203
207
|
[`@checkdigit/${noUnusedImportsRuleId}`]: "error",
|
|
204
208
|
[`@checkdigit/${fixFunctionCallArgumentsRuleId}`]: "error",
|
|
205
209
|
[`@checkdigit/${addBasePathConstRuleId}`]: "error",
|
|
206
|
-
[`@checkdigit/${addBasePathImportRuleId}`]: "error"
|
|
210
|
+
[`@checkdigit/${addBasePathImportRuleId}`]: "error",
|
|
211
|
+
[`@checkdigit/${addAssertImportRuleId}`]: "error"
|
|
207
212
|
}
|
|
208
213
|
}
|
|
209
214
|
]
|
|
@@ -216,4 +221,4 @@ var src_default = defaultToExport;
|
|
|
216
221
|
export {
|
|
217
222
|
src_default as default
|
|
218
223
|
};
|
|
219
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
224
|
+
//# sourceMappingURL=data:application/json;base64,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
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
export declare
|
|
2
|
-
export declare const TOKENIZED_URL_REGEXP: RegExp;
|
|
1
|
+
export declare function isServiceApiCallUrl(url: string): boolean;
|
|
3
2
|
export declare function replaceEndpointUrlPrefixWithBasePath(url: string): string;
|
|
4
3
|
export declare function replaceEndpointUrlPrefixWithDomain(url: string): string;
|
|
5
4
|
export declare function addBasePathUrlDomain(url: string): string;
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@checkdigit/eslint-plugin","version":"7.3.0-PR.75-
|
|
1
|
+
{"name":"@checkdigit/eslint-plugin","version":"7.3.0-PR.75-1901","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.12.2","@typescript-eslint/utils":"8.12.2","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.14.0","@types/debug":"^4.1.12","@types/eslint":"^9.6.1","@types/eslint-config-prettier":"^6.11.3","@typescript-eslint/parser":"8.12.2","@typescript-eslint/rule-tester":"8.12.2","eslint":"^9.14.0","eslint-config-prettier":"^9.1.0","eslint-import-resolver-typescript":"^3.6.3","eslint-plugin-eslint-plugin":"^6.3.1","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.12.2"},"peerDependencies":{"eslint":">=9 <10"},"engines":{"node":">=20.17"}}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// agent/add-url-domain.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 { strict as assert } from 'node:assert';
|
|
10
|
+
|
|
11
|
+
import { AST_NODE_TYPES, ESLintUtils } from '@typescript-eslint/utils';
|
|
12
|
+
|
|
13
|
+
import getDocumentationUrl from '../get-documentation-url';
|
|
14
|
+
|
|
15
|
+
export const ruleId = 'add-assert-import';
|
|
16
|
+
|
|
17
|
+
const ASSERT_IMPORT_STATEMENT = "import { strict as assert } from 'node:assert';";
|
|
18
|
+
|
|
19
|
+
const createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
|
|
20
|
+
|
|
21
|
+
const rule: ESLintUtils.RuleModule<'addAssertImport'> = createRule({
|
|
22
|
+
name: ruleId,
|
|
23
|
+
meta: {
|
|
24
|
+
type: 'suggestion',
|
|
25
|
+
docs: {
|
|
26
|
+
description: 'Add import of assert module of node.',
|
|
27
|
+
},
|
|
28
|
+
messages: {
|
|
29
|
+
addAssertImport: 'Add import of assert module of node.',
|
|
30
|
+
},
|
|
31
|
+
fixable: 'code',
|
|
32
|
+
schema: [],
|
|
33
|
+
},
|
|
34
|
+
defaultOptions: [],
|
|
35
|
+
create(context) {
|
|
36
|
+
let isAssertImported = false;
|
|
37
|
+
let isAssertUsed = false;
|
|
38
|
+
|
|
39
|
+
return {
|
|
40
|
+
ImportDeclaration: (node) => {
|
|
41
|
+
if (node.source.value === 'assert' || node.source.value === 'node:assert') {
|
|
42
|
+
isAssertImported = true;
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
CallExpression: (callExpression) => {
|
|
46
|
+
// detect if assert is used
|
|
47
|
+
if (
|
|
48
|
+
(callExpression.callee.type === AST_NODE_TYPES.Identifier && callExpression.callee.name === 'assert') ||
|
|
49
|
+
(callExpression.callee.type === AST_NODE_TYPES.MemberExpression &&
|
|
50
|
+
callExpression.callee.object.type === AST_NODE_TYPES.Identifier &&
|
|
51
|
+
callExpression.callee.object.name === 'assert')
|
|
52
|
+
) {
|
|
53
|
+
isAssertUsed = true;
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
'Program:exit': (program) => {
|
|
57
|
+
// add assert import if necessary
|
|
58
|
+
if (isAssertUsed && !isAssertImported) {
|
|
59
|
+
const firstStatement = program.body[0];
|
|
60
|
+
assert(firstStatement);
|
|
61
|
+
context.report({
|
|
62
|
+
node: program,
|
|
63
|
+
messageId: 'addAssertImport',
|
|
64
|
+
fix(fixer) {
|
|
65
|
+
return fixer.insertTextBefore(firstStatement, `${ASSERT_IMPORT_STATEMENT}\n`);
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
export default rule;
|
|
@@ -88,8 +88,10 @@ const rule: ESLintUtils.RuleModule<
|
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
const signature = signatures[0];
|
|
91
|
-
|
|
92
|
-
|
|
91
|
+
if (
|
|
92
|
+
signature === undefined ||
|
|
93
|
+
(signature.typeParameters !== undefined && signature.typeParameters.length > 0)
|
|
94
|
+
) {
|
|
93
95
|
// ignore complex signatures with type parameters
|
|
94
96
|
return;
|
|
95
97
|
}
|
|
@@ -14,7 +14,7 @@ import { AST_NODE_TYPES, ESLintUtils, TSESTree } from '@typescript-eslint/utils'
|
|
|
14
14
|
import getDocumentationUrl from '../get-documentation-url';
|
|
15
15
|
import { getEnclosingScopeNode } from '../library/ts-tree';
|
|
16
16
|
import { getIndentation } from '../library/format';
|
|
17
|
-
import {
|
|
17
|
+
import { isServiceApiCallUrl, replaceEndpointUrlPrefixWithDomain } from './url';
|
|
18
18
|
|
|
19
19
|
export const ruleId = 'no-service-wrapper';
|
|
20
20
|
|
|
@@ -50,7 +50,7 @@ const rule: ESLintUtils.RuleModule<'unknownError' | 'preferNativeFetch' | 'inval
|
|
|
50
50
|
urlArgument?.type === AST_NODE_TYPES.TemplateLiteral
|
|
51
51
|
) {
|
|
52
52
|
const urlText = sourceCode.getText(urlArgument);
|
|
53
|
-
return
|
|
53
|
+
return isServiceApiCallUrl(urlText);
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
if (urlArgument?.type === AST_NODE_TYPES.Identifier) {
|
package/src/agent/url.ts
CHANGED
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
// agent/url.ts
|
|
2
2
|
|
|
3
3
|
// eslint-disable-next-line @typescript-eslint/no-inferrable-types
|
|
4
|
-
|
|
4
|
+
const PLAIN_URL_REGEXP: RegExp = /^[`']\/\w+(?<serviceNamePart>-\w+)*\/v\d+\/(?<any>.|\r|\n)+[`']$/u;
|
|
5
5
|
// eslint-disable-next-line @typescript-eslint/no-inferrable-types
|
|
6
|
-
|
|
6
|
+
const TOKENIZED_URL_REGEXP: RegExp = /^`\$\{(?<serviceNamePart>[A-Z]+_)*BASE_PATH\}\/(?<any>.|\r|\n)+`$/u;
|
|
7
|
+
|
|
8
|
+
export function isServiceApiCallUrl(url: string): boolean {
|
|
9
|
+
return PLAIN_URL_REGEXP.test(url) || TOKENIZED_URL_REGEXP.test(url);
|
|
10
|
+
}
|
|
7
11
|
|
|
8
12
|
export function replaceEndpointUrlPrefixWithBasePath(url: string): string {
|
|
9
|
-
|
|
10
|
-
|
|
13
|
+
return url.replace(
|
|
14
|
+
/^(?<quotStart>[`'])\/(?<servicename>\w+(?<parts>-\w+)*)(?<path>\/v\d+\/)(?<endpoint>(?<any>.|\r|\n)+)(?<quotEnd>[`'])$/u,
|
|
15
|
+
// eslint-disable-next-line no-template-curly-in-string
|
|
16
|
+
'`${BASE_PATH}/$5`',
|
|
17
|
+
);
|
|
11
18
|
}
|
|
12
19
|
|
|
13
20
|
export function replaceEndpointUrlPrefixWithDomain(url: string): string {
|
package/src/index.ts
CHANGED
|
@@ -43,6 +43,7 @@ import requireTypeOutOfTypeOnlyImports, {
|
|
|
43
43
|
import noServeRuntime, { ruleId as noServeRuntimeRuleId } from './agent/no-serve-runtime';
|
|
44
44
|
import addBasePathConst, { ruleId as addBasePathConstRuleId } from './agent/add-base-path-const';
|
|
45
45
|
import addBasePathImport, { ruleId as addBasePathImportRuleId } from './agent/add-base-path-import';
|
|
46
|
+
import addAssertImport, { ruleId as addAssertImportRuleId } from './agent/add-assert-import';
|
|
46
47
|
import filePathComment from './file-path-comment';
|
|
47
48
|
import noCardNumbers from './no-card-numbers';
|
|
48
49
|
import noTestImport from './no-test-import';
|
|
@@ -79,6 +80,7 @@ const rules: Record<string, TSESLint.LooseRuleDefinition> = {
|
|
|
79
80
|
[noServeRuntimeRuleId]: noServeRuntime,
|
|
80
81
|
[addBasePathConstRuleId]: addBasePathConst,
|
|
81
82
|
[addBasePathImportRuleId]: addBasePathImport,
|
|
83
|
+
[addAssertImportRuleId]: addAssertImport,
|
|
82
84
|
[requireFixedServicesImportRuleId]: requireFixedServicesImport,
|
|
83
85
|
[requireTypeOutOfTypeOnlyImportsRuleId]: requireTypeOutOfTypeOnlyImports,
|
|
84
86
|
[noUnusedFunctionArgumentsRuleId]: noUnusedFunctionArguments,
|
|
@@ -133,6 +135,7 @@ const configs: Record<string, TSESLint.FlatConfig.Config | TSESLint.FlatConfig.C
|
|
|
133
135
|
[`@checkdigit/${agentTestWiringRuleId}`]: 'off',
|
|
134
136
|
[`@checkdigit/${addBasePathConstRuleId}`]: 'off',
|
|
135
137
|
[`@checkdigit/${addBasePathImportRuleId}`]: 'off',
|
|
138
|
+
[`@checkdigit/${addAssertImportRuleId}`]: 'off',
|
|
136
139
|
// --- agent rules END ---
|
|
137
140
|
},
|
|
138
141
|
},
|
|
@@ -181,6 +184,7 @@ const configs: Record<string, TSESLint.FlatConfig.Config | TSESLint.FlatConfig.C
|
|
|
181
184
|
[`@checkdigit/${fixFunctionCallArgumentsRuleId}`]: 'error',
|
|
182
185
|
[`@checkdigit/${addBasePathConstRuleId}`]: 'error',
|
|
183
186
|
[`@checkdigit/${addBasePathImportRuleId}`]: 'error',
|
|
187
|
+
[`@checkdigit/${addAssertImportRuleId}`]: 'error',
|
|
184
188
|
},
|
|
185
189
|
},
|
|
186
190
|
{
|
|
@@ -216,6 +220,7 @@ const configs: Record<string, TSESLint.FlatConfig.Config | TSESLint.FlatConfig.C
|
|
|
216
220
|
[`@checkdigit/${fixFunctionCallArgumentsRuleId}`]: 'error',
|
|
217
221
|
[`@checkdigit/${addBasePathConstRuleId}`]: 'error',
|
|
218
222
|
[`@checkdigit/${addBasePathImportRuleId}`]: 'error',
|
|
223
|
+
[`@checkdigit/${addAssertImportRuleId}`]: 'error',
|
|
219
224
|
},
|
|
220
225
|
},
|
|
221
226
|
],
|