@checkdigit/eslint-plugin 7.5.1-PR.101-6eb0 → 7.6.0-PR.102-cd28
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/index.mjs +2 -5
- package/dist-mjs/no-side-effects.mjs +2 -18
- package/package.json +1 -1
- package/src/index.ts +20 -23
- package/src/invalid-json-stringify.ts +1 -1
- package/src/no-duplicated-imports.ts +1 -1
- package/src/no-legacy-service-typing.ts +1 -1
- package/src/no-promise-instance-method.ts +1 -1
- package/src/no-random-v4-uuid.ts +1 -1
- package/src/no-serve-runtime.ts +1 -1
- package/src/no-side-effects.ts +8 -37
- package/src/require-fixed-services-import.ts +1 -1
- package/src/require-resolve-full-response.ts +2 -2
- package/src/require-type-out-of-type-only-imports.ts +1 -1
package/dist-mjs/index.mjs
CHANGED
|
@@ -62,10 +62,7 @@ var configs = {
|
|
|
62
62
|
"@checkdigit/no-uuid": "error",
|
|
63
63
|
"@checkdigit/require-strict-assert": "error",
|
|
64
64
|
"@checkdigit/no-wallaby-comment": "error",
|
|
65
|
-
"@checkdigit/no-side-effects": [
|
|
66
|
-
"error",
|
|
67
|
-
{ excludedIdentifiers: ["assert", "debug", "log", "promisify", "Symbol.for"] }
|
|
68
|
-
],
|
|
65
|
+
"@checkdigit/no-side-effects": ["error", { excludedIdentifiers: ["assert", "debug", "log", "promisify"] }],
|
|
69
66
|
"@checkdigit/regular-expression-comment": "error",
|
|
70
67
|
"@checkdigit/require-assert-predicate-rejects-throws": "error",
|
|
71
68
|
"@checkdigit/object-literal-response": "error",
|
|
@@ -119,4 +116,4 @@ var src_default = defaultToExport;
|
|
|
119
116
|
export {
|
|
120
117
|
src_default as default
|
|
121
118
|
};
|
|
122
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,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
|
|
@@ -15,24 +15,8 @@ function isCallExpressionCalleeMemberExpression(statement, excludedIdentifiers)
|
|
|
15
15
|
function isVariableDeclarationAwaitExpression(node) {
|
|
16
16
|
return node.type === TSESTree.AST_NODE_TYPES.VariableDeclaration && node.declarations.length > 0 && node.declarations[0]?.init?.type === TSESTree.AST_NODE_TYPES.AwaitExpression;
|
|
17
17
|
}
|
|
18
|
-
function isIdentifierCallee(node, excludedIdentifiers) {
|
|
19
|
-
return node.callee.type === TSESTree.AST_NODE_TYPES.Identifier && !excludedIdentifiers.includes(node.callee.name);
|
|
20
|
-
}
|
|
21
|
-
function isMemberExpressionCallee(node, excludedIdentifiers) {
|
|
22
|
-
return node.callee.type === TSESTree.AST_NODE_TYPES.MemberExpression && node.callee.object.type === TSESTree.AST_NODE_TYPES.Identifier && node.callee.property.type === TSESTree.AST_NODE_TYPES.Identifier && !excludedIdentifiers.includes(`${node.callee.object.name}.${node.callee.property.name}`);
|
|
23
|
-
}
|
|
24
|
-
function isNonIdentifierObjectMemberExpressionCallee(node) {
|
|
25
|
-
return node.callee.type === TSESTree.AST_NODE_TYPES.MemberExpression && node.callee.object.type !== TSESTree.AST_NODE_TYPES.Identifier;
|
|
26
|
-
}
|
|
27
18
|
function isVariableDeclarationCallExpression(node, excludedIdentifiers) {
|
|
28
|
-
|
|
29
|
-
return false;
|
|
30
|
-
}
|
|
31
|
-
const init = node.declarations[0]?.init;
|
|
32
|
-
if (init?.type !== TSESTree.AST_NODE_TYPES.CallExpression) {
|
|
33
|
-
return false;
|
|
34
|
-
}
|
|
35
|
-
return isIdentifierCallee(init, excludedIdentifiers) || isMemberExpressionCallee(init, excludedIdentifiers) || isNonIdentifierObjectMemberExpressionCallee(init);
|
|
19
|
+
return node.type === TSESTree.AST_NODE_TYPES.VariableDeclaration && node.declarations.length > 0 && node.declarations[0]?.init?.type === TSESTree.AST_NODE_TYPES.CallExpression && (node.declarations[0].init.callee.type === TSESTree.AST_NODE_TYPES.Identifier && !excludedIdentifiers.includes(node.declarations[0].init.callee.name) || node.declarations[0].init.callee.type === TSESTree.AST_NODE_TYPES.MemberExpression);
|
|
36
20
|
}
|
|
37
21
|
var createRule = ESLintUtils.RuleCreator((name) => name);
|
|
38
22
|
var rule = createRule({
|
|
@@ -81,4 +65,4 @@ export {
|
|
|
81
65
|
no_side_effects_default as default,
|
|
82
66
|
ruleId
|
|
83
67
|
};
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL25vLXNpZGUtZWZmZWN0cy50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFRQSxTQUFTLG1CQUFtQjtBQUM1QixTQUFTLGdCQUFnQjtBQU1sQixJQUFNLFNBQVM7QUFDdEIsSUFBTSxrQkFBa0I7QUFHeEIsU0FBUyxzQkFBc0IsTUFBMkQ7QUFDeEYsU0FBTyxLQUFLLFNBQVMsU0FBUyxlQUFlO0FBQy9DO0FBR0EsU0FBUyxrQkFBa0IsV0FBbUM7QUFDNUQsU0FBTyxzQkFBc0IsU0FBUyxLQUFLLFVBQVUsV0FBVyxTQUFTLFNBQVMsZUFBZTtBQUNuRztBQUdBLFNBQVMsdUNBQXVDLFdBQTBCLHFCQUF3QztBQUNoSCxTQUNFLHNCQUFzQixTQUFTLEtBQy9CLFVBQVUsV0FBVyxTQUFTLFNBQVMsZUFBZSxrQkFDdEQsVUFBVSxXQUFXLE9BQU8sU0FBUyxTQUFTLGVBQWUsb0JBQzdELFVBQVUsV0FBVyxPQUFPLE9BQU8sU0FBUyxTQUFTLGVBQWUsY0FDcEUsQ0FBQyxvQkFBb0IsU0FBUyxVQUFVLFdBQVcsT0FBTyxPQUFPLElBQUk7QUFFekU7QUFHQSxTQUFTLHFDQUFxQyxNQUE4QjtBQUMxRSxTQUNFLEtBQUssU0FBUyxTQUFTLGVBQWUsdUJBQ3RDLEtBQUssYUFBYSxTQUFTLEtBQzNCLEtBQUssYUFBYSxDQUFDLEdBQUcsTUFBTSxTQUFTLFNBQVMsZUFBZTtBQUVqRTtBQUdBLFNBQVMsb0NBQW9DLE1BQXFCLHFCQUF3QztBQUN4RyxTQUNFLEtBQUssU0FBUyxTQUFTLGVBQWUsdUJBQ3RDLEtBQUssYUFBYSxTQUFTLEtBQzNCLEtBQUssYUFBYSxDQUFDLEdBQUcsTUFBTSxTQUFTLFNBQVMsZUFBZSxtQkFDM0QsS0FBSyxhQUFhLENBQUMsRUFBRSxLQUFLLE9BQU8sU0FBUyxTQUFTLGVBQWUsY0FDbEUsQ0FBQyxvQkFBb0IsU0FBUyxLQUFLLGFBQWEsQ0FBQyxFQUFFLEtBQUssT0FBTyxJQUFJLEtBQ25FLEtBQUssYUFBYSxDQUFDLEVBQUUsS0FBSyxPQUFPLFNBQVMsU0FBUyxlQUFlO0FBRXhFO0FBRUEsSUFBTSxhQUF5RCxZQUFZLFlBQVksQ0FBQyxTQUFTLElBQUk7QUFFckcsSUFBTSxPQUFzQyxXQUFXO0FBQUEsRUFDckQsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLElBQ04sTUFBTTtBQUFBLE1BQ0osYUFBYTtBQUFBLElBQ2Y7QUFBQSxJQUNBLFFBQVE7QUFBQSxNQUNOO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixZQUFZO0FBQUEsVUFDVixxQkFBcUI7QUFBQSxZQUNuQixNQUFNO0FBQUEsWUFDTixPQUFPLEVBQUUsTUFBTSxTQUFTO0FBQUEsVUFDMUI7QUFBQSxRQUNGO0FBQUEsUUFDQSxzQkFBc0I7QUFBQSxNQUN4QjtBQUFBLElBQ0Y7QUFBQSxJQUNBLFVBQVU7QUFBQSxNQUNSLENBQUMsZUFBZSxHQUFHO0FBQUEsSUFDckI7QUFBQSxFQUNGO0FBQUEsRUFDQSxnQkFBZ0IsQ0FBQyxFQUFFLHFCQUFxQixDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQUEsRUFDOUMsT0FBTyxTQUFTO0FBQ2QsVUFBTSxVQUF1QixRQUFRLFFBQVEsQ0FBQztBQUM5QyxVQUFNLHNCQUFzQixRQUFRLG9CQUFvQixTQUFTLElBQUksUUFBUSxzQkFBc0IsQ0FBQztBQUVwRyxXQUFPO0FBQUEsTUFDTCxRQUFRLE1BQXdCO0FBQzlCLGFBQUssS0FBSyxRQUFRLENBQUMsY0FBYztBQUMvQixjQUNFLGtCQUFrQixTQUFTLEtBQzNCLHVDQUF1QyxXQUFXLG1CQUFtQixLQUNyRSxxQ0FBcUMsU0FBUyxLQUM5QyxvQ0FBb0MsV0FBVyxtQkFBbUIsR0FDbEU7QUFDQSxvQkFBUSxPQUFPO0FBQUEsY0FDYixNQUFNO0FBQUEsY0FDTixXQUFXO0FBQUEsWUFDYixDQUFDO0FBQUEsVUFDSDtBQUFBLFFBQ0YsQ0FBQztBQUFBLE1BQ0g7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGLENBQUM7QUFFRCxJQUFPLDBCQUFROyIsCiAgIm5hbWVzIjogW10KfQo=
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@checkdigit/eslint-plugin","version":"7.
|
|
1
|
+
{"name":"@checkdigit/eslint-plugin","version":"7.6.0-PR.102-cd28","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.17.0","@typescript-eslint/utils":"^8.17.0","ts-api-utils":"^2.0.0"},"devDependencies":{"@checkdigit/jest-config":"^6.0.2","@checkdigit/prettier-config":"^6.0.0","@checkdigit/typescript-config":"^9.0.0","@eslint/js":"^9.16.0","@types/eslint":"^9.6.1","@types/eslint-config-prettier":"^6.11.3","@typescript-eslint/parser":"^8.17.0","@typescript-eslint/rule-tester":"^8.17.0","eslint":"^9.16.0","eslint-config-prettier":"^9.1.0","eslint-import-resolver-typescript":"^3.7.0","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":"^2.1.1","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.17.0"},"peerDependencies":{"eslint":">=9 <10"},"engines":{"node":">=20.17"}}
|
package/src/index.ts
CHANGED
|
@@ -8,31 +8,31 @@
|
|
|
8
8
|
|
|
9
9
|
import type { TSESLint } from '@typescript-eslint/utils';
|
|
10
10
|
|
|
11
|
-
import invalidJsonStringify, { ruleId as invalidJsonStringifyRuleId } from './invalid-json-stringify';
|
|
12
|
-
import noDuplicatedImports, { ruleId as noDuplicatedImportsRuleId } from './no-duplicated-imports';
|
|
13
|
-
import noLegacyServiceTyping, { ruleId as noLegacyServiceTypingRuleId } from './no-legacy-service-typing';
|
|
14
|
-
import noPromiseInstanceMethod, { ruleId as noPromiseInstanceMethodRuleId } from './no-promise-instance-method';
|
|
11
|
+
import invalidJsonStringify, { ruleId as invalidJsonStringifyRuleId } from './invalid-json-stringify.ts';
|
|
12
|
+
import noDuplicatedImports, { ruleId as noDuplicatedImportsRuleId } from './no-duplicated-imports.ts';
|
|
13
|
+
import noLegacyServiceTyping, { ruleId as noLegacyServiceTypingRuleId } from './no-legacy-service-typing.ts';
|
|
14
|
+
import noPromiseInstanceMethod, { ruleId as noPromiseInstanceMethodRuleId } from './no-promise-instance-method.ts';
|
|
15
15
|
import requireFixedServicesImport, {
|
|
16
16
|
ruleId as requireFixedServicesImportRuleId,
|
|
17
|
-
} from './require-fixed-services-import';
|
|
17
|
+
} from './require-fixed-services-import.ts';
|
|
18
18
|
import requireResolveFullResponse, {
|
|
19
19
|
ruleId as requireResolveFullResponseRuleId,
|
|
20
|
-
} from './require-resolve-full-response';
|
|
20
|
+
} from './require-resolve-full-response.ts';
|
|
21
21
|
import requireTypeOutOfTypeOnlyImports, {
|
|
22
22
|
ruleId as requireTypeOutOfTypeOnlyImportsRuleId,
|
|
23
|
-
} from './require-type-out-of-type-only-imports';
|
|
24
|
-
import noServeRuntime, { ruleId as noServeRuntimeRuleId } from './no-serve-runtime';
|
|
25
|
-
import filePathComment from './file-path-comment';
|
|
26
|
-
import noCardNumbers from './no-card-numbers';
|
|
27
|
-
import noSideEffects from './no-side-effects';
|
|
28
|
-
import noRandomV4UUID from './no-random-v4-uuid';
|
|
29
|
-
import noTestImport from './no-test-import';
|
|
30
|
-
import noUuid from './no-uuid';
|
|
31
|
-
import noWallabyComment from './no-wallaby-comment';
|
|
32
|
-
import objectLiteralResponse from './object-literal-response';
|
|
33
|
-
import regexComment from './regular-expression-comment';
|
|
34
|
-
import requireAssertPredicateRejectsThrows from './require-assert-predicate-rejects-throws';
|
|
35
|
-
import requireStrictAssert from './require-strict-assert';
|
|
23
|
+
} from './require-type-out-of-type-only-imports.ts';
|
|
24
|
+
import noServeRuntime, { ruleId as noServeRuntimeRuleId } from './no-serve-runtime.ts';
|
|
25
|
+
import filePathComment from './file-path-comment.ts';
|
|
26
|
+
import noCardNumbers from './no-card-numbers.ts';
|
|
27
|
+
import noSideEffects from './no-side-effects.ts';
|
|
28
|
+
import noRandomV4UUID from './no-random-v4-uuid.ts';
|
|
29
|
+
import noTestImport from './no-test-import.ts';
|
|
30
|
+
import noUuid from './no-uuid.ts';
|
|
31
|
+
import noWallabyComment from './no-wallaby-comment.ts';
|
|
32
|
+
import objectLiteralResponse from './object-literal-response.ts';
|
|
33
|
+
import regexComment from './regular-expression-comment.ts';
|
|
34
|
+
import requireAssertPredicateRejectsThrows from './require-assert-predicate-rejects-throws.ts';
|
|
35
|
+
import requireStrictAssert from './require-strict-assert.ts';
|
|
36
36
|
|
|
37
37
|
const rules: Record<string, TSESLint.LooseRuleDefinition> = {
|
|
38
38
|
'file-path-comment': filePathComment,
|
|
@@ -74,10 +74,7 @@ const configs: Record<string, TSESLint.FlatConfig.Config[]> = {
|
|
|
74
74
|
'@checkdigit/no-uuid': 'error',
|
|
75
75
|
'@checkdigit/require-strict-assert': 'error',
|
|
76
76
|
'@checkdigit/no-wallaby-comment': 'error',
|
|
77
|
-
'@checkdigit/no-side-effects': [
|
|
78
|
-
'error',
|
|
79
|
-
{ excludedIdentifiers: ['assert', 'debug', 'log', 'promisify', 'Symbol.for'] },
|
|
80
|
-
],
|
|
77
|
+
'@checkdigit/no-side-effects': ['error', { excludedIdentifiers: ['assert', 'debug', 'log', 'promisify'] }],
|
|
81
78
|
'@checkdigit/regular-expression-comment': 'error',
|
|
82
79
|
'@checkdigit/require-assert-predicate-rejects-throws': 'error',
|
|
83
80
|
'@checkdigit/object-literal-response': 'error',
|
|
@@ -10,7 +10,7 @@ import { strict as assert } from 'node:assert';
|
|
|
10
10
|
|
|
11
11
|
import { ESLintUtils, TSESTree } from '@typescript-eslint/utils';
|
|
12
12
|
|
|
13
|
-
import getDocumentationUrl from './get-documentation-url';
|
|
13
|
+
import getDocumentationUrl from './get-documentation-url.ts';
|
|
14
14
|
|
|
15
15
|
export const ruleId = 'no-duplicated-imports';
|
|
16
16
|
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
import { AST_NODE_TYPES, ESLintUtils, TSESTree } from '@typescript-eslint/utils';
|
|
10
|
-
import getDocumentationUrl from './get-documentation-url';
|
|
10
|
+
import getDocumentationUrl from './get-documentation-url.ts';
|
|
11
11
|
|
|
12
12
|
export const ruleId = 'no-legacy-service-typing';
|
|
13
13
|
|
package/src/no-random-v4-uuid.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
import { AST_NODE_TYPES, ESLintUtils, TSESLint, TSESTree } from '@typescript-eslint/utils';
|
|
10
|
-
import getDocumentationUrl from './get-documentation-url';
|
|
10
|
+
import getDocumentationUrl from './get-documentation-url.ts';
|
|
11
11
|
|
|
12
12
|
export const ruleId = 'no-random-v4-uuid';
|
|
13
13
|
const NO_RANDOM_V4_UUID = 'NO_RANDOM_V4_UUID';
|
package/src/no-serve-runtime.ts
CHANGED
package/src/no-side-effects.ts
CHANGED
|
@@ -46,44 +46,15 @@ function isVariableDeclarationAwaitExpression(node: TSESTree.Node): boolean {
|
|
|
46
46
|
);
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
//
|
|
50
|
-
function isIdentifierCallee(node: TSESTree.CallExpression, excludedIdentifiers: string[]): boolean {
|
|
51
|
-
return node.callee.type === TSESTree.AST_NODE_TYPES.Identifier && !excludedIdentifiers.includes(node.callee.name);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// Helper function to check if the callee is a member expression and not excluded
|
|
55
|
-
function isMemberExpressionCallee(node: TSESTree.CallExpression, excludedIdentifiers: string[]): boolean {
|
|
56
|
-
return (
|
|
57
|
-
node.callee.type === TSESTree.AST_NODE_TYPES.MemberExpression &&
|
|
58
|
-
node.callee.object.type === TSESTree.AST_NODE_TYPES.Identifier &&
|
|
59
|
-
node.callee.property.type === TSESTree.AST_NODE_TYPES.Identifier &&
|
|
60
|
-
!excludedIdentifiers.includes(`${node.callee.object.name}.${node.callee.property.name}`)
|
|
61
|
-
);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
// Helper function to check if the callee is a member expression with a non-identifier object
|
|
65
|
-
function isNonIdentifierObjectMemberExpressionCallee(node: TSESTree.CallExpression): boolean {
|
|
66
|
-
return (
|
|
67
|
-
node.callee.type === TSESTree.AST_NODE_TYPES.MemberExpression &&
|
|
68
|
-
node.callee.object.type !== TSESTree.AST_NODE_TYPES.Identifier
|
|
69
|
-
);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
// To check if it is a variable declaration with a call expression i.e const configuration = new Class(); or Member Expressions i.e const server = http.createServer();
|
|
49
|
+
// To check if it is a variable declaration with a call expression
|
|
73
50
|
function isVariableDeclarationCallExpression(node: TSESTree.Node, excludedIdentifiers: string[]): boolean {
|
|
74
|
-
if (node.type !== TSESTree.AST_NODE_TYPES.VariableDeclaration || node.declarations.length === 0) {
|
|
75
|
-
return false;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
const init = node.declarations[0]?.init;
|
|
79
|
-
if (init?.type !== TSESTree.AST_NODE_TYPES.CallExpression) {
|
|
80
|
-
return false;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
51
|
return (
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
52
|
+
node.type === TSESTree.AST_NODE_TYPES.VariableDeclaration &&
|
|
53
|
+
node.declarations.length > 0 &&
|
|
54
|
+
node.declarations[0]?.init?.type === TSESTree.AST_NODE_TYPES.CallExpression &&
|
|
55
|
+
((node.declarations[0].init.callee.type === TSESTree.AST_NODE_TYPES.Identifier &&
|
|
56
|
+
!excludedIdentifiers.includes(node.declarations[0].init.callee.name)) ||
|
|
57
|
+
node.declarations[0].init.callee.type === TSESTree.AST_NODE_TYPES.MemberExpression)
|
|
87
58
|
);
|
|
88
59
|
}
|
|
89
60
|
|
|
@@ -119,7 +90,7 @@ const rule: ReturnType<typeof createRule> = createRule({
|
|
|
119
90
|
|
|
120
91
|
return {
|
|
121
92
|
Program(node: TSESTree.Program) {
|
|
122
|
-
node.body.forEach((statement
|
|
93
|
+
node.body.forEach((statement) => {
|
|
123
94
|
if (
|
|
124
95
|
isAwaitExpression(statement) ||
|
|
125
96
|
isCallExpressionCalleeMemberExpression(statement, excludedIdentifiers) ||
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
import { strict as assert } from 'node:assert';
|
|
10
10
|
import { AST_NODE_TYPES, ESLintUtils, TSESTree } from '@typescript-eslint/utils';
|
|
11
11
|
import { DefinitionType, type Scope } from '@typescript-eslint/scope-manager';
|
|
12
|
-
import getDocumentationUrl from './get-documentation-url';
|
|
13
|
-
import { getEnclosingScopeNode } from './library/ts-tree';
|
|
12
|
+
import getDocumentationUrl from './get-documentation-url.ts';
|
|
13
|
+
import { getEnclosingScopeNode } from './library/ts-tree.ts';
|
|
14
14
|
|
|
15
15
|
export const ruleId = 'require-resolve-full-response';
|
|
16
16
|
// eslint-disable-next-line @typescript-eslint/no-inferrable-types
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
import { ESLintUtils, TSESTree } from '@typescript-eslint/utils';
|
|
10
|
-
import getDocumentationUrl from './get-documentation-url';
|
|
10
|
+
import getDocumentationUrl from './get-documentation-url.ts';
|
|
11
11
|
|
|
12
12
|
export const ruleId = 'require-type-out-of-type-only-imports';
|
|
13
13
|
|