react-obsidian 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/.buildkite/pipeline.yml +0 -0
  2. package/.eslintignore +1 -0
  3. package/.eslintrc.json +93 -0
  4. package/.nvmrc +1 -0
  5. package/LICENSE +7 -0
  6. package/README.md +160 -0
  7. package/babel.config.js +12 -0
  8. package/dist/src/GraphProperties.d.ts +6 -0
  9. package/dist/src/GraphProperties.d.ts.map +1 -0
  10. package/dist/src/GraphProperties.js +16 -0
  11. package/dist/src/GraphProperties.js.map +1 -0
  12. package/dist/src/Obsidian.d.ts +9 -0
  13. package/dist/src/Obsidian.d.ts.map +1 -0
  14. package/dist/src/Obsidian.js +22 -0
  15. package/dist/src/Obsidian.js.map +1 -0
  16. package/dist/src/ProvidedPropertiesStore.d.ts +10 -0
  17. package/dist/src/ProvidedPropertiesStore.d.ts.map +1 -0
  18. package/dist/src/ProvidedPropertiesStore.js +27 -0
  19. package/dist/src/ProvidedPropertiesStore.js.map +1 -0
  20. package/dist/src/Provides.d.ts +9 -0
  21. package/dist/src/Provides.d.ts.map +1 -0
  22. package/dist/src/Provides.js +15 -0
  23. package/dist/src/Provides.js.map +1 -0
  24. package/dist/src/ReferenceCounter.d.ts +8 -0
  25. package/dist/src/ReferenceCounter.d.ts.map +1 -0
  26. package/dist/src/ReferenceCounter.js +25 -0
  27. package/dist/src/ReferenceCounter.js.map +1 -0
  28. package/dist/src/ScopedValuesRegistry.d.ts +11 -0
  29. package/dist/src/ScopedValuesRegistry.d.ts.map +1 -0
  30. package/dist/src/ScopedValuesRegistry.js +25 -0
  31. package/dist/src/ScopedValuesRegistry.js.map +1 -0
  32. package/dist/src/decorators/Graph.d.ts +10 -0
  33. package/dist/src/decorators/Graph.d.ts.map +1 -0
  34. package/dist/src/decorators/Graph.js +17 -0
  35. package/dist/src/decorators/Graph.js.map +1 -0
  36. package/dist/src/decorators/injectClass.d.ts +7 -0
  37. package/dist/src/decorators/injectClass.d.ts.map +1 -0
  38. package/dist/src/decorators/injectClass.js +34 -0
  39. package/dist/src/decorators/injectClass.js.map +1 -0
  40. package/dist/src/graph/Graph.d.ts +6 -0
  41. package/dist/src/graph/Graph.d.ts.map +1 -0
  42. package/dist/src/graph/Graph.js +3 -0
  43. package/dist/src/graph/Graph.js.map +1 -0
  44. package/dist/src/graph/ObjectGraph.d.ts +11 -0
  45. package/dist/src/graph/ObjectGraph.d.ts.map +1 -0
  46. package/dist/src/graph/ObjectGraph.js +26 -0
  47. package/dist/src/graph/ObjectGraph.js.map +1 -0
  48. package/dist/src/graph/PropertyRetriever.d.ts +8 -0
  49. package/dist/src/graph/PropertyRetriever.d.ts.map +1 -0
  50. package/dist/src/graph/PropertyRetriever.js +40 -0
  51. package/dist/src/graph/PropertyRetriever.js.map +1 -0
  52. package/dist/src/graph/PropertyRetrieverDelegate.d.ts +5 -0
  53. package/dist/src/graph/PropertyRetrieverDelegate.d.ts.map +1 -0
  54. package/dist/src/graph/PropertyRetrieverDelegate.js +3 -0
  55. package/dist/src/graph/PropertyRetrieverDelegate.js.map +1 -0
  56. package/dist/src/graph/registry/DefaultGraphResolver.d.ts +7 -0
  57. package/dist/src/graph/registry/DefaultGraphResolver.d.ts.map +1 -0
  58. package/dist/src/graph/registry/DefaultGraphResolver.js +30 -0
  59. package/dist/src/graph/registry/DefaultGraphResolver.js.map +1 -0
  60. package/dist/src/graph/registry/GraphMiddleware.d.ts +12 -0
  61. package/dist/src/graph/registry/GraphMiddleware.d.ts.map +1 -0
  62. package/dist/src/graph/registry/GraphMiddleware.js +25 -0
  63. package/dist/src/graph/registry/GraphMiddleware.js.map +1 -0
  64. package/dist/src/graph/registry/GraphMiddlewareChain.d.ts +12 -0
  65. package/dist/src/graph/registry/GraphMiddlewareChain.d.ts.map +1 -0
  66. package/dist/src/graph/registry/GraphMiddlewareChain.js +30 -0
  67. package/dist/src/graph/registry/GraphMiddlewareChain.js.map +1 -0
  68. package/dist/src/graph/registry/GraphRegistry.d.ts +22 -0
  69. package/dist/src/graph/registry/GraphRegistry.d.ts.map +1 -0
  70. package/dist/src/graph/registry/GraphRegistry.js +65 -0
  71. package/dist/src/graph/registry/GraphRegistry.js.map +1 -0
  72. package/dist/src/index.d.ts +17 -0
  73. package/dist/src/index.d.ts.map +1 -0
  74. package/dist/src/index.js +24 -0
  75. package/dist/src/index.js.map +1 -0
  76. package/dist/src/injectHook.d.ts +5 -0
  77. package/dist/src/injectHook.d.ts.map +1 -0
  78. package/dist/src/injectHook.js +30 -0
  79. package/dist/src/injectHook.js.map +1 -0
  80. package/dist/src/injectors/components/ComponentInjector.d.ts +9 -0
  81. package/dist/src/injectors/components/ComponentInjector.d.ts.map +1 -0
  82. package/dist/src/injectors/components/ComponentInjector.js +48 -0
  83. package/dist/src/injectors/components/ComponentInjector.js.map +1 -0
  84. package/dist/src/injectors/components/PropsInjector.d.ts +7 -0
  85. package/dist/src/injectors/components/PropsInjector.d.ts.map +1 -0
  86. package/dist/src/injectors/components/PropsInjector.js +19 -0
  87. package/dist/src/injectors/components/PropsInjector.js.map +1 -0
  88. package/dist/src/injectors/components/useGraph.d.ts +5 -0
  89. package/dist/src/injectors/components/useGraph.d.ts.map +1 -0
  90. package/dist/src/injectors/components/useGraph.js +17 -0
  91. package/dist/src/injectors/components/useGraph.js.map +1 -0
  92. package/dist/test/integration/fixtures/InjectedComponent.d.ts +8 -0
  93. package/dist/test/integration/fixtures/InjectedComponent.d.ts.map +1 -0
  94. package/dist/test/integration/fixtures/InjectedComponent.js +14 -0
  95. package/dist/test/integration/fixtures/InjectedComponent.js.map +1 -0
  96. package/dist/test/integration/fixtures/MainGraph.d.ts +6 -0
  97. package/dist/test/integration/fixtures/MainGraph.d.ts.map +1 -0
  98. package/dist/test/integration/fixtures/MainGraph.js +53 -0
  99. package/dist/test/integration/fixtures/MainGraph.js.map +1 -0
  100. package/dist/test/integration/fixtures/StringProvider.d.ts +5 -0
  101. package/dist/test/integration/fixtures/StringProvider.d.ts.map +1 -0
  102. package/dist/test/integration/fixtures/StringProvider.js +15 -0
  103. package/dist/test/integration/fixtures/StringProvider.js.map +1 -0
  104. package/dist/test/integration/fixtures/Subgraph.d.ts +8 -0
  105. package/dist/test/integration/fixtures/Subgraph.d.ts.map +1 -0
  106. package/dist/test/integration/fixtures/Subgraph.js +71 -0
  107. package/dist/test/integration/fixtures/Subgraph.js.map +1 -0
  108. package/dist/test/integration/fixtures/ThrowingMainGraph.d.ts +5 -0
  109. package/dist/test/integration/fixtures/ThrowingMainGraph.d.ts.map +1 -0
  110. package/dist/test/integration/fixtures/ThrowingMainGraph.js +52 -0
  111. package/dist/test/integration/fixtures/ThrowingMainGraph.js.map +1 -0
  112. package/dist/test/integration/fixtures/injectedValues.d.ts +6 -0
  113. package/dist/test/integration/fixtures/injectedValues.d.ts.map +1 -0
  114. package/dist/test/integration/fixtures/injectedValues.js +7 -0
  115. package/dist/test/integration/fixtures/injectedValues.js.map +1 -0
  116. package/dist/testkit/index.d.ts +8 -0
  117. package/dist/testkit/index.d.ts.map +1 -0
  118. package/dist/testkit/index.js +46 -0
  119. package/dist/testkit/index.js.map +1 -0
  120. package/dist/transformers/babel-plugin-obsidian-provide/helpers/index.d.ts +9 -0
  121. package/dist/transformers/babel-plugin-obsidian-provide/helpers/index.d.ts.map +1 -0
  122. package/dist/transformers/babel-plugin-obsidian-provide/helpers/index.js +54 -0
  123. package/dist/transformers/babel-plugin-obsidian-provide/helpers/index.js.map +1 -0
  124. package/dist/transformers/babel-plugin-obsidian-provide/index.d.ts +3 -0
  125. package/dist/transformers/babel-plugin-obsidian-provide/index.d.ts.map +1 -0
  126. package/dist/transformers/babel-plugin-obsidian-provide/index.js +35 -0
  127. package/dist/transformers/babel-plugin-obsidian-provide/index.js.map +1 -0
  128. package/example/.buckconfig +6 -0
  129. package/example/.editorconfig +3 -0
  130. package/example/.eslintrc.js +4 -0
  131. package/example/.flowconfig +65 -0
  132. package/example/.gitattributes +3 -0
  133. package/example/.prettierrc.js +7 -0
  134. package/example/.watchmanconfig +1 -0
  135. package/example/App.tsx +31 -0
  136. package/example/MyInjectedComponent.tsx +28 -0
  137. package/example/__tests__/App-test.js +14 -0
  138. package/example/android/app/BUCK +55 -0
  139. package/example/android/app/build.gradle +227 -0
  140. package/example/android/app/build_defs.bzl +19 -0
  141. package/example/android/app/debug.keystore +0 -0
  142. package/example/android/app/proguard-rules.pro +10 -0
  143. package/example/android/app/src/debug/AndroidManifest.xml +13 -0
  144. package/example/android/app/src/debug/java/com/example/ReactNativeFlipper.java +72 -0
  145. package/example/android/app/src/main/AndroidManifest.xml +25 -0
  146. package/example/android/app/src/main/java/com/example/MainActivity.java +15 -0
  147. package/example/android/app/src/main/java/com/example/MainApplication.java +80 -0
  148. package/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  149. package/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  150. package/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  151. package/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  152. package/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  153. package/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  154. package/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  155. package/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  156. package/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  157. package/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  158. package/example/android/app/src/main/res/values/strings.xml +3 -0
  159. package/example/android/app/src/main/res/values/styles.xml +8 -0
  160. package/example/android/build.gradle +38 -0
  161. package/example/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  162. package/example/android/gradle/wrapper/gradle-wrapper.properties +5 -0
  163. package/example/android/gradle.properties +28 -0
  164. package/example/android/gradlew +185 -0
  165. package/example/android/gradlew.bat +89 -0
  166. package/example/android/settings.gradle +3 -0
  167. package/example/app.json +4 -0
  168. package/example/babel.config.js +8 -0
  169. package/example/index.js +9 -0
  170. package/example/ios/Podfile +30 -0
  171. package/example/ios/Podfile.lock +526 -0
  172. package/example/ios/example/AppDelegate.h +8 -0
  173. package/example/ios/example/AppDelegate.m +62 -0
  174. package/example/ios/example/Images.xcassets/AppIcon.appiconset/Contents.json +38 -0
  175. package/example/ios/example/Images.xcassets/Contents.json +6 -0
  176. package/example/ios/example/Info.plist +55 -0
  177. package/example/ios/example/LaunchScreen.storyboard +47 -0
  178. package/example/ios/example/main.m +9 -0
  179. package/example/ios/example.xcodeproj/project.pbxproj +689 -0
  180. package/example/ios/example.xcodeproj/xcshareddata/xcschemes/example.xcscheme +88 -0
  181. package/example/ios/example.xcworkspace/contents.xcworkspacedata +10 -0
  182. package/example/ios/exampleTests/Info.plist +24 -0
  183. package/example/ios/exampleTests/exampleTests.m +65 -0
  184. package/example/metro.config.js +44 -0
  185. package/example/package.json +35 -0
  186. package/example/tsconfig.json +45 -0
  187. package/jest.config.js +12 -0
  188. package/package.json +79 -0
  189. package/src/@types/obsidian.d.ts +19 -0
  190. package/src/GraphProperties.ts +11 -0
  191. package/src/Obsidian.ts +18 -0
  192. package/src/ProvidedPropertiesStore.ts +22 -0
  193. package/src/Provides.ts +16 -0
  194. package/src/ReferenceCounter.ts +20 -0
  195. package/src/ScopedValuesRegistry.ts +26 -0
  196. package/src/decorators/Graph.ts +20 -0
  197. package/src/decorators/injectClass.ts +28 -0
  198. package/src/graph/Graph.ts +7 -0
  199. package/src/graph/ObjectGraph.ts +19 -0
  200. package/src/graph/PropertyRetriever.ts +36 -0
  201. package/src/graph/PropertyRetrieverDelegate.ts +5 -0
  202. package/src/graph/registry/DefaultGraphResolver.ts +9 -0
  203. package/src/graph/registry/GraphMiddleware.ts +24 -0
  204. package/src/graph/registry/GraphMiddlewareChain.ts +31 -0
  205. package/src/graph/registry/GraphRegistry.ts +70 -0
  206. package/src/index.ts +23 -0
  207. package/src/injectHook.ts +26 -0
  208. package/src/injectors/components/ComponentInjector.tsx +29 -0
  209. package/src/injectors/components/PropsInjector.ts +14 -0
  210. package/src/injectors/components/useGraph.ts +14 -0
  211. package/testkit/index.ts +25 -0
  212. package/transformers/babel-plugin-obsidian-provide/helpers/index.ts +59 -0
  213. package/transformers/babel-plugin-obsidian-provide/index.ts +44 -0
  214. package/tsconfig.base.json +43 -0
  215. package/tsconfig.json +3 -0
  216. package/tsconfig.prod.json +7 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Graph.js","sourceRoot":"","sources":["../../../src/graph/Graph.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import { Scope } from '@Obsidian';
2
+ import Graph from './Graph';
3
+ export default abstract class ObjectGraph<T = unknown> implements Graph {
4
+ protected props?: T | undefined;
5
+ scope: Scope;
6
+ private propertyRetriever;
7
+ get name(): string;
8
+ constructor(props?: T | undefined);
9
+ retrieve<Dependency>(property: string, receiver?: unknown): Dependency | undefined;
10
+ }
11
+ //# sourceMappingURL=ObjectGraph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectGraph.d.ts","sourceRoot":"","sources":["../../../src/graph/ObjectGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,MAAM,SAAS,CAAC;AAG5B,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,WAAW,CAAC,CAAC,GAAG,OAAO,CAAE,YAAW,KAAK;IASzD,SAAS,CAAC,KAAK,CAAC;IAPrB,KAAK,EAAG,KAAK,CAAC;IACrB,OAAO,CAAC,iBAAiB,CAA+B;IACxD,IAAI,IAAI,IAAI,MAAM,CAEjB;gBAGqB,KAAK,CAAC,eAAG;IAE/B,QAAQ,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS;CAGnF"}
@@ -0,0 +1,26 @@
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 PropertyRetriever_1 = __importDefault(require("./PropertyRetriever"));
7
+ var ObjectGraph = /** @class */ (function () {
8
+ // eslint-disable-next-line no-useless-constructor, no-unused-vars, no-empty-function
9
+ function ObjectGraph(props) {
10
+ this.props = props;
11
+ this.propertyRetriever = new PropertyRetriever_1.default(this);
12
+ }
13
+ Object.defineProperty(ObjectGraph.prototype, "name", {
14
+ get: function () {
15
+ return this.constructor.name;
16
+ },
17
+ enumerable: false,
18
+ configurable: true
19
+ });
20
+ ObjectGraph.prototype.retrieve = function (property, receiver) {
21
+ return this.propertyRetriever.retrieve(property, receiver);
22
+ };
23
+ return ObjectGraph;
24
+ }());
25
+ exports.default = ObjectGraph;
26
+ //# sourceMappingURL=ObjectGraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectGraph.js","sourceRoot":"","sources":["../../../src/graph/ObjectGraph.ts"],"names":[],"mappings":";;;;;AAEA,0EAAoD;AAEpD;IAQE,qFAAqF;IACrF,qBAAsB,KAAS;QAAT,UAAK,GAAL,KAAK,CAAI;QANvB,sBAAiB,GAAG,IAAI,2BAAiB,CAAC,IAAI,CAAC,CAAC;IAMtB,CAAC;IALnC,sBAAI,6BAAI;aAAR;YACE,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAC/B,CAAC;;;OAAA;IAKD,8BAAQ,GAAR,UAAqB,QAAgB,EAAE,QAAkB;QACvD,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAA2B,CAAC;IACvF,CAAC;IACH,kBAAC;AAAD,CAAC,AAdD,IAcC"}
@@ -0,0 +1,8 @@
1
+ import Graph from './Graph';
2
+ export default class PropertyRetriever {
3
+ private graph;
4
+ constructor(graph: Graph);
5
+ retrieve(property: string, receiver?: unknown): unknown | undefined;
6
+ private getFromSubgraphs;
7
+ }
8
+ //# sourceMappingURL=PropertyRetriever.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PropertyRetriever.d.ts","sourceRoot":"","sources":["../../../src/graph/PropertyRetriever.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,SAAS,CAAC;AAG5B,MAAM,CAAC,OAAO,OAAO,iBAAiB;IACxB,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,KAAK;IAEhC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS;IAsBnE,OAAO,CAAC,gBAAgB;CAMzB"}
@@ -0,0 +1,40 @@
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 GraphRegistry_1 = __importDefault(require("./registry/GraphRegistry"));
7
+ var ProvidedPropertiesStore_1 = __importDefault(require("../ProvidedPropertiesStore"));
8
+ var PropertyRetriever = /** @class */ (function () {
9
+ function PropertyRetriever(graph) {
10
+ this.graph = graph;
11
+ }
12
+ PropertyRetriever.prototype.retrieve = function (property, receiver) {
13
+ var mangledPropertyKey = ProvidedPropertiesStore_1.default.getMangledProperty(this.graph, property);
14
+ if (mangledPropertyKey && mangledPropertyKey in this.graph) {
15
+ var proxiedGraph = new Proxy(this.graph, {
16
+ get: function (graph, dependencyName) {
17
+ return graph.retrieve(dependencyName);
18
+ },
19
+ });
20
+ return Reflect.get(this.graph, mangledPropertyKey, receiver)(proxiedGraph);
21
+ }
22
+ var results = this.getFromSubgraphs(property, receiver);
23
+ if (results.length === 1)
24
+ return results[0];
25
+ if (results.length > 1) {
26
+ throw new Error("Multiple subgraphs provide the property ".concat(property, ".")
27
+ + 'You should probably provide a unique name to one of the providers: @Provide({name: \'uniqueName\')})');
28
+ }
29
+ return undefined;
30
+ };
31
+ PropertyRetriever.prototype.getFromSubgraphs = function (property, receiver) {
32
+ var subgraphs = GraphRegistry_1.default.getSubgraphs(this.graph);
33
+ return subgraphs
34
+ .map(function (subgraph) { return subgraph.retrieve(property, receiver); })
35
+ .filter(function (result) { return result !== undefined; });
36
+ };
37
+ return PropertyRetriever;
38
+ }());
39
+ exports.default = PropertyRetriever;
40
+ //# sourceMappingURL=PropertyRetriever.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PropertyRetriever.js","sourceRoot":"","sources":["../../../src/graph/PropertyRetriever.ts"],"names":[],"mappings":";;;;;AAAA,2EAAqD;AAErD,uFAAiE;AAEjE;IACE,2BAAoB,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;IAAI,CAAC;IAErC,oCAAQ,GAAR,UAAS,QAAgB,EAAE,QAAkB;QAC3C,IAAM,kBAAkB,GAAG,iCAAuB,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC5F,IAAI,kBAAkB,IAAI,kBAAkB,IAAI,IAAI,CAAC,KAAK,EAAE;YAC1D,IAAM,YAAY,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE;gBACzC,GAAG,EAAH,UAAI,KAAY,EAAE,cAAsB;oBACtC,OAAO,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;gBACxC,CAAC;aACF,CAAC,CAAC;YACH,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,EAAE,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC;SAC5E;QAED,IAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC1D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,MAAM,IAAI,KAAK,CACb,kDAA2C,QAAQ,MAAG;kBACpD,sGAAsG,CACzG,CAAC;SACH;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,4CAAgB,GAAxB,UAAyB,QAAgB,EAAE,QAAiB;QAC1D,IAAM,SAAS,GAAG,uBAAa,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzD,OAAO,SAAS;aACb,GAAG,CAAC,UAAC,QAAe,IAAK,OAAA,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAArC,CAAqC,CAAC;aAC/D,MAAM,CAAC,UAAC,MAAM,IAAK,OAAA,MAAM,KAAK,SAAS,EAApB,CAAoB,CAAC,CAAC;IAC9C,CAAC;IACH,wBAAC;AAAD,CAAC,AA/BD,IA+BC"}
@@ -0,0 +1,5 @@
1
+ interface PropertyRetrieverDelegate {
2
+ retrieve: (property: string, receiver?: unknown) => unknown | undefined;
3
+ }
4
+ export default PropertyRetrieverDelegate;
5
+ //# sourceMappingURL=PropertyRetrieverDelegate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PropertyRetrieverDelegate.d.ts","sourceRoot":"","sources":["../../../src/graph/PropertyRetrieverDelegate.ts"],"names":[],"mappings":"AAAA,UAAU,yBAAyB;IACjC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,KAAK,OAAO,GAAG,SAAS,CAAC;CACzE;AAED,eAAe,yBAAyB,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=PropertyRetrieverDelegate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PropertyRetrieverDelegate.js","sourceRoot":"","sources":["../../../src/graph/PropertyRetrieverDelegate.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import { Constructable } from '@Obsidian';
2
+ import Graph from '../Graph';
3
+ import { GraphMiddleware, ResolveChain } from './GraphMiddleware';
4
+ export default class DefaultGraphMiddleware extends GraphMiddleware {
5
+ resolve<T extends Graph, Props>(_resolveChain: ResolveChain, Graph: Constructable<T>, props?: Props): T;
6
+ }
7
+ //# sourceMappingURL=DefaultGraphResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultGraphResolver.d.ts","sourceRoot":"","sources":["../../../../src/graph/registry/DefaultGraphResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,MAAM,UAAU,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAElE,MAAM,CAAC,OAAO,OAAO,sBAAuB,SAAQ,eAAe;IACjE,OAAO,CAAC,CAAC,SAAS,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,CAAC;CAGxG"}
@@ -0,0 +1,30 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ var GraphMiddleware_1 = require("./GraphMiddleware");
19
+ var DefaultGraphMiddleware = /** @class */ (function (_super) {
20
+ __extends(DefaultGraphMiddleware, _super);
21
+ function DefaultGraphMiddleware() {
22
+ return _super !== null && _super.apply(this, arguments) || this;
23
+ }
24
+ DefaultGraphMiddleware.prototype.resolve = function (_resolveChain, Graph, props) {
25
+ return new Graph(props);
26
+ };
27
+ return DefaultGraphMiddleware;
28
+ }(GraphMiddleware_1.GraphMiddleware));
29
+ exports.default = DefaultGraphMiddleware;
30
+ //# sourceMappingURL=DefaultGraphResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultGraphResolver.js","sourceRoot":"","sources":["../../../../src/graph/registry/DefaultGraphResolver.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,qDAAkE;AAElE;IAAoD,0CAAe;IAAnE;;IAIA,CAAC;IAHC,wCAAO,GAAP,UAAgC,aAA2B,EAAE,KAAuB,EAAE,KAAa;QACjG,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IACH,6BAAC;AAAD,CAAC,AAJD,CAAoD,iCAAe,GAIlE"}
@@ -0,0 +1,12 @@
1
+ import { Constructable } from '@Obsidian';
2
+ import Graph from '../Graph';
3
+ export declare abstract class GraphMiddleware {
4
+ private next;
5
+ setNext(next: GraphMiddleware): void;
6
+ get resolveChain(): ResolveChain;
7
+ abstract resolve<T extends Graph, Props>(resolveChain: ResolveChain, Graph: Constructable<T>, props?: Props): T;
8
+ }
9
+ export interface ResolveChain {
10
+ proceed<T extends Graph, Props>(Graph: Constructable<T>, props?: Props): T;
11
+ }
12
+ //# sourceMappingURL=GraphMiddleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphMiddleware.d.ts","sourceRoot":"","sources":["../../../../src/graph/registry/GraphMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,MAAM,UAAU,CAAC;AAE7B,8BAAsB,eAAe;IACnC,OAAO,CAAC,IAAI,CAAmB;IAExB,OAAO,CAAC,IAAI,EAAE,eAAe;IAIpC,IAAW,YAAY,IAAI,YAAY,CAMtC;IAED,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,CAAC;CAChH;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,CAAC,SAAS,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;CAC5E"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GraphMiddleware = void 0;
4
+ var GraphMiddleware = /** @class */ (function () {
5
+ function GraphMiddleware() {
6
+ }
7
+ GraphMiddleware.prototype.setNext = function (next) {
8
+ this.next = next;
9
+ };
10
+ Object.defineProperty(GraphMiddleware.prototype, "resolveChain", {
11
+ get: function () {
12
+ var _this = this;
13
+ return {
14
+ proceed: function (Graph, props) {
15
+ return _this.next.resolve(_this.next.resolveChain, Graph, props);
16
+ },
17
+ };
18
+ },
19
+ enumerable: false,
20
+ configurable: true
21
+ });
22
+ return GraphMiddleware;
23
+ }());
24
+ exports.GraphMiddleware = GraphMiddleware;
25
+ //# sourceMappingURL=GraphMiddleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphMiddleware.js","sourceRoot":"","sources":["../../../../src/graph/registry/GraphMiddleware.ts"],"names":[],"mappings":";;;AAGA;IAAA;IAgBA,CAAC;IAbQ,iCAAO,GAAd,UAAe,IAAqB;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,sBAAW,yCAAY;aAAvB;YAAA,iBAMC;YALC,OAAO;gBACL,OAAO,EAAE,UAAyB,KAAuB,EAAE,KAAa;oBACtE,OAAO,KAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;gBACjE,CAAC;aACF,CAAC;QACJ,CAAC;;;OAAA;IAGH,sBAAC;AAAD,CAAC,AAhBD,IAgBC;AAhBqB,0CAAe"}
@@ -0,0 +1,12 @@
1
+ import { Constructable } from '@Obsidian';
2
+ import Graph from '../Graph';
3
+ import { GraphMiddleware } from './GraphMiddleware';
4
+ export default class GraphMiddlewareChain {
5
+ private middlewares;
6
+ constructor(defaultMiddleware?: GraphMiddleware);
7
+ resolve<T extends Graph>(Graph: Constructable<T>, props?: any): T;
8
+ add(middleware: GraphMiddleware): void;
9
+ private updateResolveChain;
10
+ clear(): void;
11
+ }
12
+ //# sourceMappingURL=GraphMiddlewareChain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphMiddlewareChain.d.ts","sourceRoot":"","sources":["../../../../src/graph/registry/GraphMiddlewareChain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,MAAM,UAAU,CAAC;AAE7B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,CAAC,OAAO,OAAO,oBAAoB;IACvC,OAAO,CAAC,WAAW,CAAoB;gBAE3B,iBAAiB,GAAE,eAA8C;IAI7E,OAAO,CAAC,CAAC,SAAS,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC;IAIjE,GAAG,CAAC,UAAU,EAAE,eAAe;IAK/B,OAAO,CAAC,kBAAkB;IAM1B,KAAK;CAGN"}
@@ -0,0 +1,30 @@
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 DefaultGraphResolver_1 = __importDefault(require("./DefaultGraphResolver"));
7
+ var GraphMiddlewareChain = /** @class */ (function () {
8
+ function GraphMiddlewareChain(defaultMiddleware) {
9
+ if (defaultMiddleware === void 0) { defaultMiddleware = new DefaultGraphResolver_1.default(); }
10
+ this.middlewares = [defaultMiddleware];
11
+ }
12
+ GraphMiddlewareChain.prototype.resolve = function (Graph, props) {
13
+ return this.middlewares[0].resolve(this.middlewares[0].resolveChain, Graph, props);
14
+ };
15
+ GraphMiddlewareChain.prototype.add = function (middleware) {
16
+ this.middlewares.unshift(middleware);
17
+ this.updateResolveChain();
18
+ };
19
+ GraphMiddlewareChain.prototype.updateResolveChain = function () {
20
+ if (this.middlewares.length > 1) {
21
+ this.middlewares[0].setNext(this.middlewares[1]);
22
+ }
23
+ };
24
+ GraphMiddlewareChain.prototype.clear = function () {
25
+ this.middlewares = [new DefaultGraphResolver_1.default()];
26
+ };
27
+ return GraphMiddlewareChain;
28
+ }());
29
+ exports.default = GraphMiddlewareChain;
30
+ //# sourceMappingURL=GraphMiddlewareChain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphMiddlewareChain.js","sourceRoot":"","sources":["../../../../src/graph/registry/GraphMiddlewareChain.ts"],"names":[],"mappings":";;;;;AAEA,gFAA4D;AAG5D;IAGE,8BAAY,iBAAiE;QAAjE,kCAAA,EAAA,wBAAyC,8BAAsB,EAAE;QAC3E,IAAI,CAAC,WAAW,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACzC,CAAC;IAED,sCAAO,GAAP,UAAyB,KAAuB,EAAE,KAAW;QAC3D,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACrF,CAAC;IAED,kCAAG,GAAH,UAAI,UAA2B;QAC7B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACrC,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAEO,iDAAkB,GAA1B;QACE,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/B,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;SAClD;IACH,CAAC;IAED,oCAAK,GAAL;QACE,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,8BAAsB,EAAE,CAAC,CAAC;IACpD,CAAC;IACH,2BAAC;AAAD,CAAC,AAzBD,IAyBC"}
@@ -0,0 +1,22 @@
1
+ import { Constructable, Scope } from '@Obsidian';
2
+ import Graph from '../Graph';
3
+ import { GraphMiddleware } from './GraphMiddleware';
4
+ declare class GraphRegistry {
5
+ private readonly scopedGraphs;
6
+ private readonly constructorToInstance;
7
+ private readonly instanceToConstructor;
8
+ private readonly graphToSubgraphs;
9
+ private graphMiddlewares;
10
+ register(constructor: Constructable<Graph>, scope?: Scope | undefined, subgraphs?: Constructable<Graph>[]): void;
11
+ has(Graph: Constructable<Graph>): boolean;
12
+ get<T extends Graph>(Graph: Constructable<T>): T;
13
+ set(Graph: Constructable<Graph>, graph: Graph): void;
14
+ getSubgraphs(graph: Graph): Graph[];
15
+ resolve<T extends Graph>(Graph: Constructable<T>, props?: any): T;
16
+ clear(graph: Graph): void;
17
+ addGraphMiddleware(middleware: GraphMiddleware): void;
18
+ clearGraphMiddlewares(): void;
19
+ }
20
+ declare const _default: GraphRegistry;
21
+ export default _default;
22
+ //# sourceMappingURL=GraphRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphRegistry.d.ts","sourceRoot":"","sources":["../../../../src/graph/registry/GraphRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,MAAM,UAAU,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,cAAM,aAAa;IACjB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA2C;IACxE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA0C;IAChF,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA0C;IAChF,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA8D;IAC/F,OAAO,CAAC,gBAAgB,CAA8B;IAEtD,QAAQ,CACN,WAAW,EAAE,aAAa,CAAC,KAAK,CAAC,EACjC,KAAK,GAAE,KAAK,GAAG,SAAqB,EACpC,SAAS,GAAE,aAAa,CAAC,KAAK,CAAC,EAAO;IAMxC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC;IAI/B,GAAG,CAAC,CAAC,SAAS,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC;IAIhD,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK;IAK7C,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE;IAMnC,OAAO,CAAC,CAAC,SAAS,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC;IAcjE,KAAK,CAAC,KAAK,EAAE,KAAK;IAMlB,kBAAkB,CAAC,UAAU,EAAE,eAAe;IAI9C,qBAAqB;CAGtB;;AAED,wBAAmC"}
@@ -0,0 +1,65 @@
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 GraphMiddlewareChain_1 = __importDefault(require("./GraphMiddlewareChain"));
7
+ var GraphRegistry = /** @class */ (function () {
8
+ function GraphRegistry() {
9
+ this.scopedGraphs = {};
10
+ this.constructorToInstance = new Map();
11
+ this.instanceToConstructor = new Map();
12
+ this.graphToSubgraphs = new Map();
13
+ this.graphMiddlewares = new GraphMiddlewareChain_1.default();
14
+ }
15
+ GraphRegistry.prototype.register = function (constructor, scope, subgraphs) {
16
+ if (scope === void 0) { scope = undefined; }
17
+ if (subgraphs === void 0) { subgraphs = []; }
18
+ if (scope)
19
+ this.scopedGraphs[scope] = constructor;
20
+ this.graphToSubgraphs.set(constructor, new Set(subgraphs));
21
+ };
22
+ GraphRegistry.prototype.has = function (Graph) {
23
+ return this.constructorToInstance.has(Graph);
24
+ };
25
+ GraphRegistry.prototype.get = function (Graph) {
26
+ return this.constructorToInstance.get(Graph);
27
+ };
28
+ GraphRegistry.prototype.set = function (Graph, graph) {
29
+ this.constructorToInstance.set(Graph, graph);
30
+ this.instanceToConstructor.set(graph, Graph);
31
+ };
32
+ GraphRegistry.prototype.getSubgraphs = function (graph) {
33
+ var _this = this;
34
+ var _a;
35
+ var Graph = this.instanceToConstructor.get(graph);
36
+ var subgraphs = (_a = this.graphToSubgraphs.get(Graph)) !== null && _a !== void 0 ? _a : new Set();
37
+ return Array.from(subgraphs).map(function (G) { return _this.resolve(G); });
38
+ };
39
+ GraphRegistry.prototype.resolve = function (Graph, props) {
40
+ if (this.has(Graph)) {
41
+ return this.get(Graph);
42
+ // const graph: T = this.get(Graph);
43
+ // const scope = Reflect.getMetadata('scope', Graph);
44
+ // if (scope) return graph;
45
+ // this.set(Graph, new Graph(props));
46
+ }
47
+ var graph = this.graphMiddlewares.resolve(Graph, props);
48
+ this.set(Graph, graph);
49
+ return graph;
50
+ };
51
+ GraphRegistry.prototype.clear = function (graph) {
52
+ var Graph = this.instanceToConstructor.get(graph);
53
+ this.instanceToConstructor.delete(graph);
54
+ this.constructorToInstance.delete(Graph);
55
+ };
56
+ GraphRegistry.prototype.addGraphMiddleware = function (middleware) {
57
+ this.graphMiddlewares.add(middleware);
58
+ };
59
+ GraphRegistry.prototype.clearGraphMiddlewares = function () {
60
+ this.graphMiddlewares.clear();
61
+ };
62
+ return GraphRegistry;
63
+ }());
64
+ exports.default = new GraphRegistry();
65
+ //# sourceMappingURL=GraphRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphRegistry.js","sourceRoot":"","sources":["../../../../src/graph/registry/GraphRegistry.ts"],"names":[],"mappings":";;;;;AAGA,gFAA0D;AAE1D;IAAA;QACmB,iBAAY,GAAwC,EAAE,CAAC;QACvD,0BAAqB,GAAG,IAAI,GAAG,EAA+B,CAAC;QAC/D,0BAAqB,GAAG,IAAI,GAAG,EAA+B,CAAC;QAC/D,qBAAgB,GAAG,IAAI,GAAG,EAAmD,CAAC;QACvF,qBAAgB,GAAG,IAAI,8BAAoB,EAAE,CAAC;IAyDxD,CAAC;IAvDC,gCAAQ,GAAR,UACE,WAAiC,EACjC,KAAoC,EACpC,SAAsC;QADtC,sBAAA,EAAA,iBAAoC;QACpC,0BAAA,EAAA,cAAsC;QAEtC,IAAI,KAAK;YAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC;QAClD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,2BAAG,GAAH,UAAI,KAA2B;QAC7B,OAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,2BAAG,GAAH,UAAqB,KAAuB;QAC1C,OAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAkB,CAAC;IAChE,CAAC;IAED,2BAAG,GAAH,UAAI,KAA2B,EAAE,KAAY;QAC3C,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,oCAAY,GAAZ,UAAa,KAAY;QAAzB,iBAIC;;QAHC,IAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;QACrD,IAAM,SAAS,GAAG,MAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAI,IAAI,GAAG,EAAE,CAAC;QAChE,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAf,CAAe,CAAC,CAAC;IAC3D,CAAC;IAED,+BAAO,GAAP,UAAyB,KAAuB,EAAE,KAAW;QAC3D,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACnB,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACvB,oCAAoC;YACpC,qDAAqD;YACrD,2BAA2B;YAE3B,qCAAqC;SACtC;QACD,IAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,6BAAK,GAAL,UAAM,KAAY;QAChB,IAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;QACrD,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,0CAAkB,GAAlB,UAAmB,UAA2B;QAC5C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IAED,6CAAqB,GAArB;QACE,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;IACH,oBAAC;AAAD,CAAC,AA9DD,IA8DC;AAED,kBAAe,IAAI,aAAa,EAAE,CAAC"}
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import { Constructable } from '@Obsidian';
3
+ import _Graph from './decorators/Graph';
4
+ import _ObjectGraph from './graph/ObjectGraph';
5
+ import _injectHook from './injectHook';
6
+ import _Provides from './Provides';
7
+ import { Inject as _Inject, Injectable as _Injectable } from './decorators/injectClass';
8
+ import _obsidian from './Obsidian';
9
+ export declare const Graph: typeof _Graph;
10
+ export declare const ObjectGraph: typeof _ObjectGraph;
11
+ export declare const injectHook: typeof _injectHook;
12
+ export declare const Provides: typeof _Provides;
13
+ export declare const Injectable: typeof _Injectable;
14
+ export declare const Inject: typeof _Inject;
15
+ export declare const Obsidian: _obsidian;
16
+ export declare const injectComponent: <P>(__Target: React.FunctionComponent<P>, __Graph: Constructable<_ObjectGraph>) => React.FunctionComponent<Partial<P>>;
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAC/C,OAAO,WAAW,MAAM,cAAc,CAAC;AAEvC,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACxF,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,eAAO,MAAM,KAAK,eAAS,CAAC;AAC5B,eAAO,MAAM,WAAW,qBAAe,CAAC;AACxC,eAAO,MAAM,UAAU,oBAAc,CAAC;AACtC,eAAO,MAAM,QAAQ,kBAAY,CAAC;AAClC,eAAO,MAAM,UAAU,oBAAc,CAAC;AACtC,eAAO,MAAM,MAAM,gBAAU,CAAC;AAC9B,eAAO,MAAM,QAAQ,WAAkB,CAAC;AAGxC,eAAO,MAAM,eAAe,qDAEjB,cAAc,YAAY,CAAC,wCACU,CAAC"}
@@ -0,0 +1,24 @@
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
+ exports.injectComponent = exports.Obsidian = exports.Inject = exports.Injectable = exports.Provides = exports.injectHook = exports.ObjectGraph = exports.Graph = void 0;
7
+ var Graph_1 = __importDefault(require("./decorators/Graph"));
8
+ var ObjectGraph_1 = __importDefault(require("./graph/ObjectGraph"));
9
+ var injectHook_1 = __importDefault(require("./injectHook"));
10
+ var ComponentInjector_1 = __importDefault(require("./injectors/components/ComponentInjector"));
11
+ var Provides_1 = __importDefault(require("./Provides"));
12
+ var injectClass_1 = require("./decorators/injectClass");
13
+ var Obsidian_1 = __importDefault(require("./Obsidian"));
14
+ exports.Graph = Graph_1.default;
15
+ exports.ObjectGraph = ObjectGraph_1.default;
16
+ exports.injectHook = injectHook_1.default;
17
+ exports.Provides = Provides_1.default;
18
+ exports.Injectable = injectClass_1.Injectable;
19
+ exports.Inject = injectClass_1.Inject;
20
+ exports.Obsidian = new Obsidian_1.default();
21
+ var componentInjector = new ComponentInjector_1.default();
22
+ var injectComponent = function (__Target, __Graph) { return componentInjector.inject(__Target, __Graph); };
23
+ exports.injectComponent = injectComponent;
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;AAEA,6DAAwC;AACxC,oEAA+C;AAC/C,4DAAuC;AACvC,+FAAyE;AACzE,wDAAmC;AACnC,wDAAwF;AACxF,wDAAmC;AAEtB,QAAA,KAAK,GAAG,eAAM,CAAC;AACf,QAAA,WAAW,GAAG,qBAAY,CAAC;AAC3B,QAAA,UAAU,GAAG,oBAAW,CAAC;AACzB,QAAA,QAAQ,GAAG,kBAAS,CAAC;AACrB,QAAA,UAAU,GAAG,wBAAW,CAAC;AACzB,QAAA,MAAM,GAAG,oBAAO,CAAC;AACjB,QAAA,QAAQ,GAAG,IAAI,kBAAS,EAAE,CAAC;AAExC,IAAM,iBAAiB,GAAG,IAAI,2BAAiB,EAAE,CAAC;AAC3C,IAAM,eAAe,GAAG,UAC7B,QAAoC,EACpC,OAAoC,IACjC,OAAA,iBAAiB,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,EAA3C,CAA2C,CAAC;AAHpC,QAAA,eAAe,mBAGqB"}
@@ -0,0 +1,5 @@
1
+ import { Constructable } from '@Obsidian';
2
+ import 'reflect-metadata';
3
+ import ObjectGraph from './graph/ObjectGraph';
4
+ export default function injectHook<S, T>(target: (args: S) => T, Graph: Constructable<ObjectGraph>): (args?: Partial<S> | undefined) => T;
5
+ //# sourceMappingURL=injectHook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injectHook.d.ts","sourceRoot":"","sources":["../../src/injectHook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,kBAAkB,CAAC;AAE1B,OAAO,WAAW,MAAM,qBAAqB,CAAC;AAG9C,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,sCACpE,CAAC,CAS9B"}
@@ -0,0 +1,30 @@
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 react_1 = require("react");
7
+ require("reflect-metadata");
8
+ var GraphRegistry_1 = __importDefault(require("./graph/registry/GraphRegistry"));
9
+ var ReferenceCounter_1 = __importDefault(require("./ReferenceCounter"));
10
+ function injectHook(target, Graph) {
11
+ return function (args) {
12
+ var graph = (0, react_1.useState)(GraphRegistry_1.default.resolve(Graph, args))[0];
13
+ (0, react_1.useEffect)(function () {
14
+ ReferenceCounter_1.default.retain(graph);
15
+ return function () { return ReferenceCounter_1.default.release(graph, function (g) { return GraphRegistry_1.default.clear(g); }); };
16
+ }, [graph]);
17
+ return target(new Proxy(args !== null && args !== void 0 ? args : {}, new Injector(graph)));
18
+ };
19
+ }
20
+ exports.default = injectHook;
21
+ var Injector = /** @class */ (function () {
22
+ function Injector(graph) {
23
+ this.graph = graph;
24
+ }
25
+ Injector.prototype.get = function (obj, property, receiver) {
26
+ return property in obj ? obj[property] : this.graph.retrieve(property, receiver);
27
+ };
28
+ return Injector;
29
+ }());
30
+ //# sourceMappingURL=injectHook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injectHook.js","sourceRoot":"","sources":["../../src/injectHook.ts"],"names":[],"mappings":";;;;;AACA,+BAA4C;AAC5C,4BAA0B;AAC1B,iFAA2D;AAE3D,wEAAkD;AAElD,SAAwB,UAAU,CAAO,MAAsB,EAAE,KAAiC;IAChG,OAAO,UAAC,IAAiB;QAChB,IAAA,KAAK,GAAI,IAAA,gBAAQ,EAAC,uBAAa,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,GAAhD,CAAiD;QAC7D,IAAA,iBAAS,EAAC;YACR,0BAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/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;QAC9E,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAEZ,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC;AACJ,CAAC;AAVD,6BAUC;AAED;IACE,kBAAoB,KAAkB;QAAlB,UAAK,GAAL,KAAK,CAAa;IAAG,CAAC;IAE1C,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"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import { Constructable } from '@Obsidian';
3
+ import 'reflect-metadata';
4
+ import ObjectGraph from '../../graph/ObjectGraph';
5
+ export default class ComponentInjector {
6
+ inject<P>(Target: React.FunctionComponent<P>, Graph: Constructable<ObjectGraph>): React.FunctionComponent<Partial<P>>;
7
+ private wrapComponent;
8
+ }
9
+ //# sourceMappingURL=ComponentInjector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComponentInjector.d.ts","sourceRoot":"","sources":["../../../../src/injectors/components/ComponentInjector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,kBAAkB,CAAC;AAC1B,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAIlD,MAAM,CAAC,OAAO,OAAO,iBAAiB;IACpC,MAAM,CAAC,CAAC,EACN,MAAM,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAClC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,GAChC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAMtC,OAAO,CAAC,aAAa;CAUtB"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ var react_1 = __importStar(require("react"));
26
+ var hoist_non_react_statics_1 = __importDefault(require("hoist-non-react-statics"));
27
+ require("reflect-metadata");
28
+ var PropsInjector_1 = __importDefault(require("./PropsInjector"));
29
+ var useGraph_1 = __importDefault(require("./useGraph"));
30
+ var ComponentInjector = /** @class */ (function () {
31
+ function ComponentInjector() {
32
+ }
33
+ ComponentInjector.prototype.inject = function (Target, Graph) {
34
+ var Wrapped = this.wrapComponent(Target, Graph);
35
+ (0, hoist_non_react_statics_1.default)(Wrapped, Target);
36
+ return Wrapped;
37
+ };
38
+ ComponentInjector.prototype.wrapComponent = function (Target, Graph) {
39
+ return function (passedProps) {
40
+ var graph = (0, useGraph_1.default)(Graph, passedProps);
41
+ var proxiedProps = (0, react_1.useState)(new PropsInjector_1.default(graph).inject(passedProps))[0];
42
+ return react_1.default.createElement(react_1.default.Fragment, null, Target(proxiedProps));
43
+ };
44
+ };
45
+ return ComponentInjector;
46
+ }());
47
+ exports.default = ComponentInjector;
48
+ //# sourceMappingURL=ComponentInjector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComponentInjector.js","sourceRoot":"","sources":["../../../../src/injectors/components/ComponentInjector.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAAwC;AAExC,oFAA2D;AAC3D,4BAA0B;AAE1B,kEAA4C;AAC5C,wDAAkC;AAElC;IAAA;IAoBA,CAAC;IAnBC,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,MAAkC,EAClC,KAAiC;QAEjC,OAAO,UAAC,WAAuB;YAC7B,IAAM,KAAK,GAAG,IAAA,kBAAQ,EAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YACpC,IAAA,YAAY,GAAI,IAAA,gBAAQ,EAAC,IAAI,uBAAa,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAA1D,CAA2D;YAC9E,OAAO,8DAAG,MAAM,CAAC,YAA4B,CAAC,CAAI,CAAC;QACrD,CAAC,CAAC;IACJ,CAAC;IACH,wBAAC;AAAD,CAAC,AApBD,IAoBC"}
@@ -0,0 +1,7 @@
1
+ import ObjectGraph from 'src/graph/ObjectGraph';
2
+ export default class PropsInjector<Props> {
3
+ private graph;
4
+ constructor(graph: ObjectGraph);
5
+ inject(passedProps: Props): Partial<Props>;
6
+ }
7
+ //# sourceMappingURL=PropsInjector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PropsInjector.d.ts","sourceRoot":"","sources":["../../../../src/injectors/components/PropsInjector.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAEhD,MAAM,CAAC,OAAO,OAAO,aAAa,CAAC,KAAK;IAC1B,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,WAAW;IAEtC,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;CAQ3C"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var PropsInjector = /** @class */ (function () {
4
+ function PropsInjector(graph) {
5
+ this.graph = graph;
6
+ }
7
+ PropsInjector.prototype.inject = function (passedProps) {
8
+ var _this = this;
9
+ // eslint-disable-next-line prefer-object-spread
10
+ return new Proxy(Object.assign({}, passedProps), {
11
+ get: function (target, p, receiver) {
12
+ return p in target ? Reflect.get(target, p, receiver) : _this.graph.retrieve(p, receiver);
13
+ },
14
+ });
15
+ };
16
+ return PropsInjector;
17
+ }());
18
+ exports.default = PropsInjector;
19
+ //# sourceMappingURL=PropsInjector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PropsInjector.js","sourceRoot":"","sources":["../../../../src/injectors/components/PropsInjector.ts"],"names":[],"mappings":";;AAEA;IACE,uBAAoB,KAAkB;QAAlB,UAAK,GAAL,KAAK,CAAa;IAAG,CAAC;IAE1C,8BAAM,GAAN,UAAO,WAAkB;QAAzB,iBAOC;QANC,gDAAgD;QAChD,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE;YAC/C,GAAG,EAAE,UAAC,MAAc,EAAE,CAAS,EAAE,QAAa;gBAC5C,OAAO,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YAC3F,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IACH,oBAAC;AAAD,CAAC,AAXD,IAWC"}
@@ -0,0 +1,5 @@
1
+ import { Constructable } from '@Obsidian';
2
+ import ObjectGraph from 'src/graph/ObjectGraph';
3
+ declare const _default: <P>(Graph: Constructable<ObjectGraph>, props: Partial<P>) => ObjectGraph<unknown>;
4
+ export default _default;
5
+ //# sourceMappingURL=useGraph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGraph.d.ts","sourceRoot":"","sources":["../../../../src/injectors/components/useGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,WAAW,MAAM,uBAAuB,CAAC;mCAItB,cAAc,WAAW,CAAC;AAApD,wBAOE"}
@@ -0,0 +1,17 @@
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 react_1 = require("react");
7
+ var GraphRegistry_1 = __importDefault(require("../../graph/registry/GraphRegistry"));
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];
11
+ (0, react_1.useEffect)(function () {
12
+ ReferenceCounter_1.default.retain(graph);
13
+ return function () { return ReferenceCounter_1.default.release(graph, function (g) { return GraphRegistry_1.default.clear(g); }); };
14
+ }, [graph]);
15
+ return graph;
16
+ });
17
+ //# sourceMappingURL=useGraph.js.map