react-obsidian 0.0.12 → 0.0.16

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 (155) hide show
  1. package/README.md +105 -10
  2. package/babel.config.js +5 -4
  3. package/dist/src/Obsidian.d.ts +1 -0
  4. package/dist/src/Obsidian.d.ts.map +1 -1
  5. package/dist/src/Obsidian.js +4 -0
  6. package/dist/src/Obsidian.js.map +1 -1
  7. package/dist/src/decorators/Graph.d.ts +2 -3
  8. package/dist/src/decorators/Graph.d.ts.map +1 -1
  9. package/dist/src/decorators/Graph.js +2 -3
  10. package/dist/src/decorators/Graph.js.map +1 -1
  11. package/dist/src/decorators/Singleton.d.ts +4 -0
  12. package/dist/src/decorators/Singleton.d.ts.map +1 -0
  13. package/dist/src/decorators/Singleton.js +12 -0
  14. package/dist/src/decorators/Singleton.js.map +1 -0
  15. package/dist/src/decorators/inject/Inject.d.ts +2 -0
  16. package/dist/src/decorators/inject/Inject.d.ts.map +1 -0
  17. package/dist/src/decorators/inject/Inject.js +21 -0
  18. package/dist/src/decorators/inject/Inject.js.map +1 -0
  19. package/dist/src/decorators/inject/Injectable.d.ts +4 -0
  20. package/dist/src/decorators/inject/Injectable.d.ts.map +1 -0
  21. package/dist/src/decorators/inject/Injectable.js +13 -0
  22. package/dist/src/decorators/inject/Injectable.js.map +1 -0
  23. package/dist/src/decorators/inject/LazyInject.d.ts +2 -0
  24. package/dist/src/decorators/inject/LazyInject.d.ts.map +1 -0
  25. package/dist/src/decorators/inject/LazyInject.js +15 -0
  26. package/dist/src/decorators/inject/LazyInject.js.map +1 -0
  27. package/dist/src/decorators/provides/MemoizeDescriptor.d.ts.map +1 -1
  28. package/dist/src/decorators/provides/MemoizeDescriptor.js +4 -4
  29. package/dist/src/decorators/provides/MemoizeDescriptor.js.map +1 -1
  30. package/dist/src/decorators/provides/Provides.d.ts +0 -2
  31. package/dist/src/decorators/provides/Provides.d.ts.map +1 -1
  32. package/dist/src/decorators/provides/Provides.js.map +1 -1
  33. package/dist/src/graph/ObjectGraph.d.ts +2 -2
  34. package/dist/src/graph/ObjectGraph.d.ts.map +1 -1
  35. package/dist/src/graph/ObjectGraph.js +6 -1
  36. package/dist/src/graph/ObjectGraph.js.map +1 -1
  37. package/dist/src/graph/ProviderBinder.d.ts.map +1 -1
  38. package/dist/src/graph/ProviderBinder.js +2 -3
  39. package/dist/src/graph/ProviderBinder.js.map +1 -1
  40. package/dist/src/graph/registry/GraphRegistry.d.ts +11 -8
  41. package/dist/src/graph/registry/GraphRegistry.d.ts.map +1 -1
  42. package/dist/src/graph/registry/GraphRegistry.js +34 -22
  43. package/dist/src/graph/registry/GraphRegistry.js.map +1 -1
  44. package/dist/src/index.d.ts +5 -2
  45. package/dist/src/index.d.ts.map +1 -1
  46. package/dist/src/index.js +11 -5
  47. package/dist/src/index.js.map +1 -1
  48. package/dist/src/injectors/class/ClassInjector.d.ts +12 -0
  49. package/dist/src/injectors/class/ClassInjector.d.ts.map +1 -0
  50. package/dist/src/injectors/class/ClassInjector.js +60 -0
  51. package/dist/src/injectors/class/ClassInjector.js.map +1 -0
  52. package/dist/src/injectors/class/ConstructorArgs.d.ts +8 -0
  53. package/dist/src/injectors/class/ConstructorArgs.d.ts.map +1 -0
  54. package/dist/src/injectors/class/ConstructorArgs.js +25 -0
  55. package/dist/src/injectors/class/ConstructorArgs.js.map +1 -0
  56. package/dist/src/injectors/class/InjectionMetadata.d.ts +15 -0
  57. package/dist/src/injectors/class/InjectionMetadata.d.ts.map +1 -0
  58. package/dist/src/injectors/class/InjectionMetadata.js +41 -0
  59. package/dist/src/injectors/class/InjectionMetadata.js.map +1 -0
  60. package/dist/src/injectors/class/LazyInjector.d.ts +8 -0
  61. package/dist/src/injectors/class/LazyInjector.d.ts.map +1 -0
  62. package/dist/src/injectors/class/LazyInjector.js +28 -0
  63. package/dist/src/injectors/class/LazyInjector.js.map +1 -0
  64. package/dist/src/injectors/components/ComponentInjector.d.ts +0 -1
  65. package/dist/src/injectors/components/ComponentInjector.d.ts.map +1 -1
  66. package/dist/src/injectors/components/ComponentInjector.js +0 -1
  67. package/dist/src/injectors/components/ComponentInjector.js.map +1 -1
  68. package/dist/src/types/index.d.ts +0 -1
  69. package/dist/src/types/index.d.ts.map +1 -1
  70. package/dist/test/integration/fixtures/MainGraph.d.ts +1 -0
  71. package/dist/test/integration/fixtures/MainGraph.d.ts.map +1 -1
  72. package/dist/test/integration/fixtures/MainGraph.js +10 -0
  73. package/dist/test/integration/fixtures/MainGraph.js.map +1 -1
  74. package/dist/test/integration/fixtures/SingletonGraph.d.ts +6 -0
  75. package/dist/test/integration/fixtures/SingletonGraph.d.ts.map +1 -0
  76. package/dist/test/integration/fixtures/SingletonGraph.js +53 -0
  77. package/dist/test/integration/fixtures/SingletonGraph.js.map +1 -0
  78. package/dist/test/integration/fixtures/UniqueNumberGraph.d.ts +8 -0
  79. package/dist/test/integration/fixtures/UniqueNumberGraph.d.ts.map +1 -0
  80. package/dist/test/integration/fixtures/UniqueNumberGraph.js +62 -0
  81. package/dist/test/integration/fixtures/UniqueNumberGraph.js.map +1 -0
  82. package/dist/test/integration/fixtures/injectedValues.d.ts +1 -0
  83. package/dist/test/integration/fixtures/injectedValues.d.ts.map +1 -1
  84. package/dist/test/integration/fixtures/injectedValues.js +1 -0
  85. package/dist/test/integration/fixtures/injectedValues.js.map +1 -1
  86. package/dist/testkit/index.d.ts +6 -5
  87. package/dist/testkit/index.d.ts.map +1 -1
  88. package/dist/testkit/index.js +18 -11
  89. package/dist/testkit/index.js.map +1 -1
  90. package/dist/transformers/{babel-plugin-obsidian-provide → babel-plugin-obsidian}/helpers/index.d.ts +4 -2
  91. package/dist/transformers/babel-plugin-obsidian/helpers/index.d.ts.map +1 -0
  92. package/dist/transformers/{babel-plugin-obsidian-provide → babel-plugin-obsidian}/helpers/index.js +28 -4
  93. package/dist/transformers/babel-plugin-obsidian/helpers/index.js.map +1 -0
  94. package/dist/transformers/{babel-plugin-obsidian-provide → babel-plugin-obsidian}/index.d.ts +0 -0
  95. package/dist/transformers/babel-plugin-obsidian/index.d.ts.map +1 -0
  96. package/dist/transformers/babel-plugin-obsidian/index.js +45 -0
  97. package/dist/transformers/babel-plugin-obsidian/index.js.map +1 -0
  98. package/dist/transformers/babel-plugin-obsidian/unmagler/index.d.ts +10 -0
  99. package/dist/transformers/babel-plugin-obsidian/unmagler/index.d.ts.map +1 -0
  100. package/dist/transformers/babel-plugin-obsidian/unmagler/index.js +14 -0
  101. package/dist/transformers/babel-plugin-obsidian/unmagler/index.js.map +1 -0
  102. package/dist/transformers/babel-plugin-obsidian/unmagler/method.d.ts +4 -0
  103. package/dist/transformers/babel-plugin-obsidian/unmagler/method.d.ts.map +1 -0
  104. package/dist/transformers/babel-plugin-obsidian/unmagler/method.js +26 -0
  105. package/dist/transformers/babel-plugin-obsidian/unmagler/method.js.map +1 -0
  106. package/dist/transformers/babel-plugin-obsidian/unmagler/property.d.ts +4 -0
  107. package/dist/transformers/babel-plugin-obsidian/unmagler/property.d.ts.map +1 -0
  108. package/dist/transformers/babel-plugin-obsidian/unmagler/property.js +14 -0
  109. package/dist/transformers/babel-plugin-obsidian/unmagler/property.js.map +1 -0
  110. package/example/babel.config.js +2 -2
  111. package/example/ios/example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  112. package/jest.config.js +4 -0
  113. package/jest.setup-after-env.js +1 -0
  114. package/jest.setup.ts +1 -0
  115. package/package.json +13 -12
  116. package/src/Obsidian.ts +5 -0
  117. package/src/decorators/Graph.ts +2 -5
  118. package/src/decorators/Singleton.ts +14 -0
  119. package/src/decorators/inject/Inject.ts +17 -0
  120. package/src/decorators/inject/Injectable.ts +8 -0
  121. package/src/decorators/inject/LazyInject.ts +8 -0
  122. package/src/decorators/provides/MemoizeDescriptor.ts +3 -4
  123. package/src/decorators/provides/Provides.ts +0 -2
  124. package/src/graph/ObjectGraph.ts +7 -3
  125. package/src/graph/ProviderBinder.ts +2 -3
  126. package/src/graph/registry/GraphRegistry.ts +40 -32
  127. package/src/index.ts +6 -2
  128. package/src/injectors/class/ClassInjector.ts +49 -0
  129. package/src/injectors/class/ConstructorArgs.ts +20 -0
  130. package/src/injectors/class/InjectionMetadata.ts +57 -0
  131. package/src/injectors/class/LazyInjector.ts +22 -0
  132. package/src/injectors/components/ComponentInjector.tsx +0 -1
  133. package/src/types/index.ts +0 -2
  134. package/testkit/index.ts +13 -14
  135. package/transformers/{babel-plugin-obsidian-provide → babel-plugin-obsidian}/helpers/index.ts +38 -2
  136. package/transformers/babel-plugin-obsidian/index.ts +46 -0
  137. package/transformers/babel-plugin-obsidian/unmagler/index.ts +9 -0
  138. package/transformers/babel-plugin-obsidian/unmagler/method.ts +31 -0
  139. package/transformers/babel-plugin-obsidian/unmagler/property.ts +21 -0
  140. package/dist/src/ScopedValuesRegistry.d.ts +0 -11
  141. package/dist/src/ScopedValuesRegistry.d.ts.map +0 -1
  142. package/dist/src/ScopedValuesRegistry.js +0 -25
  143. package/dist/src/ScopedValuesRegistry.js.map +0 -1
  144. package/dist/src/decorators/injectClass.d.ts +0 -7
  145. package/dist/src/decorators/injectClass.d.ts.map +0 -1
  146. package/dist/src/decorators/injectClass.js +0 -34
  147. package/dist/src/decorators/injectClass.js.map +0 -1
  148. package/dist/transformers/babel-plugin-obsidian-provide/helpers/index.d.ts.map +0 -1
  149. package/dist/transformers/babel-plugin-obsidian-provide/helpers/index.js.map +0 -1
  150. package/dist/transformers/babel-plugin-obsidian-provide/index.d.ts.map +0 -1
  151. package/dist/transformers/babel-plugin-obsidian-provide/index.js +0 -39
  152. package/dist/transformers/babel-plugin-obsidian-provide/index.js.map +0 -1
  153. package/src/ScopedValuesRegistry.ts +0 -26
  154. package/src/decorators/injectClass.ts +0 -28
  155. package/transformers/babel-plugin-obsidian-provide/index.ts +0 -47
@@ -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,7 +1,8 @@
1
- import { ObjectGraph, Constructable } from '../src';
2
- declare class Index {
3
- mockGraphs(graphNameToGraph: Record<string, Constructable<ObjectGraph>>): void;
1
+ import { ObjectGraph } from '../src/graph/ObjectGraph';
2
+ import { Constructable } from '../src/types';
3
+ declare class TestKit {
4
+ mockGraphs(graphNameToGraph: Record<string, Constructable<ObjectGraph> | ((props: any) => ObjectGraph)>): void;
4
5
  }
5
- declare const _default: Index;
6
- export default _default;
6
+ export declare const testKit: TestKit;
7
+ export {};
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../testkit/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,aAAa,EAGd,MAAM,QAAQ,CAAC;AAMhB,cAAM,KAAK;IACT,UAAU,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;CAYxE;;AAED,wBAA2B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../testkit/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAQ7C,cAAM,OAAO;IACJ,UAAU,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,WAAW,CAAC,CAAC;CAY/G;AAED,eAAO,MAAM,OAAO,SAAgB,CAAC"}
@@ -14,15 +14,22 @@ var __extends = (this && this.__extends) || (function () {
14
14
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
15
  };
16
16
  })();
17
+ var __importDefault = (this && this.__importDefault) || function (mod) {
18
+ return (mod && mod.__esModule) ? mod : { "default": mod };
19
+ };
17
20
  Object.defineProperty(exports, "__esModule", { value: true });
18
- var src_1 = require("../src");
21
+ exports.testKit = void 0;
22
+ var ObjectGraph_1 = require("../src/graph/ObjectGraph");
23
+ var GraphMiddleware_1 = require("../src/graph/registry/GraphMiddleware");
24
+ var GraphRegistry_1 = __importDefault(require("../src/graph/registry/GraphRegistry"));
19
25
  beforeEach(function () {
20
- src_1.Obsidian.clearGraphMiddlewares();
26
+ GraphRegistry_1.default.clearGraphMiddlewares();
27
+ GraphRegistry_1.default.reset();
21
28
  });
22
- var Index = /** @class */ (function () {
23
- function Index() {
29
+ var TestKit = /** @class */ (function () {
30
+ function TestKit() {
24
31
  }
25
- Index.prototype.mockGraphs = function (graphNameToGraph) {
32
+ TestKit.prototype.mockGraphs = function (graphNameToGraph) {
26
33
  var graphMiddleware = new /** @class */ (function (_super) {
27
34
  __extends(class_1, _super);
28
35
  function class_1() {
@@ -30,16 +37,16 @@ var Index = /** @class */ (function () {
30
37
  }
31
38
  class_1.prototype.resolve = function (resolveChain, Graph, props) {
32
39
  if (graphNameToGraph[Graph.name]) {
33
- var TheGraph = graphNameToGraph[Graph.name];
34
- return new TheGraph(props);
40
+ var GraphOrGenerator = graphNameToGraph[Graph.name];
41
+ return (0, ObjectGraph_1.isGraph)(GraphOrGenerator) ? new GraphOrGenerator(props) : GraphOrGenerator(props);
35
42
  }
36
43
  return resolveChain.proceed(Graph, props);
37
44
  };
38
45
  return class_1;
39
- }(src_1.GraphMiddleware))();
40
- src_1.Obsidian.addGraphMiddleware(graphMiddleware);
46
+ }(GraphMiddleware_1.GraphMiddleware))();
47
+ GraphRegistry_1.default.addGraphMiddleware(graphMiddleware);
41
48
  };
42
- return Index;
49
+ return TestKit;
43
50
  }());
44
- exports.default = new Index();
51
+ exports.testKit = new TestKit();
45
52
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../testkit/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,8BAKgB;AAEhB,UAAU,CAAC;IACT,cAAQ,CAAC,qBAAqB,EAAE,CAAC;AACnC,CAAC,CAAC,CAAC;AAEH;IAAA;IAaA,CAAC;IAZC,0BAAU,GAAV,UAAW,gBAA4D;QACrE,IAAM,eAAe,GAAG;YAAkB,2BAAe;YAA7B;;YAQ5B,CAAC;YAPC,yBAAO,GAAP,UAAe,YAA+B,EAAE,KAAiC,EAAE,KAAa;gBAC9F,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;oBAChC,IAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC9C,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;iBAC5B;gBACD,OAAO,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC5C,CAAC;YACH,cAAC;QAAD,CAAC,AAR2B,CAAc,qBAAe,IAQtD,CAAC;QACJ,cAAQ,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;IAC/C,CAAC;IACH,YAAC;AAAD,CAAC,AAbD,IAaC;AAED,kBAAe,IAAI,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../testkit/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA,wDAAgE;AAChE,yEAAwE;AAExE,sFAAgE;AAEhE,UAAU,CAAC;IACT,uBAAa,CAAC,qBAAqB,EAAE,CAAC;IACtC,uBAAa,CAAC,KAAK,EAAE,CAAC;AACxB,CAAC,CAAC,CAAC;AAEH;IAAA;IAaA,CAAC;IAZQ,4BAAU,GAAjB,UAAkB,gBAA4F;QAC5G,IAAM,eAAe,GAAG;YAAkB,2BAAe;YAA7B;;YAQ5B,CAAC;YAPC,yBAAO,GAAP,UAAe,YAA+B,EAAE,KAAiC,EAAE,KAAa;gBAC9F,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;oBAChC,IAAM,gBAAgB,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACtD,OAAO,IAAA,qBAAO,EAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;iBAC1F;gBACD,OAAO,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC5C,CAAC;YACH,cAAC;QAAD,CAAC,AAR2B,CAAc,iCAAe,IAQtD,CAAC;QACJ,uBAAa,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACpD,CAAC;IACH,cAAC;AAAD,CAAC,AAbD,IAaC;AAEY,QAAA,OAAO,GAAG,IAAI,OAAO,EAAE,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,7 +1,13 @@
1
1
  {
2
2
  "name": "react-obsidian",
3
- "version": "0.0.12",
3
+ "version": "0.0.16",
4
4
  "description": "Dependency injection framework for React and React Native applications",
5
+ "scripts": {
6
+ "prepack": "npm run lint && tsc --project tsconfig.prod.json",
7
+ "lint": "npx eslint src transformers test --ignore-pattern '*.d.ts' --ext .ts,.tsx,.js",
8
+ "pretest": "tsc",
9
+ "test": "npx jest"
10
+ },
5
11
  "main": "src/index.ts",
6
12
  "directories": {
7
13
  "test": "test"
@@ -11,14 +17,14 @@
11
17
  "reflect-metadata": "~0.1.13"
12
18
  },
13
19
  "peerDependencies": {
14
- "react": "*"
20
+ "react": "*",
21
+ "lodash": "*"
15
22
  },
16
23
  "devDependencies": {
17
24
  "@babel/core": "7.16.x",
18
- "@babel/generator": "7.16.x",
19
- "@babel/plugin-proposal-class-properties": "7.16.x",
20
25
  "@babel/plugin-proposal-decorators": "7.16.x",
21
26
  "@babel/preset-env": "7.16.x",
27
+ "babel-plugin-parameter-decorator": "1.x.x",
22
28
  "@babel/preset-react": "7.16.x",
23
29
  "@babel/preset-typescript": "7.16.x",
24
30
  "@babel/types": "7.16.x",
@@ -40,17 +46,12 @@
40
46
  "eslint-plugin-jsx-a11y": "^6.4.1",
41
47
  "eslint-plugin-react": "^7.26.1",
42
48
  "eslint-plugin-react-hooks": "^4.2.0",
43
- "jest": "26.x.x",
49
+ "jest": "27.x.x",
44
50
  "lodash": "^4.17.21",
45
51
  "react": "17.0.2",
46
52
  "react-dom": "17.0.2",
47
- "typescript": "^4.4.4"
48
- },
49
- "scripts": {
50
- "prepack": "npm run lint && tsc --project tsconfig.prod.json",
51
- "lint": "npx eslint src transformers test --ignore-pattern '*.d.ts' --ext .ts,.tsx,.js",
52
- "pretest": "tsc",
53
- "test": "npx jest"
53
+ "typescript": "^4.5.4",
54
+ "setimmediate": "^1.0.5"
54
55
  },
55
56
  "repository": {
56
57
  "type": "git",
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
  }
@@ -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
+ }