@darraghor/eslint-plugin-nestjs-typed 6.9.17 → 6.9.19
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.
|
@@ -7,5 +7,11 @@ export type RuleOptions = [
|
|
|
7
7
|
export type ValidModuleNodeTypes = TSESTree.Identifier | TSESTree.CallExpression;
|
|
8
8
|
export declare const isValidModuleMetaPropertyType: (node: TSESTree.Expression | TSESTree.SpreadElement | null) => node is ValidModuleNodeTypes;
|
|
9
9
|
export declare const getRelevantNodeName: (node: TSESTree.Node) => string;
|
|
10
|
+
/**
|
|
11
|
+
* Checks if an ArrayExpression is the `inject` array of a factory provider.
|
|
12
|
+
* Factory providers have both `useFactory` and `inject` properties,
|
|
13
|
+
* and the order of `inject` must match the factory function parameters.
|
|
14
|
+
*/
|
|
15
|
+
export declare const isFactoryProviderInjectArray: (node: TSESTree.ArrayExpression) => boolean;
|
|
10
16
|
declare const _default: import("@typescript-eslint/utils/ts-eslint").RuleModule<"moduleMetadataArraysAreSorted", RuleOptions, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
11
17
|
export default _default;
|
|
@@ -25,6 +25,39 @@ export const getRelevantNodeName = (node) => {
|
|
|
25
25
|
}
|
|
26
26
|
return currentName;
|
|
27
27
|
};
|
|
28
|
+
/**
|
|
29
|
+
* Checks if an ArrayExpression is the `inject` array of a factory provider.
|
|
30
|
+
* Factory providers have both `useFactory` and `inject` properties,
|
|
31
|
+
* and the order of `inject` must match the factory function parameters.
|
|
32
|
+
*/
|
|
33
|
+
export const isFactoryProviderInjectArray = (node) => {
|
|
34
|
+
// Check if this array is a direct child of a Property
|
|
35
|
+
if (!node.parent || node.parent.type !== TSESTree.AST_NODE_TYPES.Property) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
const property = node.parent;
|
|
39
|
+
// Check if this Property has the key "inject"
|
|
40
|
+
if (property.key.type !== TSESTree.AST_NODE_TYPES.Identifier ||
|
|
41
|
+
property.key.name !== "inject") {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
// Check if the parent of this Property is an ObjectExpression
|
|
45
|
+
if (!property.parent ||
|
|
46
|
+
property.parent.type !== TSESTree.AST_NODE_TYPES.ObjectExpression) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
const objectExpression = property.parent;
|
|
50
|
+
// Check if this ObjectExpression has a `useFactory` property
|
|
51
|
+
// If it does, this is a factory provider and the inject array should NOT be sorted
|
|
52
|
+
// Note: In NestJS, `useFactory` and `inject` are always identifier properties,
|
|
53
|
+
// not computed properties or method definitions, so we only check for identifiers
|
|
54
|
+
const hasUseFactory = objectExpression.properties.some((property) => {
|
|
55
|
+
return (property.type === TSESTree.AST_NODE_TYPES.Property &&
|
|
56
|
+
property.key.type === TSESTree.AST_NODE_TYPES.Identifier &&
|
|
57
|
+
property.key.name === "useFactory");
|
|
58
|
+
});
|
|
59
|
+
return hasUseFactory;
|
|
60
|
+
};
|
|
28
61
|
const defaultLocaleOptions = [
|
|
29
62
|
{
|
|
30
63
|
locale: DEFAULT_LOCALE,
|
|
@@ -67,7 +100,13 @@ export default createRule({
|
|
|
67
100
|
const { locale } = context.options[0];
|
|
68
101
|
const sourceCode = context.sourceCode;
|
|
69
102
|
return {
|
|
70
|
-
[`${MODULE_CLASS_DECORATOR} Property > ArrayExpression`](
|
|
103
|
+
[`${MODULE_CLASS_DECORATOR} Property > ArrayExpression`](node) {
|
|
104
|
+
// Skip sorting if this is a factory provider's inject array
|
|
105
|
+
// The order must match the useFactory function parameters
|
|
106
|
+
if (isFactoryProviderInjectArray(node)) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const { elements } = node;
|
|
71
110
|
const unorderedNodes = elements
|
|
72
111
|
// nestjs modules use identifiers and call expressions
|
|
73
112
|
// can modify this later
|
|
@@ -93,4 +132,4 @@ export default createRule({
|
|
|
93
132
|
};
|
|
94
133
|
},
|
|
95
134
|
});
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydE1vZHVsZU1ldGFkYXRhQXJyYXlzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3J1bGVzL3NvcnRNb2R1bGVNZXRhZGF0YUFycmF5cy9zb3J0TW9kdWxlTWV0YWRhdGFBcnJheXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUN6RSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFbEQsMklBQTJJO0FBRTNJLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQztBQVkvQixNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxDQUN6QyxJQUF5RCxFQUM3QixFQUFFO0lBQzlCLCtEQUErRDtJQUMvRCxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUk7UUFDVixRQUFRLENBQUMsYUFBYSxDQUFDO1lBQ25CLFFBQVEsQ0FBQyxjQUFjLENBQUMsVUFBVTtZQUNsQyxRQUFRLENBQUMsY0FBYyxDQUFDLGNBQWM7WUFDdEMsOERBQThEO1NBQ2pFLENBQUMsQ0FBUSxDQUFDLENBQUMseUJBQXlCO0FBQzdDLENBQUMsQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsSUFBbUIsRUFBRSxFQUFFO0lBQ3ZELElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUVyQixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNuRCxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztJQUM1QixDQUFDO0lBQ0QsSUFDSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxjQUFjLENBQUMsY0FBYztRQUNwRCxJ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
|