react-obsidian 0.0.16 → 0.0.19
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/.eslintrc.json +9 -3
- package/README.md +29 -16
- package/babel.config.js +2 -2
- package/dist/resetGraphs.d.ts +2 -0
- package/dist/resetGraphs.d.ts.map +1 -0
- package/dist/resetGraphs.js +7 -0
- package/dist/resetGraphs.js.map +1 -0
- package/dist/src/Obsidian.d.ts +2 -1
- package/dist/src/Obsidian.d.ts.map +1 -1
- package/dist/src/Obsidian.js +6 -2
- package/dist/src/Obsidian.js.map +1 -1
- package/dist/src/graph/registry/GraphRegistry.d.ts +1 -1
- package/dist/src/graph/registry/GraphRegistry.d.ts.map +1 -1
- package/dist/src/graph/registry/GraphRegistry.js +1 -1
- package/dist/src/graph/registry/GraphRegistry.js.map +1 -1
- package/dist/src/index.js +5 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/injectors/class/LazyInjector.d.ts +2 -1
- package/dist/src/injectors/class/LazyInjector.d.ts.map +1 -1
- package/dist/src/injectors/class/LazyInjector.js +2 -2
- package/dist/src/injectors/class/LazyInjector.js.map +1 -1
- package/dist/src/injectors/components/ComponentInjector.js +5 -1
- package/dist/src/injectors/components/ComponentInjector.js.map +1 -1
- package/dist/testkit/index.d.ts.map +1 -1
- package/dist/testkit/index.js +0 -4
- package/dist/testkit/index.js.map +1 -1
- package/jest.setup-after-env.js +3 -0
- package/package.json +3 -1
- package/resetGraphs.ts +5 -0
- package/src/Obsidian.ts +7 -2
- package/src/graph/registry/GraphRegistry.ts +1 -1
- package/src/injectors/class/LazyInjector.ts +3 -2
- package/testkit/index.ts +0 -5
- package/tsconfig.base.json +2 -1
- package/jest.setup.ts +0 -1
package/.eslintrc.json
CHANGED
|
@@ -24,7 +24,8 @@
|
|
|
24
24
|
"plugins": [
|
|
25
25
|
"react",
|
|
26
26
|
"@typescript-eslint",
|
|
27
|
-
"import-newlines"
|
|
27
|
+
"import-newlines",
|
|
28
|
+
"unused-imports"
|
|
28
29
|
],
|
|
29
30
|
"rules": {
|
|
30
31
|
"max-len": ["error", {"code": 115}],
|
|
@@ -82,8 +83,13 @@
|
|
|
82
83
|
"@typescript-eslint/quotes": ["error", "single", {"avoidEscape": true, "allowTemplateLiterals": true}],
|
|
83
84
|
"@typescript-eslint/lines-between-class-members": "off",
|
|
84
85
|
"@typescript-eslint/no-explicit-any": "off",
|
|
85
|
-
"
|
|
86
|
-
"
|
|
86
|
+
"import/prefer-default-export": "off",
|
|
87
|
+
"@typescript-eslint/no-unused-vars": "off",
|
|
88
|
+
"unused-imports/no-unused-imports": "error",
|
|
89
|
+
"unused-imports/no-unused-vars": [
|
|
90
|
+
"error",
|
|
91
|
+
{ "vars": "all", "varsIgnorePattern": "^_", "args": "after-used", "argsIgnorePattern": "^_" }
|
|
92
|
+
]
|
|
87
93
|
},
|
|
88
94
|
"settings": {
|
|
89
95
|
"import/resolver": {
|
package/README.md
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
[](https://vshymanskyy.github.io/StandWithUkraine)
|
|
2
|
+
|
|
1
3
|
# react-obsidian
|
|
2
4
|
> Dependency injection framework for React and React Native applications
|
|
3
5
|
|
|
@@ -5,11 +7,10 @@
|
|
|
5
7
|
<br>⚠️ <b>Until we hit v1, Obsidian is not semver-compliant and all APIs are subject to change.</b></h5>
|
|
6
8
|
|
|
7
9
|
## Introduction
|
|
8
|
-
Applications are made of objects that communicate with each other. An object can depend on other objects so it can perform its responsibilities. For an object to function properly, its dependencies must be fulfilled when the object is constructed.
|
|
9
10
|
|
|
10
11
|
React Obsidian is a dependency injection framework for React and React Native applications. It allows you to inject dependencies effortlessly into hooks, components or classes. Separating the construction and consumption of dependencies is crucial to maintaining a readable and testable codebase.
|
|
11
12
|
|
|
12
|
-
React Obsidian is guided by the principles of the Dependency Injection pattern, but does not strictly follow
|
|
13
|
+
React Obsidian is guided by the principles of the Dependency Injection pattern, but does not strictly follow them. We allowed ourselves a degree of freedom when designing the library in order to reduce boilerplate code and library footprint.
|
|
13
14
|
|
|
14
15
|
* [Installation](https://github.com/wix-incubator/react-obsidian#installation)
|
|
15
16
|
* [Prerequisites](https://github.com/wix-incubator/react-obsidian#prerequisites)
|
|
@@ -24,7 +25,7 @@ React Obsidian is guided by the principles of the Dependency Injection pattern,
|
|
|
24
25
|
* [Advance usage](https://github.com/wix-incubator/react-obsidian#advance-usage)
|
|
25
26
|
* [Accessing props in graphs](https://github.com/wix-incubator/react-obsidian#accessing-props-in-graphs)
|
|
26
27
|
* [Singleton graphs and providers](https://github.com/wix-incubator/react-obsidian#singleton-graphs-and-providers)
|
|
27
|
-
* [Graph
|
|
28
|
+
* [Graph middleware](https://github.com/wix-incubator/react-obsidian#graph-middleware)
|
|
28
29
|
|
|
29
30
|
|
|
30
31
|
|
|
@@ -49,7 +50,7 @@ In the `ApplicationGraph` example below, we declare two dependencies:
|
|
|
49
50
|
|
|
50
51
|
Both functions are annotated by the `@Provides()` annotation. This signals Obsidian that the results of these functions are provided by the graph and can be injected.
|
|
51
52
|
|
|
52
|
-
Notice how the biLogger function receives an `httpClient` as an argument. This means that `biLogger`
|
|
53
|
+
Notice how the biLogger function receives an `httpClient` as an argument. This means that `biLogger` is dependent on `httpClient`. Obsidian will create an `httpClient` when `biLogger` is injected.
|
|
53
54
|
|
|
54
55
|
``` typescript
|
|
55
56
|
@Singleton() @Graph()
|
|
@@ -106,7 +107,7 @@ const useButtonClick = ({ biLogger }: UseButtonPressProps): UseButtonPress => {
|
|
|
106
107
|
// Dependencies are injected from ApplicationGraph
|
|
107
108
|
export default injectHook(usePress, ApplicationGraph);
|
|
108
109
|
|
|
109
|
-
// Now that exported the injected hook, we can use it in a component without needed so provide
|
|
110
|
+
// Now that we exported the injected hook, we can use it in a component without the needed so provide its dependencies manually
|
|
110
111
|
const Component = () => (
|
|
111
112
|
// No need to specify dependencies as they are injected automatically
|
|
112
113
|
const { onClick } = useButtonClick();
|
|
@@ -139,7 +140,7 @@ class Presenter {
|
|
|
139
140
|
}
|
|
140
141
|
```
|
|
141
142
|
|
|
142
|
-
TypeScript
|
|
143
|
+
The TypeScript compiler won't let you construct the class without providing the `biLogger` argument as it's not optional.
|
|
143
144
|
If you want to be able to instantiate the class yourself without providing arguments, you'll also need to declare a constructor overload that receives optional arguments.
|
|
144
145
|
|
|
145
146
|
```typescript
|
|
@@ -148,6 +149,9 @@ class Presenter {
|
|
|
148
149
|
constructor(biLogger?: BiLogger);
|
|
149
150
|
constructor(@Inject() public biLogger: BiLogger) { }
|
|
150
151
|
}
|
|
152
|
+
|
|
153
|
+
// Now you can instantiate the class without providing it's constructor dependencies
|
|
154
|
+
const presenter = new Presenter();
|
|
151
155
|
```
|
|
152
156
|
|
|
153
157
|
### Obtaining dependencies from a graph
|
|
@@ -157,11 +161,11 @@ Dependencies can also be obtained by accessing the graph that provides them.
|
|
|
157
161
|
Obsidian.obtain(ApplicationGraph).biLogger();
|
|
158
162
|
```
|
|
159
163
|
|
|
160
|
-
> Note: While the function that provides the `biLogger` accepts an argument of type `HttpClient`, when obtaining dependencies directly from the graph,
|
|
164
|
+
> Note: While the function that provides the `biLogger` accepts an argument of type `HttpClient`, we don't provide dependencies ourselves when obtaining dependencies directly from the graph, as they are resolved by Obsidian.
|
|
161
165
|
|
|
162
|
-
##
|
|
166
|
+
## Advanced usage
|
|
163
167
|
### Accessing props in graphs
|
|
164
|
-
If a graph is instantiated in order to inject a component, then it
|
|
168
|
+
If a graph is instantiated in order to inject a component, then it will receive the component's props in the constructor.
|
|
165
169
|
```typescript
|
|
166
170
|
@Graph()
|
|
167
171
|
class ProfileScreenGraph extends ObjectGraph<ProfileScreenProps> {
|
|
@@ -178,8 +182,9 @@ class ProfileScreenGraph extends ObjectGraph<ProfileScreenProps> {
|
|
|
178
182
|
}
|
|
179
183
|
}
|
|
180
184
|
```
|
|
185
|
+
|
|
181
186
|
### Singleton graphs and providers
|
|
182
|
-
Graphs and Providers can be marked as singletons with the `@Singleton` decorator.
|
|
187
|
+
Graphs and Providers can be marked as singletons with the `@Singleton` decorator. If a graph is marked as a singleton, when an instance of such graph is requested, Obsidian will reuse the existing instance. Graphs that are not annotated with the `@Singleton` decorator will be instantiated each time they are needed for injection.
|
|
183
188
|
|
|
184
189
|
Singleton providers are shared between all instances of a graph.
|
|
185
190
|
|
|
@@ -208,16 +213,17 @@ class ApplicationGraph {
|
|
|
208
213
|
}
|
|
209
214
|
}
|
|
210
215
|
```
|
|
211
|
-
### Graph middlewares
|
|
212
|
-
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.
|
|
213
216
|
|
|
214
|
-
|
|
215
|
-
|
|
217
|
+
### Graph middleware
|
|
218
|
+
When working on large scale applications, we often need to to hook into various low level operations. Obsidian lets you hook into the graph creation process by adding middleware(s).
|
|
219
|
+
|
|
220
|
+
Those middleware are invoked in LIFO order and can be used for various purposes:
|
|
221
|
+
1. Create a graph yourself instead of letting Obsidian to instantiate it.
|
|
216
222
|
2. Add logging to graph creation.
|
|
217
223
|
3. Handle errors when Obsidian instantiates graphs.
|
|
218
224
|
4. Replace graphs with mocks for testing purposes.
|
|
219
225
|
|
|
220
|
-
|
|
226
|
+
Middleware follow the Chain of Responsibility pattern and therefore must always return a graph, either by creating one explicitly or by returning the instance created by another member in the resolve chain.
|
|
221
227
|
|
|
222
228
|
#### Adding a logging middleware
|
|
223
229
|
The following example demonstrates how to add a middleware that's used for logging purposes.
|
|
@@ -234,6 +240,10 @@ const loggingMiddleware = new class extends GraphMiddleware {
|
|
|
234
240
|
}();
|
|
235
241
|
Obsidian.addGraphMiddleware(loggingMiddleware);
|
|
236
242
|
```
|
|
243
|
+
|
|
244
|
+
#### Clear graphs
|
|
245
|
+
Graphs can be cleared by invoking `Obsidian.clearGraphs()`. This is useful in tests or when you need to reset the system to it's original state, for example when a user logs out.
|
|
246
|
+
|
|
237
247
|
## Prerequisites
|
|
238
248
|
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.
|
|
239
249
|
|
|
@@ -260,7 +270,7 @@ Add the following options to your `tsconfig.json` file.
|
|
|
260
270
|
```
|
|
261
271
|
|
|
262
272
|
### Babel
|
|
263
|
-
Obsidian relies on reflection to resolve dependencies. Production code is typically mangled to reduce bundle size. This means that some names Obsidian expects are changed during the mangling process. To
|
|
273
|
+
Obsidian relies on reflection to resolve dependencies. Production code is typically mangled to reduce bundle size. This means that some names Obsidian expects are changed during the mangling process. To work around this, Obsidian persists the names of methods annotated with the `@Provides` decorator with a Babel transformer.
|
|
264
274
|
|
|
265
275
|
### Add Obsidian's babel transformer
|
|
266
276
|
Add the transformer to the list of plugins in your `.babel` file.
|
|
@@ -282,6 +292,9 @@ module.exports = {
|
|
|
282
292
|
### Jest
|
|
283
293
|
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.
|
|
284
294
|
|
|
295
|
+
### Peer Dependencies
|
|
296
|
+
Obsidian has a peer dependency on `lodash`.
|
|
297
|
+
|
|
285
298
|
## Related
|
|
286
299
|
|
|
287
300
|
* [InversifyJS](https://github.com/inversify/InversifyJS)
|
package/babel.config.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
module.exports = {
|
|
2
2
|
presets: [
|
|
3
|
-
['@babel/preset-env', { targets: { node: 'current' }
|
|
3
|
+
['@babel/preset-env', { targets: { node: 'current' }}],
|
|
4
4
|
['@babel/preset-typescript', {'onlyRemoveTypeImports': true}],
|
|
5
5
|
'@babel/preset-react',
|
|
6
6
|
],
|
|
7
7
|
plugins: [
|
|
8
8
|
`${__dirname}/dist/transformers/babel-plugin-obsidian`,
|
|
9
9
|
['@babel/plugin-proposal-decorators', { legacy: true }],
|
|
10
|
-
|
|
10
|
+
'@babel/plugin-proposal-class-properties',
|
|
11
11
|
'babel-plugin-parameter-decorator'
|
|
12
12
|
],
|
|
13
13
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resetGraphs.d.ts","sourceRoot":"","sources":["../resetGraphs.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resetGraphs.js","sourceRoot":"","sources":["../resetGraphs.ts"],"names":[],"mappings":";;AAAA,6BAAiC;AAEjC,UAAU,CAAC;IACT,cAAQ,CAAC,WAAW,EAAE,CAAC;AACzB,CAAC,CAAC,CAAC"}
|
package/dist/src/Obsidian.d.ts
CHANGED
|
@@ -3,8 +3,9 @@ import { Constructable, GraphInternals, ServiceLocator } from './types';
|
|
|
3
3
|
import { GraphMiddleware } from './graph/registry/GraphMiddleware';
|
|
4
4
|
export default class Obsidian {
|
|
5
5
|
obtain<T extends ObjectGraph<P>, P = any>(Graph: Constructable<T>, props?: P): ServiceLocator<Omit<T, GraphInternals>>;
|
|
6
|
-
inject<T extends object>(target: T): object;
|
|
6
|
+
inject<T extends object>(target: T, graph?: ObjectGraph): object;
|
|
7
7
|
addGraphMiddleware(middleware: GraphMiddleware): void;
|
|
8
8
|
clearGraphMiddlewares(): void;
|
|
9
|
+
clearGraphs(): void;
|
|
9
10
|
}
|
|
10
11
|
//# sourceMappingURL=Obsidian.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Obsidian.d.ts","sourceRoot":"","sources":["../../src/Obsidian.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAGnE,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,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"Obsidian.d.ts","sourceRoot":"","sources":["../../src/Obsidian.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAGnE,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,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,WAAW;IAIvD,kBAAkB,CAAC,UAAU,EAAE,eAAe;IAI9C,qBAAqB;IAIrB,WAAW;CAIZ"}
|
package/dist/src/Obsidian.js
CHANGED
|
@@ -11,8 +11,8 @@ var Obsidian = /** @class */ (function () {
|
|
|
11
11
|
Obsidian.prototype.obtain = function (Graph, props) {
|
|
12
12
|
return GraphRegistry_1.default.resolve(Graph, props);
|
|
13
13
|
};
|
|
14
|
-
Obsidian.prototype.inject = function (target) {
|
|
15
|
-
return LazyInjector_1.default.inject(target);
|
|
14
|
+
Obsidian.prototype.inject = function (target, graph) {
|
|
15
|
+
return LazyInjector_1.default.inject(target, graph);
|
|
16
16
|
};
|
|
17
17
|
Obsidian.prototype.addGraphMiddleware = function (middleware) {
|
|
18
18
|
GraphRegistry_1.default.addGraphMiddleware(middleware);
|
|
@@ -20,6 +20,10 @@ var Obsidian = /** @class */ (function () {
|
|
|
20
20
|
Obsidian.prototype.clearGraphMiddlewares = function () {
|
|
21
21
|
GraphRegistry_1.default.clearGraphMiddlewares();
|
|
22
22
|
};
|
|
23
|
+
Obsidian.prototype.clearGraphs = function () {
|
|
24
|
+
GraphRegistry_1.default.clearGraphMiddlewares();
|
|
25
|
+
GraphRegistry_1.default.clearAll();
|
|
26
|
+
};
|
|
23
27
|
return Obsidian;
|
|
24
28
|
}());
|
|
25
29
|
exports.default = Obsidian;
|
package/dist/src/Obsidian.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Obsidian.js","sourceRoot":"","sources":["../../src/Obsidian.ts"],"names":[],"mappings":";;;;;AAAA,iFAA2D;AAI3D,gFAA0D;AAE1D;IAAA;
|
|
1
|
+
{"version":3,"file":"Obsidian.js","sourceRoot":"","sources":["../../src/Obsidian.ts"],"names":[],"mappings":";;;;;AAAA,iFAA2D;AAI3D,gFAA0D;AAE1D;IAAA;IAwBA,CAAC;IAvBC,yBAAM,GAAN,UACE,KAAuB,EACvB,KAAS;QAET,OAAO,uBAAa,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAiC,CAAC;IAC7E,CAAC;IAED,yBAAM,GAAN,UAAyB,MAAS,EAAE,KAAmB;QACrD,OAAO,sBAAY,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC5C,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;IAED,8BAAW,GAAX;QACE,uBAAa,CAAC,qBAAqB,EAAE,CAAC;QACtC,uBAAa,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IACH,eAAC;AAAD,CAAC,AAxBD,IAwBC"}
|
|
@@ -18,7 +18,7 @@ export declare class GraphRegistry {
|
|
|
18
18
|
clear(graph: Graph): void;
|
|
19
19
|
addGraphMiddleware(middleware: Middleware<Graph>): void;
|
|
20
20
|
clearGraphMiddlewares(): void;
|
|
21
|
-
|
|
21
|
+
clearAll(): void;
|
|
22
22
|
}
|
|
23
23
|
declare const _default: GraphRegistry;
|
|
24
24
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphRegistry.d.ts","sourceRoot":"","sources":["../../../../src/graph/registry/GraphRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA+C;IACrF,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA0C;IAChF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4B;IAC3D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA8D;IAC/F,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA8B;IAE/D,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,SAAS,GAAE,aAAa,CAAC,KAAK,CAAC,EAAO;IAIlF,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE;IAMnC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;IAIrC,OAAO,CAAC,CAAC,SAAS,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC;IASjE,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,GAAG;IAQX,OAAO,CAAC,WAAW;IAInB,KAAK,CAAC,KAAK,EAAE,KAAK;IAOlB,kBAAkB,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC;IAIhD,qBAAqB;IAIrB,
|
|
1
|
+
{"version":3,"file":"GraphRegistry.d.ts","sourceRoot":"","sources":["../../../../src/graph/registry/GraphRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA+C;IACrF,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA0C;IAChF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4B;IAC3D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA8D;IAC/F,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA8B;IAE/D,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,SAAS,GAAE,aAAa,CAAC,KAAK,CAAC,EAAO;IAIlF,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE;IAMnC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;IAIrC,OAAO,CAAC,CAAC,SAAS,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC;IASjE,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,GAAG;IAQX,OAAO,CAAC,WAAW;IAInB,KAAK,CAAC,KAAK,EAAE,KAAK;IAOlB,kBAAkB,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC;IAIhD,qBAAqB;IAIrB,QAAQ;CAKT;;AAED,wBAAmC"}
|
|
@@ -65,7 +65,7 @@ var GraphRegistry = /** @class */ (function () {
|
|
|
65
65
|
GraphRegistry.prototype.clearGraphMiddlewares = function () {
|
|
66
66
|
this.graphMiddlewares.clear();
|
|
67
67
|
};
|
|
68
|
-
GraphRegistry.prototype.
|
|
68
|
+
GraphRegistry.prototype.clearAll = function () {
|
|
69
69
|
this.instanceToConstructor.clear();
|
|
70
70
|
this.constructorToInstance.clear();
|
|
71
71
|
this.nameToInstance.clear();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphRegistry.js","sourceRoot":"","sources":["../../../../src/graph/registry/GraphRegistry.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"GraphRegistry.js","sourceRoot":"","sources":["../../../../src/graph/registry/GraphRegistry.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
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":";;;;;;;;;;;;;;;;;;;;AAEA,+FAAyE;AACzE,wDAAmC;AACnC,gFAA0D;AAG1D,0CAAwB;AAExB,4CAA2C;AAAlC,8FAAA,KAAK,OAAA;AACd,oDAAmD;AAA1C,sGAAA,SAAS,OAAA;AAClB,mDAAkD;AAAzC,0GAAA,WAAW,OAAA;AAEpB,2DAA0D;AAAjD,oGAAA,QAAQ,OAAA;AACjB,6DAA4D;AAAnD,wGAAA,UAAU,OAAA;AACnB,qDAAoD;AAA3C,gGAAA,MAAM,OAAA;AACf,6DAA4D;AAAnD,wGAAA,UAAU,OAAA;AACnB,oEAAmE;AAA1D,kHAAA,eAAe,OAAA;AAEX,QAAA,QAAQ,GAAG,IAAI,kBAAS,EAAE,CAAC;AAExC,IAAM,iBAAiB,GAAG,IAAI,2BAAiB,EAAE,CAAC;AAC3C,IAAM,eAAe,GAAG,UAC7B,MAAkC,EAClC,KAAkC,IAC/B,OAAA,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAvC,CAAuC,CAAC;AAHhC,QAAA,eAAe,mBAGiB;AAE7C,IAAM,YAAY,GAAG,IAAI,sBAAY,EAAE,CAAC;AACjC,IAAM,UAAU,GAAG,UACxB,IAA4B,EAC5B,KAAkC,IAC/B,OAAA,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,EAAhC,CAAgC,CAAC;AAHzB,QAAA,UAAU,cAGe;AAEtC,sCAAqC;AAA5B,kGAAA,OAAO,OAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { ObjectGraph } from '../../graph/ObjectGraph';
|
|
1
2
|
export declare const GRAPH_INSTANCE_NAME_KEY = "GRAPH_INSTANCE_NAME";
|
|
2
3
|
declare class LazyInjector<T extends object> {
|
|
3
|
-
inject(target: T): T;
|
|
4
|
+
inject(target: T, sourceGraph?: ObjectGraph): T;
|
|
4
5
|
private getGraphInstance;
|
|
5
6
|
}
|
|
6
7
|
declare const _default: LazyInjector<object>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LazyInjector.d.ts","sourceRoot":"","sources":["../../../../src/injectors/class/LazyInjector.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LazyInjector.d.ts","sourceRoot":"","sources":["../../../../src/injectors/class/LazyInjector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAItD,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAE7D,cAAM,YAAY,CAAC,CAAC,SAAS,MAAM;IACjC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,CAAC;IAS/C,OAAO,CAAC,gBAAgB;CAIzB;;AAED,wBAAkC"}
|
|
@@ -10,9 +10,9 @@ exports.GRAPH_INSTANCE_NAME_KEY = 'GRAPH_INSTANCE_NAME';
|
|
|
10
10
|
var LazyInjector = /** @class */ (function () {
|
|
11
11
|
function LazyInjector() {
|
|
12
12
|
}
|
|
13
|
-
LazyInjector.prototype.inject = function (target) {
|
|
13
|
+
LazyInjector.prototype.inject = function (target, sourceGraph) {
|
|
14
14
|
var injectionMetadata = new InjectionMetadata_1.default();
|
|
15
|
-
var graph = this.getGraphInstance(target);
|
|
15
|
+
var graph = sourceGraph !== null && sourceGraph !== void 0 ? sourceGraph : this.getGraphInstance(target);
|
|
16
16
|
injectionMetadata.getLazyPropertiesToInject(target.constructor).forEach(function (key) {
|
|
17
17
|
Reflect.set(target, key, graph.retrieve(key));
|
|
18
18
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LazyInjector.js","sourceRoot":"","sources":["../../../../src/injectors/class/LazyInjector.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"LazyInjector.js","sourceRoot":"","sources":["../../../../src/injectors/class/LazyInjector.ts"],"names":[],"mappings":";;;;;;AACA,qFAA+D;AAC/D,0EAAoD;AAEvC,QAAA,uBAAuB,GAAG,qBAAqB,CAAC;AAE7D;IAAA;IAcA,CAAC;IAbC,6BAAM,GAAN,UAAO,MAAS,EAAE,WAAyB;QACzC,IAAM,iBAAiB,GAAG,IAAI,2BAAiB,EAAE,CAAC;QAClD,IAAM,KAAK,GAAG,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC3D,iBAAiB,CAAC,yBAAyB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,UAAC,GAAG;YAC1E,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,uCAAgB,GAAxB,UAAyB,MAAS;QAChC,IAAM,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,+BAAuB,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3F,OAAO,uBAAa,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IAC3D,CAAC;IACH,mBAAC;AAAD,CAAC,AAdD,IAcC;AAED,kBAAe,IAAI,YAAY,EAAE,CAAC"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComponentInjector.js","sourceRoot":"","sources":["../../../../src/injectors/components/ComponentInjector.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ComponentInjector.js","sourceRoot":"","sources":["../../../../src/injectors/components/ComponentInjector.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAAwC;AACxC,oFAA2D;AAE3D,kEAA4C;AAC5C,wDAAkC;AAGlC;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":"index.d.ts","sourceRoot":"","sources":["../../testkit/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../testkit/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C,cAAM,OAAO;IACJ,UAAU,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,WAAW,CAAC,CAAC;CAY/G;AAED,eAAO,MAAM,OAAO,SAAgB,CAAC"}
|
package/dist/testkit/index.js
CHANGED
|
@@ -22,10 +22,6 @@ exports.testKit = void 0;
|
|
|
22
22
|
var ObjectGraph_1 = require("../src/graph/ObjectGraph");
|
|
23
23
|
var GraphMiddleware_1 = require("../src/graph/registry/GraphMiddleware");
|
|
24
24
|
var GraphRegistry_1 = __importDefault(require("../src/graph/registry/GraphRegistry"));
|
|
25
|
-
beforeEach(function () {
|
|
26
|
-
GraphRegistry_1.default.clearGraphMiddlewares();
|
|
27
|
-
GraphRegistry_1.default.reset();
|
|
28
|
-
});
|
|
29
25
|
var TestKit = /** @class */ (function () {
|
|
30
26
|
function TestKit() {
|
|
31
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../testkit/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA,wDAAgE;AAChE,yEAAwE;AAExE,sFAAgE;AAEhE
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../testkit/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA,wDAAgE;AAChE,yEAAwE;AAExE,sFAAgE;AAEhE;IAAA;IAaA,CAAC;IAZQ,4BAAU,GAAjB,UAAkB,gBAA4F;QAC5G,IAAM,eAAe,GAAG;YAAkB,2BAAe;YAA7B;;YAQ5B,CAAC;YAPC,yBAAO,GAAP,UAAe,YAA+B,EAAE,KAAiC,EAAE,KAAa;gBAC9F,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;oBAChC,IAAM,gBAAgB,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACtD,OAAO,IAAA,qBAAO,EAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;iBAC1F;gBACD,OAAO,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC5C,CAAC;YACH,cAAC;QAAD,CAAC,AAR2B,CAAc,iCAAe,IAQtD,CAAC;QACJ,uBAAa,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACpD,CAAC;IACH,cAAC;AAAD,CAAC,AAbD,IAaC;AAEY,QAAA,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC"}
|
package/jest.setup-after-env.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-obsidian",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.19",
|
|
4
4
|
"description": "Dependency injection framework for React and React Native applications",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"prepack": "npm run lint && tsc --project tsconfig.prod.json",
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"@babel/preset-react": "7.16.x",
|
|
29
29
|
"@babel/preset-typescript": "7.16.x",
|
|
30
30
|
"@babel/types": "7.16.x",
|
|
31
|
+
"@babel/traverse": "7.16.x",
|
|
31
32
|
"@johanblumenberg/ts-mockito": "1.x.x",
|
|
32
33
|
"@testing-library/react": "^12.1.2",
|
|
33
34
|
"@testing-library/react-hooks": "^7.0.2",
|
|
@@ -46,6 +47,7 @@
|
|
|
46
47
|
"eslint-plugin-jsx-a11y": "^6.4.1",
|
|
47
48
|
"eslint-plugin-react": "^7.26.1",
|
|
48
49
|
"eslint-plugin-react-hooks": "^4.2.0",
|
|
50
|
+
"eslint-plugin-unused-imports": "1.x.x",
|
|
49
51
|
"jest": "27.x.x",
|
|
50
52
|
"lodash": "^4.17.21",
|
|
51
53
|
"react": "17.0.2",
|
package/resetGraphs.ts
ADDED
package/src/Obsidian.ts
CHANGED
|
@@ -12,8 +12,8 @@ export default class Obsidian {
|
|
|
12
12
|
return graphRegistry.resolve(Graph, props) as unknown as ServiceLocator<T>;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
inject<T extends object>(target: T) {
|
|
16
|
-
return lazyInjector.inject(target);
|
|
15
|
+
inject<T extends object>(target: T, graph?: ObjectGraph) {
|
|
16
|
+
return lazyInjector.inject(target, graph);
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
addGraphMiddleware(middleware: GraphMiddleware) {
|
|
@@ -23,4 +23,9 @@ export default class Obsidian {
|
|
|
23
23
|
clearGraphMiddlewares() {
|
|
24
24
|
graphRegistry.clearGraphMiddlewares();
|
|
25
25
|
}
|
|
26
|
+
|
|
27
|
+
clearGraphs() {
|
|
28
|
+
graphRegistry.clearGraphMiddlewares();
|
|
29
|
+
graphRegistry.clearAll();
|
|
30
|
+
}
|
|
26
31
|
}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
+
import { ObjectGraph } from '../../graph/ObjectGraph';
|
|
1
2
|
import graphRegistry from '../../graph/registry/GraphRegistry';
|
|
2
3
|
import InjectionMetadata from './InjectionMetadata';
|
|
3
4
|
|
|
4
5
|
export const GRAPH_INSTANCE_NAME_KEY = 'GRAPH_INSTANCE_NAME';
|
|
5
6
|
|
|
6
7
|
class LazyInjector<T extends object> {
|
|
7
|
-
inject(target: T): T {
|
|
8
|
+
inject(target: T, sourceGraph?: ObjectGraph): T {
|
|
8
9
|
const injectionMetadata = new InjectionMetadata();
|
|
9
|
-
const graph = this.getGraphInstance(target);
|
|
10
|
+
const graph = sourceGraph ?? this.getGraphInstance(target);
|
|
10
11
|
injectionMetadata.getLazyPropertiesToInject(target.constructor).forEach((key) => {
|
|
11
12
|
Reflect.set(target, key, graph.retrieve(key));
|
|
12
13
|
});
|
package/testkit/index.ts
CHANGED
|
@@ -4,11 +4,6 @@ import { GraphMiddleware } from '../src/graph/registry/GraphMiddleware';
|
|
|
4
4
|
import { Constructable } from '../src/types';
|
|
5
5
|
import graphRegistry from '../src/graph/registry/GraphRegistry';
|
|
6
6
|
|
|
7
|
-
beforeEach(() => {
|
|
8
|
-
graphRegistry.clearGraphMiddlewares();
|
|
9
|
-
graphRegistry.reset();
|
|
10
|
-
});
|
|
11
|
-
|
|
12
7
|
class TestKit {
|
|
13
8
|
public mockGraphs(graphNameToGraph: Record<string, Constructable<ObjectGraph> | ((props: any) => ObjectGraph)>) {
|
|
14
9
|
const graphMiddleware = new class extends GraphMiddleware {
|
package/tsconfig.base.json
CHANGED
package/jest.setup.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import 'reflect-metadata';
|