react-obsidian 0.0.11 → 0.0.15

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 (167) hide show
  1. package/README.md +105 -10
  2. package/babel.config.js +4 -3
  3. package/dist/src/GraphProperties.d.ts +1 -0
  4. package/dist/src/GraphProperties.d.ts.map +1 -1
  5. package/dist/src/GraphProperties.js +3 -0
  6. package/dist/src/GraphProperties.js.map +1 -1
  7. package/dist/src/Obsidian.d.ts +1 -0
  8. package/dist/src/Obsidian.d.ts.map +1 -1
  9. package/dist/src/Obsidian.js +4 -0
  10. package/dist/src/Obsidian.js.map +1 -1
  11. package/dist/src/ProvidedPropertiesStore.d.ts +1 -0
  12. package/dist/src/ProvidedPropertiesStore.d.ts.map +1 -1
  13. package/dist/src/ProvidedPropertiesStore.js +4 -0
  14. package/dist/src/ProvidedPropertiesStore.js.map +1 -1
  15. package/dist/src/decorators/Graph.d.ts +2 -3
  16. package/dist/src/decorators/Graph.d.ts.map +1 -1
  17. package/dist/src/decorators/Graph.js +2 -3
  18. package/dist/src/decorators/Graph.js.map +1 -1
  19. package/dist/src/decorators/Singleton.d.ts +4 -0
  20. package/dist/src/decorators/Singleton.d.ts.map +1 -0
  21. package/dist/src/decorators/Singleton.js +12 -0
  22. package/dist/src/decorators/Singleton.js.map +1 -0
  23. package/dist/src/decorators/inject/Inject.d.ts +2 -0
  24. package/dist/src/decorators/inject/Inject.d.ts.map +1 -0
  25. package/dist/src/decorators/inject/Inject.js +21 -0
  26. package/dist/src/decorators/inject/Inject.js.map +1 -0
  27. package/dist/src/decorators/inject/Injectable.d.ts +4 -0
  28. package/dist/src/decorators/inject/Injectable.d.ts.map +1 -0
  29. package/dist/src/decorators/inject/Injectable.js +13 -0
  30. package/dist/src/decorators/inject/Injectable.js.map +1 -0
  31. package/dist/src/decorators/inject/LazyInject.d.ts +2 -0
  32. package/dist/src/decorators/inject/LazyInject.d.ts.map +1 -0
  33. package/dist/src/decorators/inject/LazyInject.js +15 -0
  34. package/dist/src/decorators/inject/LazyInject.js.map +1 -0
  35. package/dist/src/decorators/provides/MemoizeDescriptor.d.ts.map +1 -1
  36. package/dist/src/decorators/provides/MemoizeDescriptor.js +4 -4
  37. package/dist/src/decorators/provides/MemoizeDescriptor.js.map +1 -1
  38. package/dist/src/decorators/provides/Provides.d.ts +0 -2
  39. package/dist/src/decorators/provides/Provides.d.ts.map +1 -1
  40. package/dist/src/decorators/provides/Provides.js.map +1 -1
  41. package/dist/src/graph/ObjectGraph.d.ts +0 -2
  42. package/dist/src/graph/ObjectGraph.d.ts.map +1 -1
  43. package/dist/src/graph/ObjectGraph.js +2 -2
  44. package/dist/src/graph/ObjectGraph.js.map +1 -1
  45. package/dist/src/graph/ProviderBinder.d.ts +3 -0
  46. package/dist/src/graph/ProviderBinder.d.ts.map +1 -0
  47. package/dist/src/graph/ProviderBinder.js +17 -0
  48. package/dist/src/graph/ProviderBinder.js.map +1 -0
  49. package/dist/src/graph/registry/GraphRegistry.d.ts +10 -8
  50. package/dist/src/graph/registry/GraphRegistry.d.ts.map +1 -1
  51. package/dist/src/graph/registry/GraphRegistry.js +29 -22
  52. package/dist/src/graph/registry/GraphRegistry.js.map +1 -1
  53. package/dist/src/index.d.ts +4 -2
  54. package/dist/src/index.d.ts.map +1 -1
  55. package/dist/src/index.js +9 -5
  56. package/dist/src/index.js.map +1 -1
  57. package/dist/src/injectors/class/ClassInjector.d.ts +12 -0
  58. package/dist/src/injectors/class/ClassInjector.d.ts.map +1 -0
  59. package/dist/src/injectors/class/ClassInjector.js +60 -0
  60. package/dist/src/injectors/class/ClassInjector.js.map +1 -0
  61. package/dist/src/injectors/class/ConstructorArgs.d.ts +8 -0
  62. package/dist/src/injectors/class/ConstructorArgs.d.ts.map +1 -0
  63. package/dist/src/injectors/class/ConstructorArgs.js +25 -0
  64. package/dist/src/injectors/class/ConstructorArgs.js.map +1 -0
  65. package/dist/src/injectors/class/InjectionMetadata.d.ts +15 -0
  66. package/dist/src/injectors/class/InjectionMetadata.d.ts.map +1 -0
  67. package/dist/src/injectors/class/InjectionMetadata.js +41 -0
  68. package/dist/src/injectors/class/InjectionMetadata.js.map +1 -0
  69. package/dist/src/injectors/class/LazyInjector.d.ts +8 -0
  70. package/dist/src/injectors/class/LazyInjector.d.ts.map +1 -0
  71. package/dist/src/injectors/class/LazyInjector.js +28 -0
  72. package/dist/src/injectors/class/LazyInjector.js.map +1 -0
  73. package/dist/src/injectors/components/ComponentInjector.d.ts +0 -1
  74. package/dist/src/injectors/components/ComponentInjector.d.ts.map +1 -1
  75. package/dist/src/injectors/components/ComponentInjector.js +0 -1
  76. package/dist/src/injectors/components/ComponentInjector.js.map +1 -1
  77. package/dist/src/types/index.d.ts +0 -1
  78. package/dist/src/types/index.d.ts.map +1 -1
  79. package/dist/test/integration/fixtures/MainGraph.d.ts +1 -0
  80. package/dist/test/integration/fixtures/MainGraph.d.ts.map +1 -1
  81. package/dist/test/integration/fixtures/MainGraph.js +10 -0
  82. package/dist/test/integration/fixtures/MainGraph.js.map +1 -1
  83. package/dist/test/integration/fixtures/SingletonGraph.d.ts +6 -0
  84. package/dist/test/integration/fixtures/SingletonGraph.d.ts.map +1 -0
  85. package/dist/test/integration/fixtures/SingletonGraph.js +53 -0
  86. package/dist/test/integration/fixtures/SingletonGraph.js.map +1 -0
  87. package/dist/test/integration/fixtures/UniqueNumberGraph.d.ts +8 -0
  88. package/dist/test/integration/fixtures/UniqueNumberGraph.d.ts.map +1 -0
  89. package/dist/test/integration/fixtures/UniqueNumberGraph.js +62 -0
  90. package/dist/test/integration/fixtures/UniqueNumberGraph.js.map +1 -0
  91. package/dist/test/integration/fixtures/injectedValues.d.ts +1 -0
  92. package/dist/test/integration/fixtures/injectedValues.d.ts.map +1 -1
  93. package/dist/test/integration/fixtures/injectedValues.js +1 -0
  94. package/dist/test/integration/fixtures/injectedValues.js.map +1 -1
  95. package/dist/transformers/{babel-plugin-obsidian-provide → babel-plugin-obsidian}/helpers/index.d.ts +4 -2
  96. package/dist/transformers/babel-plugin-obsidian/helpers/index.d.ts.map +1 -0
  97. package/dist/transformers/{babel-plugin-obsidian-provide → babel-plugin-obsidian}/helpers/index.js +28 -4
  98. package/dist/transformers/babel-plugin-obsidian/helpers/index.js.map +1 -0
  99. package/dist/transformers/{babel-plugin-obsidian-provide → babel-plugin-obsidian}/index.d.ts +0 -0
  100. package/dist/transformers/babel-plugin-obsidian/index.d.ts.map +1 -0
  101. package/dist/transformers/babel-plugin-obsidian/index.js +45 -0
  102. package/dist/transformers/babel-plugin-obsidian/index.js.map +1 -0
  103. package/dist/transformers/babel-plugin-obsidian/unmagler/index.d.ts +10 -0
  104. package/dist/transformers/babel-plugin-obsidian/unmagler/index.d.ts.map +1 -0
  105. package/dist/transformers/babel-plugin-obsidian/unmagler/index.js +14 -0
  106. package/dist/transformers/babel-plugin-obsidian/unmagler/index.js.map +1 -0
  107. package/dist/transformers/babel-plugin-obsidian/unmagler/method.d.ts +4 -0
  108. package/dist/transformers/babel-plugin-obsidian/unmagler/method.d.ts.map +1 -0
  109. package/dist/transformers/babel-plugin-obsidian/unmagler/method.js +26 -0
  110. package/dist/transformers/babel-plugin-obsidian/unmagler/method.js.map +1 -0
  111. package/dist/transformers/babel-plugin-obsidian/unmagler/property.d.ts +4 -0
  112. package/dist/transformers/babel-plugin-obsidian/unmagler/property.d.ts.map +1 -0
  113. package/dist/transformers/babel-plugin-obsidian/unmagler/property.js +14 -0
  114. package/dist/transformers/babel-plugin-obsidian/unmagler/property.js.map +1 -0
  115. package/example/babel.config.js +2 -2
  116. package/example/ios/example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  117. package/jest.config.js +4 -0
  118. package/jest.setup-after-env.js +1 -0
  119. package/jest.setup.ts +1 -0
  120. package/package.json +5 -3
  121. package/src/GraphProperties.ts +4 -0
  122. package/src/Obsidian.ts +5 -0
  123. package/src/ProvidedPropertiesStore.ts +4 -0
  124. package/src/decorators/Graph.ts +2 -5
  125. package/src/decorators/Singleton.ts +14 -0
  126. package/src/decorators/inject/Inject.ts +17 -0
  127. package/src/decorators/inject/Injectable.ts +8 -0
  128. package/src/decorators/inject/LazyInject.ts +8 -0
  129. package/src/decorators/provides/MemoizeDescriptor.ts +3 -4
  130. package/src/decorators/provides/Provides.ts +0 -2
  131. package/src/graph/ObjectGraph.ts +2 -5
  132. package/src/graph/ProviderBinder.ts +11 -0
  133. package/src/graph/registry/GraphRegistry.ts +34 -32
  134. package/src/index.ts +4 -2
  135. package/src/injectors/class/ClassInjector.ts +49 -0
  136. package/src/injectors/class/ConstructorArgs.ts +20 -0
  137. package/src/injectors/class/InjectionMetadata.ts +57 -0
  138. package/src/injectors/class/LazyInjector.ts +22 -0
  139. package/src/injectors/components/ComponentInjector.tsx +0 -1
  140. package/src/types/index.ts +0 -2
  141. package/testkit/index.ts +1 -1
  142. package/transformers/{babel-plugin-obsidian-provide → babel-plugin-obsidian}/helpers/index.ts +38 -2
  143. package/transformers/babel-plugin-obsidian/index.ts +46 -0
  144. package/transformers/babel-plugin-obsidian/unmagler/index.ts +9 -0
  145. package/transformers/babel-plugin-obsidian/unmagler/method.ts +31 -0
  146. package/transformers/babel-plugin-obsidian/unmagler/property.ts +21 -0
  147. package/dist/src/ScopedValuesRegistry.d.ts +0 -11
  148. package/dist/src/ScopedValuesRegistry.d.ts.map +0 -1
  149. package/dist/src/ScopedValuesRegistry.js +0 -25
  150. package/dist/src/ScopedValuesRegistry.js.map +0 -1
  151. package/dist/src/decorators/injectClass.d.ts +0 -7
  152. package/dist/src/decorators/injectClass.d.ts.map +0 -1
  153. package/dist/src/decorators/injectClass.js +0 -34
  154. package/dist/src/decorators/injectClass.js.map +0 -1
  155. package/dist/src/utils/autobind.d.ts +0 -2
  156. package/dist/src/utils/autobind.d.ts.map +0 -1
  157. package/dist/src/utils/autobind.js +0 -19
  158. package/dist/src/utils/autobind.js.map +0 -1
  159. package/dist/transformers/babel-plugin-obsidian-provide/helpers/index.d.ts.map +0 -1
  160. package/dist/transformers/babel-plugin-obsidian-provide/helpers/index.js.map +0 -1
  161. package/dist/transformers/babel-plugin-obsidian-provide/index.d.ts.map +0 -1
  162. package/dist/transformers/babel-plugin-obsidian-provide/index.js +0 -39
  163. package/dist/transformers/babel-plugin-obsidian-provide/index.js.map +0 -1
  164. package/src/ScopedValuesRegistry.ts +0 -26
  165. package/src/decorators/injectClass.ts +0 -28
  166. package/src/utils/autobind.ts +0 -12
  167. package/transformers/babel-plugin-obsidian-provide/index.ts +0 -47
@@ -0,0 +1,53 @@
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
+ var lodash_1 = require("lodash");
28
+ var Singleton_1 = require("../../../src/decorators/Singleton");
29
+ var src_1 = require("../../../src");
30
+ var SingletonGraph = /** @class */ (function (_super) {
31
+ __extends(SingletonGraph, _super);
32
+ function SingletonGraph() {
33
+ var _this = _super !== null && _super.apply(this, arguments) || this;
34
+ _this.id = (0, lodash_1.uniqueId)();
35
+ return _this;
36
+ }
37
+ SingletonGraph.prototype.instanceId = function () {
38
+ return "graph".concat(this.id);
39
+ };
40
+ __decorate([
41
+ (0, src_1.Provides)(),
42
+ __metadata("design:type", Function),
43
+ __metadata("design:paramtypes", []),
44
+ __metadata("design:returntype", String)
45
+ ], SingletonGraph.prototype, "instanceId", null);
46
+ SingletonGraph = __decorate([
47
+ (0, Singleton_1.Singleton)(),
48
+ (0, src_1.Graph)()
49
+ ], SingletonGraph);
50
+ return SingletonGraph;
51
+ }(src_1.ObjectGraph));
52
+ exports.default = SingletonGraph;
53
+ //# sourceMappingURL=SingletonGraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SingletonGraph.js","sourceRoot":"","sources":["../../../../test/integration/fixtures/SingletonGraph.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iCAAkC;AAClC,+DAA8D;AAC9D,oCAA4D;AAG5D;IAA4C,kCAAW;IAAvD;QAAA,qEAOC;QANS,QAAE,GAAG,IAAA,iBAAQ,GAAE,CAAC;;IAM1B,CAAC;IAHC,mCAAU,GAAV;QACE,OAAO,eAAQ,IAAI,CAAC,EAAE,CAAE,CAAC;IAC3B,CAAC;IAFD;QADC,IAAA,cAAQ,GAAE;;;;oDAGV;IANkB,cAAc;QADlC,IAAA,qBAAS,GAAE;QAAE,IAAA,WAAK,GAAE;OACA,cAAc,CAOlC;IAAD,qBAAC;CAAA,AAPD,CAA4C,iBAAW,GAOtD;kBAPoB,cAAc"}
@@ -0,0 +1,8 @@
1
+ import { ObjectGraph } from '../../../src';
2
+ export declare class UniqueNumberGraph extends ObjectGraph {
3
+ private uniqueNumberGenerator;
4
+ constructor(uniqueNumberGenerator: () => number);
5
+ singletonNumber(): number;
6
+ instanceNumber(): number;
7
+ }
8
+ //# sourceMappingURL=UniqueNumberGraph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UniqueNumberGraph.d.ts","sourceRoot":"","sources":["../../../../test/integration/fixtures/UniqueNumberGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EAGZ,MAAM,cAAc,CAAC;AAEtB,qBACa,iBAAkB,SAAQ,WAAW;IACpC,OAAO,CAAC,qBAAqB;gBAArB,qBAAqB,EAAE,MAAM,MAAM;IAKvD,eAAe,IAAI,MAAM;IAKzB,cAAc,IAAI,MAAM;CAGzB"}
@@ -0,0 +1,62 @@
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.UniqueNumberGraph = void 0;
28
+ var src_1 = require("../../../src");
29
+ var UniqueNumberGraph = /** @class */ (function (_super) {
30
+ __extends(UniqueNumberGraph, _super);
31
+ function UniqueNumberGraph(uniqueNumberGenerator) {
32
+ var _this = _super.call(this) || this;
33
+ _this.uniqueNumberGenerator = uniqueNumberGenerator;
34
+ return _this;
35
+ }
36
+ UniqueNumberGraph.prototype.singletonNumber = function () {
37
+ return this.uniqueNumberGenerator();
38
+ };
39
+ UniqueNumberGraph.prototype.instanceNumber = function () {
40
+ return this.uniqueNumberGenerator();
41
+ };
42
+ __decorate([
43
+ (0, src_1.Provides)(),
44
+ (0, src_1.Singleton)(),
45
+ __metadata("design:type", Function),
46
+ __metadata("design:paramtypes", []),
47
+ __metadata("design:returntype", Number)
48
+ ], UniqueNumberGraph.prototype, "singletonNumber", null);
49
+ __decorate([
50
+ (0, src_1.Provides)(),
51
+ __metadata("design:type", Function),
52
+ __metadata("design:paramtypes", []),
53
+ __metadata("design:returntype", Number)
54
+ ], UniqueNumberGraph.prototype, "instanceNumber", null);
55
+ UniqueNumberGraph = __decorate([
56
+ (0, src_1.Graph)(),
57
+ __metadata("design:paramtypes", [Function])
58
+ ], UniqueNumberGraph);
59
+ return UniqueNumberGraph;
60
+ }(src_1.ObjectGraph));
61
+ exports.UniqueNumberGraph = UniqueNumberGraph;
62
+ //# sourceMappingURL=UniqueNumberGraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UniqueNumberGraph.js","sourceRoot":"","sources":["../../../../test/integration/fixtures/UniqueNumberGraph.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oCAKsB;AAGtB;IAAuC,qCAAW;IAChD,2BAAoB,qBAAmC;QAAvD,YACE,iBAAO,SACR;QAFmB,2BAAqB,GAArB,qBAAqB,CAAc;;IAEvD,CAAC;IAGD,2CAAe,GAAf;QACE,OAAO,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACtC,CAAC;IAGD,0CAAc,GAAd;QACE,OAAO,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACtC,CAAC;IAPD;QADC,IAAA,cAAQ,GAAE;QAAE,IAAA,eAAS,GAAE;;;;4DAGvB;IAGD;QADC,IAAA,cAAQ,GAAE;;;;2DAGV;IAbU,iBAAiB;QAD7B,IAAA,WAAK,GAAE;;OACK,iBAAiB,CAc7B;IAAD,wBAAC;CAAA,AAdD,CAAuC,iBAAW,GAcjD;AAdY,8CAAiB"}
@@ -1,6 +1,7 @@
1
1
  declare const _default: {
2
2
  fromSubgraph: string;
3
3
  fromStringProvider: string;
4
+ anotherString: string;
4
5
  };
5
6
  export default _default;
6
7
  //# sourceMappingURL=injectedValues.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"injectedValues.d.ts","sourceRoot":"","sources":["../../../../test/integration/fixtures/injectedValues.ts"],"names":[],"mappings":";;;;AAAA,wBAGE"}
1
+ {"version":3,"file":"injectedValues.d.ts","sourceRoot":"","sources":["../../../../test/integration/fixtures/injectedValues.ts"],"names":[],"mappings":";;;;;AAAA,wBAIE"}
@@ -3,5 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = {
4
4
  fromSubgraph: 'FromSubgraph',
5
5
  fromStringProvider: 'Fear kills progress',
6
+ anotherString: 'Yet another injected string',
6
7
  };
7
8
  //# sourceMappingURL=injectedValues.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"injectedValues.js","sourceRoot":"","sources":["../../../../test/integration/fixtures/injectedValues.ts"],"names":[],"mappings":";;AAAA,kBAAe;IACb,YAAY,EAAE,cAAc;IAC5B,kBAAkB,EAAE,qBAAqB;CAC1C,CAAC"}
1
+ {"version":3,"file":"injectedValues.js","sourceRoot":"","sources":["../../../../test/integration/fixtures/injectedValues.ts"],"names":[],"mappings":";;AAAA,kBAAe;IACb,YAAY,EAAE,cAAc;IAC5B,kBAAkB,EAAE,qBAAqB;IACzC,aAAa,EAAE,6BAA6B;CAC7C,CAAC"}
@@ -1,9 +1,11 @@
1
- import { ClassMethod, Decorator, Identifier, ObjectExpression, ObjectPattern } from '@babel/types';
1
+ import { ClassMethod, ClassProperty, Decorator, Identifier, ObjectExpression, ObjectPattern, TSParameterProperty } from '@babel/types';
2
+ export declare type AcceptedNodeType = Identifier | TSParameterProperty | ClassProperty;
2
3
  export declare function providerIsNotNamed(decorator: Decorator): boolean;
3
4
  export declare function addNameToProviderArguments(node: ClassMethod, decorator: Decorator): void;
4
5
  export declare function getDecoratorArgument(decorator: Decorator): ObjectExpression | undefined;
5
6
  export declare function getMethodName(node: ClassMethod): string;
6
- export declare function getProviderDecorator(decorators: Array<Decorator> | undefined | null): Decorator | undefined;
7
+ export declare function getDecoratorByName(decorators: Array<Decorator> | undefined | null, decoratorName: string): Decorator | undefined;
7
8
  export declare function getDecoratorName(decorator?: Decorator): string | undefined;
8
9
  export declare function paramsToDestructuringAssignment(params: (Identifier | any)[]): ObjectPattern;
10
+ export declare function passParamNameAsInjectArgument(node: AcceptedNodeType, decorator: Decorator): void;
9
11
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../transformers/babel-plugin-obsidian/helpers/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,WAAW,EACX,aAAa,EACb,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACpB,MAAM,cAAc,CAAC;AAKtB,oBAAY,gBAAgB,GAAG,UAAU,GAAG,mBAAmB,GAAG,aAAa,CAAC;AAEhF,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAWhE;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,QAOjF;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,SAAS,GAAG,gBAAgB,GAAG,SAAS,CAKvF;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAGvD;AAED,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,IAAI,EAC/C,aAAa,EAAE,MAAM,GACpB,SAAS,GAAG,SAAS,CAEvB;AAED,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAE1E;AAED,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,CAAC,UAAU,GAAG,GAAG,CAAC,EAAE,GAAG,aAAa,CAI3F;AAED,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,gBAAgB,EACtB,SAAS,EAAE,SAAS,QAOrB"}
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.paramsToDestructuringAssignment = exports.getDecoratorName = exports.getProviderDecorator = exports.getMethodName = exports.getDecoratorArgument = exports.addNameToProviderArguments = exports.providerIsNotNamed = void 0;
3
+ exports.passParamNameAsInjectArgument = exports.paramsToDestructuringAssignment = exports.getDecoratorName = exports.getDecoratorByName = exports.getMethodName = exports.getDecoratorArgument = exports.addNameToProviderArguments = exports.providerIsNotNamed = void 0;
4
4
  /* eslint-disable no-param-reassign */
5
5
  var core_1 = require("@babel/core");
6
6
  var lodash_1 = require("lodash");
7
+ var never = '';
7
8
  function providerIsNotNamed(decorator) {
8
9
  var argument = getDecoratorArgument(decorator);
9
10
  if (core_1.types.isObjectExpression(argument)) {
@@ -37,10 +38,10 @@ function getMethodName(node) {
37
38
  throw new Error("Tried to get class name but encountered unexpected key of type: ".concat(node.key.type));
38
39
  }
39
40
  exports.getMethodName = getMethodName;
40
- function getProviderDecorator(decorators) {
41
- return decorators === null || decorators === void 0 ? void 0 : decorators.find(function (decorator) { return (0, lodash_1.get)(decorator, 'expression.callee.name') === 'Provides'; });
41
+ function getDecoratorByName(decorators, decoratorName) {
42
+ return decorators === null || decorators === void 0 ? void 0 : decorators.find(function (decorator) { return (0, lodash_1.get)(decorator, 'expression.callee.name') === decoratorName; });
42
43
  }
43
- exports.getProviderDecorator = getProviderDecorator;
44
+ exports.getDecoratorByName = getDecoratorByName;
44
45
  function getDecoratorName(decorator) {
45
46
  return (0, lodash_1.get)(decorator, 'expression.callee.name');
46
47
  }
@@ -51,4 +52,27 @@ function paramsToDestructuringAssignment(params) {
51
52
  .map(function (p) { return core_1.types.objectProperty(core_1.types.identifier(p.name), core_1.types.identifier(p.name)); }));
52
53
  }
53
54
  exports.paramsToDestructuringAssignment = paramsToDestructuringAssignment;
55
+ function passParamNameAsInjectArgument(node, decorator) {
56
+ if (core_1.types.isCallExpression(decorator.expression)) {
57
+ decorator.expression.arguments = [
58
+ core_1.types.stringLiteral(getNodeName(node)),
59
+ ];
60
+ }
61
+ }
62
+ exports.passParamNameAsInjectArgument = passParamNameAsInjectArgument;
63
+ function getNodeName(node) {
64
+ if (core_1.types.isTSParameterProperty(node)) {
65
+ if (core_1.types.isIdentifier(node.parameter)) {
66
+ return node.parameter.name;
67
+ }
68
+ return never;
69
+ }
70
+ if (core_1.types.isClassProperty(node)) {
71
+ if (core_1.types.isIdentifier(node.key)) {
72
+ return node.key.name;
73
+ }
74
+ return never;
75
+ }
76
+ return node.name;
77
+ }
54
78
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../transformers/babel-plugin-obsidian/helpers/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../transformers/babel-plugin-obsidian/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAY,SAAS,EAAE,MAAM,aAAa,CAAC;AAmClD,MAAM,CAAC,OAAO,UAAU,MAAM,gDAE7B"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var unmagler_1 = __importDefault(require("./unmagler"));
7
+ var providerArgumentsTransformer = {
8
+ visitor: {
9
+ Program: function (path) {
10
+ path.traverse(internalVisitor);
11
+ },
12
+ },
13
+ };
14
+ var internalVisitor = {
15
+ ClassMethod: {
16
+ enter: function (_a) {
17
+ var node = _a.node;
18
+ unmagler_1.default.saveClassMethod('Provides', node);
19
+ },
20
+ },
21
+ ClassProperty: {
22
+ enter: function (_a) {
23
+ var node = _a.node;
24
+ unmagler_1.default.saveClassProperty('Inject', node);
25
+ unmagler_1.default.saveClassProperty('LazyInject', node);
26
+ },
27
+ },
28
+ Identifier: {
29
+ enter: function (_a) {
30
+ var node = _a.node;
31
+ unmagler_1.default.saveIdentifier('Inject', node);
32
+ },
33
+ },
34
+ TSParameterProperty: {
35
+ enter: function (_a) {
36
+ var node = _a.node;
37
+ unmagler_1.default.saveTSParameterProperty('Inject', node);
38
+ },
39
+ },
40
+ };
41
+ function plugin() {
42
+ return providerArgumentsTransformer;
43
+ }
44
+ exports.default = plugin;
45
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../transformers/babel-plugin-obsidian/index.ts"],"names":[],"mappings":";;;;;AASA,wDAAkC;AAElC,IAAM,4BAA4B,GAAc;IAC9C,OAAO,EAAE;QACP,OAAO,EAAP,UAAQ,IAAuB;YAC7B,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QACjC,CAAC;KACF;CACF,CAAC;AAEF,IAAM,eAAe,GAAG;IACtB,WAAW,EAAE;QACX,KAAK,EAAL,UAAM,EAA+B;gBAA7B,IAAI,UAAA;YACV,kBAAQ,CAAC,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC7C,CAAC;KACF;IACD,aAAa,EAAE;QACb,KAAK,EAAL,UAAM,EAAiC;gBAA/B,IAAI,UAAA;YACV,kBAAQ,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC3C,kBAAQ,CAAC,iBAAiB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACjD,CAAC;KACF;IACD,UAAU,EAAE;QACV,KAAK,EAAL,UAAM,EAA8B;gBAA5B,IAAI,UAAA;YACV,kBAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC1C,CAAC;KACF;IACD,mBAAmB,EAAE;QACnB,KAAK,EAAL,UAAM,EAAuC;gBAArC,IAAI,UAAA;YACV,kBAAQ,CAAC,uBAAuB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACnD,CAAC;KACF;CACF,CAAC;AAEF,SAAwB,MAAM;IAC5B,OAAO,4BAA4B,CAAC;AACtC,CAAC;AAFD,yBAEC"}
@@ -0,0 +1,10 @@
1
+ import saveMethod from './method';
2
+ import saveProperty from './property';
3
+ declare const _default: {
4
+ saveClassMethod: typeof saveMethod;
5
+ saveClassProperty: typeof saveProperty;
6
+ saveIdentifier: typeof saveProperty;
7
+ saveTSParameterProperty: typeof saveProperty;
8
+ };
9
+ export default _default;
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../transformers/babel-plugin-obsidian/unmagler/index.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,UAAU,CAAC;AAClC,OAAO,YAAY,MAAM,YAAY,CAAC;;;;;;;AAEtC,wBAKE"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var method_1 = __importDefault(require("./method"));
7
+ var property_1 = __importDefault(require("./property"));
8
+ exports.default = {
9
+ saveClassMethod: method_1.default,
10
+ saveClassProperty: property_1.default,
11
+ saveIdentifier: property_1.default,
12
+ saveTSParameterProperty: property_1.default,
13
+ };
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../transformers/babel-plugin-obsidian/unmagler/index.ts"],"names":[],"mappings":";;;;;AAAA,oDAAkC;AAClC,wDAAsC;AAEtC,kBAAe;IACb,eAAe,EAAE,gBAAU;IAC3B,iBAAiB,EAAE,kBAAY;IAC/B,cAAc,EAAE,kBAAY;IAC5B,uBAAuB,EAAE,kBAAY;CACtC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { ClassMethod } from '@babel/types';
2
+ declare function saveMethod(name: string, node: ClassMethod): void;
3
+ export default saveMethod;
4
+ //# sourceMappingURL=method.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"method.d.ts","sourceRoot":"","sources":["../../../../transformers/babel-plugin-obsidian/unmagler/method.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAa,MAAM,cAAc,CAAC;AAStD,iBAAS,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,QAMlD;AAeD,eAAe,UAAU,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var helpers_1 = require("../helpers");
4
+ function saveMethod(name, node) {
5
+ var decorator = (0, helpers_1.getDecoratorByName)(node.decorators, name);
6
+ if ((0, helpers_1.getDecoratorName)(decorator) === name) {
7
+ convertProviderParamsToDestructuringAssignment(node);
8
+ saveUnmangledMethodNameInProviderArguments(node, decorator);
9
+ }
10
+ }
11
+ function convertProviderParamsToDestructuringAssignment(node) {
12
+ if (node.params.length === 0) {
13
+ return;
14
+ }
15
+ var destructuredParams = (0, helpers_1.paramsToDestructuringAssignment)(node.params);
16
+ // eslint-disable-next-line no-param-reassign
17
+ node.params.length = 0;
18
+ node.params.push(destructuredParams);
19
+ }
20
+ function saveUnmangledMethodNameInProviderArguments(node, decorator) {
21
+ if ((0, helpers_1.providerIsNotNamed)(decorator)) {
22
+ (0, helpers_1.addNameToProviderArguments)(node, decorator);
23
+ }
24
+ }
25
+ exports.default = saveMethod;
26
+ //# sourceMappingURL=method.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"method.js","sourceRoot":"","sources":["../../../../transformers/babel-plugin-obsidian/unmagler/method.ts"],"names":[],"mappings":";;AACA,sCAMoB;AAEpB,SAAS,UAAU,CAAC,IAAY,EAAE,IAAiB;IACjD,IAAM,SAAS,GAAG,IAAA,4BAAkB,EAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC5D,IAAI,IAAA,0BAAgB,EAAC,SAAS,CAAC,KAAK,IAAI,EAAE;QACxC,8CAA8C,CAAC,IAAI,CAAC,CAAC;QACrD,0CAA0C,CAAC,IAAI,EAAE,SAAU,CAAC,CAAC;KAC9D;AACH,CAAC;AAED,SAAS,8CAA8C,CAAC,IAAiB;IACvE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAAE,OAAO;KAAE;IACzC,IAAM,kBAAkB,GAAG,IAAA,yCAA+B,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxE,6CAA6C;IAC7C,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,0CAA0C,CAAC,IAAiB,EAAE,SAAoB;IACzF,IAAI,IAAA,4BAAkB,EAAC,SAAS,CAAC,EAAE;QACjC,IAAA,oCAA0B,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;KAC7C;AACH,CAAC;AACD,kBAAe,UAAU,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { AcceptedNodeType } from '../helpers';
2
+ declare function savePropertyName(name: string, node: AcceptedNodeType): void;
3
+ export default savePropertyName;
4
+ //# sourceMappingURL=property.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"property.d.ts","sourceRoot":"","sources":["../../../../transformers/babel-plugin-obsidian/unmagler/property.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB,iBAAS,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,QAK7D;AAMD,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var helpers_1 = require("../helpers");
4
+ function savePropertyName(name, node) {
5
+ var decorator = (0, helpers_1.getDecoratorByName)(node.decorators, name);
6
+ if ((0, helpers_1.getDecoratorName)(decorator) === name && injectIsNotNamed(decorator)) {
7
+ (0, helpers_1.passParamNameAsInjectArgument)(node, decorator);
8
+ }
9
+ }
10
+ function injectIsNotNamed(decorator) {
11
+ return (0, helpers_1.getDecoratorArgument)(decorator) === undefined;
12
+ }
13
+ exports.default = savePropertyName;
14
+ //# sourceMappingURL=property.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"property.js","sourceRoot":"","sources":["../../../../transformers/babel-plugin-obsidian/unmagler/property.ts"],"names":[],"mappings":";;AACA,sCAMoB;AAEpB,SAAS,gBAAgB,CAAC,IAAY,EAAE,IAAsB;IAC5D,IAAM,SAAS,GAAG,IAAA,4BAAkB,EAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC5D,IAAI,IAAA,0BAAgB,EAAC,SAAS,CAAC,KAAK,IAAI,IAAI,gBAAgB,CAAC,SAAU,CAAC,EAAE;QACxE,IAAA,uCAA6B,EAAC,IAAI,EAAE,SAAU,CAAC,CAAC;KACjD;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,SAAoB;IAC5C,OAAO,IAAA,8BAAoB,EAAC,SAAS,CAAC,KAAK,SAAS,CAAC;AACvD,CAAC;AAED,kBAAe,gBAAgB,CAAC"}
@@ -2,7 +2,7 @@ module.exports = {
2
2
  presets: ['module:metro-react-native-babel-preset'],
3
3
  plugins: [
4
4
  ['@babel/plugin-proposal-decorators', {legacy: true}],
5
- ['@babel/plugin-proposal-class-properties', {legacy: true}],
6
- [`${__dirname}/../dist/transformers/babel-plugin-obsidian-provide`],
5
+ ['@babel/plugin-proposal-class-properties', {loose: true}],
6
+ [`${__dirname}/../dist/transformers/babel-plugin-obsidian`],
7
7
  ],
8
8
  };
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>IDEDidComputeMac32BitWarning</key>
6
+ <true/>
7
+ </dict>
8
+ </plist>
package/jest.config.js CHANGED
@@ -7,6 +7,10 @@ const config = {
7
7
  'transformers',
8
8
  'test',
9
9
  ],
10
+ setupFilesAfterEnv: [
11
+ './jest.setup-after-env.js'
12
+ ],
13
+ testEnvironment: 'jsdom'
10
14
  };
11
15
 
12
16
  module.exports = config;
@@ -0,0 +1 @@
1
+ require('setimmediate');
package/jest.setup.ts ADDED
@@ -0,0 +1 @@
1
+ import 'reflect-metadata';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-obsidian",
3
- "version": "0.0.11",
3
+ "version": "0.0.15",
4
4
  "description": "Dependency injection framework for React and React Native applications",
5
5
  "main": "src/index.ts",
6
6
  "directories": {
@@ -19,6 +19,7 @@
19
19
  "@babel/plugin-proposal-class-properties": "7.16.x",
20
20
  "@babel/plugin-proposal-decorators": "7.16.x",
21
21
  "@babel/preset-env": "7.16.x",
22
+ "babel-plugin-parameter-decorator": "1.x.x",
22
23
  "@babel/preset-react": "7.16.x",
23
24
  "@babel/preset-typescript": "7.16.x",
24
25
  "@babel/types": "7.16.x",
@@ -40,11 +41,12 @@
40
41
  "eslint-plugin-jsx-a11y": "^6.4.1",
41
42
  "eslint-plugin-react": "^7.26.1",
42
43
  "eslint-plugin-react-hooks": "^4.2.0",
43
- "jest": "26.x.x",
44
+ "jest": "27.x.x",
44
45
  "lodash": "^4.17.21",
45
46
  "react": "17.0.2",
46
47
  "react-dom": "17.0.2",
47
- "typescript": "^4.4.4"
48
+ "typescript": "^4.5.4",
49
+ "setimmediate": "^1.0.5"
48
50
  },
49
51
  "scripts": {
50
52
  "prepack": "npm run lint && tsc --project tsconfig.prod.json",
@@ -8,4 +8,8 @@ export default class GraphProperties {
8
8
  getMangledProperty(unmangledProperty: string): string | undefined {
9
9
  return this.unmangledToMangledPropKeys.get(unmangledProperty);
10
10
  }
11
+
12
+ getMangledProperties(): string[] {
13
+ return Array.from(this.unmangledToMangledPropKeys.values());
14
+ }
11
15
  }
package/src/Obsidian.ts CHANGED
@@ -2,6 +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
6
 
6
7
  export default class Obsidian {
7
8
  obtain<T extends ObjectGraph<P>, P = any>(
@@ -11,6 +12,10 @@ export default class Obsidian {
11
12
  return graphRegistry.resolve(Graph, props) as unknown as ServiceLocator<T>;
12
13
  }
13
14
 
15
+ inject<T extends object>(target: T) {
16
+ return lazyInjector.inject(target);
17
+ }
18
+
14
19
  addGraphMiddleware(middleware: GraphMiddleware) {
15
20
  graphRegistry.addGraphMiddleware(middleware);
16
21
  }
@@ -14,6 +14,10 @@ class ProvidedPropertiesStore {
14
14
  this.providedPropertiesForGraph.set(graph.name, graphProperties);
15
15
  }
16
16
 
17
+ getMangledProperties(graph: Graph): string[] {
18
+ return this.providedPropertiesForGraph.get(graph.name)?.getMangledProperties() ?? [];
19
+ }
20
+
17
21
  clear(graph: Graph) {
18
22
  this.providedPropertiesForGraph.delete(graph.name);
19
23
  }
@@ -1,20 +1,17 @@
1
- import { Constructable, Scope } from '../types';
1
+ import { Constructable } from '../types';
2
2
  import 'reflect-metadata';
3
3
  import graphRegistry from '../graph/registry/GraphRegistry';
4
4
  import { ObjectGraph } from '../graph/ObjectGraph';
5
5
 
6
6
  interface GraphParams {
7
- scope: Scope | undefined;
8
7
  subgraphs: Constructable<ObjectGraph>[];
9
8
  }
10
9
 
11
10
  export function Graph({
12
- scope,
13
11
  subgraphs = [],
14
12
  }: Partial<GraphParams> = {}) {
15
13
  return <T extends ObjectGraph>(constructor: Constructable<T>) => {
16
- Reflect.defineMetadata('scope', scope, constructor);
17
- graphRegistry.register(constructor, scope, subgraphs);
14
+ graphRegistry.register(constructor, subgraphs);
18
15
  return constructor;
19
16
  };
20
17
  }
@@ -0,0 +1,14 @@
1
+ import { Constructable } from '../types';
2
+ import { ObjectGraph } from '../graph/ObjectGraph';
3
+
4
+ export function Singleton() {
5
+ return function singleton(
6
+ constructorOrGraph: Constructable<ObjectGraph> | ObjectGraph,
7
+ _property?: string,
8
+ descriptor?: PropertyDescriptor,
9
+ ): any {
10
+ const target = descriptor || constructorOrGraph;
11
+ Reflect.defineMetadata('isSingleton', true, target);
12
+ return target;
13
+ };
14
+ }
@@ -0,0 +1,17 @@
1
+ import { isNumber } from 'lodash';
2
+ import InjectionMetadata from '../../injectors/class/InjectionMetadata';
3
+
4
+ export function Inject(name?: string) {
5
+ return (
6
+ target: Object | any,
7
+ _propertyKey?: string,
8
+ indexOrPropertyDescriptor?: number | PropertyDescriptor,
9
+ ) => {
10
+ const metadata = new InjectionMetadata();
11
+ if (isNumber(indexOrPropertyDescriptor)) {
12
+ metadata.saveConstructorParamMetadata(target, name!, indexOrPropertyDescriptor);
13
+ } else {
14
+ metadata.savePropertyMetadata(target.constructor, name!);
15
+ }
16
+ };
17
+ }
@@ -0,0 +1,8 @@
1
+ import { Constructable } from '../../types';
2
+ import { Graph } from '../../graph/Graph';
3
+ import graphRegistry from '../../graph/registry/GraphRegistry';
4
+ import ClassInjector from '../../injectors/class/ClassInjector';
5
+
6
+ export function Injectable(Graph: Constructable<Graph>): any {
7
+ return new ClassInjector(graphRegistry).inject(Graph);
8
+ }
@@ -0,0 +1,8 @@
1
+ import InjectionMetadata from '../../injectors/class/InjectionMetadata';
2
+
3
+ export function LazyInject(name?: string): any {
4
+ return (target: object) => {
5
+ const metadata = new InjectionMetadata();
6
+ metadata.saveLazyPropertyMetadata(target.constructor, name!);
7
+ };
8
+ }
@@ -2,12 +2,11 @@
2
2
  export function memoizeDescriptor(propertyKey: string, descriptor: PropertyDescriptor): PropertyDescriptor {
3
3
  const originalValue = descriptor.value;
4
4
  descriptor.value = function value(...args: any[]) {
5
+ const memoizationTarget = Reflect.getMetadata('isSingleton', descriptor) ? descriptor : this;
5
6
  const key = `memoized${propertyKey}`;
6
- if (Reflect.hasMetadata(key, this)) {
7
- return Reflect.getMetadata(key, this);
8
- }
7
+ if (Reflect.hasMetadata(key, memoizationTarget)) return Reflect.getMetadata(key, memoizationTarget);
9
8
  const result = originalValue.apply(this, args);
10
- Reflect.defineMetadata(key, result, this);
9
+ Reflect.defineMetadata(key, result, memoizationTarget);
11
10
  return result;
12
11
  };
13
12
  return descriptor;