react-obsidian 0.0.10 → 0.0.14
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/README.md +82 -7
- package/babel.config.js +3 -2
- package/dist/src/GraphProperties.d.ts +1 -0
- package/dist/src/GraphProperties.d.ts.map +1 -1
- package/dist/src/GraphProperties.js +3 -0
- package/dist/src/GraphProperties.js.map +1 -1
- package/dist/src/ProvidedPropertiesStore.d.ts +1 -0
- package/dist/src/ProvidedPropertiesStore.d.ts.map +1 -1
- package/dist/src/ProvidedPropertiesStore.js +4 -0
- package/dist/src/ProvidedPropertiesStore.js.map +1 -1
- package/dist/src/decorators/Graph.d.ts +2 -3
- package/dist/src/decorators/Graph.d.ts.map +1 -1
- package/dist/src/decorators/Graph.js +2 -3
- package/dist/src/decorators/Graph.js.map +1 -1
- package/dist/src/decorators/Singleton.d.ts +4 -0
- package/dist/src/decorators/Singleton.d.ts.map +1 -0
- package/dist/src/decorators/Singleton.js +12 -0
- package/dist/src/decorators/Singleton.js.map +1 -0
- package/dist/src/decorators/inject/Inject.d.ts +2 -0
- package/dist/src/decorators/inject/Inject.d.ts.map +1 -0
- package/dist/src/decorators/inject/Inject.js +21 -0
- package/dist/src/decorators/inject/Inject.js.map +1 -0
- package/dist/src/decorators/inject/Injectable.d.ts +4 -0
- package/dist/src/decorators/inject/Injectable.d.ts.map +1 -0
- package/dist/src/decorators/inject/Injectable.js +13 -0
- package/dist/src/decorators/inject/Injectable.js.map +1 -0
- package/dist/src/decorators/provides/MemoizeDescriptor.d.ts.map +1 -1
- package/dist/src/decorators/provides/MemoizeDescriptor.js +4 -4
- package/dist/src/decorators/provides/MemoizeDescriptor.js.map +1 -1
- package/dist/src/decorators/provides/Provides.d.ts +0 -2
- package/dist/src/decorators/provides/Provides.d.ts.map +1 -1
- package/dist/src/decorators/provides/Provides.js.map +1 -1
- package/dist/src/graph/ObjectGraph.d.ts +0 -2
- package/dist/src/graph/ObjectGraph.d.ts.map +1 -1
- package/dist/src/graph/ObjectGraph.js +2 -2
- package/dist/src/graph/ObjectGraph.js.map +1 -1
- package/dist/src/graph/ProviderBinder.d.ts +3 -0
- package/dist/src/graph/ProviderBinder.d.ts.map +1 -0
- package/dist/src/graph/ProviderBinder.js +18 -0
- package/dist/src/graph/ProviderBinder.js.map +1 -0
- package/dist/src/graph/registry/GraphRegistry.d.ts +8 -8
- package/dist/src/graph/registry/GraphRegistry.d.ts.map +1 -1
- package/dist/src/graph/registry/GraphRegistry.js +23 -22
- package/dist/src/graph/registry/GraphRegistry.js.map +1 -1
- package/dist/src/index.d.ts +3 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +7 -5
- package/dist/src/index.js.map +1 -1
- package/dist/src/injectors/class/ClassInjector.d.ts +12 -0
- package/dist/src/injectors/class/ClassInjector.d.ts.map +1 -0
- package/dist/src/injectors/class/ClassInjector.js +58 -0
- package/dist/src/injectors/class/ClassInjector.js.map +1 -0
- package/dist/src/injectors/class/ConstructorArgs.d.ts +8 -0
- package/dist/src/injectors/class/ConstructorArgs.d.ts.map +1 -0
- package/dist/src/injectors/class/ConstructorArgs.js +25 -0
- package/dist/src/injectors/class/ConstructorArgs.js.map +1 -0
- package/dist/src/injectors/class/InjectionMetadata.d.ts +10 -0
- package/dist/src/injectors/class/InjectionMetadata.d.ts.map +1 -0
- package/dist/src/injectors/class/InjectionMetadata.js +28 -0
- package/dist/src/injectors/class/InjectionMetadata.js.map +1 -0
- 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 +0 -1
- package/dist/src/injectors/components/ComponentInjector.js.map +1 -1
- package/dist/src/types/index.d.ts +0 -1
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/test/integration/fixtures/MainGraph.d.ts +1 -0
- package/dist/test/integration/fixtures/MainGraph.d.ts.map +1 -1
- package/dist/test/integration/fixtures/MainGraph.js +10 -0
- package/dist/test/integration/fixtures/MainGraph.js.map +1 -1
- package/dist/test/integration/fixtures/SingletonGraph.d.ts +6 -0
- package/dist/test/integration/fixtures/SingletonGraph.d.ts.map +1 -0
- package/dist/test/integration/fixtures/SingletonGraph.js +53 -0
- package/dist/test/integration/fixtures/SingletonGraph.js.map +1 -0
- package/dist/test/integration/fixtures/UniqueNumberGraph.d.ts +8 -0
- package/dist/test/integration/fixtures/UniqueNumberGraph.d.ts.map +1 -0
- package/dist/test/integration/fixtures/UniqueNumberGraph.js +62 -0
- package/dist/test/integration/fixtures/UniqueNumberGraph.js.map +1 -0
- package/dist/test/integration/fixtures/injectedValues.d.ts +1 -0
- package/dist/test/integration/fixtures/injectedValues.d.ts.map +1 -1
- package/dist/test/integration/fixtures/injectedValues.js +1 -0
- package/dist/test/integration/fixtures/injectedValues.js.map +1 -1
- package/dist/transformers/{babel-plugin-obsidian-provide → babel-plugin-obsidian}/helpers/index.d.ts +3 -2
- package/dist/transformers/babel-plugin-obsidian/helpers/index.d.ts.map +1 -0
- package/dist/transformers/{babel-plugin-obsidian-provide → babel-plugin-obsidian}/helpers/index.js +22 -4
- package/dist/transformers/babel-plugin-obsidian/helpers/index.js.map +1 -0
- package/dist/transformers/{babel-plugin-obsidian-provide → babel-plugin-obsidian}/index.d.ts +0 -0
- package/dist/transformers/babel-plugin-obsidian/index.d.ts.map +1 -0
- package/dist/transformers/{babel-plugin-obsidian-provide → babel-plugin-obsidian}/index.js +27 -1
- package/dist/transformers/babel-plugin-obsidian/index.js.map +1 -0
- package/example/babel.config.js +1 -1
- package/example/ios/example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/jest.config.js +4 -0
- package/jest.setup-after-env.js +1 -0
- package/jest.setup.ts +1 -0
- package/package.json +5 -3
- package/src/GraphProperties.ts +4 -0
- package/src/ProvidedPropertiesStore.ts +4 -0
- package/src/decorators/Graph.ts +2 -5
- package/src/decorators/Singleton.ts +14 -0
- package/src/decorators/inject/Inject.ts +17 -0
- package/src/decorators/inject/Injectable.ts +8 -0
- package/src/decorators/provides/MemoizeDescriptor.ts +3 -4
- package/src/decorators/provides/Provides.ts +0 -2
- package/src/graph/ObjectGraph.ts +2 -5
- package/src/graph/ProviderBinder.ts +12 -0
- package/src/graph/registry/GraphRegistry.ts +27 -32
- package/src/index.ts +3 -2
- package/src/injectors/class/ClassInjector.ts +49 -0
- package/src/injectors/class/ConstructorArgs.ts +20 -0
- package/src/injectors/class/InjectionMetadata.ts +32 -0
- package/src/injectors/components/ComponentInjector.tsx +0 -1
- package/src/types/index.ts +0 -2
- package/testkit/index.ts +1 -1
- package/transformers/{babel-plugin-obsidian-provide → babel-plugin-obsidian}/helpers/index.ts +26 -2
- package/transformers/{babel-plugin-obsidian-provide → babel-plugin-obsidian}/index.ts +37 -3
- package/dist/src/ScopedValuesRegistry.d.ts +0 -11
- package/dist/src/ScopedValuesRegistry.d.ts.map +0 -1
- package/dist/src/ScopedValuesRegistry.js +0 -25
- package/dist/src/ScopedValuesRegistry.js.map +0 -1
- package/dist/src/decorators/injectClass.d.ts +0 -7
- package/dist/src/decorators/injectClass.d.ts.map +0 -1
- package/dist/src/decorators/injectClass.js +0 -34
- package/dist/src/decorators/injectClass.js.map +0 -1
- package/dist/src/graph/autobind.d.ts +0 -2
- package/dist/src/graph/autobind.d.ts.map +0 -1
- package/dist/src/graph/autobind.js +0 -12
- package/dist/src/graph/autobind.js.map +0 -1
- package/dist/transformers/babel-plugin-obsidian-provide/helpers/index.d.ts.map +0 -1
- package/dist/transformers/babel-plugin-obsidian-provide/helpers/index.js.map +0 -1
- package/dist/transformers/babel-plugin-obsidian-provide/index.d.ts.map +0 -1
- package/dist/transformers/babel-plugin-obsidian-provide/index.js.map +0 -1
- package/src/ScopedValuesRegistry.ts +0 -26
- package/src/decorators/injectClass.ts +0 -28
- package/src/graph/autobind.ts +0 -7
package/README.md
CHANGED
|
@@ -15,6 +15,8 @@ React Obsidian is guided by the principles of the Dependency Injection pattern,
|
|
|
15
15
|
npm install react-obsidian
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
+
See the [#Prerequisites](https://github.com/wix-incubator/react-obsidian#prerequisites) section for additional requirements.
|
|
19
|
+
|
|
18
20
|
## Usage
|
|
19
21
|
|
|
20
22
|
### Declare an object graph
|
|
@@ -29,8 +31,8 @@ Both functions are annotated by the `@Provides()` annotation. This signals Obsid
|
|
|
29
31
|
Notice how the biLogger function receives an `httpClient` as an argument. This means that `biLogger` has a dependency on `httpClient`. Obsidian will create an `httpClient` when `biLogger` is injected.
|
|
30
32
|
|
|
31
33
|
``` typescript
|
|
32
|
-
@Graph()
|
|
33
|
-
|
|
34
|
+
@Singleton() @Graph()
|
|
35
|
+
class ApplicationGraph extends ObjectGraph {
|
|
34
36
|
@Provides()
|
|
35
37
|
httpClient(): HttpClient {
|
|
36
38
|
return new HttpClient();
|
|
@@ -95,8 +97,9 @@ const Component = () => (
|
|
|
95
97
|
```
|
|
96
98
|
|
|
97
99
|
### Class injection
|
|
98
|
-
Obsidian supports
|
|
100
|
+
Obsidian supports injecting both class properties and constructor arguments.
|
|
99
101
|
|
|
102
|
+
#### Injecting properties
|
|
100
103
|
```typescript
|
|
101
104
|
@Injectable(ApplicationGraph)
|
|
102
105
|
class ButtonController {
|
|
@@ -108,6 +111,25 @@ class ButtonController {
|
|
|
108
111
|
}
|
|
109
112
|
```
|
|
110
113
|
|
|
114
|
+
#### Injecting constructor arguments
|
|
115
|
+
```typescript
|
|
116
|
+
@Injectable(ApplicationGraph)
|
|
117
|
+
class Presenter {
|
|
118
|
+
constructor(@Inject() public biLogger: BiLogger) { }
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
TypeScript's compiler won't let you construct the class without providing the argument `anotherString` as it's not optional.
|
|
123
|
+
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.
|
|
124
|
+
|
|
125
|
+
```typescript
|
|
126
|
+
@Injectable(ApplicationGraph)
|
|
127
|
+
class Presenter {
|
|
128
|
+
constructor(biLogger?: BiLogger);
|
|
129
|
+
constructor(@Inject() public biLogger: BiLogger) { }
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
111
133
|
### Obtaining dependencies from a graph
|
|
112
134
|
Dependencies can also be obtained by accessing the graph that provides them.
|
|
113
135
|
|
|
@@ -118,6 +140,54 @@ Obsidian.obtain(ApplicationGraph).biLogger();
|
|
|
118
140
|
> 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.
|
|
119
141
|
|
|
120
142
|
## Advance usage
|
|
143
|
+
### Accessing props in graphs
|
|
144
|
+
If a graph is instantiated in order to inject a component, then it receives the component's props in the constructor.
|
|
145
|
+
```typescript
|
|
146
|
+
@Graph()
|
|
147
|
+
class ProfileScreenGraph extends ObjectGraph<ProfileScreenProps> {
|
|
148
|
+
private profile: UserProfile;
|
|
149
|
+
|
|
150
|
+
constructor(props: ProfileScreenProps) {
|
|
151
|
+
super(props);
|
|
152
|
+
this.profile = props.profile;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
@Provides()
|
|
156
|
+
profileFetcher(): ProfileFetcher {
|
|
157
|
+
return new ProfileFetcher(this.profile);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
```
|
|
161
|
+
### Singleton graphs and providers
|
|
162
|
+
Graphs and Providers can be marked as singletons with the `@Singleton` decorator. When a graph is marked as a singleton, when an instance of that 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.
|
|
163
|
+
|
|
164
|
+
Singleton providers are shared between all instances of a graph.
|
|
165
|
+
|
|
166
|
+
```typescript
|
|
167
|
+
@Graph()
|
|
168
|
+
class PushedScreenGraph { // A new PushedScreenGraph instance is created each time the corresponding screen is created
|
|
169
|
+
@Provides()
|
|
170
|
+
presenter(): PushedScreenPresenter {
|
|
171
|
+
return new PushedScreenPresenter(); // Created each time PushedGraph is created
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
@Provides() @Singleton()
|
|
175
|
+
someUseCase(): SomeUseCase {
|
|
176
|
+
return new SomeUseCase(); // Created once for all PushedGraph instances
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
In this example we declared a singleton graph. This means that all of its providers are also singleton.
|
|
182
|
+
```typescript
|
|
183
|
+
@Singleton() @Graph()
|
|
184
|
+
class ApplicationGraph {
|
|
185
|
+
@Provides()
|
|
186
|
+
biLogger(): BiLogger {
|
|
187
|
+
return new BiLogger() // Created once because the graph is a singleton
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
```
|
|
121
191
|
### Graph middlewares
|
|
122
192
|
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.
|
|
123
193
|
|
|
@@ -134,7 +204,7 @@ The following example demonstrates how to add a middleware that's used for loggi
|
|
|
134
204
|
|
|
135
205
|
```typescript
|
|
136
206
|
const loggingMiddleware = new class extends GraphMiddleware {
|
|
137
|
-
resolve<
|
|
207
|
+
resolve<Props>(resolveChain: GraphResolveChain, Graph: Constructable<T>, props?: Props) {
|
|
138
208
|
const t1 = Date.now();
|
|
139
209
|
const graph = resolveChain.proceed(Graph, props);
|
|
140
210
|
const t2 = Date.now();
|
|
@@ -176,11 +246,16 @@ Obsidian relies on reflection to resolve dependencies. Production code is typica
|
|
|
176
246
|
Add the transformer to the list of plugins in your `.babel` file.
|
|
177
247
|
```js
|
|
178
248
|
module.exports = {
|
|
179
|
-
presets: [
|
|
249
|
+
presets: [
|
|
250
|
+
'module:metro-react-native-babel-preset',
|
|
251
|
+
['@babel/preset-typescript', {'onlyRemoveTypeImports': true}]
|
|
252
|
+
],
|
|
180
253
|
plugins: [
|
|
254
|
+
react-obsidian/dist/transformers/babel-plugin-obsidian,
|
|
181
255
|
['@babel/plugin-proposal-decorators', {legacy: true}],
|
|
182
|
-
|
|
183
|
-
|
|
256
|
+
['@babel/plugin-proposal-class-properties', { legacy: true }],
|
|
257
|
+
'babel-plugin-parameter-decorator'
|
|
258
|
+
]
|
|
184
259
|
};
|
|
185
260
|
```
|
|
186
261
|
|
package/babel.config.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
module.exports = {
|
|
2
2
|
presets: [
|
|
3
3
|
['@babel/preset-env', { targets: { node: 'current' } }],
|
|
4
|
-
'@babel/preset-typescript',
|
|
4
|
+
['@babel/preset-typescript', {'onlyRemoveTypeImports': true}],
|
|
5
5
|
'@babel/preset-react',
|
|
6
6
|
],
|
|
7
7
|
plugins: [
|
|
8
|
-
`${__dirname}/dist/transformers/babel-plugin-obsidian
|
|
8
|
+
`${__dirname}/dist/transformers/babel-plugin-obsidian`,
|
|
9
9
|
['@babel/plugin-proposal-decorators', { legacy: true }],
|
|
10
10
|
['@babel/plugin-proposal-class-properties', { legacy: true }],
|
|
11
|
+
'babel-plugin-parameter-decorator'
|
|
11
12
|
],
|
|
12
13
|
};
|
|
@@ -2,5 +2,6 @@ export default class GraphProperties {
|
|
|
2
2
|
private unmangledToMangledPropKeys;
|
|
3
3
|
add(mangledPropertyKey: string, unmangledPropertyKey: string): void;
|
|
4
4
|
getMangledProperty(unmangledProperty: string): string | undefined;
|
|
5
|
+
getMangledProperties(): string[];
|
|
5
6
|
}
|
|
6
7
|
//# sourceMappingURL=GraphProperties.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphProperties.d.ts","sourceRoot":"","sources":["../../src/GraphProperties.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,eAAe;IAClC,OAAO,CAAC,0BAA0B,CAA6B;IAE/D,GAAG,CAAC,kBAAkB,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM;IAI5D,kBAAkB,CAAC,iBAAiB,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;
|
|
1
|
+
{"version":3,"file":"GraphProperties.d.ts","sourceRoot":"","sources":["../../src/GraphProperties.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,eAAe;IAClC,OAAO,CAAC,0BAA0B,CAA6B;IAE/D,GAAG,CAAC,kBAAkB,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM;IAI5D,kBAAkB,CAAC,iBAAiB,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIjE,oBAAoB,IAAI,MAAM,EAAE;CAGjC"}
|
|
@@ -10,6 +10,9 @@ var GraphProperties = /** @class */ (function () {
|
|
|
10
10
|
GraphProperties.prototype.getMangledProperty = function (unmangledProperty) {
|
|
11
11
|
return this.unmangledToMangledPropKeys.get(unmangledProperty);
|
|
12
12
|
};
|
|
13
|
+
GraphProperties.prototype.getMangledProperties = function () {
|
|
14
|
+
return Array.from(this.unmangledToMangledPropKeys.values());
|
|
15
|
+
};
|
|
13
16
|
return GraphProperties;
|
|
14
17
|
}());
|
|
15
18
|
exports.default = GraphProperties;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphProperties.js","sourceRoot":"","sources":["../../src/GraphProperties.ts"],"names":[],"mappings":";;AAAA;IAAA;QACU,+BAA0B,GAAG,IAAI,GAAG,EAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"GraphProperties.js","sourceRoot":"","sources":["../../src/GraphProperties.ts"],"names":[],"mappings":";;AAAA;IAAA;QACU,+BAA0B,GAAG,IAAI,GAAG,EAAkB,CAAC;IAajE,CAAC;IAXC,6BAAG,GAAH,UAAI,kBAA0B,EAAE,oBAA4B;QAC1D,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAC;IAChF,CAAC;IAED,4CAAkB,GAAlB,UAAmB,iBAAyB;QAC1C,OAAO,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAChE,CAAC;IAED,8CAAoB,GAApB;QACE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9D,CAAC;IACH,sBAAC;AAAD,CAAC,AAdD,IAcC"}
|
|
@@ -3,6 +3,7 @@ declare class ProvidedPropertiesStore {
|
|
|
3
3
|
private readonly providedPropertiesForGraph;
|
|
4
4
|
getMangledProperty(graph: Graph, unmangledProp: string): string | undefined;
|
|
5
5
|
set(graph: Graph, mangledProperty: string, unmangledProperty: string): void;
|
|
6
|
+
getMangledProperties(graph: Graph): string[];
|
|
6
7
|
clear(graph: Graph): void;
|
|
7
8
|
}
|
|
8
9
|
declare const _default: ProvidedPropertiesStore;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProvidedPropertiesStore.d.ts","sourceRoot":"","sources":["../../src/ProvidedPropertiesStore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,cAAM,uBAAuB;IAC3B,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAA2C;IAEtF,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI3E,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM;IAMpE,KAAK,CAAC,KAAK,EAAE,KAAK;CAGnB;;AAED,wBAA6C"}
|
|
1
|
+
{"version":3,"file":"ProvidedPropertiesStore.d.ts","sourceRoot":"","sources":["../../src/ProvidedPropertiesStore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,cAAM,uBAAuB;IAC3B,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAA2C;IAEtF,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI3E,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM;IAMpE,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE;IAI5C,KAAK,CAAC,KAAK,EAAE,KAAK;CAGnB;;AAED,wBAA6C"}
|
|
@@ -18,6 +18,10 @@ var ProvidedPropertiesStore = /** @class */ (function () {
|
|
|
18
18
|
graphProperties.add(mangledProperty, unmangledProperty);
|
|
19
19
|
this.providedPropertiesForGraph.set(graph.name, graphProperties);
|
|
20
20
|
};
|
|
21
|
+
ProvidedPropertiesStore.prototype.getMangledProperties = function (graph) {
|
|
22
|
+
var _a, _b;
|
|
23
|
+
return (_b = (_a = this.providedPropertiesForGraph.get(graph.name)) === null || _a === void 0 ? void 0 : _a.getMangledProperties()) !== null && _b !== void 0 ? _b : [];
|
|
24
|
+
};
|
|
21
25
|
ProvidedPropertiesStore.prototype.clear = function (graph) {
|
|
22
26
|
this.providedPropertiesForGraph.delete(graph.name);
|
|
23
27
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProvidedPropertiesStore.js","sourceRoot":"","sources":["../../src/ProvidedPropertiesStore.ts"],"names":[],"mappings":";;;;;AAAA,sEAAgD;AAGhD;IAAA;QACmB,+BAA0B,GAAiC,IAAI,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"ProvidedPropertiesStore.js","sourceRoot":"","sources":["../../src/ProvidedPropertiesStore.ts"],"names":[],"mappings":";;;;;AAAA,sEAAgD;AAGhD;IAAA;QACmB,+BAA0B,GAAiC,IAAI,GAAG,EAAE,CAAC;IAmBxF,CAAC;IAjBC,oDAAkB,GAAlB,UAAmB,KAAY,EAAE,aAAqB;;QACpD,OAAO,MAAA,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0CAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAC5F,CAAC;IAED,qCAAG,GAAH,UAAI,KAAY,EAAE,eAAuB,EAAE,iBAAyB;;QAClE,IAAM,eAAe,GAAG,MAAA,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mCAAI,IAAI,yBAAe,EAAE,CAAC;QACjG,eAAe,CAAC,GAAG,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;QACxD,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IACnE,CAAC;IAED,sDAAoB,GAApB,UAAqB,KAAY;;QAC/B,OAAO,MAAA,MAAA,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0CAAE,oBAAoB,EAAE,mCAAI,EAAE,CAAC;IACvF,CAAC;IAED,uCAAK,GAAL,UAAM,KAAY;QAChB,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IACH,8BAAC;AAAD,CAAC,AApBD,IAoBC;AAED,kBAAe,IAAI,uBAAuB,EAAE,CAAC"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { Constructable
|
|
1
|
+
import { Constructable } from '../types';
|
|
2
2
|
import 'reflect-metadata';
|
|
3
3
|
import { ObjectGraph } from '../graph/ObjectGraph';
|
|
4
4
|
interface GraphParams {
|
|
5
|
-
scope: Scope | undefined;
|
|
6
5
|
subgraphs: Constructable<ObjectGraph>[];
|
|
7
6
|
}
|
|
8
|
-
export declare function Graph({
|
|
7
|
+
export declare function Graph({ subgraphs, }?: Partial<GraphParams>): <T extends ObjectGraph<unknown>>(constructor: Constructable<T>) => Constructable<T>;
|
|
9
8
|
export {};
|
|
10
9
|
//# sourceMappingURL=Graph.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Graph.d.ts","sourceRoot":"","sources":["../../../src/decorators/Graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"Graph.d.ts","sourceRoot":"","sources":["../../../src/decorators/Graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,UAAU,WAAW;IACnB,SAAS,EAAE,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;CACzC;AAED,wBAAgB,KAAK,CAAC,EACpB,SAAc,GACf,GAAE,OAAO,CAAC,WAAW,CAAM,uFAK3B"}
|
|
@@ -7,10 +7,9 @@ exports.Graph = void 0;
|
|
|
7
7
|
require("reflect-metadata");
|
|
8
8
|
var GraphRegistry_1 = __importDefault(require("../graph/registry/GraphRegistry"));
|
|
9
9
|
function Graph(_a) {
|
|
10
|
-
var _b = _a === void 0 ? {} : _a,
|
|
10
|
+
var _b = _a === void 0 ? {} : _a, _c = _b.subgraphs, subgraphs = _c === void 0 ? [] : _c;
|
|
11
11
|
return function (constructor) {
|
|
12
|
-
|
|
13
|
-
GraphRegistry_1.default.register(constructor, scope, subgraphs);
|
|
12
|
+
GraphRegistry_1.default.register(constructor, subgraphs);
|
|
14
13
|
return constructor;
|
|
15
14
|
};
|
|
16
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Graph.js","sourceRoot":"","sources":["../../../src/decorators/Graph.ts"],"names":[],"mappings":";;;;;;AACA,4BAA0B;AAC1B,kFAA4D;
|
|
1
|
+
{"version":3,"file":"Graph.js","sourceRoot":"","sources":["../../../src/decorators/Graph.ts"],"names":[],"mappings":";;;;;;AACA,4BAA0B;AAC1B,kFAA4D;AAO5D,SAAgB,KAAK,CAAC,EAEM;QAFN,qBAEI,EAAE,KAAA,EAD1B,iBAAc,EAAd,SAAS,mBAAG,EAAE,KAAA;IAEd,OAAO,UAAwB,WAA6B;QAC1D,uBAAa,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAC/C,OAAO,WAAW,CAAC;IACrB,CAAC,CAAC;AACJ,CAAC;AAPD,sBAOC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Constructable } from '../types';
|
|
2
|
+
import { ObjectGraph } from '../graph/ObjectGraph';
|
|
3
|
+
export declare function Singleton(): (constructorOrGraph: Constructable<ObjectGraph> | ObjectGraph, _property?: string | undefined, descriptor?: PropertyDescriptor | undefined) => any;
|
|
4
|
+
//# sourceMappingURL=Singleton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Singleton.d.ts","sourceRoot":"","sources":["../../../src/decorators/Singleton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,wBAAgB,SAAS,yBAED,cAAc,WAAW,CAAC,GAAG,WAAW,kFAG3D,GAAG,CAKP"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Singleton = void 0;
|
|
4
|
+
function Singleton() {
|
|
5
|
+
return function singleton(constructorOrGraph, _property, descriptor) {
|
|
6
|
+
var target = descriptor || constructorOrGraph;
|
|
7
|
+
Reflect.defineMetadata('isSingleton', true, target);
|
|
8
|
+
return target;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
exports.Singleton = Singleton;
|
|
12
|
+
//# sourceMappingURL=Singleton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Singleton.js","sourceRoot":"","sources":["../../../src/decorators/Singleton.ts"],"names":[],"mappings":";;;AAGA,SAAgB,SAAS;IACvB,OAAO,SAAS,SAAS,CACvB,kBAA4D,EAC5D,SAAkB,EAClB,UAA+B;QAE/B,IAAM,MAAM,GAAG,UAAU,IAAI,kBAAkB,CAAC;QAChD,OAAO,CAAC,cAAc,CAAC,aAAa,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACpD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC;AAVD,8BAUC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Inject.d.ts","sourceRoot":"","sources":["../../../../src/decorators/inject/Inject.ts"],"names":[],"mappings":"AAGA,wBAAgB,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,YAExB,MAAM,GAAG,GAAG,iHAWvB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
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.Inject = void 0;
|
|
7
|
+
var lodash_1 = require("lodash");
|
|
8
|
+
var InjectionMetadata_1 = __importDefault(require("../../injectors/class/InjectionMetadata"));
|
|
9
|
+
function Inject(name) {
|
|
10
|
+
return function (target, propertyKey, indexOrPropertyDescriptor) {
|
|
11
|
+
var metadata = new InjectionMetadata_1.default();
|
|
12
|
+
if (name && (0, lodash_1.isNumber)(indexOrPropertyDescriptor)) {
|
|
13
|
+
metadata.saveConstructorParamMetadata(target, name, indexOrPropertyDescriptor);
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
metadata.savePropertyMetadata(target.constructor, propertyKey);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
exports.Inject = Inject;
|
|
21
|
+
//# sourceMappingURL=Inject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Inject.js","sourceRoot":"","sources":["../../../../src/decorators/inject/Inject.ts"],"names":[],"mappings":";;;;;;AAAA,iCAAkC;AAClC,8FAAwE;AAExE,SAAgB,MAAM,CAAC,IAAa;IAClC,OAAO,UACL,MAAoB,EACpB,WAAoB,EACpB,yBAAuD;QAEvD,IAAM,QAAQ,GAAG,IAAI,2BAAiB,EAAE,CAAC;QACzC,IAAI,IAAI,IAAI,IAAA,iBAAQ,EAAC,yBAAyB,CAAC,EAAE;YAC/C,QAAQ,CAAC,4BAA4B,CAAC,MAAM,EAAE,IAAK,EAAE,yBAAyB,CAAC,CAAC;SACjF;aAAM;YACL,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,WAAW,EAAE,WAAY,CAAC,CAAC;SACjE;IACH,CAAC,CAAC;AACJ,CAAC;AAbD,wBAaC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Injectable.d.ts","sourceRoot":"","sources":["../../../../src/decorators/inject/Injectable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAI1C,wBAAgB,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,CAE3D"}
|
|
@@ -0,0 +1,13 @@
|
|
|
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.Injectable = void 0;
|
|
7
|
+
var GraphRegistry_1 = __importDefault(require("../../graph/registry/GraphRegistry"));
|
|
8
|
+
var ClassInjector_1 = __importDefault(require("../../injectors/class/ClassInjector"));
|
|
9
|
+
function Injectable(Graph) {
|
|
10
|
+
return new ClassInjector_1.default(GraphRegistry_1.default).inject(Graph);
|
|
11
|
+
}
|
|
12
|
+
exports.Injectable = Injectable;
|
|
13
|
+
//# sourceMappingURL=Injectable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Injectable.js","sourceRoot":"","sources":["../../../../src/decorators/inject/Injectable.ts"],"names":[],"mappings":";;;;;;AAEA,qFAA+D;AAC/D,sFAAgE;AAEhE,SAAgB,UAAU,CAAC,KAA2B;IACpD,OAAO,IAAI,uBAAa,CAAC,uBAAa,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC;AAFD,gCAEC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoizeDescriptor.d.ts","sourceRoot":"","sources":["../../../../src/decorators/provides/MemoizeDescriptor.ts"],"names":[],"mappings":"AACA,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,GAAG,kBAAkB,
|
|
1
|
+
{"version":3,"file":"MemoizeDescriptor.d.ts","sourceRoot":"","sources":["../../../../src/decorators/provides/MemoizeDescriptor.ts"],"names":[],"mappings":"AACA,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,GAAG,kBAAkB,CAWzG"}
|
|
@@ -9,12 +9,12 @@ function memoizeDescriptor(propertyKey, descriptor) {
|
|
|
9
9
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
10
10
|
args[_i] = arguments[_i];
|
|
11
11
|
}
|
|
12
|
+
var memoizationTarget = Reflect.getMetadata('isSingleton', descriptor) ? descriptor : this;
|
|
12
13
|
var key = "memoized".concat(propertyKey);
|
|
13
|
-
if (Reflect.hasMetadata(key,
|
|
14
|
-
return Reflect.getMetadata(key,
|
|
15
|
-
}
|
|
14
|
+
if (Reflect.hasMetadata(key, memoizationTarget))
|
|
15
|
+
return Reflect.getMetadata(key, memoizationTarget);
|
|
16
16
|
var result = originalValue.apply(this, args);
|
|
17
|
-
Reflect.defineMetadata(key, result,
|
|
17
|
+
Reflect.defineMetadata(key, result, memoizationTarget);
|
|
18
18
|
return result;
|
|
19
19
|
};
|
|
20
20
|
return descriptor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoizeDescriptor.js","sourceRoot":"","sources":["../../../../src/decorators/provides/MemoizeDescriptor.ts"],"names":[],"mappings":";;;AAAA,sCAAsC;AACtC,SAAgB,iBAAiB,CAAC,WAAmB,EAAE,UAA8B;IACnF,IAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC;IACvC,UAAU,CAAC,KAAK,GAAG,SAAS,KAAK;QAAC,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QAC9C,IAAM,GAAG,GAAG,kBAAW,WAAW,CAAE,CAAC;QACrC,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"MemoizeDescriptor.js","sourceRoot":"","sources":["../../../../src/decorators/provides/MemoizeDescriptor.ts"],"names":[],"mappings":";;;AAAA,sCAAsC;AACtC,SAAgB,iBAAiB,CAAC,WAAmB,EAAE,UAA8B;IACnF,IAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC;IACvC,UAAU,CAAC,KAAK,GAAG,SAAS,KAAK;QAAC,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QAC9C,IAAM,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7F,IAAM,GAAG,GAAG,kBAAW,WAAW,CAAE,CAAC;QACrC,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,iBAAiB,CAAC;YAAE,OAAO,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;QACpG,IAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/C,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;QACvD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IACF,OAAO,UAAU,CAAC;AACpB,CAAC;AAXD,8CAWC"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { Scope } from '../../types';
|
|
2
1
|
import { Graph } from '../../graph/Graph';
|
|
3
2
|
interface ProvidesParams {
|
|
4
|
-
scope?: Scope;
|
|
5
3
|
name: string;
|
|
6
4
|
}
|
|
7
5
|
export declare function Provides({ name }?: Partial<ProvidesParams>): (graph: Graph, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Provides.d.ts","sourceRoot":"","sources":["../../../../src/decorators/provides/Provides.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"Provides.d.ts","sourceRoot":"","sources":["../../../../src/decorators/provides/Provides.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAI1C,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,GAAE,OAAO,CAAC,cAAc,CAAM,WAC9B,KAAK,eAAe,MAAM,cAAc,kBAAkB,wBAI1F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Provides.js","sourceRoot":"","sources":["../../../../src/decorators/provides/Provides.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"Provides.js","sourceRoot":"","sources":["../../../../src/decorators/provides/Provides.ts"],"names":[],"mappings":";;;;;;AACA,0FAAoE;AACpE,yDAAwD;AAMxD,SAAgB,QAAQ,CAAC,EAAsC;QAAtC,qBAAoC,EAAE,KAAA,EAApC,IAAI,UAAA;IAC7B,OAAO,SAAS,OAAO,CAAC,KAAY,EAAE,WAAmB,EAAE,UAA8B;QACvF,iCAAuB,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,IAAK,CAAC,CAAC;QACvD,OAAO,IAAA,qCAAiB,EAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACpD,CAAC,CAAC;AACJ,CAAC;AALD,4BAKC"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import { Scope } from '../types';
|
|
2
1
|
import { Graph } from './Graph';
|
|
3
2
|
export declare abstract class ObjectGraph<T = unknown> implements Graph {
|
|
4
3
|
protected _props?: T | undefined;
|
|
5
|
-
scope: Scope;
|
|
6
4
|
private propertyRetriever;
|
|
7
5
|
get name(): string;
|
|
8
6
|
constructor(_props?: T | undefined);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectGraph.d.ts","sourceRoot":"","sources":["../../../src/graph/ObjectGraph.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ObjectGraph.d.ts","sourceRoot":"","sources":["../../../src/graph/ObjectGraph.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,8BAAsB,WAAW,CAAC,CAAC,GAAG,OAAO,CAAE,YAAW,KAAK;IAQjD,SAAS,CAAC,MAAM,CAAC;IAP7B,OAAO,CAAC,iBAAiB,CAA+B;IAExD,IACI,IAAI,IAAI,MAAM,CAEjB;gBAEqB,MAAM,CAAC,eAAG;IAIhC,QAAQ,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS;CAGnF"}
|
|
@@ -15,13 +15,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
exports.ObjectGraph = void 0;
|
|
16
16
|
var lodash_1 = require("lodash");
|
|
17
17
|
var Memoize_1 = __importDefault(require("../decorators/Memoize"));
|
|
18
|
-
var
|
|
18
|
+
var ProviderBinder_1 = require("./ProviderBinder");
|
|
19
19
|
var PropertyRetriever_1 = __importDefault(require("./PropertyRetriever"));
|
|
20
20
|
var ObjectGraph = /** @class */ (function () {
|
|
21
21
|
function ObjectGraph(_props) {
|
|
22
22
|
this._props = _props;
|
|
23
23
|
this.propertyRetriever = new PropertyRetriever_1.default(this);
|
|
24
|
-
(0,
|
|
24
|
+
(0, ProviderBinder_1.bindProviders)(this);
|
|
25
25
|
}
|
|
26
26
|
Object.defineProperty(ObjectGraph.prototype, "name", {
|
|
27
27
|
get: function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectGraph.js","sourceRoot":"","sources":["../../../src/graph/ObjectGraph.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,iCAAkC;AAClC,kEAA4C;
|
|
1
|
+
{"version":3,"file":"ObjectGraph.js","sourceRoot":"","sources":["../../../src/graph/ObjectGraph.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,iCAAkC;AAClC,kEAA4C;AAC5C,mDAAiD;AAEjD,0EAAoD;AAEpD;IAQE,qBAAsB,MAAU;QAAV,WAAM,GAAN,MAAM,CAAI;QAPxB,sBAAiB,GAAG,IAAI,2BAAiB,CAAC,IAAI,CAAC,CAAC;QAQtD,IAAA,8BAAa,EAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAND,sBAAI,6BAAI;aAAR;YACE,OAAO,IAAA,iBAAQ,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;;;OAAA;IAMD,8BAAQ,GAAR,UAAqB,QAAgB,EAAE,QAAkB;QACvD,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAA2B,CAAC;IACvF,CAAC;IAVD;QADC,IAAA,iBAAO,GAAE;;;2CAGT;IASH,kBAAC;CAAA,AAfD,IAeC;AAfqB,kCAAW"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProviderBinder.d.ts","sourceRoot":"","sources":["../../../src/graph/ProviderBinder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAO/D"}
|
|
@@ -0,0 +1,18 @@
|
|
|
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.bindProviders = void 0;
|
|
7
|
+
/* eslint-disable no-param-reassign */
|
|
8
|
+
var ProvidedPropertiesStore_1 = __importDefault(require("../ProvidedPropertiesStore"));
|
|
9
|
+
function bindProviders(graph) {
|
|
10
|
+
ProvidedPropertiesStore_1.default.getMangledProperties(graph)
|
|
11
|
+
.forEach(function (method) {
|
|
12
|
+
if (graph[method] !== undefined) {
|
|
13
|
+
graph[method] = graph[method].bind(graph);
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
exports.bindProviders = bindProviders;
|
|
18
|
+
//# sourceMappingURL=ProviderBinder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProviderBinder.js","sourceRoot":"","sources":["../../../src/graph/ProviderBinder.ts"],"names":[],"mappings":";;;;;;AAAA,sCAAsC;AACtC,uFAAiE;AAGjE,SAAgB,aAAa,CAAC,KAAkC;IAC9D,iCAAuB,CAAC,oBAAoB,CAAC,KAAK,CAAC;SAChD,OAAO,CAAC,UAAC,MAAM;QACd,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE;YAC/B,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC3C;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAPD,sCAOC"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { Constructable
|
|
1
|
+
import { Constructable } from '../../types';
|
|
2
2
|
import { Graph } from '../Graph';
|
|
3
3
|
import { Middleware } from './Middleware';
|
|
4
|
-
declare class GraphRegistry {
|
|
5
|
-
private readonly scopedGraphs;
|
|
4
|
+
export declare class GraphRegistry {
|
|
6
5
|
private readonly constructorToInstance;
|
|
7
6
|
private readonly instanceToConstructor;
|
|
8
7
|
private readonly graphToSubgraphs;
|
|
9
|
-
private graphMiddlewares;
|
|
10
|
-
register(constructor: Constructable<Graph>,
|
|
11
|
-
has(Graph: Constructable<Graph>): boolean;
|
|
12
|
-
get<T extends Graph>(Graph: Constructable<T>): T;
|
|
13
|
-
set(Graph: Constructable<Graph>, graph: Graph): void;
|
|
8
|
+
private readonly graphMiddlewares;
|
|
9
|
+
register(constructor: Constructable<Graph>, subgraphs?: Constructable<Graph>[]): void;
|
|
14
10
|
getSubgraphs(graph: Graph): Graph[];
|
|
15
11
|
resolve<T extends Graph>(Graph: Constructable<T>, props?: any): T;
|
|
12
|
+
private has;
|
|
13
|
+
private getFirst;
|
|
14
|
+
private set;
|
|
15
|
+
private isSingleton;
|
|
16
16
|
clear(graph: Graph): void;
|
|
17
17
|
addGraphMiddleware(middleware: Middleware<Graph>): void;
|
|
18
18
|
clearGraphMiddlewares(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphRegistry.d.ts","sourceRoot":"","sources":["../../../../src/graph/registry/GraphRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,
|
|
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,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,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;IAOX,OAAO,CAAC,WAAW;IAInB,KAAK,CAAC,KAAK,EAAE,KAAK;IAMlB,kBAAkB,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC;IAIhD,qBAAqB;CAGtB;;AAED,wBAAmC"}
|
|
@@ -3,32 +3,19 @@ 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.GraphRegistry = void 0;
|
|
6
7
|
var GraphMiddlewareChain_1 = __importDefault(require("./GraphMiddlewareChain"));
|
|
7
8
|
var GraphRegistry = /** @class */ (function () {
|
|
8
9
|
function GraphRegistry() {
|
|
9
|
-
this.scopedGraphs = {};
|
|
10
10
|
this.constructorToInstance = new Map();
|
|
11
11
|
this.instanceToConstructor = new Map();
|
|
12
12
|
this.graphToSubgraphs = new Map();
|
|
13
13
|
this.graphMiddlewares = new GraphMiddlewareChain_1.default();
|
|
14
14
|
}
|
|
15
|
-
GraphRegistry.prototype.register = function (constructor,
|
|
16
|
-
if (scope === void 0) { scope = undefined; }
|
|
15
|
+
GraphRegistry.prototype.register = function (constructor, subgraphs) {
|
|
17
16
|
if (subgraphs === void 0) { subgraphs = []; }
|
|
18
|
-
if (scope)
|
|
19
|
-
this.scopedGraphs[scope] = constructor;
|
|
20
17
|
this.graphToSubgraphs.set(constructor, new Set(subgraphs));
|
|
21
18
|
};
|
|
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
19
|
GraphRegistry.prototype.getSubgraphs = function (graph) {
|
|
33
20
|
var _this = this;
|
|
34
21
|
var _a;
|
|
@@ -37,21 +24,34 @@ var GraphRegistry = /** @class */ (function () {
|
|
|
37
24
|
return Array.from(subgraphs).map(function (G) { return _this.resolve(G); });
|
|
38
25
|
};
|
|
39
26
|
GraphRegistry.prototype.resolve = function (Graph, props) {
|
|
40
|
-
if (this.has(Graph)) {
|
|
41
|
-
return this.
|
|
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));
|
|
27
|
+
if (this.isSingleton(Graph) && this.has(Graph)) {
|
|
28
|
+
return this.getFirst(Graph);
|
|
46
29
|
}
|
|
47
30
|
var graph = this.graphMiddlewares.resolve(Graph, props);
|
|
48
31
|
this.set(Graph, graph);
|
|
49
32
|
return graph;
|
|
50
33
|
};
|
|
34
|
+
GraphRegistry.prototype.has = function (Graph) {
|
|
35
|
+
return this.constructorToInstance.has(Graph);
|
|
36
|
+
};
|
|
37
|
+
GraphRegistry.prototype.getFirst = function (Graph) {
|
|
38
|
+
return this.constructorToInstance.get(Graph).values().next().value;
|
|
39
|
+
};
|
|
40
|
+
GraphRegistry.prototype.set = function (Graph, graph) {
|
|
41
|
+
var _a;
|
|
42
|
+
var graphs = (_a = this.constructorToInstance.get(Graph)) !== null && _a !== void 0 ? _a : new Set();
|
|
43
|
+
graphs.add(graph);
|
|
44
|
+
this.constructorToInstance.set(Graph, graphs);
|
|
45
|
+
this.instanceToConstructor.set(graph, Graph);
|
|
46
|
+
};
|
|
47
|
+
GraphRegistry.prototype.isSingleton = function (Graph) {
|
|
48
|
+
var _a;
|
|
49
|
+
return (_a = Reflect.getMetadata('isSingleton', Graph)) !== null && _a !== void 0 ? _a : false;
|
|
50
|
+
};
|
|
51
51
|
GraphRegistry.prototype.clear = function (graph) {
|
|
52
52
|
var Graph = this.instanceToConstructor.get(graph);
|
|
53
53
|
this.instanceToConstructor.delete(graph);
|
|
54
|
-
this.constructorToInstance.
|
|
54
|
+
this.constructorToInstance.get(Graph).delete(graph);
|
|
55
55
|
};
|
|
56
56
|
GraphRegistry.prototype.addGraphMiddleware = function (middleware) {
|
|
57
57
|
this.graphMiddlewares.add(middleware);
|
|
@@ -61,5 +61,6 @@ var GraphRegistry = /** @class */ (function () {
|
|
|
61
61
|
};
|
|
62
62
|
return GraphRegistry;
|
|
63
63
|
}());
|
|
64
|
+
exports.GraphRegistry = GraphRegistry;
|
|
64
65
|
exports.default = new GraphRegistry();
|
|
65
66
|
//# sourceMappingURL=GraphRegistry.js.map
|
|
@@ -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":"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"}
|