@rolster/invertly 1.2.0 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +241 -237
- package/dist/cjs/index.js.map +1 -1
- package/dist/es/index.js +241 -237
- package/dist/es/index.js.map +1 -1
- package/dist/esm/decorators/index.d.ts +2 -2
- package/dist/esm/decorators/index.js +2 -2
- package/dist/esm/decorators/inject.decorator.d.ts +4 -4
- package/dist/esm/decorators/inject.decorator.js +15 -16
- package/dist/esm/decorators/inject.decorator.js.map +1 -1
- package/dist/esm/decorators/injectable.decorator.d.ts +6 -6
- package/dist/esm/decorators/injectable.decorator.js +10 -10
- package/dist/esm/factories/container.factory.d.ts +8 -9
- package/dist/esm/factories/container.factory.js +105 -105
- package/dist/esm/factories/container.factory.js.map +1 -1
- package/dist/esm/factories/index.d.ts +21 -21
- package/dist/esm/factories/index.js +32 -34
- package/dist/esm/factories/index.js.map +1 -1
- package/dist/esm/index.d.ts +6 -6
- package/dist/esm/index.js +5 -5
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/stores/context.store.d.ts +7 -7
- package/dist/esm/stores/context.store.js +14 -14
- package/dist/esm/stores/index.d.ts +5 -5
- package/dist/esm/stores/index.js +5 -5
- package/dist/esm/stores/inject.store.d.ts +7 -6
- package/dist/esm/stores/inject.store.js +13 -19
- package/dist/esm/stores/inject.store.js.map +1 -1
- package/dist/esm/stores/injectable.store.d.ts +8 -8
- package/dist/esm/stores/injectable.store.js +11 -11
- package/dist/esm/stores/locator.store.d.ts +7 -7
- package/dist/esm/stores/locator.store.js +31 -32
- package/dist/esm/stores/locator.store.js.map +1 -1
- package/dist/esm/stores/scope.store.d.ts +6 -7
- package/dist/esm/stores/scope.store.js +11 -11
- package/dist/esm/stores/scope.store.js.map +1 -1
- package/dist/esm/types/constructable.type.d.ts +1 -1
- package/dist/esm/types/constructable.type.js +1 -1
- package/dist/esm/types/context.type.d.ts +5 -5
- package/dist/esm/types/context.type.js +1 -1
- package/dist/esm/types/index.d.ts +5 -5
- package/dist/esm/types/index.js +5 -5
- package/dist/esm/types/inject.type.d.ts +9 -9
- package/dist/esm/types/inject.type.js +1 -1
- package/dist/esm/types/injectable.type.d.ts +12 -12
- package/dist/esm/types/injectable.type.js +1 -1
- package/dist/esm/types/locator.type.d.ts +8 -8
- package/dist/esm/types/locator.type.js +1 -1
- package/package.json +5 -4
package/dist/es/index.js
CHANGED
|
@@ -1,258 +1,262 @@
|
|
|
1
1
|
import 'reflect-metadata';
|
|
2
2
|
|
|
3
|
-
class Context {
|
|
4
|
-
constructor() {
|
|
5
|
-
this.store = new Map();
|
|
6
|
-
}
|
|
7
|
-
set(key, value) {
|
|
8
|
-
this.store.set(key, value);
|
|
9
|
-
}
|
|
10
|
-
request(key) {
|
|
11
|
-
return this.store.get(key);
|
|
12
|
-
}
|
|
13
|
-
has(key) {
|
|
14
|
-
return this.store.has(key);
|
|
15
|
-
}
|
|
3
|
+
class Context {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.store = new Map();
|
|
6
|
+
}
|
|
7
|
+
set(key, value) {
|
|
8
|
+
this.store.set(key, value);
|
|
9
|
+
}
|
|
10
|
+
request(key) {
|
|
11
|
+
return this.store.get(key);
|
|
12
|
+
}
|
|
13
|
+
has(key) {
|
|
14
|
+
return this.store.has(key);
|
|
15
|
+
}
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
class
|
|
19
|
-
constructor() {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
const injects = [];
|
|
33
|
-
this.collection.set(token, injects);
|
|
34
|
-
return injects;
|
|
35
|
-
}
|
|
18
|
+
class SecureMap extends Map {
|
|
19
|
+
constructor(initialValue) {
|
|
20
|
+
super();
|
|
21
|
+
this.initialValue = initialValue;
|
|
22
|
+
}
|
|
23
|
+
request(key, initialValue) {
|
|
24
|
+
let value = this.get(key);
|
|
25
|
+
if (!value) {
|
|
26
|
+
value = initialValue ?? this.initialValue();
|
|
27
|
+
this.set(key, value);
|
|
28
|
+
}
|
|
29
|
+
return value;
|
|
30
|
+
}
|
|
36
31
|
}
|
|
37
32
|
|
|
38
|
-
class
|
|
39
|
-
constructor() {
|
|
40
|
-
this.collection = new
|
|
41
|
-
}
|
|
42
|
-
push(options) {
|
|
43
|
-
this.collection.
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
33
|
+
class InjectStore {
|
|
34
|
+
constructor() {
|
|
35
|
+
this.collection = new SecureMap(() => []);
|
|
36
|
+
}
|
|
37
|
+
push(options) {
|
|
38
|
+
const injects = this.collection.request(options.parent);
|
|
39
|
+
injects[options.index] = options;
|
|
40
|
+
}
|
|
41
|
+
request(token) {
|
|
42
|
+
return this.collection.request(token);
|
|
43
|
+
}
|
|
48
44
|
}
|
|
49
45
|
|
|
50
|
-
class
|
|
51
|
-
constructor() {
|
|
52
|
-
this.collection = new Map();
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
if (typeof reference !== 'string' && typeof reference !== 'symbol') {
|
|
61
|
-
const { token, useClass } = reference;
|
|
62
|
-
this.collection.set(token, { token, useClass });
|
|
63
|
-
}
|
|
64
|
-
else if (token) {
|
|
65
|
-
this.collection.set(reference, { token, useClass: token });
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
request(token) {
|
|
69
|
-
return this.collection.get(token);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
const locatorStore = new LocatorStore();
|
|
73
|
-
function saveInLocator(dependencies) {
|
|
74
|
-
locatorStore.save(dependencies);
|
|
75
|
-
}
|
|
76
|
-
function pushInLocator(reference, token) {
|
|
77
|
-
locatorStore.push(reference, token);
|
|
78
|
-
}
|
|
79
|
-
function requestInLocator(token) {
|
|
80
|
-
return locatorStore.request(token);
|
|
46
|
+
class InjectableStore {
|
|
47
|
+
constructor() {
|
|
48
|
+
this.collection = new Map();
|
|
49
|
+
}
|
|
50
|
+
push(options) {
|
|
51
|
+
this.collection.set(options.token, options);
|
|
52
|
+
}
|
|
53
|
+
request(token) {
|
|
54
|
+
return this.collection.get(token);
|
|
55
|
+
}
|
|
81
56
|
}
|
|
82
57
|
|
|
83
|
-
class
|
|
84
|
-
constructor() {
|
|
85
|
-
this.collection = new Map();
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
58
|
+
class LocatorStore {
|
|
59
|
+
constructor() {
|
|
60
|
+
this.collection = new Map();
|
|
61
|
+
}
|
|
62
|
+
save(options) {
|
|
63
|
+
options.forEach((option) => {
|
|
64
|
+
this.collection.set(option.token, option);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
push(reference, token) {
|
|
68
|
+
if (typeof reference !== 'string' && typeof reference !== 'symbol') {
|
|
69
|
+
this.collection.set(reference.token, reference);
|
|
70
|
+
}
|
|
71
|
+
else if (token) {
|
|
72
|
+
this.collection.set(reference, { token, useClass: token });
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
request(token) {
|
|
76
|
+
return this.collection.get(token);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
const LOCATOR_STORE = new LocatorStore();
|
|
80
|
+
function saveInLocator(dependencies) {
|
|
81
|
+
LOCATOR_STORE.save(dependencies);
|
|
82
|
+
}
|
|
83
|
+
function pushInLocator(reference, token) {
|
|
84
|
+
LOCATOR_STORE.push(reference, token);
|
|
85
|
+
}
|
|
86
|
+
function requestInLocator(token) {
|
|
87
|
+
return LOCATOR_STORE.request(token);
|
|
93
88
|
}
|
|
94
89
|
|
|
95
|
-
class
|
|
96
|
-
constructor() {
|
|
97
|
-
this.
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
return
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
const
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
return this.
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
const { token, scopeable, singleton } =
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
this.
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
90
|
+
class ScopeStore {
|
|
91
|
+
constructor() {
|
|
92
|
+
this.collection = new Map();
|
|
93
|
+
}
|
|
94
|
+
push(token, value) {
|
|
95
|
+
this.collection.set(token, value);
|
|
96
|
+
}
|
|
97
|
+
request(token) {
|
|
98
|
+
return this.collection.get(token);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
class DataCenter {
|
|
103
|
+
constructor() {
|
|
104
|
+
this.scope = new ScopeStore();
|
|
105
|
+
this.injectables = new InjectableStore();
|
|
106
|
+
this.injects = new InjectStore();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
class InjectableFactory {
|
|
110
|
+
constructor(dataCenter, context) {
|
|
111
|
+
this.dataCenter = dataCenter;
|
|
112
|
+
this.context = context;
|
|
113
|
+
this.scope = new ScopeStore();
|
|
114
|
+
}
|
|
115
|
+
build(injectable) {
|
|
116
|
+
const options = this.dataCenter.injectables.request(injectable);
|
|
117
|
+
if (!options) {
|
|
118
|
+
throw Error(`Class ${injectable.toString()} is not found in the collection`);
|
|
119
|
+
}
|
|
120
|
+
return this.createInstance(options);
|
|
121
|
+
}
|
|
122
|
+
createObject(token) {
|
|
123
|
+
const Constructor = token;
|
|
124
|
+
const tokens = this.reflectTokens(Constructor);
|
|
125
|
+
const params = tokens
|
|
126
|
+
? this.createReflectArgs({ token, tokens })
|
|
127
|
+
: this.createTokenArgs(token);
|
|
128
|
+
return new Constructor(...params);
|
|
129
|
+
}
|
|
130
|
+
reflectTokens(constructable) {
|
|
131
|
+
return Reflect.getMetadata('design:paramtypes', constructable);
|
|
132
|
+
}
|
|
133
|
+
createFromScope({ token, scope }) {
|
|
134
|
+
let instance = scope.request(token);
|
|
135
|
+
if (!instance) {
|
|
136
|
+
instance = this.createObject(token);
|
|
137
|
+
scope.push(token, instance);
|
|
138
|
+
}
|
|
139
|
+
return instance;
|
|
140
|
+
}
|
|
141
|
+
createFromContainer(token) {
|
|
142
|
+
return this.createFromScope({ token, scope: this.dataCenter.scope });
|
|
143
|
+
}
|
|
144
|
+
createInstance(options) {
|
|
145
|
+
const { token, scopeable, singleton } = options;
|
|
146
|
+
if (singleton) {
|
|
147
|
+
return this.createFromContainer(token);
|
|
148
|
+
}
|
|
149
|
+
if (scopeable) {
|
|
150
|
+
return this.createFromScope({ token, scope: this.scope });
|
|
151
|
+
}
|
|
152
|
+
return this.createObject(token);
|
|
153
|
+
}
|
|
154
|
+
createFromDecorator(inject) {
|
|
155
|
+
const { token, scopeable, singleton } = inject;
|
|
156
|
+
const locator = requestInLocator(token);
|
|
157
|
+
return this.createInstance({
|
|
158
|
+
token: locator?.useClass ?? token,
|
|
159
|
+
scopeable,
|
|
160
|
+
singleton
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
createReflectArgs({ tokens, token }) {
|
|
164
|
+
const injects = this.dataCenter.injects.request(token);
|
|
165
|
+
return tokens.map((token, index) => {
|
|
166
|
+
const inject = injects[index];
|
|
167
|
+
if (inject) {
|
|
168
|
+
return this.createFromDecorator(inject);
|
|
169
|
+
}
|
|
170
|
+
const locator = requestInLocator(token);
|
|
171
|
+
if (locator) {
|
|
172
|
+
return this.createInstance({
|
|
173
|
+
...locator,
|
|
174
|
+
token: locator.useClass
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
if (token === Context) {
|
|
178
|
+
return this.context;
|
|
179
|
+
}
|
|
180
|
+
return this.createObject(token);
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
createTokenArgs(token) {
|
|
184
|
+
const injects = this.dataCenter.injects.request(token);
|
|
185
|
+
return injects.reduce((objects, options) => {
|
|
186
|
+
objects[options.index] = this.createInstance({ ...options });
|
|
187
|
+
return objects;
|
|
188
|
+
}, []);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
class InvertlyContainer {
|
|
192
|
+
constructor() {
|
|
193
|
+
this.dataCenter = new DataCenter();
|
|
194
|
+
}
|
|
195
|
+
registerInjectable(options) {
|
|
196
|
+
this.dataCenter.injectables.push(options);
|
|
197
|
+
}
|
|
198
|
+
registerInject(options) {
|
|
199
|
+
this.dataCenter.injects.push(options);
|
|
200
|
+
}
|
|
201
|
+
createInjectable(options) {
|
|
202
|
+
return new InjectableFactory(this.dataCenter, options.context).build(options.token);
|
|
203
|
+
}
|
|
197
204
|
}
|
|
198
205
|
|
|
199
|
-
const
|
|
200
|
-
function createFromInvertly(options, container) {
|
|
201
|
-
return (container ??
|
|
202
|
-
}
|
|
203
|
-
function invertly(token, container) {
|
|
204
|
-
return createFromInvertly({ token }, container);
|
|
205
|
-
}
|
|
206
|
-
function registerInjectable(options, container) {
|
|
207
|
-
(container ??
|
|
208
|
-
}
|
|
209
|
-
function registerInject(options, container) {
|
|
210
|
-
(container ??
|
|
211
|
-
}
|
|
212
|
-
function registerDependency(token, options) {
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
}, container);
|
|
228
|
-
});
|
|
206
|
+
const INVERTLY_CONTAINER = new InvertlyContainer();
|
|
207
|
+
function createFromInvertly(options, container) {
|
|
208
|
+
return (container ?? INVERTLY_CONTAINER).createInjectable(options);
|
|
209
|
+
}
|
|
210
|
+
function invertly(token, container) {
|
|
211
|
+
return createFromInvertly({ token }, container);
|
|
212
|
+
}
|
|
213
|
+
function registerInjectable(options, container) {
|
|
214
|
+
(container ?? INVERTLY_CONTAINER).registerInjectable(options);
|
|
215
|
+
}
|
|
216
|
+
function registerInject(options, container) {
|
|
217
|
+
(container ?? INVERTLY_CONTAINER).registerInject(options);
|
|
218
|
+
}
|
|
219
|
+
function registerDependency(token, options) {
|
|
220
|
+
registerInjectable({
|
|
221
|
+
token,
|
|
222
|
+
scopeable: options.scopeable ?? false,
|
|
223
|
+
singleton: options.singleton ?? false
|
|
224
|
+
}, options.container);
|
|
225
|
+
options.injects?.forEach((inject, indexParent) => {
|
|
226
|
+
registerInject({
|
|
227
|
+
index: inject.index ?? indexParent,
|
|
228
|
+
parent: token,
|
|
229
|
+
scopeable: inject.scopeable ?? options.scopeable ?? false,
|
|
230
|
+
singleton: inject.singleton ?? options.singleton ?? false,
|
|
231
|
+
token: inject.token
|
|
232
|
+
}, options.container);
|
|
233
|
+
});
|
|
229
234
|
}
|
|
230
235
|
|
|
231
|
-
function createInject(inject) {
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
return createInject({ token, scopeable: false, singleton: false });
|
|
236
|
+
function createInject(inject) {
|
|
237
|
+
return (parent, _, index) => {
|
|
238
|
+
registerInject({ ...inject, index, parent });
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
function Singleton(token) {
|
|
242
|
+
return createInject({ token, scopeable: false, singleton: true });
|
|
243
|
+
}
|
|
244
|
+
function Scope(token) {
|
|
245
|
+
return createInject({ token, scopeable: true, singleton: false });
|
|
246
|
+
}
|
|
247
|
+
function Factory(token) {
|
|
248
|
+
return createInject({ token, scopeable: false, singleton: false });
|
|
245
249
|
}
|
|
246
250
|
|
|
247
|
-
function Injectable(options) {
|
|
248
|
-
return (token) => {
|
|
249
|
-
registerInjectable({
|
|
250
|
-
scopeable: !!options?.scopeable,
|
|
251
|
-
singleton: !!options?.singleton,
|
|
252
|
-
token
|
|
253
|
-
});
|
|
254
|
-
};
|
|
251
|
+
function Injectable(options) {
|
|
252
|
+
return (token) => {
|
|
253
|
+
registerInjectable({
|
|
254
|
+
scopeable: !!options?.scopeable,
|
|
255
|
+
singleton: !!options?.singleton,
|
|
256
|
+
token
|
|
257
|
+
});
|
|
258
|
+
};
|
|
255
259
|
}
|
|
256
260
|
|
|
257
|
-
export {
|
|
261
|
+
export { Context, Factory, Injectable, InvertlyContainer, Scope, Singleton, createFromInvertly as default, invertly, pushInLocator, registerDependency, registerInject, registerInjectable, requestInLocator, saveInLocator };
|
|
258
262
|
//# sourceMappingURL=index.js.map
|
package/dist/es/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../esm/stores/context.store.js","../esm/stores/inject.store.js","../esm/stores/injectable.store.js","../esm/stores/locator.store.js","../esm/stores/scope.store.js","../esm/factories/container.factory.js","../esm/factories/index.js","../esm/decorators/inject.decorator.js","../esm/decorators/injectable.decorator.js"],"sourcesContent":["export class Context {\r\n constructor() {\r\n this.store = new Map();\r\n }\r\n set(key, value) {\r\n this.store.set(key, value);\r\n }\r\n request(key) {\r\n return this.store.get(key);\r\n }\r\n has(key) {\r\n return this.store.has(key);\r\n }\r\n}\r\n//# sourceMappingURL=context.store.js.map","export class InjectStore {\r\n constructor() {\r\n this.collection = new Map();\r\n }\r\n push(options) {\r\n const { parent, index } = options;\r\n const injects = this.request(parent);\r\n injects[index] = options;\r\n }\r\n request(token) {\r\n const current = this.collection.get(token);\r\n if (current) {\r\n return current;\r\n }\r\n const injects = [];\r\n this.collection.set(token, injects);\r\n return injects;\r\n }\r\n}\r\n//# sourceMappingURL=inject.store.js.map","export class InjectableStore {\r\n constructor() {\r\n this.collection = new Map();\r\n }\r\n push(options) {\r\n this.collection.set(options.token, options);\r\n }\r\n request(token) {\r\n return this.collection.get(token);\r\n }\r\n}\r\n//# sourceMappingURL=injectable.store.js.map","class LocatorStore {\r\n constructor() {\r\n this.collection = new Map();\r\n }\r\n save(dependencies) {\r\n dependencies.forEach((config) => {\r\n this.collection.set(config.token, config);\r\n });\r\n }\r\n push(reference, token) {\r\n if (typeof reference !== 'string' && typeof reference !== 'symbol') {\r\n const { token, useClass } = reference;\r\n this.collection.set(token, { token, useClass });\r\n }\r\n else if (token) {\r\n this.collection.set(reference, { token, useClass: token });\r\n }\r\n }\r\n request(token) {\r\n return this.collection.get(token);\r\n }\r\n}\r\nconst locatorStore = new LocatorStore();\r\nexport function saveInLocator(dependencies) {\r\n locatorStore.save(dependencies);\r\n}\r\nexport function pushInLocator(reference, token) {\r\n locatorStore.push(reference, token);\r\n}\r\nexport function requestInLocator(token) {\r\n return locatorStore.request(token);\r\n}\r\n//# sourceMappingURL=locator.store.js.map","export class ScopeStore {\r\n constructor() {\r\n this.collection = new Map();\r\n }\r\n push(token, value) {\r\n this.collection.set(token, value);\r\n }\r\n request(token) {\r\n return this.collection.get(token);\r\n }\r\n}\r\n//# sourceMappingURL=scope.store.js.map","import 'reflect-metadata';\r\nimport { Context, InjectStore, InjectableStore, ScopeStore, requestInLocator } from '../stores';\r\nclass Warehouse {\r\n constructor() {\r\n this.scope = new ScopeStore();\r\n this.injectables = new InjectableStore();\r\n this.injects = new InjectStore();\r\n }\r\n}\r\nclass Dependency {\r\n constructor(warehouse, context) {\r\n this.warehouse = warehouse;\r\n this.context = context;\r\n this.scope = new ScopeStore();\r\n }\r\n build(injectable) {\r\n const options = this.warehouse.injectables.request(injectable);\r\n if (!options) {\r\n throw Error(`Class ${injectable.toString()} is not found in the collection`);\r\n }\r\n const { scopeable, singleton, token } = options;\r\n return this.createInstance({ token, scopeable, singleton });\r\n }\r\n createObject(token) {\r\n const Constructor = token;\r\n const tokens = this.reflectTokens(Constructor);\r\n const params = tokens\r\n ? this.createReflectArgs({ token, tokens })\r\n : this.createTokenArgs(token);\r\n return new Constructor(...params);\r\n }\r\n reflectTokens(constructable) {\r\n return Reflect.getMetadata('design:paramtypes', constructable);\r\n }\r\n createFromScope({ token, scope }) {\r\n const instance = scope.request(token);\r\n if (instance) {\r\n return instance;\r\n }\r\n const object = this.createObject(token);\r\n scope.push(token, object);\r\n return object;\r\n }\r\n createFromContainer(token) {\r\n return this.createFromScope({ token, scope: this.warehouse.scope });\r\n }\r\n createInstance(options) {\r\n const { token, scopeable, singleton } = options;\r\n if (singleton) {\r\n return this.createFromContainer(token);\r\n }\r\n if (scopeable) {\r\n return this.createFromScope({ token, scope: this.scope });\r\n }\r\n return this.createObject(token);\r\n }\r\n createFromDecorator(inject) {\r\n const { token, scopeable, singleton } = inject;\r\n const locator = requestInLocator(token);\r\n return this.createInstance({\r\n token: locator?.useClass ?? token,\r\n scopeable,\r\n singleton\r\n });\r\n }\r\n createReflectArgs({ tokens, token }) {\r\n const injects = this.warehouse.injects.request(token);\r\n return tokens.map((token, index) => {\r\n const inject = injects[index];\r\n if (inject) {\r\n return this.createFromDecorator(inject);\r\n }\r\n const locator = requestInLocator(token);\r\n if (locator) {\r\n const { useClass: token, scopeable, singleton } = locator;\r\n return this.createInstance({ token, scopeable, singleton });\r\n }\r\n if (token === Context) {\r\n return this.context;\r\n }\r\n return this.createObject(token);\r\n });\r\n }\r\n createTokenArgs(token) {\r\n const injects = this.warehouse.injects.request(token);\r\n return injects.reduce((objects, { index, scopeable, singleton, token }) => {\r\n objects[index] = this.createInstance({ token, scopeable, singleton });\r\n return objects;\r\n }, []);\r\n }\r\n}\r\nexport class Container {\r\n constructor() {\r\n this.warehouse = new Warehouse();\r\n }\r\n registerInjectable(options) {\r\n this.warehouse.injectables.push(options);\r\n }\r\n registerInject(options) {\r\n this.warehouse.injects.push(options);\r\n }\r\n createInjectable(options) {\r\n return new Dependency(this.warehouse, options.context).build(options.token);\r\n }\r\n}\r\n//# sourceMappingURL=container.factory.js.map","import { Container } from './container.factory';\r\nconst invertlyContainer = new Container();\r\nfunction createFromInvertly(options, container) {\r\n return (container ?? invertlyContainer).createInjectable(options);\r\n}\r\nexport function invertly(token, container) {\r\n return createFromInvertly({ token }, container);\r\n}\r\nexport function registerInjectable(options, container) {\r\n (container ?? invertlyContainer).registerInjectable(options);\r\n}\r\nexport function registerInject(options, container) {\r\n (container ?? invertlyContainer).registerInject(options);\r\n}\r\nexport function registerDependency(token, options) {\r\n const { container, injects, scopeable, singleton } = options;\r\n registerInjectable({\r\n token,\r\n scopeable: scopeable ?? false,\r\n singleton: singleton ?? false\r\n }, container);\r\n injects?.forEach((inject, indexParent) => {\r\n const { index, scopeable: childrenScopeable, singleton: childrenSingleton, token: childrenToken } = inject;\r\n registerInject({\r\n index: index ?? indexParent,\r\n parent: token,\r\n scopeable: childrenScopeable ?? scopeable ?? false,\r\n singleton: childrenSingleton ?? singleton ?? false,\r\n token: childrenToken\r\n }, container);\r\n });\r\n}\r\nexport { Container } from './container.factory';\r\nexport default createFromInvertly;\r\n//# sourceMappingURL=index.js.map","import { registerInject } from '../factories';\r\nfunction createInject(inject) {\r\n const { scopeable, singleton, token } = inject;\r\n return (parent, _, index) => {\r\n registerInject({ index, parent, scopeable, singleton, token });\r\n };\r\n}\r\nexport function Singleton(token) {\r\n return createInject({ token, scopeable: false, singleton: true });\r\n}\r\nexport function Scope(token) {\r\n return createInject({ token, scopeable: true, singleton: false });\r\n}\r\nexport function Factory(token) {\r\n return createInject({ token, scopeable: false, singleton: false });\r\n}\r\n//# sourceMappingURL=inject.decorator.js.map","import { registerInjectable } from '../factories';\r\nexport function Injectable(options) {\r\n return (token) => {\r\n registerInjectable({\r\n scopeable: !!options?.scopeable,\r\n singleton: !!options?.singleton,\r\n token\r\n });\r\n };\r\n}\r\n//# sourceMappingURL=injectable.decorator.js.map"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../esm/stores/context.store.js","../../node_modules/@rolster/commons/dist/esm/collections.js","../esm/stores/inject.store.js","../esm/stores/injectable.store.js","../esm/stores/locator.store.js","../esm/stores/scope.store.js","../esm/factories/container.factory.js","../esm/factories/index.js","../esm/decorators/inject.decorator.js","../esm/decorators/injectable.decorator.js"],"sourcesContent":["export class Context {\n constructor() {\n this.store = new Map();\n }\n set(key, value) {\n this.store.set(key, value);\n }\n request(key) {\n return this.store.get(key);\n }\n has(key) {\n return this.store.has(key);\n }\n}\n//# sourceMappingURL=context.store.js.map","export class SecureMap extends Map {\n constructor(initialValue) {\n super();\n this.initialValue = initialValue;\n }\n request(key, initialValue) {\n let value = this.get(key);\n if (!value) {\n value = initialValue ?? this.initialValue();\n this.set(key, value);\n }\n return value;\n }\n}\n//# sourceMappingURL=collections.js.map","import { SecureMap } from '@rolster/commons';\nexport class InjectStore {\n constructor() {\n this.collection = new SecureMap(() => []);\n }\n push(options) {\n const injects = this.collection.request(options.parent);\n injects[options.index] = options;\n }\n request(token) {\n return this.collection.request(token);\n }\n}\n//# sourceMappingURL=inject.store.js.map","export class InjectableStore {\n constructor() {\n this.collection = new Map();\n }\n push(options) {\n this.collection.set(options.token, options);\n }\n request(token) {\n return this.collection.get(token);\n }\n}\n//# sourceMappingURL=injectable.store.js.map","class LocatorStore {\n constructor() {\n this.collection = new Map();\n }\n save(options) {\n options.forEach((option) => {\n this.collection.set(option.token, option);\n });\n }\n push(reference, token) {\n if (typeof reference !== 'string' && typeof reference !== 'symbol') {\n this.collection.set(reference.token, reference);\n }\n else if (token) {\n this.collection.set(reference, { token, useClass: token });\n }\n }\n request(token) {\n return this.collection.get(token);\n }\n}\nconst LOCATOR_STORE = new LocatorStore();\nexport function saveInLocator(dependencies) {\n LOCATOR_STORE.save(dependencies);\n}\nexport function pushInLocator(reference, token) {\n LOCATOR_STORE.push(reference, token);\n}\nexport function requestInLocator(token) {\n return LOCATOR_STORE.request(token);\n}\n//# sourceMappingURL=locator.store.js.map","export class ScopeStore {\n constructor() {\n this.collection = new Map();\n }\n push(token, value) {\n this.collection.set(token, value);\n }\n request(token) {\n return this.collection.get(token);\n }\n}\n//# sourceMappingURL=scope.store.js.map","import 'reflect-metadata';\nimport { Context, InjectStore, InjectableStore, ScopeStore, requestInLocator } from '../stores';\nclass DataCenter {\n constructor() {\n this.scope = new ScopeStore();\n this.injectables = new InjectableStore();\n this.injects = new InjectStore();\n }\n}\nclass InjectableFactory {\n constructor(dataCenter, context) {\n this.dataCenter = dataCenter;\n this.context = context;\n this.scope = new ScopeStore();\n }\n build(injectable) {\n const options = this.dataCenter.injectables.request(injectable);\n if (!options) {\n throw Error(`Class ${injectable.toString()} is not found in the collection`);\n }\n return this.createInstance(options);\n }\n createObject(token) {\n const Constructor = token;\n const tokens = this.reflectTokens(Constructor);\n const params = tokens\n ? this.createReflectArgs({ token, tokens })\n : this.createTokenArgs(token);\n return new Constructor(...params);\n }\n reflectTokens(constructable) {\n return Reflect.getMetadata('design:paramtypes', constructable);\n }\n createFromScope({ token, scope }) {\n let instance = scope.request(token);\n if (!instance) {\n instance = this.createObject(token);\n scope.push(token, instance);\n }\n return instance;\n }\n createFromContainer(token) {\n return this.createFromScope({ token, scope: this.dataCenter.scope });\n }\n createInstance(options) {\n const { token, scopeable, singleton } = options;\n if (singleton) {\n return this.createFromContainer(token);\n }\n if (scopeable) {\n return this.createFromScope({ token, scope: this.scope });\n }\n return this.createObject(token);\n }\n createFromDecorator(inject) {\n const { token, scopeable, singleton } = inject;\n const locator = requestInLocator(token);\n return this.createInstance({\n token: locator?.useClass ?? token,\n scopeable,\n singleton\n });\n }\n createReflectArgs({ tokens, token }) {\n const injects = this.dataCenter.injects.request(token);\n return tokens.map((token, index) => {\n const inject = injects[index];\n if (inject) {\n return this.createFromDecorator(inject);\n }\n const locator = requestInLocator(token);\n if (locator) {\n return this.createInstance({\n ...locator,\n token: locator.useClass\n });\n }\n if (token === Context) {\n return this.context;\n }\n return this.createObject(token);\n });\n }\n createTokenArgs(token) {\n const injects = this.dataCenter.injects.request(token);\n return injects.reduce((objects, options) => {\n objects[options.index] = this.createInstance({ ...options });\n return objects;\n }, []);\n }\n}\nexport class InvertlyContainer {\n constructor() {\n this.dataCenter = new DataCenter();\n }\n registerInjectable(options) {\n this.dataCenter.injectables.push(options);\n }\n registerInject(options) {\n this.dataCenter.injects.push(options);\n }\n createInjectable(options) {\n return new InjectableFactory(this.dataCenter, options.context).build(options.token);\n }\n}\n//# sourceMappingURL=container.factory.js.map","import { InvertlyContainer } from './container.factory';\nconst INVERTLY_CONTAINER = new InvertlyContainer();\nfunction createFromInvertly(options, container) {\n return (container ?? INVERTLY_CONTAINER).createInjectable(options);\n}\nexport function invertly(token, container) {\n return createFromInvertly({ token }, container);\n}\nexport function registerInjectable(options, container) {\n (container ?? INVERTLY_CONTAINER).registerInjectable(options);\n}\nexport function registerInject(options, container) {\n (container ?? INVERTLY_CONTAINER).registerInject(options);\n}\nexport function registerDependency(token, options) {\n registerInjectable({\n token,\n scopeable: options.scopeable ?? false,\n singleton: options.singleton ?? false\n }, options.container);\n options.injects?.forEach((inject, indexParent) => {\n registerInject({\n index: inject.index ?? indexParent,\n parent: token,\n scopeable: inject.scopeable ?? options.scopeable ?? false,\n singleton: inject.singleton ?? options.singleton ?? false,\n token: inject.token\n }, options.container);\n });\n}\nexport { InvertlyContainer } from './container.factory';\nexport default createFromInvertly;\n//# sourceMappingURL=index.js.map","import { registerInject } from '../factories';\nfunction createInject(inject) {\n return (parent, _, index) => {\n registerInject({ ...inject, index, parent });\n };\n}\nexport function Singleton(token) {\n return createInject({ token, scopeable: false, singleton: true });\n}\nexport function Scope(token) {\n return createInject({ token, scopeable: true, singleton: false });\n}\nexport function Factory(token) {\n return createInject({ token, scopeable: false, singleton: false });\n}\n//# sourceMappingURL=inject.decorator.js.map","import { registerInjectable } from '../factories';\nexport function Injectable(options) {\n return (token) => {\n registerInjectable({\n scopeable: !!options?.scopeable,\n singleton: !!options?.singleton,\n token\n });\n };\n}\n//# sourceMappingURL=injectable.decorator.js.map"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './inject.decorator';
|
|
2
|
-
export * from './injectable.decorator';
|
|
1
|
+
export * from './inject.decorator';
|
|
2
|
+
export * from './injectable.decorator';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './inject.decorator';
|
|
2
|
-
export * from './injectable.decorator';
|
|
1
|
+
export * from './inject.decorator';
|
|
2
|
+
export * from './injectable.decorator';
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { InjectToken } from '../types';
|
|
2
|
-
export declare function Singleton(token: InjectToken): ParameterDecorator;
|
|
3
|
-
export declare function Scope(token: InjectToken): ParameterDecorator;
|
|
4
|
-
export declare function Factory(token: InjectToken): ParameterDecorator;
|
|
1
|
+
import { InjectToken } from '../types';
|
|
2
|
+
export declare function Singleton(token: InjectToken): ParameterDecorator;
|
|
3
|
+
export declare function Scope(token: InjectToken): ParameterDecorator;
|
|
4
|
+
export declare function Factory(token: InjectToken): ParameterDecorator;
|
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
import { registerInject } from '../factories';
|
|
2
|
-
function createInject(inject) {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
1
|
+
import { registerInject } from '../factories';
|
|
2
|
+
function createInject(inject) {
|
|
3
|
+
return (parent, _, index) => {
|
|
4
|
+
registerInject({ ...inject, index, parent });
|
|
5
|
+
};
|
|
6
|
+
}
|
|
7
|
+
export function Singleton(token) {
|
|
8
|
+
return createInject({ token, scopeable: false, singleton: true });
|
|
9
|
+
}
|
|
10
|
+
export function Scope(token) {
|
|
11
|
+
return createInject({ token, scopeable: true, singleton: false });
|
|
12
|
+
}
|
|
13
|
+
export function Factory(token) {
|
|
14
|
+
return createInject({ token, scopeable: false, singleton: false });
|
|
15
|
+
}
|
|
17
16
|
//# sourceMappingURL=inject.decorator.js.map
|