@darraghor/eslint-plugin-nestjs-typed 6.6.7 → 6.7.1
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/rules/providerInjectedShouldMatchFactory/ProviderInjectedShouldMatchFactory.d.ts +1 -1
- package/dist/rules/providerInjectedShouldMatchFactory/ProviderInjectedShouldMatchFactory.js +26 -3
- package/dist/utils/nestModules/nestProviderAstParser.d.ts +1 -1
- package/dist/utils/nestModules/nestProviderAstParser.js +13 -2
- package/package.json +5 -5
package/dist/rules/providerInjectedShouldMatchFactory/ProviderInjectedShouldMatchFactory.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { TSESTree } from "@typescript-eslint/utils";
|
|
2
|
-
export declare const hasMismatchedInjected: (node: TSESTree.VariableDeclarator) => boolean;
|
|
2
|
+
export declare const hasMismatchedInjected: (node: TSESTree.VariableDeclarator | TSESTree.ObjectExpression) => boolean;
|
|
3
3
|
declare const rule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"mainMessage", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
4
4
|
export default rule;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRule } from "../../utils/createRule.js";
|
|
2
2
|
//import util from "util";
|
|
3
3
|
import { nestProviderAstParser } from "../../utils/nestModules/nestProviderAstParser.js";
|
|
4
|
-
|
|
4
|
+
const isNestProvider = (node) => {
|
|
5
5
|
// should be a nest provider - note this doesn't check the Provider used is an import actually from nest. Assumes nest Provider. Will change if this is annoying:)
|
|
6
6
|
// edit 03/06/2023 - it was annoying and someone complained on github so I added a check for a "useFactory" property on the Provider declaration
|
|
7
7
|
const isNestProvider = node.id.typeAnnotation?.typeAnnotation
|
|
@@ -11,6 +11,20 @@ export const hasMismatchedInjected = (node) => {
|
|
|
11
11
|
if (!isNestProvider) {
|
|
12
12
|
return false;
|
|
13
13
|
}
|
|
14
|
+
return true;
|
|
15
|
+
};
|
|
16
|
+
const isNestProviderWithFactory = (node) => {
|
|
17
|
+
// should be a nest provider - note this doesn't check the Provider used is an import actually from nest. Assumes nest Provider. Will change if this is annoying:)
|
|
18
|
+
// edit 03/06/2023 - it was annoying and someone complained on github so I added a check for a "useFactory" property on the Provider declaration
|
|
19
|
+
const isNestProvider =
|
|
20
|
+
// and there is a useFactory property in the declaration
|
|
21
|
+
nestProviderAstParser.findProvideProperty(node, "useFactory");
|
|
22
|
+
if (!isNestProvider) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
return true;
|
|
26
|
+
};
|
|
27
|
+
export const hasMismatchedInjected = (node) => {
|
|
14
28
|
// count number of factory params
|
|
15
29
|
const factoryParameterCount = (nestProviderAstParser.findProvideProperty(node, "useFactory")
|
|
16
30
|
?.value).params.length;
|
|
@@ -37,8 +51,17 @@ const rule = createRule({
|
|
|
37
51
|
defaultOptions: [],
|
|
38
52
|
create(context) {
|
|
39
53
|
return {
|
|
54
|
+
"Decorator Property:has(Identifier[name=providers]) > ArrayExpression > ObjectExpression"(node) {
|
|
55
|
+
if (isNestProviderWithFactory(node) &&
|
|
56
|
+
hasMismatchedInjected(node)) {
|
|
57
|
+
context.report({
|
|
58
|
+
node: node,
|
|
59
|
+
messageId: "mainMessage",
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
},
|
|
40
63
|
VariableDeclarator(node) {
|
|
41
|
-
if (hasMismatchedInjected(node)) {
|
|
64
|
+
if (isNestProvider(node) && hasMismatchedInjected(node)) {
|
|
42
65
|
context.report({
|
|
43
66
|
node: node,
|
|
44
67
|
messageId: "mainMessage",
|
|
@@ -49,4 +72,4 @@ const rule = createRule({
|
|
|
49
72
|
},
|
|
50
73
|
});
|
|
51
74
|
export default rule;
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvdmlkZXJJbmplY3RlZFNob3VsZE1hdGNoRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ydWxlcy9wcm92aWRlckluamVjdGVkU2hvdWxkTWF0Y2hGYWN0b3J5L1Byb3ZpZGVySW5qZWN0ZWRTaG91bGRNYXRjaEZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRXJELDBCQUEwQjtBQUMxQixPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQUV2RixNQUFNLGNBQWMsR0FBRyxDQUFDLElBQWlDLEVBQVcsRUFBRTtJQUNsRSxrS0FBa0s7SUFDbEssZ0pBQWdKO0lBQ2hKLE1BQU0sY0FBYyxHQUVYLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxFQUFFLGNBQTJDO1FBQ2hFLEVBQUUsUUFDVCxFQUFFLElBQUksS0FBSyxVQUFVO1FBQ3RCLHdEQUF3RDtRQUN4RCxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFFbEUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2xCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDLENBQUM7QUFDRixNQUFNLHlCQUF5QixHQUFHLENBQzlCLElBQStCLEVBQ3hCLEVBQUU7SUFDVCxrS0FBa0s7SUFDbEssZ0pBQWdKO0lBQ2hKLE1BQU0sY0FBYztJQUNoQix3REFBd0Q7SUFDeEQscUJBQXFCLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBRWxFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNsQixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FDakMsSUFBNkQsRUFDdEQsRUFBRTtJQUNULGlDQUFpQztJQUNqQyxNQUFNLHFCQUFxQixHQUFHLENBQzFCLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxZQUFZLENBQUM7UUFDekQsRUFBRSxLQUNULENBQUEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBRWhCLGtDQUFrQztJQUNsQyxNQUFNLGlCQUFpQixHQUFHLHFCQUFxQixDQUFDLG1CQUFtQixDQUMvRCxJQUFJLEVBQ0osUUFBUSxDQUNYLEVBQUUsS0FBNEMsQ0FBQztJQUVoRCxNQUFNLHNCQUFzQixHQUFHLGlCQUFpQjtRQUM1QyxDQUFDLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLE1BQU07UUFDbkMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVSLHVCQUF1QjtJQUN2QixPQUFPLHNCQUFzQixLQUFLLHFCQUFxQixDQUFDO0FBQzVELENBQUMsQ0FBQztBQUVGLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBb0I7SUFDdkMsSUFBSSxFQUFFLG1EQUFtRDtJQUN6RCxJQUFJLEVBQUU7UUFDRixJQUFJLEVBQUU7WUFDRixXQUFXLEVBQ1AsbUdBQW1HO1NBQzFHO1FBQ0QsUUFBUSxFQUFFO1lBQ04sV0FBVyxFQUFFLDBGQUEwRjtTQUMxRztRQUNELE1BQU0sRUFBRSxFQUFFO1FBQ1YsSUFBSSxFQUFFLFNBQVM7S0FDbEI7SUFDRCxjQUFjLEVBQUUsRUFBRTtJQUVsQixNQUFNLENBQUMsT0FBTztRQUNWLE9BQU87WUFDSCx5RkFBeUYsQ0FDckYsSUFBK0I7Z0JBRS9CLElBQ0kseUJBQXlCLENBQUMsSUFBSSxDQUFDO29CQUMvQixxQkFBcUIsQ0FBQyxJQUFJLENBQUMsRUFDN0IsQ0FBQztvQkFDQyxPQUFPLENBQUMsTUFBTSxDQUFDO3dCQUNYLElBQUksRUFBRSxJQUFJO3dCQUNWLFNBQVMsRUFBRSxhQUFhO3FCQUMzQixDQUFDLENBQUM7Z0JBQ1AsQ0FBQztZQUNMLENBQUM7WUFDRCxrQkFBa0IsQ0FBQyxJQUFpQztnQkFDaEQsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUkscUJBQXFCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDdEQsT0FBTyxDQUFDLE1BQU0sQ0FBQzt3QkFDWCxJQUFJLEVBQUUsSUFBSTt3QkFDVixTQUFTLEVBQUUsYUFBYTtxQkFDM0IsQ0FBQyxDQUFDO2dCQUNQLENBQUM7WUFDTCxDQUFDO1NBQ0osQ0FBQztJQUNOLENBQUM7Q0FDSixDQUFDLENBQUM7QUFFSCxlQUFlLElBQUksQ0FBQyJ9
|
|
@@ -2,6 +2,6 @@ import { TSESTree } from "@typescript-eslint/utils";
|
|
|
2
2
|
import { NestProvidedInjectablesMap, NestProvidedFilePath } from "./models/NestProvidedInjectablesMap.js";
|
|
3
3
|
export declare const nestProviderAstParser: {
|
|
4
4
|
mapNestProviderObject(n: TSESTree.Property, path: NestProvidedFilePath): [NestProvidedFilePath, NestProvidedInjectablesMap] | null;
|
|
5
|
-
findProvideProperty(providerDeclaration: TSESTree.VariableDeclarator | undefined, propertyName: string): TSESTree.Property | null;
|
|
5
|
+
findProvideProperty(providerDeclaration: TSESTree.VariableDeclarator | TSESTree.ObjectExpression | undefined, propertyName: string): TSESTree.Property | null;
|
|
6
6
|
findNestProviderVariableDeclaration(ast: TSESTree.Program): TSESTree.VariableDeclarator | undefined;
|
|
7
7
|
};
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { AST_NODE_TYPES } from "@typescript-eslint/utils";
|
|
2
2
|
import { NestProvidedInjectablesMap, } from "./models/NestProvidedInjectablesMap.js";
|
|
3
|
+
function isObjectExpression(node) {
|
|
4
|
+
return node.type === AST_NODE_TYPES.ObjectExpression;
|
|
5
|
+
}
|
|
3
6
|
export const nestProviderAstParser = {
|
|
4
7
|
mapNestProviderObject(n, path) {
|
|
5
8
|
const propertyName = n.value?.name;
|
|
@@ -13,7 +16,15 @@ export const nestProviderAstParser = {
|
|
|
13
16
|
},
|
|
14
17
|
findProvideProperty(providerDeclaration, propertyName) {
|
|
15
18
|
if (providerDeclaration) {
|
|
16
|
-
const
|
|
19
|
+
const properties = isObjectExpression(providerDeclaration)
|
|
20
|
+
? providerDeclaration
|
|
21
|
+
: providerDeclaration.init;
|
|
22
|
+
// Type guard with isObjectExpression
|
|
23
|
+
if (properties === null || !isObjectExpression(properties)) {
|
|
24
|
+
console.log("null properties", properties);
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
const foundProviderProperty = properties.properties.find((p) => p.key
|
|
17
28
|
.name === propertyName);
|
|
18
29
|
return foundProviderProperty;
|
|
19
30
|
}
|
|
@@ -49,4 +60,4 @@ export const nestProviderAstParser = {
|
|
|
49
60
|
return undefined;
|
|
50
61
|
},
|
|
51
62
|
};
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVzdFByb3ZpZGVyQXN0UGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL25lc3RNb2R1bGVzL25lc3RQcm92aWRlckFzdFBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsY0FBYyxFQUFXLE1BQU0sMEJBQTBCLENBQUM7QUFDbEUsT0FBTyxFQUNILDBCQUEwQixHQUU3QixNQUFNLHdDQUF3QyxDQUFDO0FBRWhELFNBQVMsa0JBQWtCLENBQ3ZCLElBQW1CO0lBRW5CLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsZ0JBQWdCLENBQUM7QUFDekQsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHO0lBQ2pDLHFCQUFxQixDQUNqQixDQUFvQixFQUNwQixJQUEwQjtRQUUxQixNQUFNLFlBQVksR0FBSSxDQUFDLENBQUMsS0FBNkIsRUFBRSxJQUFJLENBQUM7UUFDNUQsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNmLE9BQU87Z0JBQ0gsSUFBSTtnQkFDSixJQUFJLDBCQUEwQixDQUMxQixJQUFJLEdBQUcsRUFBRSxFQUNULElBQUksR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FDMUI7YUFDSixDQUFDO1FBQ04sQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxtQkFBbUIsQ0FDZixtQkFHZSxFQUNmLFlBQW9CO1FBRXBCLElBQUksbUJBQW1CLEVBQUUsQ0FBQztZQUN0QixNQUFNLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQztnQkFDdEQsQ0FBQyxDQUFDLG1CQUFtQjtnQkFDckIsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQztZQUMvQixxQ0FBcUM7WUFDckMsSUFBSSxVQUFVLEtBQUssSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDekQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFDM0MsT0FBTyxJQUFJLENBQUM7WUFDaEIsQ0FBQztZQUNELE1BQU0scUJBQXFCLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ3BELENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDQSxDQUF1QixDQUFDLEdBQTJCO2lCQUNoRCxJQUFJLEtBQUssWUFBWSxDQUNaLENBQUM7WUFFdkIsT0FBTyxxQkFBcUIsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUNELG1DQUFtQyxDQUMvQixHQUFxQjtRQUVyQixLQUFLLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN2QixJQUNJLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsc0JBQXNCO2dCQUM3QyxDQUFDLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyx3QkFBd0IsQ0FBQztnQkFDdkQsQ0FBQyxDQUFDLFdBQVcsRUFBRSxJQUFJLEtBQUssY0FBYyxDQUFDLG1CQUFtQixFQUM1RCxDQUFDO2dCQUNDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUN2RCxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUNGLE1BQU0sa0JBQWtCLEdBQ3BCLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsa0JBQWtCO3dCQUN6Qyw0REFBNEQ7d0JBQzVELENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSTs0QkFDUixjQUFjLENBQUMsZ0JBQWdCLENBQUM7d0JBQ3hDLEtBQUssQ0FBQztvQkFFVixNQUFNLGtCQUFrQixHQUNwQixrQkFBa0I7d0JBRWQsQ0FBQyxDQUFDLElBQ0wsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7NEJBQzNCLE9BQU8sQ0FDSCxDQUFDLFFBQVEsQ0FBQyxJQUFJO2dDQUNWLGNBQWMsQ0FBQyxRQUFRO2dDQUN2QixRQUFRLENBQUMsR0FBRyxDQUFDLElBQUk7b0NBQ2IsY0FBYyxDQUFDLFVBQVU7Z0NBQzdCLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLFNBQVM7Z0NBQy9CLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSTtvQ0FDZixjQUFjLENBQUMsVUFBVSxDQUFDO2dDQUNsQyxLQUFLLENBQ1IsQ0FBQzt3QkFDTixDQUFDLENBQUMsQ0FBQztvQkFDUCxPQUFPLGtCQUFrQixDQUFDO2dCQUM5QixDQUFDLENBQ0osQ0FBQztnQkFFRixPQUFPLG1CQUFtQixDQUFDO1lBQy9CLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztDQUNKLENBQUMifQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@darraghor/eslint-plugin-nestjs-typed",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.7.1",
|
|
4
4
|
"description": "Eslint rules for nestjs projects",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"clean": "rm -Rf ./dist/",
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"@typescript-eslint/scope-manager": "^8.34.1",
|
|
62
62
|
"@typescript-eslint/utils": "^8.34.1",
|
|
63
63
|
"@typescript-eslint/type-utils": "^8.34.1",
|
|
64
|
-
"eslint-module-utils": "2.12.
|
|
64
|
+
"eslint-module-utils": "2.12.1",
|
|
65
65
|
"glob": "11.0.3",
|
|
66
66
|
"reflect-metadata": "0.2.2",
|
|
67
67
|
"ts-api-utils": "2.1.0"
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"@semantic-release/exec": "7.1.0",
|
|
75
75
|
"@types/eslint": "9.6.1",
|
|
76
76
|
"@types/jest": "29.5.14",
|
|
77
|
-
"@types/node": "22.15.
|
|
77
|
+
"@types/node": "22.15.35",
|
|
78
78
|
"@typescript-eslint/eslint-plugin": "8.34.1",
|
|
79
79
|
"@typescript-eslint/parser": "8.34.1",
|
|
80
80
|
"@typescript-eslint/rule-tester": "8.34.1",
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"jest-junit": "16.0.0",
|
|
91
91
|
"lint-staged": "15.5.2",
|
|
92
92
|
"prettier": "3.5.3",
|
|
93
|
-
"semantic-release": "24.2.
|
|
93
|
+
"semantic-release": "24.2.7",
|
|
94
94
|
"ts-jest": "29.4.0",
|
|
95
95
|
"ts-node": "10.9.2",
|
|
96
96
|
"typescript": "5.8.3",
|
|
@@ -112,6 +112,6 @@
|
|
|
112
112
|
"lint",
|
|
113
113
|
"style"
|
|
114
114
|
],
|
|
115
|
-
"packageManager": "pnpm@10.12.
|
|
115
|
+
"packageManager": "pnpm@10.12.4",
|
|
116
116
|
"license": "ISC"
|
|
117
117
|
}
|