react-obsidian 2.11.4 → 2.12.1

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 (66) 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/inject/Injectable.d.ts +1 -1
  6. package/dist/src/decorators/inject/Injectable.d.ts.map +1 -1
  7. package/dist/src/decorators/inject/Injectable.js +2 -2
  8. package/dist/src/decorators/inject/Injectable.js.map +1 -1
  9. package/dist/src/graph/ServiceLocatorFactory.d.ts +1 -1
  10. package/dist/src/graph/ServiceLocatorFactory.d.ts.map +1 -1
  11. package/dist/src/graph/ServiceLocatorFactory.js +2 -2
  12. package/dist/src/graph/ServiceLocatorFactory.js.map +1 -1
  13. package/dist/src/graph/registry/GraphRegistry.d.ts +7 -2
  14. package/dist/src/graph/registry/GraphRegistry.d.ts.map +1 -1
  15. package/dist/src/graph/registry/GraphRegistry.js +38 -2
  16. package/dist/src/graph/registry/GraphRegistry.js.map +1 -1
  17. package/dist/src/injectors/class/ClassInjector.d.ts +1 -1
  18. package/dist/src/injectors/class/ClassInjector.d.ts.map +1 -1
  19. package/dist/src/injectors/class/ClassInjector.js +4 -4
  20. package/dist/src/injectors/class/ClassInjector.js.map +1 -1
  21. package/dist/src/injectors/class/LateInjector.d.ts +2 -1
  22. package/dist/src/injectors/class/LateInjector.d.ts.map +1 -1
  23. package/dist/src/injectors/class/LateInjector.js +13 -4
  24. package/dist/src/injectors/class/LateInjector.js.map +1 -1
  25. package/dist/src/injectors/components/ComponentInjector.d.ts +1 -1
  26. package/dist/src/injectors/components/ComponentInjector.d.ts.map +1 -1
  27. package/dist/src/injectors/components/ComponentInjector.js +5 -5
  28. package/dist/src/injectors/components/ComponentInjector.js.map +1 -1
  29. package/dist/src/injectors/components/InjectComponent.d.ts +1 -1
  30. package/dist/src/injectors/components/InjectComponent.d.ts.map +1 -1
  31. package/dist/src/injectors/components/InjectComponent.js +6 -5
  32. package/dist/src/injectors/components/InjectComponent.js.map +1 -1
  33. package/dist/src/injectors/components/useGraph.d.ts +1 -1
  34. package/dist/src/injectors/components/useGraph.d.ts.map +1 -1
  35. package/dist/src/injectors/components/useGraph.js +2 -2
  36. package/dist/src/injectors/components/useGraph.js.map +1 -1
  37. package/dist/src/injectors/components/useInjectionToken.d.ts +1 -1
  38. package/dist/src/injectors/components/useInjectionToken.d.ts.map +1 -1
  39. package/dist/src/injectors/components/useInjectionToken.js +6 -2
  40. package/dist/src/injectors/components/useInjectionToken.js.map +1 -1
  41. package/dist/src/injectors/hooks/HookInjector.d.ts +1 -1
  42. package/dist/src/injectors/hooks/HookInjector.d.ts.map +1 -1
  43. package/dist/src/injectors/hooks/HookInjector.js +2 -2
  44. package/dist/src/injectors/hooks/HookInjector.js.map +1 -1
  45. package/dist/src/injectors/hooks/InjectHook.d.ts +2 -2
  46. package/dist/src/injectors/hooks/InjectHook.d.ts.map +1 -1
  47. package/dist/src/injectors/hooks/InjectHook.js +4 -4
  48. package/dist/src/injectors/hooks/InjectHook.js.map +1 -1
  49. package/dist/src/utils/isString.d.ts +2 -0
  50. package/dist/src/utils/isString.d.ts.map +1 -0
  51. package/dist/src/utils/isString.js +8 -0
  52. package/dist/src/utils/isString.js.map +1 -0
  53. package/package.json +2 -2
  54. package/src/Obsidian.ts +10 -6
  55. package/src/decorators/inject/Injectable.ts +2 -2
  56. package/src/graph/ServiceLocatorFactory.ts +2 -2
  57. package/src/graph/registry/GraphRegistry.ts +39 -3
  58. package/src/injectors/class/ClassInjector.ts +4 -4
  59. package/src/injectors/class/LateInjector.ts +10 -3
  60. package/src/injectors/components/ComponentInjector.tsx +5 -5
  61. package/src/injectors/components/InjectComponent.ts +6 -5
  62. package/src/injectors/components/useGraph.ts +2 -2
  63. package/src/injectors/components/useInjectionToken.ts +5 -2
  64. package/src/injectors/hooks/HookInjector.ts +2 -2
  65. package/src/injectors/hooks/InjectHook.ts +4 -4
  66. package/src/utils/isString.ts +3 -0
@@ -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,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,8 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.Injectable = void 0;
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
  exports.Injectable = Injectable;
13
13
  //# sourceMappingURL=Injectable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Injectable.js","sourceRoot":"","sources":["../../../../src/decorators/inject/Injectable.ts"],"names":[],"mappings":";;;;;;AAEA,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;AAFD,gCAEC"}
1
+ {"version":3,"file":"Injectable.js","sourceRoot":"","sources":["../../../../src/decorators/inject/Injectable.ts"],"names":[],"mappings":";;;;;;AAEA,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;AAFD,gCAEC"}
@@ -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;CASvF"}
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;CASrG"}
@@ -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,15 @@ 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;
12
14
  register(constructor: Constructable<Graph>, subgraphs?: Constructable<Graph>[]): void;
13
- ensureRegistered(graph: Graph): void;
15
+ registerGraphGenerator(key: string, generator: () => Constructable<Graph>): void;
16
+ ensureRegistered(keyOrGraph: string | Graph): void;
14
17
  getSubgraphs(graph: Graph): Graph[];
15
18
  getGraphInstance(name: string): Graph;
16
- resolve<T extends Graph>(Graph: Constructable<T>, source?: 'lifecycleOwner' | 'classInjection' | 'serviceLocator', props?: any, injectionToken?: string): T;
19
+ resolve<T extends Graph>(keyOrGraph: String | Constructable<T>, source?: 'lifecycleOwner' | 'classInjection' | 'serviceLocator', props?: any, injectionToken?: string): T;
20
+ private getGraphConstructorByKey;
17
21
  private has;
18
22
  private getFirst;
19
23
  private getByInjectionToken;
@@ -23,6 +27,7 @@ export declare class GraphRegistry {
23
27
  private isComponentScopedLifecycleBound;
24
28
  clearGraphAfterItWasMockedInTests(graphName: string): void;
25
29
  clear(graph: Graph): void;
30
+ private clearGraphsRegisteredByKey;
26
31
  addGraphMiddleware(middleware: Middleware<Graph>): void;
27
32
  clearGraphMiddlewares(): void;
28
33
  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;AAK1C,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;;AAID,wBAA2D"}
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;IAC/D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgD;IAC/E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2C;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;IAO3C,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;IAiBJ,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,iCAAiC,CAAC,SAAS,EAAE,MAAM;IAqBnD,KAAK,CAAC,KAAK,EAAE,KAAK;IAelB,OAAO,CAAC,0BAA0B;IAUlC,kBAAkB,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC;IAIhD,qBAAqB;IAIrB,QAAQ;CAST;;AAID,wBAA2D"}
@@ -7,6 +7,7 @@ exports.GraphRegistry = void 0;
7
7
  const GraphMiddlewareChain_1 = __importDefault(require("./GraphMiddlewareChain"));
8
8
  const ObtainLifecycleBoundGraphException_1 = require("./ObtainLifecycleBoundGraphException");
9
9
  const getGlobal_1 = require("../../utils/getGlobal");
10
+ const isString_1 = require("../../utils/isString");
10
11
  class GraphRegistry {
11
12
  constructor() {
12
13
  this.constructorToInstance = new Map();
@@ -16,11 +17,21 @@ class GraphRegistry {
16
17
  this.nameToInstance = new Map();
17
18
  this.graphToSubgraphs = new Map();
18
19
  this.graphMiddlewares = new GraphMiddlewareChain_1.default();
20
+ this.keyToGenerator = new Map();
21
+ this.keyToGraph = new Map();
19
22
  }
20
23
  register(constructor, subgraphs = []) {
21
24
  this.graphToSubgraphs.set(constructor, new Set(subgraphs));
22
25
  }
23
- ensureRegistered(graph) {
26
+ registerGraphGenerator(key, generator) {
27
+ if (this.keyToGenerator.has(key))
28
+ throw new Error(`Attempted to register a graph generator for key "${key}" that is already registered.`);
29
+ this.keyToGenerator.set(key, generator);
30
+ }
31
+ ensureRegistered(keyOrGraph) {
32
+ if ((0, isString_1.isString)(keyOrGraph))
33
+ return;
34
+ const graph = keyOrGraph;
24
35
  if (this.instanceToConstructor.get(graph))
25
36
  return;
26
37
  this.set(graph.constructor, graph);
@@ -34,7 +45,10 @@ class GraphRegistry {
34
45
  getGraphInstance(name) {
35
46
  return this.nameToInstance.get(name);
36
47
  }
37
- resolve(Graph, source = 'lifecycleOwner', props = undefined, injectionToken) {
48
+ resolve(keyOrGraph, source = 'lifecycleOwner', props = undefined, injectionToken) {
49
+ const Graph = (0, isString_1.isString)(keyOrGraph) ?
50
+ this.getGraphConstructorByKey(keyOrGraph) :
51
+ keyOrGraph;
38
52
  if ((this.isSingleton(Graph) || this.isBoundToReactLifecycle(Graph)) && this.has(Graph, injectionToken)) {
39
53
  return this.isComponentScopedLifecycleBound(Graph) ?
40
54
  this.getByInjectionToken(Graph, injectionToken) :
@@ -47,6 +61,16 @@ class GraphRegistry {
47
61
  this.set(Graph, graph, injectionToken);
48
62
  return graph;
49
63
  }
64
+ getGraphConstructorByKey(key) {
65
+ if (this.keyToGraph.has(key))
66
+ return this.keyToGraph.get(key);
67
+ const generator = this.keyToGenerator.get(key);
68
+ if (!generator)
69
+ throw new Error(`Attempted to resolve a graph by key "${key}" that is not registered. Did you forget to call Obsidian.registerGraph?`);
70
+ const constructor = generator();
71
+ this.keyToGraph.set(key, constructor);
72
+ return constructor;
73
+ }
50
74
  has(Graph, injectionToken) {
51
75
  var _a, _b;
52
76
  const instances = this.constructorToInstance.get(Graph);
@@ -125,6 +149,16 @@ class GraphRegistry {
125
149
  this.injectionTokenToInstance.delete(token);
126
150
  this.instanceToInjectionToken.delete(graph);
127
151
  }
152
+ this.clearGraphsRegisteredByKey(Graph);
153
+ }
154
+ clearGraphsRegisteredByKey(Graph) {
155
+ [...this.keyToGraph.keys()]
156
+ .map((key) => [key, this.keyToGraph.get(key)])
157
+ .filter(([_, $Graph]) => $Graph === Graph)
158
+ .forEach(([key, _]) => {
159
+ this.keyToGraph.delete(key);
160
+ this.keyToGenerator.delete(key);
161
+ });
128
162
  }
129
163
  addGraphMiddleware(middleware) {
130
164
  this.graphMiddlewares.add(middleware);
@@ -138,6 +172,8 @@ class GraphRegistry {
138
172
  this.nameToInstance.clear();
139
173
  this.injectionTokenToInstance.clear();
140
174
  this.instanceToInjectionToken.clear();
175
+ this.keyToGenerator.clear();
176
+ this.keyToGraph.clear();
141
177
  }
142
178
  }
143
179
  exports.GraphRegistry = GraphRegistry;
@@ -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;AAIpD,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,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;AAIpD,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,cAAc,GAAG,CAAC;IAKpC,OAAO,CAAC,kBAAkB;CAyC3B"}
@@ -11,18 +11,18 @@ class ClassInjector {
11
11
  this.graphRegistry = graphRegistry;
12
12
  this.injectionMetadata = injectionMetadata;
13
13
  }
14
- inject(Graph) {
14
+ inject(keyOrGraph) {
15
15
  return (Target) => {
16
- return new Proxy(Target, this.createProxyHandler(Graph, this.graphRegistry, this.injectionMetadata));
16
+ return new Proxy(Target, this.createProxyHandler(keyOrGraph, this.graphRegistry, this.injectionMetadata));
17
17
  };
18
18
  }
19
- createProxyHandler(Graph, graphRegistry, injectionMetadata) {
19
+ createProxyHandler(keyOrGraph, graphRegistry, injectionMetadata) {
20
20
  return new class Handler {
21
21
  construct(target, args, newTarget) {
22
22
  var _a;
23
23
  const isReactClassComponent = (_a = target.prototype) === null || _a === void 0 ? void 0 : _a.isReactComponent;
24
24
  const source = isReactClassComponent ? 'lifecycleOwner' : 'classInjection';
25
- const graph = graphRegistry.resolve(Graph, source, args.length > 0 ? args[0] : undefined);
25
+ const graph = graphRegistry.resolve(keyOrGraph, source, args.length > 0 ? args[0] : undefined);
26
26
  if (isReactClassComponent) {
27
27
  ReferenceCounter_1.default.retain(graph);
28
28
  }
@@ -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":"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"}
@@ -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;AAItD,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;AAItD,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,20 +4,29 @@ 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 InjectionMetadata_1 = __importDefault(require("./InjectionMetadata"));
9
11
  exports.GRAPH_INSTANCE_NAME_KEY = 'GRAPH_INSTANCE_NAME';
10
12
  class LateInjector {
11
- inject(target, sourceGraph) {
12
- if (sourceGraph)
13
- GraphRegistry_1.default.ensureRegistered(sourceGraph);
13
+ inject(target, keyOrGraph) {
14
+ if (keyOrGraph)
15
+ GraphRegistry_1.default.ensureRegistered(keyOrGraph);
14
16
  const injectionMetadata = new InjectionMetadata_1.default();
15
- const graph = sourceGraph !== null && sourceGraph !== void 0 ? sourceGraph : this.getGraphInstance(target);
17
+ const graph = this.getGraph(target, keyOrGraph);
16
18
  injectionMetadata.getLatePropertiesToInject(target.constructor).forEach((key) => {
17
19
  Reflect.set(target, key, graph.retrieve(key));
18
20
  });
19
21
  return target;
20
22
  }
23
+ getGraph(target, keyOrGraph) {
24
+ if (keyOrGraph instanceof ObjectGraph_1.ObjectGraph)
25
+ return keyOrGraph;
26
+ if ((0, lodash_1.isString)(keyOrGraph))
27
+ return GraphRegistry_1.default.resolve(keyOrGraph, 'classInjection');
28
+ return this.getGraphInstance(target);
29
+ }
21
30
  getGraphInstance(target) {
22
31
  const graphInstanceName = Reflect.getMetadata(exports.GRAPH_INSTANCE_NAME_KEY, target.constructor);
23
32
  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,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,aAAX,WAAW,cAAX,WAAW,GAAI,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,OAAO,CAAC,WAAW,CAAC,+BAAuB,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3F,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,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,OAAO,CAAC,WAAW,CAAC,+BAAuB,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3F,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
@@ -1 +1 @@
1
- {"version":3,"file":"ComponentInjector.d.ts","sourceRoot":"","sources":["../../../../src/injectors/components/ComponentInjector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGtD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAK5C,MAAM,CAAC,OAAO,OAAO,iBAAiB;IACpC,MAAM,CAAC,CAAC,EACN,MAAM,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAClC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,GAChC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAMtC,OAAO,CAAC,aAAa;CAoBtB"}
1
+ {"version":3,"file":"ComponentInjector.d.ts","sourceRoot":"","sources":["../../../../src/injectors/components/ComponentInjector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGtD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAK5C,MAAM,CAAC,OAAO,OAAO,iBAAiB;IACpC,MAAM,CAAC,CAAC,EACN,MAAM,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAClC,UAAU,EAAE,MAAM,GAAG,aAAa,CAAC,WAAW,CAAC,GAC9C,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAMtC,OAAO,CAAC,aAAa;CAoBtB"}
@@ -11,18 +11,18 @@ const React_1 = require("../../utils/React");
11
11
  const graphContext_1 = require("./graphContext");
12
12
  const useInjectionToken_1 = require("./useInjectionToken");
13
13
  class ComponentInjector {
14
- inject(Target, Graph) {
15
- const Wrapped = this.wrapComponent(Target, Graph);
14
+ inject(Target, keyOrGraph) {
15
+ const Wrapped = this.wrapComponent(Target, keyOrGraph);
16
16
  (0, hoist_non_react_statics_1.default)(Wrapped, Target);
17
17
  return Wrapped;
18
18
  }
19
- wrapComponent(InjectionCandidate, Graph) {
19
+ wrapComponent(InjectionCandidate, keyOrGraph) {
20
20
  const isMemoized = (0, React_1.isMemoizedComponent)(InjectionCandidate);
21
21
  const Target = isMemoized ? InjectionCandidate.type : InjectionCandidate;
22
22
  const compare = isMemoized ? InjectionCandidate.compare : undefined;
23
23
  return (0, React_1.genericMemo)((passedProps) => {
24
- const injectionToken = (0, useInjectionToken_1.useInjectionToken)(Graph);
25
- const graph = (0, useGraph_1.default)(Graph, Target, passedProps, injectionToken);
24
+ const injectionToken = (0, useInjectionToken_1.useInjectionToken)(keyOrGraph);
25
+ const graph = (0, useGraph_1.default)(keyOrGraph, Target, passedProps, injectionToken);
26
26
  const proxiedProps = new PropsInjector_1.default(graph).inject(passedProps);
27
27
  return (react_1.default.createElement(graphContext_1.GraphContext.Provider, { value: { injectionToken } }, Target(proxiedProps)));
28
28
  }, compare);
@@ -1 +1 @@
1
- {"version":3,"file":"ComponentInjector.js","sourceRoot":"","sources":["../../../../src/injectors/components/ComponentInjector.tsx"],"names":[],"mappings":";;;;;AAAA,kDAAiD;AACjD,sFAA2D;AAE3D,oEAA4C;AAC5C,0DAAkC;AAElC,6CAAqE;AACrE,iDAA8C;AAC9C,2DAAwD;AAExD,MAAqB,iBAAiB;IACpC,MAAM,CACJ,MAAkC,EAClC,KAAiC;QAEjC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAClD,IAAA,iCAAoB,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACtC,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,aAAa,CACnB,kBAA8C,EAC9C,KAAiC;QAEjC,MAAM,UAAU,GAAG,IAAA,2BAAmB,EAAC,kBAAkB,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC;QACzE,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAEpE,OAAO,IAAA,mBAAW,EAAC,CAAC,WAAc,EAAE,EAAE;YACpC,MAAM,cAAc,GAAG,IAAA,qCAAiB,EAAC,KAAK,CAAC,CAAC;YAChD,MAAM,KAAK,GAAG,IAAA,kBAAQ,EAAI,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;YACtE,MAAM,YAAY,GAAG,IAAI,uBAAa,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAElE,OAAO,CACL,8BAAC,2BAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAC,cAAc,EAAC,IAC3C,MAAM,CAAC,YAA+C,CAAC,CAClC,CACzB,CAAC;QACJ,CAAC,EAAE,OAAO,CAAC,CAAC;IACd,CAAC;CACF;AA9BD,oCA8BC"}
1
+ {"version":3,"file":"ComponentInjector.js","sourceRoot":"","sources":["../../../../src/injectors/components/ComponentInjector.tsx"],"names":[],"mappings":";;;;;AAAA,kDAAiD;AACjD,sFAA2D;AAE3D,oEAA4C;AAC5C,0DAAkC;AAElC,6CAAqE;AACrE,iDAA8C;AAC9C,2DAAwD;AAExD,MAAqB,iBAAiB;IACpC,MAAM,CACJ,MAAkC,EAClC,UAA+C;QAE/C,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACvD,IAAA,iCAAoB,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACtC,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,aAAa,CACnB,kBAA8C,EAC9C,UAA+C;QAE/C,MAAM,UAAU,GAAG,IAAA,2BAAmB,EAAC,kBAAkB,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC;QACzE,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAEpE,OAAO,IAAA,mBAAW,EAAC,CAAC,WAAc,EAAE,EAAE;YACpC,MAAM,cAAc,GAAG,IAAA,qCAAiB,EAAC,UAAU,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,IAAA,kBAAQ,EAAI,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;YAC3E,MAAM,YAAY,GAAG,IAAI,uBAAa,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAElE,OAAO,CACL,8BAAC,2BAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAC,cAAc,EAAC,IAC3C,MAAM,CAAC,YAA+C,CAAC,CAClC,CACzB,CAAC;QACJ,CAAC,EAAE,OAAO,CAAC,CAAC;IACd,CAAC;CACF;AA9BD,oCA8BC"}
@@ -3,6 +3,6 @@ import { Constructable } from '../../types';
3
3
  interface Discriminator {
4
4
  obsidianDiscriminator: never;
5
5
  }
6
- export declare const injectComponent: <OwnProps = Discriminator, InjectedProps = Discriminator>(Target: import("react").FunctionComponent<(OwnProps extends infer P ? OwnProps extends Discriminator ? P : OwnProps : never) & (InjectedProps extends Discriminator ? any : InjectedProps)>, Graph: Constructable<ObjectGraph>) => import("react").FunctionComponent<InjectedProps extends Discriminator ? OwnProps extends Discriminator ? Partial<OwnProps> : OwnProps : OwnProps extends InjectedProps ? Partial<OwnProps> : OwnProps & Partial<InjectedProps>>;
6
+ export declare const injectComponent: <OwnProps = Discriminator, InjectedProps = Discriminator>(Target: import("react").FunctionComponent<(OwnProps extends infer P ? OwnProps extends Discriminator ? P : OwnProps : never) & (InjectedProps extends Discriminator ? any : InjectedProps)>, keyOrGraph: string | Constructable<ObjectGraph>) => import("react").FunctionComponent<InjectedProps extends Discriminator ? OwnProps extends Discriminator ? Partial<OwnProps> : OwnProps : OwnProps extends InjectedProps ? Partial<OwnProps> : OwnProps & Partial<InjectedProps>>;
7
7
  export {};
8
8
  //# sourceMappingURL=InjectComponent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"InjectComponent.d.ts","sourceRoot":"","sources":["../../../../src/injectors/components/InjectComponent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,UAAU,aAAa;IACrB,qBAAqB,EAAE,KAAK,CAAC;CAC9B;AAID,eAAO,MAAM,eAAe,gQAKnB,cAAc,WAAW,CAAC,oOASlC,CAAC"}
1
+ {"version":3,"file":"InjectComponent.d.ts","sourceRoot":"","sources":["../../../../src/injectors/components/InjectComponent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAI5C,UAAU,aAAa;IACrB,qBAAqB,EAAE,KAAK,CAAC;CAC9B;AAID,eAAO,MAAM,eAAe,qQAKd,MAAM,GAAG,cAAc,WAAW,CAAC,oOAShD,CAAC"}
@@ -4,15 +4,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.injectComponent = void 0;
7
+ const isString_1 = require("../../utils/isString");
7
8
  const ComponentInjector_1 = __importDefault(require("./ComponentInjector"));
8
9
  const componentInjector = new ComponentInjector_1.default();
9
- const injectComponent = (Target, Graph) => {
10
- assertGraph(Graph, Target);
11
- return componentInjector.inject(Target, Graph);
10
+ const injectComponent = (Target, keyOrGraph) => {
11
+ assertGraph(keyOrGraph, Target);
12
+ return componentInjector.inject(Target, keyOrGraph);
12
13
  };
13
14
  exports.injectComponent = injectComponent;
14
- function assertGraph(Graph, Target) {
15
- if (!Graph) {
15
+ function assertGraph(keyOrGraph, Target) {
16
+ if (!(0, isString_1.isString)(keyOrGraph) && !keyOrGraph) {
16
17
  throw new Error(`injectComponent was called with an undefined Graph.`
17
18
  + `This is probably not an issue with Obsidian.`
18
19
  + `It's typically caused by circular dependencies.`
@@ -1 +1 @@
1
- {"version":3,"file":"InjectComponent.js","sourceRoot":"","sources":["../../../../src/injectors/components/InjectComponent.ts"],"names":[],"mappings":";;;;;;AAEA,4EAAoD;AAMpD,MAAM,iBAAiB,GAAG,IAAI,2BAAiB,EAAE,CAAC;AAE3C,MAAM,eAAe,GAAG,CAC7B,MAGC,EACD,KAAiC,EACjC,EAAE;IACF,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAE3B,OAAO,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAI5C,CAAC;AACJ,CAAC,CAAC;AAdW,QAAA,eAAe,mBAc1B;AACF,SAAS,WAAW,CAAC,KAA0C,EAAE,MAAW;IAC1E,IAAI,CAAC,KAAK,EAAE;QACV,MAAM,IAAI,KAAK,CACb,qDAAqD;cACnD,8CAA8C;cAC9C,iDAAiD;cACjD,gCAAgC,MAAM,CAAC,IAAI,GAAG,CACjD,CAAC;KACH;AACH,CAAC"}
1
+ {"version":3,"file":"InjectComponent.js","sourceRoot":"","sources":["../../../../src/injectors/components/InjectComponent.ts"],"names":[],"mappings":";;;;;;AAEA,mDAAgD;AAChD,4EAAoD;AAMpD,MAAM,iBAAiB,GAAG,IAAI,2BAAiB,EAAE,CAAC;AAE3C,MAAM,eAAe,GAAG,CAC7B,MAGC,EACD,UAA+C,EAC/C,EAAE;IACF,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAEhC,OAAO,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAIjD,CAAC;AACJ,CAAC,CAAC;AAdW,QAAA,eAAe,mBAc1B;AACF,SAAS,WAAW,CAAC,UAA+C,EAAE,MAAW;IAC/E,IAAI,CAAC,IAAA,mBAAQ,EAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE;QACxC,MAAM,IAAI,KAAK,CACb,qDAAqD;cACnD,8CAA8C;cAC9C,iDAAiD;cACjD,gCAAgC,MAAM,CAAC,IAAI,GAAG,CACjD,CAAC;KACH;AACH,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { Constructable } from '../../types';
2
2
  import { ObjectGraph } from '../../graph/ObjectGraph';
3
- declare const _default: <P>(Graph: Constructable<ObjectGraph>, target: any, props?: Partial<P> | undefined, injectionToken?: string) => ObjectGraph<unknown>;
3
+ declare const _default: <P>(keyOrGraph: string | Constructable<ObjectGraph>, target: any, props?: Partial<P> | undefined, injectionToken?: string) => ObjectGraph<unknown>;
4
4
  export default _default;
5
5
  //# sourceMappingURL=useGraph.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useGraph.d.ts","sourceRoot":"","sources":["../../../../src/injectors/components/useGraph.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;mCAK7C,cAAc,WAAW,CAAC,UACzB,GAAG,mDAEM,MAAM;AAJzB,wBAiBE"}
1
+ {"version":3,"file":"useGraph.d.ts","sourceRoot":"","sources":["../../../../src/injectors/components/useGraph.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;wCAKxC,MAAM,GAAG,cAAc,WAAW,CAAC,UACvC,GAAG,mDAEM,MAAM;AAJzB,wBAiBE"}
@@ -6,9 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const react_1 = require("react");
7
7
  const GraphRegistry_1 = __importDefault(require("../../graph/registry/GraphRegistry"));
8
8
  const ReferenceCounter_1 = __importDefault(require("../../ReferenceCounter"));
9
- exports.default = (Graph, target, props, injectionToken) => {
9
+ exports.default = (keyOrGraph, target, props, injectionToken) => {
10
10
  const [graph] = (0, react_1.useState)(() => {
11
- const resolvedGraph = GraphRegistry_1.default.resolve(Graph, 'lifecycleOwner', props, injectionToken);
11
+ const resolvedGraph = GraphRegistry_1.default.resolve(keyOrGraph, 'lifecycleOwner', props, injectionToken);
12
12
  resolvedGraph.onBind(target);
13
13
  return resolvedGraph;
14
14
  });
@@ -1 +1 @@
1
- {"version":3,"file":"useGraph.js","sourceRoot":"","sources":["../../../../src/injectors/components/useGraph.ts"],"names":[],"mappings":";;;;;AAAA,iCAA4C;AAG5C,uFAA+D;AAC/D,8EAAsD;AAEtD,kBAAe,CACb,KAAiC,EACjC,MAAW,EACX,KAAkB,EAClB,cAAuB,EACvB,EAAE;IAEF,MAAM,CAAC,KAAK,CAAC,GAAG,IAAA,gBAAQ,EAAC,GAAG,EAAE;QAC5B,MAAM,aAAa,GAAG,uBAAa,CAAC,OAAO,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;QAC5F,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7B,OAAO,aAAa,CAAC;IACvB,CAAC,CAAC,CAAC;IACH,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,0BAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,OAAO,GAAG,EAAE,CAAC,0BAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,uBAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACZ,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
1
+ {"version":3,"file":"useGraph.js","sourceRoot":"","sources":["../../../../src/injectors/components/useGraph.ts"],"names":[],"mappings":";;;;;AAAA,iCAA4C;AAG5C,uFAA+D;AAC/D,8EAAsD;AAEtD,kBAAe,CACb,UAA+C,EAC/C,MAAW,EACX,KAAkB,EAClB,cAAuB,EACvB,EAAE;IAEF,MAAM,CAAC,KAAK,CAAC,GAAG,IAAA,gBAAQ,EAAC,GAAG,EAAE;QAC5B,MAAM,aAAa,GAAG,uBAAa,CAAC,OAAO,CAAC,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;QACjG,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7B,OAAO,aAAa,CAAC;IACvB,CAAC,CAAC,CAAC;IACH,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,0BAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,OAAO,GAAG,EAAE,CAAC,0BAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,uBAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACZ,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import type { Constructable, ObjectGraph } from '../..';
2
- export declare const useInjectionToken: (Graph: Constructable<ObjectGraph>) => string;
2
+ export declare const useInjectionToken: (keyOrGraph: string | Constructable<ObjectGraph>) => string;
3
3
  //# sourceMappingURL=useInjectionToken.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useInjectionToken.d.ts","sourceRoot":"","sources":["../../../../src/injectors/components/useInjectionToken.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAGxD,eAAO,MAAM,iBAAiB,UAAW,cAAc,WAAW,CAAC,WAIlE,CAAC"}
1
+ {"version":3,"file":"useInjectionToken.d.ts","sourceRoot":"","sources":["../../../../src/injectors/components/useInjectionToken.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAIxD,eAAO,MAAM,iBAAiB,eAAgB,MAAM,GAAG,cAAc,WAAW,CAAC,WAMhF,CAAC"}
@@ -4,9 +4,13 @@ exports.useInjectionToken = void 0;
4
4
  const react_1 = require("react");
5
5
  const graphContext_1 = require("./graphContext");
6
6
  const uniqueId_1 = require("../../utils/uniqueId");
7
- const useInjectionToken = (Graph) => {
7
+ const isString_1 = require("../../utils/isString");
8
+ const useInjectionToken = (keyOrGraph) => {
8
9
  const ctx = (0, react_1.useContext)(graphContext_1.GraphContext);
9
- const [injectionToken] = (0, react_1.useState)(() => { var _a; return (_a = ctx === null || ctx === void 0 ? void 0 : ctx.injectionToken) !== null && _a !== void 0 ? _a : (0, uniqueId_1.uniqueId)(Graph.name); });
10
+ const [injectionToken] = (0, react_1.useState)(() => {
11
+ var _a;
12
+ return (_a = ctx === null || ctx === void 0 ? void 0 : ctx.injectionToken) !== null && _a !== void 0 ? _a : (0, uniqueId_1.uniqueId)((0, isString_1.isString)(keyOrGraph) ? keyOrGraph : keyOrGraph.name);
13
+ });
10
14
  return injectionToken;
11
15
  };
12
16
  exports.useInjectionToken = useInjectionToken;
@@ -1 +1 @@
1
- {"version":3,"file":"useInjectionToken.js","sourceRoot":"","sources":["../../../../src/injectors/components/useInjectionToken.ts"],"names":[],"mappings":";;;AAAA,iCAA6C;AAC7C,iDAA8C;AAE9C,mDAAgD;AAEzC,MAAM,iBAAiB,GAAG,CAAC,KAAiC,EAAE,EAAE;IACrE,MAAM,GAAG,GAAG,IAAA,kBAAU,EAAC,2BAAY,CAAC,CAAC;IACrC,MAAM,CAAC,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAC,GAAG,EAAE,WAAC,OAAA,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,cAAc,mCAAI,IAAA,mBAAQ,EAAC,KAAK,CAAC,IAAI,CAAC,CAAA,EAAA,CAAC,CAAC;IACrF,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AAJW,QAAA,iBAAiB,qBAI5B"}
1
+ {"version":3,"file":"useInjectionToken.js","sourceRoot":"","sources":["../../../../src/injectors/components/useInjectionToken.ts"],"names":[],"mappings":";;;AAAA,iCAA6C;AAC7C,iDAA8C;AAE9C,mDAAgD;AAChD,mDAAgD;AAEzC,MAAM,iBAAiB,GAAG,CAAC,UAA+C,EAAE,EAAE;IACnF,MAAM,GAAG,GAAG,IAAA,kBAAU,EAAC,2BAAY,CAAC,CAAC;IACrC,MAAM,CAAC,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAC,GAAG,EAAE;;QACrC,OAAO,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,cAAc,mCAAI,IAAA,mBAAQ,EAAC,IAAA,mBAAQ,EAAC,UAAU,CAAC,CAAA,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC7F,CAAC,CAAC,CAAC;IACH,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AANW,QAAA,iBAAiB,qBAM5B"}
@@ -1,6 +1,6 @@
1
1
  import { ObjectGraph } from '../../graph/ObjectGraph';
2
2
  import { Constructable } from '../../types';
3
3
  export default class HookInjector {
4
- inject<Args, Result>(hook: (args: Args) => Result, Graph: Constructable<ObjectGraph>): (args?: Partial<Args>) => Result;
4
+ inject<Args, Result>(hook: (args: Args) => Result, keyOrGraph: string | Constructable<ObjectGraph>): (args?: Partial<Args>) => Result;
5
5
  }
6
6
  //# sourceMappingURL=HookInjector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HookInjector.d.ts","sourceRoot":"","sources":["../../../../src/injectors/hooks/HookInjector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGtD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B,MAAM,CAAC,IAAI,EAAE,MAAM,EACjB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,EAC5B,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,GAChC,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,MAAM;CAMpC"}
1
+ {"version":3,"file":"HookInjector.d.ts","sourceRoot":"","sources":["../../../../src/injectors/hooks/HookInjector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGtD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B,MAAM,CAAC,IAAI,EAAE,MAAM,EACjB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,EAC5B,UAAU,EAAE,MAAM,GAAG,aAAa,CAAC,WAAW,CAAC,GAC9C,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,MAAM;CAMpC"}
@@ -5,9 +5,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const useGraph_1 = __importDefault(require("../components/useGraph"));
7
7
  class HookInjector {
8
- inject(hook, Graph) {
8
+ inject(hook, keyOrGraph) {
9
9
  return (args) => {
10
- const graph = (0, useGraph_1.default)(Graph, hook, args);
10
+ const graph = (0, useGraph_1.default)(keyOrGraph, hook, args);
11
11
  return hook(new Proxy(args !== null && args !== void 0 ? args : {}, new Injector(graph)));
12
12
  };
13
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"HookInjector.js","sourceRoot":"","sources":["../../../../src/injectors/hooks/HookInjector.ts"],"names":[],"mappings":";;;;;AAEA,sEAA8C;AAG9C,MAAqB,YAAY;IAC/B,MAAM,CACJ,IAA4B,EAC5B,KAAiC;QAEjC,OAAO,CAAC,IAAoB,EAAU,EAAE;YACtC,MAAM,KAAK,GAAG,IAAA,kBAAQ,EAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAC1C,OAAO,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC,CAAC;IACJ,CAAC;CACF;AAVD,+BAUC;AAED,MAAM,QAAQ;IACZ,YAAoB,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;IAEpC,GAAG,CAAC,GAAQ,EAAE,QAAgB,EAAE,QAAa;QAC3C,OAAO,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACnF,CAAC;CACF"}
1
+ {"version":3,"file":"HookInjector.js","sourceRoot":"","sources":["../../../../src/injectors/hooks/HookInjector.ts"],"names":[],"mappings":";;;;;AAEA,sEAA8C;AAG9C,MAAqB,YAAY;IAC/B,MAAM,CACJ,IAA4B,EAC5B,UAA+C;QAE/C,OAAO,CAAC,IAAoB,EAAU,EAAE;YACtC,MAAM,KAAK,GAAG,IAAA,kBAAQ,EAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAC/C,OAAO,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC,CAAC;IACJ,CAAC;CACF;AAVD,+BAUC;AAED,MAAM,QAAQ;IACZ,YAAoB,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;IAEpC,GAAG,CAAC,GAAQ,EAAE,QAAgB,EAAE,QAAa;QAC3C,OAAO,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACnF,CAAC;CACF"}
@@ -1,5 +1,5 @@
1
1
  import { ObjectGraph } from '../../graph/ObjectGraph';
2
2
  import { Constructable } from '../../types';
3
- export declare function injectHookWithArguments<Injected, Own, Result = {}>(hook: (args: Injected & Own) => Result, Graph: Constructable<ObjectGraph>): (props: Own & Partial<Injected>) => Result;
4
- export declare function injectHook<Injected, Result = {}>(hook: (args: Injected) => Result, Graph: Constructable<ObjectGraph>): (props?: Partial<Injected>) => Result;
3
+ export declare function injectHookWithArguments<Injected, Own, Result = {}>(hook: (args: Injected & Own) => Result, keyOrGraph: string | Constructable<ObjectGraph>): (props: Own & Partial<Injected>) => Result;
4
+ export declare function injectHook<Injected, Result = {}>(hook: (args: Injected) => Result, keyOrGraph: string | Constructable<ObjectGraph>): (props?: Partial<Injected>) => Result;
5
5
  //# sourceMappingURL=InjectHook.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"InjectHook.d.ts","sourceRoot":"","sources":["../../../../src/injectors/hooks/InjectHook.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAU5C,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,EAAE,EAChE,IAAI,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,GAAG,KAAK,MAAM,EACtC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,GAChC,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,MAAM,CAE5C;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,EAAE,EAC9C,IAAI,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,MAAM,EAChC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,GAChC,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,MAAM,CAEvC"}
1
+ {"version":3,"file":"InjectHook.d.ts","sourceRoot":"","sources":["../../../../src/injectors/hooks/InjectHook.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAU5C,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,EAAE,EAChE,IAAI,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,GAAG,KAAK,MAAM,EACtC,UAAU,EAAE,MAAM,GAAG,aAAa,CAAC,WAAW,CAAC,GAC9C,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,MAAM,CAE5C;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,EAAE,EAC9C,IAAI,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,MAAM,EAChC,UAAU,EAAE,MAAM,GAAG,aAAa,CAAC,WAAW,CAAC,GAC9C,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,MAAM,CAEvC"}
@@ -10,12 +10,12 @@ const hookInjector = new HookInjector_1.default();
10
10
  // As a workaround, we provide two injection functions with an almost identical signature.
11
11
  // 1. injectHookWithArguments: Should be used when a hook requires parameters in addition to the injected dependencies.
12
12
  // 2. injectHook: Should be used when a hook does not require parameters.
13
- function injectHookWithArguments(hook, Graph) {
14
- return hookInjector.inject(hook, Graph);
13
+ function injectHookWithArguments(hook, keyOrGraph) {
14
+ return hookInjector.inject(hook, keyOrGraph);
15
15
  }
16
16
  exports.injectHookWithArguments = injectHookWithArguments;
17
- function injectHook(hook, Graph) {
18
- return hookInjector.inject(hook, Graph);
17
+ function injectHook(hook, keyOrGraph) {
18
+ return hookInjector.inject(hook, keyOrGraph);
19
19
  }
20
20
  exports.injectHook = injectHook;
21
21
  //# sourceMappingURL=InjectHook.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InjectHook.js","sourceRoot":"","sources":["../../../../src/injectors/hooks/InjectHook.ts"],"names":[],"mappings":";;;;;;AAGA,kEAA0C;AAE1C,MAAM,YAAY,GAAG,IAAI,sBAAY,EAAE,CAAC;AAExC,6HAA6H;AAC7H,0FAA0F;AAC1F,uHAAuH;AACvH,yEAAyE;AAEzE,SAAgB,uBAAuB,CACrC,IAAsC,EACtC,KAAiC;IAEjC,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAA+C,CAAC;AACxF,CAAC;AALD,0DAKC;AAED,SAAgB,UAAU,CACxB,IAAgC,EAChC,KAAiC;IAEjC,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC1C,CAAC;AALD,gCAKC"}
1
+ {"version":3,"file":"InjectHook.js","sourceRoot":"","sources":["../../../../src/injectors/hooks/InjectHook.ts"],"names":[],"mappings":";;;;;;AAGA,kEAA0C;AAE1C,MAAM,YAAY,GAAG,IAAI,sBAAY,EAAE,CAAC;AAExC,6HAA6H;AAC7H,0FAA0F;AAC1F,uHAAuH;AACvH,yEAAyE;AAEzE,SAAgB,uBAAuB,CACrC,IAAsC,EACtC,UAA+C;IAE/C,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAA+C,CAAC;AAC7F,CAAC;AALD,0DAKC;AAED,SAAgB,UAAU,CACxB,IAAgC,EAChC,UAA+C;IAE/C,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAC/C,CAAC;AALD,gCAKC"}
@@ -0,0 +1,2 @@
1
+ export declare function isString(value: any): value is string;
2
+ //# sourceMappingURL=isString.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isString.d.ts","sourceRoot":"","sources":["../../../src/utils/isString.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,MAAM,CAEpD"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isString = void 0;
4
+ function isString(value) {
5
+ return typeof value === 'string';
6
+ }
7
+ exports.isString = isString;
8
+ //# sourceMappingURL=isString.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isString.js","sourceRoot":"","sources":["../../../src/utils/isString.ts"],"names":[],"mappings":";;;AAAA,SAAgB,QAAQ,CAAC,KAAU;IACjC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;AACnC,CAAC;AAFD,4BAEC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-obsidian",
3
- "version": "2.11.4",
3
+ "version": "2.12.1",
4
4
  "description": "Dependency injection framework for React and React Native applications",
5
5
  "scripts": {
6
6
  "prepack": "npm run lint && tsc --project tsconfig.prod.json",
@@ -47,7 +47,7 @@
47
47
  "eslint-plugin-import": "^2.25.2",
48
48
  "eslint-plugin-import-newlines": "^1.1.5",
49
49
  "eslint-plugin-jest-formatting": "^3.1.0",
50
- "eslint-plugin-obsidian": "2.11.4",
50
+ "eslint-plugin-obsidian": "2.12.1",
51
51
  "eslint-plugin-react": "^7.26.1",
52
52
  "eslint-plugin-react-hooks": "^4.2.0",
53
53
  "eslint-plugin-unused-imports": "3.1.x",
package/src/Obsidian.ts CHANGED
@@ -1,20 +1,24 @@
1
1
  import graphRegistry from './graph/registry/GraphRegistry';
2
2
  import { ObjectGraph } from './graph/ObjectGraph';
3
- import { GraphInternals, ServiceLocator } from './types';
3
+ import { GraphInternals, ServiceLocator, type Constructable } from './types';
4
4
  import { GraphMiddleware } from './graph/registry/GraphMiddleware';
5
5
  import lateInjector from './injectors/class/LateInjector';
6
6
  import serviceLocatorFactory from './graph/ServiceLocatorFactory';
7
7
 
8
8
  export default class Obsidian {
9
- obtain<T extends ObjectGraph<P>, P>(
10
- Graph: new(...args: P[]) => T,
9
+ registerGraph(key: string, generator: () => Constructable<ObjectGraph>) {
10
+ graphRegistry.registerGraphGenerator(key, generator);
11
+ }
12
+
13
+ obtain<T extends ObjectGraph<P>, P = unknown>(
14
+ keyOrGraph: string | (new(...args: P[]) => T),
11
15
  props?: P,
12
16
  ): ServiceLocator<Omit<T, GraphInternals>> {
13
- return serviceLocatorFactory.fromGraph(Graph, props);
17
+ return serviceLocatorFactory.fromGraph(keyOrGraph, props);
14
18
  }
15
19
 
16
- inject<T extends object>(target: T, graph?: ObjectGraph) {
17
- return lateInjector.inject(target, graph);
20
+ inject<T extends object>(target: T, keyOrGraph?: string | ObjectGraph) {
21
+ return lateInjector.inject(target, keyOrGraph);
18
22
  }
19
23
 
20
24
  addGraphMiddleware(middleware: GraphMiddleware) {
@@ -3,6 +3,6 @@ import { Graph } from '../../graph/Graph';
3
3
  import graphRegistry from '../../graph/registry/GraphRegistry';
4
4
  import ClassInjector from '../../injectors/class/ClassInjector';
5
5
 
6
- export function Injectable(Graph: Constructable<Graph>): any {
7
- return new ClassInjector(graphRegistry).inject(Graph);
6
+ export function Injectable(keyOrGraph: string | Constructable<Graph>): any {
7
+ return new ClassInjector(graphRegistry).inject(keyOrGraph);
8
8
  }
@@ -3,8 +3,8 @@ import { Constructable, ServiceLocator as ServiceLocatorType } from '../types';
3
3
  import graphRegistry from './registry/GraphRegistry';
4
4
 
5
5
  export default class ServiceLocatorFactory {
6
- static fromGraph<T extends ObjectGraph<P>, P = any>(Graph: Constructable<T>, props?: P) {
7
- const resolved = graphRegistry.resolve(Graph, 'serviceLocator', props);
6
+ static fromGraph<T extends ObjectGraph<P>, P = any>(keyOrGraph: string | Constructable<T>, props?: P) {
7
+ const resolved = graphRegistry.resolve(keyOrGraph, 'serviceLocator', props);
8
8
  const wrapped = new Proxy(resolved, {
9
9
  get(_target: any, property: string, receiver: any) {
10
10
  return () => resolved.retrieve(property, receiver);
@@ -4,6 +4,7 @@ import { Middleware } from './Middleware';
4
4
  import GraphMiddlewareChain from './GraphMiddlewareChain';
5
5
  import { ObtainLifecycleBoundGraphException } from './ObtainLifecycleBoundGraphException';
6
6
  import { getGlobal } from '../../utils/getGlobal';
7
+ import { isString } from '../../utils/isString';
7
8
 
8
9
  export class GraphRegistry {
9
10
  private readonly constructorToInstance = new Map<Constructable<Graph>, Set<Graph>>();
@@ -13,12 +14,21 @@ export class GraphRegistry {
13
14
  private readonly nameToInstance = new Map<string, Graph>();
14
15
  private readonly graphToSubgraphs = new Map<Constructable<Graph>, Set<Constructable<Graph>>>();
15
16
  private readonly graphMiddlewares = new GraphMiddlewareChain();
17
+ private readonly keyToGenerator = new Map<string,() => Constructable<Graph>>();
18
+ private readonly keyToGraph = new Map<string, Constructable<Graph>>();
16
19
 
17
20
  register(constructor: Constructable<Graph>, subgraphs: Constructable<Graph>[] = []) {
18
21
  this.graphToSubgraphs.set(constructor, new Set(subgraphs));
19
22
  }
20
23
 
21
- ensureRegistered(graph: Graph) {
24
+ registerGraphGenerator(key: string, generator: () => Constructable<Graph>) {
25
+ if (this.keyToGenerator.has(key)) throw new Error(`Attempted to register a graph generator for key "${key}" that is already registered.`);
26
+ this.keyToGenerator.set(key, generator);
27
+ }
28
+
29
+ ensureRegistered(keyOrGraph: string | Graph) {
30
+ if (isString(keyOrGraph)) return;
31
+ const graph = keyOrGraph;
22
32
  if (this.instanceToConstructor.get(graph)) return;
23
33
  this.set(graph.constructor as any, graph);
24
34
  }
@@ -34,12 +44,15 @@ export class GraphRegistry {
34
44
  }
35
45
 
36
46
  resolve<T extends Graph>(
37
- Graph: Constructable<T>,
47
+ keyOrGraph: String | Constructable<T>,
38
48
  source: 'lifecycleOwner' | 'classInjection' | 'serviceLocator' = 'lifecycleOwner',
39
49
  props: any = undefined,
40
50
  injectionToken?: string,
41
51
  ): T {
42
- if ((this.isSingleton(Graph) || this.isBoundToReactLifecycle(Graph)) && this.has(Graph, injectionToken)) {
52
+ const Graph = isString(keyOrGraph) ?
53
+ this.getGraphConstructorByKey<T>(keyOrGraph) :
54
+ keyOrGraph as Constructable<T>;
55
+ if (( this.isSingleton(Graph) || this.isBoundToReactLifecycle(Graph)) && this.has(Graph, injectionToken)) {
43
56
  return this.isComponentScopedLifecycleBound(Graph) ?
44
57
  this.getByInjectionToken(Graph, injectionToken) :
45
58
  this.getFirst(Graph);
@@ -52,6 +65,15 @@ export class GraphRegistry {
52
65
  return graph as T;
53
66
  }
54
67
 
68
+ private getGraphConstructorByKey<T extends Graph>(key: string): Constructable<T> {
69
+ if (this.keyToGraph.has(key)) return this.keyToGraph.get(key) as Constructable<T>;
70
+ const generator = this.keyToGenerator.get(key);
71
+ if (!generator) throw new Error(`Attempted to resolve a graph by key "${key}" that is not registered. Did you forget to call Obsidian.registerGraph?`);
72
+ const constructor = generator();
73
+ this.keyToGraph.set(key, constructor);
74
+ return constructor as Constructable<T>;
75
+ }
76
+
55
77
  private has(Graph: Constructable<Graph>, injectionToken?: string): boolean {
56
78
  const instances = this.constructorToInstance.get(Graph);
57
79
  if (!instances) return false;
@@ -133,6 +155,18 @@ export class GraphRegistry {
133
155
  this.injectionTokenToInstance.delete(token);
134
156
  this.instanceToInjectionToken.delete(graph);
135
157
  }
158
+
159
+ this.clearGraphsRegisteredByKey(Graph);
160
+ }
161
+
162
+ private clearGraphsRegisteredByKey(Graph: Constructable<Graph>) {
163
+ [...this.keyToGraph.keys()]
164
+ .map((key) => [key, this.keyToGraph.get(key)!] as [string, Constructable<Graph>])
165
+ .filter(([_, $Graph]) => $Graph === Graph)
166
+ .forEach(([key, _]) => {
167
+ this.keyToGraph.delete(key);
168
+ this.keyToGenerator.delete(key);
169
+ });
136
170
  }
137
171
 
138
172
  addGraphMiddleware(middleware: Middleware<Graph>) {
@@ -149,6 +183,8 @@ export class GraphRegistry {
149
183
  this.nameToInstance.clear();
150
184
  this.injectionTokenToInstance.clear();
151
185
  this.instanceToInjectionToken.clear();
186
+ this.keyToGenerator.clear();
187
+ this.keyToGraph.clear();
152
188
  }
153
189
  }
154
190
 
@@ -11,14 +11,14 @@ export default class ClassInjector {
11
11
  private injectionMetadata: InjectionMetadata = new InjectionMetadata(),
12
12
  ) {}
13
13
 
14
- inject(Graph: Constructable<Graph>) {
14
+ inject(keyOrGraph: string | Constructable<Graph>) {
15
15
  return (Target: Constructable<any>) => {
16
- return new Proxy(Target, this.createProxyHandler(Graph, this.graphRegistry, this.injectionMetadata));
16
+ return new Proxy(Target, this.createProxyHandler(keyOrGraph, this.graphRegistry, this.injectionMetadata));
17
17
  };
18
18
  }
19
19
 
20
20
  private createProxyHandler(
21
- Graph: Constructable<Graph>,
21
+ keyOrGraph: string | Constructable<Graph>,
22
22
  graphRegistry: GraphRegistry,
23
23
  injectionMetadata: InjectionMetadata,
24
24
  ): ProxyHandler<any> {
@@ -26,7 +26,7 @@ export default class ClassInjector {
26
26
  construct(target: any, args: any[], newTarget: Function): any {
27
27
  const isReactClassComponent = target.prototype?.isReactComponent;
28
28
  const source = isReactClassComponent ? 'lifecycleOwner' : 'classInjection';
29
- const graph = graphRegistry.resolve(Graph, source, args.length > 0 ? args[0] : undefined);
29
+ const graph = graphRegistry.resolve(keyOrGraph, source, args.length > 0 ? args[0] : undefined);
30
30
  if (isReactClassComponent) {
31
31
  referenceCounter.retain(graph);
32
32
  }
@@ -1,3 +1,4 @@
1
+ import { isString } from 'lodash';
1
2
  import { ObjectGraph } from '../../graph/ObjectGraph';
2
3
  import graphRegistry from '../../graph/registry/GraphRegistry';
3
4
  import InjectionMetadata from './InjectionMetadata';
@@ -5,16 +6,22 @@ import InjectionMetadata from './InjectionMetadata';
5
6
  export const GRAPH_INSTANCE_NAME_KEY = 'GRAPH_INSTANCE_NAME';
6
7
 
7
8
  class LateInjector<T extends object> {
8
- inject(target: T, sourceGraph?: ObjectGraph): T {
9
- if (sourceGraph) graphRegistry.ensureRegistered(sourceGraph);
9
+ inject(target: T, keyOrGraph?: string | ObjectGraph): T {
10
+ if (keyOrGraph) graphRegistry.ensureRegistered(keyOrGraph);
10
11
  const injectionMetadata = new InjectionMetadata();
11
- const graph = sourceGraph ?? this.getGraphInstance(target);
12
+ const graph = this.getGraph(target, keyOrGraph);
12
13
  injectionMetadata.getLatePropertiesToInject(target.constructor).forEach((key) => {
13
14
  Reflect.set(target, key, graph.retrieve(key));
14
15
  });
15
16
  return target;
16
17
  }
17
18
 
19
+ private getGraph(target: T, keyOrGraph?: string | ObjectGraph) {
20
+ if (keyOrGraph instanceof ObjectGraph) return keyOrGraph;
21
+ if (isString(keyOrGraph)) return graphRegistry.resolve(keyOrGraph, 'classInjection');
22
+ return this.getGraphInstance(target);
23
+ }
24
+
18
25
  private getGraphInstance(target: T) {
19
26
  const graphInstanceName = Reflect.getMetadata(GRAPH_INSTANCE_NAME_KEY, target.constructor);
20
27
  return graphRegistry.getGraphInstance(graphInstanceName);
@@ -11,24 +11,24 @@ import { useInjectionToken } from './useInjectionToken';
11
11
  export default class ComponentInjector {
12
12
  inject<P>(
13
13
  Target: React.FunctionComponent<P>,
14
- Graph: Constructable<ObjectGraph>,
14
+ keyOrGraph: string | Constructable<ObjectGraph>,
15
15
  ): React.FunctionComponent<Partial<P>> {
16
- const Wrapped = this.wrapComponent(Target, Graph);
16
+ const Wrapped = this.wrapComponent(Target, keyOrGraph);
17
17
  hoistNonReactStatics(Wrapped, Target);
18
18
  return Wrapped;
19
19
  }
20
20
 
21
21
  private wrapComponent<P>(
22
22
  InjectionCandidate: React.FunctionComponent<P>,
23
- Graph: Constructable<ObjectGraph>,
23
+ keyOrGraph: string | Constructable<ObjectGraph>,
24
24
  ): React.FunctionComponent<Partial<P>> {
25
25
  const isMemoized = isMemoizedComponent(InjectionCandidate);
26
26
  const Target = isMemoized ? InjectionCandidate.type : InjectionCandidate;
27
27
  const compare = isMemoized ? InjectionCandidate.compare : undefined;
28
28
 
29
29
  return genericMemo((passedProps: P) => {
30
- const injectionToken = useInjectionToken(Graph);
31
- const graph = useGraph<P>(Graph, Target, passedProps, injectionToken);
30
+ const injectionToken = useInjectionToken(keyOrGraph);
31
+ const graph = useGraph<P>(keyOrGraph, Target, passedProps, injectionToken);
32
32
  const proxiedProps = new PropsInjector(graph).inject(passedProps);
33
33
 
34
34
  return (
@@ -1,5 +1,6 @@
1
1
  import { ObjectGraph } from '../../graph/ObjectGraph';
2
2
  import { Constructable } from '../../types';
3
+ import { isString } from '../../utils/isString';
3
4
  import ComponentInjector from './ComponentInjector';
4
5
 
5
6
  interface Discriminator {
@@ -13,18 +14,18 @@ export const injectComponent = <OwnProps = Discriminator, InjectedProps = Discri
13
14
  (OwnProps extends infer P ? OwnProps extends Discriminator ? P : OwnProps : never) &
14
15
  (InjectedProps extends Discriminator ? any : InjectedProps)
15
16
  >,
16
- Graph: Constructable<ObjectGraph>,
17
+ keyOrGraph: string | Constructable<ObjectGraph>,
17
18
  ) => {
18
- assertGraph(Graph, Target);
19
+ assertGraph(keyOrGraph, Target);
19
20
 
20
- return componentInjector.inject(Target, Graph) as React.FunctionComponent<
21
+ return componentInjector.inject(Target, keyOrGraph) as React.FunctionComponent<
21
22
  InjectedProps extends Discriminator ?
22
23
  OwnProps extends Discriminator ? Partial<OwnProps> : OwnProps :
23
24
  OwnProps extends InjectedProps ? Partial<OwnProps> : OwnProps & Partial<InjectedProps>
24
25
  >;
25
26
  };
26
- function assertGraph(Graph: Constructable<ObjectGraph<unknown>>, Target: any) {
27
- if (!Graph) {
27
+ function assertGraph(keyOrGraph: string | Constructable<ObjectGraph>, Target: any) {
28
+ if (!isString(keyOrGraph) && !keyOrGraph) {
28
29
  throw new Error(
29
30
  `injectComponent was called with an undefined Graph.`
30
31
  + `This is probably not an issue with Obsidian.`
@@ -5,14 +5,14 @@ import graphRegistry from '../../graph/registry/GraphRegistry';
5
5
  import referenceCounter from '../../ReferenceCounter';
6
6
 
7
7
  export default <P>(
8
- Graph: Constructable<ObjectGraph>,
8
+ keyOrGraph: string | Constructable<ObjectGraph>,
9
9
  target: any,
10
10
  props?: Partial<P>,
11
11
  injectionToken?: string,
12
12
  ) => {
13
13
 
14
14
  const [graph] = useState(() => {
15
- const resolvedGraph = graphRegistry.resolve(Graph, 'lifecycleOwner', props, injectionToken);
15
+ const resolvedGraph = graphRegistry.resolve(keyOrGraph, 'lifecycleOwner', props, injectionToken);
16
16
  resolvedGraph.onBind(target);
17
17
  return resolvedGraph;
18
18
  });
@@ -2,9 +2,12 @@ import { useContext, useState } from 'react';
2
2
  import { GraphContext } from './graphContext';
3
3
  import type { Constructable, ObjectGraph } from '../..';
4
4
  import { uniqueId } from '../../utils/uniqueId';
5
+ import { isString } from '../../utils/isString';
5
6
 
6
- export const useInjectionToken = (Graph: Constructable<ObjectGraph>) => {
7
+ export const useInjectionToken = (keyOrGraph: string | Constructable<ObjectGraph>) => {
7
8
  const ctx = useContext(GraphContext);
8
- const [injectionToken] = useState(() => ctx?.injectionToken ?? uniqueId(Graph.name));
9
+ const [injectionToken] = useState(() => {
10
+ return ctx?.injectionToken ?? uniqueId(isString(keyOrGraph)? keyOrGraph : keyOrGraph.name);
11
+ });
9
12
  return injectionToken;
10
13
  };
@@ -6,10 +6,10 @@ import { Constructable } from '../../types';
6
6
  export default class HookInjector {
7
7
  inject<Args, Result>(
8
8
  hook: (args: Args) => Result,
9
- Graph: Constructable<ObjectGraph>,
9
+ keyOrGraph: string | Constructable<ObjectGraph>,
10
10
  ): (args?: Partial<Args>) => Result {
11
11
  return (args?: Partial<Args>): Result => {
12
- const graph = useGraph(Graph, hook, args);
12
+ const graph = useGraph(keyOrGraph, hook, args);
13
13
  return hook(new Proxy(args ?? {}, new Injector(graph)));
14
14
  };
15
15
  }
@@ -12,14 +12,14 @@ const hookInjector = new HookInjector();
12
12
 
13
13
  export function injectHookWithArguments<Injected, Own, Result = {}>(
14
14
  hook: (args: Injected & Own) => Result,
15
- Graph: Constructable<ObjectGraph>,
15
+ keyOrGraph: string | Constructable<ObjectGraph>,
16
16
  ): (props: Own & Partial<Injected>) => Result {
17
- return hookInjector.inject(hook, Graph) as (props: Own & Partial<Injected>) => Result;
17
+ return hookInjector.inject(hook, keyOrGraph) as (props: Own & Partial<Injected>) => Result;
18
18
  }
19
19
 
20
20
  export function injectHook<Injected, Result = {}>(
21
21
  hook: (args: Injected) => Result,
22
- Graph: Constructable<ObjectGraph>,
22
+ keyOrGraph: string | Constructable<ObjectGraph>,
23
23
  ): (props?: Partial<Injected>) => Result {
24
- return hookInjector.inject(hook, Graph);
24
+ return hookInjector.inject(hook, keyOrGraph);
25
25
  }
@@ -0,0 +1,3 @@
1
+ export function isString(value: any): value is string {
2
+ return typeof value === 'string';
3
+ }