mani-game-engine 1.0.0-pre.7 → 1.0.0-pre.70
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/clock.d.ts +57 -0
- package/lib/clock.js +121 -0
- package/lib/clock.js.map +1 -0
- package/lib/ecsInjector.d.ts +45 -0
- package/lib/ecsInjector.js +220 -0
- package/lib/ecsInjector.js.map +1 -0
- package/lib/entity.d.ts +37 -0
- package/lib/entity.js +176 -0
- package/lib/entity.js.map +1 -0
- package/lib/gameEngine.d.ts +96 -0
- package/lib/gameEngine.js +423 -0
- package/lib/gameEngine.js.map +1 -0
- package/lib/index.d.ts +12 -0
- package/lib/index.js +37 -0
- package/lib/index.js.map +1 -0
- package/lib/injector.d.ts +130 -0
- package/lib/injector.js +324 -0
- package/lib/injector.js.map +1 -0
- package/lib/scope/scopeContext.d.ts +76 -0
- package/lib/scope/scopeContext.js +306 -0
- package/lib/scope/scopeContext.js.map +1 -0
- package/lib/systemContext.d.ts +15 -0
- package/lib/systemContext.js +39 -0
- package/lib/systemContext.js.map +1 -0
- package/lib/types.d.ts +83 -0
- package/lib/types.js +20 -0
- package/lib/types.js.map +1 -0
- package/lib/utils/map2k.d.ts +6 -0
- package/lib/utils/map2k.js +44 -0
- package/lib/utils/map2k.js.map +1 -0
- package/package.json +12 -15
- package/src/clock.ts +133 -81
- package/src/ecsInjector.ts +131 -36
- package/src/entity.ts +105 -5
- package/src/gameEngine.ts +459 -353
- package/src/index.ts +25 -9
- package/src/injector.ts +410 -0
- package/src/scope/scopeContext.ts +118 -32
- package/src/systemContext.ts +20 -2
- package/src/types.ts +24 -10
package/lib/injector.js
ADDED
|
@@ -0,0 +1,324 @@
|
|
|
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 = (0, exports.putIfAbsent)(Injector.dependencyMap, dependantType, () => []);
|
|
23
|
+
depList.push(cb(type, index, dependantType));
|
|
24
|
+
};
|
|
25
|
+
exports.createDependencyAnnotation = createDependencyAnnotation;
|
|
26
|
+
exports.Inject = (0, exports.createDependencyAnnotation)((type, index) => ({ kind: 'inject', index, type, id: '' }));
|
|
27
|
+
const InjectId = (id) => (0, exports.createDependencyAnnotation)((type, index) => ({ kind: 'inject', index, type, id }));
|
|
28
|
+
exports.InjectId = InjectId;
|
|
29
|
+
const InjectType = (id) => (0, 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.disposables = new Set();
|
|
42
|
+
this.disposed = false;
|
|
43
|
+
this.dependencyResolverExtensions = parent ? parent.dependencyResolverExtensions : new Map();
|
|
44
|
+
this.map(Injector).toValue(this);
|
|
45
|
+
}
|
|
46
|
+
createChild() {
|
|
47
|
+
return new this.constructor(this);
|
|
48
|
+
}
|
|
49
|
+
addExtensionResolver(kind, resolver) {
|
|
50
|
+
this.dependencyResolverExtensions.set(kind, resolver);
|
|
51
|
+
}
|
|
52
|
+
map(type, id = '') {
|
|
53
|
+
const mapper = new InternalClassMapper(this, type, id);
|
|
54
|
+
const idMappings = (0, exports.putIfAbsent)(this.classMappings, type, () => ({ map: new Map() }));
|
|
55
|
+
if (id === '') {
|
|
56
|
+
idMappings.def = mapper.mapping;
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
idMappings.map.set(id, mapper.mapping);
|
|
60
|
+
}
|
|
61
|
+
return mapper;
|
|
62
|
+
}
|
|
63
|
+
mapType(id) {
|
|
64
|
+
const typeMapper = new InternalTypeMapper(this, id);
|
|
65
|
+
this.typeMappings.set(id, typeMapper.mapping);
|
|
66
|
+
return typeMapper;
|
|
67
|
+
}
|
|
68
|
+
getType(id) {
|
|
69
|
+
const typeResolver = this.getTypeResolver(id);
|
|
70
|
+
if (!typeResolver) {
|
|
71
|
+
throw new Error(`No Mapping for Type with id: '${String(id)}'`);
|
|
72
|
+
}
|
|
73
|
+
return typeResolver();
|
|
74
|
+
}
|
|
75
|
+
get(type, id = '') {
|
|
76
|
+
const resolver = this.getClassIdResolver(type, id);
|
|
77
|
+
if (!resolver) {
|
|
78
|
+
throw new Error(`No Mapping for Type ${type.name}` + String(id === '' ? '' : ` with id: '${String(id)}'`));
|
|
79
|
+
}
|
|
80
|
+
return resolver();
|
|
81
|
+
}
|
|
82
|
+
createInstance(type) {
|
|
83
|
+
return this.getCreateInstanceResolver(type)();
|
|
84
|
+
}
|
|
85
|
+
createResolverArray(resolverContext) {
|
|
86
|
+
const { type } = resolverContext;
|
|
87
|
+
const result = [];
|
|
88
|
+
const dependencies = Injector.dependencyMap.get(resolverContext.type);
|
|
89
|
+
if (!dependencies) {
|
|
90
|
+
return [];
|
|
91
|
+
}
|
|
92
|
+
for (const dependency of dependencies) {
|
|
93
|
+
let resolver;
|
|
94
|
+
if (isInjectDependency(dependency)) {
|
|
95
|
+
if (!dependency.type)
|
|
96
|
+
throw new Error(`Undefined dependency type for ${type.name}. Check for circular dependency.`);
|
|
97
|
+
const classIdResolver = this.getClassIdResolver(dependency.type, dependency.id);
|
|
98
|
+
if (!classIdResolver) {
|
|
99
|
+
throw new Error(`Could not inject ${dependency.type.name} into ${resolverContext.type.name}`);
|
|
100
|
+
}
|
|
101
|
+
resolver = classIdResolver;
|
|
102
|
+
}
|
|
103
|
+
else if (isTypeDependency(dependency)) {
|
|
104
|
+
const typeResolver = this.getTypeResolver(dependency.id);
|
|
105
|
+
if (!typeResolver) {
|
|
106
|
+
throw new Error(`Could not inject type with id '${String(dependency.id)}' into ${resolverContext.type.name}`);
|
|
107
|
+
}
|
|
108
|
+
resolver = typeResolver;
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
const extensionResolver = this.dependencyResolverExtensions.get(dependency.kind);
|
|
112
|
+
if (!extensionResolver) {
|
|
113
|
+
throw new Error(`no dependency resolver for '${dependency.kind}'`);
|
|
114
|
+
}
|
|
115
|
+
resolver = extensionResolver(resolverContext, dependency);
|
|
116
|
+
}
|
|
117
|
+
result[dependency.index] = resolver;
|
|
118
|
+
}
|
|
119
|
+
return result;
|
|
120
|
+
}
|
|
121
|
+
getClassMapping(type, id) {
|
|
122
|
+
const idMapping = this.classMappings.get(type);
|
|
123
|
+
if (!idMapping) {
|
|
124
|
+
if (!this.parent)
|
|
125
|
+
return undefined;
|
|
126
|
+
return this.parent.getClassMapping(type, id);
|
|
127
|
+
}
|
|
128
|
+
const mapping = id === '' ? idMapping.def : idMapping.map.get(id);
|
|
129
|
+
if (!mapping) {
|
|
130
|
+
if (!this.parent)
|
|
131
|
+
return undefined;
|
|
132
|
+
return this.parent.getClassMapping(type, id);
|
|
133
|
+
}
|
|
134
|
+
return mapping;
|
|
135
|
+
}
|
|
136
|
+
getClassIdResolver(dependencyType, id) {
|
|
137
|
+
const getResolver = () => {
|
|
138
|
+
const mapping = this.getClassMapping(dependencyType, id);
|
|
139
|
+
if (!mapping)
|
|
140
|
+
return undefined;
|
|
141
|
+
switch (mapping.kind) {
|
|
142
|
+
case 0:
|
|
143
|
+
return this.getCreateInstanceResolver(dependencyType);
|
|
144
|
+
case 1:
|
|
145
|
+
const instance = mapping.value;
|
|
146
|
+
return () => instance;
|
|
147
|
+
case 2:
|
|
148
|
+
let singleton;
|
|
149
|
+
const singletonContainer = (0, exports.putIfAbsent)(mapping.injector.singletons, dependencyType, () => ({ map: new Map() }));
|
|
150
|
+
if (id === '') {
|
|
151
|
+
if (singletonContainer.def) {
|
|
152
|
+
singleton = singletonContainer.def;
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
singletonContainer.def = mapping.injector.createInstance(dependencyType);
|
|
156
|
+
singleton = singletonContainer.def;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
singleton = (0, exports.putIfAbsent)(singletonContainer.map, id, () => mapping.injector.createInstance(dependencyType));
|
|
161
|
+
}
|
|
162
|
+
return () => singleton;
|
|
163
|
+
case 3:
|
|
164
|
+
const providerInstance = mapping.provider();
|
|
165
|
+
this._registerDisposer(providerInstance);
|
|
166
|
+
return () => providerInstance;
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
const container = (0, exports.putIfAbsent)(this.classResolvers, dependencyType, () => ({
|
|
170
|
+
def: undefined,
|
|
171
|
+
map: new Map(),
|
|
172
|
+
}));
|
|
173
|
+
if (id === '') {
|
|
174
|
+
if (container.def) {
|
|
175
|
+
return container.def;
|
|
176
|
+
}
|
|
177
|
+
const resolver = getResolver();
|
|
178
|
+
container.def = resolver;
|
|
179
|
+
return resolver;
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
return (0, exports.putIfAbsent)(container.map, id, () => getResolver());
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
getTypeResolver(id) {
|
|
186
|
+
return (0, exports.putIfAbsent)(this.typeResolvers, id, () => {
|
|
187
|
+
const mapping = this.getTypeMapping(id);
|
|
188
|
+
if (!mapping)
|
|
189
|
+
return undefined;
|
|
190
|
+
if (mapping.kind === undefined) {
|
|
191
|
+
throw new Error(`No TypeMapping for id ${String(id)}.`);
|
|
192
|
+
}
|
|
193
|
+
if (mapping.kind === 2) {
|
|
194
|
+
const instance = mapping.value;
|
|
195
|
+
return () => instance;
|
|
196
|
+
}
|
|
197
|
+
else if (mapping.kind === 0) {
|
|
198
|
+
return this.getCreateInstanceResolver(mapping.type);
|
|
199
|
+
}
|
|
200
|
+
else if (mapping.kind === 1) {
|
|
201
|
+
const instance = (0, exports.putIfAbsent)(mapping.injector.typeSingletons, id, () => mapping.injector.createInstance(mapping.type));
|
|
202
|
+
return () => instance;
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
const providerInstance = mapping.provider();
|
|
206
|
+
this._registerDisposer(providerInstance);
|
|
207
|
+
return () => providerInstance;
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
getCreateInstanceResolver(type) {
|
|
212
|
+
const resolvers = (0, exports.putIfAbsent)(this.parameterResolverArrays, type, () => this.createResolverArray({
|
|
213
|
+
kind: 'class',
|
|
214
|
+
type: type,
|
|
215
|
+
}));
|
|
216
|
+
if (resolvers.length === 0) {
|
|
217
|
+
return () => {
|
|
218
|
+
const instance = new type();
|
|
219
|
+
this._registerDisposer(instance);
|
|
220
|
+
return instance;
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
const args = new Array(resolvers.length);
|
|
224
|
+
return () => {
|
|
225
|
+
for (let i = 0; i < args.length; i++) {
|
|
226
|
+
args[i] = resolvers[i]();
|
|
227
|
+
}
|
|
228
|
+
const instance = new type(...args);
|
|
229
|
+
this._registerDisposer(instance);
|
|
230
|
+
return instance;
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
getTypeMapping(id) {
|
|
234
|
+
const mapping = this.typeMappings.get(id);
|
|
235
|
+
if (!mapping) {
|
|
236
|
+
if (!this.parent)
|
|
237
|
+
return undefined;
|
|
238
|
+
return this.parent.getTypeMapping(id);
|
|
239
|
+
}
|
|
240
|
+
return mapping;
|
|
241
|
+
}
|
|
242
|
+
_registerDisposer(instance) {
|
|
243
|
+
instance.onDispose && this.disposables.add(instance);
|
|
244
|
+
}
|
|
245
|
+
_dispose() {
|
|
246
|
+
if (this.disposed)
|
|
247
|
+
throw new Error('Injector already disposed');
|
|
248
|
+
for (const disposable of this.disposables) {
|
|
249
|
+
disposable.onDispose();
|
|
250
|
+
}
|
|
251
|
+
this.disposed = true;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
exports.Injector = Injector;
|
|
255
|
+
Injector.dependencyMap = new Map();
|
|
256
|
+
class InternalTypeMapper {
|
|
257
|
+
constructor(injector, id) {
|
|
258
|
+
this.injector = injector;
|
|
259
|
+
this.mapping = { kind: undefined };
|
|
260
|
+
this.getCall = { get: () => this.injector.getType(id) };
|
|
261
|
+
}
|
|
262
|
+
toClass(classValue) {
|
|
263
|
+
Object.assign(this.mapping, {
|
|
264
|
+
kind: 0,
|
|
265
|
+
type: classValue,
|
|
266
|
+
});
|
|
267
|
+
return this.getCall;
|
|
268
|
+
}
|
|
269
|
+
toSingleton(classValue) {
|
|
270
|
+
Object.assign(this.mapping, {
|
|
271
|
+
kind: 1,
|
|
272
|
+
type: classValue,
|
|
273
|
+
injector: this.injector,
|
|
274
|
+
});
|
|
275
|
+
return this.getCall;
|
|
276
|
+
}
|
|
277
|
+
toValue(value) {
|
|
278
|
+
Object.assign(this.mapping, {
|
|
279
|
+
kind: 2,
|
|
280
|
+
value: value,
|
|
281
|
+
});
|
|
282
|
+
this.injector._registerDisposer(value);
|
|
283
|
+
return value;
|
|
284
|
+
}
|
|
285
|
+
toProvider(provider) {
|
|
286
|
+
Object.assign(this.mapping, {
|
|
287
|
+
kind: 3,
|
|
288
|
+
provider: provider,
|
|
289
|
+
});
|
|
290
|
+
return this.getCall;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
class InternalClassMapper {
|
|
294
|
+
constructor(injector, type, id) {
|
|
295
|
+
this.injector = injector;
|
|
296
|
+
this.mapping = { kind: 0 };
|
|
297
|
+
this.getCall = { get: () => this.injector.get(type, id) };
|
|
298
|
+
this.get = () => this.injector.get(type, id);
|
|
299
|
+
}
|
|
300
|
+
toValue(value) {
|
|
301
|
+
Object.assign(this.mapping, {
|
|
302
|
+
kind: 1,
|
|
303
|
+
value: value,
|
|
304
|
+
});
|
|
305
|
+
this.injector._registerDisposer(value);
|
|
306
|
+
return value;
|
|
307
|
+
}
|
|
308
|
+
toSingleton() {
|
|
309
|
+
Object.assign(this.mapping, {
|
|
310
|
+
kind: 2,
|
|
311
|
+
injector: this.injector,
|
|
312
|
+
});
|
|
313
|
+
this.mapping.kind = 2;
|
|
314
|
+
return this.getCall;
|
|
315
|
+
}
|
|
316
|
+
toProvider(provider) {
|
|
317
|
+
Object.assign(this.mapping, {
|
|
318
|
+
kind: 3,
|
|
319
|
+
provider: provider,
|
|
320
|
+
});
|
|
321
|
+
return this.getCall;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
//# sourceMappingURL=injector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"injector.js","sourceRoot":"","sources":["../src/injector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { Class, EcsInjector, Signal, SignalCallback } from '../index';
|
|
2
|
+
import { ID } from '../injector';
|
|
3
|
+
export type ScopeSignalOptions = {
|
|
4
|
+
keepAlive?: boolean | Scope[];
|
|
5
|
+
group?: string;
|
|
6
|
+
};
|
|
7
|
+
export declare const scopeSignalHandlers: Map<Object, [string, ID, (ScopeSignalOptions | undefined)?][]>;
|
|
8
|
+
export declare const OnScopeSignal: (id: ID, options?: ScopeSignalOptions) => (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void;
|
|
9
|
+
export declare const SCOPE_CONTEXT: {
|
|
10
|
+
log: boolean;
|
|
11
|
+
};
|
|
12
|
+
export interface Scope {
|
|
13
|
+
[propName: string]: any;
|
|
14
|
+
onEnter?(): void;
|
|
15
|
+
onExit?(): void;
|
|
16
|
+
onSubReturn?(): void;
|
|
17
|
+
onSubExit?(): void;
|
|
18
|
+
onActivate?(): void;
|
|
19
|
+
onDeactivate?(): void;
|
|
20
|
+
}
|
|
21
|
+
export type ScopeMapping = (params: {
|
|
22
|
+
injector: EcsInjector;
|
|
23
|
+
registerScopeService: (serviceClass: Class) => void;
|
|
24
|
+
onEnter: Signal<ScopeContext>;
|
|
25
|
+
onExit: Signal<ScopeContext>;
|
|
26
|
+
onSubReturn: Signal<ScopeContext>;
|
|
27
|
+
onSubExit: Signal<ScopeContext>;
|
|
28
|
+
onActivate: Signal<ScopeContext>;
|
|
29
|
+
onDeactivate: Signal<ScopeContext>;
|
|
30
|
+
}) => any | Promise<void>;
|
|
31
|
+
interface AddScopeSignalOptions extends ScopeSignalOptions {
|
|
32
|
+
context?: unknown;
|
|
33
|
+
}
|
|
34
|
+
export type ScopeChangeParams = {
|
|
35
|
+
from: ScopeContext;
|
|
36
|
+
to: ScopeContext;
|
|
37
|
+
};
|
|
38
|
+
export declare class ScopeContext<T extends Class = Class<Scope>> {
|
|
39
|
+
private parent?;
|
|
40
|
+
readonly scope: InstanceType<T>;
|
|
41
|
+
readonly injector: EcsInjector;
|
|
42
|
+
private readonly stack;
|
|
43
|
+
private readonly signalBindings;
|
|
44
|
+
private serviceBindings;
|
|
45
|
+
private closed;
|
|
46
|
+
private muteKeepAliveSignals;
|
|
47
|
+
readonly onEnter: Signal<ScopeContext<Class<Scope>>>;
|
|
48
|
+
readonly onExit: Signal<ScopeContext<Class<Scope>>>;
|
|
49
|
+
readonly onSubReturn: Signal<ScopeContext<Class<Scope>>>;
|
|
50
|
+
readonly onSubExit: Signal<ScopeContext<Class<Scope>>>;
|
|
51
|
+
readonly onActivate: Signal<ScopeContext<Class<Scope>>>;
|
|
52
|
+
readonly onDeactivate: Signal<ScopeContext<Class<Scope>>>;
|
|
53
|
+
private readonly creationTime;
|
|
54
|
+
readonly onScopeChange: Signal<ScopeChangeParams>;
|
|
55
|
+
get runtime(): number;
|
|
56
|
+
constructor(injector: EcsInjector, scopeClass: T, mapping?: ScopeMapping, parent?: ScopeContext<Class<Scope>> | undefined, resolve?: () => void);
|
|
57
|
+
get isRoot(): boolean;
|
|
58
|
+
get target(): Scope | undefined;
|
|
59
|
+
get isActive(): boolean;
|
|
60
|
+
get activeContext(): ScopeContext<Class<Scope>>;
|
|
61
|
+
enterScope(scopeClass: Class, mapping?: ScopeMapping): Promise<ScopeContext<Class<Scope>> | undefined>;
|
|
62
|
+
exitScope(target?: Scope): Promise<void>;
|
|
63
|
+
closeSubScopes(): void;
|
|
64
|
+
private logStack;
|
|
65
|
+
getStackClasses(): Scope[];
|
|
66
|
+
addScopeSignal<T>(signal: Signal<T>, callback: SignalCallback<T>, params?: AddScopeSignalOptions): void;
|
|
67
|
+
disableKeepAliveSignals(): void;
|
|
68
|
+
enableKeepAliveSignals(): void;
|
|
69
|
+
private updateSignalBindings;
|
|
70
|
+
private detachSignalBindings;
|
|
71
|
+
private mapScopeSignals;
|
|
72
|
+
private mapServiceSignals;
|
|
73
|
+
private detachServiceBindings;
|
|
74
|
+
private exitThis;
|
|
75
|
+
}
|
|
76
|
+
export {};
|