mani-game-engine 1.0.0-pre.28 → 1.0.0-pre.30

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/lib/injector.js CHANGED
@@ -1,282 +1,290 @@
1
- import 'reflect-metadata';
2
- const isInjectDependency = (dep) => dep.kind === 'inject';
3
- const isTypeDependency = (dep) => dep.kind === 'type';
4
- export const putIfAbsent = (map, key, value) => {
5
- let v = map.get(key);
6
- if (!v) {
7
- v = value();
8
- map.set(key, v);
9
- }
10
- return v;
11
- };
12
- export const createDependencyAnnotation = (cb) => (dependantType, _propertyKey, index) => {
13
- const metadata = Reflect.getMetadata('design:paramtypes', dependantType);
14
- const type = metadata[index];
15
- if (type === dependantType) {
16
- throw new Error('Could not inject class in itself.');
17
- }
18
- const depList = putIfAbsent(Injector.dependencyMap, dependantType, () => []);
19
- depList.push(cb(type, index, dependantType));
20
- };
21
- export const Inject = createDependencyAnnotation((type, index) => ({ kind: 'inject', index, type, id: '' }));
22
- export const InjectId = (id) => createDependencyAnnotation((type, index) => ({ kind: 'inject', index, type, id }));
23
- export const InjectType = (id) => createDependencyAnnotation((_type, index) => ({ kind: 'type', index, id }));
24
- export class Injector {
25
- constructor(parent) {
26
- this.parent = parent;
27
- this.typeMappings = new Map();
28
- this.classMappings = new Map();
29
- this.parameterResolverArrays = new Map();
30
- this.classResolvers = new Map();
31
- this.typeResolvers = new Map();
32
- this.singletons = new Map();
33
- this.typeSingletons = new Map();
34
- this.dependencyResolverExtensions = parent ? parent.dependencyResolverExtensions : new Map();
35
- this.map(Injector).toValue(this);
36
- }
37
- createChild() {
38
- return new this.constructor(this);
39
- }
40
- addExtensionResolver(kind, resolver) {
41
- this.dependencyResolverExtensions.set(kind, resolver);
42
- }
43
- map(type, id = '') {
44
- const mapper = new InternalClassMapper(this);
45
- const idMappings = putIfAbsent(this.classMappings, type, () => ({ map: new Map() }));
46
- if (id === '') {
47
- idMappings.def = mapper.mapping;
48
- }
49
- else {
50
- idMappings.map.set(id, mapper.mapping);
51
- }
52
- return mapper;
53
- }
54
- mapType(id) {
55
- const typeMapper = new InternalTypeMapper(this);
56
- this.typeMappings.set(id, typeMapper.mapping);
57
- return typeMapper;
58
- }
59
- getType(id) {
60
- const typeResolver = this.getTypeResolver(id);
61
- if (!typeResolver) {
62
- throw new Error(`No Mapping for Type with id: '${String(id)}'`);
63
- }
64
- return typeResolver();
65
- }
66
- get(type, id = '') {
67
- const resolver = this.getClassIdResolver(type, id);
68
- if (!resolver) {
69
- throw new Error(`No Mapping for Type ${type.name}` + String(id === '' ? '' : ` with id: '${String(id)}'`));
70
- }
71
- return resolver();
72
- }
73
- createInstance(type) {
74
- return this.getCreateInstanceResolver(type)();
75
- }
76
- createResolverArray(resolverContext) {
77
- const { type } = resolverContext;
78
- const result = [];
79
- const dependencies = Injector.dependencyMap.get(resolverContext.type);
80
- if (!dependencies) {
81
- return [];
82
- }
83
- for (const dependency of dependencies) {
84
- let resolver;
85
- if (isInjectDependency(dependency)) {
86
- if (!dependency.type)
87
- throw new Error(`Undefined dependency type for ${type.name}. Check for circular dependency.`);
88
- const classIdResolver = this.getClassIdResolver(dependency.type, dependency.id);
89
- if (!classIdResolver) {
90
- throw new Error(`Could not inject ${dependency.type.name} into ${resolverContext.type.name}`);
91
- }
92
- resolver = classIdResolver;
93
- }
94
- else if (isTypeDependency(dependency)) {
95
- const typeResolver = this.getTypeResolver(dependency.id);
96
- if (!typeResolver) {
97
- throw new Error(`Could not inject type with id '${String(dependency.id)}' into ${resolverContext.type.name}`);
98
- }
99
- resolver = typeResolver;
100
- }
101
- else {
102
- const extensionResolver = this.dependencyResolverExtensions.get(dependency.kind);
103
- if (!extensionResolver) {
104
- throw new Error(`no dependency resolver for '${dependency.kind}'`);
105
- }
106
- resolver = extensionResolver(resolverContext, dependency);
107
- }
108
- result[dependency.index] = resolver;
109
- }
110
- return result;
111
- }
112
- getClassMapping(type, id) {
113
- const idMapping = this.classMappings.get(type);
114
- if (!idMapping) {
115
- if (!this.parent)
116
- return undefined;
117
- return this.parent.getClassMapping(type, id);
118
- }
119
- const mapping = id === '' ? idMapping.def : idMapping.map.get(id);
120
- if (!mapping) {
121
- if (!this.parent)
122
- return undefined;
123
- return this.parent.getClassMapping(type, id);
124
- }
125
- return mapping;
126
- }
127
- getClassIdResolver(dependencyType, id) {
128
- const getResolver = () => {
129
- const mapping = this.getClassMapping(dependencyType, id);
130
- if (!mapping)
131
- return undefined;
132
- switch (mapping.kind) {
133
- case 0:
134
- return this.getCreateInstanceResolver(dependencyType);
135
- case 1:
136
- const instance = mapping.value;
137
- return () => instance;
138
- case 2:
139
- let singleton;
140
- const singletonContainer = putIfAbsent(mapping.injector.singletons, dependencyType, () => ({ map: new Map() }));
141
- if (id === '') {
142
- if (singletonContainer.def) {
143
- singleton = singletonContainer.def;
144
- }
145
- else {
146
- singletonContainer.def = mapping.injector.createInstance(dependencyType);
147
- singleton = singletonContainer.def;
148
- }
149
- }
150
- else {
151
- singleton = putIfAbsent(singletonContainer.map, id, () => mapping.injector.createInstance(dependencyType));
152
- }
153
- return () => singleton;
154
- case 3:
155
- return mapping.provider;
156
- }
157
- };
158
- const container = putIfAbsent(this.classResolvers, dependencyType, () => ({
159
- def: undefined,
160
- map: new Map(),
161
- }));
162
- if (id === '') {
163
- if (container.def) {
164
- return container.def;
165
- }
166
- const resolver = getResolver();
167
- container.def = resolver;
168
- return resolver;
169
- }
170
- else {
171
- return putIfAbsent(container.map, id, () => getResolver());
172
- }
173
- }
174
- getTypeResolver(id) {
175
- return putIfAbsent(this.typeResolvers, id, () => {
176
- const mapping = this.getTypeMapping(id);
177
- if (!mapping)
178
- return undefined;
179
- if (mapping.kind === undefined) {
180
- throw new Error(`No TypeMapping for id ${String(id)}.`);
181
- }
182
- if (mapping.kind === 2) {
183
- const instance = mapping.value;
184
- return () => instance;
185
- }
186
- else if (mapping.kind === 0) {
187
- return this.getCreateInstanceResolver(mapping.type);
188
- }
189
- else if (mapping.kind === 1) {
190
- const instance = putIfAbsent(mapping.injector.typeSingletons, id, () => mapping.injector.createInstance(mapping.type));
191
- return () => instance;
192
- }
193
- else {
194
- return mapping.provider;
195
- }
196
- });
197
- }
198
- getCreateInstanceResolver(type) {
199
- const resolvers = putIfAbsent(this.parameterResolverArrays, type, () => this.createResolverArray({
200
- kind: 'class',
201
- type: type,
202
- }));
203
- if (resolvers.length === 0) {
204
- return () => new type();
205
- }
206
- const args = new Array(resolvers.length);
207
- return () => {
208
- for (let i = 0; i < args.length; i++) {
209
- args[i] = resolvers[i]();
210
- }
211
- return new type(...args);
212
- };
213
- }
214
- getTypeMapping(id) {
215
- const mapping = this.typeMappings.get(id);
216
- if (!mapping) {
217
- if (!this.parent)
218
- return undefined;
219
- return this.parent.getTypeMapping(id);
220
- }
221
- return mapping;
222
- }
223
- }
224
- Injector.dependencyMap = new Map();
225
- class InternalTypeMapper {
226
- constructor(injector) {
227
- this.injector = injector;
228
- this.mapping = { kind: undefined };
229
- }
230
- toClass(classValue) {
231
- Object.assign(this.mapping, {
232
- kind: 0,
233
- type: classValue,
234
- });
235
- }
236
- toSingleton(classValue) {
237
- Object.assign(this.mapping, {
238
- kind: 1,
239
- type: classValue,
240
- injector: this.injector,
241
- });
242
- }
243
- toValue(value) {
244
- Object.assign(this.mapping, {
245
- kind: 2,
246
- value: value,
247
- });
248
- }
249
- toProvider(provider) {
250
- Object.assign(this.mapping, {
251
- kind: 3,
252
- provider: provider,
253
- });
254
- }
255
- }
256
- class InternalClassMapper {
257
- constructor(injector) {
258
- this.injector = injector;
259
- this.mapping = { kind: 0 };
260
- }
261
- toValue(value) {
262
- Object.assign(this.mapping, {
263
- kind: 1,
264
- value: value,
265
- });
266
- return value;
267
- }
268
- toSingleton() {
269
- Object.assign(this.mapping, {
270
- kind: 2,
271
- injector: this.injector,
272
- });
273
- this.mapping.kind = 2;
274
- }
275
- toProvider(provider) {
276
- Object.assign(this.mapping, {
277
- kind: 3,
278
- provider: provider,
279
- });
280
- }
281
- }
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Injector = exports.InjectType = exports.InjectId = exports.Inject = exports.createDependencyAnnotation = exports.putIfAbsent = void 0;
4
+ require("reflect-metadata");
5
+ const isInjectDependency = (dep) => dep.kind === 'inject';
6
+ const isTypeDependency = (dep) => dep.kind === 'type';
7
+ const putIfAbsent = (map, key, value) => {
8
+ let v = map.get(key);
9
+ if (!v) {
10
+ v = value();
11
+ map.set(key, v);
12
+ }
13
+ return v;
14
+ };
15
+ exports.putIfAbsent = putIfAbsent;
16
+ const createDependencyAnnotation = (cb) => (dependantType, _propertyKey, index) => {
17
+ const metadata = Reflect.getMetadata('design:paramtypes', dependantType);
18
+ const type = metadata[index];
19
+ if (type === dependantType) {
20
+ throw new Error('Could not inject class in itself.');
21
+ }
22
+ const depList = exports.putIfAbsent(Injector.dependencyMap, dependantType, () => []);
23
+ depList.push(cb(type, index, dependantType));
24
+ };
25
+ exports.createDependencyAnnotation = createDependencyAnnotation;
26
+ exports.Inject = exports.createDependencyAnnotation((type, index) => ({ kind: 'inject', index, type, id: '' }));
27
+ const InjectId = (id) => exports.createDependencyAnnotation((type, index) => ({ kind: 'inject', index, type, id }));
28
+ exports.InjectId = InjectId;
29
+ const InjectType = (id) => exports.createDependencyAnnotation((_type, index) => ({ kind: 'type', index, id }));
30
+ exports.InjectType = InjectType;
31
+ class Injector {
32
+ constructor(parent) {
33
+ this.parent = parent;
34
+ this.typeMappings = new Map();
35
+ this.classMappings = new Map();
36
+ this.parameterResolverArrays = new Map();
37
+ this.classResolvers = new Map();
38
+ this.typeResolvers = new Map();
39
+ this.singletons = new Map();
40
+ this.typeSingletons = new Map();
41
+ this.dependencyResolverExtensions = parent ? parent.dependencyResolverExtensions : new Map();
42
+ this.map(Injector).toValue(this);
43
+ }
44
+ createChild() {
45
+ return new this.constructor(this);
46
+ }
47
+ addExtensionResolver(kind, resolver) {
48
+ this.dependencyResolverExtensions.set(kind, resolver);
49
+ }
50
+ map(type, id = '') {
51
+ const mapper = new InternalClassMapper(this);
52
+ const idMappings = exports.putIfAbsent(this.classMappings, type, () => ({ map: new Map() }));
53
+ if (id === '') {
54
+ idMappings.def = mapper.mapping;
55
+ }
56
+ else {
57
+ idMappings.map.set(id, mapper.mapping);
58
+ }
59
+ return mapper;
60
+ }
61
+ mapType(id) {
62
+ const typeMapper = new InternalTypeMapper(this);
63
+ this.typeMappings.set(id, typeMapper.mapping);
64
+ return typeMapper;
65
+ }
66
+ getType(id) {
67
+ const typeResolver = this.getTypeResolver(id);
68
+ if (!typeResolver) {
69
+ throw new Error(`No Mapping for Type with id: '${String(id)}'`);
70
+ }
71
+ return typeResolver();
72
+ }
73
+ get(type, id = '') {
74
+ const resolver = this.getClassIdResolver(type, id);
75
+ if (!resolver) {
76
+ throw new Error(`No Mapping for Type ${type.name}` + String(id === '' ? '' : ` with id: '${String(id)}'`));
77
+ }
78
+ return resolver();
79
+ }
80
+ createInstance(type) {
81
+ return this.getCreateInstanceResolver(type)();
82
+ }
83
+ createResolverArray(resolverContext) {
84
+ const { type } = resolverContext;
85
+ const result = [];
86
+ const dependencies = Injector.dependencyMap.get(resolverContext.type);
87
+ if (!dependencies) {
88
+ return [];
89
+ }
90
+ for (const dependency of dependencies) {
91
+ let resolver;
92
+ if (isInjectDependency(dependency)) {
93
+ if (!dependency.type)
94
+ throw new Error(`Undefined dependency type for ${type.name}. Check for circular dependency.`);
95
+ const classIdResolver = this.getClassIdResolver(dependency.type, dependency.id);
96
+ if (!classIdResolver) {
97
+ throw new Error(`Could not inject ${dependency.type.name} into ${resolverContext.type.name}`);
98
+ }
99
+ resolver = classIdResolver;
100
+ }
101
+ else if (isTypeDependency(dependency)) {
102
+ const typeResolver = this.getTypeResolver(dependency.id);
103
+ if (!typeResolver) {
104
+ throw new Error(`Could not inject type with id '${String(dependency.id)}' into ${resolverContext.type.name}`);
105
+ }
106
+ resolver = typeResolver;
107
+ }
108
+ else {
109
+ const extensionResolver = this.dependencyResolverExtensions.get(dependency.kind);
110
+ if (!extensionResolver) {
111
+ throw new Error(`no dependency resolver for '${dependency.kind}'`);
112
+ }
113
+ resolver = extensionResolver(resolverContext, dependency);
114
+ }
115
+ result[dependency.index] = resolver;
116
+ }
117
+ return result;
118
+ }
119
+ getClassMapping(type, id) {
120
+ const idMapping = this.classMappings.get(type);
121
+ if (!idMapping) {
122
+ if (!this.parent)
123
+ return undefined;
124
+ return this.parent.getClassMapping(type, id);
125
+ }
126
+ const mapping = id === '' ? idMapping.def : idMapping.map.get(id);
127
+ if (!mapping) {
128
+ if (!this.parent)
129
+ return undefined;
130
+ return this.parent.getClassMapping(type, id);
131
+ }
132
+ return mapping;
133
+ }
134
+ getClassIdResolver(dependencyType, id) {
135
+ const getResolver = () => {
136
+ const mapping = this.getClassMapping(dependencyType, id);
137
+ if (!mapping)
138
+ return undefined;
139
+ switch (mapping.kind) {
140
+ case 0:
141
+ return this.getCreateInstanceResolver(dependencyType);
142
+ case 1:
143
+ const instance = mapping.value;
144
+ return () => instance;
145
+ case 2:
146
+ let singleton;
147
+ const singletonContainer = exports.putIfAbsent(mapping.injector.singletons, dependencyType, () => ({ map: new Map() }));
148
+ if (id === '') {
149
+ if (singletonContainer.def) {
150
+ singleton = singletonContainer.def;
151
+ }
152
+ else {
153
+ singletonContainer.def = mapping.injector.createInstance(dependencyType);
154
+ singleton = singletonContainer.def;
155
+ }
156
+ }
157
+ else {
158
+ singleton = exports.putIfAbsent(singletonContainer.map, id, () => mapping.injector.createInstance(dependencyType));
159
+ }
160
+ return () => singleton;
161
+ case 3:
162
+ return mapping.provider;
163
+ }
164
+ };
165
+ const container = exports.putIfAbsent(this.classResolvers, dependencyType, () => ({
166
+ def: undefined,
167
+ map: new Map(),
168
+ }));
169
+ if (id === '') {
170
+ if (container.def) {
171
+ return container.def;
172
+ }
173
+ const resolver = getResolver();
174
+ container.def = resolver;
175
+ return resolver;
176
+ }
177
+ else {
178
+ return exports.putIfAbsent(container.map, id, () => getResolver());
179
+ }
180
+ }
181
+ getTypeResolver(id) {
182
+ return exports.putIfAbsent(this.typeResolvers, id, () => {
183
+ const mapping = this.getTypeMapping(id);
184
+ if (!mapping)
185
+ return undefined;
186
+ if (mapping.kind === undefined) {
187
+ throw new Error(`No TypeMapping for id ${String(id)}.`);
188
+ }
189
+ if (mapping.kind === 2) {
190
+ const instance = mapping.value;
191
+ return () => instance;
192
+ }
193
+ else if (mapping.kind === 0) {
194
+ return this.getCreateInstanceResolver(mapping.type);
195
+ }
196
+ else if (mapping.kind === 1) {
197
+ const instance = exports.putIfAbsent(mapping.injector.typeSingletons, id, () => mapping.injector.createInstance(mapping.type));
198
+ return () => instance;
199
+ }
200
+ else {
201
+ return mapping.provider;
202
+ }
203
+ });
204
+ }
205
+ getCreateInstanceResolver(type) {
206
+ const resolvers = exports.putIfAbsent(this.parameterResolverArrays, type, () => this.createResolverArray({
207
+ kind: 'class',
208
+ type: type,
209
+ }));
210
+ if (resolvers.length === 0) {
211
+ return () => new type();
212
+ }
213
+ const args = new Array(resolvers.length);
214
+ return () => {
215
+ for (let i = 0; i < args.length; i++) {
216
+ args[i] = resolvers[i]();
217
+ }
218
+ return new type(...args);
219
+ };
220
+ }
221
+ getTypeMapping(id) {
222
+ const mapping = this.typeMappings.get(id);
223
+ if (!mapping) {
224
+ if (!this.parent)
225
+ return undefined;
226
+ return this.parent.getTypeMapping(id);
227
+ }
228
+ return mapping;
229
+ }
230
+ }
231
+ exports.Injector = Injector;
232
+ Injector.dependencyMap = new Map();
233
+ class InternalTypeMapper {
234
+ constructor(injector) {
235
+ this.injector = injector;
236
+ this.mapping = { kind: undefined };
237
+ }
238
+ toClass(classValue) {
239
+ Object.assign(this.mapping, {
240
+ kind: 0,
241
+ type: classValue,
242
+ });
243
+ }
244
+ toSingleton(classValue) {
245
+ Object.assign(this.mapping, {
246
+ kind: 1,
247
+ type: classValue,
248
+ injector: this.injector,
249
+ });
250
+ }
251
+ toValue(value) {
252
+ Object.assign(this.mapping, {
253
+ kind: 2,
254
+ value: value,
255
+ });
256
+ }
257
+ toProvider(provider) {
258
+ Object.assign(this.mapping, {
259
+ kind: 3,
260
+ provider: provider,
261
+ });
262
+ }
263
+ }
264
+ class InternalClassMapper {
265
+ constructor(injector) {
266
+ this.injector = injector;
267
+ this.mapping = { kind: 0 };
268
+ }
269
+ toValue(value) {
270
+ Object.assign(this.mapping, {
271
+ kind: 1,
272
+ value: value,
273
+ });
274
+ return value;
275
+ }
276
+ toSingleton() {
277
+ Object.assign(this.mapping, {
278
+ kind: 2,
279
+ injector: this.injector,
280
+ });
281
+ this.mapping.kind = 2;
282
+ }
283
+ toProvider(provider) {
284
+ Object.assign(this.mapping, {
285
+ kind: 3,
286
+ provider: provider,
287
+ });
288
+ }
289
+ }
282
290
  //# sourceMappingURL=injector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"injector.js","sourceRoot":"","sources":["../src/injector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"injector.js","sourceRoot":"","sources":["../src/injector.ts"],"names":[],"mappings":"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"}