eslint-plugin-obsidian 2.5.0 → 2.6.0
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/ast/utils.d.ts +11 -0
- package/dist/ast/utils.d.ts.map +1 -0
- package/dist/ast/utils.js +78 -0
- package/dist/ast/utils.js.map +1 -0
- package/dist/dto/class.d.ts +14 -0
- package/dist/dto/class.d.ts.map +1 -0
- package/dist/dto/class.js +45 -0
- package/dist/dto/class.js.map +1 -0
- package/dist/dto/classWithImports.d.ts +8 -0
- package/dist/dto/classWithImports.d.ts.map +1 -0
- package/dist/dto/classWithImports.js +11 -0
- package/dist/dto/classWithImports.js.map +1 -0
- package/dist/dto/decorator.d.ts +13 -0
- package/dist/dto/decorator.d.ts.map +1 -0
- package/dist/dto/decorator.js +19 -0
- package/dist/dto/decorator.js.map +1 -0
- package/dist/dto/file.d.ts +15 -0
- package/dist/dto/file.d.ts.map +1 -0
- package/dist/dto/file.js +52 -0
- package/dist/dto/file.js.map +1 -0
- package/dist/dto/import.d.ts +8 -0
- package/dist/dto/import.d.ts.map +1 -0
- package/dist/dto/import.js +18 -0
- package/dist/dto/import.js.map +1 -0
- package/dist/dto/method.d.ts +11 -0
- package/dist/dto/method.d.ts.map +1 -0
- package/dist/dto/method.js +28 -0
- package/dist/dto/method.js.map +1 -0
- package/dist/dto/parameter.d.ts +7 -0
- package/dist/dto/parameter.d.ts.map +1 -0
- package/dist/dto/parameter.js +13 -0
- package/dist/dto/parameter.js.map +1 -0
- package/dist/dto/property.d.ts +7 -0
- package/dist/dto/property.d.ts.map +1 -0
- package/dist/dto/property.js +13 -0
- package/dist/dto/property.js.map +1 -0
- package/dist/framework/fileReader.d.ts +11 -0
- package/dist/framework/fileReader.d.ts.map +1 -0
- package/dist/framework/fileReader.js +59 -0
- package/dist/framework/fileReader.js.map +1 -0
- package/dist/framework/pathResolver.d.ts +5 -0
- package/dist/framework/pathResolver.d.ts.map +1 -0
- package/dist/framework/pathResolver.js +11 -0
- package/dist/framework/pathResolver.js.map +1 -0
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/unresolvedProviderDependencies/createRule.d.ts +8 -0
- package/dist/unresolvedProviderDependencies/createRule.d.ts.map +1 -0
- package/dist/unresolvedProviderDependencies/createRule.js +23 -0
- package/dist/unresolvedProviderDependencies/createRule.js.map +1 -0
- package/dist/unresolvedProviderDependencies/dependencyResolver.d.ts +11 -0
- package/dist/unresolvedProviderDependencies/dependencyResolver.d.ts.map +1 -0
- package/dist/unresolvedProviderDependencies/dependencyResolver.js +28 -0
- package/dist/unresolvedProviderDependencies/dependencyResolver.js.map +1 -0
- package/dist/unresolvedProviderDependencies/errorReporter.d.ts +8 -0
- package/dist/unresolvedProviderDependencies/errorReporter.d.ts.map +1 -0
- package/dist/unresolvedProviderDependencies/errorReporter.js +16 -0
- package/dist/unresolvedProviderDependencies/errorReporter.js.map +1 -0
- package/dist/unresolvedProviderDependencies/graphHandler.d.ts +14 -0
- package/dist/unresolvedProviderDependencies/graphHandler.d.ts.map +1 -0
- package/dist/unresolvedProviderDependencies/graphHandler.js +24 -0
- package/dist/unresolvedProviderDependencies/graphHandler.js.map +1 -0
- package/dist/unresolvedProviderDependencies/index.d.ts +2 -3
- package/dist/unresolvedProviderDependencies/index.d.ts.map +1 -1
- package/dist/unresolvedProviderDependencies/index.js +23 -16
- package/dist/unresolvedProviderDependencies/index.js.map +1 -1
- package/dist/unresolvedProviderDependencies/resolvedDependencyChecker.d.ts +12 -0
- package/dist/unresolvedProviderDependencies/resolvedDependencyChecker.d.ts.map +1 -0
- package/dist/unresolvedProviderDependencies/resolvedDependencyChecker.js +20 -0
- package/dist/unresolvedProviderDependencies/resolvedDependencyChecker.js.map +1 -0
- package/dist/unresolvedProviderDependencies/subgraphResolver.d.ts +16 -0
- package/dist/unresolvedProviderDependencies/subgraphResolver.d.ts.map +1 -0
- package/dist/unresolvedProviderDependencies/subgraphResolver.js +71 -0
- package/dist/unresolvedProviderDependencies/subgraphResolver.js.map +1 -0
- package/dist/unresolvedProviderDependencies/types.d.ts +5 -0
- package/dist/unresolvedProviderDependencies/types.d.ts.map +1 -0
- package/dist/unresolvedProviderDependencies/types.js +3 -0
- package/dist/unresolvedProviderDependencies/types.js.map +1 -0
- package/dist/utils/assertions.d.ts +2 -0
- package/dist/utils/assertions.d.ts.map +1 -0
- package/dist/utils/assertions.js +9 -0
- package/dist/utils/assertions.js.map +1 -0
- package/package.json +4 -4
- package/dist/unresolvedProviderDependencies/ASTFunctions.d.ts +0 -16
- package/dist/unresolvedProviderDependencies/ASTFunctions.d.ts.map +0 -1
- package/dist/unresolvedProviderDependencies/ASTFunctions.js +0 -137
- package/dist/unresolvedProviderDependencies/ASTFunctions.js.map +0 -1
- package/dist/unresolvedProviderDependencies/createFunction.d.ts +0 -7
- package/dist/unresolvedProviderDependencies/createFunction.d.ts.map +0 -1
- package/dist/unresolvedProviderDependencies/createFunction.js +0 -39
- package/dist/unresolvedProviderDependencies/createFunction.js.map +0 -1
- package/dist/unresolvedProviderDependencies/invalidGraphs.d.ts +0 -3
- package/dist/unresolvedProviderDependencies/invalidGraphs.d.ts.map +0 -1
- package/dist/unresolvedProviderDependencies/invalidGraphs.js +0 -27
- package/dist/unresolvedProviderDependencies/invalidGraphs.js.map +0 -1
- package/dist/unresolvedProviderDependencies/testUtils/subgraph.d.ts +0 -6
- package/dist/unresolvedProviderDependencies/testUtils/subgraph.d.ts.map +0 -1
- package/dist/unresolvedProviderDependencies/testUtils/subgraph.js +0 -38
- package/dist/unresolvedProviderDependencies/testUtils/subgraph.js.map +0 -1
- package/dist/unresolvedProviderDependencies/testUtils/validGraphs.d.ts +0 -3
- package/dist/unresolvedProviderDependencies/testUtils/validGraphs.d.ts.map +0 -1
- package/dist/unresolvedProviderDependencies/testUtils/validGraphs.js +0 -29
- package/dist/unresolvedProviderDependencies/testUtils/validGraphs.js.map +0 -1
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.create = void 0;
|
|
4
|
+
const class_1 = require("../dto/class");
|
|
5
|
+
const graphHandler_1 = require("./graphHandler");
|
|
6
|
+
const dependencyResolver_1 = require("./dependencyResolver");
|
|
7
|
+
const import_1 = require("../dto/import");
|
|
8
|
+
const subgraphResolver_1 = require("./subgraphResolver");
|
|
9
|
+
function create(context, fileReader) {
|
|
10
|
+
const imports = [];
|
|
11
|
+
const dependencyResolver = new dependencyResolver_1.DependencyResolver(new subgraphResolver_1.SubgraphResolver(fileReader));
|
|
12
|
+
const graphHandler = new graphHandler_1.GraphHandler(context, dependencyResolver);
|
|
13
|
+
return {
|
|
14
|
+
ImportDeclaration(node) {
|
|
15
|
+
imports.push(new import_1.Import(node));
|
|
16
|
+
},
|
|
17
|
+
ClassDeclaration(node) {
|
|
18
|
+
graphHandler.handle(new class_1.Clazz(node), imports);
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
exports.create = create;
|
|
23
|
+
//# sourceMappingURL=createRule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createRule.js","sourceRoot":"","sources":["../../rules/unresolvedProviderDependencies/createRule.ts"],"names":[],"mappings":";;;AACA,wCAAqC;AAErC,iDAA8C;AAE9C,6DAA0D;AAC1D,0CAAuC;AACvC,yDAAsD;AAEtD,SAAgB,MAAM,CAAC,OAAgB,EAAE,UAAsB;IAC7D,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,kBAAkB,GAAG,IAAI,uCAAkB,CAAC,IAAI,mCAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;IACpF,MAAM,YAAY,GAAG,IAAI,2BAAY,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAEnE,OAAO;QACL,iBAAiB,CAAC,IAAgC;YAChD,OAAO,CAAC,IAAI,CAAC,IAAI,eAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACjC,CAAC;QACD,gBAAgB,CAAC,IAA+B;YAC9C,YAAY,CAAC,MAAM,CAAC,IAAI,aAAK,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QAChD,CAAC;KACF,CAAC;AACJ,CAAC;AAbD,wBAaC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Import } from '../dto/import';
|
|
2
|
+
import type { Clazz } from '../dto/class';
|
|
3
|
+
import type { SubgraphResolver } from './subgraphResolver';
|
|
4
|
+
export declare class DependencyResolver {
|
|
5
|
+
private subgraphResolver;
|
|
6
|
+
constructor(subgraphResolver: SubgraphResolver);
|
|
7
|
+
resolve(clazz: Clazz, imports: Import[]): string[];
|
|
8
|
+
private getDependenciesFromSubgraphs;
|
|
9
|
+
private getGraphDependencies;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=dependencyResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependencyResolver.d.ts","sourceRoot":"","sources":["../../rules/unresolvedProviderDependencies/dependencyResolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,qBAAa,kBAAkB;IACjB,OAAO,CAAC,gBAAgB;gBAAhB,gBAAgB,EAAE,gBAAgB;IAE/C,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE;IAQ9C,OAAO,CAAC,4BAA4B;IAMpC,OAAO,CAAC,oBAAoB;CAK7B"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DependencyResolver = void 0;
|
|
4
|
+
const classWithImports_1 = require("../dto/classWithImports");
|
|
5
|
+
class DependencyResolver {
|
|
6
|
+
constructor(subgraphResolver) {
|
|
7
|
+
this.subgraphResolver = subgraphResolver;
|
|
8
|
+
}
|
|
9
|
+
resolve(clazz, imports) {
|
|
10
|
+
const classWithImports = new classWithImports_1.ClassWithImports(clazz, imports);
|
|
11
|
+
return [
|
|
12
|
+
...this.getGraphDependencies(classWithImports),
|
|
13
|
+
...this.getDependenciesFromSubgraphs(classWithImports),
|
|
14
|
+
];
|
|
15
|
+
}
|
|
16
|
+
getDependenciesFromSubgraphs(clazz) {
|
|
17
|
+
return this.subgraphResolver
|
|
18
|
+
.resolve(clazz)
|
|
19
|
+
.flatMap(this.getGraphDependencies);
|
|
20
|
+
}
|
|
21
|
+
getGraphDependencies({ clazz }) {
|
|
22
|
+
return clazz
|
|
23
|
+
.getDecoratedMethods('Provides')
|
|
24
|
+
.map((method) => method.name);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.DependencyResolver = DependencyResolver;
|
|
28
|
+
//# sourceMappingURL=dependencyResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependencyResolver.js","sourceRoot":"","sources":["../../rules/unresolvedProviderDependencies/dependencyResolver.ts"],"names":[],"mappings":";;;AAAA,8DAA2D;AAK3D,MAAa,kBAAkB;IAC7B,YAAoB,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;IAAI,CAAC;IAEpD,OAAO,CAAC,KAAY,EAAE,OAAiB;QAC5C,MAAM,gBAAgB,GAAG,IAAI,mCAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC9D,OAAO;YACL,GAAG,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC;YAC9C,GAAG,IAAI,CAAC,4BAA4B,CAAC,gBAAgB,CAAC;SACvD,CAAC;IACJ,CAAC;IAEO,4BAA4B,CAAC,KAAuB;QAC1D,OAAO,IAAI,CAAC,gBAAgB;aACzB,OAAO,CAAC,KAAK,CAAC;aACd,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IAEO,oBAAoB,CAAC,EAAE,KAAK,EAAoB;QACtD,OAAO,KAAK;aACT,mBAAmB,CAAC,UAAU,CAAC;aAC/B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;CACF;AAtBD,gDAsBC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { TSESTree } from '@typescript-eslint/types';
|
|
2
|
+
import type { Context } from './types';
|
|
3
|
+
export declare function reportErrorIfDependencyIsUnresolved(context: Context, { error, param, node }: {
|
|
4
|
+
error: boolean;
|
|
5
|
+
param?: string;
|
|
6
|
+
node?: TSESTree.Node;
|
|
7
|
+
}): void;
|
|
8
|
+
//# sourceMappingURL=errorReporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errorReporter.d.ts","sourceRoot":"","sources":["../../rules/unresolvedProviderDependencies/errorReporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,OAAO,EAChB,EAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAC,EAAE;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAA;CAAC,QAW7E"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.reportErrorIfDependencyIsUnresolved = void 0;
|
|
4
|
+
function reportErrorIfDependencyIsUnresolved(context, { error, param, node }) {
|
|
5
|
+
if (error) {
|
|
6
|
+
context.report({
|
|
7
|
+
node: node,
|
|
8
|
+
messageId: 'unresolved-provider-dependencies',
|
|
9
|
+
data: {
|
|
10
|
+
dependencyName: param,
|
|
11
|
+
},
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.reportErrorIfDependencyIsUnresolved = reportErrorIfDependencyIsUnresolved;
|
|
16
|
+
//# sourceMappingURL=errorReporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errorReporter.js","sourceRoot":"","sources":["../../rules/unresolvedProviderDependencies/errorReporter.ts"],"names":[],"mappings":";;;AAGA,SAAgB,mCAAmC,CACjD,OAAgB,EAChB,EAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAyD;IAE5E,IAAI,KAAK,EAAE;QACT,OAAO,CAAC,MAAM,CAAC;YACb,IAAI,EAAE,IAAK;YACX,SAAS,EAAE,kCAAkC;YAC7C,IAAI,EAAE;gBACJ,cAAc,EAAE,KAAK;aACtB;SACF,CAAC,CAAC;KACJ;AACH,CAAC;AAbD,kFAaC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Clazz } from '../dto/class';
|
|
2
|
+
import type { Context } from './types';
|
|
3
|
+
import type { DependencyResolver } from './dependencyResolver';
|
|
4
|
+
import type { Import } from '../dto/import';
|
|
5
|
+
import { ResolvedDependencyChecker } from './resolvedDependencyChecker';
|
|
6
|
+
export declare class GraphHandler {
|
|
7
|
+
private context;
|
|
8
|
+
private dependencyResolver;
|
|
9
|
+
private resolvedDependencyChecker;
|
|
10
|
+
constructor(context: Context, dependencyResolver: DependencyResolver, resolvedDependencyChecker?: ResolvedDependencyChecker);
|
|
11
|
+
handle(clazz: Clazz, imports: Import[]): void;
|
|
12
|
+
private hasGraphDecorator;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=graphHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphHandler.d.ts","sourceRoot":"","sources":["../../rules/unresolvedProviderDependencies/graphHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAExE,qBAAa,YAAY;IAErB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,yBAAyB;gBAFzB,OAAO,EAAE,OAAO,EAChB,kBAAkB,EAAE,kBAAkB,EACtC,yBAAyB,GAAE,yBAA2D;IAGzF,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE;IAQ7C,OAAO,CAAC,iBAAiB;CAG1B"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GraphHandler = void 0;
|
|
4
|
+
const errorReporter_1 = require("./errorReporter");
|
|
5
|
+
const resolvedDependencyChecker_1 = require("./resolvedDependencyChecker");
|
|
6
|
+
class GraphHandler {
|
|
7
|
+
constructor(context, dependencyResolver, resolvedDependencyChecker = new resolvedDependencyChecker_1.ResolvedDependencyChecker()) {
|
|
8
|
+
this.context = context;
|
|
9
|
+
this.dependencyResolver = dependencyResolver;
|
|
10
|
+
this.resolvedDependencyChecker = resolvedDependencyChecker;
|
|
11
|
+
}
|
|
12
|
+
handle(clazz, imports) {
|
|
13
|
+
if (this.hasGraphDecorator(clazz)) {
|
|
14
|
+
const dependencies = this.dependencyResolver.resolve(clazz, imports);
|
|
15
|
+
const resolvedDependenciesCheck = this.resolvedDependencyChecker.check(clazz, dependencies);
|
|
16
|
+
(0, errorReporter_1.reportErrorIfDependencyIsUnresolved)(this.context, resolvedDependenciesCheck);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
hasGraphDecorator(clazz) {
|
|
20
|
+
return clazz.decoratorNames.includes('Graph');
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.GraphHandler = GraphHandler;
|
|
24
|
+
//# sourceMappingURL=graphHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphHandler.js","sourceRoot":"","sources":["../../rules/unresolvedProviderDependencies/graphHandler.ts"],"names":[],"mappings":";;;AAEA,mDAAsE;AAGtE,2EAAwE;AAExE,MAAa,YAAY;IACvB,YACU,OAAgB,EAChB,kBAAsC,EACtC,4BAAuD,IAAI,qDAAyB,EAAE;QAFtF,YAAO,GAAP,OAAO,CAAS;QAChB,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,8BAAyB,GAAzB,yBAAyB,CAA6D;IAC5F,CAAC;IAEE,MAAM,CAAC,KAAY,EAAE,OAAiB;QAC3C,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;YACjC,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACrE,MAAM,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;YAC5F,IAAA,mDAAmC,EAAC,IAAI,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;SAC9E;IACH,CAAC;IAEO,iBAAiB,CAAC,KAAY;QACpC,OAAO,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;CACF;AAlBD,oCAkBC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { type TSESLint } from '@typescript-eslint/utils';
|
|
2
|
-
|
|
3
|
-
export declare const
|
|
4
|
-
export {};
|
|
2
|
+
import { PathResolver } from '../framework/pathResolver';
|
|
3
|
+
export declare const unresolvedProviderDependenciesGenerator: (pathResolver?: PathResolver) => TSESLint.RuleModule<"unresolved-provider-dependencies", [], TSESLint.RuleListener>;
|
|
5
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../rules/unresolvedProviderDependencies/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../rules/unresolvedProviderDependencies/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGtE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AASzD,eAAO,MAAM,uCAAuC,kBACpC,YAAY,uFAoB3B,CAAC"}
|
|
@@ -1,23 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.unresolvedProviderDependenciesGenerator = void 0;
|
|
4
4
|
const utils_1 = require("@typescript-eslint/utils");
|
|
5
|
-
const
|
|
5
|
+
const createRule_1 = require("./createRule");
|
|
6
|
+
const pathResolver_1 = require("../framework/pathResolver");
|
|
7
|
+
const fileReader_1 = require("../framework/fileReader");
|
|
6
8
|
const createRule = utils_1.ESLintUtils.RuleCreator((name) => `https://wix-incubator.github.io/obsidian/docs/documentation/meta/eslint#${name}`);
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
docs: {
|
|
12
|
-
description: 'Dependencies must be defined in the graph or its subgraphs.',
|
|
13
|
-
recommended: 'strict',
|
|
9
|
+
const unresolvedProviderDependenciesGenerator = (pathResolver = new pathResolver_1.PathResolver()) => {
|
|
10
|
+
return createRule({
|
|
11
|
+
create: (context) => {
|
|
12
|
+
return (0, createRule_1.create)(context, new fileReader_1.FileReader(context, pathResolver));
|
|
14
13
|
},
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
name: 'unresolved-provider-dependencies',
|
|
15
|
+
meta: {
|
|
16
|
+
docs: {
|
|
17
|
+
description: 'Dependencies must be defined in the graph or its subgraphs.',
|
|
18
|
+
recommended: 'strict',
|
|
19
|
+
},
|
|
20
|
+
messages: {
|
|
21
|
+
'unresolved-provider-dependencies': 'Dependency {{ dependencyName }} is unresolved.',
|
|
22
|
+
},
|
|
23
|
+
schema: [],
|
|
24
|
+
type: 'problem',
|
|
17
25
|
},
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
});
|
|
26
|
+
defaultOptions: [],
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
exports.unresolvedProviderDependenciesGenerator = unresolvedProviderDependenciesGenerator;
|
|
23
30
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../rules/unresolvedProviderDependencies/index.ts"],"names":[],"mappings":";;;AAAA,oDAAsE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../rules/unresolvedProviderDependencies/index.ts"],"names":[],"mappings":";;;AAAA,oDAAsE;AAEtE,6CAAsC;AACtC,4DAAyD;AACzD,wDAAqD;AAIrD,MAAM,UAAU,GAAG,mBAAW,CAAC,WAAW,CACxC,CAAC,IAAI,EAAE,EAAE,CAAC,2EAA2E,IAAI,EAAE,CAC5F,CAAC;AAEK,MAAM,uCAAuC,GAAG,CACrD,eAA6B,IAAI,2BAAY,EAAE,EAC/C,EAAE;IACF,OAAO,UAAU,CAAC;QAChB,MAAM,EAAE,CAAC,OAA4D,EAAE,EAAE;YACvE,OAAO,IAAA,mBAAM,EAAC,OAAO,EAAE,IAAI,uBAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,EAAE,kCAAkC;QACxC,IAAI,EAAE;YACJ,IAAI,EAAE;gBACJ,WAAW,EAAE,6DAA6D;gBAC1E,WAAW,EAAE,QAAQ;aACtB;YACD,QAAQ,EAAE;gBACR,kCAAkC,EAAE,gDAAgD;aACrF;YACD,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,SAAS;SAChB;QACD,cAAc,EAAE,EAAE;KACnB,CAAgB,CAAC;AACpB,CAAC,CAAC;AArBW,QAAA,uCAAuC,2CAqBlD"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Clazz } from '../dto/class';
|
|
2
|
+
type DependencyCheckResult = {
|
|
3
|
+
error: boolean;
|
|
4
|
+
param?: string;
|
|
5
|
+
node?: any;
|
|
6
|
+
};
|
|
7
|
+
export declare class ResolvedDependencyChecker {
|
|
8
|
+
check(clazz: Clazz, dependencies: string[]): DependencyCheckResult;
|
|
9
|
+
private getResult;
|
|
10
|
+
}
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=resolvedDependencyChecker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolvedDependencyChecker.d.ts","sourceRoot":"","sources":["../../rules/unresolvedProviderDependencies/resolvedDependencyChecker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAG1C,KAAK,qBAAqB,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,GAAG,CAAA;CAAE,CAAC;AAE5E,qBAAa,yBAAyB;IAE7B,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,qBAAqB;IAQzE,OAAO,CAAC,SAAS;CAMlB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ResolvedDependencyChecker = void 0;
|
|
4
|
+
class ResolvedDependencyChecker {
|
|
5
|
+
check(clazz, dependencies) {
|
|
6
|
+
const unresolvedDependency = clazz
|
|
7
|
+
.getDecoratedMethods('Provides')
|
|
8
|
+
.flatMap((method) => method.parameters)
|
|
9
|
+
.find((provider) => !dependencies.includes(provider.name));
|
|
10
|
+
return this.getResult(unresolvedDependency);
|
|
11
|
+
}
|
|
12
|
+
getResult(unresolvedDependency) {
|
|
13
|
+
if (unresolvedDependency) {
|
|
14
|
+
return { error: true, param: unresolvedDependency.name, node: unresolvedDependency.node };
|
|
15
|
+
}
|
|
16
|
+
return { error: false };
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.ResolvedDependencyChecker = ResolvedDependencyChecker;
|
|
20
|
+
//# sourceMappingURL=resolvedDependencyChecker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolvedDependencyChecker.js","sourceRoot":"","sources":["../../rules/unresolvedProviderDependencies/resolvedDependencyChecker.ts"],"names":[],"mappings":";;;AAKA,MAAa,yBAAyB;IAE7B,KAAK,CAAC,KAAY,EAAE,YAAsB;QAC/C,MAAM,oBAAoB,GAAG,KAAK;aAC/B,mBAAmB,CAAC,UAAU,CAAC;aAC/B,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;aACtC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;IAC5C,CAAC;IAEO,SAAS,CAAC,oBAA2C;QAC3D,IAAI,oBAAoB,EAAE;YACxB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,oBAAoB,CAAC,IAAI,EAAE,CAAC;SAC3F;QACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC1B,CAAC;CACF;AAhBD,8DAgBC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ClassWithImports } from '../dto/classWithImports';
|
|
2
|
+
import type { FileReader } from '../framework/fileReader';
|
|
3
|
+
export declare class SubgraphResolver {
|
|
4
|
+
private fileReader;
|
|
5
|
+
constructor(fileReader: FileReader);
|
|
6
|
+
resolve(clazz: ClassWithImports): ClassWithImports[];
|
|
7
|
+
private getImportedGraphs;
|
|
8
|
+
private getImportedSubgraphClasses;
|
|
9
|
+
private getLocalGraphs;
|
|
10
|
+
private getSubgraphsPropertyFromGraphDecorator;
|
|
11
|
+
private getLocalSubgraphClasses;
|
|
12
|
+
private createLocalGraphClasses;
|
|
13
|
+
private getSubgraphNamesFromDecoratorProperty;
|
|
14
|
+
private getLocalGraphNames;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=subgraphResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subgraphResolver.d.ts","sourceRoot":"","sources":["../../rules/unresolvedProviderDependencies/subgraphResolver.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAI3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,qBAAa,gBAAgB;IACf,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAEnC,OAAO,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,EAAE;IAO3D,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,0BAA0B;IAelC,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,sCAAsC;IAK9C,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,qCAAqC;IAO7C,OAAO,CAAC,kBAAkB;CAO3B"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SubgraphResolver = void 0;
|
|
4
|
+
const utils_1 = require("../ast/utils");
|
|
5
|
+
const classWithImports_1 = require("../dto/classWithImports");
|
|
6
|
+
const file_1 = require("../dto/file");
|
|
7
|
+
class SubgraphResolver {
|
|
8
|
+
constructor(fileReader) {
|
|
9
|
+
this.fileReader = fileReader;
|
|
10
|
+
}
|
|
11
|
+
resolve(clazz) {
|
|
12
|
+
return [
|
|
13
|
+
...this.getImportedGraphs(clazz),
|
|
14
|
+
...this.getLocalGraphs(clazz),
|
|
15
|
+
].flatMap((g) => [g, ...this.resolve(g)]);
|
|
16
|
+
}
|
|
17
|
+
getImportedGraphs({ clazz, imports }) {
|
|
18
|
+
const subgraphs = this.getSubgraphsPropertyFromGraphDecorator(clazz);
|
|
19
|
+
return this.getImportedSubgraphClasses(subgraphs, imports);
|
|
20
|
+
}
|
|
21
|
+
getImportedSubgraphClasses(subgraphs, imports) {
|
|
22
|
+
if (!subgraphs)
|
|
23
|
+
return [];
|
|
24
|
+
const subgraphNames = this.getSubgraphNamesFromDecoratorProperty(subgraphs);
|
|
25
|
+
const classes = [];
|
|
26
|
+
imports.forEach(($import) => {
|
|
27
|
+
// TODO: convert this to a map with an inner for each?
|
|
28
|
+
subgraphNames.forEach((subgraphName) => {
|
|
29
|
+
if ($import.includes(subgraphName)) {
|
|
30
|
+
classes.push(...this.fileReader.read($import.path).toClassWithImports());
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
return classes;
|
|
35
|
+
}
|
|
36
|
+
getLocalGraphs(clazzWithImports) {
|
|
37
|
+
const subgraphs = this.getSubgraphsPropertyFromGraphDecorator(clazzWithImports.clazz);
|
|
38
|
+
return this.getLocalSubgraphClasses(subgraphs, clazzWithImports);
|
|
39
|
+
}
|
|
40
|
+
getSubgraphsPropertyFromGraphDecorator(clazz) {
|
|
41
|
+
const graphDecorator = clazz.requireDecorator('Graph');
|
|
42
|
+
return graphDecorator.getProperty('subgraphs');
|
|
43
|
+
}
|
|
44
|
+
getLocalSubgraphClasses(subgraphs, { clazz, imports }) {
|
|
45
|
+
if (!subgraphs)
|
|
46
|
+
return [];
|
|
47
|
+
const allSubgraphs = this.getSubgraphNamesFromDecoratorProperty(subgraphs);
|
|
48
|
+
const localGraphNames = this.getLocalGraphNames(allSubgraphs, imports);
|
|
49
|
+
return this.createLocalGraphClasses(clazz, localGraphNames, imports);
|
|
50
|
+
}
|
|
51
|
+
createLocalGraphClasses(clazz, localGraphNames, imports) {
|
|
52
|
+
if (localGraphNames.length === 0)
|
|
53
|
+
return [];
|
|
54
|
+
const parent = new file_1.File((0, utils_1.requireProgram)(clazz.node));
|
|
55
|
+
return localGraphNames.map((localGraphName) => {
|
|
56
|
+
return new classWithImports_1.ClassWithImports(parent.requireGraph(localGraphName), imports);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
getSubgraphNamesFromDecoratorProperty(subgraphs) {
|
|
60
|
+
return (0, utils_1.mapArrayExpression)(subgraphs.getValue(), (el) => el.name);
|
|
61
|
+
}
|
|
62
|
+
getLocalGraphNames(subgraphs, imports) {
|
|
63
|
+
return subgraphs.filter((subgraph) => {
|
|
64
|
+
return imports.some(($import) => {
|
|
65
|
+
return $import.includes(subgraph);
|
|
66
|
+
}) === false;
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
exports.SubgraphResolver = SubgraphResolver;
|
|
71
|
+
//# sourceMappingURL=subgraphResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subgraphResolver.js","sourceRoot":"","sources":["../../rules/unresolvedProviderDependencies/subgraphResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { TSESTree } from '@typescript-eslint/types';
|
|
2
|
+
import type { RuleContext } from '@typescript-eslint/utils/ts-eslint';
|
|
3
|
+
export type Context = RuleContext<'unresolved-provider-dependencies', []>;
|
|
4
|
+
export type ArrayExpressionElement = TSESTree.ArrayExpression['elements'][number];
|
|
5
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../rules/unresolvedProviderDependencies/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAEtE,MAAM,MAAM,OAAO,GAAG,WAAW,CAAC,kCAAkC,EAAE,EAAE,CAAC,CAAC;AAE1E,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../rules/unresolvedProviderDependencies/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertions.d.ts","sourceRoot":"","sources":["../../rules/utils/assertions.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAExF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.assertDefined = void 0;
|
|
4
|
+
function assertDefined(obj, message) {
|
|
5
|
+
if (!obj)
|
|
6
|
+
throw new Error(message || 'Expected object to exist');
|
|
7
|
+
}
|
|
8
|
+
exports.assertDefined = assertDefined;
|
|
9
|
+
//# sourceMappingURL=assertions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertions.js","sourceRoot":"","sources":["../../rules/utils/assertions.ts"],"names":[],"mappings":";;;AAAA,SAAgB,aAAa,CAAI,GAAM,EAAE,OAAgB;IACvD,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,0BAA0B,CAAC,CAAC;AACnE,CAAC;AAFD,sCAEC"}
|
package/package.json
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"name": "eslint-plugin-obsidian",
|
|
3
3
|
"description": "ESLint rules for Obsidian",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
|
-
"version": "2.
|
|
5
|
+
"version": "2.6.0",
|
|
6
6
|
"scripts": {
|
|
7
|
-
"build": "npx tsc",
|
|
7
|
+
"build": "npx tsc --project tsconfig.prod.json",
|
|
8
8
|
"test": "npx jest",
|
|
9
9
|
"lint": "eslint rules --ignore-pattern '*.d.ts' --ext .ts,.tsx,.js"
|
|
10
10
|
},
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
"LICENSE"
|
|
16
16
|
],
|
|
17
17
|
"peerDependencies": {
|
|
18
|
-
"eslint": "8.x.x"
|
|
18
|
+
"eslint": "8.x.x",
|
|
19
|
+
"react-obsidian": "2.x.x"
|
|
19
20
|
},
|
|
20
21
|
"dependencies": {
|
|
21
22
|
"@typescript-eslint/parser": "6.6.x",
|
|
@@ -48,7 +49,6 @@
|
|
|
48
49
|
"eslint-plugin-unused-imports": "3.1.x",
|
|
49
50
|
"jest": "29.5.x",
|
|
50
51
|
"jest-extended": "^4.0.0",
|
|
51
|
-
"react-obsidian": "2.x.x",
|
|
52
52
|
"typescript": "^4.5.4"
|
|
53
53
|
},
|
|
54
54
|
"keywords": [
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { TSESTree } from '@typescript-eslint/types';
|
|
2
|
-
import type { RuleContext } from '@typescript-eslint/utils/ts-eslint';
|
|
3
|
-
export type MessageIds = 'unresolved-provider-dependencies';
|
|
4
|
-
export declare function getSubGraphs(decorators: TSESTree.Decorator[]): string[];
|
|
5
|
-
export declare function getDependenciesFromSubgraphs(imports: TSESTree.ImportDeclaration[], subGraphs: string[], context: RuleContext<'unresolved-provider-dependencies', []>): string[];
|
|
6
|
-
export declare function mapFunctions(node: TSESTree.ClassDeclaration): string[];
|
|
7
|
-
export declare function checkDependencies(node: TSESTree.ClassDeclaration, existingDependencies: string[]): {
|
|
8
|
-
value: boolean;
|
|
9
|
-
param: string;
|
|
10
|
-
} | {
|
|
11
|
-
value: boolean;
|
|
12
|
-
param?: undefined;
|
|
13
|
-
};
|
|
14
|
-
export declare function getDecoratorName(decorator: TSESTree.Decorator): string;
|
|
15
|
-
export declare function getPropertyDeclarations(node: TSESTree.ClassDeclaration): string[];
|
|
16
|
-
//# sourceMappingURL=ASTFunctions.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ASTFunctions.d.ts","sourceRoot":"","sources":["../../rules/unresolvedProviderDependencies/ASTFunctions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAIpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAEtE,MAAM,MAAM,UAAU,GAAG,kCAAkC,CAAC;AAE5D,wBAAgB,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,SAAS,EAAE,YAkB5D;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,QAAQ,CAAC,iBAAiB,EAAE,EACrC,SAAS,EAAC,MAAM,EAAE,EAClB,OAAO,EAAC,WAAW,CAAC,kCAAkC,EAAE,EAAE,CAAC,YAsC5D;AACD,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,YAc3D;AACD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,EAAE;;;;;;EAmBhG;AACD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,UAE7D;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAC,QAAQ,CAAC,gBAAgB,YAMrE"}
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.getPropertyDeclarations = exports.getDecoratorName = exports.checkDependencies = exports.mapFunctions = exports.getDependenciesFromSubgraphs = exports.getSubGraphs = void 0;
|
|
27
|
-
const types_1 = require("@typescript-eslint/types");
|
|
28
|
-
const fs = __importStar(require("fs"));
|
|
29
|
-
const parser_1 = require("@typescript-eslint/parser");
|
|
30
|
-
const path = require("path");
|
|
31
|
-
function getSubGraphs(decorators) {
|
|
32
|
-
const args = decorators[0].expression.arguments;
|
|
33
|
-
if (args) {
|
|
34
|
-
for (let i = 0; i < args.length; i++) {
|
|
35
|
-
if (args[i].type === types_1.TSESTree.AST_NODE_TYPES.ObjectExpression) {
|
|
36
|
-
const { properties } = args[i];
|
|
37
|
-
if (properties) {
|
|
38
|
-
for (let j = 0; j < properties.length; j++) {
|
|
39
|
-
if (properties[j].key.name === 'subgraphs') {
|
|
40
|
-
return properties[j].value
|
|
41
|
-
.elements.map((subGraph) => subGraph.name);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
return [];
|
|
49
|
-
}
|
|
50
|
-
exports.getSubGraphs = getSubGraphs;
|
|
51
|
-
function getDependenciesFromSubgraphs(imports, subGraphs, context) {
|
|
52
|
-
const paths = [];
|
|
53
|
-
const dependencies = [];
|
|
54
|
-
imports.forEach((el) => {
|
|
55
|
-
el.specifiers.forEach((specifier) => {
|
|
56
|
-
if (subGraphs.includes(specifier.local.name)) {
|
|
57
|
-
paths.push({ path: el.source.value, import: specifier.local.name });
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
});
|
|
61
|
-
paths.forEach((el) => {
|
|
62
|
-
// eslint-disable-next-line dot-notation
|
|
63
|
-
const filePath = path.join(path.dirname(context.getFilename()), `${el['path']}.ts`);
|
|
64
|
-
const fileContent = fs.readFileSync(filePath, 'utf8');
|
|
65
|
-
const fileAST = (0, parser_1.parse)(fileContent, {
|
|
66
|
-
ecmaVersion: 9,
|
|
67
|
-
ecmaFeatures: {
|
|
68
|
-
globalReturn: false,
|
|
69
|
-
jsx: true,
|
|
70
|
-
},
|
|
71
|
-
sourceType: 'module',
|
|
72
|
-
comment: true,
|
|
73
|
-
attachComment: true,
|
|
74
|
-
tokens: true,
|
|
75
|
-
loc: true,
|
|
76
|
-
range: true,
|
|
77
|
-
filePath,
|
|
78
|
-
});
|
|
79
|
-
dependencies.push(...mapFunctions(fileAST.body[fileAST.body.length - 1]
|
|
80
|
-
.declaration));
|
|
81
|
-
});
|
|
82
|
-
return dependencies;
|
|
83
|
-
}
|
|
84
|
-
exports.getDependenciesFromSubgraphs = getDependenciesFromSubgraphs;
|
|
85
|
-
function mapFunctions(node) {
|
|
86
|
-
const { body } = node.body;
|
|
87
|
-
const existingDependencies = [];
|
|
88
|
-
body.forEach((el) => {
|
|
89
|
-
var _a;
|
|
90
|
-
if (el.type === types_1.TSESTree.AST_NODE_TYPES.MethodDefinition) {
|
|
91
|
-
const decorators = (_a = (el)) === null || _a === void 0 ? void 0 : _a.decorators;
|
|
92
|
-
if (decorators) {
|
|
93
|
-
if (decorators.map((decorator) => getDecoratorName(decorator)).includes('Provides')) {
|
|
94
|
-
existingDependencies.push(el.key.name);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
|
-
return existingDependencies;
|
|
100
|
-
}
|
|
101
|
-
exports.mapFunctions = mapFunctions;
|
|
102
|
-
function checkDependencies(node, existingDependencies) {
|
|
103
|
-
var _a, _b;
|
|
104
|
-
const body = (_a = node === null || node === void 0 ? void 0 : node.body) === null || _a === void 0 ? void 0 : _a.body;
|
|
105
|
-
for (let j = 0; j < body.length; j++) {
|
|
106
|
-
if (body[j].type === types_1.TSESTree.AST_NODE_TYPES.MethodDefinition
|
|
107
|
-
&& body[j].key.name !== 'constructor') {
|
|
108
|
-
const params = (_b = body[j].value) === null || _b === void 0 ? void 0 : _b.params;
|
|
109
|
-
if (params) {
|
|
110
|
-
for (let i = 0; i < params.length; i++) {
|
|
111
|
-
if (!existingDependencies.includes(params[i].name)) {
|
|
112
|
-
return {
|
|
113
|
-
value: false,
|
|
114
|
-
param: params[i].name,
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
return { value: true };
|
|
122
|
-
}
|
|
123
|
-
exports.checkDependencies = checkDependencies;
|
|
124
|
-
function getDecoratorName(decorator) {
|
|
125
|
-
var _a, _b;
|
|
126
|
-
return (_b = (_a = decorator === null || decorator === void 0 ? void 0 : decorator.expression) === null || _a === void 0 ? void 0 : _a.callee) === null || _b === void 0 ? void 0 : _b.name;
|
|
127
|
-
}
|
|
128
|
-
exports.getDecoratorName = getDecoratorName;
|
|
129
|
-
function getPropertyDeclarations(node) {
|
|
130
|
-
const classBody = node.body.body;
|
|
131
|
-
const properties = classBody.map((method) => {
|
|
132
|
-
return method.key.name;
|
|
133
|
-
});
|
|
134
|
-
return properties;
|
|
135
|
-
}
|
|
136
|
-
exports.getPropertyDeclarations = getPropertyDeclarations;
|
|
137
|
-
//# sourceMappingURL=ASTFunctions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ASTFunctions.js","sourceRoot":"","sources":["../../rules/unresolvedProviderDependencies/ASTFunctions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { RuleContext } from '@typescript-eslint/utils/ts-eslint';
|
|
2
|
-
import type { TSESTree } from '@typescript-eslint/types';
|
|
3
|
-
export declare function create(context: RuleContext<'unresolved-provider-dependencies', []>): {
|
|
4
|
-
ImportDeclaration(node: TSESTree.ImportDeclaration): void;
|
|
5
|
-
ClassDeclaration(node: TSESTree.ClassDeclaration): void;
|
|
6
|
-
};
|
|
7
|
-
//# sourceMappingURL=createFunction.d.ts.map
|