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.
Files changed (103) hide show
  1. package/dist/ast/utils.d.ts +11 -0
  2. package/dist/ast/utils.d.ts.map +1 -0
  3. package/dist/ast/utils.js +78 -0
  4. package/dist/ast/utils.js.map +1 -0
  5. package/dist/dto/class.d.ts +14 -0
  6. package/dist/dto/class.d.ts.map +1 -0
  7. package/dist/dto/class.js +45 -0
  8. package/dist/dto/class.js.map +1 -0
  9. package/dist/dto/classWithImports.d.ts +8 -0
  10. package/dist/dto/classWithImports.d.ts.map +1 -0
  11. package/dist/dto/classWithImports.js +11 -0
  12. package/dist/dto/classWithImports.js.map +1 -0
  13. package/dist/dto/decorator.d.ts +13 -0
  14. package/dist/dto/decorator.d.ts.map +1 -0
  15. package/dist/dto/decorator.js +19 -0
  16. package/dist/dto/decorator.js.map +1 -0
  17. package/dist/dto/file.d.ts +15 -0
  18. package/dist/dto/file.d.ts.map +1 -0
  19. package/dist/dto/file.js +52 -0
  20. package/dist/dto/file.js.map +1 -0
  21. package/dist/dto/import.d.ts +8 -0
  22. package/dist/dto/import.d.ts.map +1 -0
  23. package/dist/dto/import.js +18 -0
  24. package/dist/dto/import.js.map +1 -0
  25. package/dist/dto/method.d.ts +11 -0
  26. package/dist/dto/method.d.ts.map +1 -0
  27. package/dist/dto/method.js +28 -0
  28. package/dist/dto/method.js.map +1 -0
  29. package/dist/dto/parameter.d.ts +7 -0
  30. package/dist/dto/parameter.d.ts.map +1 -0
  31. package/dist/dto/parameter.js +13 -0
  32. package/dist/dto/parameter.js.map +1 -0
  33. package/dist/dto/property.d.ts +7 -0
  34. package/dist/dto/property.d.ts.map +1 -0
  35. package/dist/dto/property.js +13 -0
  36. package/dist/dto/property.js.map +1 -0
  37. package/dist/framework/fileReader.d.ts +11 -0
  38. package/dist/framework/fileReader.d.ts.map +1 -0
  39. package/dist/framework/fileReader.js +59 -0
  40. package/dist/framework/fileReader.js.map +1 -0
  41. package/dist/framework/pathResolver.d.ts +5 -0
  42. package/dist/framework/pathResolver.d.ts.map +1 -0
  43. package/dist/framework/pathResolver.js +11 -0
  44. package/dist/framework/pathResolver.js.map +1 -0
  45. package/dist/index.js +2 -2
  46. package/dist/index.js.map +1 -1
  47. package/dist/unresolvedProviderDependencies/createRule.d.ts +8 -0
  48. package/dist/unresolvedProviderDependencies/createRule.d.ts.map +1 -0
  49. package/dist/unresolvedProviderDependencies/createRule.js +23 -0
  50. package/dist/unresolvedProviderDependencies/createRule.js.map +1 -0
  51. package/dist/unresolvedProviderDependencies/dependencyResolver.d.ts +11 -0
  52. package/dist/unresolvedProviderDependencies/dependencyResolver.d.ts.map +1 -0
  53. package/dist/unresolvedProviderDependencies/dependencyResolver.js +28 -0
  54. package/dist/unresolvedProviderDependencies/dependencyResolver.js.map +1 -0
  55. package/dist/unresolvedProviderDependencies/errorReporter.d.ts +8 -0
  56. package/dist/unresolvedProviderDependencies/errorReporter.d.ts.map +1 -0
  57. package/dist/unresolvedProviderDependencies/errorReporter.js +16 -0
  58. package/dist/unresolvedProviderDependencies/errorReporter.js.map +1 -0
  59. package/dist/unresolvedProviderDependencies/graphHandler.d.ts +14 -0
  60. package/dist/unresolvedProviderDependencies/graphHandler.d.ts.map +1 -0
  61. package/dist/unresolvedProviderDependencies/graphHandler.js +24 -0
  62. package/dist/unresolvedProviderDependencies/graphHandler.js.map +1 -0
  63. package/dist/unresolvedProviderDependencies/index.d.ts +2 -3
  64. package/dist/unresolvedProviderDependencies/index.d.ts.map +1 -1
  65. package/dist/unresolvedProviderDependencies/index.js +23 -16
  66. package/dist/unresolvedProviderDependencies/index.js.map +1 -1
  67. package/dist/unresolvedProviderDependencies/resolvedDependencyChecker.d.ts +12 -0
  68. package/dist/unresolvedProviderDependencies/resolvedDependencyChecker.d.ts.map +1 -0
  69. package/dist/unresolvedProviderDependencies/resolvedDependencyChecker.js +20 -0
  70. package/dist/unresolvedProviderDependencies/resolvedDependencyChecker.js.map +1 -0
  71. package/dist/unresolvedProviderDependencies/subgraphResolver.d.ts +16 -0
  72. package/dist/unresolvedProviderDependencies/subgraphResolver.d.ts.map +1 -0
  73. package/dist/unresolvedProviderDependencies/subgraphResolver.js +71 -0
  74. package/dist/unresolvedProviderDependencies/subgraphResolver.js.map +1 -0
  75. package/dist/unresolvedProviderDependencies/types.d.ts +5 -0
  76. package/dist/unresolvedProviderDependencies/types.d.ts.map +1 -0
  77. package/dist/unresolvedProviderDependencies/types.js +3 -0
  78. package/dist/unresolvedProviderDependencies/types.js.map +1 -0
  79. package/dist/utils/assertions.d.ts +2 -0
  80. package/dist/utils/assertions.d.ts.map +1 -0
  81. package/dist/utils/assertions.js +9 -0
  82. package/dist/utils/assertions.js.map +1 -0
  83. package/package.json +4 -4
  84. package/dist/unresolvedProviderDependencies/ASTFunctions.d.ts +0 -16
  85. package/dist/unresolvedProviderDependencies/ASTFunctions.d.ts.map +0 -1
  86. package/dist/unresolvedProviderDependencies/ASTFunctions.js +0 -137
  87. package/dist/unresolvedProviderDependencies/ASTFunctions.js.map +0 -1
  88. package/dist/unresolvedProviderDependencies/createFunction.d.ts +0 -7
  89. package/dist/unresolvedProviderDependencies/createFunction.d.ts.map +0 -1
  90. package/dist/unresolvedProviderDependencies/createFunction.js +0 -39
  91. package/dist/unresolvedProviderDependencies/createFunction.js.map +0 -1
  92. package/dist/unresolvedProviderDependencies/invalidGraphs.d.ts +0 -3
  93. package/dist/unresolvedProviderDependencies/invalidGraphs.d.ts.map +0 -1
  94. package/dist/unresolvedProviderDependencies/invalidGraphs.js +0 -27
  95. package/dist/unresolvedProviderDependencies/invalidGraphs.js.map +0 -1
  96. package/dist/unresolvedProviderDependencies/testUtils/subgraph.d.ts +0 -6
  97. package/dist/unresolvedProviderDependencies/testUtils/subgraph.d.ts.map +0 -1
  98. package/dist/unresolvedProviderDependencies/testUtils/subgraph.js +0 -38
  99. package/dist/unresolvedProviderDependencies/testUtils/subgraph.js.map +0 -1
  100. package/dist/unresolvedProviderDependencies/testUtils/validGraphs.d.ts +0 -3
  101. package/dist/unresolvedProviderDependencies/testUtils/validGraphs.d.ts.map +0 -1
  102. package/dist/unresolvedProviderDependencies/testUtils/validGraphs.js +0 -29
  103. 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
- type Rule = TSESLint.RuleModule<'unresolved-provider-dependencies', []>;
3
- export declare const unresolvedProviderDependencies: Rule;
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;AAOtE,KAAK,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,kCAAkC,EAAE,EAAE,CAAC,CAAC;AAGxE,eAAO,MAAM,8BAA8B,EAAE,IAe3C,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.unresolvedProviderDependencies = void 0;
3
+ exports.unresolvedProviderDependenciesGenerator = void 0;
4
4
  const utils_1 = require("@typescript-eslint/utils");
5
- const createFunction_1 = require("./createFunction");
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
- exports.unresolvedProviderDependencies = createRule({
8
- create: createFunction_1.create,
9
- name: 'unresolved-provider-dependencies',
10
- meta: {
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
- messages: {
16
- 'unresolved-provider-dependencies': 'Dependency {{ dependencyName }} is unresolved.',
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
- schema: [],
19
- type: 'problem',
20
- },
21
- defaultOptions: [],
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;AACtE,qDAA0C;AAE1C,MAAM,UAAU,GAAG,mBAAW,CAAC,WAAW,CACxC,CAAC,IAAI,EAAE,EAAE,CAAC,2EAA2E,IAAI,EAAE,CAC5F,CAAC;AAKW,QAAA,8BAA8B,GAAS,UAAU,CAAC;IAC7D,MAAM,EAAN,uBAAM;IACN,IAAI,EAAE,kCAAkC;IACxC,IAAI,EAAE;QACJ,IAAI,EAAE;YACJ,WAAW,EAAE,6DAA6D;YAC1E,WAAW,EAAE,QAAQ;SACtB;QACD,QAAQ,EAAE;YACR,kCAAkC,EAAE,gDAAgD;SACrF;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,SAAS;KAChB;IACD,cAAc,EAAE,EAAE;CACnB,CAAC,CAAC"}
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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../rules/unresolvedProviderDependencies/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export declare function assertDefined<T>(obj: T, message?: string): asserts obj is NonNullable<T>;
2
+ //# sourceMappingURL=assertions.d.ts.map
@@ -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.0",
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