mani-game-engine 1.0.0-pre.23 → 1.0.0-pre.28
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/LICENSE +1 -1
- package/lib/ecsInjector.d.ts +1 -1
- package/lib/ecsInjector.js +1 -1
- package/lib/ecsInjector.js.map +1 -1
- package/lib/gameEngine.d.ts +1 -1
- package/lib/gameEngine.js +1 -1
- package/lib/gameEngine.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/injector.d.ts +121 -0
- package/lib/injector.js +282 -0
- package/lib/injector.js.map +1 -0
- package/lib/scope/scopeContext.d.ts +1 -1
- package/lib/scope/scopeContext.js +1 -1
- package/lib/scope/scopeContext.js.map +1 -1
- package/package.json +5 -7
- package/src/ecsInjector.ts +1 -1
- package/src/gameEngine.ts +1 -1
- package/src/index.ts +2 -1
- package/src/injector.ts +363 -0
- package/src/scope/scopeContext.ts +1 -1
package/LICENSE
CHANGED
package/lib/ecsInjector.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Class, ID, Injector, ResolverFunction } from 'mani-injector';
|
|
2
1
|
import { Signal } from 'mani-signal';
|
|
2
|
+
import { Class, ID, Injector, ResolverFunction } from './injector';
|
|
3
3
|
import { SystemContext } from './systemContext';
|
|
4
4
|
declare type ComponentClass = Class;
|
|
5
5
|
declare type EntityClass = Class;
|
package/lib/ecsInjector.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { createDependencyAnnotation, Injector, putIfAbsent } from 'mani-injector';
|
|
2
1
|
import { Signal } from 'mani-signal';
|
|
2
|
+
import { createDependencyAnnotation, Injector, putIfAbsent } from './injector';
|
|
3
3
|
import { SystemContext } from './systemContext';
|
|
4
4
|
export const entityComponents = new Map();
|
|
5
5
|
export const GetComponent = createDependencyAnnotation((type, index) => ({ kind: 'component', type, index }));
|
package/lib/ecsInjector.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ecsInjector.js","sourceRoot":"","sources":["../src/ecsInjector.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,0BAA0B,EAAkB,QAAQ,EAAE,WAAW,EAAoC,MAAM,
|
|
1
|
+
{"version":3,"file":"ecsInjector.js","sourceRoot":"","sources":["../src/ecsInjector.ts"],"names":[],"mappings":"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"}
|
package/lib/gameEngine.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Action, Class, GameEnginePlugin, OnFixedUpdateParams, OnUpdateParams, Service, System } from './types';
|
|
2
2
|
import { Signal } from 'mani-signal';
|
|
3
3
|
import { Entity } from './entity';
|
|
4
|
-
import { ID } from 'mani-injector';
|
|
5
4
|
import { EcsInjector } from './ecsInjector';
|
|
6
5
|
import { Clock } from './clock';
|
|
6
|
+
import { ID } from './injector';
|
|
7
7
|
declare const defaultOptions: {
|
|
8
8
|
fixedDeltaTime: number;
|
|
9
9
|
plugins: GameEnginePlugin[];
|
package/lib/gameEngine.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { EngineSignals } from './types';
|
|
2
|
-
import { putIfAbsent } from 'mani-injector';
|
|
3
2
|
import { EcsInjector, signalHandlers, staticSignalHandlers } from './ecsInjector';
|
|
4
3
|
import { GameClock } from './clock';
|
|
4
|
+
import { putIfAbsent } from './injector';
|
|
5
5
|
const defaultOptions = {
|
|
6
6
|
fixedDeltaTime: 1 / 60,
|
|
7
7
|
plugins: [],
|
package/lib/gameEngine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gameEngine.js","sourceRoot":"","sources":["../src/gameEngine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gameEngine.js","sourceRoot":"","sources":["../src/gameEngine.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export * from './types';
|
|
|
4
4
|
export * from './scope/scopeContext';
|
|
5
5
|
export * from './systemContext';
|
|
6
6
|
export { EcsInjector, EntityComponent, GetComponent, GetEntity, GetContext, GetSignal, OnSignal } from './ecsInjector';
|
|
7
|
-
import { ID, Inject, InjectId, Injector, InjectType, putIfAbsent } from '
|
|
7
|
+
import { ID, Inject, InjectId, Injector, InjectType, putIfAbsent } from './injector';
|
|
8
8
|
import { Signal, SignalBinding, SignalCallback } from 'mani-signal';
|
|
9
9
|
import { Clock } from './clock';
|
|
10
10
|
export { Injector, InjectType, InjectId, Inject, putIfAbsent, ID };
|
package/lib/index.js
CHANGED
|
@@ -4,7 +4,7 @@ export * from './types';
|
|
|
4
4
|
export * from './scope/scopeContext';
|
|
5
5
|
export * from './systemContext';
|
|
6
6
|
export { EcsInjector, EntityComponent, GetComponent, GetEntity, GetContext, GetSignal, OnSignal } from './ecsInjector';
|
|
7
|
-
import { Inject, InjectId, Injector, InjectType, putIfAbsent } from '
|
|
7
|
+
import { Inject, InjectId, Injector, InjectType, putIfAbsent } from './injector';
|
|
8
8
|
import { Signal } from 'mani-signal';
|
|
9
9
|
export { Injector, InjectType, InjectId, Inject, putIfAbsent };
|
|
10
10
|
export { Signal };
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAC,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAC,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAC,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAC,MAAM,eAAe,CAAC;AAIrH,OAAO,EAAK,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAC,MAAM,YAAY,CAAC;AACnF,OAAO,EAAC,MAAM,EAAgC,MAAM,aAAa,CAAC;AAGlE,OAAO,EAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAK,CAAC;AAIjE,OAAO,EAAC,MAAM,EAAgC,CAAC"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
export declare type Class<T = any> = {
|
|
3
|
+
name: string;
|
|
4
|
+
new (...args: any[]): T;
|
|
5
|
+
};
|
|
6
|
+
declare type ProviderFunction = () => unknown;
|
|
7
|
+
export declare type ResolverFunction = (context?: any) => unknown;
|
|
8
|
+
export declare type ID = string | symbol;
|
|
9
|
+
export declare type Dependency = {
|
|
10
|
+
kind: string;
|
|
11
|
+
index: number;
|
|
12
|
+
};
|
|
13
|
+
declare const enum TypeMappingKind {
|
|
14
|
+
CLASS = 0,
|
|
15
|
+
SINGLETON = 1,
|
|
16
|
+
VALUE = 2,
|
|
17
|
+
PROVIDER = 3
|
|
18
|
+
}
|
|
19
|
+
declare type ClassTypeMapping = {
|
|
20
|
+
kind: TypeMappingKind.CLASS;
|
|
21
|
+
type: Class;
|
|
22
|
+
};
|
|
23
|
+
declare type SingletonTypeMapping = {
|
|
24
|
+
kind: TypeMappingKind.SINGLETON;
|
|
25
|
+
type: Class;
|
|
26
|
+
injector: Injector;
|
|
27
|
+
};
|
|
28
|
+
declare type ValueTypeMapping = {
|
|
29
|
+
kind: TypeMappingKind.VALUE;
|
|
30
|
+
value: unknown;
|
|
31
|
+
};
|
|
32
|
+
declare type ProviderTypeMapping = {
|
|
33
|
+
kind: TypeMappingKind.PROVIDER;
|
|
34
|
+
provider: ProviderFunction;
|
|
35
|
+
};
|
|
36
|
+
declare type TypeMapping = ClassTypeMapping | SingletonTypeMapping | ValueTypeMapping | ProviderTypeMapping | {
|
|
37
|
+
kind: undefined;
|
|
38
|
+
};
|
|
39
|
+
declare const enum ClassMappingKind {
|
|
40
|
+
INSTANCE = 0,
|
|
41
|
+
VALUE = 1,
|
|
42
|
+
SINGLETON = 2,
|
|
43
|
+
PROVIDER = 3
|
|
44
|
+
}
|
|
45
|
+
declare type InstanceClassMapping = {
|
|
46
|
+
kind: ClassMappingKind.INSTANCE;
|
|
47
|
+
};
|
|
48
|
+
declare type ValueClassMapping = {
|
|
49
|
+
kind: ClassMappingKind.VALUE;
|
|
50
|
+
value: unknown;
|
|
51
|
+
};
|
|
52
|
+
declare type SingletonClassMapping = {
|
|
53
|
+
kind: ClassMappingKind.SINGLETON;
|
|
54
|
+
injector: Injector;
|
|
55
|
+
};
|
|
56
|
+
declare type ProviderClassMapping = {
|
|
57
|
+
kind: ClassMappingKind.PROVIDER;
|
|
58
|
+
provider: ProviderFunction;
|
|
59
|
+
};
|
|
60
|
+
declare type ClassMapping = InstanceClassMapping | ValueClassMapping | SingletonClassMapping | ProviderClassMapping;
|
|
61
|
+
declare type MapContainer = {
|
|
62
|
+
map: Map<ID, ClassMapping>;
|
|
63
|
+
def?: ClassMapping;
|
|
64
|
+
};
|
|
65
|
+
declare type SingletonContainer = {
|
|
66
|
+
map: Map<ID, Object>;
|
|
67
|
+
def?: Object;
|
|
68
|
+
};
|
|
69
|
+
declare type ClassResolverContainer = {
|
|
70
|
+
map: Map<ID, ResolverFunction>;
|
|
71
|
+
def?: ResolverFunction;
|
|
72
|
+
};
|
|
73
|
+
export declare type ResolverContext = {
|
|
74
|
+
[propName: string]: any;
|
|
75
|
+
type: Class;
|
|
76
|
+
kind: string;
|
|
77
|
+
};
|
|
78
|
+
interface ClassMapper<T extends Class> {
|
|
79
|
+
toValue(value: InstanceType<T>): void;
|
|
80
|
+
toSingleton(): void;
|
|
81
|
+
toProvider(provider: () => InstanceType<T>): void;
|
|
82
|
+
}
|
|
83
|
+
interface TypeMapper<T> {
|
|
84
|
+
toClass<C extends Class<T>>(classValue: C): void;
|
|
85
|
+
toSingleton<C extends Class<T>>(classValue: C): void;
|
|
86
|
+
toValue(value: T): void;
|
|
87
|
+
toProvider(provider: () => T): void;
|
|
88
|
+
}
|
|
89
|
+
export declare const putIfAbsent: <T extends Map<K, V>, K, V>(map: T, key: K, value: () => V) => V;
|
|
90
|
+
export declare const createDependencyAnnotation: (cb: (type: any, index: number, dependantType: Class) => Dependency) => (dependantType: Class, _propertyKey: string | symbol, index: number) => any;
|
|
91
|
+
export declare const Inject: (dependantType: Class, _propertyKey: string | symbol, index: number) => any;
|
|
92
|
+
export declare const InjectId: (id: ID) => (dependantType: Class, _propertyKey: string | symbol, index: number) => any;
|
|
93
|
+
export declare const InjectType: (id: ID) => (dependantType: Class, _propertyKey: string | symbol, index: number) => any;
|
|
94
|
+
declare type DependencyExtensionResolver = (context: ResolverContext, dependency: Dependency) => ResolverFunction;
|
|
95
|
+
export declare class Injector {
|
|
96
|
+
readonly parent?: Injector | undefined;
|
|
97
|
+
static readonly dependencyMap: Map<Class<any>, Dependency[]>;
|
|
98
|
+
protected readonly typeMappings: Map<ID, TypeMapping>;
|
|
99
|
+
protected readonly classMappings: Map<Class<any>, MapContainer>;
|
|
100
|
+
protected readonly parameterResolverArrays: Map<Class<any>, ResolverFunction[]>;
|
|
101
|
+
protected readonly classResolvers: Map<Class<any>, ClassResolverContainer>;
|
|
102
|
+
protected readonly typeResolvers: Map<ID, ResolverFunction>;
|
|
103
|
+
protected readonly singletons: Map<Class<any>, SingletonContainer>;
|
|
104
|
+
protected readonly typeSingletons: Map<ID, Object>;
|
|
105
|
+
protected readonly dependencyResolverExtensions: Map<string, DependencyExtensionResolver>;
|
|
106
|
+
constructor(parent?: Injector | undefined);
|
|
107
|
+
createChild(): this;
|
|
108
|
+
addExtensionResolver(kind: string, resolver: DependencyExtensionResolver): void;
|
|
109
|
+
map<T extends Class>(type: T, id?: ID): ClassMapper<T>;
|
|
110
|
+
mapType<T>(id: ID): TypeMapper<T>;
|
|
111
|
+
getType<T>(id: ID): T;
|
|
112
|
+
get<T extends Class>(type: T, id?: ID): InstanceType<T>;
|
|
113
|
+
protected createInstance<T extends Class>(type: T): any;
|
|
114
|
+
protected createResolverArray(resolverContext: ResolverContext): ResolverFunction[];
|
|
115
|
+
protected getClassMapping(type: Class, id: ID): ClassMapping | undefined;
|
|
116
|
+
protected getClassIdResolver(dependencyType: Class, id: ID): ResolverFunction | undefined;
|
|
117
|
+
protected getTypeResolver(id: ID): ResolverFunction | undefined;
|
|
118
|
+
protected getCreateInstanceResolver(type: Class): () => any;
|
|
119
|
+
protected getTypeMapping(id: ID): TypeMapping | undefined;
|
|
120
|
+
}
|
|
121
|
+
export {};
|
package/lib/injector.js
ADDED
|
@@ -0,0 +1,282 @@
|
|
|
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
|
+
}
|
|
282
|
+
//# sourceMappingURL=injector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"injector.js","sourceRoot":"","sources":["../src/injector.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAyC1B,MAAM,kBAAkB,GAAG,CAAC,GAAe,EAA2B,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC/F,MAAM,gBAAgB,GAAG,CAAC,GAAe,EAAyB,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC;AAgBzF,MAAM,CAAC,MAAM,WAAW,GAAG,CAA4B,GAAM,EAAE,GAAM,EAAE,KAAc,EAAE,EAAE;IACrF,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrB,IAAI,CAAC,CAAC,EAAE;QACJ,CAAC,GAAG,KAAK,EAAE,CAAC;QACZ,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;KACnB;IACD,OAAO,CAAC,CAAC;AACb,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,EAAkE,EAAE,EAAE,CAAC,CAAC,aAAoB,EAAE,YAA6B,EAAE,KAAa,EAAO,EAAE;IAC1L,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,mBAAmB,EAAE,aAAa,CAAC,CAAC;IACzE,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,IAAI,KAAK,aAAa,EAAE;QACxB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;KACxD;IACD,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,EAAE,GAAiB,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3F,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;AACjD,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,MAAM,GAAG,0BAA0B,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC;AAC3G,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EAAM,EAAE,EAAE,CAAC,0BAA0B,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC;AACrH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAM,EAAE,EAAE,CAAC,0BAA0B,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC;AAIhH,MAAM,OAAO,QAAQ;IAejB,YAAqB,MAAiB;QAAjB,WAAM,GAAN,MAAM,CAAW;QAZnB,iBAAY,GAAG,IAAI,GAAG,EAAmB,CAAC;QAC1C,kBAAa,GAAG,IAAI,GAAG,EAAuB,CAAC;QAC/C,4BAAuB,GAAG,IAAI,GAAG,EAA6B,CAAC;QAE/D,mBAAc,GAAG,IAAI,GAAG,EAAiC,CAAC;QAC1D,kBAAa,GAAG,IAAI,GAAG,EAAwB,CAAC;QAEhD,eAAU,GAAG,IAAI,GAAG,EAA6B,CAAC;QAClD,mBAAc,GAAG,IAAI,GAAG,EAAc,CAAC;QAKtD,IAAI,CAAC,4BAA4B,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,CAAC,IAAI,GAAG,EAAuC,CAAC;QAClI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,WAAW;QACP,OAAO,IAAsB,IAAI,CAAC,WAAY,CAAC,IAAI,CAAS,CAAC;IACjE,CAAC;IAED,oBAAoB,CAAC,IAAY,EAAE,QAAqC;QACpE,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED,GAAG,CAAkB,IAAO,EAAE,KAAS,EAAE;QACrC,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAI,IAAI,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,IAAa,EAAE,GAAiB,EAAE,CAAC,CAAC,EAAC,GAAG,EAAE,IAAI,GAAG,EAAoB,EAAC,CAAC,CAAC,CAAC;QAC5H,IAAI,EAAE,KAAK,EAAE,EAAE;YACX,UAAU,CAAC,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;SACnC;aAAM;YACH,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;SAC1C;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,OAAO,CAAI,EAAM;QACb,MAAM,UAAU,GAAG,IAAI,kBAAkB,CAAI,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;QAC9C,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,OAAO,CAAI,EAAM;QACb,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,YAAY,EAAE;YACf,MAAM,IAAI,KAAK,CAAC,iCAAiC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;SACnE;QACD,OAAO,YAAY,EAAO,CAAC;IAC/B,CAAC;IAED,GAAG,CAAkB,IAAO,EAAE,KAAS,EAAE;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SAC9G;QACD,OAAO,QAAQ,EAAqB,CAAC;IACzC,CAAC;IAES,cAAc,CAAkB,IAAO;QAC7C,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC;IAClD,CAAC;IAES,mBAAmB,CAAC,eAAgC;QAC1D,MAAM,EAAC,IAAI,EAAC,GAAG,eAAe,CAAC;QAC/B,MAAM,MAAM,GAAuB,EAAE,CAAC;QACtC,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACtE,IAAI,CAAC,YAAY,EAAE;YACf,OAAO,EAAE,CAAC;SACb;QACD,KAAK,MAAM,UAAU,IAAI,YAAY,EAAE;YACnC,IAAI,QAA0B,CAAC;YAC/B,IAAI,kBAAkB,CAAC,UAAU,CAAC,EAAE;gBAChC,IAAI,CAAC,UAAU,CAAC,IAAI;oBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,CAAC,IAAI,kCAAkC,CAAC,CAAC;gBACpH,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;gBAChF,IAAI,CAAC,eAAe,EAAE;oBAClB,MAAM,IAAI,KAAK,CAAC,oBAAoB,UAAU,CAAC,IAAI,CAAC,IAAI,SAAS,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;iBACjG;gBACD,QAAQ,GAAG,eAAe,CAAC;aAC9B;iBAAM,IAAI,gBAAgB,CAAC,UAAU,CAAC,EAAE;gBACrC,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBACzD,IAAI,CAAC,YAAY,EAAE;oBACf,MAAM,IAAI,KAAK,CAAC,kCAAkC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;iBACjH;gBACD,QAAQ,GAAG,YAAY,CAAC;aAC3B;iBAAM;gBACH,MAAM,iBAAiB,GAAG,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACjF,IAAI,CAAC,iBAAiB,EAAE;oBACpB,MAAM,IAAI,KAAK,CAAC,+BAA+B,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC;iBACtE;gBACD,QAAQ,GAAG,iBAAiB,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;aAC7D;YACD,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;SACvC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAES,eAAe,CAAC,IAAW,EAAE,EAAM;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS,EAAE;YACZ,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO,SAAS,CAAC;YACnC,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;SAChD;QACD,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,OAAO,EAAE;YACV,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO,SAAS,CAAC;YACnC,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;SAChD;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAES,kBAAkB,CAAC,cAAqB,EAAE,EAAM;QACtD,MAAM,WAAW,GAAG,GAAiC,EAAE;YACnD,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;YACzD,IAAI,CAAC,OAAO;gBAAE,OAAO,SAAS,CAAC;YAC/B,QAAQ,OAAO,CAAC,IAAI,EAAE;gBAClB;oBACI,OAAO,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,CAAC;gBAC1D;oBAEI,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;oBAC/B,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC;gBAC1B;oBACI,IAAI,SAAkB,CAAC;oBAEvB,MAAM,kBAAkB,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,cAAc,EAAE,GAAuB,EAAE,CAAC,CAAC,EAAC,GAAG,EAAE,IAAI,GAAG,EAAc,EAAC,CAAC,CAAC,CAAC;oBAC9I,IAAI,EAAE,KAAK,EAAE,EAAE;wBACX,IAAI,kBAAkB,CAAC,GAAG,EAAE;4BACxB,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC;yBACtC;6BAAM;4BACH,kBAAkB,CAAC,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;4BACzE,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC;yBACtC;qBACJ;yBAAM;wBACH,SAAS,GAAG,WAAW,CAAC,kBAAkB,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC;qBAC9G;oBACD,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC;gBAC3B;oBAEI,OAAO,OAAO,CAAC,QAAQ,CAAC;aAC/B;QACL,CAAC,CAAC;QAEF,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,EAAE,GAA2B,EAAE,CAAC,CAAC;YAC9F,GAAG,EAAE,SAAS;YACd,GAAG,EAAE,IAAI,GAAG,EAAwB;SACvC,CAAC,CAAC,CAAC;QAEJ,IAAI,EAAE,KAAK,EAAE,EAAE;YACX,IAAI,SAAS,CAAC,GAAG,EAAE;gBACf,OAAO,SAAS,CAAC,GAAG,CAAC;aACxB;YACD,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;YAC/B,SAAS,CAAC,GAAG,GAAG,QAAQ,CAAC;YACzB,OAAO,QAAQ,CAAC;SACnB;aAAM;YACH,OAAO,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;SAC9D;IACL,CAAC;IAES,eAAe,CAAC,EAAM;QAC5B,OAAO,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,EAAE,GAAG,EAAE;YAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YACxC,IAAI,CAAC,OAAO;gBAAE,OAAO,SAAS,CAAC;YAC/B,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;gBAE5B,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;aAC3D;YACD,IAAI,OAAO,CAAC,IAAI,MAA0B,EAAE;gBACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;gBAC/B,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC;aACzB;iBAAM,IAAI,OAAO,CAAC,IAAI,MAA0B,EAAE;gBAC/C,OAAO,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aACvD;iBAAM,IAAI,OAAO,CAAC,IAAI,MAA8B,EAAE;gBAEnD,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBACvH,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC;aACzB;iBAAM;gBAEH,OAAO,OAAO,CAAC,QAAQ,CAAC;aAC3B;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAES,yBAAyB,CAAC,IAAW;QAC3C,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAa,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC;YACtG,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,IAAI;SACb,CAAC,CAAC,CAAC;QACJ,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YACxB,OAAO,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;SAC3B;QACD,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzC,OAAO,GAAG,EAAE;YACR,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAClC,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5B;YACD,OAAO,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC;IACN,CAAC;IAES,cAAc,CAAC,EAAM;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,EAAE;YACV,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO,SAAS,CAAC;YACnC,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;SACzC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;;AAjNe,sBAAa,GAAG,IAAI,GAAG,EAAuB,CAAC;AAoNnE,MAAM,kBAAkB;IAGpB,YAA6B,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;QAF/C,YAAO,GAAgB,EAAC,IAAI,EAAE,SAAS,EAAC,CAAC;IAGzC,CAAC;IAED,OAAO,CAAqB,UAAa;QACrC,MAAM,CAAC,MAAM,CAAgC,IAAI,CAAC,OAAO,EAAE;YACvD,IAAI,GAAuB;YAC3B,IAAI,EAAE,UAAU;SACnB,CAAC,CAAC;IACP,CAAC;IAED,WAAW,CAAqB,UAAa;QACzC,MAAM,CAAC,MAAM,CAAoC,IAAI,CAAC,OAAO,EAAE;YAC3D,IAAI,GAA2B;YAC/B,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SAC1B,CAAC,CAAC;IACP,CAAC;IAED,OAAO,CAAC,KAAQ;QACZ,MAAM,CAAC,MAAM,CAAgC,IAAI,CAAC,OAAO,EAAE;YACvD,IAAI,GAAuB;YAC3B,KAAK,EAAE,KAAK;SACf,CAAC,CAAC;IACP,CAAC;IAED,UAAU,CAAC,QAAiB;QACxB,MAAM,CAAC,MAAM,CAAmC,IAAI,CAAC,OAAO,EAAE;YAC1D,IAAI,GAA0B;YAC9B,QAAQ,EAAE,QAAQ;SACrB,CAAC,CAAC;IACP,CAAC;CACJ;AAED,MAAM,mBAAmB;IAIrB,YAA6B,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;QAF/C,YAAO,GAAiB,EAAC,IAAI,GAA2B,EAAC,CAAC;IAER,CAAC;IAEnD,OAAO,CAAC,KAAsB;QAC1B,MAAM,CAAC,MAAM,CAAkC,IAAI,CAAC,OAAO,EAAE;YACzD,IAAI,GAAwB;YAC5B,KAAK,EAAE,KAAK;SACf,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,WAAW;QACP,MAAM,CAAC,MAAM,CAAsC,IAAI,CAAC,OAAO,EAAE;YAC7D,IAAI,GAA4B;YAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,IAAI,IAA6B,CAAC;IACnD,CAAC;IAED,UAAU,CAAC,QAA+B;QACtC,MAAM,CAAC,MAAM,CAAqC,IAAI,CAAC,OAAO,EAAE;YAC5D,IAAI,GAA2B;YAC/B,QAAQ,EAAE,QAAQ;SACrB,CAAC,CAAC;IACP,CAAC;CACJ"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { putIfAbsent } from 'mani-injector';
|
|
2
1
|
import { signalHandlers } from '../ecsInjector';
|
|
2
|
+
import { putIfAbsent } from '../injector';
|
|
3
3
|
export const scopeSignalHandlers = new Map();
|
|
4
4
|
export const OnScopeSignal = (id, options) => (target, propertyKey, descriptor) => {
|
|
5
5
|
if (target instanceof Function) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scopeContext.js","sourceRoot":"","sources":["../../src/scope/scopeContext.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"scopeContext.js","sourceRoot":"","sources":["../../src/scope/scopeContext.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mani-game-engine",
|
|
3
3
|
"author": "Jan Mankopf",
|
|
4
|
-
"version": "1.0.0-pre.
|
|
4
|
+
"version": "1.0.0-pre.28",
|
|
5
5
|
"description": "entity component system game engine for typescript",
|
|
6
6
|
"private": false,
|
|
7
7
|
"scripts": {
|
|
@@ -29,13 +29,11 @@
|
|
|
29
29
|
"ts-jest": "^26.5.4",
|
|
30
30
|
"ts-node": "^9.1.1",
|
|
31
31
|
"tslib": "^2.2.0",
|
|
32
|
-
"typescript": "^4.2.4"
|
|
32
|
+
"typescript": "^4.2.4",
|
|
33
|
+
"mani-signal": "1.x"
|
|
33
34
|
},
|
|
34
35
|
"peerDependencies": {
|
|
35
|
-
"reflect-metadata": "
|
|
36
|
-
|
|
37
|
-
"dependencies": {
|
|
38
|
-
"mani-injector": "0.0.3",
|
|
39
|
-
"mani-signal": "^1.0.6"
|
|
36
|
+
"reflect-metadata": "0.x",
|
|
37
|
+
"mani-signal": "1.x"
|
|
40
38
|
}
|
|
41
39
|
}
|
package/src/ecsInjector.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// TODO: what if systems for entity without components are created?
|
|
2
|
-
import {Class, createDependencyAnnotation, Dependency, ID, Injector, putIfAbsent, ResolverContext, ResolverFunction} from 'mani-injector';
|
|
3
2
|
import {Signal} from 'mani-signal';
|
|
3
|
+
import {Class, createDependencyAnnotation, Dependency, ID, Injector, putIfAbsent, ResolverContext, ResolverFunction} from './injector';
|
|
4
4
|
import {SystemContext} from './systemContext';
|
|
5
5
|
|
|
6
6
|
type ComponentClass = Class;
|
package/src/gameEngine.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {Action, Class, EngineSignals, GameEnginePlugin, OnFixedUpdateParams, OnUpdateParams, Service, System} from './types';
|
|
2
2
|
import {Signal, SignalBinding} from 'mani-signal';
|
|
3
3
|
import {Entity} from './entity';
|
|
4
|
-
import {ID, putIfAbsent} from 'mani-injector';
|
|
5
4
|
import {EcsInjector, signalHandlers, staticSignalHandlers} from './ecsInjector';
|
|
6
5
|
import {Clock, GameClock} from './clock';
|
|
7
6
|
import {SystemContext} from './systemContext';
|
|
7
|
+
import {ID, putIfAbsent} from './injector';
|
|
8
8
|
|
|
9
9
|
type AddEntry = [Entity, () => void];
|
|
10
10
|
type RemoveEntry = [Entity, () => void];
|
package/src/index.ts
CHANGED
|
@@ -6,7 +6,8 @@ export * from './systemContext';
|
|
|
6
6
|
export {EcsInjector, EntityComponent, GetComponent, GetEntity, GetContext, GetSignal, OnSignal} from './ecsInjector';
|
|
7
7
|
|
|
8
8
|
// intellij doesnt auto resolve imports if we just export * from an external dependency
|
|
9
|
-
|
|
9
|
+
|
|
10
|
+
import {ID, Inject, InjectId, Injector, InjectType, putIfAbsent} from './injector';
|
|
10
11
|
import {Signal, SignalBinding, SignalCallback} from 'mani-signal';
|
|
11
12
|
import {Clock} from './clock';
|
|
12
13
|
|
package/src/injector.ts
ADDED
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
|
|
3
|
+
export type Class<T = any> = { name: string, new(...args: any[]): T; }
|
|
4
|
+
|
|
5
|
+
type ProviderFunction = () => unknown;
|
|
6
|
+
export type ResolverFunction = (context?: any) => unknown;
|
|
7
|
+
|
|
8
|
+
export type ID = string | symbol;
|
|
9
|
+
|
|
10
|
+
export type Dependency = { kind: string; index: number };
|
|
11
|
+
type TypeDependency = Dependency & { kind: 'type'; index: number; id: ID; };
|
|
12
|
+
type InjectDependency = Dependency & { kind: 'inject'; index: number; id: ID; type: Class; };
|
|
13
|
+
|
|
14
|
+
const enum TypeMappingKind { CLASS, SINGLETON, VALUE, PROVIDER}
|
|
15
|
+
|
|
16
|
+
type ClassTypeMapping = { kind: TypeMappingKind.CLASS; type: Class };
|
|
17
|
+
type SingletonTypeMapping = { kind: TypeMappingKind.SINGLETON; type: Class; injector: Injector };
|
|
18
|
+
type ValueTypeMapping = { kind: TypeMappingKind.VALUE; value: unknown; };
|
|
19
|
+
type ProviderTypeMapping = { kind: TypeMappingKind.PROVIDER; provider: ProviderFunction; };
|
|
20
|
+
// undefined kind is needed because there is no default mapping for types
|
|
21
|
+
type TypeMapping = ClassTypeMapping | SingletonTypeMapping | ValueTypeMapping | ProviderTypeMapping | { kind: undefined };
|
|
22
|
+
|
|
23
|
+
const enum ClassMappingKind { INSTANCE, VALUE, SINGLETON, PROVIDER}
|
|
24
|
+
|
|
25
|
+
type InstanceClassMapping = { kind: ClassMappingKind.INSTANCE; };
|
|
26
|
+
type ValueClassMapping = { kind: ClassMappingKind.VALUE; value: unknown; };
|
|
27
|
+
type SingletonClassMapping = { kind: ClassMappingKind.SINGLETON; injector: Injector };
|
|
28
|
+
type ProviderClassMapping = { kind: ClassMappingKind.PROVIDER; provider: ProviderFunction; };
|
|
29
|
+
type ClassMapping = InstanceClassMapping | ValueClassMapping | SingletonClassMapping | ProviderClassMapping;
|
|
30
|
+
|
|
31
|
+
// most of the class mappings are done with the default id, store them in the def field so we eliminate a second map lookup
|
|
32
|
+
type MapContainer = { map: Map<ID, ClassMapping>; def?: ClassMapping; };
|
|
33
|
+
type SingletonContainer = { map: Map<ID, Object>; def?: Object; };
|
|
34
|
+
type ClassResolverContainer = { map: Map<ID, ResolverFunction>; def?: ResolverFunction; };
|
|
35
|
+
|
|
36
|
+
export type ResolverContext = {
|
|
37
|
+
[propName: string]: any;
|
|
38
|
+
type: Class
|
|
39
|
+
kind: string;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const isInjectDependency = (dep: Dependency): dep is InjectDependency => dep.kind === 'inject';
|
|
43
|
+
const isTypeDependency = (dep: Dependency): dep is TypeDependency => dep.kind === 'type';
|
|
44
|
+
|
|
45
|
+
interface ClassMapper<T extends Class> {
|
|
46
|
+
toValue(value: InstanceType<T>): void;
|
|
47
|
+
toSingleton(): void;
|
|
48
|
+
toProvider(provider: () => InstanceType<T>): void;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
interface TypeMapper<T> {
|
|
52
|
+
toClass<C extends Class<T>>(classValue: C): void;
|
|
53
|
+
toSingleton<C extends Class<T>>(classValue: C): void;
|
|
54
|
+
toValue(value: T): void;
|
|
55
|
+
toProvider(provider: () => T): void;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// why is this not in javascript?! ...
|
|
59
|
+
export const putIfAbsent = <T extends Map<K, V>, K, V>(map: T, key: K, value: () => V) => {
|
|
60
|
+
let v = map.get(key);
|
|
61
|
+
if (!v) {
|
|
62
|
+
v = value();
|
|
63
|
+
map.set(key, v);
|
|
64
|
+
}
|
|
65
|
+
return v;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
// helper method to create annotation functions
|
|
69
|
+
export const createDependencyAnnotation = (cb: (type: any, index: number, dependantType: Class) => Dependency) => (dependantType: Class, _propertyKey: string | symbol, index: number): any => {
|
|
70
|
+
const metadata = Reflect.getMetadata('design:paramtypes', dependantType);
|
|
71
|
+
const type = metadata[index];
|
|
72
|
+
if (type === dependantType) {
|
|
73
|
+
throw new Error('Could not inject class in itself.');
|
|
74
|
+
}
|
|
75
|
+
const depList = putIfAbsent(Injector.dependencyMap, dependantType, (): Dependency[] => []);
|
|
76
|
+
depList.push(cb(type, index, dependantType));
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
// Default DependencyAnnotations
|
|
80
|
+
export const Inject = createDependencyAnnotation((type, index) => ({kind: 'inject', index, type, id: ''}));
|
|
81
|
+
export const InjectId = (id: ID) => createDependencyAnnotation((type, index) => ({kind: 'inject', index, type, id}));
|
|
82
|
+
export const InjectType = (id: ID) => createDependencyAnnotation((_type, index) => ({kind: 'type', index, id}));
|
|
83
|
+
|
|
84
|
+
type DependencyExtensionResolver = (context: ResolverContext, dependency: Dependency) => ResolverFunction;
|
|
85
|
+
|
|
86
|
+
export class Injector {
|
|
87
|
+
static readonly dependencyMap = new Map<Class, Dependency[]>();
|
|
88
|
+
|
|
89
|
+
protected readonly typeMappings = new Map<ID, TypeMapping>();
|
|
90
|
+
protected readonly classMappings = new Map<Class, MapContainer>();
|
|
91
|
+
protected readonly parameterResolverArrays = new Map<Class, ResolverFunction[]>();
|
|
92
|
+
|
|
93
|
+
protected readonly classResolvers = new Map<Class, ClassResolverContainer>();
|
|
94
|
+
protected readonly typeResolvers = new Map<ID, ResolverFunction>();
|
|
95
|
+
|
|
96
|
+
protected readonly singletons = new Map<Class, SingletonContainer>();
|
|
97
|
+
protected readonly typeSingletons = new Map<ID, Object>();
|
|
98
|
+
|
|
99
|
+
protected readonly dependencyResolverExtensions: Map<string, DependencyExtensionResolver>;
|
|
100
|
+
|
|
101
|
+
constructor(readonly parent?: Injector) {
|
|
102
|
+
this.dependencyResolverExtensions = parent ? parent.dependencyResolverExtensions : new Map<string, DependencyExtensionResolver>();
|
|
103
|
+
this.map(Injector).toValue(this);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
createChild(): this {
|
|
107
|
+
return new (<typeof Injector>this.constructor)(this) as this;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
addExtensionResolver(kind: string, resolver: DependencyExtensionResolver) {
|
|
111
|
+
this.dependencyResolverExtensions.set(kind, resolver);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
map<T extends Class>(type: T, id: ID = ''): ClassMapper<T> {
|
|
115
|
+
const mapper = new InternalClassMapper<T>(this);
|
|
116
|
+
const idMappings = putIfAbsent(this.classMappings, type as Class, (): MapContainer => ({map: new Map<ID, ClassMapping>()}));
|
|
117
|
+
if (id === '') {
|
|
118
|
+
idMappings.def = mapper.mapping;
|
|
119
|
+
} else {
|
|
120
|
+
idMappings.map.set(id, mapper.mapping);
|
|
121
|
+
}
|
|
122
|
+
return mapper;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
mapType<T>(id: ID): TypeMapper<T> {
|
|
126
|
+
const typeMapper = new InternalTypeMapper<T>(this);
|
|
127
|
+
this.typeMappings.set(id, typeMapper.mapping);
|
|
128
|
+
return typeMapper;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
getType<T>(id: ID): T {
|
|
132
|
+
const typeResolver = this.getTypeResolver(id);
|
|
133
|
+
if (!typeResolver) {
|
|
134
|
+
throw new Error(`No Mapping for Type with id: '${String(id)}'`);
|
|
135
|
+
}
|
|
136
|
+
return typeResolver() as T;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
get<T extends Class>(type: T, id: ID = ''): InstanceType<T> {
|
|
140
|
+
const resolver = this.getClassIdResolver(type, id);
|
|
141
|
+
if (!resolver) {
|
|
142
|
+
throw new Error(`No Mapping for Type ${type.name}` + String(id === '' ? '' : ` with id: '${String(id)}'`));
|
|
143
|
+
}
|
|
144
|
+
return resolver() as InstanceType<T>;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
protected createInstance<T extends Class>(type: T) {
|
|
148
|
+
return this.getCreateInstanceResolver(type)();
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
protected createResolverArray(resolverContext: ResolverContext) {
|
|
152
|
+
const {type} = resolverContext;
|
|
153
|
+
const result: ResolverFunction[] = [];
|
|
154
|
+
const dependencies = Injector.dependencyMap.get(resolverContext.type);
|
|
155
|
+
if (!dependencies) {
|
|
156
|
+
return [];
|
|
157
|
+
}
|
|
158
|
+
for (const dependency of dependencies) {
|
|
159
|
+
let resolver: ResolverFunction;
|
|
160
|
+
if (isInjectDependency(dependency)) {
|
|
161
|
+
if (!dependency.type) throw new Error(`Undefined dependency type for ${type.name}. Check for circular dependency.`);
|
|
162
|
+
const classIdResolver = this.getClassIdResolver(dependency.type, dependency.id);
|
|
163
|
+
if (!classIdResolver) {
|
|
164
|
+
throw new Error(`Could not inject ${dependency.type.name} into ${resolverContext.type.name}`);
|
|
165
|
+
}
|
|
166
|
+
resolver = classIdResolver;
|
|
167
|
+
} else if (isTypeDependency(dependency)) {
|
|
168
|
+
const typeResolver = this.getTypeResolver(dependency.id);
|
|
169
|
+
if (!typeResolver) {
|
|
170
|
+
throw new Error(`Could not inject type with id '${String(dependency.id)}' into ${resolverContext.type.name}`);
|
|
171
|
+
}
|
|
172
|
+
resolver = typeResolver;
|
|
173
|
+
} else {
|
|
174
|
+
const extensionResolver = this.dependencyResolverExtensions.get(dependency.kind);
|
|
175
|
+
if (!extensionResolver) {
|
|
176
|
+
throw new Error(`no dependency resolver for '${dependency.kind}'`);
|
|
177
|
+
}
|
|
178
|
+
resolver = extensionResolver(resolverContext, dependency);
|
|
179
|
+
}
|
|
180
|
+
result[dependency.index] = resolver;
|
|
181
|
+
}
|
|
182
|
+
return result;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
protected getClassMapping(type: Class, id: ID): ClassMapping | undefined {
|
|
186
|
+
const idMapping = this.classMappings.get(type);
|
|
187
|
+
if (!idMapping) {
|
|
188
|
+
if (!this.parent) return undefined;
|
|
189
|
+
return this.parent.getClassMapping(type, id);
|
|
190
|
+
}
|
|
191
|
+
const mapping = id === '' ? idMapping.def : idMapping.map.get(id);
|
|
192
|
+
if (!mapping) {
|
|
193
|
+
if (!this.parent) return undefined;
|
|
194
|
+
return this.parent.getClassMapping(type, id);
|
|
195
|
+
}
|
|
196
|
+
return mapping;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
protected getClassIdResolver(dependencyType: Class, id: ID) {
|
|
200
|
+
const getResolver = (): ResolverFunction | undefined => {
|
|
201
|
+
const mapping = this.getClassMapping(dependencyType, id);
|
|
202
|
+
if (!mapping) return undefined;
|
|
203
|
+
switch (mapping.kind) {
|
|
204
|
+
case ClassMappingKind.INSTANCE:
|
|
205
|
+
return this.getCreateInstanceResolver(dependencyType);
|
|
206
|
+
case ClassMappingKind.VALUE:
|
|
207
|
+
// we can cache the value for values
|
|
208
|
+
const instance = mapping.value;
|
|
209
|
+
return () => instance;
|
|
210
|
+
case ClassMappingKind.SINGLETON:
|
|
211
|
+
let singleton: unknown;
|
|
212
|
+
// use the injector defined in the mapping to get the right injector
|
|
213
|
+
const singletonContainer = putIfAbsent(mapping.injector.singletons, dependencyType, (): SingletonContainer => ({map: new Map<ID, Object>()}));
|
|
214
|
+
if (id === '') {
|
|
215
|
+
if (singletonContainer.def) {
|
|
216
|
+
singleton = singletonContainer.def;
|
|
217
|
+
} else {
|
|
218
|
+
singletonContainer.def = mapping.injector.createInstance(dependencyType);
|
|
219
|
+
singleton = singletonContainer.def;
|
|
220
|
+
}
|
|
221
|
+
} else {
|
|
222
|
+
singleton = putIfAbsent(singletonContainer.map, id, () => mapping.injector.createInstance(dependencyType));
|
|
223
|
+
}
|
|
224
|
+
return () => singleton;
|
|
225
|
+
case ClassMappingKind.PROVIDER:
|
|
226
|
+
// we can directly set the provider function as resolver
|
|
227
|
+
return mapping.provider;
|
|
228
|
+
}
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
const container = putIfAbsent(this.classResolvers, dependencyType, (): ClassResolverContainer => ({
|
|
232
|
+
def: undefined,
|
|
233
|
+
map: new Map<ID, ResolverFunction>(),
|
|
234
|
+
}));
|
|
235
|
+
|
|
236
|
+
if (id === '') {
|
|
237
|
+
if (container.def) {
|
|
238
|
+
return container.def;
|
|
239
|
+
}
|
|
240
|
+
const resolver = getResolver();
|
|
241
|
+
container.def = resolver;
|
|
242
|
+
return resolver;
|
|
243
|
+
} else {
|
|
244
|
+
return putIfAbsent(container.map, id, () => getResolver());
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
protected getTypeResolver(id: ID): ResolverFunction | undefined {
|
|
249
|
+
return putIfAbsent(this.typeResolvers, id, () => {
|
|
250
|
+
const mapping = this.getTypeMapping(id);
|
|
251
|
+
if (!mapping) return undefined;
|
|
252
|
+
if (mapping.kind === undefined) {
|
|
253
|
+
// mapping.kind is undefined if there is a type mapping without a target (toClass, toSingleton, toValue)
|
|
254
|
+
throw new Error(`No TypeMapping for id ${String(id)}.`);
|
|
255
|
+
}
|
|
256
|
+
if (mapping.kind === TypeMappingKind.VALUE) {
|
|
257
|
+
const instance = mapping.value;
|
|
258
|
+
return () => instance;
|
|
259
|
+
} else if (mapping.kind === TypeMappingKind.CLASS) {
|
|
260
|
+
return this.getCreateInstanceResolver(mapping.type);
|
|
261
|
+
} else if (mapping.kind === TypeMappingKind.SINGLETON) {
|
|
262
|
+
// use the injector defined in the mapping to get the right injector
|
|
263
|
+
const instance = putIfAbsent(mapping.injector.typeSingletons, id, () => mapping.injector.createInstance(mapping.type));
|
|
264
|
+
return () => instance;
|
|
265
|
+
} else {
|
|
266
|
+
// mapping kind has to be provider
|
|
267
|
+
return mapping.provider;
|
|
268
|
+
}
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
protected getCreateInstanceResolver(type: Class) {
|
|
273
|
+
const resolvers = putIfAbsent(this.parameterResolverArrays, type as Class, () => this.createResolverArray({
|
|
274
|
+
kind: 'class',
|
|
275
|
+
type: type,
|
|
276
|
+
}));
|
|
277
|
+
if (resolvers.length === 0) {
|
|
278
|
+
return () => new type();
|
|
279
|
+
}
|
|
280
|
+
const args = new Array(resolvers.length);
|
|
281
|
+
return () => {
|
|
282
|
+
for (let i = 0; i < args.length; i++) {
|
|
283
|
+
args[i] = resolvers[i]();
|
|
284
|
+
}
|
|
285
|
+
return new type(...args);
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
protected getTypeMapping(id: ID): TypeMapping | undefined {
|
|
290
|
+
const mapping = this.typeMappings.get(id);
|
|
291
|
+
if (!mapping) {
|
|
292
|
+
if (!this.parent) return undefined;
|
|
293
|
+
return this.parent.getTypeMapping(id);
|
|
294
|
+
}
|
|
295
|
+
return mapping;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
class InternalTypeMapper<T> implements TypeMapper<T> {
|
|
300
|
+
mapping: TypeMapping = {kind: undefined};
|
|
301
|
+
|
|
302
|
+
constructor(private readonly injector: Injector) {
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
toClass<C extends Class<T>>(classValue: C): void {
|
|
306
|
+
Object.assign<TypeMapping, ClassTypeMapping>(this.mapping, {
|
|
307
|
+
kind: TypeMappingKind.CLASS,
|
|
308
|
+
type: classValue,
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
toSingleton<C extends Class<T>>(classValue: C): void {
|
|
313
|
+
Object.assign<TypeMapping, SingletonTypeMapping>(this.mapping, {
|
|
314
|
+
kind: TypeMappingKind.SINGLETON,
|
|
315
|
+
type: classValue,
|
|
316
|
+
injector: this.injector,
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
toValue(value: T): void {
|
|
321
|
+
Object.assign<TypeMapping, ValueTypeMapping>(this.mapping, {
|
|
322
|
+
kind: TypeMappingKind.VALUE,
|
|
323
|
+
value: value,
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
toProvider(provider: () => T): void {
|
|
328
|
+
Object.assign<TypeMapping, ProviderTypeMapping>(this.mapping, {
|
|
329
|
+
kind: TypeMappingKind.PROVIDER,
|
|
330
|
+
provider: provider,
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
class InternalClassMapper<T extends Class> implements ClassMapper<T> {
|
|
336
|
+
// instance is the default class mapping
|
|
337
|
+
mapping: ClassMapping = {kind: ClassMappingKind.INSTANCE};
|
|
338
|
+
|
|
339
|
+
constructor(private readonly injector: Injector) {}
|
|
340
|
+
|
|
341
|
+
toValue(value: InstanceType<T>) {
|
|
342
|
+
Object.assign<ClassMapping, ValueClassMapping>(this.mapping, {
|
|
343
|
+
kind: ClassMappingKind.VALUE,
|
|
344
|
+
value: value,
|
|
345
|
+
});
|
|
346
|
+
return value;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
toSingleton(): void {
|
|
350
|
+
Object.assign<ClassMapping, SingletonClassMapping>(this.mapping, {
|
|
351
|
+
kind: ClassMappingKind.SINGLETON,
|
|
352
|
+
injector: this.injector,
|
|
353
|
+
});
|
|
354
|
+
this.mapping.kind = ClassMappingKind.SINGLETON;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
toProvider(provider: () => InstanceType<T>): void {
|
|
358
|
+
Object.assign<ClassMapping, ProviderClassMapping>(this.mapping, {
|
|
359
|
+
kind: ClassMappingKind.PROVIDER,
|
|
360
|
+
provider: provider,
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {Class, EcsInjector, Signal, SignalBinding, SignalCallback} from '../index';
|
|
2
|
-
import {ID, putIfAbsent} from 'mani-injector';
|
|
3
2
|
import {signalHandlers} from '../ecsInjector';
|
|
3
|
+
import {ID, putIfAbsent} from '../injector';
|
|
4
4
|
|
|
5
5
|
export type ScopeSignalOptions = { keepAlive?: boolean | Scope[], group?: string }
|
|
6
6
|
|