react-obsidian 3.0.0-alpha.6 → 3.0.0-alpha.8

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 (85) hide show
  1. package/dist/src/Obsidian.d.ts +4 -3
  2. package/dist/src/Obsidian.d.ts.map +1 -1
  3. package/dist/src/Obsidian.js +7 -4
  4. package/dist/src/Obsidian.js.map +1 -1
  5. package/dist/src/decorators/LifecycleBound.d.ts +1 -1
  6. package/dist/src/decorators/LifecycleBound.d.ts.map +1 -1
  7. package/dist/src/decorators/inject/Inject.d.ts.map +1 -1
  8. package/dist/src/decorators/inject/Inject.js.map +1 -1
  9. package/dist/src/decorators/inject/Injectable.d.ts +1 -1
  10. package/dist/src/decorators/inject/Injectable.d.ts.map +1 -1
  11. package/dist/src/decorators/inject/Injectable.js +2 -2
  12. package/dist/src/decorators/inject/Injectable.js.map +1 -1
  13. package/dist/src/graph/ObjectGraph.d.ts +1 -1
  14. package/dist/src/graph/ObjectGraph.d.ts.map +1 -1
  15. package/dist/src/graph/ObjectGraph.js +9 -2
  16. package/dist/src/graph/ObjectGraph.js.map +1 -1
  17. package/dist/src/graph/ServiceLocatorFactory.d.ts +1 -1
  18. package/dist/src/graph/ServiceLocatorFactory.d.ts.map +1 -1
  19. package/dist/src/graph/ServiceLocatorFactory.js +2 -2
  20. package/dist/src/graph/ServiceLocatorFactory.js.map +1 -1
  21. package/dist/src/graph/registry/GraphRegistry.d.ts +15 -2
  22. package/dist/src/graph/registry/GraphRegistry.d.ts.map +1 -1
  23. package/dist/src/graph/registry/GraphRegistry.js +107 -10
  24. package/dist/src/graph/registry/GraphRegistry.js.map +1 -1
  25. package/dist/src/injectors/class/ClassInjector.d.ts +1 -1
  26. package/dist/src/injectors/class/ClassInjector.d.ts.map +1 -1
  27. package/dist/src/injectors/class/ClassInjector.js +5 -14
  28. package/dist/src/injectors/class/ClassInjector.js.map +1 -1
  29. package/dist/src/injectors/class/LateInjector.d.ts +2 -1
  30. package/dist/src/injectors/class/LateInjector.d.ts.map +1 -1
  31. package/dist/src/injectors/class/LateInjector.js +13 -4
  32. package/dist/src/injectors/class/LateInjector.js.map +1 -1
  33. package/dist/src/injectors/components/ComponentInjector.d.ts +1 -1
  34. package/dist/src/injectors/components/ComponentInjector.d.ts.map +1 -1
  35. package/dist/src/injectors/components/ComponentInjector.js +5 -5
  36. package/dist/src/injectors/components/ComponentInjector.js.map +1 -1
  37. package/dist/src/injectors/components/InjectComponent.d.ts +1 -1
  38. package/dist/src/injectors/components/InjectComponent.d.ts.map +1 -1
  39. package/dist/src/injectors/components/InjectComponent.js +6 -5
  40. package/dist/src/injectors/components/InjectComponent.js.map +1 -1
  41. package/dist/src/injectors/components/useGraph.d.ts +1 -1
  42. package/dist/src/injectors/components/useGraph.d.ts.map +1 -1
  43. package/dist/src/injectors/components/useGraph.js +2 -2
  44. package/dist/src/injectors/components/useGraph.js.map +1 -1
  45. package/dist/src/injectors/components/useInjectionToken.d.ts +1 -1
  46. package/dist/src/injectors/components/useInjectionToken.d.ts.map +1 -1
  47. package/dist/src/injectors/components/useInjectionToken.js +5 -2
  48. package/dist/src/injectors/components/useInjectionToken.js.map +1 -1
  49. package/dist/src/injectors/hooks/HookInjector.d.ts +1 -1
  50. package/dist/src/injectors/hooks/HookInjector.d.ts.map +1 -1
  51. package/dist/src/injectors/hooks/HookInjector.js +2 -2
  52. package/dist/src/injectors/hooks/HookInjector.js.map +1 -1
  53. package/dist/src/injectors/hooks/InjectHook.d.ts +2 -2
  54. package/dist/src/injectors/hooks/InjectHook.d.ts.map +1 -1
  55. package/dist/src/injectors/hooks/InjectHook.js +4 -4
  56. package/dist/src/injectors/hooks/InjectHook.js.map +1 -1
  57. package/dist/src/utils/isString.d.ts +2 -0
  58. package/dist/src/utils/isString.d.ts.map +1 -0
  59. package/dist/src/utils/isString.js +7 -0
  60. package/dist/src/utils/isString.js.map +1 -0
  61. package/dist/src/utils/reflect.d.ts +1 -0
  62. package/dist/src/utils/reflect.d.ts.map +1 -1
  63. package/dist/src/utils/reflect.js +12 -1
  64. package/dist/src/utils/reflect.js.map +1 -1
  65. package/dist/test/fixtures/LifecycleBoundGraph.js +3 -3
  66. package/dist/test/fixtures/LifecycleBoundGraph.js.map +1 -1
  67. package/eslint.config.mjs +2 -1
  68. package/package.json +13 -10
  69. package/src/Obsidian.ts +10 -6
  70. package/src/decorators/LifecycleBound.ts +1 -1
  71. package/src/decorators/inject/Inject.ts +1 -4
  72. package/src/decorators/inject/Injectable.ts +2 -2
  73. package/src/graph/ObjectGraph.ts +10 -2
  74. package/src/graph/ServiceLocatorFactory.ts +2 -2
  75. package/src/graph/registry/GraphRegistry.ts +119 -10
  76. package/src/injectors/class/ClassInjector.ts +6 -14
  77. package/src/injectors/class/LateInjector.ts +10 -3
  78. package/src/injectors/components/ComponentInjector.tsx +5 -5
  79. package/src/injectors/components/InjectComponent.ts +6 -5
  80. package/src/injectors/components/useGraph.ts +2 -2
  81. package/src/injectors/components/useInjectionToken.ts +5 -2
  82. package/src/injectors/hooks/HookInjector.ts +2 -2
  83. package/src/injectors/hooks/InjectHook.ts +4 -4
  84. package/src/utils/isString.ts +3 -0
  85. package/src/utils/reflect.ts +14 -1
@@ -1,9 +1,10 @@
1
1
  import { ObjectGraph } from './graph/ObjectGraph';
2
- import { GraphInternals, ServiceLocator } from './types';
2
+ import { GraphInternals, ServiceLocator, type Constructable } from './types';
3
3
  import { GraphMiddleware } from './graph/registry/GraphMiddleware';
4
4
  export default class Obsidian {
5
- obtain<T extends ObjectGraph<P>, P>(Graph: new (...args: P[]) => T, props?: P): ServiceLocator<Omit<T, GraphInternals>>;
6
- inject<T extends object>(target: T, graph?: ObjectGraph): object;
5
+ registerGraph(key: string, generator: () => Constructable<ObjectGraph>): void;
6
+ obtain<T extends ObjectGraph<P>, P = unknown>(keyOrGraph: string | (new (...args: P[]) => T), props?: P): ServiceLocator<Omit<T, GraphInternals>>;
7
+ inject<T extends object>(target: T, keyOrGraph?: string | ObjectGraph): object;
7
8
  addGraphMiddleware(middleware: GraphMiddleware): void;
8
9
  clearGraphMiddlewares(): void;
9
10
  clearGraphs(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"Obsidian.d.ts","sourceRoot":"","sources":["../../src/Obsidian.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAInE,MAAM,CAAC,OAAO,OAAO,QAAQ;IAC3B,MAAM,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAChC,KAAK,EAAE,KAAI,GAAG,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,EAC7B,KAAK,CAAC,EAAE,CAAC,GACR,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;IAI1C,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,WAAW;IAIvD,kBAAkB,CAAC,UAAU,EAAE,eAAe;IAI9C,qBAAqB;IAIrB,WAAW;CAIZ"}
1
+ {"version":3,"file":"Obsidian.d.ts","sourceRoot":"","sources":["../../src/Obsidian.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAInE,MAAM,CAAC,OAAO,OAAO,QAAQ;IAC3B,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC,WAAW,CAAC;IAItE,MAAM,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,EAC1C,UAAU,EAAE,MAAM,GAAG,CAAC,KAAI,GAAG,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAC7C,KAAK,CAAC,EAAE,CAAC,GACR,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;IAI1C,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW;IAIrE,kBAAkB,CAAC,UAAU,EAAE,eAAe;IAI9C,qBAAqB;IAIrB,WAAW;CAIZ"}
@@ -7,11 +7,14 @@ const GraphRegistry_1 = __importDefault(require("./graph/registry/GraphRegistry"
7
7
  const LateInjector_1 = __importDefault(require("./injectors/class/LateInjector"));
8
8
  const ServiceLocatorFactory_1 = __importDefault(require("./graph/ServiceLocatorFactory"));
9
9
  class Obsidian {
10
- obtain(Graph, props) {
11
- return ServiceLocatorFactory_1.default.fromGraph(Graph, props);
10
+ registerGraph(key, generator) {
11
+ GraphRegistry_1.default.registerGraphGenerator(key, generator);
12
12
  }
13
- inject(target, graph) {
14
- return LateInjector_1.default.inject(target, graph);
13
+ obtain(keyOrGraph, props) {
14
+ return ServiceLocatorFactory_1.default.fromGraph(keyOrGraph, props);
15
+ }
16
+ inject(target, keyOrGraph) {
17
+ return LateInjector_1.default.inject(target, keyOrGraph);
15
18
  }
16
19
  addGraphMiddleware(middleware) {
17
20
  GraphRegistry_1.default.addGraphMiddleware(middleware);
@@ -1 +1 @@
1
- {"version":3,"file":"Obsidian.js","sourceRoot":"","sources":["../../src/Obsidian.ts"],"names":[],"mappings":";;;;;AAAA,mFAA2D;AAI3D,kFAA0D;AAC1D,0FAAkE;AAElE,MAAqB,QAAQ;IAC3B,MAAM,CACJ,KAA6B,EAC7B,KAAS;QAET,OAAO,+BAAqB,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,CAAmB,MAAS,EAAE,KAAmB;QACrD,OAAO,sBAAY,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,kBAAkB,CAAC,UAA2B;QAC5C,uBAAa,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC;IAED,qBAAqB;QACnB,uBAAa,CAAC,qBAAqB,EAAE,CAAC;IACxC,CAAC;IAED,WAAW;QACT,uBAAa,CAAC,qBAAqB,EAAE,CAAC;QACtC,uBAAa,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;CACF;AAxBD,2BAwBC"}
1
+ {"version":3,"file":"Obsidian.js","sourceRoot":"","sources":["../../src/Obsidian.ts"],"names":[],"mappings":";;;;;AAAA,mFAA2D;AAI3D,kFAA0D;AAC1D,0FAAkE;AAElE,MAAqB,QAAQ;IAC3B,aAAa,CAAC,GAAW,EAAE,SAA2C;QACpE,uBAAa,CAAC,sBAAsB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,CACJ,UAA6C,EAC7C,KAAS;QAET,OAAO,+BAAqB,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,CAAmB,MAAS,EAAE,UAAiC;QACnE,OAAO,sBAAY,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACjD,CAAC;IAED,kBAAkB,CAAC,UAA2B;QAC5C,uBAAa,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC;IAED,qBAAqB;QACnB,uBAAa,CAAC,qBAAqB,EAAE,CAAC;IACxC,CAAC;IAED,WAAW;QACT,uBAAa,CAAC,qBAAqB,EAAE,CAAC;QACtC,uBAAa,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;CACF;AA5BD,2BA4BC"}
@@ -1,5 +1,5 @@
1
1
  type Options = {
2
- scope?: 'component' | 'feature';
2
+ scope?: 'component' | 'feature' | (string & {});
3
3
  };
4
4
  export declare function lifecycleBound(options?: Options): (constructor: any) => any;
5
5
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"LifecycleBound.d.ts","sourceRoot":"","sources":["../../../src/decorators/LifecycleBound.ts"],"names":[],"mappings":"AAEA,KAAK,OAAO,GAAG;IACb,KAAK,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CACjC,CAAC;AAEF,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,OAAO,iBACzB,GAAG,SAKzB"}
1
+ {"version":3,"file":"LifecycleBound.d.ts","sourceRoot":"","sources":["../../../src/decorators/LifecycleBound.ts"],"names":[],"mappings":"AAEA,KAAK,OAAO,GAAG;IACb,KAAK,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;CACjD,CAAC;AAEF,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,OAAO,iBACzB,GAAG,SAKzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Inject.d.ts","sourceRoot":"","sources":["../../../../src/decorators/inject/Inject.ts"],"names":[],"mappings":"AAEA,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,aAErC,SAAS,WACT,0BAA0B,CAAC,IAAI,EAAE,MAAM,CAAC,YAO1B,IAAI,SAAS,MAAM,YAI7C"}
1
+ {"version":3,"file":"Inject.d.ts","sourceRoot":"","sources":["../../../../src/decorators/inject/Inject.ts"],"names":[],"mappings":"AAEA,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,aAC/B,SAAS,WAAW,0BAA0B,CAAC,IAAI,EAAE,MAAM,CAAC,YAMpD,IAAI,SAAS,MAAM,YAI7C"}
@@ -1 +1 @@
1
- {"version":3,"file":"Inject.js","sourceRoot":"","sources":["../../../../src/decorators/inject/Inject.ts"],"names":[],"mappings":";;;;;AAEA,wBAcC;AAhBD,gGAAwE;AAExE,SAAgB,MAAM,CAAe,IAAa;IAChD,OAAO,CACL,OAAkB,EAClB,OAAiD,EACjD,EAAE;QACF,OAAO,CAAC,cAAc,CAAC;YACrB,MAAM,QAAQ,GAAG,IAAI,2BAAiB,EAAE,CAAC;YACzC,QAAQ,CAAC,oBAAoB,CAAE,IAAe,CAAC,WAAW,EAAE,IAAK,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,OAAO,UAAsB,KAAa;YACxC,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"Inject.js","sourceRoot":"","sources":["../../../../src/decorators/inject/Inject.ts"],"names":[],"mappings":";;;;;AAEA,wBAWC;AAbD,gGAAwE;AAExE,SAAgB,MAAM,CAAe,IAAa;IAChD,OAAO,CAAC,OAAkB,EAAE,OAAiD,EAAE,EAAE;QAC/E,OAAO,CAAC,cAAc,CAAC;YACrB,MAAM,QAAQ,GAAG,IAAI,2BAAiB,EAAE,CAAC;YACzC,QAAQ,CAAC,oBAAoB,CAAE,IAAe,CAAC,WAAW,EAAE,IAAK,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,OAAO,UAAsB,KAAa;YACxC,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import { Constructable } from '../../types';
2
2
  import { Graph } from '../../graph/Graph';
3
- export declare function injectable(Graph: Constructable<Graph>): any;
3
+ export declare function injectable(keyOrGraph: string | Constructable<Graph>): any;
4
4
  //# sourceMappingURL=Injectable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Injectable.d.ts","sourceRoot":"","sources":["../../../../src/decorators/inject/Injectable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAI1C,wBAAgB,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,CAE3D"}
1
+ {"version":3,"file":"Injectable.d.ts","sourceRoot":"","sources":["../../../../src/decorators/inject/Injectable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAI1C,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,CAEzE"}
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.injectable = injectable;
7
7
  const GraphRegistry_1 = __importDefault(require("../../graph/registry/GraphRegistry"));
8
8
  const ClassInjector_1 = __importDefault(require("../../injectors/class/ClassInjector"));
9
- function injectable(Graph) {
10
- return new ClassInjector_1.default(GraphRegistry_1.default).inject(Graph);
9
+ function injectable(keyOrGraph) {
10
+ return new ClassInjector_1.default(GraphRegistry_1.default).inject(keyOrGraph);
11
11
  }
12
12
  //# sourceMappingURL=Injectable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Injectable.js","sourceRoot":"","sources":["../../../../src/decorators/inject/Injectable.ts"],"names":[],"mappings":";;;;;AAKA,gCAEC;AALD,uFAA+D;AAC/D,wFAAgE;AAEhE,SAAgB,UAAU,CAAC,KAA2B;IACpD,OAAO,IAAI,uBAAa,CAAC,uBAAa,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"Injectable.js","sourceRoot":"","sources":["../../../../src/decorators/inject/Injectable.ts"],"names":[],"mappings":";;;;;AAKA,gCAEC;AALD,uFAA+D;AAC/D,wFAAgE;AAEhE,SAAgB,UAAU,CAAC,UAAyC;IAClE,OAAO,IAAI,uBAAa,CAAC,uBAAa,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAC7D,CAAC"}
@@ -4,7 +4,7 @@ import { CircularDependenciesDetector } from './CircularDependenciesDetector';
4
4
  export declare abstract class ObjectGraph<T = unknown> implements Graph {
5
5
  protected _props?: T | undefined;
6
6
  private propertyRetriever;
7
- readonly name: string;
7
+ get name(): string;
8
8
  constructor(_props?: T | undefined);
9
9
  retrieve<Dependency>(property: string, receiver?: unknown, detector?: CircularDependenciesDetector): Dependency | undefined;
10
10
  onBind(_target: any): void;
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectGraph.d.ts","sourceRoot":"","sources":["../../../src/graph/ObjectGraph.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAE9E,8BAAsB,WAAW,CAAC,CAAC,GAAG,OAAO,CAAE,YAAW,KAAK;IAIjD,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;IAHhC,OAAO,CAAC,iBAAiB,CAA+B;IACxD,SAAgB,IAAI,EAAE,MAAM,CAAC;gBAEP,MAAM,CAAC,EAAE,CAAC,YAAA;IAKhC,QAAQ,CAAC,UAAU,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,OAAO,EAClB,QAAQ,CAAC,EAAE,4BAA4B,GACtC,UAAU,GAAG,SAAS;IAIzB,MAAM,CAAC,OAAO,EAAE,GAAG;CACpB;AAID,wBAAgB,OAAO,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,aAAa,CAAC,WAAW,CAAC,CAEzE"}
1
+ {"version":3,"file":"ObjectGraph.d.ts","sourceRoot":"","sources":["../../../src/graph/ObjectGraph.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAG9E,8BAAsB,WAAW,CAAC,CAAC,GAAG,OAAO,CAAE,YAAW,KAAK;IAYjD,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;IAXhC,OAAO,CAAC,iBAAiB,CAA+B;IAExD,IAAI,IAAI,IAAI,MAAM,CAOjB;gBAEqB,MAAM,CAAC,EAAE,CAAC,YAAA;IAIhC,QAAQ,CAAC,UAAU,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,OAAO,EAClB,QAAQ,CAAC,EAAE,4BAA4B,GACtC,UAAU,GAAG,SAAS;IAIzB,MAAM,CAAC,OAAO,EAAE,GAAG;CACpB;AAID,wBAAgB,OAAO,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,aAAa,CAAC,WAAW,CAAC,CAEzE"}
@@ -8,14 +8,21 @@ exports.isGraph = isGraph;
8
8
  const uniqueId_1 = require("../utils/uniqueId");
9
9
  const ProviderBinder_1 = require("./ProviderBinder");
10
10
  const PropertyRetriever_1 = __importDefault(require("./PropertyRetriever"));
11
+ const reflect_1 = require("../utils/reflect");
11
12
  class ObjectGraph {
12
13
  _props;
13
14
  propertyRetriever = new PropertyRetriever_1.default(this);
14
- name;
15
+ get name() {
16
+ if ((0, reflect_1.hasMetadata)(this.constructor, 'memoizedName')) {
17
+ return (0, reflect_1.getMetadata)(this.constructor, 'memoizedName');
18
+ }
19
+ const name = (0, uniqueId_1.uniqueId)(this.constructor.name);
20
+ (0, reflect_1.defineMetadata)(this.constructor, 'memoizedName', name);
21
+ return name;
22
+ }
15
23
  constructor(_props) {
16
24
  this._props = _props;
17
25
  (0, ProviderBinder_1.bindProviders)(this);
18
- this.name = (0, uniqueId_1.uniqueId)(this.constructor.name);
19
26
  }
20
27
  retrieve(property, receiver, detector) {
21
28
  return this.propertyRetriever.retrieve(property, receiver, detector);
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectGraph.js","sourceRoot":"","sources":["../../../src/graph/ObjectGraph.ts"],"names":[],"mappings":";;;;;;AA6BA,0BAEC;AA/BD,gDAA6C;AAC7C,qDAAiD;AAEjD,4EAAoD;AAIpD,MAAsB,WAAW;IAIT;IAHd,iBAAiB,GAAG,IAAI,2BAAiB,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAS;IAE7B,YAAsB,MAAU;QAAV,WAAM,GAAN,MAAM,CAAI;QAC9B,IAAA,8BAAa,EAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,IAAA,mBAAQ,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,QAAQ,CACN,QAAgB,EAChB,QAAkB,EAClB,QAAuC;QAEvC,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAA2B,CAAC;IACjG,CAAC;IAED,MAAM,CAAC,OAAY,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;CACjC;AAlBD,kCAkBC;AAED,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,mBAAmB,EAAE,aAAa,CAAC,CAAC;AAE7D,SAAgB,OAAO,CAAC,MAAW;IACjC,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,KAAK,aAAa,CAAC;AACpE,CAAC"}
1
+ {"version":3,"file":"ObjectGraph.js","sourceRoot":"","sources":["../../../src/graph/ObjectGraph.ts"],"names":[],"mappings":";;;;;;AAqCA,0BAEC;AAvCD,gDAA6C;AAC7C,qDAAiD;AAEjD,4EAAoD;AAGpD,8CAA4E;AAE5E,MAAsB,WAAW;IAYT;IAXd,iBAAiB,GAAG,IAAI,2BAAiB,CAAC,IAAI,CAAC,CAAC;IAExD,IAAI,IAAI;QACN,IAAI,IAAA,qBAAW,EAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,CAAC;YAClD,OAAO,IAAA,qBAAW,EAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,IAAI,GAAG,IAAA,mBAAQ,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAA,wBAAc,EAAC,IAAI,CAAC,WAAW,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAsB,MAAU;QAAV,WAAM,GAAN,MAAM,CAAI;QAC9B,IAAA,8BAAa,EAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,QAAQ,CACN,QAAgB,EAChB,QAAkB,EAClB,QAAuC;QAEvC,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAA2B,CAAC;IACjG,CAAC;IAED,MAAM,CAAC,OAAY,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;CACjC;AAzBD,kCAyBC;AAED,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,mBAAmB,EAAE,aAAa,CAAC,CAAC;AAE7D,SAAgB,OAAO,CAAC,MAAW;IACjC,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,KAAK,aAAa,CAAC;AACpE,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { ObjectGraph } from './ObjectGraph';
2
2
  import { Constructable, ServiceLocator as ServiceLocatorType } from '../types';
3
3
  export default class ServiceLocatorFactory {
4
- static fromGraph<T extends ObjectGraph<P>, P = any>(Graph: Constructable<T>, props?: P): ServiceLocatorType<T>;
4
+ static fromGraph<T extends ObjectGraph<P>, P = any>(keyOrGraph: string | Constructable<T>, props?: P): ServiceLocatorType<T>;
5
5
  }
6
6
  //# sourceMappingURL=ServiceLocatorFactory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceLocatorFactory.d.ts","sourceRoot":"","sources":["../../../src/graph/ServiceLocatorFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,cAAc,IAAI,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAG/E,MAAM,CAAC,OAAO,OAAO,qBAAqB;IACxC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,GAOvD,kBAAkB,CAAC,CAAC,CAAC;CAErD"}
1
+ {"version":3,"file":"ServiceLocatorFactory.d.ts","sourceRoot":"","sources":["../../../src/graph/ServiceLocatorFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,cAAc,IAAI,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAG/E,MAAM,CAAC,OAAO,OAAO,qBAAqB;IACxC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,UAAU,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,GAOrE,kBAAkB,CAAC,CAAC,CAAC;CAErD"}
@@ -5,8 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const GraphRegistry_1 = __importDefault(require("./registry/GraphRegistry"));
7
7
  class ServiceLocatorFactory {
8
- static fromGraph(Graph, props) {
9
- const resolved = GraphRegistry_1.default.resolve(Graph, 'serviceLocator', props);
8
+ static fromGraph(keyOrGraph, props) {
9
+ const resolved = GraphRegistry_1.default.resolve(keyOrGraph, 'serviceLocator', props);
10
10
  const wrapped = new Proxy(resolved, {
11
11
  get(_target, property, receiver) {
12
12
  return () => resolved.retrieve(property, receiver);
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceLocatorFactory.js","sourceRoot":"","sources":["../../../src/graph/ServiceLocatorFactory.ts"],"names":[],"mappings":";;;;;AAEA,6EAAqD;AAErD,MAAqB,qBAAqB;IACxC,MAAM,CAAC,SAAS,CAAoC,KAAuB,EAAE,KAAS;QACpF,MAAM,QAAQ,GAAG,uBAAa,CAAC,OAAO,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE;YAClC,GAAG,CAAC,OAAY,EAAE,QAAgB,EAAE,QAAa;gBAC/C,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACrD,CAAC;SACF,CAAC,CAAC;QACH,OAAO,OAA2C,CAAC;IACrD,CAAC;CACF;AAVD,wCAUC"}
1
+ {"version":3,"file":"ServiceLocatorFactory.js","sourceRoot":"","sources":["../../../src/graph/ServiceLocatorFactory.ts"],"names":[],"mappings":";;;;;AAEA,6EAAqD;AAErD,MAAqB,qBAAqB;IACxC,MAAM,CAAC,SAAS,CAAoC,UAAqC,EAAE,KAAS;QAClG,MAAM,QAAQ,GAAG,uBAAa,CAAC,OAAO,CAAC,UAAU,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAC5E,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE;YAClC,GAAG,CAAC,OAAY,EAAE,QAAgB,EAAE,QAAa;gBAC/C,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACrD,CAAC;SACF,CAAC,CAAC;QACH,OAAO,OAA2C,CAAC;IACrD,CAAC;CACF;AAVD,wCAUC"}
@@ -9,11 +9,20 @@ export declare class GraphRegistry {
9
9
  private readonly nameToInstance;
10
10
  private readonly graphToSubgraphs;
11
11
  private readonly graphMiddlewares;
12
+ private readonly keyToGenerator;
13
+ private readonly keyToGraph;
14
+ private readonly onClearListeners;
12
15
  register(constructor: Constructable<Graph>, subgraphs?: Constructable<Graph>[]): void;
13
- ensureRegistered(graph: Graph): void;
16
+ registerGraphGenerator(key: string, generator: () => Constructable<Graph>): void;
17
+ ensureRegistered(keyOrGraph: string | Graph): void;
18
+ isInstantiated(G: Constructable<Graph>): boolean;
14
19
  getSubgraphs(graph: Graph): Graph[];
15
20
  getGraphInstance(name: string): Graph;
16
- resolve<T extends Graph>(Graph: Constructable<T>, source?: 'lifecycleOwner' | 'classInjection' | 'serviceLocator', props?: any, injectionToken?: string): T;
21
+ resolve<T extends Graph>(keyOrGraph: string | Constructable<T>, source?: 'lifecycleOwner' | 'classInjection' | 'serviceLocator', props?: any, injectionToken?: string): T;
22
+ private instantiateCustomScopedSubgraphs;
23
+ private assertInstantiatingCustomScopedSubgraphFromSameScope;
24
+ private getSubgraphsConstructors;
25
+ private getGraphConstructorByKey;
17
26
  private has;
18
27
  private getFirst;
19
28
  private getByInjectionToken;
@@ -21,8 +30,12 @@ export declare class GraphRegistry {
21
30
  private isSingleton;
22
31
  private isBoundToReactLifecycle;
23
32
  private isComponentScopedLifecycleBound;
33
+ private isCustomScopedLifecycleBound;
24
34
  clearGraphAfterItWasMockedInTests(graphName: string): void;
25
35
  clear(graph: Graph): void;
36
+ private registerOnClearListener;
37
+ private invokeOnClearListeners;
38
+ private clearGraphsRegisteredByKey;
26
39
  addGraphMiddleware(middleware: Middleware<Graph>): void;
27
40
  clearGraphMiddlewares(): void;
28
41
  clearAll(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"GraphRegistry.d.ts","sourceRoot":"","sources":["../../../../src/graph/registry/GraphRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAM1C,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA+C;IACrF,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA0C;IAChF,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAA4B;IACrE,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAA4B;IACrE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4B;IAC3D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA8D;IAC/F,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA8B;IAE/D,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,SAAS,GAAE,aAAa,CAAC,KAAK,CAAC,EAAO;IAIlF,gBAAgB,CAAC,KAAK,EAAE,KAAK;IAK7B,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE;IAMnC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;IAIrC,OAAO,CAAC,CAAC,SAAS,KAAK,EACrB,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,MAAM,GAAE,gBAAgB,GAAG,gBAAgB,GAAG,gBAAmC,EACjF,KAAK,GAAE,GAAe,EACtB,cAAc,CAAC,EAAE,MAAM,GACtB,CAAC;IAcJ,OAAO,CAAC,GAAG;IAaX,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,GAAG;IAYX,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,+BAA+B;IAIvC,iCAAiC,CAAC,SAAS,EAAE,MAAM;IAqBnD,KAAK,CAAC,KAAK,EAAE,KAAK;IAalB,kBAAkB,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC;IAIhD,qBAAqB;IAIrB,QAAQ;CAOT;wBAMuC,aAAa;AAArD,wBAAsD"}
1
+ {"version":3,"file":"GraphRegistry.d.ts","sourceRoot":"","sources":["../../../../src/graph/registry/GraphRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAQ1C,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA+C;IACrF,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA0C;IAChF,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAA4B;IACrE,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAA4B;IACrE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4B;IAC3D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA8D;IAC/F,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA8B;IAC/D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiD;IAChF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2C;IACtE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqC;IAEtE,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,SAAS,GAAE,aAAa,CAAC,KAAK,CAAC,EAAO;IAIlF,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC,KAAK,CAAC;IAKzE,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK;IAOpC,cAAc,CAAC,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,OAAO;IAIvD,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE;IAMnC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;IAIrC,OAAO,CAAC,CAAC,SAAS,KAAK,EACrB,UAAU,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,EACrC,MAAM,GAAE,gBAAgB,GAAG,gBAAgB,GAAG,gBAAmC,EACjF,KAAK,GAAE,GAAe,EACtB,cAAc,CAAC,EAAE,MAAM,GACtB,CAAC;IAkBJ,OAAO,CAAC,gCAAgC;IAmBxC,OAAO,CAAC,oDAAoD;IAe5D,OAAO,CAAC,wBAAwB;IAchC,OAAO,CAAC,wBAAwB;IAShC,OAAO,CAAC,GAAG;IAaX,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,GAAG;IAYX,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,+BAA+B;IAIvC,OAAO,CAAC,4BAA4B;IAKpC,iCAAiC,CAAC,SAAS,EAAE,MAAM;IAsBnD,KAAK,CAAC,KAAK,EAAE,KAAK;IAgBlB,OAAO,CAAC,uBAAuB;IAM/B,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,0BAA0B;IAUlC,kBAAkB,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC;IAIhD,qBAAqB;IAIrB,QAAQ;CAST;wBAI4C,aAAa;AAA1D,wBAA2D"}
@@ -8,6 +8,8 @@ const GraphMiddlewareChain_1 = __importDefault(require("./GraphMiddlewareChain")
8
8
  const ObtainLifecycleBoundGraphException_1 = require("./ObtainLifecycleBoundGraphException");
9
9
  const reflect_1 = require("../../utils/reflect");
10
10
  const getGlobal_1 = require("../../utils/getGlobal");
11
+ const isString_1 = require("../../utils/isString");
12
+ const ReferenceCounter_1 = __importDefault(require("../../ReferenceCounter"));
11
13
  class GraphRegistry {
12
14
  constructorToInstance = new Map();
13
15
  instanceToConstructor = new Map();
@@ -16,14 +18,28 @@ class GraphRegistry {
16
18
  nameToInstance = new Map();
17
19
  graphToSubgraphs = new Map();
18
20
  graphMiddlewares = new GraphMiddlewareChain_1.default();
21
+ keyToGenerator = new Map();
22
+ keyToGraph = new Map();
23
+ onClearListeners = new Map();
19
24
  register(constructor, subgraphs = []) {
20
25
  this.graphToSubgraphs.set(constructor, new Set(subgraphs));
21
26
  }
22
- ensureRegistered(graph) {
27
+ registerGraphGenerator(key, generator) {
28
+ if (this.keyToGenerator.has(key))
29
+ throw new Error(`Attempted to register a graph generator for key "${key}" that is already registered.`);
30
+ this.keyToGenerator.set(key, generator);
31
+ }
32
+ ensureRegistered(keyOrGraph) {
33
+ if ((0, isString_1.isString)(keyOrGraph))
34
+ return;
35
+ const graph = keyOrGraph;
23
36
  if (this.instanceToConstructor.get(graph))
24
37
  return;
25
38
  this.set(graph.constructor, graph);
26
39
  }
40
+ isInstantiated(G) {
41
+ return (this.constructorToInstance.get(G)?.size ?? 0) > 0;
42
+ }
27
43
  getSubgraphs(graph) {
28
44
  const Graph = this.instanceToConstructor.get(graph);
29
45
  const subgraphs = this.graphToSubgraphs.get(Graph) ?? new Set();
@@ -32,19 +48,72 @@ class GraphRegistry {
32
48
  getGraphInstance(name) {
33
49
  return this.nameToInstance.get(name);
34
50
  }
35
- resolve(Graph, source = 'lifecycleOwner', props = undefined, injectionToken) {
51
+ resolve(keyOrGraph, source = 'lifecycleOwner', props = undefined, injectionToken) {
52
+ const Graph = (0, isString_1.isString)(keyOrGraph) ?
53
+ this.getGraphConstructorByKey(keyOrGraph) :
54
+ keyOrGraph;
36
55
  if ((this.isSingleton(Graph) || this.isBoundToReactLifecycle(Graph)) && this.has(Graph, injectionToken)) {
37
- return this.isComponentScopedLifecycleBound(Graph)
38
- ? this.getByInjectionToken(Graph, injectionToken)
39
- : this.getFirst(Graph);
56
+ return this.isComponentScopedLifecycleBound(Graph) ?
57
+ this.getByInjectionToken(Graph, injectionToken) :
58
+ this.getFirst(Graph);
40
59
  }
41
60
  if (this.isBoundToReactLifecycle(Graph) && source !== 'lifecycleOwner') {
42
61
  throw new ObtainLifecycleBoundGraphException_1.ObtainLifecycleBoundGraphException(Graph);
43
62
  }
44
63
  const graph = this.graphMiddlewares.resolve(Graph, props);
45
64
  this.set(Graph, graph, injectionToken);
65
+ this.instantiateCustomScopedSubgraphs(graph, props);
46
66
  return graph;
47
67
  }
68
+ instantiateCustomScopedSubgraphs(graph, props) {
69
+ this.assertInstantiatingCustomScopedSubgraphFromSameScope(graph);
70
+ if (!this.isCustomScopedLifecycleBound(this.instanceToConstructor.get(graph)))
71
+ return;
72
+ const customScope = (0, reflect_1.getMetadata)(this.instanceToConstructor.get(graph), 'lifecycleScope');
73
+ const subgraphs = this.getSubgraphsConstructors(graph);
74
+ const sameScopeSubgraphs = subgraphs.filter(subgraph => (0, reflect_1.getMetadata)(subgraph, 'lifecycleScope') === customScope);
75
+ const instantiatedSubgraphs = sameScopeSubgraphs.map((subgraph) => {
76
+ return this.resolve(subgraph, 'lifecycleOwner', props);
77
+ });
78
+ instantiatedSubgraphs.forEach(subgraph => ReferenceCounter_1.default.retain(subgraph));
79
+ this.registerOnClearListener(graph, () => {
80
+ instantiatedSubgraphs.forEach(subgraph => ReferenceCounter_1.default.release(subgraph, () => this.clear(subgraph)));
81
+ });
82
+ }
83
+ assertInstantiatingCustomScopedSubgraphFromSameScope(graph) {
84
+ const graphScope = (0, reflect_1.getMetadata)(this.instanceToConstructor.get(graph), 'lifecycleScope');
85
+ const subgraphs = this.getSubgraphsConstructors(graph);
86
+ subgraphs.forEach((subgraph) => {
87
+ const subgraphScope = (0, reflect_1.getMetadata)(subgraph, 'lifecycleScope');
88
+ if (!this.isInstantiated(subgraph)
89
+ && this.isCustomScopedLifecycleBound(subgraph)
90
+ && graphScope !== subgraphScope) {
91
+ throw new Error(`Cannot instantiate the scoped graph '${subgraph.name}' as a subgraph of '${graph.constructor.name}' because the scopes do not match. ${graphScope} !== ${subgraphScope}`);
92
+ }
93
+ });
94
+ }
95
+ getSubgraphsConstructors(graph) {
96
+ const Graph = typeof graph === 'function' ? graph : this.instanceToConstructor.get(graph);
97
+ const directSubgraphs = Array.from(this.graphToSubgraphs.get(Graph) ?? new Set());
98
+ if (directSubgraphs.length === 0)
99
+ return [];
100
+ return [
101
+ ...directSubgraphs,
102
+ ...new Set(directSubgraphs
103
+ .map(subgraph => this.getSubgraphsConstructors(subgraph))
104
+ .flat()),
105
+ ];
106
+ }
107
+ getGraphConstructorByKey(key) {
108
+ if (this.keyToGraph.has(key))
109
+ return this.keyToGraph.get(key);
110
+ const generator = this.keyToGenerator.get(key);
111
+ if (!generator)
112
+ throw new Error(`Attempted to resolve a graph by key "${key}" that is not registered. Did you forget to call Obsidian.registerGraph?`);
113
+ const constructor = generator();
114
+ this.keyToGraph.set(key, constructor);
115
+ return constructor;
116
+ }
48
117
  has(Graph, injectionToken) {
49
118
  const instances = this.constructorToInstance.get(Graph);
50
119
  if (!instances)
@@ -86,6 +155,10 @@ class GraphRegistry {
86
155
  isComponentScopedLifecycleBound(Graph) {
87
156
  return (0, reflect_1.getMetadata)(Graph, 'lifecycleScope') === 'component';
88
157
  }
158
+ isCustomScopedLifecycleBound(Graph) {
159
+ const scope = (0, reflect_1.getMetadata)(Graph, 'lifecycleScope');
160
+ return typeof scope === 'string' && scope !== 'component' && scope !== 'feature';
161
+ }
89
162
  clearGraphAfterItWasMockedInTests(graphName) {
90
163
  const graphNames = this.nameToInstance.keys();
91
164
  for (const name of graphNames) {
@@ -104,6 +177,7 @@ class GraphRegistry {
104
177
  this.injectionTokenToInstance.delete(token);
105
178
  this.instanceToInjectionToken.delete(graph);
106
179
  }
180
+ this.invokeOnClearListeners(graph);
107
181
  }
108
182
  }
109
183
  }
@@ -119,6 +193,29 @@ class GraphRegistry {
119
193
  this.injectionTokenToInstance.delete(token);
120
194
  this.instanceToInjectionToken.delete(graph);
121
195
  }
196
+ this.clearGraphsRegisteredByKey(Graph);
197
+ this.invokeOnClearListeners(graph);
198
+ }
199
+ registerOnClearListener(graph, callback) {
200
+ const listeners = this.onClearListeners.get(graph) ?? new Set();
201
+ listeners.add(callback);
202
+ this.onClearListeners.set(graph, listeners);
203
+ }
204
+ invokeOnClearListeners(graph) {
205
+ const listeners = this.onClearListeners.get(graph);
206
+ if (!listeners)
207
+ return;
208
+ listeners.forEach(listener => listener());
209
+ this.onClearListeners.delete(graph);
210
+ }
211
+ clearGraphsRegisteredByKey(Graph) {
212
+ [...this.keyToGraph.keys()]
213
+ .map(key => [key, this.keyToGraph.get(key)])
214
+ .filter(([_, $Graph]) => $Graph === Graph)
215
+ .forEach(([key, _]) => {
216
+ this.keyToGraph.delete(key);
217
+ this.keyToGenerator.delete(key);
218
+ });
122
219
  }
123
220
  addGraphMiddleware(middleware) {
124
221
  this.graphMiddlewares.add(middleware);
@@ -132,12 +229,12 @@ class GraphRegistry {
132
229
  this.nameToInstance.clear();
133
230
  this.injectionTokenToInstance.clear();
134
231
  this.instanceToInjectionToken.clear();
232
+ this.keyToGenerator.clear();
233
+ this.keyToGraph.clear();
135
234
  }
136
235
  }
137
236
  exports.GraphRegistry = GraphRegistry;
138
- // // @ts-expect-error - workaround an issue in jest tests where the registry was created multiple times
139
- const _global = (0, getGlobal_1.getGlobal)();
140
- _global.graphRegistry = _global.graphRegistry || new GraphRegistry();
141
- // // @ts-expect-error - see above
142
- exports.default = _global.graphRegistry;
237
+ const globalObject = (0, getGlobal_1.getGlobal)();
238
+ globalObject.graphRegistry = globalObject.graphRegistry || new GraphRegistry();
239
+ exports.default = globalObject.graphRegistry;
143
240
  //# sourceMappingURL=GraphRegistry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GraphRegistry.js","sourceRoot":"","sources":["../../../../src/graph/registry/GraphRegistry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GraphRegistry.js","sourceRoot":"","sources":["../../../../src/graph/registry/GraphRegistry.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ export default class ClassInjector {
6
6
  private graphRegistry;
7
7
  private injectionMetadata;
8
8
  constructor(graphRegistry: GraphRegistry, injectionMetadata?: InjectionMetadata);
9
- inject(Graph: Constructable<Graph>): (Target: Constructable<any>) => any;
9
+ inject(keyOrGraph: string | Constructable<Graph>): (Target: Constructable<any>) => any;
10
10
  private createProxyHandler;
11
11
  }
12
12
  //# sourceMappingURL=ClassInjector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClassInjector.d.ts","sourceRoot":"","sources":["../../../../src/injectors/class/ClassInjector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AAKpD,MAAM,CAAC,OAAO,OAAO,aAAa;IAE9B,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,iBAAiB;gBADjB,aAAa,EAAE,aAAa,EAC5B,iBAAiB,GAAE,iBAA2C;IAGxE,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,YAChB,aAAa,CAAC,GAAG,CAAC;IAKpC,OAAO,CAAC,kBAAkB;CAyC3B"}
1
+ {"version":3,"file":"ClassInjector.d.ts","sourceRoot":"","sources":["../../../../src/injectors/class/ClassInjector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AAKpD,MAAM,CAAC,OAAO,OAAO,aAAa;IAE9B,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,iBAAiB;gBADjB,aAAa,EAAE,aAAa,EAC5B,iBAAiB,GAAE,iBAA2C;IAGxE,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,YAC9B,aAAa,CAAC,GAAG,CAAC;IAKpC,OAAO,CAAC,kBAAkB;CAiC3B"}
@@ -14,24 +14,23 @@ class ClassInjector {
14
14
  this.graphRegistry = graphRegistry;
15
15
  this.injectionMetadata = injectionMetadata;
16
16
  }
17
- inject(Graph) {
17
+ inject(keyOrGraph) {
18
18
  return (Target) => {
19
- return new Proxy(Target, this.createProxyHandler(Graph, this.graphRegistry, this.injectionMetadata));
19
+ return new Proxy(Target, this.createProxyHandler(keyOrGraph, this.graphRegistry, this.injectionMetadata));
20
20
  };
21
21
  }
22
- createProxyHandler(Graph, graphRegistry, injectionMetadata) {
22
+ createProxyHandler(keyOrGraph, graphRegistry, injectionMetadata) {
23
23
  return new class Handler {
24
24
  construct(target, args, newTarget) {
25
25
  const isReactClassComponent = target.prototype?.isReactComponent;
26
26
  const source = isReactClassComponent ? 'lifecycleOwner' : 'classInjection';
27
- const graph = graphRegistry.resolve(Graph, source, args.length > 0 ? args[0] : undefined);
27
+ const graph = graphRegistry.resolve(keyOrGraph, source, args.length > 0 ? args[0] : undefined);
28
28
  if (isReactClassComponent) {
29
29
  ReferenceCounter_1.default.retain(graph);
30
30
  }
31
31
  (0, reflect_1.defineMetadata)(target, LateInjector_1.GRAPH_INSTANCE_NAME_KEY, graph.name);
32
- const argsToInject = this.injectConstructorArgs(args, graph, target);
33
32
  graph.onBind(target);
34
- const createdObject = Reflect.construct(target, argsToInject, newTarget);
33
+ const createdObject = Reflect.construct(target, args, newTarget);
35
34
  this.injectProperties(target, createdObject, graph);
36
35
  const originalComponentWillUnmount = createdObject.componentWillUnmount;
37
36
  createdObject.componentWillUnmount = () => {
@@ -40,14 +39,6 @@ class ClassInjector {
40
39
  };
41
40
  return createdObject;
42
41
  }
43
- injectConstructorArgs(args, graph, target) {
44
- const argsToInject = injectionMetadata.getConstructorArgsToInject(target);
45
- if (!argsToInject.hasArgs())
46
- return args;
47
- return [...args, ...new Array(Math.abs(args.length - argsToInject.size()))].map((value, idx) => {
48
- return value ?? graph.retrieve(argsToInject.getProperty(idx));
49
- });
50
- }
51
42
  injectProperties(target, createdObject, graph) {
52
43
  injectionMetadata.getPropertiesToInject(target).forEach((key) => {
53
44
  Reflect.set(createdObject, key, graph.retrieve(key));
@@ -1 +1 @@
1
- {"version":3,"file":"ClassInjector.js","sourceRoot":"","sources":["../../../../src/injectors/class/ClassInjector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ClassInjector.js","sourceRoot":"","sources":["../../../../src/injectors/class/ClassInjector.ts"],"names":[],"mappings":";;;;;AAGA,4EAAoD;AACpD,iDAAyD;AACzD,8EAAsD;AACtD,iDAAqD;AAErD,MAAqB,aAAa;IAEtB;IACA;IAFV,YACU,aAA4B,EAC5B,oBAAuC,IAAI,2BAAiB,EAAE;QAD9D,kBAAa,GAAb,aAAa,CAAe;QAC5B,sBAAiB,GAAjB,iBAAiB,CAA6C;IACrE,CAAC;IAEJ,MAAM,CAAC,UAAyC;QAC9C,OAAO,CAAC,MAA0B,EAAE,EAAE;YACpC,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC5G,CAAC,CAAC;IACJ,CAAC;IAEO,kBAAkB,CACxB,UAAyC,EACzC,aAA4B,EAC5B,iBAAoC;QAEpC,OAAO,IAAI,MAAM,OAAO;YACtB,SAAS,CAAC,MAAW,EAAE,IAAW,EAAE,SAAmB;gBACrD,MAAM,qBAAqB,GAAG,MAAM,CAAC,SAAS,EAAE,gBAAgB,CAAC;gBACjE,MAAM,MAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC;gBAC3E,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAC/F,IAAI,qBAAqB,EAAE,CAAC;oBAC1B,0BAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACjC,CAAC;gBACD,IAAA,wBAAc,EAAC,MAAM,EAAE,sCAAuB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAE5D,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACrB,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;gBACjE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;gBACpD,MAAM,4BAA4B,GAA2B,aAAa,CAAC,oBAAoB,CAAC;gBAChG,aAAa,CAAC,oBAAoB,GAAG,GAAG,EAAE;oBACxC,4BAA4B,EAAE,EAAE,CAAC;oBACjC,0BAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/D,CAAC,CAAC;gBACF,OAAO,aAAa,CAAC;YACvB,CAAC;YAEO,gBAAgB,CAAC,MAAW,EAAE,aAAkB,EAAE,KAAY;gBACpE,iBAAiB,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;oBAC9D,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvD,CAAC,CAAC,CAAC;YACL,CAAC;SACF,EAAE,CAAC;IACN,CAAC;CACF;AA7CD,gCA6CC"}
@@ -1,7 +1,8 @@
1
1
  import { ObjectGraph } from '../../graph/ObjectGraph';
2
2
  export declare const GRAPH_INSTANCE_NAME_KEY = "GRAPH_INSTANCE_NAME";
3
3
  declare class LateInjector<T extends object> {
4
- inject(target: T, sourceGraph?: ObjectGraph): T;
4
+ inject(target: T, keyOrGraph?: string | ObjectGraph): T;
5
+ private getGraph;
5
6
  private getGraphInstance;
6
7
  }
7
8
  declare const _default: LateInjector<object>;
@@ -1 +1 @@
1
- {"version":3,"file":"LateInjector.d.ts","sourceRoot":"","sources":["../../../../src/injectors/class/LateInjector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAKtD,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAE7D,cAAM,YAAY,CAAC,CAAC,SAAS,MAAM;IACjC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,CAAC;IAU/C,OAAO,CAAC,gBAAgB;CAIzB;;AAED,wBAAkC"}
1
+ {"version":3,"file":"LateInjector.d.ts","sourceRoot":"","sources":["../../../../src/injectors/class/LateInjector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAKtD,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAE7D,cAAM,YAAY,CAAC,CAAC,SAAS,MAAM;IACjC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,CAAC;IAUvD,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,gBAAgB;CAIzB;;AAED,wBAAkC"}
@@ -4,21 +4,30 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.GRAPH_INSTANCE_NAME_KEY = void 0;
7
+ const lodash_1 = require("lodash");
8
+ const ObjectGraph_1 = require("../../graph/ObjectGraph");
7
9
  const GraphRegistry_1 = __importDefault(require("../../graph/registry/GraphRegistry"));
8
10
  const reflect_1 = require("../../utils/reflect");
9
11
  const InjectionMetadata_1 = __importDefault(require("./InjectionMetadata"));
10
12
  exports.GRAPH_INSTANCE_NAME_KEY = 'GRAPH_INSTANCE_NAME';
11
13
  class LateInjector {
12
- inject(target, sourceGraph) {
13
- if (sourceGraph)
14
- GraphRegistry_1.default.ensureRegistered(sourceGraph);
14
+ inject(target, keyOrGraph) {
15
+ if (keyOrGraph)
16
+ GraphRegistry_1.default.ensureRegistered(keyOrGraph);
15
17
  const injectionMetadata = new InjectionMetadata_1.default();
16
- const graph = sourceGraph ?? this.getGraphInstance(target);
18
+ const graph = this.getGraph(target, keyOrGraph);
17
19
  injectionMetadata.getLatePropertiesToInject(target.constructor).forEach((key) => {
18
20
  Reflect.set(target, key, graph.retrieve(key));
19
21
  });
20
22
  return target;
21
23
  }
24
+ getGraph(target, keyOrGraph) {
25
+ if (keyOrGraph instanceof ObjectGraph_1.ObjectGraph)
26
+ return keyOrGraph;
27
+ if ((0, lodash_1.isString)(keyOrGraph))
28
+ return GraphRegistry_1.default.resolve(keyOrGraph, 'classInjection');
29
+ return this.getGraphInstance(target);
30
+ }
22
31
  getGraphInstance(target) {
23
32
  const graphInstanceName = (0, reflect_1.getMetadata)(target.constructor, exports.GRAPH_INSTANCE_NAME_KEY);
24
33
  return GraphRegistry_1.default.getGraphInstance(graphInstanceName);
@@ -1 +1 @@
1
- {"version":3,"file":"LateInjector.js","sourceRoot":"","sources":["../../../../src/injectors/class/LateInjector.ts"],"names":[],"mappings":";;;;;;AACA,uFAA+D;AAC/D,iDAAkD;AAClD,4EAAoD;AAEvC,QAAA,uBAAuB,GAAG,qBAAqB,CAAC;AAE7D,MAAM,YAAY;IAChB,MAAM,CAAC,MAAS,EAAE,WAAyB;QACzC,IAAI,WAAW;YAAE,uBAAa,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC7D,MAAM,iBAAiB,GAAG,IAAI,2BAAiB,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,WAAW,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC3D,iBAAiB,CAAC,yBAAyB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAC9E,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,gBAAgB,CAAC,MAAS;QAChC,MAAM,iBAAiB,GAAG,IAAA,qBAAW,EAAC,MAAM,CAAC,WAAW,EAAE,+BAAuB,CAAC,CAAC;QACnF,OAAO,uBAAa,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IAC3D,CAAC;CACF;AAED,kBAAe,IAAI,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"LateInjector.js","sourceRoot":"","sources":["../../../../src/injectors/class/LateInjector.ts"],"names":[],"mappings":";;;;;;AAAA,mCAAkC;AAClC,yDAAsD;AACtD,uFAA+D;AAC/D,iDAAkD;AAClD,4EAAoD;AAEvC,QAAA,uBAAuB,GAAG,qBAAqB,CAAC;AAE7D,MAAM,YAAY;IAChB,MAAM,CAAC,MAAS,EAAE,UAAiC;QACjD,IAAI,UAAU;YAAE,uBAAa,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC3D,MAAM,iBAAiB,GAAG,IAAI,2BAAiB,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAChD,iBAAiB,CAAC,yBAAyB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAC9E,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,QAAQ,CAAC,MAAS,EAAE,UAAiC;QAC3D,IAAI,UAAU,YAAY,yBAAW;YAAE,OAAO,UAAU,CAAC;QACzD,IAAI,IAAA,iBAAQ,EAAC,UAAU,CAAC;YAAE,OAAO,uBAAa,CAAC,OAAO,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;QACrF,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAEO,gBAAgB,CAAC,MAAS;QAChC,MAAM,iBAAiB,GAAG,IAAA,qBAAW,EAAC,MAAM,CAAC,WAAW,EAAE,+BAAuB,CAAC,CAAC;QACnF,OAAO,uBAAa,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IAC3D,CAAC;CACF;AAED,kBAAe,IAAI,YAAY,EAAE,CAAC"}
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import { ObjectGraph } from '../../graph/ObjectGraph';
3
3
  import { Constructable } from '../../types';
4
4
  export default class ComponentInjector {
5
- inject<P>(Target: React.FunctionComponent<P>, Graph: Constructable<ObjectGraph>): React.FunctionComponent<Partial<P>>;
5
+ inject<P>(Target: React.FunctionComponent<P>, keyOrGraph: string | Constructable<ObjectGraph>): React.FunctionComponent<Partial<P>>;
6
6
  private wrapComponent;
7
7
  }
8
8
  //# sourceMappingURL=ComponentInjector.d.ts.map