react-obsidian 0.0.36 → 0.0.38

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 (61) hide show
  1. package/dist/src/Obsidian.js +2 -2
  2. package/dist/src/decorators/inject/LateInject.d.ts +2 -0
  3. package/dist/src/decorators/inject/LateInject.d.ts.map +1 -0
  4. package/dist/src/decorators/inject/{LazyInject.js → LateInject.js} +5 -5
  5. package/dist/src/decorators/inject/{LazyInject.js.map → LateInject.js.map} +1 -1
  6. package/dist/src/graph/Graph.d.ts +1 -0
  7. package/dist/src/graph/Graph.d.ts.map +1 -1
  8. package/dist/src/graph/ObjectGraph.d.ts +1 -0
  9. package/dist/src/graph/ObjectGraph.d.ts.map +1 -1
  10. package/dist/src/graph/ObjectGraph.js +2 -0
  11. package/dist/src/graph/ObjectGraph.js.map +1 -1
  12. package/dist/src/index.d.ts +1 -1
  13. package/dist/src/index.js +3 -3
  14. package/dist/src/injectors/class/ClassInjector.d.ts.map +1 -1
  15. package/dist/src/injectors/class/ClassInjector.js +3 -2
  16. package/dist/src/injectors/class/ClassInjector.js.map +1 -1
  17. package/dist/src/injectors/class/InjectionMetadata.d.ts +3 -3
  18. package/dist/src/injectors/class/InjectionMetadata.js +5 -5
  19. package/dist/src/injectors/class/{LazyInjector.d.ts → LateInjector.d.ts} +3 -3
  20. package/dist/src/injectors/class/{LazyInjector.d.ts.map → LateInjector.d.ts.map} +1 -1
  21. package/dist/src/injectors/class/{LazyInjector.js → LateInjector.js} +8 -8
  22. package/dist/src/injectors/class/{LazyInjector.js.map → LateInjector.js.map} +1 -1
  23. package/dist/src/injectors/components/ComponentInjector.js +1 -1
  24. package/dist/src/injectors/components/ComponentInjector.js.map +1 -1
  25. package/dist/src/injectors/components/useGraph.d.ts +1 -1
  26. package/dist/src/injectors/components/useGraph.d.ts.map +1 -1
  27. package/dist/src/injectors/components/useGraph.js +6 -2
  28. package/dist/src/injectors/components/useGraph.js.map +1 -1
  29. package/dist/src/injectors/hooks/HookInjector.js +1 -1
  30. package/dist/src/injectors/hooks/HookInjector.js.map +1 -1
  31. package/dist/src/observable/Observable.d.ts +1 -0
  32. package/dist/src/observable/Observable.d.ts.map +1 -1
  33. package/dist/src/observable/Observable.js +6 -0
  34. package/dist/src/observable/Observable.js.map +1 -1
  35. package/dist/src/types/index.d.ts +1 -1
  36. package/dist/src/types/index.d.ts.map +1 -1
  37. package/dist/test/fixtures/GraphWithOnBind.d.ts +7 -0
  38. package/dist/test/fixtures/GraphWithOnBind.d.ts.map +1 -0
  39. package/dist/test/fixtures/GraphWithOnBind.js +52 -0
  40. package/dist/test/fixtures/GraphWithOnBind.js.map +1 -0
  41. package/dist/transformers/babel-plugin-obsidian/index.js +1 -1
  42. package/documentation/docs/documentation/usage/Classes.mdx +4 -4
  43. package/documentation/docs/documentation/usage/Reactivity.mdx +96 -0
  44. package/documentation/docs/documentation/usage/ServiceLocator.mdx +1 -1
  45. package/package.json +1 -1
  46. package/src/Obsidian.ts +2 -2
  47. package/src/decorators/inject/{LazyInject.ts → LateInject.ts} +2 -2
  48. package/src/graph/Graph.ts +1 -0
  49. package/src/graph/ObjectGraph.ts +4 -0
  50. package/src/index.ts +1 -1
  51. package/src/injectors/class/ClassInjector.ts +2 -1
  52. package/src/injectors/class/InjectionMetadata.ts +6 -6
  53. package/src/injectors/class/{LazyInjector.ts → LateInjector.ts} +3 -3
  54. package/src/injectors/components/ComponentInjector.tsx +1 -1
  55. package/src/injectors/components/useGraph.ts +6 -2
  56. package/src/injectors/hooks/HookInjector.ts +1 -1
  57. package/src/observable/Observable.ts +7 -0
  58. package/src/types/index.ts +1 -1
  59. package/transformers/babel-plugin-obsidian/index.ts +1 -1
  60. package/dist/src/decorators/inject/LazyInject.d.ts +0 -2
  61. package/dist/src/decorators/inject/LazyInject.d.ts.map +0 -1
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  var GraphRegistry_1 = __importDefault(require("./graph/registry/GraphRegistry"));
7
- var LazyInjector_1 = __importDefault(require("./injectors/class/LazyInjector"));
7
+ var LateInjector_1 = __importDefault(require("./injectors/class/LateInjector"));
8
8
  var ServiceLocatorFactory_1 = __importDefault(require("./graph/ServiceLocatorFactory"));
9
9
  var Obsidian = /** @class */ (function () {
10
10
  function Obsidian() {
@@ -13,7 +13,7 @@ var Obsidian = /** @class */ (function () {
13
13
  return ServiceLocatorFactory_1.default.fromGraph(Graph, props);
14
14
  };
15
15
  Obsidian.prototype.inject = function (target, graph) {
16
- return LazyInjector_1.default.inject(target, graph);
16
+ return LateInjector_1.default.inject(target, graph);
17
17
  };
18
18
  Obsidian.prototype.addGraphMiddleware = function (middleware) {
19
19
  GraphRegistry_1.default.addGraphMiddleware(middleware);
@@ -0,0 +1,2 @@
1
+ export declare function LateInject(name?: string): any;
2
+ //# sourceMappingURL=LateInject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LateInject.d.ts","sourceRoot":"","sources":["../../../../src/decorators/inject/LateInject.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,GAAG,CAK7C"}
@@ -3,13 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.LazyInject = void 0;
6
+ exports.LateInject = void 0;
7
7
  var InjectionMetadata_1 = __importDefault(require("../../injectors/class/InjectionMetadata"));
8
- function LazyInject(name) {
8
+ function LateInject(name) {
9
9
  return function (target) {
10
10
  var metadata = new InjectionMetadata_1.default();
11
- metadata.saveLazyPropertyMetadata(target.constructor, name);
11
+ metadata.saveLatePropertyMetadata(target.constructor, name);
12
12
  };
13
13
  }
14
- exports.LazyInject = LazyInject;
15
- //# sourceMappingURL=LazyInject.js.map
14
+ exports.LateInject = LateInject;
15
+ //# sourceMappingURL=LateInject.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LazyInject.js","sourceRoot":"","sources":["../../../../src/decorators/inject/LazyInject.ts"],"names":[],"mappings":";;;;;;AAAA,8FAAwE;AAExE,SAAgB,UAAU,CAAC,IAAa;IACtC,OAAO,UAAC,MAAc;QACpB,IAAM,QAAQ,GAAG,IAAI,2BAAiB,EAAE,CAAC;QACzC,QAAQ,CAAC,wBAAwB,CAAC,MAAM,CAAC,WAAW,EAAE,IAAK,CAAC,CAAC;IAC/D,CAAC,CAAC;AACJ,CAAC;AALD,gCAKC"}
1
+ {"version":3,"file":"LateInject.js","sourceRoot":"","sources":["../../../../src/decorators/inject/LateInject.ts"],"names":[],"mappings":";;;;;;AAAA,8FAAwE;AAExE,SAAgB,UAAU,CAAC,IAAa;IACtC,OAAO,UAAC,MAAc;QACpB,IAAM,QAAQ,GAAG,IAAI,2BAAiB,EAAE,CAAC;QACzC,QAAQ,CAAC,wBAAwB,CAAC,MAAM,CAAC,WAAW,EAAE,IAAK,CAAC,CAAC;IAC/D,CAAC,CAAC;AACJ,CAAC;AALD,gCAKC"}
@@ -1,5 +1,6 @@
1
1
  import PropertyRetrieverDelegate from './PropertyRetrieverDelegate';
2
2
  export interface Graph extends PropertyRetrieverDelegate {
3
3
  get name(): string;
4
+ onBind(target: any): void;
4
5
  }
5
6
  //# sourceMappingURL=Graph.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Graph.d.ts","sourceRoot":"","sources":["../../../src/graph/Graph.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,MAAM,6BAA6B,CAAC;AAEpE,MAAM,WAAW,KAAM,SAAQ,yBAAyB;IACtD,IAAI,IAAI,IAAI,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"Graph.d.ts","sourceRoot":"","sources":["../../../src/graph/Graph.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,MAAM,6BAA6B,CAAC;AAEpE,MAAM,WAAW,KAAM,SAAQ,yBAAyB;IACtD,IAAI,IAAI,IAAI,MAAM,CAAC;IACnB,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC;CAC3B"}
@@ -6,6 +6,7 @@ export declare abstract class ObjectGraph<T = unknown> implements Graph {
6
6
  get name(): string;
7
7
  constructor(_props?: T | undefined);
8
8
  retrieve<Dependency>(property: string, receiver?: unknown): Dependency | undefined;
9
+ onBind(_target: any): void;
9
10
  }
10
11
  export declare function isGraph(object: Constructable<ObjectGraph> | any): object is Constructable<ObjectGraph>;
11
12
  //# sourceMappingURL=ObjectGraph.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectGraph.d.ts","sourceRoot":"","sources":["../../../src/graph/ObjectGraph.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,8BAAsB,WAAW,CAAC,CAAC,GAAG,OAAO,CAAE,YAAW,KAAK;IAQjD,SAAS,CAAC,MAAM,CAAC;IAP7B,OAAO,CAAC,iBAAiB,CAA+B;IAExD,IACI,IAAI,IAAI,MAAM,CAEjB;gBAEqB,MAAM,CAAC,eAAG;IAIhC,QAAQ,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS;CAGnF;AAID,wBAAgB,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,GAAG,GAAG,MAAM,IAAI,aAAa,CAAC,WAAW,CAAC,CAEtG"}
1
+ {"version":3,"file":"ObjectGraph.d.ts","sourceRoot":"","sources":["../../../src/graph/ObjectGraph.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,8BAAsB,WAAW,CAAC,CAAC,GAAG,OAAO,CAAE,YAAW,KAAK;IAQjD,SAAS,CAAC,MAAM,CAAC;IAP7B,OAAO,CAAC,iBAAiB,CAA+B;IAExD,IACI,IAAI,IAAI,MAAM,CAEjB;gBAEqB,MAAM,CAAC,eAAG;IAIhC,QAAQ,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS;IAIlF,MAAM,CAAC,OAAO,EAAE,GAAG;CAGpB;AAID,wBAAgB,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,GAAG,GAAG,MAAM,IAAI,aAAa,CAAC,WAAW,CAAC,CAEtG"}
@@ -33,6 +33,8 @@ var ObjectGraph = /** @class */ (function () {
33
33
  ObjectGraph.prototype.retrieve = function (property, receiver) {
34
34
  return this.propertyRetriever.retrieve(property, receiver);
35
35
  };
36
+ ObjectGraph.prototype.onBind = function (_target) {
37
+ };
36
38
  __decorate([
37
39
  (0, Memoize_1.default)(),
38
40
  __metadata("design:type", String),
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectGraph.js","sourceRoot":"","sources":["../../../src/graph/ObjectGraph.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,iCAAkC;AAClC,kEAA4C;AAC5C,mDAAiD;AAEjD,0EAAoD;AAGpD;IAQE,qBAAsB,MAAU;QAAV,WAAM,GAAN,MAAM,CAAI;QAPxB,sBAAiB,GAAG,IAAI,2BAAiB,CAAC,IAAI,CAAC,CAAC;QAQtD,IAAA,8BAAa,EAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAPD,sBACI,6BAAI;aADR;YAEE,OAAO,IAAA,iBAAQ,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;;;OAAA;IAMD,8BAAQ,GAAR,UAAqB,QAAgB,EAAE,QAAkB;QACvD,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAA2B,CAAC;IACvF,CAAC;IAXD;QAAC,IAAA,iBAAO,GAAE;;;2CAGT;IASH,kBAAC;CAAA,AAfD,IAeC;AAfqB,kCAAW;AAiBjC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,mBAAmB,EAAE,aAAa,CAAC,CAAC;AAE7D,SAAgB,OAAO,CAAC,MAAwC;IAC9D,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,KAAK,aAAa,CAAC;AACpE,CAAC;AAFD,0BAEC"}
1
+ {"version":3,"file":"ObjectGraph.js","sourceRoot":"","sources":["../../../src/graph/ObjectGraph.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,iCAAkC;AAClC,kEAA4C;AAC5C,mDAAiD;AAEjD,0EAAoD;AAGpD;IAQE,qBAAsB,MAAU;QAAV,WAAM,GAAN,MAAM,CAAI;QAPxB,sBAAiB,GAAG,IAAI,2BAAiB,CAAC,IAAI,CAAC,CAAC;QAQtD,IAAA,8BAAa,EAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAPD,sBACI,6BAAI;aADR;YAEE,OAAO,IAAA,iBAAQ,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;;;OAAA;IAMD,8BAAQ,GAAR,UAAqB,QAAgB,EAAE,QAAkB;QACvD,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAA2B,CAAC;IACvF,CAAC;IAED,4BAAM,GAAN,UAAO,OAAY;IAEnB,CAAC;IAfD;QAAC,IAAA,iBAAO,GAAE;;;2CAGT;IAaH,kBAAC;CAAA,AAnBD,IAmBC;AAnBqB,kCAAW;AAqBjC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,mBAAmB,EAAE,aAAa,CAAC,CAAC;AAE7D,SAAgB,OAAO,CAAC,MAAwC;IAC9D,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,KAAK,aAAa,CAAC;AACpE,CAAC;AAFD,0BAEC"}
@@ -7,7 +7,7 @@ export { Graph as IGraph } from './graph/Graph';
7
7
  export { Provides } from './decorators/provides/Provides';
8
8
  export { Injectable } from './decorators/inject/Injectable';
9
9
  export { Inject } from './decorators/inject/Inject';
10
- export { LazyInject } from './decorators/inject/LazyInject';
10
+ export { LateInject } from './decorators/inject/LateInject';
11
11
  export { LifecycleBound } from './decorators/LifecycleBound';
12
12
  export { GraphMiddleware } from './graph/registry/GraphMiddleware';
13
13
  export { GraphResolveChain as ResolveChain } from './graph/registry/GraphResolveChain';
package/dist/src/index.js CHANGED
@@ -17,7 +17,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
17
17
  return (mod && mod.__esModule) ? mod : { "default": mod };
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.testKit = exports.MediatorObservable = exports.Observable = exports.useObserver = exports.injectHookWithArguments = exports.injectHook = exports.injectComponent = exports.Obsidian = exports.GraphMiddleware = exports.LifecycleBound = exports.LazyInject = exports.Inject = exports.Injectable = exports.Provides = exports.ObjectGraph = exports.Singleton = exports.Graph = void 0;
20
+ exports.testKit = exports.MediatorObservable = exports.Observable = exports.useObserver = exports.injectHookWithArguments = exports.injectHook = exports.injectComponent = exports.Obsidian = exports.GraphMiddleware = exports.LifecycleBound = exports.LateInject = exports.Inject = exports.Injectable = exports.Provides = exports.ObjectGraph = exports.Singleton = exports.Graph = void 0;
21
21
  var Obsidian_1 = __importDefault(require("./Obsidian"));
22
22
  __exportStar(require("./types"), exports);
23
23
  var Graph_1 = require("./decorators/Graph");
@@ -32,8 +32,8 @@ var Injectable_1 = require("./decorators/inject/Injectable");
32
32
  Object.defineProperty(exports, "Injectable", { enumerable: true, get: function () { return Injectable_1.Injectable; } });
33
33
  var Inject_1 = require("./decorators/inject/Inject");
34
34
  Object.defineProperty(exports, "Inject", { enumerable: true, get: function () { return Inject_1.Inject; } });
35
- var LazyInject_1 = require("./decorators/inject/LazyInject");
36
- Object.defineProperty(exports, "LazyInject", { enumerable: true, get: function () { return LazyInject_1.LazyInject; } });
35
+ var LateInject_1 = require("./decorators/inject/LateInject");
36
+ Object.defineProperty(exports, "LateInject", { enumerable: true, get: function () { return LateInject_1.LateInject; } });
37
37
  var LifecycleBound_1 = require("./decorators/LifecycleBound");
38
38
  Object.defineProperty(exports, "LifecycleBound", { enumerable: true, get: function () { return LifecycleBound_1.LifecycleBound; } });
39
39
  var GraphMiddleware_1 = require("./graph/registry/GraphMiddleware");
@@ -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;AAGpD,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;CA8B3B"}
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;AAGpD,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;CA+B3B"}
@@ -13,7 +13,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  var InjectionMetadata_1 = __importDefault(require("./InjectionMetadata"));
16
- var LazyInjector_1 = require("./LazyInjector");
16
+ var LateInjector_1 = require("./LateInjector");
17
17
  var ClassInjector = /** @class */ (function () {
18
18
  function ClassInjector(graphRegistry, injectionMetadata) {
19
19
  if (injectionMetadata === void 0) { injectionMetadata = new InjectionMetadata_1.default(); }
@@ -32,8 +32,9 @@ var ClassInjector = /** @class */ (function () {
32
32
  }
33
33
  Handler.prototype.construct = function (target, args, newTarget) {
34
34
  var graph = graphRegistry.resolve(Graph);
35
- Reflect.defineMetadata(LazyInjector_1.GRAPH_INSTANCE_NAME_KEY, graph.name, target);
35
+ Reflect.defineMetadata(LateInjector_1.GRAPH_INSTANCE_NAME_KEY, graph.name, target);
36
36
  var argsToInject = this.injectConstructorArgs(args, graph, target);
37
+ graph.onBind(target);
37
38
  var createdObject = Reflect.construct(target, argsToInject, newTarget);
38
39
  this.injectProperties(target, createdObject, graph);
39
40
  return createdObject;
@@ -1 +1 @@
1
- {"version":3,"file":"ClassInjector.js","sourceRoot":"","sources":["../../../../src/injectors/class/ClassInjector.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAGA,0EAAoD;AACpD,+CAAyD;AAEzD;IACE,uBACU,aAA4B,EAC5B,iBAA8D;QAA9D,kCAAA,EAAA,wBAA2C,2BAAiB,EAAE;QAD9D,kBAAa,GAAb,aAAa,CAAe;QAC5B,sBAAiB,GAAjB,iBAAiB,CAA6C;IACrE,CAAC;IAEJ,8BAAM,GAAN,UAAO,KAA2B;QAAlC,iBAIC;QAHC,OAAO,UAAC,MAA0B;YAChC,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,KAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAI,CAAC,aAAa,EAAE,KAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACvG,CAAC,CAAC;IACJ,CAAC;IAEO,0CAAkB,GAA1B,UACE,KAA2B,EAC3B,aAA4B,EAC5B,iBAAoC;QAEpC,OAAO;YAAI;YAuBX,CAAC;YAtBC,2BAAS,GAAT,UAAU,MAAW,EAAE,IAAW,EAAE,SAAmB;gBACrD,IAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC3C,OAAO,CAAC,cAAc,CAAC,sCAAuB,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACpE,IAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBACrE,IAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;gBACzE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;gBACpD,OAAO,aAAa,CAAC;YACvB,CAAC;YAEO,uCAAqB,GAA7B,UAA8B,IAAW,EAAE,KAAY,EAAE,MAAW;gBAClE,IAAM,YAAY,GAAG,iBAAiB,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;gBAC1E,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;oBAAE,OAAO,IAAI,CAAC;gBACzC,OAAO,gCAAI,IAAI,SAAK,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,QAAE,GAAG,CAAC,UAAC,KAAK,EAAE,GAAG;oBACzF,OAAO,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;gBAChE,CAAC,CAAC,CAAC;YACL,CAAC;YAEO,kCAAgB,GAAxB,UAAyB,MAAW,EAAE,aAAkB,EAAE,KAAY;gBACpE,iBAAiB,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAC,GAAG;oBAC1D,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvD,CAAC,CAAC,CAAC;YACL,CAAC;YACH,cAAC;QAAD,CAAC,AAvBU,KAuBR,CAAC;IACN,CAAC;IACH,oBAAC;AAAD,CAAC,AA1CD,IA0CC"}
1
+ {"version":3,"file":"ClassInjector.js","sourceRoot":"","sources":["../../../../src/injectors/class/ClassInjector.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAGA,0EAAoD;AACpD,+CAAyD;AAEzD;IACE,uBACU,aAA4B,EAC5B,iBAA8D;QAA9D,kCAAA,EAAA,wBAA2C,2BAAiB,EAAE;QAD9D,kBAAa,GAAb,aAAa,CAAe;QAC5B,sBAAiB,GAAjB,iBAAiB,CAA6C;IACrE,CAAC;IAEJ,8BAAM,GAAN,UAAO,KAA2B;QAAlC,iBAIC;QAHC,OAAO,UAAC,MAA0B;YAChC,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,KAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAI,CAAC,aAAa,EAAE,KAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACvG,CAAC,CAAC;IACJ,CAAC;IAEO,0CAAkB,GAA1B,UACE,KAA2B,EAC3B,aAA4B,EAC5B,iBAAoC;QAEpC,OAAO;YAAI;YAwBX,CAAC;YAvBC,2BAAS,GAAT,UAAU,MAAW,EAAE,IAAW,EAAE,SAAmB;gBACrD,IAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC3C,OAAO,CAAC,cAAc,CAAC,sCAAuB,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACpE,IAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBACrE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACrB,IAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;gBACzE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;gBACpD,OAAO,aAAa,CAAC;YACvB,CAAC;YAEO,uCAAqB,GAA7B,UAA8B,IAAW,EAAE,KAAY,EAAE,MAAW;gBAClE,IAAM,YAAY,GAAG,iBAAiB,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;gBAC1E,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;oBAAE,OAAO,IAAI,CAAC;gBACzC,OAAO,gCAAI,IAAI,SAAK,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,QAAE,GAAG,CAAC,UAAC,KAAK,EAAE,GAAG;oBACzF,OAAO,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;gBAChE,CAAC,CAAC,CAAC;YACL,CAAC;YAEO,kCAAgB,GAAxB,UAAyB,MAAW,EAAE,aAAkB,EAAE,KAAY;gBACpE,iBAAiB,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAC,GAAG;oBAC1D,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvD,CAAC,CAAC,CAAC;YACL,CAAC;YACH,cAAC;QAAD,CAAC,AAxBU,KAwBR,CAAC;IACN,CAAC;IACH,oBAAC;AAAD,CAAC,AA3CD,IA2CC"}
@@ -2,13 +2,13 @@ import { ConstructorArgs } from './ConstructorArgs';
2
2
  export default class InjectionMetadata {
3
3
  private readonly injectionMetadataKey;
4
4
  private readonly injectedConstructorArgsKey;
5
- private readonly lazyInjectionMetadataKey;
5
+ private readonly lateInjectionMetadataKey;
6
6
  getConstructorArgsToInject(target: any): ConstructorArgs;
7
7
  getPropertiesToInject(target: any): Set<string>;
8
- getLazyPropertiesToInject(target: any): Set<string>;
8
+ getLatePropertiesToInject(target: any): Set<string>;
9
9
  saveConstructorParamMetadata(target: any, paramName: string, index: number): void;
10
10
  savePropertyMetadata(target: any, property: string): void;
11
- saveLazyPropertyMetadata(target: any, property: string): void;
11
+ saveLatePropertyMetadata(target: any, property: string): void;
12
12
  private saveProperties;
13
13
  private getProperties;
14
14
  }
@@ -5,7 +5,7 @@ var InjectionMetadata = /** @class */ (function () {
5
5
  function InjectionMetadata() {
6
6
  this.injectionMetadataKey = 'injectionMetadata';
7
7
  this.injectedConstructorArgsKey = 'injectedConstructorArgsKey';
8
- this.lazyInjectionMetadataKey = 'lazyInjectionMetadataKey';
8
+ this.lateInjectionMetadataKey = 'lateInjectionMetadataKey';
9
9
  }
10
10
  InjectionMetadata.prototype.getConstructorArgsToInject = function (target) {
11
11
  var _a;
@@ -14,8 +14,8 @@ var InjectionMetadata = /** @class */ (function () {
14
14
  InjectionMetadata.prototype.getPropertiesToInject = function (target) {
15
15
  return this.getProperties(this.injectionMetadataKey, target);
16
16
  };
17
- InjectionMetadata.prototype.getLazyPropertiesToInject = function (target) {
18
- return this.getProperties(this.lazyInjectionMetadataKey, target);
17
+ InjectionMetadata.prototype.getLatePropertiesToInject = function (target) {
18
+ return this.getProperties(this.lateInjectionMetadataKey, target);
19
19
  };
20
20
  InjectionMetadata.prototype.saveConstructorParamMetadata = function (target, paramName, index) {
21
21
  var argsToInject = this.getConstructorArgsToInject(target);
@@ -25,8 +25,8 @@ var InjectionMetadata = /** @class */ (function () {
25
25
  InjectionMetadata.prototype.savePropertyMetadata = function (target, property) {
26
26
  this.saveProperties(this.injectionMetadataKey, this.getPropertiesToInject(target).add(property), target);
27
27
  };
28
- InjectionMetadata.prototype.saveLazyPropertyMetadata = function (target, property) {
29
- this.saveProperties(this.lazyInjectionMetadataKey, this.getLazyPropertiesToInject(target).add(property), target);
28
+ InjectionMetadata.prototype.saveLatePropertyMetadata = function (target, property) {
29
+ this.saveProperties(this.lateInjectionMetadataKey, this.getLatePropertiesToInject(target).add(property), target);
30
30
  };
31
31
  InjectionMetadata.prototype.saveProperties = function (key, properties, target) {
32
32
  Reflect.defineMetadata(key, properties, target);
@@ -1,9 +1,9 @@
1
1
  import { ObjectGraph } from '../../graph/ObjectGraph';
2
2
  export declare const GRAPH_INSTANCE_NAME_KEY = "GRAPH_INSTANCE_NAME";
3
- declare class LazyInjector<T extends object> {
3
+ declare class LateInjector<T extends object> {
4
4
  inject(target: T, sourceGraph?: ObjectGraph): T;
5
5
  private getGraphInstance;
6
6
  }
7
- declare const _default: LazyInjector<object>;
7
+ declare const _default: LateInjector<object>;
8
8
  export default _default;
9
- //# sourceMappingURL=LazyInjector.d.ts.map
9
+ //# sourceMappingURL=LateInjector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LazyInjector.d.ts","sourceRoot":"","sources":["../../../../src/injectors/class/LazyInjector.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":"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"}
@@ -7,24 +7,24 @@ exports.GRAPH_INSTANCE_NAME_KEY = void 0;
7
7
  var GraphRegistry_1 = __importDefault(require("../../graph/registry/GraphRegistry"));
8
8
  var InjectionMetadata_1 = __importDefault(require("./InjectionMetadata"));
9
9
  exports.GRAPH_INSTANCE_NAME_KEY = 'GRAPH_INSTANCE_NAME';
10
- var LazyInjector = /** @class */ (function () {
11
- function LazyInjector() {
10
+ var LateInjector = /** @class */ (function () {
11
+ function LateInjector() {
12
12
  }
13
- LazyInjector.prototype.inject = function (target, sourceGraph) {
13
+ LateInjector.prototype.inject = function (target, sourceGraph) {
14
14
  if (sourceGraph)
15
15
  GraphRegistry_1.default.ensureRegistered(sourceGraph);
16
16
  var injectionMetadata = new InjectionMetadata_1.default();
17
17
  var graph = sourceGraph !== null && sourceGraph !== void 0 ? sourceGraph : this.getGraphInstance(target);
18
- injectionMetadata.getLazyPropertiesToInject(target.constructor).forEach(function (key) {
18
+ injectionMetadata.getLatePropertiesToInject(target.constructor).forEach(function (key) {
19
19
  Reflect.set(target, key, graph.retrieve(key));
20
20
  });
21
21
  return target;
22
22
  };
23
- LazyInjector.prototype.getGraphInstance = function (target) {
23
+ LateInjector.prototype.getGraphInstance = function (target) {
24
24
  var graphInstanceName = Reflect.getMetadata(exports.GRAPH_INSTANCE_NAME_KEY, target.constructor);
25
25
  return GraphRegistry_1.default.getGraphInstance(graphInstanceName);
26
26
  };
27
- return LazyInjector;
27
+ return LateInjector;
28
28
  }());
29
- exports.default = new LazyInjector();
30
- //# sourceMappingURL=LazyInjector.js.map
29
+ exports.default = new LateInjector();
30
+ //# sourceMappingURL=LateInjector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LazyInjector.js","sourceRoot":"","sources":["../../../../src/injectors/class/LazyInjector.ts"],"names":[],"mappings":";;;;;;AACA,qFAA+D;AAC/D,0EAAoD;AAEvC,QAAA,uBAAuB,GAAG,qBAAqB,CAAC;AAE7D;IAAA;IAeA,CAAC;IAdC,6BAAM,GAAN,UAAO,MAAS,EAAE,WAAyB;QACzC,IAAI,WAAW;YAAE,uBAAa,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC7D,IAAM,iBAAiB,GAAG,IAAI,2BAAiB,EAAE,CAAC;QAClD,IAAM,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,UAAC,GAAG;YAC1E,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,uCAAgB,GAAxB,UAAyB,MAAS;QAChC,IAAM,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,+BAAuB,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3F,OAAO,uBAAa,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IAC3D,CAAC;IACH,mBAAC;AAAD,CAAC,AAfD,IAeC;AAED,kBAAe,IAAI,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"LateInjector.js","sourceRoot":"","sources":["../../../../src/injectors/class/LateInjector.ts"],"names":[],"mappings":";;;;;;AACA,qFAA+D;AAC/D,0EAAoD;AAEvC,QAAA,uBAAuB,GAAG,qBAAqB,CAAC;AAE7D;IAAA;IAeA,CAAC;IAdC,6BAAM,GAAN,UAAO,MAAS,EAAE,WAAyB;QACzC,IAAI,WAAW;YAAE,uBAAa,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC7D,IAAM,iBAAiB,GAAG,IAAI,2BAAiB,EAAE,CAAC;QAClD,IAAM,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,UAAC,GAAG;YAC1E,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,uCAAgB,GAAxB,UAAyB,MAAS;QAChC,IAAM,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,+BAAuB,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3F,OAAO,uBAAa,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IAC3D,CAAC;IACH,mBAAC;AAAD,CAAC,AAfD,IAeC;AAED,kBAAe,IAAI,YAAY,EAAE,CAAC"}
@@ -21,7 +21,7 @@ var ComponentInjector = /** @class */ (function () {
21
21
  var Target = isMemoized ? InjectionCandidate.type : InjectionCandidate;
22
22
  var compare = isMemoized ? InjectionCandidate.compare : undefined;
23
23
  return (0, React_1.genericMemo)(function (passedProps) {
24
- var graph = (0, useGraph_1.default)(Graph, passedProps);
24
+ var graph = (0, useGraph_1.default)(Graph, Target, passedProps);
25
25
  var proxiedProps = new PropsInjector_1.default(graph).inject(passedProps);
26
26
  return react_1.default.createElement(react_1.default.Fragment, null, Target(proxiedProps));
27
27
  }, compare);
@@ -1 +1 @@
1
- {"version":3,"file":"ComponentInjector.js","sourceRoot":"","sources":["../../../../src/injectors/components/ComponentInjector.tsx"],"names":[],"mappings":";;;;;AAAA,gDAAiD;AACjD,oFAA2D;AAE3D,kEAA4C;AAC5C,wDAAkC;AAElC,2CAAqE;AAErE;IAAA;IAyBA,CAAC;IAxBC,kCAAM,GAAN,UACE,MAAkC,EAClC,KAAiC;QAEjC,IAAM,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,yCAAa,GAArB,UACE,kBAA8C,EAC9C,KAAiC;QAEjC,IAAM,UAAU,GAAG,IAAA,2BAAmB,EAAC,kBAAkB,CAAC,CAAC;QAC3D,IAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC;QACzE,IAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAEpE,OAAO,IAAA,mBAAW,EAAC,UAAC,WAAc;YAChC,IAAM,KAAK,GAAG,IAAA,kBAAQ,EAAI,KAAK,EAAE,WAAW,CAAC,CAAC;YAC9C,IAAM,YAAY,GAAG,IAAI,uBAAa,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAElE,OAAO,8DAAG,MAAM,CAAC,YAA+C,CAAC,CAAI,CAAC;QACxE,CAAC,EAAE,OAAO,CAAC,CAAC;IACd,CAAC;IACH,wBAAC;AAAD,CAAC,AAzBD,IAyBC"}
1
+ {"version":3,"file":"ComponentInjector.js","sourceRoot":"","sources":["../../../../src/injectors/components/ComponentInjector.tsx"],"names":[],"mappings":";;;;;AAAA,gDAAiD;AACjD,oFAA2D;AAE3D,kEAA4C;AAC5C,wDAAkC;AAElC,2CAAqE;AAErE;IAAA;IAyBA,CAAC;IAxBC,kCAAM,GAAN,UACE,MAAkC,EAClC,KAAiC;QAEjC,IAAM,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,yCAAa,GAArB,UACE,kBAA8C,EAC9C,KAAiC;QAEjC,IAAM,UAAU,GAAG,IAAA,2BAAmB,EAAC,kBAAkB,CAAC,CAAC;QAC3D,IAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC;QACzE,IAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAEpE,OAAO,IAAA,mBAAW,EAAC,UAAC,WAAc;YAChC,IAAM,KAAK,GAAG,IAAA,kBAAQ,EAAI,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YACtD,IAAM,YAAY,GAAG,IAAI,uBAAa,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAElE,OAAO,8DAAG,MAAM,CAAC,YAA+C,CAAC,CAAI,CAAC;QACxE,CAAC,EAAE,OAAO,CAAC,CAAC;IACd,CAAC;IACH,wBAAC;AAAD,CAAC,AAzBD,IAyBC"}
@@ -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>, props?: Partial<P> | undefined) => ObjectGraph<unknown>;
3
+ declare const _default: <P>(Graph: Constructable<ObjectGraph>, target: any, props?: Partial<P> | undefined) => 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;mCAI5B,cAAc,WAAW,CAAC;AAApD,wBAOE"}
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;mCAI5B,cAAc,WAAW,CAAC,UAAU,GAAG;AAAjE,wBAWE"}
@@ -6,8 +6,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  var react_1 = require("react");
7
7
  var GraphRegistry_1 = __importDefault(require("../../graph/registry/GraphRegistry"));
8
8
  var ReferenceCounter_1 = __importDefault(require("../../ReferenceCounter"));
9
- exports.default = (function (Graph, props) {
10
- var graph = (0, react_1.useState)(GraphRegistry_1.default.resolve(Graph, props))[0];
9
+ exports.default = (function (Graph, target, props) {
10
+ var graph = (0, react_1.useState)(function () {
11
+ var resolveGraph = GraphRegistry_1.default.resolve(Graph, props);
12
+ resolveGraph.onBind(target);
13
+ return resolveGraph;
14
+ })[0];
11
15
  (0, react_1.useEffect)(function () {
12
16
  ReferenceCounter_1.default.retain(graph);
13
17
  return function () { return ReferenceCounter_1.default.release(graph, function (g) { return GraphRegistry_1.default.clear(g); }); };
@@ -1 +1 @@
1
- {"version":3,"file":"useGraph.js","sourceRoot":"","sources":["../../../../src/injectors/components/useGraph.ts"],"names":[],"mappings":";;;;;AAAA,+BAA4C;AAG5C,qFAA+D;AAC/D,4EAAsD;AAEtD,mBAAe,UAAI,KAAiC,EAAE,KAAkB;IAC/D,IAAA,KAAK,GAAI,IAAA,gBAAQ,EAAC,uBAAa,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,GAAjD,CAAkD;IAC9D,IAAA,iBAAS,EAAC;QACR,0BAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,OAAO,cAAM,OAAA,0BAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,UAAC,CAAC,IAAK,OAAA,uBAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAtB,CAAsB,CAAC,EAA9D,CAA8D,CAAC;IAC9E,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACZ,OAAO,KAAK,CAAC;AACf,CAAC,EAAC"}
1
+ {"version":3,"file":"useGraph.js","sourceRoot":"","sources":["../../../../src/injectors/components/useGraph.ts"],"names":[],"mappings":";;;;;AAAA,+BAA4C;AAG5C,qFAA+D;AAC/D,4EAAsD;AAEtD,mBAAe,UAAI,KAAiC,EAAE,MAAW,EAAE,KAAkB;IAC5E,IAAA,KAAK,GAAI,IAAA,gBAAQ,EAAC;QACvB,IAAM,YAAY,GAAG,uBAAa,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACzD,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,OAAO,YAAY,CAAC;IACtB,CAAC,CAAC,GAJU,CAIT;IACH,IAAA,iBAAS,EAAC;QACR,0BAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,OAAO,cAAM,OAAA,0BAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,UAAC,CAAC,IAAK,OAAA,uBAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAtB,CAAsB,CAAC,EAA9D,CAA8D,CAAC;IAC9E,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACZ,OAAO,KAAK,CAAC;AACf,CAAC,EAAC"}
@@ -9,7 +9,7 @@ var HookInjector = /** @class */ (function () {
9
9
  }
10
10
  HookInjector.prototype.inject = function (hook, Graph) {
11
11
  return function (args) {
12
- var graph = (0, useGraph_1.default)(Graph, args);
12
+ var graph = (0, useGraph_1.default)(Graph, hook, args);
13
13
  return hook(new Proxy(args !== null && args !== void 0 ? args : {}, new Injector(graph)));
14
14
  };
15
15
  };
@@ -1 +1 @@
1
- {"version":3,"file":"HookInjector.js","sourceRoot":"","sources":["../../../../src/injectors/hooks/HookInjector.ts"],"names":[],"mappings":";;;;;AAEA,oEAA8C;AAG9C;IAAA;IAUA,CAAC;IATC,6BAAM,GAAN,UACE,IAA4B,EAC5B,KAAiC;QAEjC,OAAO,UAAC,IAAoB;YAC1B,IAAM,KAAK,GAAG,IAAA,kBAAQ,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACpC,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;IACH,mBAAC;AAAD,CAAC,AAVD,IAUC;;AAED;IACE,kBAAoB,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;IAEpC,sBAAG,GAAH,UAAI,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;IACH,eAAC;AAAD,CAAC,AAND,IAMC"}
1
+ {"version":3,"file":"HookInjector.js","sourceRoot":"","sources":["../../../../src/injectors/hooks/HookInjector.ts"],"names":[],"mappings":";;;;;AAEA,oEAA8C;AAG9C;IAAA;IAUA,CAAC;IATC,6BAAM,GAAN,UACE,IAA4B,EAC5B,KAAiC;QAEjC,OAAO,UAAC,IAAoB;YAC1B,IAAM,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;IACH,mBAAC;AAAD,CAAC,AAVD,IAUC;;AAED;IACE,kBAAoB,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;IAEpC,sBAAG,GAAH,UAAI,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;IACH,eAAC;AAAD,CAAC,AAND,IAMC"}
@@ -6,5 +6,6 @@ export declare class Observable<T> implements IObservable<T> {
6
6
  get value(): T;
7
7
  set value(value: T);
8
8
  subscribe(onNext: OnNext<T>): Unsubscribe;
9
+ unsubscribe(onNext: OnNext<T>): void;
9
10
  }
10
11
  //# sourceMappingURL=Observable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Observable.d.ts","sourceRoot":"","sources":["../../../src/observable/Observable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEzE,qBAAa,UAAU,CAAC,CAAC,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,YAAY,CAAgB;gBAExB,YAAY,CAAC,EAAE,CAAC;IAI5B,IAAW,KAAK,IAAI,CAAC,CAEpB;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,CAAC,EAGxB;IAEM,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW;CAOjD"}
1
+ {"version":3,"file":"Observable.d.ts","sourceRoot":"","sources":["../../../src/observable/Observable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEzE,qBAAa,UAAU,CAAC,CAAC,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,YAAY,CAAgB;gBAExB,YAAY,CAAC,EAAE,CAAC;IAI5B,IAAW,KAAK,IAAI,CAAC,CAEpB;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,CAAC,EAGxB;IAEM,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW;IAQzC,WAAW,CAAC,MAAM,EAAC,MAAM,CAAC,CAAC,CAAC;CAMpC"}
@@ -25,6 +25,12 @@ var Observable = /** @class */ (function () {
25
25
  this.subscribers.add(onNext);
26
26
  return function () { return _this.subscribers.delete(onNext); };
27
27
  };
28
+ Observable.prototype.unsubscribe = function (onNext) {
29
+ if (!this.subscribers.has(onNext)) {
30
+ throw new Error("Can't unsubscribe, subscriber doesn't exist");
31
+ }
32
+ this.subscribers.delete(onNext);
33
+ };
28
34
  return Observable;
29
35
  }());
30
36
  exports.Observable = Observable;
@@ -1 +1 @@
1
- {"version":3,"file":"Observable.js","sourceRoot":"","sources":["../../../src/observable/Observable.ts"],"names":[],"mappings":";;;AAEA;IAIE,oBAAY,YAAgB;QAHpB,gBAAW,GAAmB,IAAI,GAAG,EAAE,CAAC;QAI9C,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,sBAAW,6BAAK;aAAhB;YACE,OAAO,IAAI,CAAC,YAAiB,CAAC;QAChC,CAAC;aAED,UAAiB,KAAQ;YACvB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAC,UAAU,IAAK,OAAA,UAAU,CAAC,KAAK,CAAC,EAAjB,CAAiB,CAAC,CAAC;QAC9D,CAAC;;;OALA;IAOM,8BAAS,GAAhB,UAAiB,MAAiB;QAAlC,iBAMC;QALC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAChC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;SAClD;QACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7B,OAAO,cAAM,OAAA,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAA/B,CAA+B,CAAC;IAC/C,CAAC;IACH,iBAAC;AAAD,CAAC,AAxBD,IAwBC;AAxBY,gCAAU"}
1
+ {"version":3,"file":"Observable.js","sourceRoot":"","sources":["../../../src/observable/Observable.ts"],"names":[],"mappings":";;;AAEA;IAIE,oBAAY,YAAgB;QAHpB,gBAAW,GAAmB,IAAI,GAAG,EAAE,CAAC;QAI9C,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,sBAAW,6BAAK;aAAhB;YACE,OAAO,IAAI,CAAC,YAAiB,CAAC;QAChC,CAAC;aAED,UAAiB,KAAQ;YACvB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAC,UAAU,IAAK,OAAA,UAAU,CAAC,KAAK,CAAC,EAAjB,CAAiB,CAAC,CAAC;QAC9D,CAAC;;;OALA;IAOM,8BAAS,GAAhB,UAAiB,MAAiB;QAAlC,iBAMC;QALC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAChC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;SAClD;QACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7B,OAAO,cAAM,OAAA,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAA/B,CAA+B,CAAC;IAC/C,CAAC;IAEM,gCAAW,GAAlB,UAAmB,MAAgB;QACjC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACjC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;SAChE;QACD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IACH,iBAAC;AAAD,CAAC,AA/BD,IA+BC;AA/BY,gCAAU"}
@@ -8,7 +8,7 @@ export type Constructor = {
8
8
  export type ServiceLocator<Clazz> = {
9
9
  [Key in keyof Clazz]: () => Clazz[Key] extends (...args: any[]) => infer R ? R : never;
10
10
  };
11
- export type GraphInternals = 'retrieve' | 'name' | 'scope';
11
+ export type GraphInternals = 'retrieve' | 'name' | 'scope' | 'onBind';
12
12
  export type DependenciesOf<G, Dependencies extends keyof DependenciesOf<G> = never> = Partial<Dependencies> extends never ? DependenciesOfInternal<G> : Pick<DependenciesOfInternal<G>, Dependencies>;
13
13
  type DependenciesOfInternal<G> = G extends Graph ? DependenciesOf1<G> : G extends any[] ? DependenciesOfN<G> : never;
14
14
  type DependenciesOfN<Graphs extends any[]> = Graphs extends [infer G, ...infer R] ? DependenciesOf1<G> & DependenciesOfN<R> : unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI;IAC7B,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IAAE,KAAI,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,CAAA;CAAE,CAAC;AAEvD,MAAM,MAAM,cAAc,CAAC,KAAK,IAAI;KACjC,GAAG,IAAI,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK;CACvF,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,MAAM,MAAM,cAAc,CAAC,CAAC,EAAE,YAAY,SAAS,MAAM,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,IAChF,OAAO,CAAC,YAAY,CAAC,SAAS,KAAK,GACjC,sBAAsB,CAAC,CAAC,CAAC,GACzB,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;AAElD,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,GAC9C,eAAe,CAAC,CAAC,CAAC,GAClB,CAAC,SAAS,GAAG,EAAE,GACb,eAAe,CAAC,CAAC,CAAC,GAClB,KAAK,CAAC;AAEV,KAAK,eAAe,CAAC,MAAM,SAAS,GAAG,EAAE,IACvC,MAAM,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,GAClC,eAAe,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,GACvC,OAAO,CAAC;AAEZ,KAAK,eAAe,CAAC,KAAK,IAAI;KAC3B,GAAG,IAAI,MAAM,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK;CACvG,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI;IAC7B,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IAAE,KAAI,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,CAAA;CAAE,CAAC;AAEvD,MAAM,MAAM,cAAc,CAAC,KAAK,IAAI;KACjC,GAAG,IAAI,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK;CACvF,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEtE,MAAM,MAAM,cAAc,CAAC,CAAC,EAAE,YAAY,SAAS,MAAM,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,IAChF,OAAO,CAAC,YAAY,CAAC,SAAS,KAAK,GACjC,sBAAsB,CAAC,CAAC,CAAC,GACzB,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;AAElD,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,GAC9C,eAAe,CAAC,CAAC,CAAC,GAClB,CAAC,SAAS,GAAG,EAAE,GACb,eAAe,CAAC,CAAC,CAAC,GAClB,KAAK,CAAC;AAEV,KAAK,eAAe,CAAC,MAAM,SAAS,GAAG,EAAE,IACvC,MAAM,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,GAClC,eAAe,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,GACvC,OAAO,CAAC;AAEZ,KAAK,eAAe,CAAC,KAAK,IAAI;KAC3B,GAAG,IAAI,MAAM,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK;CACvG,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { ObjectGraph } from '../../src';
2
+ export declare class GraphWithOnBind extends ObjectGraph {
3
+ private target;
4
+ onBind(target: any): void;
5
+ targetName(): string;
6
+ }
7
+ //# sourceMappingURL=GraphWithOnBind.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphWithOnBind.d.ts","sourceRoot":"","sources":["../../../test/fixtures/GraphWithOnBind.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,WAAW,EAAY,MAAM,WAAW,CAAC;AAEzD,qBACa,eAAgB,SAAQ,WAAW;IAC9C,OAAO,CAAC,MAAM,CAAO;IAEZ,MAAM,CAAC,MAAM,EAAE,GAAG;IAK3B,UAAU,IAAI,MAAM;CAGrB"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
18
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
19
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
20
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
21
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
22
+ };
23
+ var __metadata = (this && this.__metadata) || function (k, v) {
24
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
25
+ };
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ exports.GraphWithOnBind = void 0;
28
+ var src_1 = require("../../src");
29
+ var GraphWithOnBind = /** @class */ (function (_super) {
30
+ __extends(GraphWithOnBind, _super);
31
+ function GraphWithOnBind() {
32
+ return _super !== null && _super.apply(this, arguments) || this;
33
+ }
34
+ GraphWithOnBind.prototype.onBind = function (target) {
35
+ this.target = target;
36
+ };
37
+ GraphWithOnBind.prototype.targetName = function () {
38
+ return this.target.name;
39
+ };
40
+ __decorate([
41
+ (0, src_1.Provides)(),
42
+ __metadata("design:type", Function),
43
+ __metadata("design:paramtypes", []),
44
+ __metadata("design:returntype", String)
45
+ ], GraphWithOnBind.prototype, "targetName", null);
46
+ GraphWithOnBind = __decorate([
47
+ (0, src_1.Graph)()
48
+ ], GraphWithOnBind);
49
+ return GraphWithOnBind;
50
+ }(src_1.ObjectGraph));
51
+ exports.GraphWithOnBind = GraphWithOnBind;
52
+ //# sourceMappingURL=GraphWithOnBind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphWithOnBind.js","sourceRoot":"","sources":["../../../test/fixtures/GraphWithOnBind.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iCAAyD;AAGzD;IAAqC,mCAAW;IAAhD;;IAWA,CAAC;IARU,gCAAM,GAAf,UAAgB,MAAW;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAGD,oCAAU,GADV;QAEE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAHD;QAAC,IAAA,cAAQ,GAAE;;;;qDAGV;IAVU,eAAe;QAD3B,IAAA,WAAK,GAAE;OACK,eAAe,CAW3B;IAAD,sBAAC;CAAA,AAXD,CAAqC,iBAAW,GAW/C;AAXY,0CAAe"}
@@ -22,7 +22,7 @@ var internalVisitor = {
22
22
  enter: function (_a) {
23
23
  var node = _a.node;
24
24
  unmagler_1.default.saveClassProperty('Inject', node);
25
- unmagler_1.default.saveClassProperty('LazyInject', node);
25
+ unmagler_1.default.saveClassProperty('LateInject', node);
26
26
  },
27
27
  },
28
28
  Identifier: {
@@ -21,16 +21,16 @@ export class MyClass {
21
21
  Constructor injection is the preferred way to inject dependencies. It is more explicit and easier to test. **Field injection should only be used when a class is not instantiated by a graph.**
22
22
  :::
23
23
 
24
- ## Lazy injection
25
- Dependencies annotated with the `@Inject` annotation are resolved immediately **after** the constructor is called. If you want to inject a class at a later point in time, you can use the `@LazyInject` annotation instead, and inject the dependencies by manually with the `Obsidian.inject()` function.
24
+ ## Delayed injection
25
+ Dependencies annotated with the `@Inject` annotation are resolved immediately **after** the constructor is called. If you want to inject a class at a later point in time, you can use the `@LateInject` annotation instead, and inject the dependencies by manually with the `Obsidian.inject()` function.
26
26
 
27
27
  ```ts
28
- import {Injectable, LazyInject} from 'react-obsidian';
28
+ import {Injectable, LateInject} from 'react-obsidian';
29
29
  import {ApplicationGraph} from './ApplicationGraph';
30
30
 
31
31
  @Injectable(ApplicationGraph)
32
32
  export class MyClass {
33
- @LazyInject() private httpClient!: HttpClient;
33
+ @LateInject() private httpClient!: HttpClient;
34
34
 
35
35
  public init() {
36
36
  console.log(this.httpClient === undefined); // true
@@ -0,0 +1,96 @@
1
+ ---
2
+ sidebar_position: 5
3
+ title: "Reactivity"
4
+ ---
5
+
6
+ Obsidian is first and foremost a dependency injection library. But it also includes reactive programming features that allow you to observe changes in your data and react to them. This is useful for things like updating the UI when a value changes.
7
+
8
+ ## Observable
9
+ Making a class field reactive is as simple as wrapping it with the `Observable` decorator. Observable is a data holder classes that also allows you to subscribe to changes in the data.
10
+
11
+ ### Create observables
12
+ In the example below, we declare a boolean observable called `isLoggedIn`. We can then subscribe to changes in the `isLoggedIn` value and update the UI accordingly.
13
+
14
+ ```ts
15
+ import { Observable } from 'react-obsidian';
16
+
17
+ class UserService {
18
+ public isLoggedIn = new Observable(false); // The initial value is false
19
+ }
20
+
21
+ export default new UserService();
22
+ ```
23
+
24
+ ### Observe changes
25
+ #### Observe changes in hooks or components
26
+ Once you have declared an observable, you can subscribe to changes in the value by using the `useObserver` hook. This hook will return the current value of the observable and subscribe to changes in the value. When the value changes, the hook will re-render the component.
27
+
28
+ ```ts
29
+ import { useObserver } from 'react-obsidian';
30
+ import userService from './UserService';
31
+
32
+ const useLogin = () => {
33
+ const [isLoggedIn] = useObserver(userService.isLoggedIn);
34
+
35
+ return {isLoggedIn};
36
+ }
37
+ ```
38
+
39
+ #### Observe changes imperatively
40
+ You can also subscribe to changes in an observable imperatively by calling the `subscribe` method on the observable. This method returns a function that can be called to unsubscribe from the observable.
41
+
42
+ ```ts
43
+ import userService from './UserService';
44
+
45
+ const unsubscribe = userService.isLoggedIn.subscribe((isLoggedIn: boolean) => {
46
+ // Do something with the isLoggedIn value
47
+ });
48
+ ```
49
+
50
+ ### Update Observables
51
+ Observables expose the data they hold via a `value` property. You can update the value of an observable by setting the value of the `value` property.
52
+ This will also trigger any subscribers to the observable.
53
+
54
+ ```ts
55
+ import userService from './UserService';
56
+
57
+ userService.isLoggedIn.value = true; // Update the value and notify all subscribers
58
+ ```
59
+
60
+ #### Update Observables from hooks or components
61
+ The `useObserver` hook also returns a setter function that can be used to update the value of the observable.
62
+
63
+ ```ts
64
+ import { useObserver } from 'react-obsidian';
65
+ import userService from './UserService';
66
+
67
+ const useLogin = () => {
68
+ const [isLoggedIn, setIsLoggedIn] = useObserver(userService.isLoggedIn);
69
+ const onLogoutButtonPress = useCallback(() => {
70
+ setIsLoggedIn(false);
71
+ }, [setIsLoggedIn]);
72
+
73
+ return {isLoggedIn, onLogoutButtonPress};
74
+ }
75
+ ```
76
+
77
+ ### Merge multiple observable sources
78
+ `MediatorObservable` is a special type of observable that allows you to merge multiple observable sources into a single observable. This is useful for creating side effect from one or more observables.
79
+
80
+ In the example below, we create a `MediatorObservable` called `downloadStatus` that will be updated when either the `networkConditions` or `batteryLevel` observables are updated. We can then subscribe to changes in the `downloadStatus` observable to update the UI or perform other side effects.
81
+
82
+ ```ts
83
+ import { MediatorObservable, Observable } from 'react-obsidian';
84
+
85
+ const networkConditions = new Observable<'poor' | 'strong'>();
86
+ const batteryLevel = new Observable<'low' | 'normal'>();
87
+
88
+ const downloadStatus = new MediatorObservable<'paused' | 'active'>('active')
89
+ .addSource(networkConditions, (condition: 'poor' | 'strong') => {
90
+ this.value = condition === 'poor' ? 'paused' : 'active';
91
+ })
92
+ .addSource(batteryLevel, (level: 'low' | 'normal') => {
93
+ this.value = level === 'low' ? 'paused' : 'active';
94
+ });
95
+
96
+ ```
@@ -1,5 +1,5 @@
1
1
  ---
2
- sidebar_position: 5
2
+ sidebar_position: 6
3
3
  title: "Service locator"
4
4
  ---
5
5
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-obsidian",
3
- "version": "0.0.36",
3
+ "version": "0.0.38",
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",
package/src/Obsidian.ts CHANGED
@@ -2,7 +2,7 @@ import graphRegistry from './graph/registry/GraphRegistry';
2
2
  import { ObjectGraph } from './graph/ObjectGraph';
3
3
  import { Constructable, GraphInternals, ServiceLocator } from './types';
4
4
  import { GraphMiddleware } from './graph/registry/GraphMiddleware';
5
- import lazyInjector from './injectors/class/LazyInjector';
5
+ import lateInjector from './injectors/class/LateInjector';
6
6
  import serviceLocatorFactory from './graph/ServiceLocatorFactory';
7
7
 
8
8
  export default class Obsidian {
@@ -14,7 +14,7 @@ export default class Obsidian {
14
14
  }
15
15
 
16
16
  inject<T extends object>(target: T, graph?: ObjectGraph) {
17
- return lazyInjector.inject(target, graph);
17
+ return lateInjector.inject(target, graph);
18
18
  }
19
19
 
20
20
  addGraphMiddleware(middleware: GraphMiddleware) {
@@ -1,8 +1,8 @@
1
1
  import InjectionMetadata from '../../injectors/class/InjectionMetadata';
2
2
 
3
- export function LazyInject(name?: string): any {
3
+ export function LateInject(name?: string): any {
4
4
  return (target: object) => {
5
5
  const metadata = new InjectionMetadata();
6
- metadata.saveLazyPropertyMetadata(target.constructor, name!);
6
+ metadata.saveLatePropertyMetadata(target.constructor, name!);
7
7
  };
8
8
  }
@@ -2,4 +2,5 @@ import PropertyRetrieverDelegate from './PropertyRetrieverDelegate';
2
2
 
3
3
  export interface Graph extends PropertyRetrieverDelegate {
4
4
  get name(): string;
5
+ onBind(target: any): void;
5
6
  }
@@ -20,6 +20,10 @@ export abstract class ObjectGraph<T = unknown> implements Graph {
20
20
  retrieve<Dependency>(property: string, receiver?: unknown): Dependency | undefined {
21
21
  return this.propertyRetriever.retrieve(property, receiver) as Dependency | undefined;
22
22
  }
23
+
24
+ onBind(_target: any) {
25
+
26
+ }
23
27
  }
24
28
 
25
29
  Reflect.set(ObjectGraph, 'typeDiscriminator', 'ObjectGraph');
package/src/index.ts CHANGED
@@ -9,7 +9,7 @@ export { Graph as IGraph } from './graph/Graph';
9
9
  export { Provides } from './decorators/provides/Provides';
10
10
  export { Injectable } from './decorators/inject/Injectable';
11
11
  export { Inject } from './decorators/inject/Inject';
12
- export { LazyInject } from './decorators/inject/LazyInject';
12
+ export { LateInject } from './decorators/inject/LateInject';
13
13
  export { LifecycleBound } from './decorators/LifecycleBound';
14
14
  export { GraphMiddleware } from './graph/registry/GraphMiddleware';
15
15
  export { GraphResolveChain as ResolveChain } from './graph/registry/GraphResolveChain';
@@ -2,7 +2,7 @@ import { Constructable } from '../../types';
2
2
  import { GraphRegistry } from '../../graph/registry/GraphRegistry';
3
3
  import { Graph } from '../../graph/Graph';
4
4
  import InjectionMetadata from './InjectionMetadata';
5
- import { GRAPH_INSTANCE_NAME_KEY } from './LazyInjector';
5
+ import { GRAPH_INSTANCE_NAME_KEY } from './LateInjector';
6
6
 
7
7
  export default class ClassInjector {
8
8
  constructor(
@@ -26,6 +26,7 @@ export default class ClassInjector {
26
26
  const graph = graphRegistry.resolve(Graph);
27
27
  Reflect.defineMetadata(GRAPH_INSTANCE_NAME_KEY, graph.name, target);
28
28
  const argsToInject = this.injectConstructorArgs(args, graph, target);
29
+ graph.onBind(target);
29
30
  const createdObject = Reflect.construct(target, argsToInject, newTarget);
30
31
  this.injectProperties(target, createdObject, graph);
31
32
  return createdObject;
@@ -3,7 +3,7 @@ import { ConstructorArgs } from './ConstructorArgs';
3
3
  export default class InjectionMetadata {
4
4
  private readonly injectionMetadataKey = 'injectionMetadata';
5
5
  private readonly injectedConstructorArgsKey = 'injectedConstructorArgsKey';
6
- private readonly lazyInjectionMetadataKey = 'lazyInjectionMetadataKey';
6
+ private readonly lateInjectionMetadataKey = 'lateInjectionMetadataKey';
7
7
 
8
8
  getConstructorArgsToInject(target: any): ConstructorArgs {
9
9
  return Reflect.getMetadata(this.injectedConstructorArgsKey, target) ?? new ConstructorArgs();
@@ -13,8 +13,8 @@ export default class InjectionMetadata {
13
13
  return this.getProperties(this.injectionMetadataKey, target);
14
14
  }
15
15
 
16
- getLazyPropertiesToInject(target: any): Set<string> {
17
- return this.getProperties(this.lazyInjectionMetadataKey, target);
16
+ getLatePropertiesToInject(target: any): Set<string> {
17
+ return this.getProperties(this.lateInjectionMetadataKey, target);
18
18
  }
19
19
 
20
20
  saveConstructorParamMetadata(target: any, paramName: string, index: number) {
@@ -35,10 +35,10 @@ export default class InjectionMetadata {
35
35
  );
36
36
  }
37
37
 
38
- saveLazyPropertyMetadata(target: any, property: string) {
38
+ saveLatePropertyMetadata(target: any, property: string) {
39
39
  this.saveProperties(
40
- this.lazyInjectionMetadataKey,
41
- this.getLazyPropertiesToInject(target).add(property),
40
+ this.lateInjectionMetadataKey,
41
+ this.getLatePropertiesToInject(target).add(property),
42
42
  target,
43
43
  );
44
44
  }
@@ -4,12 +4,12 @@ import InjectionMetadata from './InjectionMetadata';
4
4
 
5
5
  export const GRAPH_INSTANCE_NAME_KEY = 'GRAPH_INSTANCE_NAME';
6
6
 
7
- class LazyInjector<T extends object> {
7
+ class LateInjector<T extends object> {
8
8
  inject(target: T, sourceGraph?: ObjectGraph): T {
9
9
  if (sourceGraph) graphRegistry.ensureRegistered(sourceGraph);
10
10
  const injectionMetadata = new InjectionMetadata();
11
11
  const graph = sourceGraph ?? this.getGraphInstance(target);
12
- injectionMetadata.getLazyPropertiesToInject(target.constructor).forEach((key) => {
12
+ injectionMetadata.getLatePropertiesToInject(target.constructor).forEach((key) => {
13
13
  Reflect.set(target, key, graph.retrieve(key));
14
14
  });
15
15
  return target;
@@ -21,4 +21,4 @@ class LazyInjector<T extends object> {
21
21
  }
22
22
  }
23
23
 
24
- export default new LazyInjector();
24
+ export default new LateInjector();
@@ -25,7 +25,7 @@ export default class ComponentInjector {
25
25
  const compare = isMemoized ? InjectionCandidate.compare : undefined;
26
26
 
27
27
  return genericMemo((passedProps: P) => {
28
- const graph = useGraph<P>(Graph, passedProps);
28
+ const graph = useGraph<P>(Graph, Target, passedProps);
29
29
  const proxiedProps = new PropsInjector(graph).inject(passedProps);
30
30
 
31
31
  return <>{Target(proxiedProps as unknown as PropsWithChildren<P>)}</>;
@@ -4,8 +4,12 @@ import { ObjectGraph } from '../../graph/ObjectGraph';
4
4
  import graphRegistry from '../../graph/registry/GraphRegistry';
5
5
  import referenceCounter from '../../ReferenceCounter';
6
6
 
7
- export default <P>(Graph: Constructable<ObjectGraph>, props?: Partial<P>) => {
8
- const [graph] = useState(graphRegistry.resolve(Graph, props));
7
+ export default <P>(Graph: Constructable<ObjectGraph>, target: any, props?: Partial<P>) => {
8
+ const [graph] = useState(() => {
9
+ const resolveGraph = graphRegistry.resolve(Graph, props);
10
+ resolveGraph.onBind(target);
11
+ return resolveGraph;
12
+ });
9
13
  useEffect(() => {
10
14
  referenceCounter.retain(graph);
11
15
  return () => referenceCounter.release(graph, (g) => graphRegistry.clear(g));
@@ -9,7 +9,7 @@ export default class HookInjector {
9
9
  Graph: Constructable<ObjectGraph>,
10
10
  ): (args?: Partial<Args>) => Result {
11
11
  return (args?: Partial<Args>): Result => {
12
- const graph = useGraph(Graph, args);
12
+ const graph = useGraph(Graph, hook, args);
13
13
  return hook(new Proxy(args ?? {}, new Injector(graph)));
14
14
  };
15
15
  }
@@ -24,4 +24,11 @@ export class Observable<T> implements IObservable<T> {
24
24
  this.subscribers.add(onNext);
25
25
  return () => this.subscribers.delete(onNext);
26
26
  }
27
+
28
+ public unsubscribe(onNext:OnNext<T>) {
29
+ if (!this.subscribers.has(onNext)) {
30
+ throw new Error(`Can't unsubscribe, subscriber doesn't exist`);
31
+ }
32
+ this.subscribers.delete(onNext);
33
+ }
27
34
  }
@@ -10,7 +10,7 @@ export type ServiceLocator<Clazz> = {
10
10
  [Key in keyof Clazz]: () => Clazz[Key] extends (...args: any[]) => infer R ? R : never;
11
11
  };
12
12
 
13
- export type GraphInternals = 'retrieve' | 'name' | 'scope';
13
+ export type GraphInternals = 'retrieve' | 'name' | 'scope' | 'onBind';
14
14
 
15
15
  export type DependenciesOf<G, Dependencies extends keyof DependenciesOf<G> = never> =
16
16
  Partial<Dependencies> extends never ?
@@ -26,7 +26,7 @@ const internalVisitor = {
26
26
  ClassProperty: {
27
27
  enter({ node }: NodePath<ClassProperty>) {
28
28
  unmagler.saveClassProperty('Inject', node);
29
- unmagler.saveClassProperty('LazyInject', node);
29
+ unmagler.saveClassProperty('LateInject', node);
30
30
  },
31
31
  },
32
32
  Identifier: {
@@ -1,2 +0,0 @@
1
- export declare function LazyInject(name?: string): any;
2
- //# sourceMappingURL=LazyInject.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LazyInject.d.ts","sourceRoot":"","sources":["../../../../src/decorators/inject/LazyInject.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,GAAG,CAK7C"}