react-obsidian 0.0.1 → 0.0.5
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.
- package/.buildkite/pipeline.yml +10 -0
- package/.eslintrc.json +1 -0
- package/README.md +30 -3
- package/dist/src/Obsidian.d.ts +1 -2
- package/dist/src/Obsidian.d.ts.map +1 -1
- package/dist/src/Obsidian.js.map +1 -1
- package/dist/src/ScopedValuesRegistry.d.ts +0 -1
- package/dist/src/ScopedValuesRegistry.d.ts.map +1 -1
- package/dist/src/ScopedValuesRegistry.js.map +1 -1
- package/dist/src/decorators/Graph.d.ts +0 -1
- package/dist/src/decorators/Graph.d.ts.map +1 -1
- package/dist/src/decorators/Graph.js.map +1 -1
- package/dist/src/decorators/injectClass.d.ts +0 -1
- package/dist/src/decorators/injectClass.d.ts.map +1 -1
- package/dist/src/decorators/injectClass.js.map +1 -1
- package/dist/src/decorators/provides/PropertyDescriptorToSingleton.d.ts +2 -0
- package/dist/src/decorators/provides/PropertyDescriptorToSingleton.d.ts.map +1 -0
- package/dist/src/decorators/provides/PropertyDescriptorToSingleton.js +20 -0
- package/dist/src/decorators/provides/PropertyDescriptorToSingleton.js.map +1 -0
- package/dist/src/{Provides.d.ts → decorators/provides/Provides.d.ts} +1 -2
- package/dist/src/decorators/provides/Provides.d.ts.map +1 -0
- package/dist/src/{Provides.js → decorators/provides/Provides.js} +3 -2
- package/dist/src/decorators/provides/Provides.js.map +1 -0
- package/dist/src/graph/ObjectGraph.d.ts +0 -1
- package/dist/src/graph/ObjectGraph.d.ts.map +1 -1
- package/dist/src/graph/ObjectGraph.js.map +1 -1
- package/dist/src/graph/registry/DefaultGraphResolver.d.ts +0 -1
- package/dist/src/graph/registry/DefaultGraphResolver.d.ts.map +1 -1
- package/dist/src/graph/registry/DefaultGraphResolver.js.map +1 -1
- package/dist/src/graph/registry/GraphMiddleware.d.ts +0 -1
- package/dist/src/graph/registry/GraphMiddleware.d.ts.map +1 -1
- package/dist/src/graph/registry/GraphMiddleware.js.map +1 -1
- package/dist/src/graph/registry/GraphMiddlewareChain.d.ts +0 -1
- package/dist/src/graph/registry/GraphMiddlewareChain.d.ts.map +1 -1
- package/dist/src/graph/registry/GraphMiddlewareChain.js.map +1 -1
- package/dist/src/graph/registry/GraphRegistry.d.ts +0 -1
- package/dist/src/graph/registry/GraphRegistry.d.ts.map +1 -1
- package/dist/src/graph/registry/GraphRegistry.js.map +1 -1
- package/dist/src/index.d.ts +2 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +6 -4
- package/dist/src/index.js.map +1 -1
- package/dist/src/injectors/components/ComponentInjector.d.ts +0 -1
- package/dist/src/injectors/components/ComponentInjector.d.ts.map +1 -1
- package/dist/src/injectors/components/ComponentInjector.js.map +1 -1
- package/dist/src/injectors/components/PropsInjector.d.ts +1 -1
- package/dist/src/injectors/components/PropsInjector.d.ts.map +1 -1
- package/dist/src/injectors/components/useGraph.d.ts +2 -3
- package/dist/src/injectors/components/useGraph.d.ts.map +1 -1
- package/dist/src/injectors/components/useGraph.js.map +1 -1
- package/dist/src/injectors/hooks/HookInjector.d.ts +5 -0
- package/dist/src/injectors/hooks/HookInjector.d.ts.map +1 -0
- package/dist/src/injectors/hooks/HookInjector.js +28 -0
- package/dist/src/injectors/hooks/HookInjector.js.map +1 -0
- package/dist/testkit/index.d.ts +0 -1
- package/dist/testkit/index.d.ts.map +1 -1
- package/dist/testkit/index.js.map +1 -1
- package/dist/transformers/babel-plugin-obsidian-provide/index.d.ts.map +1 -1
- package/dist/transformers/babel-plugin-obsidian-provide/index.js +5 -1
- package/dist/transformers/babel-plugin-obsidian-provide/index.js.map +1 -1
- package/example/MyInjectedComponent.tsx +12 -3
- package/package.json +2 -1
- package/src/@types/index.d.ts +13 -0
- package/src/Obsidian.ts +4 -2
- package/src/ScopedValuesRegistry.ts +0 -2
- package/src/decorators/Graph.ts +0 -1
- package/src/decorators/injectClass.ts +0 -1
- package/src/decorators/provides/PropertyDescriptorToSingleton.ts +11 -0
- package/src/{Provides.ts → decorators/provides/Provides.ts} +4 -4
- package/src/graph/ObjectGraph.ts +0 -1
- package/src/graph/registry/DefaultGraphResolver.ts +0 -1
- package/src/graph/registry/GraphMiddleware.ts +0 -1
- package/src/graph/registry/GraphMiddlewareChain.ts +0 -1
- package/src/graph/registry/GraphRegistry.ts +0 -1
- package/src/index.ts +8 -4
- package/src/injectors/components/ComponentInjector.tsx +0 -1
- package/src/injectors/components/PropsInjector.ts +1 -1
- package/src/injectors/components/useGraph.ts +2 -3
- package/src/injectors/hooks/HookInjector.ts +23 -0
- package/testkit/index.ts +0 -1
- package/transformers/babel-plugin-obsidian-provide/index.ts +4 -1
- package/tsconfig.base.json +1 -4
- package/.nvmrc +0 -1
- package/dist/src/Provides.d.ts.map +0 -1
- package/dist/src/Provides.js.map +0 -1
- package/dist/src/injectHook.d.ts +0 -5
- package/dist/src/injectHook.d.ts.map +0 -1
- package/dist/src/injectHook.js +0 -30
- package/dist/src/injectHook.js.map +0 -1
- package/src/@types/obsidian.d.ts +0 -19
- package/src/injectHook.ts +0 -26
package/.buildkite/pipeline.yml
CHANGED
package/.eslintrc.json
CHANGED
package/README.md
CHANGED
|
@@ -110,6 +110,33 @@ Obsidian.obtain(ApplicationGraph).biLogger();
|
|
|
110
110
|
|
|
111
111
|
> Note: While the function that provides the `biLogger` accepts an argument of type `HttpClient`, when obtaining dependencies directly from the graph, we don't provide dependencies ourselves as they are resolved by Obsidian.
|
|
112
112
|
|
|
113
|
+
## Advance usage
|
|
114
|
+
### Graph middlewares
|
|
115
|
+
When working on large scale applications, a need to hook into various low level operations often arises. Obsidian lets you hook into the graph creation process by adding middlewares.
|
|
116
|
+
|
|
117
|
+
Middlewares are invoked in LIFO order and can be used for various purposes:
|
|
118
|
+
1. Create a graph yourself instead of letting Obsidian instantiate it.
|
|
119
|
+
2. Add logging to graph creation.
|
|
120
|
+
3. Handle errors when Obsidian instantiates graphs.
|
|
121
|
+
4. Replace graphs with mocks for testing purposes.
|
|
122
|
+
|
|
123
|
+
Middlewares follow the Chain of Responsibility pattern and therefor must always return a graph, either by creating one explicitly or by returning the instance created by another member in the resolve chain.
|
|
124
|
+
|
|
125
|
+
#### Adding a logging middleware
|
|
126
|
+
The following example demonstrates how to add a middleware that's used for logging purposes.
|
|
127
|
+
|
|
128
|
+
```typescript
|
|
129
|
+
const loggingMiddleware = new class extends GraphMiddleware {
|
|
130
|
+
resolve<T extends ObjectGraph, Props>(resolveChain: ResolveChain, Graph: Constructable<T>, props?: Props) {
|
|
131
|
+
const t1 = Date.now();
|
|
132
|
+
const graph = resolveChain.proceed(Graph, props);
|
|
133
|
+
const t2 = Date.now();
|
|
134
|
+
console.log(`Graph created in ${t2 - t1} milliseconds`);
|
|
135
|
+
return graph;
|
|
136
|
+
}
|
|
137
|
+
}();
|
|
138
|
+
Obsidian.addGraphMiddleware(loggingMiddleware);
|
|
139
|
+
```
|
|
113
140
|
## Prerequisites
|
|
114
141
|
Obsidian is highly opinionated and is developed with a specific environment in mind. Therefore, it has a few prerequisites for projects that want to integrate it.
|
|
115
142
|
|
|
@@ -145,13 +172,13 @@ module.exports = {
|
|
|
145
172
|
presets: ['module:metro-react-native-babel-preset'],
|
|
146
173
|
plugins: [
|
|
147
174
|
['@babel/plugin-proposal-decorators', {legacy: true}],
|
|
148
|
-
|
|
149
|
-
[`${__dirname}/../dist/transformers/babel-plugin-obsidian-provide`],
|
|
175
|
+
react-obsidian/dist/transformers/babel-plugin-obsidian-provide
|
|
150
176
|
],
|
|
151
177
|
};
|
|
152
|
-
|
|
153
178
|
```
|
|
154
179
|
|
|
180
|
+
### Jest
|
|
181
|
+
react-obsidian publishes untranspiled code. If you're using Jest, you'll need to add react-obsidian to [transformIgnorePatterns](https://jestjs.io/docs/configuration#transformignorepatterns-arraystring) so it's transpiled before tests are executed.
|
|
155
182
|
|
|
156
183
|
## Related
|
|
157
184
|
|
package/dist/src/Obsidian.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { Constructable, ServiceLocator } from '@Obsidian';
|
|
2
1
|
import ObjectGraph from './graph/ObjectGraph';
|
|
3
2
|
import { GraphMiddleware } from './graph/registry/GraphMiddleware';
|
|
4
3
|
export default class Obsidian {
|
|
5
|
-
obtain<T extends ObjectGraph<P>, P = any>(Graph: Constructable<T>, props?: P): ServiceLocator<T
|
|
4
|
+
obtain<T extends ObjectGraph<P>, P = any>(Graph: Constructable<T>, props?: P): ServiceLocator<Omit<T, GraphInternals>>;
|
|
6
5
|
addGraphMiddleware(middleware: GraphMiddleware): void;
|
|
7
6
|
clearGraphMiddlewares(): void;
|
|
8
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Obsidian.d.ts","sourceRoot":"","sources":["../../src/Obsidian.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Obsidian.d.ts","sourceRoot":"","sources":["../../src/Obsidian.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE,MAAM,CAAC,OAAO,OAAO,QAAQ;IAC3B,MAAM,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,EACtC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,KAAK,CAAC,EAAE,CAAC,GACR,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;IAI1C,kBAAkB,CAAC,UAAU,EAAE,eAAe;IAI9C,qBAAqB;CAGtB"}
|
package/dist/src/Obsidian.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Obsidian.js","sourceRoot":"","sources":["../../src/Obsidian.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"Obsidian.js","sourceRoot":"","sources":["../../src/Obsidian.ts"],"names":[],"mappings":";;;;;AAAA,iFAA2D;AAI3D;IAAA;IAeA,CAAC;IAdC,yBAAM,GAAN,UACE,KAAuB,EACvB,KAAS;QAET,OAAO,uBAAa,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAiC,CAAC;IAC7E,CAAC;IAED,qCAAkB,GAAlB,UAAmB,UAA2B;QAC5C,uBAAa,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC;IAED,wCAAqB,GAArB;QACE,uBAAa,CAAC,qBAAqB,EAAE,CAAC;IACxC,CAAC;IACH,eAAC;AAAD,CAAC,AAfD,IAeC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScopedValuesRegistry.d.ts","sourceRoot":"","sources":["../../src/ScopedValuesRegistry.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"ScopedValuesRegistry.d.ts","sourceRoot":"","sources":["../../src/ScopedValuesRegistry.ts"],"names":[],"mappings":"AAAA,cAAM,oBAAoB;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;IAEtD,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI5C,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG;IAOxC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;IAI9C,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM;CAGrC;;AAED,wBAA0C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScopedValuesRegistry.js","sourceRoot":"","sources":["../../src/ScopedValuesRegistry.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"ScopedValuesRegistry.js","sourceRoot":"","sources":["../../src/ScopedValuesRegistry.ts"],"names":[],"mappings":";;AAAA;IAAA;QACmB,WAAM,GAAqB,IAAI,GAAG,EAAE,CAAC;IAoBxD,CAAC;IAlBC,kCAAG,GAAH,UAAI,KAAY,EAAE,QAAgB;QAChC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED,kCAAG,GAAH,UAAI,KAAY,EAAE,QAAgB;QAChC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC,EAAE;YAChD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC;SACrD;QACD,MAAM,IAAI,KAAK,CAAC,mBAAY,QAAQ,oBAAiB,CAAC,CAAC;IACzD,CAAC;IAED,kCAAG,GAAH,UAAI,KAAY,EAAE,QAAgB,EAAE,KAAU;QAC5C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IAED,oCAAK,GAAL,UAAM,KAAY,EAAE,QAAgB;QAClC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC;IAClD,CAAC;IACH,2BAAC;AAAD,CAAC,AArBD,IAqBC;AAED,kBAAe,IAAI,oBAAoB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Graph.d.ts","sourceRoot":"","sources":["../../../src/decorators/Graph.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Graph.d.ts","sourceRoot":"","sources":["../../../src/decorators/Graph.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,WAAW,MAAM,sBAAsB,CAAC;AAE/C,UAAU,WAAW;IACnB,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,SAAS,EAAE,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;CACzC;AAED,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAC5B,KAAK,EACL,SAAc,GACf,GAAE,OAAO,CAAC,WAAW,CAAM,uFAM3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Graph.js","sourceRoot":"","sources":["../../../src/decorators/Graph.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"Graph.js","sourceRoot":"","sources":["../../../src/decorators/Graph.ts"],"names":[],"mappings":";;;;;AAAA,4BAA0B;AAC1B,kFAA4D;AAQ5D,SAAwB,KAAK,CAAC,EAGF;QAHE,qBAGJ,EAAE,KAAA,EAF1B,KAAK,WAAA,EACL,iBAAc,EAAd,SAAS,mBAAG,EAAE,KAAA;IAEd,OAAO,UAAwB,WAA6B;QAC1D,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QACpD,uBAAa,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QACtD,OAAO,WAAW,CAAC;IACrB,CAAC,CAAC;AACJ,CAAC;AATD,wBASC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injectClass.d.ts","sourceRoot":"","sources":["../../../src/decorators/injectClass.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"injectClass.d.ts","sourceRoot":"","sources":["../../../src/decorators/injectClass.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,sBAAsB,CAAC;AAI/C,wBAAgB,UAAU,CAAC,CAAC,SAAS;IAAE,KAAI,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,CAAA;CAAE,EAAE,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,GAAG,CAgBzG;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,QAGzD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injectClass.js","sourceRoot":"","sources":["../../../src/decorators/injectClass.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"injectClass.js","sourceRoot":"","sources":["../../../src/decorators/injectClass.ts"],"names":[],"mappings":";;;;;;AAAA,kFAA4D;AAG5D,IAAM,oBAAoB,GAAG,mBAAmB,CAAC;AAEjD,SAAgB,UAAU,CAAyC,KAAiC;IAClG,OAAO,UAAC,MAAS;QACf,IAAM,KAAK,GAAG;YACZ,SAAS,EAAT,UAAU,MAAW,EAAE,IAAW,EAAE,SAAc;;gBAChD,IAAM,YAAY,GAAa,MAAA,OAAO,CAAC,WAAW,CAAC,oBAAoB,EAAE,MAAM,CAAC,mCAAI,EAAE,CAAC;gBAEvF,IAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;gBACjE,IAAM,KAAK,GAAG,uBAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC3C,KAAkB,UAAY,EAAZ,6BAAY,EAAZ,0BAAY,EAAZ,IAAY,EAAE;oBAA3B,IAAM,GAAG,qBAAA;oBACZ,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;iBACtD;gBACD,OAAO,aAAa,CAAC;YACvB,CAAC;SACF,CAAC;QACF,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC,CAAC;AACJ,CAAC;AAhBD,gCAgBC;AAED,SAAgB,MAAM,CAAC,MAAc,EAAE,WAAmB;;IACxD,IAAM,YAAY,GAAG,MAAA,OAAO,CAAC,WAAW,CAAC,oBAAoB,EAAE,MAAM,CAAC,WAAW,CAAC,mCAAI,IAAI,GAAG,EAAE,CAAC;IAChG,OAAO,CAAC,cAAc,CAAC,oBAAoB,EAAE,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;AAClG,CAAC;AAHD,wBAGC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PropertyDescriptorToSingleton.d.ts","sourceRoot":"","sources":["../../../../src/decorators/provides/PropertyDescriptorToSingleton.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,UAAU,EAAE,kBAAkB,GAAG,kBAAkB,CASxF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/* eslint-disable no-param-reassign */
|
|
4
|
+
function makeSingleton(descriptor) {
|
|
5
|
+
var originalValue = descriptor.value;
|
|
6
|
+
var createdDependency;
|
|
7
|
+
descriptor.value = function value() {
|
|
8
|
+
var args = [];
|
|
9
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
10
|
+
args[_i] = arguments[_i];
|
|
11
|
+
}
|
|
12
|
+
if (createdDependency)
|
|
13
|
+
return createdDependency;
|
|
14
|
+
createdDependency = originalValue.apply(this, args);
|
|
15
|
+
return createdDependency;
|
|
16
|
+
};
|
|
17
|
+
return descriptor;
|
|
18
|
+
}
|
|
19
|
+
exports.default = makeSingleton;
|
|
20
|
+
//# sourceMappingURL=PropertyDescriptorToSingleton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PropertyDescriptorToSingleton.js","sourceRoot":"","sources":["../../../../src/decorators/provides/PropertyDescriptorToSingleton.ts"],"names":[],"mappings":";;AAAA,sCAAsC;AACtC,SAAwB,aAAa,CAAC,UAA8B;IAClE,IAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC;IACvC,IAAI,iBAAsB,CAAC;IAC3B,UAAU,CAAC,KAAK,GAAG,SAAS,KAAK;QAAC,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QAC9C,IAAI,iBAAiB;YAAE,OAAO,iBAAiB,CAAC;QAChD,iBAAiB,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACpD,OAAO,iBAAiB,CAAC;IAC3B,CAAC,CAAC;IACF,OAAO,UAAU,CAAC;AACpB,CAAC;AATD,gCASC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Provides.d.ts","sourceRoot":"","sources":["../../../../src/decorators/provides/Provides.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,mBAAmB,CAAC;AAItC,UAAU,cAAc;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,iBAAS,QAAQ,CAAC,EAAE,IAAI,EAAE,GAAE,OAAO,CAAC,cAAc,CAAM,WACvB,KAAK,eAAe,MAAM,cAAc,kBAAkB,wBAI1F;AACD,eAAe,QAAQ,CAAC"}
|
|
@@ -3,12 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
var ProvidedPropertiesStore_1 = __importDefault(require("
|
|
6
|
+
var ProvidedPropertiesStore_1 = __importDefault(require("../../ProvidedPropertiesStore"));
|
|
7
|
+
var PropertyDescriptorToSingleton_1 = __importDefault(require("./PropertyDescriptorToSingleton"));
|
|
7
8
|
function Provides(_a) {
|
|
8
9
|
var _b = _a === void 0 ? {} : _a, name = _b.name;
|
|
9
10
|
return function provide(graph, propertyKey, descriptor) {
|
|
10
11
|
ProvidedPropertiesStore_1.default.set(graph, propertyKey, name);
|
|
11
|
-
return descriptor;
|
|
12
|
+
return (0, PropertyDescriptorToSingleton_1.default)(descriptor);
|
|
12
13
|
};
|
|
13
14
|
}
|
|
14
15
|
exports.default = Provides;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Provides.js","sourceRoot":"","sources":["../../../../src/decorators/provides/Provides.ts"],"names":[],"mappings":";;;;;AACA,0FAAoE;AACpE,kGAA4D;AAO5D,SAAS,QAAQ,CAAC,EAAsC;QAAtC,qBAAoC,EAAE,KAAA,EAApC,IAAI,UAAA;IACtB,OAAO,SAAS,OAAO,CAAC,KAAY,EAAE,WAAmB,EAAE,UAA8B;QACvF,iCAAuB,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,IAAK,CAAC,CAAC;QACvD,OAAO,IAAA,uCAAa,EAAC,UAAU,CAAC,CAAC;IACnC,CAAC,CAAC;AACJ,CAAC;AACD,kBAAe,QAAQ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectGraph.d.ts","sourceRoot":"","sources":["../../../src/graph/ObjectGraph.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ObjectGraph.d.ts","sourceRoot":"","sources":["../../../src/graph/ObjectGraph.ts"],"names":[],"mappings":"AAAA,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectGraph.js","sourceRoot":"","sources":["../../../src/graph/ObjectGraph.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"ObjectGraph.js","sourceRoot":"","sources":["../../../src/graph/ObjectGraph.ts"],"names":[],"mappings":";;;;;AACA,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultGraphResolver.d.ts","sourceRoot":"","sources":["../../../../src/graph/registry/DefaultGraphResolver.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"DefaultGraphResolver.d.ts","sourceRoot":"","sources":["../../../../src/graph/registry/DefaultGraphResolver.ts"],"names":[],"mappings":"AAAA,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultGraphResolver.js","sourceRoot":"","sources":["../../../../src/graph/registry/DefaultGraphResolver.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"DefaultGraphResolver.js","sourceRoot":"","sources":["../../../../src/graph/registry/DefaultGraphResolver.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphMiddleware.d.ts","sourceRoot":"","sources":["../../../../src/graph/registry/GraphMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"GraphMiddleware.d.ts","sourceRoot":"","sources":["../../../../src/graph/registry/GraphMiddleware.ts"],"names":[],"mappings":"AAAA,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphMiddleware.js","sourceRoot":"","sources":["../../../../src/graph/registry/GraphMiddleware.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"GraphMiddleware.js","sourceRoot":"","sources":["../../../../src/graph/registry/GraphMiddleware.ts"],"names":[],"mappings":";;;AAEA;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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphMiddlewareChain.d.ts","sourceRoot":"","sources":["../../../../src/graph/registry/GraphMiddlewareChain.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"GraphMiddlewareChain.d.ts","sourceRoot":"","sources":["../../../../src/graph/registry/GraphMiddlewareChain.ts"],"names":[],"mappings":"AAAA,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphMiddlewareChain.js","sourceRoot":"","sources":["../../../../src/graph/registry/GraphMiddlewareChain.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"GraphMiddlewareChain.js","sourceRoot":"","sources":["../../../../src/graph/registry/GraphMiddlewareChain.ts"],"names":[],"mappings":";;;;;AACA,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphRegistry.d.ts","sourceRoot":"","sources":["../../../../src/graph/registry/GraphRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"GraphRegistry.d.ts","sourceRoot":"","sources":["../../../../src/graph/registry/GraphRegistry.ts"],"names":[],"mappings":"AAAA,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphRegistry.js","sourceRoot":"","sources":["../../../../src/graph/registry/GraphRegistry.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"GraphRegistry.js","sourceRoot":"","sources":["../../../../src/graph/registry/GraphRegistry.ts"],"names":[],"mappings":";;;;;AAEA,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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { Constructable } from '@Obsidian';
|
|
3
2
|
import _Graph from './decorators/Graph';
|
|
4
3
|
import _ObjectGraph from './graph/ObjectGraph';
|
|
5
|
-
import
|
|
6
|
-
import _Provides from './Provides';
|
|
4
|
+
import _Provides from './decorators/provides/Provides';
|
|
7
5
|
import { Inject as _Inject, Injectable as _Injectable } from './decorators/injectClass';
|
|
8
6
|
import _obsidian from './Obsidian';
|
|
9
7
|
export declare const Graph: typeof _Graph;
|
|
10
8
|
export declare const ObjectGraph: typeof _ObjectGraph;
|
|
11
|
-
export declare const injectHook: typeof _injectHook;
|
|
12
9
|
export declare const Provides: typeof _Provides;
|
|
13
10
|
export declare const Injectable: typeof _Injectable;
|
|
14
11
|
export declare const Inject: typeof _Inject;
|
|
15
12
|
export declare const Obsidian: _obsidian;
|
|
16
13
|
export declare const injectComponent: <P>(__Target: React.FunctionComponent<P>, __Graph: Constructable<_ObjectGraph>) => React.FunctionComponent<Partial<P>>;
|
|
14
|
+
export declare const injectHook: <Args, Result>(hook: (args: Args) => Result, __Graph: Constructable<_ObjectGraph>) => (args?: Partial<Args> | undefined) => Result;
|
|
17
15
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAE/C,OAAO,SAAS,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACxF,OAAO,SAAS,MAAM,YAAY,CAAC;AAGnC,eAAO,MAAM,KAAK,eAAS,CAAC;AAC5B,eAAO,MAAM,WAAW,qBAAe,CAAC;AACxC,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;AAGjD,eAAO,MAAM,UAAU,wDAEZ,cAAc,YAAY,CAAC,iDACC,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -3,17 +3,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.injectComponent = exports.Obsidian = exports.Inject = exports.Injectable = exports.Provides = exports.
|
|
6
|
+
exports.injectHook = exports.injectComponent = exports.Obsidian = exports.Inject = exports.Injectable = exports.Provides = exports.ObjectGraph = exports.Graph = void 0;
|
|
7
7
|
var Graph_1 = __importDefault(require("./decorators/Graph"));
|
|
8
8
|
var ObjectGraph_1 = __importDefault(require("./graph/ObjectGraph"));
|
|
9
|
-
var injectHook_1 = __importDefault(require("./injectHook"));
|
|
10
9
|
var ComponentInjector_1 = __importDefault(require("./injectors/components/ComponentInjector"));
|
|
11
|
-
var Provides_1 = __importDefault(require("./Provides"));
|
|
10
|
+
var Provides_1 = __importDefault(require("./decorators/provides/Provides"));
|
|
12
11
|
var injectClass_1 = require("./decorators/injectClass");
|
|
13
12
|
var Obsidian_1 = __importDefault(require("./Obsidian"));
|
|
13
|
+
var HookInjector_1 = __importDefault(require("./injectors/hooks/HookInjector"));
|
|
14
14
|
exports.Graph = Graph_1.default;
|
|
15
15
|
exports.ObjectGraph = ObjectGraph_1.default;
|
|
16
|
-
exports.injectHook = injectHook_1.default;
|
|
17
16
|
exports.Provides = Provides_1.default;
|
|
18
17
|
exports.Injectable = injectClass_1.Injectable;
|
|
19
18
|
exports.Inject = injectClass_1.Inject;
|
|
@@ -21,4 +20,7 @@ exports.Obsidian = new Obsidian_1.default();
|
|
|
21
20
|
var componentInjector = new ComponentInjector_1.default();
|
|
22
21
|
var injectComponent = function (__Target, __Graph) { return componentInjector.inject(__Target, __Graph); };
|
|
23
22
|
exports.injectComponent = injectComponent;
|
|
23
|
+
var hookInjector = new HookInjector_1.default();
|
|
24
|
+
var injectHook = function (hook, __Graph) { return hookInjector.inject(hook, __Graph); };
|
|
25
|
+
exports.injectHook = injectHook;
|
|
24
26
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;AACA,6DAAwC;AACxC,oEAA+C;AAC/C,+FAAyE;AACzE,4EAAuD;AACvD,wDAAwF;AACxF,wDAAmC;AACnC,gFAA0D;AAE7C,QAAA,KAAK,GAAG,eAAM,CAAC;AACf,QAAA,WAAW,GAAG,qBAAY,CAAC;AAC3B,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;AAEjD,IAAM,YAAY,GAAG,IAAI,sBAAY,EAAE,CAAC;AACjC,IAAM,UAAU,GAAG,UACxB,IAA4B,EAC5B,OAAoC,IACjC,OAAA,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,EAAlC,CAAkC,CAAC;AAH3B,QAAA,UAAU,cAGiB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComponentInjector.d.ts","sourceRoot":"","sources":["../../../../src/injectors/components/ComponentInjector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ComponentInjector.d.ts","sourceRoot":"","sources":["../../../../src/injectors/components/ComponentInjector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComponentInjector.js","sourceRoot":"","sources":["../../../../src/injectors/components/ComponentInjector.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAAwC;
|
|
1
|
+
{"version":3,"file":"ComponentInjector.js","sourceRoot":"","sources":["../../../../src/injectors/components/ComponentInjector.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAAwC;AACxC,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PropsInjector.d.ts","sourceRoot":"","sources":["../../../../src/injectors/components/PropsInjector.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,
|
|
1
|
+
{"version":3,"file":"PropsInjector.d.ts","sourceRoot":"","sources":["../../../../src/injectors/components/PropsInjector.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAElD,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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
declare const _default: <P>(Graph: Constructable<ObjectGraph>, props: Partial<P>) => ObjectGraph<unknown>;
|
|
1
|
+
import ObjectGraph from '../../graph/ObjectGraph';
|
|
2
|
+
declare const _default: <P>(Graph: Constructable<ObjectGraph>, props?: Partial<P> | undefined) => ObjectGraph<unknown>;
|
|
4
3
|
export default _default;
|
|
5
4
|
//# sourceMappingURL=useGraph.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGraph.d.ts","sourceRoot":"","sources":["../../../../src/injectors/components/useGraph.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useGraph.d.ts","sourceRoot":"","sources":["../../../../src/injectors/components/useGraph.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,yBAAyB,CAAC;mCAIxB,cAAc,WAAW,CAAC;AAApD,wBAOE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGraph.js","sourceRoot":"","sources":["../../../../src/injectors/components/useGraph.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"useGraph.js","sourceRoot":"","sources":["../../../../src/injectors/components/useGraph.ts"],"names":[],"mappings":";;;;;AAAA,+BAA4C;AAE5C,qFAA+D;AAC/D,4EAAsD;AAEtD,mBAAe,UAAI,KAAiC,EAAE,KAAkB;IAC/D,IAAA,KAAK,GAAI,IAAA,gBAAQ,EAAC,uBAAa,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,GAAjD,CAAkD;IAC9D,IAAA,iBAAS,EAAC;QACR,0BAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,OAAO,cAAM,OAAA,0BAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,UAAC,CAAC,IAAK,OAAA,uBAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAtB,CAAsB,CAAC,EAA9D,CAA8D,CAAC;IAC9E,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACZ,OAAO,KAAK,CAAC;AACf,CAAC,EAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HookInjector.d.ts","sourceRoot":"","sources":["../../../../src/injectors/hooks/HookInjector.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAIlD,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B,MAAM,CAAC,IAAI,EAAE,MAAM,EACjB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,EAC5B,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,GAChC,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,MAAM;CAMpC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
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 useGraph_1 = __importDefault(require("../components/useGraph"));
|
|
7
|
+
var HookInjector = /** @class */ (function () {
|
|
8
|
+
function HookInjector() {
|
|
9
|
+
}
|
|
10
|
+
HookInjector.prototype.inject = function (hook, Graph) {
|
|
11
|
+
return function (args) {
|
|
12
|
+
var graph = (0, useGraph_1.default)(Graph);
|
|
13
|
+
return hook(new Proxy(args !== null && args !== void 0 ? args : {}, new Injector(graph)));
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
return HookInjector;
|
|
17
|
+
}());
|
|
18
|
+
exports.default = HookInjector;
|
|
19
|
+
var Injector = /** @class */ (function () {
|
|
20
|
+
function Injector(graph) {
|
|
21
|
+
this.graph = graph;
|
|
22
|
+
}
|
|
23
|
+
Injector.prototype.get = function (obj, property, receiver) {
|
|
24
|
+
return property in obj ? obj[property] : this.graph.retrieve(property, receiver);
|
|
25
|
+
};
|
|
26
|
+
return Injector;
|
|
27
|
+
}());
|
|
28
|
+
//# sourceMappingURL=HookInjector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HookInjector.js","sourceRoot":"","sources":["../../../../src/injectors/hooks/HookInjector.ts"],"names":[],"mappings":";;;;;AAEA,oEAA8C;AAE9C;IAAA;IAUA,CAAC;IATC,6BAAM,GAAN,UACE,IAA4B,EAC5B,KAAiC;QAEjC,OAAO,UAAC,IAAoB;YAC1B,IAAM,KAAK,GAAG,IAAA,kBAAQ,EAAC,KAAK,CAAC,CAAC;YAC9B,OAAO,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC,CAAC;IACJ,CAAC;IACH,mBAAC;AAAD,CAAC,AAVD,IAUC;;AAED;IACE,kBAAoB,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;IAEpC,sBAAG,GAAH,UAAI,GAAQ,EAAE,QAAgB,EAAE,QAAa;QAC3C,OAAO,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACnF,CAAC;IACH,eAAC;AAAD,CAAC,AAND,IAMC"}
|
package/dist/testkit/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../testkit/index.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../testkit/index.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,oBAAoB,CAAC;AAO7C,cAAM,KAAK;IACT,UAAU,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;CAYxE;;AAED,wBAA2B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../testkit/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,yEAAsF;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../testkit/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,yEAAsF;AAEtF,8BAAkC;AAElC,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,UAAsC,YAA0B,EAAE,KAAuB,EAAE,KAAa;gBACtG,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,CAAiB,CAAC;iBAC5C;gBACD,OAAO,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC5C,CAAC;YACH,cAAC;QAAD,CAAC,AAR2B,CAAc,iCAAe,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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../transformers/babel-plugin-obsidian-provide/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../transformers/babel-plugin-obsidian-provide/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,SAAS,EAAE,MAAM,aAAa,CAAC;AA0ClD,MAAM,CAAC,OAAO,UAAU,MAAM,gDAE7B"}
|
|
@@ -21,7 +21,11 @@ var internalVisitor = {
|
|
|
21
21
|
},
|
|
22
22
|
};
|
|
23
23
|
function convertProviderParamsToDestructuringAssignment(node) {
|
|
24
|
-
node.params.
|
|
24
|
+
if (node.params.length === 0)
|
|
25
|
+
return;
|
|
26
|
+
var destructuredParams = (0, helpers_1.paramsToDestructuringAssignment)(node.params);
|
|
27
|
+
node.params.length = 0;
|
|
28
|
+
node.params.push(destructuredParams);
|
|
25
29
|
}
|
|
26
30
|
function saveUnmangledMethodNameInProviderArguments(node, decorator) {
|
|
27
31
|
if ((0, helpers_1.providerIsNotNamed)(decorator)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../transformers/babel-plugin-obsidian-provide/index.ts"],"names":[],"mappings":";;AAGA,qCAMmB;AAEnB,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,IAAM,SAAS,GAAG,IAAA,8BAAoB,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxD,IAAI,IAAA,0BAAgB,EAAC,SAAS,CAAC,KAAK,UAAU,EAAE;gBAC9C,8CAA8C,CAAC,IAAI,CAAC,CAAC;gBACrD,0CAA0C,CAAC,IAAI,EAAE,SAAU,CAAC,CAAC;aAC9D;QACH,CAAC;KACF;CACF,CAAC;AAEF,SAAS,8CAA8C,CAAC,IAAiB;IACvE,IAAI,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../transformers/babel-plugin-obsidian-provide/index.ts"],"names":[],"mappings":";;AAGA,qCAMmB;AAEnB,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,IAAM,SAAS,GAAG,IAAA,8BAAoB,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxD,IAAI,IAAA,0BAAgB,EAAC,SAAS,CAAC,KAAK,UAAU,EAAE;gBAC9C,8CAA8C,CAAC,IAAI,CAAC,CAAC;gBACrD,0CAA0C,CAAC,IAAI,EAAE,SAAU,CAAC,CAAC;aAC9D;QACH,CAAC;KACF;CACF,CAAC;AAEF,SAAS,8CAA8C,CAAC,IAAiB;IACvE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACrC,IAAM,kBAAkB,GAAG,IAAA,yCAA+B,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxE,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;AAED,SAAwB,MAAM;IAC5B,OAAO,4BAA4B,CAAC;AACtC,CAAC;AAFD,yBAEC"}
|
|
@@ -9,8 +9,18 @@ interface DependenciesProps {
|
|
|
9
9
|
@Graph()
|
|
10
10
|
class DependenciesGraph extends ObjectGraph<DependenciesProps> {
|
|
11
11
|
@Provides()
|
|
12
|
-
|
|
13
|
-
return '
|
|
12
|
+
firstDependency(): string {
|
|
13
|
+
return 'firstDependency';
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
@Provides()
|
|
17
|
+
secondDependency(): string {
|
|
18
|
+
return 'secondDependency';
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@Provides()
|
|
22
|
+
myText(firstDependency: string, secondDependency: string): string {
|
|
23
|
+
return `Hello injected from ${firstDependency} + ${secondDependency}`;
|
|
14
24
|
}
|
|
15
25
|
}
|
|
16
26
|
|
|
@@ -24,5 +34,4 @@ const MyInjectedComponent: React.FunctionComponent<DependenciesProps> = ({
|
|
|
24
34
|
);
|
|
25
35
|
};
|
|
26
36
|
|
|
27
|
-
// export default injectComponent(MyInjectedComponent, DependenciesGraph);
|
|
28
37
|
export default injectComponent(MyInjectedComponent, DependenciesGraph);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-obsidian",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.5",
|
|
4
4
|
"description": "Dependency injection framework for React and React Native applications",
|
|
5
5
|
"main": "src/index.ts",
|
|
6
6
|
"directories": {
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"@babel/types": "7.16.x",
|
|
25
25
|
"@johanblumenberg/ts-mockito": "1.x.x",
|
|
26
26
|
"@testing-library/react": "^12.1.2",
|
|
27
|
+
"@testing-library/react-hooks": "^7.0.2",
|
|
27
28
|
"@types/hoist-non-react-statics": "^3.3.1",
|
|
28
29
|
"@types/jest": "26.x.x",
|
|
29
30
|
"@types/lodash": "^4.14.176",
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
declare type Constructable<T> = {
|
|
2
|
+
new(...args: any): T;
|
|
3
|
+
};
|
|
4
|
+
|
|
5
|
+
declare type Scope = string | number | symbol;
|
|
6
|
+
|
|
7
|
+
declare type Constructor = { new(...args: any[]): any };
|
|
8
|
+
|
|
9
|
+
declare type ServiceLocator<Clazz> = {
|
|
10
|
+
[Key in keyof Clazz]: Function
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
declare type GraphInternals = 'retrieve' | 'name' | 'scope';
|
package/src/Obsidian.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { Constructable, ServiceLocator } from '@Obsidian';
|
|
2
1
|
import graphRegistry from './graph/registry/GraphRegistry';
|
|
3
2
|
import ObjectGraph from './graph/ObjectGraph';
|
|
4
3
|
import { GraphMiddleware } from './graph/registry/GraphMiddleware';
|
|
5
4
|
|
|
6
5
|
export default class Obsidian {
|
|
7
|
-
obtain<T extends ObjectGraph<P>, P = any>(
|
|
6
|
+
obtain<T extends ObjectGraph<P>, P = any>(
|
|
7
|
+
Graph: Constructable<T>,
|
|
8
|
+
props?: P,
|
|
9
|
+
): ServiceLocator<Omit<T, GraphInternals>> {
|
|
8
10
|
return graphRegistry.resolve(Graph, props) as unknown as ServiceLocator<T>;
|
|
9
11
|
}
|
|
10
12
|
|
package/src/decorators/Graph.ts
CHANGED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/* eslint-disable no-param-reassign */
|
|
2
|
+
export default function makeSingleton(descriptor: PropertyDescriptor): PropertyDescriptor {
|
|
3
|
+
const originalValue = descriptor.value;
|
|
4
|
+
let createdDependency: any;
|
|
5
|
+
descriptor.value = function value(...args: any[]) {
|
|
6
|
+
if (createdDependency) return createdDependency;
|
|
7
|
+
createdDependency = originalValue.apply(this, args);
|
|
8
|
+
return createdDependency;
|
|
9
|
+
};
|
|
10
|
+
return descriptor;
|
|
11
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
1
|
+
import Graph from '../../graph/Graph';
|
|
2
|
+
import providedPropertiesStore from '../../ProvidedPropertiesStore';
|
|
3
|
+
import makeSingleton from './PropertyDescriptorToSingleton';
|
|
4
4
|
|
|
5
5
|
interface ProvidesParams {
|
|
6
6
|
scope?: Scope;
|
|
@@ -10,7 +10,7 @@ interface ProvidesParams {
|
|
|
10
10
|
function Provides({ name }: Partial<ProvidesParams> = {}) {
|
|
11
11
|
return function provide(graph: Graph, propertyKey: string, descriptor: PropertyDescriptor) {
|
|
12
12
|
providedPropertiesStore.set(graph, propertyKey, name!);
|
|
13
|
-
return descriptor;
|
|
13
|
+
return makeSingleton(descriptor);
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
16
|
export default Provides;
|
package/src/graph/ObjectGraph.ts
CHANGED
package/src/index.ts
CHANGED
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { Constructable } from '@Obsidian';
|
|
3
2
|
import _Graph from './decorators/Graph';
|
|
4
3
|
import _ObjectGraph from './graph/ObjectGraph';
|
|
5
|
-
import _injectHook from './injectHook';
|
|
6
4
|
import ComponentInjector from './injectors/components/ComponentInjector';
|
|
7
|
-
import _Provides from './Provides';
|
|
5
|
+
import _Provides from './decorators/provides/Provides';
|
|
8
6
|
import { Inject as _Inject, Injectable as _Injectable } from './decorators/injectClass';
|
|
9
7
|
import _obsidian from './Obsidian';
|
|
8
|
+
import HookInjector from './injectors/hooks/HookInjector';
|
|
10
9
|
|
|
11
10
|
export const Graph = _Graph;
|
|
12
11
|
export const ObjectGraph = _ObjectGraph;
|
|
13
|
-
export const injectHook = _injectHook;
|
|
14
12
|
export const Provides = _Provides;
|
|
15
13
|
export const Injectable = _Injectable;
|
|
16
14
|
export const Inject = _Inject;
|
|
@@ -21,3 +19,9 @@ export const injectComponent = <P> (
|
|
|
21
19
|
__Target: React.FunctionComponent<P>,
|
|
22
20
|
__Graph: Constructable<_ObjectGraph>,
|
|
23
21
|
) => componentInjector.inject(__Target, __Graph);
|
|
22
|
+
|
|
23
|
+
const hookInjector = new HookInjector();
|
|
24
|
+
export const injectHook = <Args, Result> (
|
|
25
|
+
hook: (args: Args) => Result,
|
|
26
|
+
__Graph: Constructable<_ObjectGraph>,
|
|
27
|
+
) => hookInjector.inject(hook, __Graph);
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { Constructable } from '@Obsidian';
|
|
2
1
|
import { useEffect, useState } from 'react';
|
|
3
|
-
import ObjectGraph from '
|
|
2
|
+
import ObjectGraph from '../../graph/ObjectGraph';
|
|
4
3
|
import graphRegistry from '../../graph/registry/GraphRegistry';
|
|
5
4
|
import referenceCounter from '../../ReferenceCounter';
|
|
6
5
|
|
|
7
|
-
export default <P>(Graph: Constructable<ObjectGraph>, props
|
|
6
|
+
export default <P>(Graph: Constructable<ObjectGraph>, props?: Partial<P>) => {
|
|
8
7
|
const [graph] = useState(graphRegistry.resolve(Graph, props));
|
|
9
8
|
useEffect(() => {
|
|
10
9
|
referenceCounter.retain(graph);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import ObjectGraph from '../../graph/ObjectGraph';
|
|
2
|
+
import Graph from '../../graph/Graph';
|
|
3
|
+
import useGraph from '../components/useGraph';
|
|
4
|
+
|
|
5
|
+
export default class HookInjector {
|
|
6
|
+
inject<Args, Result>(
|
|
7
|
+
hook: (args: Args) => Result,
|
|
8
|
+
Graph: Constructable<ObjectGraph>,
|
|
9
|
+
): (args?: Partial<Args>) => Result {
|
|
10
|
+
return (args?: Partial<Args>): Result => {
|
|
11
|
+
const graph = useGraph(Graph);
|
|
12
|
+
return hook(new Proxy(args ?? {}, new Injector(graph)));
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
class Injector implements ProxyHandler<any> {
|
|
18
|
+
constructor(private graph: Graph) {}
|
|
19
|
+
|
|
20
|
+
get(obj: any, property: string, receiver: any): any {
|
|
21
|
+
return property in obj ? obj[property] : this.graph.retrieve(property, receiver);
|
|
22
|
+
}
|
|
23
|
+
}
|
package/testkit/index.ts
CHANGED
|
@@ -30,7 +30,10 @@ const internalVisitor = {
|
|
|
30
30
|
};
|
|
31
31
|
|
|
32
32
|
function convertProviderParamsToDestructuringAssignment(node: ClassMethod) {
|
|
33
|
-
node.params.
|
|
33
|
+
if (node.params.length === 0) return;
|
|
34
|
+
const destructuredParams = paramsToDestructuringAssignment(node.params);
|
|
35
|
+
node.params.length = 0;
|
|
36
|
+
node.params.push(destructuredParams);
|
|
34
37
|
}
|
|
35
38
|
|
|
36
39
|
function saveUnmangledMethodNameInProviderArguments(node: ClassMethod, decorator: Decorator) {
|
package/tsconfig.base.json
CHANGED
package/.nvmrc
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
12
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Provides.d.ts","sourceRoot":"","sources":["../../src/Provides.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,MAAM,eAAe,CAAC;AAGlC,UAAU,cAAc;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,iBAAS,QAAQ,CAAC,EAAE,IAAI,EAAE,GAAE,OAAO,CAAC,cAAc,CAAM,WACvB,KAAK,eAAe,MAAM,cAAc,kBAAkB,wBAI1F;AACD,eAAe,QAAQ,CAAC"}
|
package/dist/src/Provides.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Provides.js","sourceRoot":"","sources":["../../src/Provides.ts"],"names":[],"mappings":";;;;;AAEA,sFAAgE;AAOhE,SAAS,QAAQ,CAAC,EAAsC;QAAtC,qBAAoC,EAAE,KAAA,EAApC,IAAI,UAAA;IACtB,OAAO,SAAS,OAAO,CAAC,KAAY,EAAE,WAAmB,EAAE,UAA8B;QACvF,iCAAuB,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,IAAK,CAAC,CAAC;QACvD,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC;AACD,kBAAe,QAAQ,CAAC"}
|
package/dist/src/injectHook.d.ts
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/dist/src/injectHook.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/src/@types/obsidian.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import ObjectGraph from '../graph/ObjectGraph';
|
|
2
|
-
|
|
3
|
-
type Constructable<T> = {
|
|
4
|
-
new(...args: any): T;
|
|
5
|
-
};
|
|
6
|
-
|
|
7
|
-
type GraphClass<T extends ObjectGraph<P>, P> = {
|
|
8
|
-
new(props?: P): T;
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
type Scope = string | number | symbol;
|
|
12
|
-
|
|
13
|
-
type Constructor = { new(...args: any[]): any };
|
|
14
|
-
|
|
15
|
-
type GraphType = { new(...args: any[]): ObjectGraph };
|
|
16
|
-
|
|
17
|
-
type ServiceLocator<Clazz> = {
|
|
18
|
-
[Key in keyof Clazz]: Function
|
|
19
|
-
};
|
package/src/injectHook.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { Constructable } from '@Obsidian';
|
|
2
|
-
import { useEffect, useState } from 'react';
|
|
3
|
-
import 'reflect-metadata';
|
|
4
|
-
import graphRegistry from './graph/registry/GraphRegistry';
|
|
5
|
-
import ObjectGraph from './graph/ObjectGraph';
|
|
6
|
-
import referenceCounter from './ReferenceCounter';
|
|
7
|
-
|
|
8
|
-
export default function injectHook<S, T>(target: (args: S) => T, Graph: Constructable<ObjectGraph>) {
|
|
9
|
-
return (args?: Partial<S>): T => {
|
|
10
|
-
const [graph] = useState(graphRegistry.resolve(Graph, args));
|
|
11
|
-
useEffect(() => {
|
|
12
|
-
referenceCounter.retain(graph);
|
|
13
|
-
return () => referenceCounter.release(graph, (g) => graphRegistry.clear(g));
|
|
14
|
-
}, [graph]);
|
|
15
|
-
|
|
16
|
-
return target(new Proxy(args ?? {}, new Injector(graph)));
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
class Injector implements ProxyHandler<any> {
|
|
21
|
-
constructor(private graph: ObjectGraph) {}
|
|
22
|
-
|
|
23
|
-
get(obj: any, property: string, receiver: any): any {
|
|
24
|
-
return property in obj ? obj[property] : this.graph.retrieve(property, receiver);
|
|
25
|
-
}
|
|
26
|
-
}
|