eslint-plugin-obsidian 3.0.0-alpha.6 → 3.0.0-alpha.7

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 (32) hide show
  1. package/dist/dto/class.d.ts +4 -1
  2. package/dist/dto/class.d.ts.map +1 -1
  3. package/dist/dto/class.js +10 -0
  4. package/dist/dto/class.js.map +1 -1
  5. package/dist/dto/classFile.d.ts +1 -0
  6. package/dist/dto/classFile.d.ts.map +1 -1
  7. package/dist/dto/classFile.js +3 -0
  8. package/dist/dto/classFile.js.map +1 -1
  9. package/dist/dto/file.d.ts +2 -0
  10. package/dist/dto/file.d.ts.map +1 -1
  11. package/dist/dto/file.js +13 -0
  12. package/dist/dto/file.js.map +1 -1
  13. package/dist/rules/unresolvedProviderDependencies/classResolver.d.ts +8 -0
  14. package/dist/rules/unresolvedProviderDependencies/classResolver.d.ts.map +1 -0
  15. package/dist/rules/unresolvedProviderDependencies/classResolver.js +15 -0
  16. package/dist/rules/unresolvedProviderDependencies/classResolver.js.map +1 -0
  17. package/dist/rules/unresolvedProviderDependencies/createRule.d.ts.map +1 -1
  18. package/dist/rules/unresolvedProviderDependencies/createRule.js +2 -1
  19. package/dist/rules/unresolvedProviderDependencies/createRule.js.map +1 -1
  20. package/dist/rules/unresolvedProviderDependencies/dependencyResolver.d.ts +4 -1
  21. package/dist/rules/unresolvedProviderDependencies/dependencyResolver.d.ts.map +1 -1
  22. package/dist/rules/unresolvedProviderDependencies/dependencyResolver.js +14 -5
  23. package/dist/rules/unresolvedProviderDependencies/dependencyResolver.js.map +1 -1
  24. package/dist/rules/unresolvedProviderDependencies/subgraphResolver.d.ts +4 -1
  25. package/dist/rules/unresolvedProviderDependencies/subgraphResolver.d.ts.map +1 -1
  26. package/dist/rules/unresolvedProviderDependencies/subgraphResolver.js +15 -2
  27. package/dist/rules/unresolvedProviderDependencies/subgraphResolver.js.map +1 -1
  28. package/dist/utils/filter.d.ts +2 -0
  29. package/dist/utils/filter.d.ts.map +1 -0
  30. package/dist/utils/filter.js +7 -0
  31. package/dist/utils/filter.js.map +1 -0
  32. package/package.json +3 -3
@@ -4,12 +4,15 @@ import { Method } from './method';
4
4
  export declare class Clazz {
5
5
  node: TSESTree.ClassDeclaration;
6
6
  constructor(node: TSESTree.ClassDeclaration);
7
+ get isAbstract(): boolean;
7
8
  isDecoratedWithIgnoreCase(decoratorName: string): boolean;
8
9
  get decoratorNames(): string[];
9
10
  get decorators(): Decorator[];
11
+ get superClass(): string | null;
10
12
  get body(): TSESTree.ClassElement[];
13
+ mapDecoratedMethods<T>(decoratorName: string, mapper: (method: Method) => T): T[];
11
14
  getDecoratedMethods(decoratorName: string): Method[];
12
15
  requireDecoratorIgnoreCase(name: string): Decorator;
13
- private get name();
16
+ get name(): string | undefined;
14
17
  }
15
18
  //# sourceMappingURL=class.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"class.d.ts","sourceRoot":"","sources":["../../src/dto/class.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,qBAAa,KAAK;IACG,IAAI,EAAE,QAAQ,CAAC,gBAAgB;gBAA/B,IAAI,EAAE,QAAQ,CAAC,gBAAgB;IAI3C,yBAAyB,CAAC,aAAa,EAAE,MAAM;IAItD,IAAI,cAAc,aAIjB;IAED,IAAI,UAAU,gBAIb;IAED,IAAI,IAAI,4BAEP;IAEM,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE;IAOpD,0BAA0B,CAAC,IAAI,EAAE,MAAM;IAQ9C,OAAO,KAAK,IAAI,GAEf;CACF"}
1
+ {"version":3,"file":"class.d.ts","sourceRoot":"","sources":["../../src/dto/class.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,qBAAa,KAAK;IACG,IAAI,EAAE,QAAQ,CAAC,gBAAgB;gBAA/B,IAAI,EAAE,QAAQ,CAAC,gBAAgB;IAIlD,IAAI,UAAU,YAEb;IAEM,yBAAyB,CAAC,aAAa,EAAE,MAAM;IAItD,IAAI,cAAc,aAIjB;IAED,IAAI,UAAU,gBAIb;IAED,IAAI,UAAU,kBAEb;IAED,IAAI,IAAI,4BAEP;IAEM,mBAAmB,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE;IAIjF,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE;IAOpD,0BAA0B,CAAC,IAAI,EAAE,MAAM;IAQ9C,IAAW,IAAI,uBAEd;CACF"}
package/dist/dto/class.js CHANGED
@@ -5,12 +5,16 @@ const decorator_1 = require("./decorator");
5
5
  const assertions_1 = require("../utils/assertions");
6
6
  const ast_1 = require("../utils/ast");
7
7
  const method_1 = require("./method");
8
+ const identifier_1 = require("./identifier");
8
9
  class Clazz {
9
10
  node;
10
11
  constructor(node) {
11
12
  this.node = node;
12
13
  (0, assertions_1.assertDefined)(this.node);
13
14
  }
15
+ get isAbstract() {
16
+ return this.node.abstract;
17
+ }
14
18
  isDecoratedWithIgnoreCase(decoratorName) {
15
19
  return this.decoratorNames.some(name => name.toLowerCase() === decoratorName.toLowerCase());
16
20
  }
@@ -24,9 +28,15 @@ class Clazz {
24
28
  return new decorator_1.Decorator(decorator);
25
29
  });
26
30
  }
31
+ get superClass() {
32
+ return this.node.superClass && new identifier_1.Identifier(this.node.superClass).name;
33
+ }
27
34
  get body() {
28
35
  return this.node.body.body;
29
36
  }
37
+ mapDecoratedMethods(decoratorName, mapper) {
38
+ return this.getDecoratedMethods(decoratorName).map(mapper);
39
+ }
30
40
  getDecoratedMethods(decoratorName) {
31
41
  return this.body
32
42
  .filter(ast_1.isMethodDefinition)
@@ -1 +1 @@
1
- {"version":3,"file":"class.js","sourceRoot":"","sources":["../../src/dto/class.ts"],"names":[],"mappings":";;;AACA,2CAAwC;AACxC,oDAAoD;AACpD,sCAAkD;AAClD,qCAAkC;AAElC,MAAa,KAAK;IACG;IAAnB,YAAmB,IAA+B;QAA/B,SAAI,GAAJ,IAAI,CAA2B;QAChD,IAAA,0BAAa,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAEM,yBAAyB,CAAC,aAAqB;QACpD,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9F,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAoB,EAAE,EAAE;YAClD,OAAO,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;QAC1C,CAAC,CAAC,IAAI,EAAE,CAAC;IACX,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,SAA6B,EAAE,EAAE;YACxE,OAAO,IAAI,qBAAS,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IAC7B,CAAC;IAEM,mBAAmB,CAAC,aAAqB;QAC9C,OAAO,IAAI,CAAC,IAAI;aACb,MAAM,CAAC,wBAAkB,CAAC;aAC1B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,eAAM,CAAC,IAAI,CAAC,CAAC;aAC7B,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC,CAAC;IACvE,CAAC;IAEM,0BAA0B,CAAC,IAAY;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,UAAqB,EAAE,EAAE;YAC/D,OAAO,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;QAChF,CAAC,CAAC,CAAC;QACH,IAAA,0BAAa,EAAC,SAAS,EAAE,aAAa,IAAI,uBAAuB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9E,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAY,IAAI;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;IAC5B,CAAC;CACF;AA3CD,sBA2CC"}
1
+ {"version":3,"file":"class.js","sourceRoot":"","sources":["../../src/dto/class.ts"],"names":[],"mappings":";;;AACA,2CAAwC;AACxC,oDAAoD;AACpD,sCAAkD;AAClD,qCAAkC;AAClC,6CAA0C;AAE1C,MAAa,KAAK;IACG;IAAnB,YAAmB,IAA+B;QAA/B,SAAI,GAAJ,IAAI,CAA2B;QAChD,IAAA,0BAAa,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC5B,CAAC;IAEM,yBAAyB,CAAC,aAAqB;QACpD,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9F,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAoB,EAAE,EAAE;YAClD,OAAO,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;QAC1C,CAAC,CAAC,IAAI,EAAE,CAAC;IACX,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,SAA6B,EAAE,EAAE;YACxE,OAAO,IAAI,qBAAS,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,uBAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;IAC3E,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IAC7B,CAAC;IAEM,mBAAmB,CAAI,aAAqB,EAAE,MAA6B;QAChF,OAAO,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC;IAEM,mBAAmB,CAAC,aAAqB;QAC9C,OAAO,IAAI,CAAC,IAAI;aACb,MAAM,CAAC,wBAAkB,CAAC;aAC1B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,eAAM,CAAC,IAAI,CAAC,CAAC;aAC7B,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC,CAAC;IACvE,CAAC;IAEM,0BAA0B,CAAC,IAAY;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,UAAqB,EAAE,EAAE;YAC/D,OAAO,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;QAChF,CAAC,CAAC,CAAC;QACH,IAAA,0BAAa,EAAC,SAAS,EAAE,aAAa,IAAI,uBAAuB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9E,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;IAC5B,CAAC;CACF;AAvDD,sBAuDC"}
@@ -5,5 +5,6 @@ export declare class ClassFile {
5
5
  readonly imports: Import[];
6
6
  readonly path: string;
7
7
  constructor(clazz: Clazz, imports: Import[], path: string);
8
+ get superClass(): string | null;
8
9
  }
9
10
  //# sourceMappingURL=classFile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"classFile.d.ts","sourceRoot":"","sources":["../../src/dto/classFile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,qBAAa,SAAS;aAEF,KAAK,EAAE,KAAK;aACZ,OAAO,EAAE,MAAM,EAAE;aACjB,IAAI,EAAE,MAAM;gBAFZ,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,EAAE,MAAM;CAE/B"}
1
+ {"version":3,"file":"classFile.d.ts","sourceRoot":"","sources":["../../src/dto/classFile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,qBAAa,SAAS;aAEF,KAAK,EAAE,KAAK;aACZ,OAAO,EAAE,MAAM,EAAE;aACjB,IAAI,EAAE,MAAM;gBAFZ,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,EAAE,MAAM;IAG9B,IAAI,UAAU,kBAEb;CACF"}
@@ -10,6 +10,9 @@ class ClassFile {
10
10
  this.imports = imports;
11
11
  this.path = path;
12
12
  }
13
+ get superClass() {
14
+ return this.clazz.superClass;
15
+ }
13
16
  }
14
17
  exports.ClassFile = ClassFile;
15
18
  //# sourceMappingURL=classFile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"classFile.js","sourceRoot":"","sources":["../../src/dto/classFile.ts"],"names":[],"mappings":";;;AAGA,MAAa,SAAS;IAEF;IACA;IACA;IAHlB,YACkB,KAAY,EACZ,OAAiB,EACjB,IAAY;QAFZ,UAAK,GAAL,KAAK,CAAO;QACZ,YAAO,GAAP,OAAO,CAAU;QACjB,SAAI,GAAJ,IAAI,CAAQ;IAC3B,CAAC;CACL;AAND,8BAMC"}
1
+ {"version":3,"file":"classFile.js","sourceRoot":"","sources":["../../src/dto/classFile.ts"],"names":[],"mappings":";;;AAGA,MAAa,SAAS;IAEF;IACA;IACA;IAHlB,YACkB,KAAY,EACZ,OAAiB,EACjB,IAAY;QAFZ,UAAK,GAAL,KAAK,CAAO;QACZ,YAAO,GAAP,OAAO,CAAU;QACjB,SAAI,GAAJ,IAAI,CAAQ;IAC3B,CAAC;IAEJ,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;IAC/B,CAAC;CACF;AAVD,8BAUC"}
@@ -13,6 +13,8 @@ export declare class File {
13
13
  toClassWithImports(): ClassFile[];
14
14
  get imports(): Import[];
15
15
  get graphs(): Clazz[];
16
+ findClass(byName: string): ClassFile | undefined;
17
+ private get classes();
16
18
  get variables(): Variable[];
17
19
  }
18
20
  //# sourceMappingURL=file.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../src/dto/file.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAOhC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,qBAAa,IAAI;IAEH,OAAO,CAAC,OAAO;IAAoB,OAAO,CAAC,IAAI;gBAD/C,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM;IAG7C,YAAY,CAAC,IAAI,EAAE,MAAM;IAQhC,OAAO,KAAK,UAAU,GAIrB;IAED,OAAO,KAAK,IAAI,GAEf;IAEM,kBAAkB;IAMzB,IAAI,OAAO,aAIV;IAED,IAAI,MAAM,IASA,KAAK,EAAE,CAChB;IAED,IAAI,SAAS,eAMZ;CACF"}
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../src/dto/file.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAOhC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,qBAAa,IAAI;IAEH,OAAO,CAAC,OAAO;IAAoB,OAAO,CAAC,IAAI;gBAD/C,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM;IAG7C,YAAY,CAAC,IAAI,EAAE,MAAM;IAQhC,OAAO,KAAK,UAAU,GAIrB;IAED,OAAO,KAAK,IAAI,GAEf;IAEM,kBAAkB;IAMzB,IAAI,OAAO,aAIV;IAED,IAAI,MAAM,IASA,KAAK,EAAE,CAChB;IAED,SAAS,CAAC,MAAM,EAAE,MAAM;IAKxB,OAAO,KAAK,OAAO,GAQlB;IAED,IAAI,SAAS,eAMZ;CACF"}
package/dist/dto/file.js CHANGED
@@ -50,6 +50,19 @@ class File {
50
50
  return clazz ? clazz.isDecoratedWithIgnoreCase('Graph') : false;
51
51
  });
52
52
  }
53
+ findClass(byName) {
54
+ const clazz = this.classes.find($clazz => $clazz.name === byName);
55
+ return clazz && new classFile_1.ClassFile(clazz, this.imports, this.path);
56
+ }
57
+ get classes() {
58
+ return this.body
59
+ .filter(ast_1.isClassLike)
60
+ .map((node) => {
61
+ const clazz = (0, ast_1.getClassDeclaration)(node);
62
+ return clazz && new class_1.Clazz(clazz);
63
+ })
64
+ .filter(Boolean);
65
+ }
53
66
  get variables() {
54
67
  return this.body
55
68
  .filter(ast_1.isVariableDeclaration)
@@ -1 +1 @@
1
- {"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/dto/file.ts"],"names":[],"mappings":";;;AACA,mCAAgC;AAChC,sCAKsB;AACtB,qCAAkC;AAClC,2CAAwC;AACxC,oDAAoD;AACpD,yCAAsC;AAEtC,MAAa,IAAI;IAEK;IAAmC;IAAvD,YAAoB,OAAyB,EAAU,IAAY;QAA/C,YAAO,GAAP,OAAO,CAAkB;QAAU,SAAI,GAAJ,IAAI,CAAQ;IAAI,CAAC;IAEjE,YAAY,CAAC,IAAY;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YAC1C,OAAO,IAAI,EAAE,EAAE,EAAE,IAAI,KAAK,IAAI,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,IAAA,0BAAa,EAAC,KAAK,EAAE,SAAS,IAAI,oBAAoB,CAAC,CAAC;QACxD,OAAO,IAAI,aAAK,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,IAAY,UAAU;QACpB,OAAO,IAAI,CAAC,IAAI;aACb,MAAM,CAAC,iBAAW,CAAC;aACnB,GAAG,CAAC,yBAAmB,CAAC,CAAC;IAC9B,CAAC;IAED,IAAY,IAAI;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAEM,kBAAkB;QACvB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YAC/B,OAAO,IAAI,qBAAS,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,IAAI;aACb,MAAM,CAAC,yBAAmB,CAAC;aAC3B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,eAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,IAAI;aACb,MAAM,CAAC,iBAAW,CAAC;aACnB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,MAAM,KAAK,GAAG,IAAA,yBAAmB,EAAC,IAAI,CAAC,CAAC;YACxC,OAAO,KAAK,IAAI,IAAI,aAAK,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,KAAwB,EAAE,EAAE;YACnC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAClE,CAAC,CAAY,CAAC;IAClB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,IAAI;aACb,MAAM,CAAC,2BAAqB,CAAC;aAC7B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC;aAC9B,IAAI,EAAE;aACN,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,mBAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC;CACF;AArDD,oBAqDC"}
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/dto/file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { ClassFile } from '../../dto/classFile';
2
+ import type { FileReader } from '../../framework/fileReader';
3
+ export declare class ClassResolver {
4
+ private fileReader;
5
+ constructor(fileReader: FileReader);
6
+ resolve(clazz: string, from: ClassFile): ClassFile | undefined;
7
+ }
8
+ //# sourceMappingURL=classResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classResolver.d.ts","sourceRoot":"","sources":["../../../src/rules/unresolvedProviderDependencies/classResolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAE7D,qBAAa,aAAa;IACZ,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAEnC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS;CAI9C"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ClassResolver = void 0;
4
+ class ClassResolver {
5
+ fileReader;
6
+ constructor(fileReader) {
7
+ this.fileReader = fileReader;
8
+ }
9
+ resolve(clazz, from) {
10
+ const classPath = from.imports.find($import => $import.includes(clazz));
11
+ return classPath && this.fileReader.read(from.path, classPath.path).findClass(clazz);
12
+ }
13
+ }
14
+ exports.ClassResolver = ClassResolver;
15
+ //# sourceMappingURL=classResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classResolver.js","sourceRoot":"","sources":["../../../src/rules/unresolvedProviderDependencies/classResolver.ts"],"names":[],"mappings":";;;AAGA,MAAa,aAAa;IACJ;IAApB,YAAoB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAI,CAAC;IAExC,OAAO,CAAC,KAAa,EAAE,IAAe;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACxE,OAAO,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACvF,CAAC;CACF;AAPD,sCAOC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createRule.d.ts","sourceRoot":"","sources":["../../../src/rules/unresolvedProviderDependencies/createRule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAKxD,wBAAgB,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU;4BAMnC,QAAQ,CAAC,iBAAiB;2BAG3B,QAAQ,CAAC,gBAAgB;EAInD"}
1
+ {"version":3,"file":"createRule.d.ts","sourceRoot":"","sources":["../../../src/rules/unresolvedProviderDependencies/createRule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAMxD,wBAAgB,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU;4BASnC,QAAQ,CAAC,iBAAiB;2BAG3B,QAAQ,CAAC,gBAAgB;EAInD"}
@@ -6,9 +6,10 @@ const graphHandler_1 = require("./graphHandler");
6
6
  const dependencyResolver_1 = require("./dependencyResolver");
7
7
  const import_1 = require("../../dto/import");
8
8
  const subgraphResolver_1 = require("./subgraphResolver");
9
+ const classResolver_1 = require("./classResolver");
9
10
  function create(context, fileReader) {
10
11
  const imports = [];
11
- const dependencyResolver = new dependencyResolver_1.DependencyResolver(new subgraphResolver_1.SubgraphResolver(fileReader));
12
+ const dependencyResolver = new dependencyResolver_1.DependencyResolver(new subgraphResolver_1.SubgraphResolver(fileReader, new classResolver_1.ClassResolver(fileReader)), new classResolver_1.ClassResolver(fileReader));
12
13
  const graphHandler = new graphHandler_1.GraphHandler(context, dependencyResolver);
13
14
  return {
14
15
  ImportDeclaration(node) {
@@ -1 +1 @@
1
- {"version":3,"file":"createRule.js","sourceRoot":"","sources":["../../../src/rules/unresolvedProviderDependencies/createRule.ts"],"names":[],"mappings":";;AASA,wBAaC;AArBD,2CAAwC;AAExC,iDAA8C;AAE9C,6DAA0D;AAC1D,6CAA0C;AAC1C,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"}
1
+ {"version":3,"file":"createRule.js","sourceRoot":"","sources":["../../../src/rules/unresolvedProviderDependencies/createRule.ts"],"names":[],"mappings":";;AAUA,wBAgBC;AAzBD,2CAAwC;AAExC,iDAA8C;AAE9C,6DAA0D;AAC1D,6CAA0C;AAC1C,yDAAsD;AACtD,mDAAgD;AAEhD,SAAgB,MAAM,CAAC,OAAgB,EAAE,UAAsB;IAC7D,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,kBAAkB,GAAG,IAAI,uCAAkB,CAC/C,IAAI,mCAAgB,CAAC,UAAU,EAAE,IAAI,6BAAa,CAAC,UAAU,CAAC,CAAC,EAC/D,IAAI,6BAAa,CAAC,UAAU,CAAC,CAC9B,CAAC;IACF,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"}
@@ -2,11 +2,14 @@ import type { Import } from '../../dto/import';
2
2
  import type { Clazz } from '../../dto/class';
3
3
  import type { SubgraphResolver } from './subgraphResolver';
4
4
  import type { Context } from '../../dto/context';
5
+ import type { ClassResolver } from './classResolver';
5
6
  export declare class DependencyResolver {
6
7
  private subgraphResolver;
7
- constructor(subgraphResolver: SubgraphResolver);
8
+ private classResolver;
9
+ constructor(subgraphResolver: SubgraphResolver, classResolver: ClassResolver);
8
10
  resolve(context: Context, clazz: Clazz, imports: Import[]): string[];
9
11
  private getDependenciesFromSubgraphs;
10
12
  private getGraphDependencies;
13
+ private getDependenciesFromSuperClass;
11
14
  }
12
15
  //# sourceMappingURL=dependencyResolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dependencyResolver.d.ts","sourceRoot":"","sources":["../../../src/rules/unresolvedProviderDependencies/dependencyResolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,qBAAa,kBAAkB;IACjB,OAAO,CAAC,gBAAgB;gBAAhB,gBAAgB,EAAE,gBAAgB;IAE/C,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE;IAQhE,OAAO,CAAC,4BAA4B;IAMpC,OAAO,CAAC,oBAAoB;CAK7B"}
1
+ {"version":3,"file":"dependencyResolver.d.ts","sourceRoot":"","sources":["../../../src/rules/unresolvedProviderDependencies/dependencyResolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,aAAa;gBADb,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,aAAa;IAG/B,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE;IAShE,OAAO,CAAC,4BAA4B;IAMpC,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,6BAA6B;CAOtC"}
@@ -4,25 +4,34 @@ exports.DependencyResolver = void 0;
4
4
  const classFile_1 = require("../../dto/classFile");
5
5
  class DependencyResolver {
6
6
  subgraphResolver;
7
- constructor(subgraphResolver) {
7
+ classResolver;
8
+ constructor(subgraphResolver, classResolver) {
8
9
  this.subgraphResolver = subgraphResolver;
10
+ this.classResolver = classResolver;
9
11
  }
10
12
  resolve(context, clazz, imports) {
11
13
  const classWithImports = new classFile_1.ClassFile(clazz, imports, context.currentFilePath);
12
14
  return [
13
15
  ...this.getGraphDependencies(classWithImports),
14
16
  ...this.getDependenciesFromSubgraphs(classWithImports),
17
+ ...this.getDependenciesFromSuperClass(classWithImports),
15
18
  ];
16
19
  }
17
20
  getDependenciesFromSubgraphs(clazz) {
18
21
  return this.subgraphResolver
19
22
  .resolve(clazz)
20
- .flatMap(this.getGraphDependencies);
23
+ .flatMap($clazz => this.getGraphDependencies($clazz));
21
24
  }
22
25
  getGraphDependencies({ clazz }) {
23
- return clazz
24
- .getDecoratedMethods('Provides')
25
- .map(method => method.name);
26
+ return clazz.mapDecoratedMethods('Provides', method => method.name) ?? [];
27
+ }
28
+ getDependenciesFromSuperClass(clazz) {
29
+ if (!clazz.superClass || clazz.superClass === 'ObjectGraph')
30
+ return [];
31
+ return this.classResolver
32
+ .resolve(clazz.superClass, clazz)
33
+ ?.clazz
34
+ ?.mapDecoratedMethods('Provides', method => method.name) ?? [];
26
35
  }
27
36
  }
28
37
  exports.DependencyResolver = DependencyResolver;
@@ -1 +1 @@
1
- {"version":3,"file":"dependencyResolver.js","sourceRoot":"","sources":["../../../src/rules/unresolvedProviderDependencies/dependencyResolver.ts"],"names":[],"mappings":";;;AAAA,mDAAgD;AAMhD,MAAa,kBAAkB;IACT;IAApB,YAAoB,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;IAAI,CAAC;IAEpD,OAAO,CAAC,OAAgB,EAAE,KAAY,EAAE,OAAiB;QAC9D,MAAM,gBAAgB,GAAG,IAAI,qBAAS,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;QAChF,OAAO;YACL,GAAG,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC;YAC9C,GAAG,IAAI,CAAC,4BAA4B,CAAC,gBAAgB,CAAC;SACvD,CAAC;IACJ,CAAC;IAEO,4BAA4B,CAAC,KAAgB;QACnD,OAAO,IAAI,CAAC,gBAAgB;aACzB,OAAO,CAAC,KAAK,CAAC;aACd,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IAEO,oBAAoB,CAAa,EAAE,KAAK,EAAa;QAC3D,OAAO,KAAK;aACT,mBAAmB,CAAC,UAAU,CAAC;aAC/B,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;CACF;AAtBD,gDAsBC"}
1
+ {"version":3,"file":"dependencyResolver.js","sourceRoot":"","sources":["../../../src/rules/unresolvedProviderDependencies/dependencyResolver.ts"],"names":[],"mappings":";;;AAAA,mDAAgD;AAOhD,MAAa,kBAAkB;IAEnB;IACA;IAFV,YACU,gBAAkC,EAClC,aAA4B;QAD5B,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,kBAAa,GAAb,aAAa,CAAe;IAClC,CAAC;IAEE,OAAO,CAAC,OAAgB,EAAE,KAAY,EAAE,OAAiB;QAC9D,MAAM,gBAAgB,GAAG,IAAI,qBAAS,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;QAChF,OAAO;YACL,GAAG,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC;YAC9C,GAAG,IAAI,CAAC,4BAA4B,CAAC,gBAAgB,CAAC;YACtD,GAAG,IAAI,CAAC,6BAA6B,CAAC,gBAAgB,CAAC;SACxD,CAAC;IACJ,CAAC;IAEO,4BAA4B,CAAC,KAAgB;QACnD,OAAO,IAAI,CAAC,gBAAgB;aACzB,OAAO,CAAC,KAAK,CAAC;aACd,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEO,oBAAoB,CAAC,EAAE,KAAK,EAAa;QAC/C,OAAO,KAAK,CAAC,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5E,CAAC;IAEO,6BAA6B,CAAC,KAAgB;QACpD,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,KAAK,aAAa;YAAE,OAAO,EAAE,CAAC;QACvE,OAAO,IAAI,CAAC,aAAa;aACtB,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC;YACjC,EAAE,KAAK;YACP,EAAE,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACnE,CAAC;CACF;AAhCD,gDAgCC"}
@@ -1,12 +1,15 @@
1
1
  import { ClassFile } from '../../dto/classFile';
2
2
  import type { FileReader } from '../../framework/fileReader';
3
+ import { ClassResolver } from './classResolver';
3
4
  export declare class SubgraphResolver {
4
5
  private fileReader;
5
- constructor(fileReader: FileReader);
6
+ private classResolver;
7
+ constructor(fileReader: FileReader, classResolver: ClassResolver);
6
8
  resolve(clazz: ClassFile): ClassFile[];
7
9
  private getImportedGraphs;
8
10
  private getImportedSubgraphClasses;
9
11
  private getLocalGraphs;
12
+ private getExtendedGraphs;
10
13
  private getSubgraphsPropertyFromGraphDecorator;
11
14
  private getLocalSubgraphClasses;
12
15
  private createLocalGraphClasses;
@@ -1 +1 @@
1
- {"version":3,"file":"subgraphResolver.d.ts","sourceRoot":"","sources":["../../../src/rules/unresolvedProviderDependencies/subgraphResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAE7D,qBAAa,gBAAgB;IACf,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAEnC,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,EAAE;IAO7C,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,0BAA0B;IAclC,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"}
1
+ {"version":3,"file":"subgraphResolver.d.ts","sourceRoot":"","sources":["../../../src/rules/unresolvedProviderDependencies/subgraphResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,qBAAa,gBAAgB;IACf,OAAO,CAAC,UAAU;IAAc,OAAO,CAAC,aAAa;gBAA7C,UAAU,EAAE,UAAU,EAAU,aAAa,EAAE,aAAa;IAEzE,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,EAAE;IAU7C,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,0BAA0B;IAclC,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,sCAAsC;IAM9C,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,qCAAqC;IAO7C,OAAO,CAAC,kBAAkB;CAO3B"}
@@ -4,16 +4,22 @@ exports.SubgraphResolver = void 0;
4
4
  const ast_1 = require("../../utils/ast");
5
5
  const classFile_1 = require("../../dto/classFile");
6
6
  const file_1 = require("../../dto/file");
7
+ const filter_1 = require("../../utils/filter");
7
8
  class SubgraphResolver {
8
9
  fileReader;
9
- constructor(fileReader) {
10
+ classResolver;
11
+ constructor(fileReader, classResolver) {
10
12
  this.fileReader = fileReader;
13
+ this.classResolver = classResolver;
11
14
  }
12
15
  resolve(clazz) {
13
16
  return [
14
17
  ...this.getImportedGraphs(clazz),
15
18
  ...this.getLocalGraphs(clazz),
16
- ].flatMap(g => [g, ...this.resolve(g)]);
19
+ ...this.getExtendedGraphs(clazz),
20
+ ]
21
+ .filter(filter_1.nonNull)
22
+ .flatMap(g => [g, ...this.resolve(g)]);
17
23
  }
18
24
  getImportedGraphs(clazz) {
19
25
  const subgraphs = this.getSubgraphsPropertyFromGraphDecorator(clazz);
@@ -37,7 +43,14 @@ class SubgraphResolver {
37
43
  const subgraphs = this.getSubgraphsPropertyFromGraphDecorator(clazz);
38
44
  return this.getLocalSubgraphClasses(subgraphs, clazz);
39
45
  }
46
+ getExtendedGraphs(clazz) {
47
+ if (!clazz.superClass || clazz.superClass === 'ObjectGraph')
48
+ return [];
49
+ return [this.classResolver.resolve(clazz.superClass, clazz)];
50
+ }
40
51
  getSubgraphsPropertyFromGraphDecorator({ clazz }) {
52
+ if (clazz.isAbstract)
53
+ return undefined;
41
54
  const graphDecorator = clazz.requireDecoratorIgnoreCase('Graph');
42
55
  return graphDecorator.getProperty('subgraphs');
43
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"subgraphResolver.js","sourceRoot":"","sources":["../../../src/rules/unresolvedProviderDependencies/subgraphResolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subgraphResolver.js","sourceRoot":"","sources":["../../../src/rules/unresolvedProviderDependencies/subgraphResolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function nonNull<T>(value: T): value is NonNullable<typeof value>;
2
+ //# sourceMappingURL=filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/utils/filter.ts"],"names":[],"mappings":"AAAA,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,IAAI,WAAW,CAAC,OAAO,KAAK,CAAC,CAEvE"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.nonNull = nonNull;
4
+ function nonNull(value) {
5
+ return value !== undefined;
6
+ }
7
+ //# sourceMappingURL=filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/utils/filter.ts"],"names":[],"mappings":";;AAAA,0BAEC;AAFD,SAAgB,OAAO,CAAI,KAAQ;IACjC,OAAO,KAAK,KAAK,SAAS,CAAC;AAC7B,CAAC"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "eslint-plugin-obsidian",
3
3
  "description": "ESLint rules for Obsidian",
4
4
  "main": "dist/index.js",
5
- "version": "3.0.0-alpha.6",
5
+ "version": "3.0.0-alpha.7",
6
6
  "scripts": {
7
7
  "build": "npx tsc --project tsconfig.prod.json",
8
8
  "test": "npx jest",
@@ -37,11 +37,11 @@
37
37
  "@types/eslint": "^9.6.1",
38
38
  "@types/node": "20.16.x",
39
39
  "@typescript-eslint/eslint-plugin": "^8.4.0",
40
- "@typescript-eslint/parser": "8.4.0",
40
+ "@typescript-eslint/parser": "^8.4.0",
41
41
  "@typescript-eslint/rule-tester": "^8.4.0",
42
42
  "@typescript-eslint/types": "^8.4.0",
43
43
  "@typescript-eslint/typescript-estree": "^8.4.0",
44
- "@typescript-eslint/utils": "8.4.0",
44
+ "@typescript-eslint/utils": "^8.4.0",
45
45
  "cross-env": "^7.0.3",
46
46
  "eslint": "^9.9.1",
47
47
  "eslint-plugin-jest": "^28.8.3",