@decohere/crucible 0.0.1-dev.68 → 0.0.1-dev.7
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/commonjs/src/decorators/inject.decorator.js +1 -1
- package/commonjs/src/services/crucible-builder.js +33 -34
- package/commonjs/src/services/crucible.js +9 -48
- package/commonjs/src/services/service-registry.js +3 -16
- package/commonjs/src/types/index.js +1 -2
- package/es6/src/decorators/inject.decorator.js +2 -6
- package/es6/src/services/crucible-builder.js +33 -34
- package/es6/src/services/crucible.js +9 -48
- package/es6/src/services/service-registry.js +3 -16
- package/es6/src/types/index.js +1 -2
- package/es6/src/types/types.js +1 -1
- package/package.json +3 -3
- package/types/src/const.d.ts +3 -3
- package/types/src/decorators/inject.decorator.d.ts +2 -8
- package/types/src/services/crucible-builder.d.ts +1 -5
- package/types/src/services/crucible.d.ts +2 -6
- package/types/src/services/service-registry.d.ts +0 -2
- package/types/src/types/index.d.ts +0 -1
- package/types/src/types/types.d.ts +1 -1
|
@@ -24,4 +24,4 @@ function getExistingMeta(target) {
|
|
|
24
24
|
return meta;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NydWNpYmxlL3NyYy9kZWNvcmF0b3JzL2luamVjdC5kZWNvcmF0b3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVmaW5lTWV0YSwgZ2V0TWV0YSB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvcmVmbGVjdGlvblwiO1xuaW1wb3J0IHsgQ3J1Y2libGVNZXRhIH0gZnJvbSBcIi4uL2NvbnN0LmpzXCI7XG5cbmV4cG9ydCB0eXBlIEluamVjdGlvbk1ldGFkYXRhID0gTWFwPG51bWJlciwgSW5qZWN0aW9uVG9rZW4+O1xuXG5leHBvcnQgdHlwZSBJbmplY3Rpb25Ub2tlbiA9IHtcblx0a2V5OiBzdHJpbmcgfCBzeW1ib2w7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0KGtleTogc3RyaW5nIHwgc3ltYm9sKSB7XG5cdHJldHVybiAodGFyZ2V0OiBvYmplY3QsIF9wcm9wZXJ0eUtleTogc3RyaW5nIHwgc3ltYm9sIHwgdW5kZWZpbmVkLCBpZHg6IG51bWJlcikgPT4ge1xuXHRcdGNvbnN0IG1ldGFkYXRhID0gZ2V0RXhpc3RpbmdNZXRhKHRhcmdldCk7XG5cdFx0bWV0YWRhdGEuc2V0KGlkeCwgeyBrZXkgfSk7XG5cdFx0ZGVmaW5lTWV0YShDcnVjaWJsZU1ldGEuaW5qZWN0dG9rZW4sIG1ldGFkYXRhLCB0YXJnZXQpO1xuXHR9O1xufVxuXG5mdW5jdGlvbiBnZXRFeGlzdGluZ01ldGEodGFyZ2V0OiBvYmplY3QpIHtcblx0Y29uc3QgbWV0YSA9XG5cdFx0Z2V0TWV0YTxNYXA8bnVtYmVyLCBJbmplY3Rpb25Ub2tlbj4+KENydWNpYmxlTWV0YS5pbmplY3R0b2tlbiwgdGFyZ2V0KSA/P1xuXHRcdG5ldyBNYXA8bnVtYmVyLCBJbmplY3Rpb25Ub2tlbj4oKTtcblx0cmV0dXJuIG1ldGE7XG59XG4iXSwibmFtZXMiOlsiaW5qZWN0Iiwia2V5IiwidGFyZ2V0IiwiX3Byb3BlcnR5S2V5IiwiaWR4IiwibWV0YWRhdGEiLCJnZXRFeGlzdGluZ01ldGEiLCJzZXQiLCJkZWZpbmVNZXRhIiwiQ3J1Y2libGVNZXRhIiwiaW5qZWN0dG9rZW4iLCJtZXRhIiwiZ2V0TWV0YSIsIk1hcCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFTZ0JBOzs7ZUFBQUE7Ozs0QkFUb0I7dUJBQ1A7QUFRdEIsU0FBU0EsT0FBT0MsR0FBb0I7SUFDMUMsT0FBTyxDQUFDQyxRQUFnQkMsY0FBMkNDO1FBQ2xFLE1BQU1DLFdBQVdDLGdCQUFnQko7UUFDakNHLFNBQVNFLEdBQUcsQ0FBQ0gsS0FBSztZQUFFSDtRQUFJO1FBQ3hCTyxJQUFBQSxzQkFBVSxFQUFDQyxtQkFBWSxDQUFDQyxXQUFXLEVBQUVMLFVBQVVIO0lBQ2hEO0FBQ0Q7QUFFQSxTQUFTSSxnQkFBZ0JKLE1BQWM7SUFDdEMsTUFBTVMsT0FDTEMsSUFBQUEsbUJBQU8sRUFBOEJILG1CQUFZLENBQUNDLFdBQVcsRUFBRVIsV0FDL0QsSUFBSVc7SUFDTCxPQUFPRjtBQUNSIn0=
|
|
@@ -16,54 +16,53 @@ class CrucibleBuilder {
|
|
|
16
16
|
constructor(options){
|
|
17
17
|
this.serviceRegistry = options?.serviceRegistry ?? new _serviceregistry.ServiceRegistry();
|
|
18
18
|
}
|
|
19
|
-
get override() {
|
|
20
|
-
return this.createRegistrar(true);
|
|
21
|
-
}
|
|
22
19
|
registerType(type, scope = _const.Scopes.transient) {
|
|
23
|
-
|
|
20
|
+
const registration = this.serviceRegistry.registerType(scope, {
|
|
21
|
+
typeOrKey: type.name,
|
|
22
|
+
typeOrInstance: type
|
|
23
|
+
});
|
|
24
|
+
return registration;
|
|
24
25
|
}
|
|
25
26
|
registerTypes(scopeOrType, ...types) {
|
|
26
|
-
|
|
27
|
+
const registrations = Array.of();
|
|
28
|
+
const isScope = typeof scopeOrType !== "function";
|
|
29
|
+
const scope = isScope ? scopeOrType : _const.Scopes.transient;
|
|
30
|
+
const allTypes = isScope ? types : [
|
|
31
|
+
scopeOrType,
|
|
32
|
+
...types
|
|
33
|
+
];
|
|
34
|
+
for (const type of allTypes){
|
|
35
|
+
const registration = this.registerType(type, scope);
|
|
36
|
+
registrations.push(registration);
|
|
37
|
+
}
|
|
38
|
+
return registrations;
|
|
27
39
|
}
|
|
28
40
|
registerTransient(typeOrKey, type) {
|
|
29
|
-
|
|
41
|
+
const registration = this.serviceRegistry.registerType(_const.Scopes.transient, {
|
|
42
|
+
typeOrKey,
|
|
43
|
+
typeOrInstance: type
|
|
44
|
+
});
|
|
45
|
+
return registration;
|
|
30
46
|
}
|
|
31
47
|
registerSingleton(typeOrKey, typeOrInstance) {
|
|
32
|
-
|
|
48
|
+
const registration = this.serviceRegistry.registerType(_const.Scopes.singleton, {
|
|
49
|
+
typeOrKey,
|
|
50
|
+
typeOrInstance
|
|
51
|
+
});
|
|
52
|
+
return registration;
|
|
33
53
|
}
|
|
34
54
|
registerRequestScoped(typeOrKey, type) {
|
|
35
|
-
|
|
55
|
+
const registration = this.serviceRegistry.registerType(_const.Scopes.request, {
|
|
56
|
+
typeOrKey,
|
|
57
|
+
typeOrInstance: type
|
|
58
|
+
});
|
|
59
|
+
return registration;
|
|
36
60
|
}
|
|
37
61
|
build() {
|
|
38
62
|
return new _crucible.Crucible({
|
|
39
63
|
serviceRegistry: this.serviceRegistry
|
|
40
64
|
});
|
|
41
65
|
}
|
|
42
|
-
register = (override)=>(scope)=>(typeOrKey, typeOrInstance)=>this.serviceRegistry.registerType(scope, {
|
|
43
|
-
typeOrKey,
|
|
44
|
-
typeOrInstance,
|
|
45
|
-
override
|
|
46
|
-
});
|
|
47
|
-
registerMany(override, scopeOrType, types) {
|
|
48
|
-
const bind = this.register(override);
|
|
49
|
-
const isScope = typeof scopeOrType !== "function";
|
|
50
|
-
const scope = isScope ? scopeOrType : _const.Scopes.transient;
|
|
51
|
-
const allTypes = isScope ? types : [
|
|
52
|
-
scopeOrType,
|
|
53
|
-
...types
|
|
54
|
-
];
|
|
55
|
-
return allTypes.map((type)=>bind(scope)(type.name, type));
|
|
56
|
-
}
|
|
57
|
-
createRegistrar(override) {
|
|
58
|
-
const bind = this.register(override);
|
|
59
|
-
return {
|
|
60
|
-
registerType: (type, scope = _const.Scopes.transient)=>bind(scope)(type.name, type),
|
|
61
|
-
registerTypes: (scopeOrType, ...types)=>this.registerMany(override, scopeOrType, types),
|
|
62
|
-
registerTransient: (typeOrKey, type)=>bind(_const.Scopes.transient)(typeOrKey, type),
|
|
63
|
-
registerSingleton: (typeOrKey, typeOrInstance)=>bind(_const.Scopes.singleton)(typeOrKey, typeOrInstance),
|
|
64
|
-
registerRequestScoped: (typeOrKey, type)=>bind(_const.Scopes.request)(typeOrKey, type)
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
66
|
}
|
|
68
67
|
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NydWNpYmxlL3NyYy9zZXJ2aWNlcy9jcnVjaWJsZS1idWlsZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29uc3RydWN0YWJsZSwgRnVuY3Rpb25UeXBlIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9yZWZsZWN0aW9uXCI7XG5pbXBvcnQgeyBTY29wZXMgfSBmcm9tIFwiLi4vY29uc3QuanNcIjtcbmltcG9ydCB0eXBlIHsgU2VydmljZVJlZ2lzdHJhdGlvbiB9IGZyb20gXCIuLi9tb2RlbHMvc2VydmljZS1yZWdpc3RyYXRpb24ubW9kZWwuanNcIjtcbmltcG9ydCB0eXBlIHsgQ29udGFpbmVyQnVpbGRlciwgU2NvcGUgfSBmcm9tIFwiLi4vdHlwZXMvdHlwZXMuanNcIjtcbmltcG9ydCB7IENydWNpYmxlIH0gZnJvbSBcIi4vY3J1Y2libGUuanNcIjtcbmltcG9ydCB7IFNlcnZpY2VSZWdpc3RyeSB9IGZyb20gXCIuL3NlcnZpY2UtcmVnaXN0cnkuanNcIjtcblxudHlwZSBDb250YWluZXJCdWlsZGVyT3B0aW9ucyA9IHtcblx0c2VydmljZVJlZ2lzdHJ5OiBTZXJ2aWNlUmVnaXN0cnk7XG59O1xuXG5leHBvcnQgY2xhc3MgQ3J1Y2libGVCdWlsZGVyIGltcGxlbWVudHMgQ29udGFpbmVyQnVpbGRlciB7XG5cdHByaXZhdGUgc2VydmljZVJlZ2lzdHJ5OiBTZXJ2aWNlUmVnaXN0cnk7XG5cdHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zPzogQ29udGFpbmVyQnVpbGRlck9wdGlvbnMpIHtcblx0XHR0aGlzLnNlcnZpY2VSZWdpc3RyeSA9IG9wdGlvbnM/LnNlcnZpY2VSZWdpc3RyeSA/PyBuZXcgU2VydmljZVJlZ2lzdHJ5KCk7XG5cdH1cblxuXHRwdWJsaWMgcmVnaXN0ZXJUeXBlKHR5cGU6IENvbnN0cnVjdGFibGUsIHNjb3BlOiBTY29wZSA9IFNjb3Blcy50cmFuc2llbnQpIHtcblx0XHRjb25zdCByZWdpc3RyYXRpb24gPSB0aGlzLnNlcnZpY2VSZWdpc3RyeS5yZWdpc3RlclR5cGUoc2NvcGUsIHtcblx0XHRcdHR5cGVPcktleTogdHlwZS5uYW1lLFxuXHRcdFx0dHlwZU9ySW5zdGFuY2U6IHR5cGUsXG5cdFx0fSk7XG5cdFx0cmV0dXJuIHJlZ2lzdHJhdGlvbjtcblx0fVxuXG5cdHB1YmxpYyByZWdpc3RlclR5cGVzKC4uLnR5cGVzOiBDb25zdHJ1Y3RhYmxlW10pOiBTZXJ2aWNlUmVnaXN0cmF0aW9uW107XG5cdHB1YmxpYyByZWdpc3RlclR5cGVzKHNjb3BlOiBTY29wZSwgLi4udHlwZXM6IENvbnN0cnVjdGFibGVbXSk6IFNlcnZpY2VSZWdpc3RyYXRpb25bXTtcblx0cHVibGljIHJlZ2lzdGVyVHlwZXMoXG5cdFx0c2NvcGVPclR5cGU6IFNjb3BlIHwgQ29uc3RydWN0YWJsZSxcblx0XHQuLi50eXBlczogQ29uc3RydWN0YWJsZVtdXG5cdCk6IFNlcnZpY2VSZWdpc3RyYXRpb25bXSB7XG5cdFx0Y29uc3QgcmVnaXN0cmF0aW9ucyA9IEFycmF5Lm9mPFNlcnZpY2VSZWdpc3RyYXRpb24+KCk7XG5cblx0XHRjb25zdCBpc1Njb3BlID0gdHlwZW9mIHNjb3BlT3JUeXBlICE9PSBcImZ1bmN0aW9uXCI7XG5cdFx0Y29uc3Qgc2NvcGUgPSBpc1Njb3BlID8gc2NvcGVPclR5cGUgOiBTY29wZXMudHJhbnNpZW50O1xuXHRcdGNvbnN0IGFsbFR5cGVzID0gaXNTY29wZSA/IHR5cGVzIDogW3Njb3BlT3JUeXBlLCAuLi50eXBlc107XG5cdFx0Zm9yIChjb25zdCB0eXBlIG9mIGFsbFR5cGVzKSB7XG5cdFx0XHRjb25zdCByZWdpc3RyYXRpb24gPSB0aGlzLnJlZ2lzdGVyVHlwZSh0eXBlLCBzY29wZSk7XG5cdFx0XHRyZWdpc3RyYXRpb25zLnB1c2gocmVnaXN0cmF0aW9uKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmVnaXN0cmF0aW9ucztcblx0fVxuXG5cdHB1YmxpYyByZWdpc3RlclRyYW5zaWVudChcblx0XHRrZXk6IHN0cmluZyB8IHN5bWJvbCxcblx0XHR0eXBlOiBDb25zdHJ1Y3RhYmxlIHwgRnVuY3Rpb25UeXBlLFxuXHQpOiBTZXJ2aWNlUmVnaXN0cmF0aW9uO1xuXHRwdWJsaWMgcmVnaXN0ZXJUcmFuc2llbnQodHlwZTogQ29uc3RydWN0YWJsZSk6IFNlcnZpY2VSZWdpc3RyYXRpb247XG5cdHB1YmxpYyByZWdpc3RlclRyYW5zaWVudCh0eXBlT3JLZXk6IHN0cmluZyB8IHN5bWJvbCB8IENvbnN0cnVjdGFibGUsIHR5cGU/OiBDb25zdHJ1Y3RhYmxlKSB7XG5cdFx0Y29uc3QgcmVnaXN0cmF0aW9uID0gdGhpcy5zZXJ2aWNlUmVnaXN0cnkucmVnaXN0ZXJUeXBlKFNjb3Blcy50cmFuc2llbnQsIHtcblx0XHRcdHR5cGVPcktleSxcblx0XHRcdHR5cGVPckluc3RhbmNlOiB0eXBlLFxuXHRcdH0pO1xuXHRcdHJldHVybiByZWdpc3RyYXRpb247XG5cdH1cblxuXHRwdWJsaWMgcmVnaXN0ZXJTaW5nbGV0b24oXG5cdFx0a2V5OiBzdHJpbmcgfCBzeW1ib2wgfCBDb25zdHJ1Y3RhYmxlIHwgb2JqZWN0LFxuXHRcdGluc3RhbmNlOiBvYmplY3QsXG5cdCk6IFNlcnZpY2VSZWdpc3RyYXRpb247XG5cdHB1YmxpYyByZWdpc3RlclNpbmdsZXRvbihrZXk6IHN0cmluZyB8IHN5bWJvbCwgdHlwZTogQ29uc3RydWN0YWJsZSk6IFNlcnZpY2VSZWdpc3RyYXRpb247XG5cdHB1YmxpYyByZWdpc3RlclNpbmdsZXRvbih0eXBlOiBDb25zdHJ1Y3RhYmxlKTogU2VydmljZVJlZ2lzdHJhdGlvbjtcblx0cHVibGljIHJlZ2lzdGVyU2luZ2xldG9uKFxuXHRcdHR5cGVPcktleTogc3RyaW5nIHwgc3ltYm9sIHwgQ29uc3RydWN0YWJsZSxcblx0XHR0eXBlT3JJbnN0YW5jZT86IENvbnN0cnVjdGFibGUgfCBvYmplY3QsXG5cdCkge1xuXHRcdGNvbnN0IHJlZ2lzdHJhdGlvbiA9IHRoaXMuc2VydmljZVJlZ2lzdHJ5LnJlZ2lzdGVyVHlwZShTY29wZXMuc2luZ2xldG9uLCB7XG5cdFx0XHR0eXBlT3JLZXksXG5cdFx0XHR0eXBlT3JJbnN0YW5jZSxcblx0XHR9KTtcblx0XHRyZXR1cm4gcmVnaXN0cmF0aW9uO1xuXHR9XG5cblx0cHVibGljIHJlZ2lzdGVyUmVxdWVzdFNjb3BlZDxUPih0eXBlOiAoKSA9PiBUKTogU2VydmljZVJlZ2lzdHJhdGlvbjtcblx0cHVibGljIHJlZ2lzdGVyUmVxdWVzdFNjb3BlZDxUPihrZXk6IHN0cmluZyB8IHN5bWJvbCwgdHlwZTogKCkgPT4gVCk6IFNlcnZpY2VSZWdpc3RyYXRpb247XG5cdHB1YmxpYyByZWdpc3RlclJlcXVlc3RTY29wZWQoa2V5OiBzdHJpbmcgfCBzeW1ib2wsIHR5cGU6IENvbnN0cnVjdGFibGUpOiBTZXJ2aWNlUmVnaXN0cmF0aW9uO1xuXHRwdWJsaWMgcmVnaXN0ZXJSZXF1ZXN0U2NvcGVkKHR5cGU6IENvbnN0cnVjdGFibGUpOiBTZXJ2aWNlUmVnaXN0cmF0aW9uO1xuXHRwdWJsaWMgcmVnaXN0ZXJSZXF1ZXN0U2NvcGVkKFxuXHRcdHR5cGVPcktleTogc3RyaW5nIHwgc3ltYm9sIHwgQ29uc3RydWN0YWJsZSB8IEZ1bmN0aW9uVHlwZSxcblx0XHR0eXBlPzogQ29uc3RydWN0YWJsZSB8IEZ1bmN0aW9uVHlwZSxcblx0KSB7XG5cdFx0Y29uc3QgcmVnaXN0cmF0aW9uID0gdGhpcy5zZXJ2aWNlUmVnaXN0cnkucmVnaXN0ZXJUeXBlKFNjb3Blcy5yZXF1ZXN0LCB7XG5cdFx0XHR0eXBlT3JLZXksXG5cdFx0XHR0eXBlT3JJbnN0YW5jZTogdHlwZSxcblx0XHR9KTtcblx0XHRyZXR1cm4gcmVnaXN0cmF0aW9uO1xuXHR9XG5cblx0cHVibGljIGJ1aWxkKCk6IENydWNpYmxlIHtcblx0XHRyZXR1cm4gbmV3IENydWNpYmxlKHsgc2VydmljZVJlZ2lzdHJ5OiB0aGlzLnNlcnZpY2VSZWdpc3RyeSB9KTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIkNydWNpYmxlQnVpbGRlciIsInNlcnZpY2VSZWdpc3RyeSIsIm9wdGlvbnMiLCJTZXJ2aWNlUmVnaXN0cnkiLCJyZWdpc3RlclR5cGUiLCJ0eXBlIiwic2NvcGUiLCJTY29wZXMiLCJ0cmFuc2llbnQiLCJyZWdpc3RyYXRpb24iLCJ0eXBlT3JLZXkiLCJuYW1lIiwidHlwZU9ySW5zdGFuY2UiLCJyZWdpc3RlclR5cGVzIiwic2NvcGVPclR5cGUiLCJ0eXBlcyIsInJlZ2lzdHJhdGlvbnMiLCJBcnJheSIsIm9mIiwiaXNTY29wZSIsImFsbFR5cGVzIiwicHVzaCIsInJlZ2lzdGVyVHJhbnNpZW50IiwicmVnaXN0ZXJTaW5nbGV0b24iLCJzaW5nbGV0b24iLCJyZWdpc3RlclJlcXVlc3RTY29wZWQiLCJyZXF1ZXN0IiwiYnVpbGQiLCJDcnVjaWJsZSJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFXYUE7OztlQUFBQTs7O3VCQVZVOzBCQUdFO2lDQUNPO0FBTXpCLE1BQU1BO0lBQ0pDLGdCQUFpQztJQUN6QyxZQUFtQkMsT0FBaUMsQ0FBRTtRQUNyRCxJQUFJLENBQUNELGVBQWUsR0FBR0MsU0FBU0QsbUJBQW1CLElBQUlFLGdDQUFlO0lBQ3ZFO0lBRU9DLGFBQWFDLElBQW1CLEVBQUVDLFFBQWVDLGFBQU0sQ0FBQ0MsU0FBUyxFQUFFO1FBQ3pFLE1BQU1DLGVBQWUsSUFBSSxDQUFDUixlQUFlLENBQUNHLFlBQVksQ0FBQ0UsT0FBTztZQUM3REksV0FBV0wsS0FBS00sSUFBSTtZQUNwQkMsZ0JBQWdCUDtRQUNqQjtRQUNBLE9BQU9JO0lBQ1I7SUFJT0ksY0FDTkMsV0FBa0MsRUFDbEMsR0FBR0MsS0FBc0IsRUFDRDtRQUN4QixNQUFNQyxnQkFBZ0JDLE1BQU1DLEVBQUU7UUFFOUIsTUFBTUMsVUFBVSxPQUFPTCxnQkFBZ0I7UUFDdkMsTUFBTVIsUUFBUWEsVUFBVUwsY0FBY1AsYUFBTSxDQUFDQyxTQUFTO1FBQ3RELE1BQU1ZLFdBQVdELFVBQVVKLFFBQVE7WUFBQ0Q7ZUFBZ0JDO1NBQU07UUFDMUQsS0FBSyxNQUFNVixRQUFRZSxTQUFVO1lBQzVCLE1BQU1YLGVBQWUsSUFBSSxDQUFDTCxZQUFZLENBQUNDLE1BQU1DO1lBQzdDVSxjQUFjSyxJQUFJLENBQUNaO1FBQ3BCO1FBRUEsT0FBT087SUFDUjtJQU9PTSxrQkFBa0JaLFNBQTBDLEVBQUVMLElBQW9CLEVBQUU7UUFDMUYsTUFBTUksZUFBZSxJQUFJLENBQUNSLGVBQWUsQ0FBQ0csWUFBWSxDQUFDRyxhQUFNLENBQUNDLFNBQVMsRUFBRTtZQUN4RUU7WUFDQUUsZ0JBQWdCUDtRQUNqQjtRQUNBLE9BQU9JO0lBQ1I7SUFRT2Msa0JBQ05iLFNBQTBDLEVBQzFDRSxjQUF1QyxFQUN0QztRQUNELE1BQU1ILGVBQWUsSUFBSSxDQUFDUixlQUFlLENBQUNHLFlBQVksQ0FBQ0csYUFBTSxDQUFDaUIsU0FBUyxFQUFFO1lBQ3hFZDtZQUNBRTtRQUNEO1FBQ0EsT0FBT0g7SUFDUjtJQU1PZ0Isc0JBQ05mLFNBQXlELEVBQ3pETCxJQUFtQyxFQUNsQztRQUNELE1BQU1JLGVBQWUsSUFBSSxDQUFDUixlQUFlLENBQUNHLFlBQVksQ0FBQ0csYUFBTSxDQUFDbUIsT0FBTyxFQUFFO1lBQ3RFaEI7WUFDQUUsZ0JBQWdCUDtRQUNqQjtRQUNBLE9BQU9JO0lBQ1I7SUFFT2tCLFFBQWtCO1FBQ3hCLE9BQU8sSUFBSUMsa0JBQVEsQ0FBQztZQUFFM0IsaUJBQWlCLElBQUksQ0FBQ0EsZUFBZTtRQUFDO0lBQzdEO0FBQ0QifQ==
|
|
@@ -18,7 +18,6 @@ class Crucible {
|
|
|
18
18
|
key;
|
|
19
19
|
instances = new Map();
|
|
20
20
|
serviceRegistry;
|
|
21
|
-
parent;
|
|
22
21
|
rootScope;
|
|
23
22
|
scopes = new Map();
|
|
24
23
|
logger = _scribe.scribe.logger(Crucible.name);
|
|
@@ -27,8 +26,7 @@ class Crucible {
|
|
|
27
26
|
this.key = options?.key;
|
|
28
27
|
this.serviceRegistry = new _serviceregistry.ServiceRegistry(options?.serviceRegistry);
|
|
29
28
|
this.registerLifetimeScope();
|
|
30
|
-
this.
|
|
31
|
-
this.rootScope = options?.parent?.rootScope ?? this;
|
|
29
|
+
this.rootScope = options?.rootScope ?? this;
|
|
32
30
|
}
|
|
33
31
|
resolveMany(resolveRequest) {
|
|
34
32
|
const key = new _registrationkeymodel.RegistrationKey(resolveRequest);
|
|
@@ -54,41 +52,28 @@ class Crucible {
|
|
|
54
52
|
return service;
|
|
55
53
|
}
|
|
56
54
|
beginScope(name) {
|
|
57
|
-
if (this.
|
|
58
|
-
throw new Error("This container has been disposed");
|
|
59
|
-
}
|
|
60
|
-
if (name != null && this.scopes.has(name)) {
|
|
55
|
+
if (this.scopes.has(name)) {
|
|
61
56
|
throw new _errors.DuplicateScopeError(`Cannot create duplicate scope. Scope with ${name} is already created and has not been disposed.`);
|
|
62
57
|
}
|
|
63
58
|
const scope = new Crucible({
|
|
64
59
|
key: name,
|
|
65
60
|
serviceRegistry: this.serviceRegistry,
|
|
66
|
-
|
|
61
|
+
rootScope: this
|
|
67
62
|
});
|
|
68
|
-
|
|
69
|
-
this.scopes.set(name, scope);
|
|
70
|
-
}
|
|
63
|
+
this.scopes.set(name, scope);
|
|
71
64
|
return scope;
|
|
72
65
|
}
|
|
73
66
|
[Symbol.dispose]() {
|
|
74
67
|
if (this.isDisposed) {
|
|
75
68
|
return;
|
|
76
69
|
}
|
|
77
|
-
this.
|
|
70
|
+
this.dispose();
|
|
78
71
|
}
|
|
79
|
-
|
|
80
|
-
if (this.isDisposed) {
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
await this.disposeAsync();
|
|
84
|
-
}
|
|
85
|
-
disposeSync() {
|
|
72
|
+
dispose() {
|
|
86
73
|
if (this.isDisposed) {
|
|
87
74
|
return;
|
|
88
75
|
}
|
|
89
76
|
this.isDisposed = true;
|
|
90
|
-
this.parent?.releaseScope(this.key);
|
|
91
|
-
this.scopes.clear();
|
|
92
77
|
for (const [, inst] of this.instances){
|
|
93
78
|
if (inst === this) {
|
|
94
79
|
continue;
|
|
@@ -96,24 +81,6 @@ class Crucible {
|
|
|
96
81
|
inst[Symbol.dispose]?.();
|
|
97
82
|
}
|
|
98
83
|
}
|
|
99
|
-
async disposeAsync() {
|
|
100
|
-
if (this.isDisposed) {
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
this.isDisposed = true;
|
|
104
|
-
this.parent?.releaseScope(this.key);
|
|
105
|
-
this.scopes.clear();
|
|
106
|
-
for (const [, inst] of this.instances){
|
|
107
|
-
if (inst === this) {
|
|
108
|
-
continue;
|
|
109
|
-
}
|
|
110
|
-
if (Symbol.asyncDispose in inst) {
|
|
111
|
-
await inst[Symbol.asyncDispose]();
|
|
112
|
-
} else {
|
|
113
|
-
inst[Symbol.dispose]?.();
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
84
|
getRegistrationFrom(key) {
|
|
118
85
|
const registration = this.serviceRegistry.getRegistration(key.value);
|
|
119
86
|
return registration;
|
|
@@ -131,7 +98,7 @@ class Crucible {
|
|
|
131
98
|
}
|
|
132
99
|
getOrCreateInstance(registration) {
|
|
133
100
|
if (this.isDisposed) {
|
|
134
|
-
throw new Error("This
|
|
101
|
+
throw new Error("This continer has been disposed");
|
|
135
102
|
}
|
|
136
103
|
const { key, type, isInstance } = registration;
|
|
137
104
|
const cacheKey = isInstance ? key.value : type;
|
|
@@ -165,18 +132,12 @@ class Crucible {
|
|
|
165
132
|
}
|
|
166
133
|
return resolved;
|
|
167
134
|
}
|
|
168
|
-
releaseScope(name) {
|
|
169
|
-
if (name == null) {
|
|
170
|
-
return;
|
|
171
|
-
}
|
|
172
|
-
this.scopes.delete(name);
|
|
173
|
-
}
|
|
174
135
|
registerLifetimeScope() {
|
|
175
|
-
this.serviceRegistry.
|
|
136
|
+
this.serviceRegistry.registerType(_const.Scopes.request, {
|
|
176
137
|
typeOrKey: _const.LifetimeScopeToken,
|
|
177
138
|
typeOrInstance: this
|
|
178
139
|
});
|
|
179
140
|
}
|
|
180
141
|
}
|
|
181
142
|
|
|
182
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NydWNpYmxlL3NyYy9zZXJ2aWNlcy9jcnVjaWJsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHR0eXBlIENvbnN0cnVjdGFibGUsXG5cdHR5cGUgRnVuY3Rpb25UeXBlLFxuXHRnZXRNZXRhLFxuXHRpc0FycmF5VHlwZSxcblx0aXNDb25zdHJ1Y3RhYmxlLFxuXHRSZWZsZWN0aW9uTWV0YSxcbn0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9yZWZsZWN0aW9uXCI7XG5pbXBvcnQgeyBzY3JpYmUgfSBmcm9tIFwiQGRlY29oZXJlL3NjcmliZVwiO1xuaW1wb3J0IHsgQ3J1Y2libGVNZXRhLCBMaWZldGltZVNjb3BlVG9rZW4sIFNjb3BlcyB9IGZyb20gXCIuLi9jb25zdC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBJbmplY3Rpb25NZXRhZGF0YSB9IGZyb20gXCIuLi9kZWNvcmF0b3JzL2luamVjdC5kZWNvcmF0b3IuanNcIjtcbmltcG9ydCB7IFJlZ2lzdHJhdGlvbktleSB9IGZyb20gXCIuLi9tb2RlbHMvcmVnaXN0cmF0aW9uLWtleS5tb2RlbC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTZXJ2aWNlUmVnaXN0cmF0aW9uIH0gZnJvbSBcIi4uL21vZGVscy9zZXJ2aWNlLXJlZ2lzdHJhdGlvbi5tb2RlbC5qc1wiO1xuaW1wb3J0IHsgRHVwbGljYXRlU2NvcGVFcnJvciwgUmVzb2x2ZUVycm9yIH0gZnJvbSBcIi4uL3R5cGVzL2Vycm9ycy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBJQ29udGFpbmVyLCBMaWZldGltZVNjb3BlLCBSZXNvbHZlUmVxdWVzdCB9IGZyb20gXCIuLi90eXBlcy90eXBlcy5qc1wiO1xuaW1wb3J0IHsgU2VydmljZVJlZ2lzdHJ5IH0gZnJvbSBcIi4vc2VydmljZS1yZWdpc3RyeS5qc1wiO1xuXG50eXBlIENydWNpYmxlT3B0aW9ucyA9IHtcblx0a2V5Pzogc3RyaW5nO1xuXHRwYXJlbnQ/OiBDcnVjaWJsZTtcblx0c2VydmljZVJlZ2lzdHJ5OiBTZXJ2aWNlUmVnaXN0cnk7XG59O1xuXG5leHBvcnQgY2xhc3MgQ3J1Y2libGUgaW1wbGVtZW50cyBJQ29udGFpbmVyIHtcblx0cHVibGljIGtleTogc3RyaW5nO1xuXHRwcm90ZWN0ZWQgaW5zdGFuY2VzID0gbmV3IE1hcDx1bmtub3duLCBvYmplY3Q+KCk7XG5cdHByaXZhdGUgc2VydmljZVJlZ2lzdHJ5OiBTZXJ2aWNlUmVnaXN0cnk7XG5cdHByaXZhdGUgcGFyZW50PzogQ3J1Y2libGU7XG5cdHByaXZhdGUgcm9vdFNjb3BlOiBDcnVjaWJsZTtcblx0cHJpdmF0ZSBzY29wZXMgPSBuZXcgTWFwPHN0cmluZywgTGlmZXRpbWVTY29wZT4oKTtcblx0cHJpdmF0ZSBsb2dnZXIgPSBzY3JpYmUubG9nZ2VyKENydWNpYmxlLm5hbWUpO1xuXHRwcml2YXRlIGlzRGlzcG9zZWQgPSBmYWxzZTtcblx0cHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBDcnVjaWJsZU9wdGlvbnMpIHtcblx0XHR0aGlzLmtleSA9IG9wdGlvbnM/LmtleTtcblx0XHR0aGlzLnNlcnZpY2VSZWdpc3RyeSA9IG5ldyBTZXJ2aWNlUmVnaXN0cnkob3B0aW9ucz8uc2VydmljZVJlZ2lzdHJ5KTtcblx0XHR0aGlzLnJlZ2lzdGVyTGlmZXRpbWVTY29wZSgpO1xuXHRcdHRoaXMucGFyZW50ID0gb3B0aW9ucz8ucGFyZW50O1xuXHRcdHRoaXMucm9vdFNjb3BlID0gb3B0aW9ucz8ucGFyZW50Py5yb290U2NvcGUgPz8gdGhpcztcblx0fVxuXG5cdHB1YmxpYyByZXNvbHZlTWFueTxUIGV4dGVuZHMgb2JqZWN0ID0gb2JqZWN0PihyZXNvbHZlUmVxdWVzdDogUmVzb2x2ZVJlcXVlc3Q8VD4pOiBUW10ge1xuXHRcdGNvbnN0IGtleSA9IG5ldyBSZWdpc3RyYXRpb25LZXkocmVzb2x2ZVJlcXVlc3QpO1xuXHRcdGNvbnN0IHJlZ2lzdHJhdGlvbnMgPSB0aGlzLmdldFJlZ2lzdHJhdGlvbkZyb20oa2V5KSA/PyBbXTtcblxuXHRcdGNvbnN0IHNlcnZpY2VzID0gQXJyYXkub2Y8VD4oKTtcblx0XHRmb3IgKGNvbnN0IHJlZ2lzdHJhdGlvbiBvZiByZWdpc3RyYXRpb25zKSB7XG5cdFx0XHRjb25zdCBzZXJ2aWNlID0gdGhpcy5yZXNvbHZlUmVnaXN0cmF0aW9uPFQ+KHJlZ2lzdHJhdGlvbik7XG5cdFx0XHRzZXJ2aWNlcy5wdXNoKHNlcnZpY2UpO1xuXHRcdH1cblx0XHRyZXR1cm4gc2VydmljZXM7XG5cdH1cblxuXHRwdWJsaWMgcmVzb2x2ZTxUIGV4dGVuZHMgb2JqZWN0IHwgb2JqZWN0W10+KHJlc29sdmVSZXF1ZXN0OiBSZXNvbHZlUmVxdWVzdDxUPik6IFQge1xuXHRcdGNvbnN0IGtleSA9IG5ldyBSZWdpc3RyYXRpb25LZXkocmVzb2x2ZVJlcXVlc3QpO1xuXHRcdGNvbnN0IHJlZ2lzdHJhdGlvbiA9IHRoaXMuZ2V0UmVnaXN0cmF0aW9uRnJvbShrZXkpO1xuXHRcdGlmIChyZWdpc3RyYXRpb24gPT0gbnVsbCkge1xuXHRcdFx0dGhpcy5sb2dnZXIud2FybihgQ2Fubm90IHJlc29sdmUgZGVwZW5kZW5jeSAke2tleS50b1N0cmluZygpfWApO1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXG5cdFx0aWYgKHJlZ2lzdHJhdGlvbi5sZW5ndGggPiAxKSB7XG5cdFx0XHR0aHJvdyBuZXcgUmVzb2x2ZUVycm9yKFxuXHRcdFx0XHRgVGhlcmUgYXJlIG11bHRpcGxlIHNlcnZpY2VzIHJlZ2lzdGVyZWQgd2l0aCBrZXkgJHtrZXkudG9TdHJpbmcoKX0uIFVzZSByZXNvbHZlTWFueSB0byByZXNvbHZlIGFsbCBpbXBsZW1lbnRhdGlvbnMuYCxcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgc2VydmljZSA9IHRoaXMucmVzb2x2ZVJlZ2lzdHJhdGlvbjxUPihyZWdpc3RyYXRpb25bMF0pO1xuXHRcdHJldHVybiBzZXJ2aWNlO1xuXHR9XG5cblx0cHVibGljIGJlZ2luU2NvcGUobmFtZT86IHN0cmluZykge1xuXHRcdGlmICh0aGlzLmlzRGlzcG9zZWQpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIlRoaXMgY29udGFpbmVyIGhhcyBiZWVuIGRpc3Bvc2VkXCIpO1xuXHRcdH1cblx0XHRpZiAobmFtZSAhPSBudWxsICYmIHRoaXMuc2NvcGVzLmhhcyhuYW1lKSkge1xuXHRcdFx0dGhyb3cgbmV3IER1cGxpY2F0ZVNjb3BlRXJyb3IoXG5cdFx0XHRcdGBDYW5ub3QgY3JlYXRlIGR1cGxpY2F0ZSBzY29wZS4gU2NvcGUgd2l0aCAke25hbWV9IGlzIGFscmVhZHkgY3JlYXRlZCBhbmQgaGFzIG5vdCBiZWVuIGRpc3Bvc2VkLmAsXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdGNvbnN0IHNjb3BlID0gbmV3IENydWNpYmxlKHtcblx0XHRcdGtleTogbmFtZSxcblx0XHRcdHNlcnZpY2VSZWdpc3RyeTogdGhpcy5zZXJ2aWNlUmVnaXN0cnksXG5cdFx0XHRwYXJlbnQ6IHRoaXMsXG5cdFx0fSk7XG5cblx0XHRpZiAobmFtZSAhPSBudWxsKSB7XG5cdFx0XHR0aGlzLnNjb3Blcy5zZXQobmFtZSwgc2NvcGUpO1xuXHRcdH1cblx0XHRyZXR1cm4gc2NvcGU7XG5cdH1cblxuXHRwdWJsaWMgW1N5bWJvbC5kaXNwb3NlXSgpIHtcblx0XHRpZiAodGhpcy5pc0Rpc3Bvc2VkKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRoaXMuZGlzcG9zZVN5bmMoKTtcblx0fVxuXG5cdHB1YmxpYyBhc3luYyBbU3ltYm9sLmFzeW5jRGlzcG9zZV0oKSB7XG5cdFx0aWYgKHRoaXMuaXNEaXNwb3NlZCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRhd2FpdCB0aGlzLmRpc3Bvc2VBc3luYygpO1xuXHR9XG5cblx0cHJpdmF0ZSBkaXNwb3NlU3luYygpIHtcblx0XHRpZiAodGhpcy5pc0Rpc3Bvc2VkKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5pc0Rpc3Bvc2VkID0gdHJ1ZTtcblx0XHR0aGlzLnBhcmVudD8ucmVsZWFzZVNjb3BlKHRoaXMua2V5KTtcblx0XHR0aGlzLnNjb3Blcy5jbGVhcigpO1xuXHRcdGZvciAoY29uc3QgWywgaW5zdF0gb2YgdGhpcy5pbnN0YW5jZXMpIHtcblx0XHRcdGlmIChpbnN0ID09PSB0aGlzKSB7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXHRcdFx0aW5zdFtTeW1ib2wuZGlzcG9zZV0/LigpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgZGlzcG9zZUFzeW5jKCkge1xuXHRcdGlmICh0aGlzLmlzRGlzcG9zZWQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLmlzRGlzcG9zZWQgPSB0cnVlO1xuXHRcdHRoaXMucGFyZW50Py5yZWxlYXNlU2NvcGUodGhpcy5rZXkpO1xuXHRcdHRoaXMuc2NvcGVzLmNsZWFyKCk7XG5cdFx0Zm9yIChjb25zdCBbLCBpbnN0XSBvZiB0aGlzLmluc3RhbmNlcykge1xuXHRcdFx0aWYgKGluc3QgPT09IHRoaXMpIHtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRpZiAoU3ltYm9sLmFzeW5jRGlzcG9zZSBpbiBpbnN0KSB7XG5cdFx0XHRcdGF3YWl0IChpbnN0IGFzIEFzeW5jRGlzcG9zYWJsZSlbU3ltYm9sLmFzeW5jRGlzcG9zZV0oKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdChpbnN0IGFzIFBhcnRpYWw8RGlzcG9zYWJsZT4pW1N5bWJvbC5kaXNwb3NlXT8uKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBnZXRSZWdpc3RyYXRpb25Gcm9tKGtleTogUmVnaXN0cmF0aW9uS2V5KSB7XG5cdFx0Y29uc3QgcmVnaXN0cmF0aW9uID0gdGhpcy5zZXJ2aWNlUmVnaXN0cnkuZ2V0UmVnaXN0cmF0aW9uKGtleS52YWx1ZSk7XG5cdFx0cmV0dXJuIHJlZ2lzdHJhdGlvbjtcblx0fVxuXG5cdHByaXZhdGUgcmVzb2x2ZVJlZ2lzdHJhdGlvbjxUIGV4dGVuZHMgb2JqZWN0PihyZWdpc3RyYXRpb246IFNlcnZpY2VSZWdpc3RyYXRpb24pOiBUIHtcblx0XHRjb25zdCB7IHNjb3BlIH0gPSByZWdpc3RyYXRpb247XG5cdFx0c3dpdGNoIChzY29wZSkge1xuXHRcdFx0Y2FzZSBTY29wZXMudHJhbnNpZW50OlxuXHRcdFx0XHRyZXR1cm4gdGhpcy5jcmVhdGVJbnN0YW5jZShyZWdpc3RyYXRpb24pO1xuXHRcdFx0Y2FzZSBTY29wZXMuc2luZ2xldG9uOlxuXHRcdFx0XHRyZXR1cm4gdGhpcy5yb290U2NvcGUuZ2V0T3JDcmVhdGVJbnN0YW5jZShyZWdpc3RyYXRpb24pO1xuXHRcdFx0Y2FzZSBTY29wZXMucmVxdWVzdDpcblx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0T3JDcmVhdGVJbnN0YW5jZShyZWdpc3RyYXRpb24pO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgZ2V0T3JDcmVhdGVJbnN0YW5jZTxUIGV4dGVuZHMgb2JqZWN0PihyZWdpc3RyYXRpb246IFNlcnZpY2VSZWdpc3RyYXRpb24pOiBUIHtcblx0XHRpZiAodGhpcy5pc0Rpc3Bvc2VkKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIGNvbnRhaW5lciBoYXMgYmVlbiBkaXNwb3NlZFwiKTtcblx0XHR9XG5cdFx0Y29uc3QgeyBrZXksIHR5cGUsIGlzSW5zdGFuY2UgfSA9IHJlZ2lzdHJhdGlvbjtcblx0XHRjb25zdCBjYWNoZUtleSA9IGlzSW5zdGFuY2UgPyBrZXkudmFsdWUgOiB0eXBlO1xuXHRcdGNvbnN0IGV4aXN0aW5nSW5zdGFuY2UgPSB0aGlzLmluc3RhbmNlcy5nZXQoY2FjaGVLZXkpO1xuXHRcdGlmIChleGlzdGluZ0luc3RhbmNlICE9IG51bGwpIHtcblx0XHRcdHJldHVybiBleGlzdGluZ0luc3RhbmNlIGFzIFQ7XG5cdFx0fVxuXG5cdFx0Y29uc3QgaW5zdGFuY2UgPSBpc0luc3RhbmNlID8gKHR5cGUgYXMgVCkgOiB0aGlzLmNyZWF0ZUluc3RhbmNlPFQ+KHJlZ2lzdHJhdGlvbik7XG5cdFx0dGhpcy5pbnN0YW5jZXMuc2V0KGNhY2hlS2V5LCBpbnN0YW5jZSk7XG5cdFx0cmV0dXJuIGluc3RhbmNlO1xuXHR9XG5cblx0cHJpdmF0ZSBjcmVhdGVJbnN0YW5jZTxUIGV4dGVuZHMgb2JqZWN0PihyZWdpc3RyYXRpb246IFNlcnZpY2VSZWdpc3RyYXRpb24pOiBUIHtcblx0XHRjb25zdCB0eXBlID0gcmVnaXN0cmF0aW9uLnR5cGUgYXMgQ29uc3RydWN0YWJsZSB8IEZ1bmN0aW9uVHlwZTtcblx0XHRjb25zdCBjYW5Db25zdHJ1Y3QgPSBpc0NvbnN0cnVjdGFibGUodHlwZSk7XG5cdFx0Y29uc3QgZGVwcyA9IHRoaXMucmVzb2x2ZURlcGVuZGVuY2llcyh0eXBlKTtcblx0XHRjb25zdCBpbnN0ID0gKGNhbkNvbnN0cnVjdCA/IG5ldyB0eXBlKC4uLmRlcHMpIDogdHlwZSgpKSBhcyBUO1xuXHRcdHJldHVybiBpbnN0O1xuXHR9XG5cblx0cHJpdmF0ZSByZXNvbHZlRGVwZW5kZW5jaWVzKHR5cGU6IENvbnN0cnVjdGFibGUgfCBGdW5jdGlvblR5cGUpOiB1bmtub3duW10ge1xuXHRcdGNvbnN0IHBhcmFtcyA9IGdldE1ldGE8QXJyYXk8Q29uc3RydWN0YWJsZT4+KFJlZmxlY3Rpb25NZXRhLnBhcmFtdHlwZXMsIHR5cGUpID8/IFtdO1xuXG5cdFx0Y29uc3QgaW5qZWN0VG9rZW5zID1cblx0XHRcdGdldE1ldGE8SW5qZWN0aW9uTWV0YWRhdGE+KENydWNpYmxlTWV0YS5pbmplY3R0b2tlbiwgdHlwZSkgPz8gbmV3IE1hcCgpO1xuXG5cdFx0Ly9UT0RPOiBwdXQgYSB0cnkgY2F0Y2ggaGVyZSBzbyB3ZSBjYW4gdGhyb3cgdGhlIG5hbWUgb2YgdGhlIHNlcnZpY2Vcblx0XHRsZXQgcmVzb2x2ZWQgPSBbXTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHBhcmFtcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0Y29uc3QgdG9rZW4gPSBpbmplY3RUb2tlbnMuZ2V0KGkpPy5rZXkgPz8gcGFyYW1zW2ldLm5hbWU7XG5cdFx0XHRjb25zdCBkZXAgPSBpc0FycmF5VHlwZShwYXJhbXNbaV0pID8gdGhpcy5yZXNvbHZlTWFueSh0b2tlbikgOiB0aGlzLnJlc29sdmUodG9rZW4pO1xuXHRcdFx0cmVzb2x2ZWQgPSBbLi4ucmVzb2x2ZWQsIGRlcF07XG5cdFx0fVxuXHRcdHJldHVybiByZXNvbHZlZDtcblx0fVxuXG5cdHByaXZhdGUgcmVsZWFzZVNjb3BlKG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuXHRcdGlmIChuYW1lID09IG51bGwpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0dGhpcy5zY29wZXMuZGVsZXRlKG5hbWUpO1xuXHR9XG5cblx0cHJpdmF0ZSByZWdpc3RlckxpZmV0aW1lU2NvcGUoKSB7XG5cdFx0dGhpcy5zZXJ2aWNlUmVnaXN0cnkucmVwbGFjZVR5cGUoU2NvcGVzLnJlcXVlc3QsIHtcblx0XHRcdHR5cGVPcktleTogTGlmZXRpbWVTY29wZVRva2VuLFxuXHRcdFx0dHlwZU9ySW5zdGFuY2U6IHRoaXMsXG5cdFx0fSk7XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJDcnVjaWJsZSIsImtleSIsImluc3RhbmNlcyIsIk1hcCIsInNlcnZpY2VSZWdpc3RyeSIsInBhcmVudCIsInJvb3RTY29wZSIsInNjb3BlcyIsImxvZ2dlciIsInNjcmliZSIsIm5hbWUiLCJpc0Rpc3Bvc2VkIiwib3B0aW9ucyIsIlNlcnZpY2VSZWdpc3RyeSIsInJlZ2lzdGVyTGlmZXRpbWVTY29wZSIsInJlc29sdmVNYW55IiwicmVzb2x2ZVJlcXVlc3QiLCJSZWdpc3RyYXRpb25LZXkiLCJyZWdpc3RyYXRpb25zIiwiZ2V0UmVnaXN0cmF0aW9uRnJvbSIsInNlcnZpY2VzIiwiQXJyYXkiLCJvZiIsInJlZ2lzdHJhdGlvbiIsInNlcnZpY2UiLCJyZXNvbHZlUmVnaXN0cmF0aW9uIiwicHVzaCIsInJlc29sdmUiLCJ3YXJuIiwidG9TdHJpbmciLCJsZW5ndGgiLCJSZXNvbHZlRXJyb3IiLCJiZWdpblNjb3BlIiwiRXJyb3IiLCJoYXMiLCJEdXBsaWNhdGVTY29wZUVycm9yIiwic2NvcGUiLCJzZXQiLCJTeW1ib2wiLCJkaXNwb3NlIiwiZGlzcG9zZVN5bmMiLCJhc3luY0Rpc3Bvc2UiLCJkaXNwb3NlQXN5bmMiLCJyZWxlYXNlU2NvcGUiLCJjbGVhciIsImluc3QiLCJnZXRSZWdpc3RyYXRpb24iLCJ2YWx1ZSIsIlNjb3BlcyIsInRyYW5zaWVudCIsImNyZWF0ZUluc3RhbmNlIiwic2luZ2xldG9uIiwiZ2V0T3JDcmVhdGVJbnN0YW5jZSIsInJlcXVlc3QiLCJ0eXBlIiwiaXNJbnN0YW5jZSIsImNhY2hlS2V5IiwiZXhpc3RpbmdJbnN0YW5jZSIsImdldCIsImluc3RhbmNlIiwiY2FuQ29uc3RydWN0IiwiaXNDb25zdHJ1Y3RhYmxlIiwiZGVwcyIsInJlc29sdmVEZXBlbmRlbmNpZXMiLCJwYXJhbXMiLCJnZXRNZXRhIiwiUmVmbGVjdGlvbk1ldGEiLCJwYXJhbXR5cGVzIiwiaW5qZWN0VG9rZW5zIiwiQ3J1Y2libGVNZXRhIiwiaW5qZWN0dG9rZW4iLCJyZXNvbHZlZCIsImkiLCJ0b2tlbiIsImRlcCIsImlzQXJyYXlUeXBlIiwiZGVsZXRlIiwicmVwbGFjZVR5cGUiLCJ0eXBlT3JLZXkiLCJMaWZldGltZVNjb3BlVG9rZW4iLCJ0eXBlT3JJbnN0YW5jZSJdLCJtYXBwaW5ncyI6Ijs7OzsrQkF1QmFBOzs7ZUFBQUE7Ozs0QkFoQk47d0JBQ2dCO3VCQUNrQztzQ0FFekI7d0JBRWtCO2lDQUVsQjtBQVF6QixNQUFNQTtJQUNMQyxJQUFZO0lBQ1RDLFlBQVksSUFBSUMsTUFBdUI7SUFDekNDLGdCQUFpQztJQUNqQ0MsT0FBa0I7SUFDbEJDLFVBQW9CO0lBQ3BCQyxTQUFTLElBQUlKLE1BQTZCO0lBQzFDSyxTQUFTQyxjQUFNLENBQUNELE1BQU0sQ0FBQ1IsU0FBU1UsSUFBSSxFQUFFO0lBQ3RDQyxhQUFhLE1BQU07SUFD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
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NydWNpYmxlL3NyYy9zZXJ2aWNlcy9jcnVjaWJsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHR0eXBlIENvbnN0cnVjdGFibGUsXG5cdHR5cGUgRnVuY3Rpb25UeXBlLFxuXHRnZXRNZXRhLFxuXHRpc0FycmF5VHlwZSxcblx0aXNDb25zdHJ1Y3RhYmxlLFxuXHRSZWZsZWN0aW9uTWV0YSxcbn0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9yZWZsZWN0aW9uXCI7XG5pbXBvcnQgeyBzY3JpYmUgfSBmcm9tIFwiQGRlY29oZXJlL3NjcmliZVwiO1xuaW1wb3J0IHsgQ3J1Y2libGVNZXRhLCBMaWZldGltZVNjb3BlVG9rZW4sIFNjb3BlcyB9IGZyb20gXCIuLi9jb25zdC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBJbmplY3Rpb25NZXRhZGF0YSB9IGZyb20gXCIuLi9kZWNvcmF0b3JzL2luamVjdC5kZWNvcmF0b3IuanNcIjtcbmltcG9ydCB7IFJlZ2lzdHJhdGlvbktleSB9IGZyb20gXCIuLi9tb2RlbHMvcmVnaXN0cmF0aW9uLWtleS5tb2RlbC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTZXJ2aWNlUmVnaXN0cmF0aW9uIH0gZnJvbSBcIi4uL21vZGVscy9zZXJ2aWNlLXJlZ2lzdHJhdGlvbi5tb2RlbC5qc1wiO1xuaW1wb3J0IHsgRHVwbGljYXRlU2NvcGVFcnJvciwgUmVzb2x2ZUVycm9yIH0gZnJvbSBcIi4uL3R5cGVzL2Vycm9ycy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBJQ29udGFpbmVyLCBMaWZldGltZVNjb3BlLCBSZXNvbHZlUmVxdWVzdCB9IGZyb20gXCIuLi90eXBlcy90eXBlcy5qc1wiO1xuaW1wb3J0IHsgU2VydmljZVJlZ2lzdHJ5IH0gZnJvbSBcIi4vc2VydmljZS1yZWdpc3RyeS5qc1wiO1xuXG50eXBlIENydWNpYmxlT3B0aW9ucyA9IHtcblx0a2V5Pzogc3RyaW5nO1xuXHRyb290U2NvcGU/OiBDcnVjaWJsZTtcblx0c2VydmljZVJlZ2lzdHJ5OiBTZXJ2aWNlUmVnaXN0cnk7XG59O1xuXG5leHBvcnQgY2xhc3MgQ3J1Y2libGUgaW1wbGVtZW50cyBJQ29udGFpbmVyIHtcblx0cHVibGljIGtleTogc3RyaW5nO1xuXHRwcm90ZWN0ZWQgaW5zdGFuY2VzID0gbmV3IE1hcDx1bmtub3duLCBvYmplY3Q+KCk7XG5cdHByaXZhdGUgc2VydmljZVJlZ2lzdHJ5OiBTZXJ2aWNlUmVnaXN0cnk7XG5cdHByaXZhdGUgcm9vdFNjb3BlOiBDcnVjaWJsZTtcblx0cHJpdmF0ZSBzY29wZXMgPSBuZXcgTWFwPHN0cmluZywgTGlmZXRpbWVTY29wZT4oKTtcblx0cHJpdmF0ZSBsb2dnZXIgPSBzY3JpYmUubG9nZ2VyKENydWNpYmxlLm5hbWUpO1xuXHRwcml2YXRlIGlzRGlzcG9zZWQgPSBmYWxzZTtcblx0cHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBDcnVjaWJsZU9wdGlvbnMpIHtcblx0XHR0aGlzLmtleSA9IG9wdGlvbnM/LmtleTtcblx0XHR0aGlzLnNlcnZpY2VSZWdpc3RyeSA9IG5ldyBTZXJ2aWNlUmVnaXN0cnkob3B0aW9ucz8uc2VydmljZVJlZ2lzdHJ5KTtcblx0XHR0aGlzLnJlZ2lzdGVyTGlmZXRpbWVTY29wZSgpO1xuXHRcdHRoaXMucm9vdFNjb3BlID0gb3B0aW9ucz8ucm9vdFNjb3BlID8/IHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgcmVzb2x2ZU1hbnk8VCBleHRlbmRzIG9iamVjdCA9IG9iamVjdD4ocmVzb2x2ZVJlcXVlc3Q6IFJlc29sdmVSZXF1ZXN0PFQ+KTogVFtdIHtcblx0XHRjb25zdCBrZXkgPSBuZXcgUmVnaXN0cmF0aW9uS2V5KHJlc29sdmVSZXF1ZXN0KTtcblx0XHRjb25zdCByZWdpc3RyYXRpb25zID0gdGhpcy5nZXRSZWdpc3RyYXRpb25Gcm9tKGtleSkgPz8gW107XG5cblx0XHRjb25zdCBzZXJ2aWNlcyA9IEFycmF5Lm9mPFQ+KCk7XG5cdFx0Zm9yIChjb25zdCByZWdpc3RyYXRpb24gb2YgcmVnaXN0cmF0aW9ucykge1xuXHRcdFx0Y29uc3Qgc2VydmljZSA9IHRoaXMucmVzb2x2ZVJlZ2lzdHJhdGlvbjxUPihyZWdpc3RyYXRpb24pO1xuXHRcdFx0c2VydmljZXMucHVzaChzZXJ2aWNlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHNlcnZpY2VzO1xuXHR9XG5cblx0cHVibGljIHJlc29sdmU8VCBleHRlbmRzIG9iamVjdCB8IG9iamVjdFtdPihyZXNvbHZlUmVxdWVzdDogUmVzb2x2ZVJlcXVlc3Q8VD4pOiBUIHtcblx0XHRjb25zdCBrZXkgPSBuZXcgUmVnaXN0cmF0aW9uS2V5KHJlc29sdmVSZXF1ZXN0KTtcblx0XHRjb25zdCByZWdpc3RyYXRpb24gPSB0aGlzLmdldFJlZ2lzdHJhdGlvbkZyb20oa2V5KTtcblx0XHRpZiAocmVnaXN0cmF0aW9uID09IG51bGwpIHtcblx0XHRcdHRoaXMubG9nZ2VyLndhcm4oYENhbm5vdCByZXNvbHZlIGRlcGVuZGVuY3kgJHtrZXkudG9TdHJpbmcoKX1gKTtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblxuXHRcdGlmIChyZWdpc3RyYXRpb24ubGVuZ3RoID4gMSkge1xuXHRcdFx0dGhyb3cgbmV3IFJlc29sdmVFcnJvcihcblx0XHRcdFx0YFRoZXJlIGFyZSBtdWx0aXBsZSBzZXJ2aWNlcyByZWdpc3RlcmVkIHdpdGgga2V5ICR7a2V5LnRvU3RyaW5nKCl9LiBVc2UgcmVzb2x2ZU1hbnkgdG8gcmVzb2x2ZSBhbGwgaW1wbGVtZW50YXRpb25zLmAsXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdGNvbnN0IHNlcnZpY2UgPSB0aGlzLnJlc29sdmVSZWdpc3RyYXRpb248VD4ocmVnaXN0cmF0aW9uWzBdKTtcblx0XHRyZXR1cm4gc2VydmljZTtcblx0fVxuXG5cdHB1YmxpYyBiZWdpblNjb3BlKG5hbWU/OiBzdHJpbmcpIHtcblx0XHRpZiAodGhpcy5zY29wZXMuaGFzKG5hbWUpKSB7XG5cdFx0XHR0aHJvdyBuZXcgRHVwbGljYXRlU2NvcGVFcnJvcihcblx0XHRcdFx0YENhbm5vdCBjcmVhdGUgZHVwbGljYXRlIHNjb3BlLiBTY29wZSB3aXRoICR7bmFtZX0gaXMgYWxyZWFkeSBjcmVhdGVkIGFuZCBoYXMgbm90IGJlZW4gZGlzcG9zZWQuYCxcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgc2NvcGUgPSBuZXcgQ3J1Y2libGUoe1xuXHRcdFx0a2V5OiBuYW1lLFxuXHRcdFx0c2VydmljZVJlZ2lzdHJ5OiB0aGlzLnNlcnZpY2VSZWdpc3RyeSxcblx0XHRcdHJvb3RTY29wZTogdGhpcyxcblx0XHR9KTtcblxuXHRcdHRoaXMuc2NvcGVzLnNldChuYW1lLCBzY29wZSk7XG5cdFx0cmV0dXJuIHNjb3BlO1xuXHR9XG5cblx0cHVibGljIFtTeW1ib2wuZGlzcG9zZV0oKSB7XG5cdFx0aWYgKHRoaXMuaXNEaXNwb3NlZCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0aGlzLmRpc3Bvc2UoKTtcblx0fVxuXG5cdHByaXZhdGUgZGlzcG9zZSgpIHtcblx0XHRpZiAodGhpcy5pc0Rpc3Bvc2VkKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5pc0Rpc3Bvc2VkID0gdHJ1ZTtcblx0XHRmb3IgKGNvbnN0IFssIGluc3RdIG9mIHRoaXMuaW5zdGFuY2VzKSB7XG5cdFx0XHRpZiAoaW5zdCA9PT0gdGhpcykge1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblx0XHRcdGluc3RbU3ltYm9sLmRpc3Bvc2VdPy4oKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGdldFJlZ2lzdHJhdGlvbkZyb20oa2V5OiBSZWdpc3RyYXRpb25LZXkpIHtcblx0XHRjb25zdCByZWdpc3RyYXRpb24gPSB0aGlzLnNlcnZpY2VSZWdpc3RyeS5nZXRSZWdpc3RyYXRpb24oa2V5LnZhbHVlKTtcblx0XHRyZXR1cm4gcmVnaXN0cmF0aW9uO1xuXHR9XG5cblx0cHJpdmF0ZSByZXNvbHZlUmVnaXN0cmF0aW9uPFQgZXh0ZW5kcyBvYmplY3Q+KHJlZ2lzdHJhdGlvbjogU2VydmljZVJlZ2lzdHJhdGlvbik6IFQge1xuXHRcdGNvbnN0IHsgc2NvcGUgfSA9IHJlZ2lzdHJhdGlvbjtcblx0XHRzd2l0Y2ggKHNjb3BlKSB7XG5cdFx0XHRjYXNlIFNjb3Blcy50cmFuc2llbnQ6XG5cdFx0XHRcdHJldHVybiB0aGlzLmNyZWF0ZUluc3RhbmNlKHJlZ2lzdHJhdGlvbik7XG5cdFx0XHRjYXNlIFNjb3Blcy5zaW5nbGV0b246XG5cdFx0XHRcdHJldHVybiB0aGlzLnJvb3RTY29wZS5nZXRPckNyZWF0ZUluc3RhbmNlKHJlZ2lzdHJhdGlvbik7XG5cdFx0XHRjYXNlIFNjb3Blcy5yZXF1ZXN0OlxuXHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRPckNyZWF0ZUluc3RhbmNlKHJlZ2lzdHJhdGlvbik7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBnZXRPckNyZWF0ZUluc3RhbmNlPFQgZXh0ZW5kcyBvYmplY3Q+KHJlZ2lzdHJhdGlvbjogU2VydmljZVJlZ2lzdHJhdGlvbik6IFQge1xuXHRcdGlmICh0aGlzLmlzRGlzcG9zZWQpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIlRoaXMgY29udGluZXIgaGFzIGJlZW4gZGlzcG9zZWRcIik7XG5cdFx0fVxuXHRcdGNvbnN0IHsga2V5LCB0eXBlLCBpc0luc3RhbmNlIH0gPSByZWdpc3RyYXRpb247XG5cdFx0Y29uc3QgY2FjaGVLZXkgPSBpc0luc3RhbmNlID8ga2V5LnZhbHVlIDogdHlwZTtcblx0XHRjb25zdCBleGlzdGluZ0luc3RhbmNlID0gdGhpcy5pbnN0YW5jZXMuZ2V0KGNhY2hlS2V5KTtcblx0XHRpZiAoZXhpc3RpbmdJbnN0YW5jZSAhPSBudWxsKSB7XG5cdFx0XHRyZXR1cm4gZXhpc3RpbmdJbnN0YW5jZSBhcyBUO1xuXHRcdH1cblxuXHRcdGNvbnN0IGluc3RhbmNlID0gaXNJbnN0YW5jZSA/ICh0eXBlIGFzIFQpIDogdGhpcy5jcmVhdGVJbnN0YW5jZTxUPihyZWdpc3RyYXRpb24pO1xuXHRcdHRoaXMuaW5zdGFuY2VzLnNldChjYWNoZUtleSwgaW5zdGFuY2UpO1xuXHRcdHJldHVybiBpbnN0YW5jZTtcblx0fVxuXG5cdHByaXZhdGUgY3JlYXRlSW5zdGFuY2U8VCBleHRlbmRzIG9iamVjdD4ocmVnaXN0cmF0aW9uOiBTZXJ2aWNlUmVnaXN0cmF0aW9uKTogVCB7XG5cdFx0Y29uc3QgdHlwZSA9IHJlZ2lzdHJhdGlvbi50eXBlIGFzIENvbnN0cnVjdGFibGUgfCBGdW5jdGlvblR5cGU7XG5cdFx0Y29uc3QgY2FuQ29uc3RydWN0ID0gaXNDb25zdHJ1Y3RhYmxlKHR5cGUpO1xuXHRcdGNvbnN0IGRlcHMgPSB0aGlzLnJlc29sdmVEZXBlbmRlbmNpZXModHlwZSk7XG5cdFx0Y29uc3QgaW5zdCA9IChjYW5Db25zdHJ1Y3QgPyBuZXcgdHlwZSguLi5kZXBzKSA6IHR5cGUoKSkgYXMgVDtcblx0XHRyZXR1cm4gaW5zdDtcblx0fVxuXG5cdHByaXZhdGUgcmVzb2x2ZURlcGVuZGVuY2llcyh0eXBlOiBDb25zdHJ1Y3RhYmxlIHwgRnVuY3Rpb25UeXBlKTogdW5rbm93bltdIHtcblx0XHRjb25zdCBwYXJhbXMgPSBnZXRNZXRhPEFycmF5PENvbnN0cnVjdGFibGU+PihSZWZsZWN0aW9uTWV0YS5wYXJhbXR5cGVzLCB0eXBlKSA/PyBbXTtcblxuXHRcdGNvbnN0IGluamVjdFRva2VucyA9XG5cdFx0XHRnZXRNZXRhPEluamVjdGlvbk1ldGFkYXRhPihDcnVjaWJsZU1ldGEuaW5qZWN0dG9rZW4sIHR5cGUpID8/IG5ldyBNYXAoKTtcblxuXHRcdC8vVE9ETzogcHV0IGEgdHJ5IGNhdGNoIGhlcmUgc28gd2UgY2FuIHRocm93IHRoZSBuYW1lIG9mIHRoZSBzZXJ2aWNlXG5cdFx0bGV0IHJlc29sdmVkID0gW107XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBwYXJhbXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IHRva2VuID0gaW5qZWN0VG9rZW5zLmdldChpKT8ua2V5ID8/IHBhcmFtc1tpXS5uYW1lO1xuXHRcdFx0Y29uc3QgZGVwID0gaXNBcnJheVR5cGUocGFyYW1zW2ldKSA/IHRoaXMucmVzb2x2ZU1hbnkodG9rZW4pIDogdGhpcy5yZXNvbHZlKHRva2VuKTtcblx0XHRcdHJlc29sdmVkID0gWy4uLnJlc29sdmVkLCBkZXBdO1xuXHRcdH1cblx0XHRyZXR1cm4gcmVzb2x2ZWQ7XG5cdH1cblxuXHRwcml2YXRlIHJlZ2lzdGVyTGlmZXRpbWVTY29wZSgpIHtcblx0XHR0aGlzLnNlcnZpY2VSZWdpc3RyeS5yZWdpc3RlclR5cGUoU2NvcGVzLnJlcXVlc3QsIHtcblx0XHRcdHR5cGVPcktleTogTGlmZXRpbWVTY29wZVRva2VuLFxuXHRcdFx0dHlwZU9ySW5zdGFuY2U6IHRoaXMsXG5cdFx0fSk7XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJDcnVjaWJsZSIsImtleSIsImluc3RhbmNlcyIsIk1hcCIsInNlcnZpY2VSZWdpc3RyeSIsInJvb3RTY29wZSIsInNjb3BlcyIsImxvZ2dlciIsInNjcmliZSIsIm5hbWUiLCJpc0Rpc3Bvc2VkIiwib3B0aW9ucyIsIlNlcnZpY2VSZWdpc3RyeSIsInJlZ2lzdGVyTGlmZXRpbWVTY29wZSIsInJlc29sdmVNYW55IiwicmVzb2x2ZVJlcXVlc3QiLCJSZWdpc3RyYXRpb25LZXkiLCJyZWdpc3RyYXRpb25zIiwiZ2V0UmVnaXN0cmF0aW9uRnJvbSIsInNlcnZpY2VzIiwiQXJyYXkiLCJvZiIsInJlZ2lzdHJhdGlvbiIsInNlcnZpY2UiLCJyZXNvbHZlUmVnaXN0cmF0aW9uIiwicHVzaCIsInJlc29sdmUiLCJ3YXJuIiwidG9TdHJpbmciLCJsZW5ndGgiLCJSZXNvbHZlRXJyb3IiLCJiZWdpblNjb3BlIiwiaGFzIiwiRHVwbGljYXRlU2NvcGVFcnJvciIsInNjb3BlIiwic2V0IiwiU3ltYm9sIiwiZGlzcG9zZSIsImluc3QiLCJnZXRSZWdpc3RyYXRpb24iLCJ2YWx1ZSIsIlNjb3BlcyIsInRyYW5zaWVudCIsImNyZWF0ZUluc3RhbmNlIiwic2luZ2xldG9uIiwiZ2V0T3JDcmVhdGVJbnN0YW5jZSIsInJlcXVlc3QiLCJFcnJvciIsInR5cGUiLCJpc0luc3RhbmNlIiwiY2FjaGVLZXkiLCJleGlzdGluZ0luc3RhbmNlIiwiZ2V0IiwiaW5zdGFuY2UiLCJjYW5Db25zdHJ1Y3QiLCJpc0NvbnN0cnVjdGFibGUiLCJkZXBzIiwicmVzb2x2ZURlcGVuZGVuY2llcyIsInBhcmFtcyIsImdldE1ldGEiLCJSZWZsZWN0aW9uTWV0YSIsInBhcmFtdHlwZXMiLCJpbmplY3RUb2tlbnMiLCJDcnVjaWJsZU1ldGEiLCJpbmplY3R0b2tlbiIsInJlc29sdmVkIiwiaSIsInRva2VuIiwiZGVwIiwiaXNBcnJheVR5cGUiLCJyZWdpc3RlclR5cGUiLCJ0eXBlT3JLZXkiLCJMaWZldGltZVNjb3BlVG9rZW4iLCJ0eXBlT3JJbnN0YW5jZSJdLCJtYXBwaW5ncyI6Ijs7OzsrQkF1QmFBOzs7ZUFBQUE7Ozs0QkFoQk47d0JBQ2dCO3VCQUNrQztzQ0FFekI7d0JBRWtCO2lDQUVsQjtBQVF6QixNQUFNQTtJQUNMQyxJQUFZO0lBQ1RDLFlBQVksSUFBSUMsTUFBdUI7SUFDekNDLGdCQUFpQztJQUNqQ0MsVUFBb0I7SUFDcEJDLFNBQVMsSUFBSUgsTUFBNkI7SUFDMUNJLFNBQVNDLGNBQU0sQ0FBQ0QsTUFBTSxDQUFDUCxTQUFTUyxJQUFJLEVBQUU7SUFDdENDLGFBQWEsTUFBTTtJQUMzQixZQUFtQkMsT0FBeUIsQ0FBRTtRQUM3QyxJQUFJLENBQUNWLEdBQUcsR0FBR1UsU0FBU1Y7UUFDcEIsSUFBSSxDQUFDRyxlQUFlLEdBQUcsSUFBSVEsZ0NBQWUsQ0FBQ0QsU0FBU1A7UUFDcEQsSUFBSSxDQUFDUyxxQkFBcUI7UUFDMUIsSUFBSSxDQUFDUixTQUFTLEdBQUdNLFNBQVNOLGFBQWEsSUFBSTtJQUM1QztJQUVPUyxZQUF1Q0MsY0FBaUMsRUFBTztRQUNyRixNQUFNZCxNQUFNLElBQUllLHFDQUFlLENBQUNEO1FBQ2hDLE1B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
|
|
@@ -10,7 +10,6 @@ Object.defineProperty(exports, "ServiceRegistry", {
|
|
|
10
10
|
});
|
|
11
11
|
const _registrationkeymodel = require("../models/registration-key.model.js");
|
|
12
12
|
const _serviceregistrationmodel = require("../models/service-registration.model.js");
|
|
13
|
-
const _errors = require("../types/errors.js");
|
|
14
13
|
class ServiceRegistry {
|
|
15
14
|
registrations;
|
|
16
15
|
constructor(parent){
|
|
@@ -18,22 +17,10 @@ class ServiceRegistry {
|
|
|
18
17
|
}
|
|
19
18
|
registerType(scope, options) {
|
|
20
19
|
const registration = this.createRegistrationFrom(scope, options);
|
|
21
|
-
const
|
|
22
|
-
const duplicate = existing.find((reg)=>reg.isEqual(registration));
|
|
23
|
-
if (duplicate != null && !options.override) {
|
|
24
|
-
throw new _errors.RegistrationError(`A service is already registered for key ${registration.key}. Use builder.override.registerSingleton() (or the matching register* method) to replace it.`);
|
|
25
|
-
}
|
|
26
|
-
const remaining = existing.filter((reg)=>!reg.isEqual(registration));
|
|
20
|
+
const existingRegistration = this.getRegistrations(registration.key)?.filter((reg)=>!reg.isEqual(registration)) ?? [];
|
|
27
21
|
this.setRegistration(registration.key, [
|
|
28
22
|
registration,
|
|
29
|
-
...
|
|
30
|
-
]);
|
|
31
|
-
return registration;
|
|
32
|
-
}
|
|
33
|
-
replaceType(scope, options) {
|
|
34
|
-
const registration = this.createRegistrationFrom(scope, options);
|
|
35
|
-
this.setRegistration(registration.key, [
|
|
36
|
-
registration
|
|
23
|
+
...existingRegistration
|
|
37
24
|
]);
|
|
38
25
|
return registration;
|
|
39
26
|
}
|
|
@@ -60,4 +47,4 @@ class ServiceRegistry {
|
|
|
60
47
|
}
|
|
61
48
|
}
|
|
62
49
|
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NydWNpYmxlL3NyYy9zZXJ2aWNlcy9zZXJ2aWNlLXJlZ2lzdHJ5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29uc3RydWN0YWJsZSwgRnVuY3Rpb25UeXBlIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9yZWZsZWN0aW9uXCI7XG5pbXBvcnQgeyBSZWdpc3RyYXRpb25LZXkgfSBmcm9tIFwiLi4vbW9kZWxzL3JlZ2lzdHJhdGlvbi1rZXkubW9kZWwuanNcIjtcbmltcG9ydCB7IFNlcnZpY2VSZWdpc3RyYXRpb24gfSBmcm9tIFwiLi4vbW9kZWxzL3NlcnZpY2UtcmVnaXN0cmF0aW9uLm1vZGVsLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNjb3BlIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzLmpzXCI7XG5cbmV4cG9ydCB0eXBlIFJlZ2lzdGVyVHlwZU9wdGlvbnMgPSB7XG5cdHR5cGVPcktleTogc3RyaW5nIHwgc3ltYm9sIHwgQ29uc3RydWN0YWJsZSB8IEZ1bmN0aW9uVHlwZTtcblx0dHlwZU9ySW5zdGFuY2U/OiBDb25zdHJ1Y3RhYmxlIHwgRnVuY3Rpb25UeXBlIHwgb2JqZWN0O1xufTtcblxuZXhwb3J0IGNsYXNzIFNlcnZpY2VSZWdpc3RyeSB7XG5cdHByaXZhdGUgcmVhZG9ubHkgcmVnaXN0cmF0aW9uczogTWFwPHN0cmluZywgU2VydmljZVJlZ2lzdHJhdGlvbltdPjtcblx0cHVibGljIGNvbnN0cnVjdG9yKHBhcmVudD86IFNlcnZpY2VSZWdpc3RyeSkge1xuXHRcdHRoaXMucmVnaXN0cmF0aW9ucyA9IG5ldyBNYXAocGFyZW50Py5yZWdpc3RyYXRpb25zKTtcblx0fVxuXG5cdHB1YmxpYyByZWdpc3RlclR5cGUoc2NvcGU6IFNjb3BlLCBvcHRpb25zOiBSZWdpc3RlclR5cGVPcHRpb25zKSB7XG5cdFx0Y29uc3QgcmVnaXN0cmF0aW9uID0gdGhpcy5jcmVhdGVSZWdpc3RyYXRpb25Gcm9tKHNjb3BlLCBvcHRpb25zKTtcblx0XHRjb25zdCBleGlzdGluZ1JlZ2lzdHJhdGlvbiA9XG5cdFx0XHR0aGlzLmdldFJlZ2lzdHJhdGlvbnMocmVnaXN0cmF0aW9uLmtleSk/LmZpbHRlcigocmVnKSA9PiAhcmVnLmlzRXF1YWwocmVnaXN0cmF0aW9uKSkgPz9cblx0XHRcdFtdO1xuXG5cdFx0dGhpcy5zZXRSZWdpc3RyYXRpb24ocmVnaXN0cmF0aW9uLmtleSwgW3JlZ2lzdHJhdGlvbiwgLi4uZXhpc3RpbmdSZWdpc3RyYXRpb25dKTtcblx0XHRyZXR1cm4gcmVnaXN0cmF0aW9uO1xuXHR9XG5cblx0cHVibGljIGdldFJlZ2lzdHJhdGlvbihrZXk6IHN0cmluZyB8IHN5bWJvbCB8IENvbnN0cnVjdGFibGUpOiBTZXJ2aWNlUmVnaXN0cmF0aW9uW10ge1xuXHRcdGNvbnN0IGtleVZhbCA9IG5ldyBSZWdpc3RyYXRpb25LZXkoa2V5KS52YWx1ZTtcblx0XHRjb25zdCByZWdpc3RyYXRpb24gPSB0aGlzLnJlZ2lzdHJhdGlvbnMuZ2V0KGtleVZhbCk7XG5cdFx0cmV0dXJuIHJlZ2lzdHJhdGlvbjtcblx0fVxuXG5cdHByaXZhdGUgY3JlYXRlUmVnaXN0cmF0aW9uRnJvbShzY29wZTogU2NvcGUsIG9wdGlvbnM6IFJlZ2lzdGVyVHlwZU9wdGlvbnMpIHtcblx0XHRjb25zdCB7IHR5cGVPcktleSwgdHlwZU9ySW5zdGFuY2UgfSA9IG9wdGlvbnM7XG5cdFx0Y29uc3QgaXNLZXkgPSB0eXBlb2YgdHlwZU9yS2V5ID09PSBcInN0cmluZ1wiIHx8IHR5cGVvZiB0eXBlT3JLZXkgPT09IFwic3ltYm9sXCI7XG5cdFx0Y29uc3QgaXNJbnN0YW5jZSA9IHR5cGVvZiB0eXBlT3JJbnN0YW5jZSA9PT0gXCJvYmplY3RcIjtcblx0XHRjb25zdCBrZXkgPSBuZXcgUmVnaXN0cmF0aW9uS2V5KCFpc0tleSA/IHR5cGVPcktleS5uYW1lIDogdHlwZU9yS2V5KTtcblx0XHRjb25zdCB0eXBlID0gaXNJbnN0YW5jZSA/IHR5cGVPckluc3RhbmNlIDogaXNLZXkgPyB0eXBlT3JJbnN0YW5jZSA6IHR5cGVPcktleTtcblx0XHRjb25zdCByZWdpc3RyYXRpb24gPSBuZXcgU2VydmljZVJlZ2lzdHJhdGlvbihrZXksIHR5cGUsIHNjb3BlLCBpc0luc3RhbmNlKTtcblx0XHRyZXR1cm4gcmVnaXN0cmF0aW9uO1xuXHR9XG5cblx0cHJpdmF0ZSBnZXRSZWdpc3RyYXRpb25zKGtleTogUmVnaXN0cmF0aW9uS2V5KSB7XG5cdFx0Y29uc3QgdmFsdWUgPSBrZXkudmFsdWU7XG5cdFx0cmV0dXJuIHRoaXMucmVnaXN0cmF0aW9ucy5nZXQodmFsdWUpO1xuXHR9XG5cblx0cHJpdmF0ZSBzZXRSZWdpc3RyYXRpb24oa2V5OiBSZWdpc3RyYXRpb25LZXksIHJlZ2lzdHJhdGlvbnM6IFNlcnZpY2VSZWdpc3RyYXRpb25bXSkge1xuXHRcdHRoaXMucmVnaXN0cmF0aW9ucy5zZXQoa2V5LnZhbHVlLCByZWdpc3RyYXRpb25zKTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIlNlcnZpY2VSZWdpc3RyeSIsInJlZ2lzdHJhdGlvbnMiLCJwYXJlbnQiLCJNYXAiLCJyZWdpc3RlclR5cGUiLCJzY29wZSIsIm9wdGlvbnMiLCJyZWdpc3RyYXRpb24iLCJjcmVhdGVSZWdpc3RyYXRpb25Gcm9tIiwiZXhpc3RpbmdSZWdpc3RyYXRpb24iLCJnZXRSZWdpc3RyYXRpb25zIiwia2V5IiwiZmlsdGVyIiwicmVnIiwiaXNFcXVhbCIsInNldFJlZ2lzdHJhdGlvbiIsImdldFJlZ2lzdHJhdGlvbiIsImtleVZhbCIsIlJlZ2lzdHJhdGlvbktleSIsInZhbHVlIiwiZ2V0IiwidHlwZU9yS2V5IiwidHlwZU9ySW5zdGFuY2UiLCJpc0tleSIsImlzSW5zdGFuY2UiLCJuYW1lIiwidHlwZSIsIlNlcnZpY2VSZWdpc3RyYXRpb24iLCJzZXQiXSwibWFwcGluZ3MiOiI7Ozs7K0JBVWFBOzs7ZUFBQUE7OztzQ0FUbUI7MENBQ0k7QUFRN0IsTUFBTUE7SUFDS0MsY0FBa0Q7SUFDbkUsWUFBbUJDLE1BQXdCLENBQUU7UUFDNUMsSUFBSSxDQUFDRCxhQUFhLEdBQUcsSUFBSUUsSUFBSUQsUUFBUUQ7SUFDdEM7SUFFT0csYUFBYUMsS0FBWSxFQUFFQyxPQUE0QixFQUFFO1FBQy9ELE1BQU1DLGVBQWUsSUFBSSxDQUFDQyxzQkFBc0IsQ0FBQ0gsT0FBT0M7UUFDeEQsTUFBTUcsdUJBQ0wsSUFBSSxDQUFDQyxnQkFBZ0IsQ0FBQ0gsYUFBYUksR0FBRyxHQUFHQyxPQUFPLENBQUNDLE1BQVEsQ0FBQ0EsSUFBSUMsT0FBTyxDQUFDUCxrQkFDdEUsRUFBRTtRQUVILElBQUksQ0FBQ1EsZUFBZSxDQUFDUixhQUFhSSxHQUFHLEVBQUU7WUFBQ0o7ZUFBaUJFO1NBQXFCO1FBQzlFLE9BQU9GO0lBQ1I7SUFFT1MsZ0JBQWdCTCxHQUFvQyxFQUF5QjtRQUNuRixNQUFNTSxTQUFTLElBQUlDLHFDQUFlLENBQUNQLEtBQUtRLEtBQUs7UUFDN0MsTUFBTVosZUFBZSxJQUFJLENBQUNOLGFBQWEsQ0FBQ21CLEdBQUcsQ0FBQ0g7UUFDNUMsT0FBT1Y7SUFDUjtJQUVRQyx1QkFBdUJILEtBQVksRUFBRUMsT0FBNEIsRUFBRTtRQUMxRSxNQUFNLEVBQUVlLFNBQVMsRUFBRUMsY0FBYyxFQUFFLEdBQUdoQjtRQUN0QyxNQUFNaUIsUUFBUSxPQUFPRixjQUFjLFlBQVksT0FBT0EsY0FBYztRQUNwRSxNQUFNRyxhQUFhLE9BQU9GLG1CQUFtQjtRQUM3QyxNQUFNWCxNQUFNLElBQUlPLHFDQUFlLENBQUMsQ0FBQ0ssUUFBUUYsVUFBVUksSUFBSSxHQUFHSjtRQUMxRCxNQUFNSyxPQUFPRixhQUFhRixpQkFBaUJDLFFBQVFELGlCQUFpQkQ7UUFDcEUsTUFBTWQsZUFBZSxJQUFJb0IsNkNBQW1CLENBQUNoQixLQUFLZSxNQUFNckIsT0FBT21CO1FBQy9ELE9BQU9qQjtJQUNSO0lBRVFHLGlCQUFpQkMsR0FBb0IsRUFBRTtRQUM5QyxNQUFNUSxRQUFRUixJQUFJUSxLQUFLO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDbEIsYUFBYSxDQUFDbUIsR0FBRyxDQUFDRDtJQUMvQjtJQUVRSixnQkFBZ0JKLEdBQW9CLEVBQUVWLGFBQW9DLEVBQUU7UUFDbkYsSUFBSSxDQUFDQSxhQUFhLENBQUMyQixHQUFHLENBQUNqQixJQUFJUSxLQUFLLEVBQUVsQjtJQUNuQztBQUNEIn0=
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
_export_star(require("./errors.js"), exports);
|
|
6
5
|
_export_star(require("./types.js"), exports);
|
|
7
6
|
function _export_star(from, to) {
|
|
8
7
|
Object.keys(from).forEach(function(k) {
|
|
@@ -18,4 +17,4 @@ function _export_star(from, to) {
|
|
|
18
17
|
return from;
|
|
19
18
|
}
|
|
20
19
|
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NydWNpYmxlL3NyYy90eXBlcy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi90eXBlcy5qc1wiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWMifQ==
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import { defineMeta, getMeta } from "@decohere/nexus/reflection";
|
|
2
2
|
import { CrucibleMeta } from "../const.js";
|
|
3
|
-
|
|
4
|
-
* Bind a constructor parameter to a registration key.
|
|
5
|
-
* A class uses `Class.name` (same key as `registerSingleton(Class)`).
|
|
6
|
-
* Prefer the class over a name string. Use a symbol or string when the key is not the class name.
|
|
7
|
-
*/ export function inject(key) {
|
|
3
|
+
export function inject(key) {
|
|
8
4
|
return (target, _propertyKey, idx)=>{
|
|
9
5
|
const metadata = getExistingMeta(target);
|
|
10
6
|
metadata.set(idx, {
|
|
@@ -18,4 +14,4 @@ function getExistingMeta(target) {
|
|
|
18
14
|
return meta;
|
|
19
15
|
}
|
|
20
16
|
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NydWNpYmxlL3NyYy9kZWNvcmF0b3JzL2luamVjdC5kZWNvcmF0b3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVmaW5lTWV0YSwgZ2V0TWV0YSB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvcmVmbGVjdGlvblwiO1xuaW1wb3J0IHsgQ3J1Y2libGVNZXRhIH0gZnJvbSBcIi4uL2NvbnN0LmpzXCI7XG5cbmV4cG9ydCB0eXBlIEluamVjdGlvbk1ldGFkYXRhID0gTWFwPG51bWJlciwgSW5qZWN0aW9uVG9rZW4+O1xuXG5leHBvcnQgdHlwZSBJbmplY3Rpb25Ub2tlbiA9IHtcblx0a2V5OiBzdHJpbmcgfCBzeW1ib2w7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0KGtleTogc3RyaW5nIHwgc3ltYm9sKSB7XG5cdHJldHVybiAodGFyZ2V0OiBvYmplY3QsIF9wcm9wZXJ0eUtleTogc3RyaW5nIHwgc3ltYm9sIHwgdW5kZWZpbmVkLCBpZHg6IG51bWJlcikgPT4ge1xuXHRcdGNvbnN0IG1ldGFkYXRhID0gZ2V0RXhpc3RpbmdNZXRhKHRhcmdldCk7XG5cdFx0bWV0YWRhdGEuc2V0KGlkeCwgeyBrZXkgfSk7XG5cdFx0ZGVmaW5lTWV0YShDcnVjaWJsZU1ldGEuaW5qZWN0dG9rZW4sIG1ldGFkYXRhLCB0YXJnZXQpO1xuXHR9O1xufVxuXG5mdW5jdGlvbiBnZXRFeGlzdGluZ01ldGEodGFyZ2V0OiBvYmplY3QpIHtcblx0Y29uc3QgbWV0YSA9XG5cdFx0Z2V0TWV0YTxNYXA8bnVtYmVyLCBJbmplY3Rpb25Ub2tlbj4+KENydWNpYmxlTWV0YS5pbmplY3R0b2tlbiwgdGFyZ2V0KSA/P1xuXHRcdG5ldyBNYXA8bnVtYmVyLCBJbmplY3Rpb25Ub2tlbj4oKTtcblx0cmV0dXJuIG1ldGE7XG59XG4iXSwibmFtZXMiOlsiZGVmaW5lTWV0YSIsImdldE1ldGEiLCJDcnVjaWJsZU1ldGEiLCJpbmplY3QiLCJrZXkiLCJ0YXJnZXQiLCJfcHJvcGVydHlLZXkiLCJpZHgiLCJtZXRhZGF0YSIsImdldEV4aXN0aW5nTWV0YSIsInNldCIsImluamVjdHRva2VuIiwibWV0YSIsIk1hcCJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsVUFBVSxFQUFFQyxPQUFPLFFBQVEsNkJBQTZCO0FBQ2pFLFNBQVNDLFlBQVksUUFBUSxjQUFjO0FBUTNDLE9BQU8sU0FBU0MsT0FBT0MsR0FBb0I7SUFDMUMsT0FBTyxDQUFDQyxRQUFnQkMsY0FBMkNDO1FBQ2xFLE1BQU1DLFdBQVdDLGdCQUFnQko7UUFDakNHLFNBQVNFLEdBQUcsQ0FBQ0gsS0FBSztZQUFFSDtRQUFJO1FBQ3hCSixXQUFXRSxhQUFhUyxXQUFXLEVBQUVILFVBQVVIO0lBQ2hEO0FBQ0Q7QUFFQSxTQUFTSSxnQkFBZ0JKLE1BQWM7SUFDdEMsTUFBTU8sT0FDTFgsUUFBcUNDLGFBQWFTLFdBQVcsRUFBRU4sV0FDL0QsSUFBSVE7SUFDTCxPQUFPRDtBQUNSIn0=
|
|
@@ -6,54 +6,53 @@ export class CrucibleBuilder {
|
|
|
6
6
|
constructor(options){
|
|
7
7
|
this.serviceRegistry = options?.serviceRegistry ?? new ServiceRegistry();
|
|
8
8
|
}
|
|
9
|
-
get override() {
|
|
10
|
-
return this.createRegistrar(true);
|
|
11
|
-
}
|
|
12
9
|
registerType(type, scope = Scopes.transient) {
|
|
13
|
-
|
|
10
|
+
const registration = this.serviceRegistry.registerType(scope, {
|
|
11
|
+
typeOrKey: type.name,
|
|
12
|
+
typeOrInstance: type
|
|
13
|
+
});
|
|
14
|
+
return registration;
|
|
14
15
|
}
|
|
15
16
|
registerTypes(scopeOrType, ...types) {
|
|
16
|
-
|
|
17
|
+
const registrations = Array.of();
|
|
18
|
+
const isScope = typeof scopeOrType !== "function";
|
|
19
|
+
const scope = isScope ? scopeOrType : Scopes.transient;
|
|
20
|
+
const allTypes = isScope ? types : [
|
|
21
|
+
scopeOrType,
|
|
22
|
+
...types
|
|
23
|
+
];
|
|
24
|
+
for (const type of allTypes){
|
|
25
|
+
const registration = this.registerType(type, scope);
|
|
26
|
+
registrations.push(registration);
|
|
27
|
+
}
|
|
28
|
+
return registrations;
|
|
17
29
|
}
|
|
18
30
|
registerTransient(typeOrKey, type) {
|
|
19
|
-
|
|
31
|
+
const registration = this.serviceRegistry.registerType(Scopes.transient, {
|
|
32
|
+
typeOrKey,
|
|
33
|
+
typeOrInstance: type
|
|
34
|
+
});
|
|
35
|
+
return registration;
|
|
20
36
|
}
|
|
21
37
|
registerSingleton(typeOrKey, typeOrInstance) {
|
|
22
|
-
|
|
38
|
+
const registration = this.serviceRegistry.registerType(Scopes.singleton, {
|
|
39
|
+
typeOrKey,
|
|
40
|
+
typeOrInstance
|
|
41
|
+
});
|
|
42
|
+
return registration;
|
|
23
43
|
}
|
|
24
44
|
registerRequestScoped(typeOrKey, type) {
|
|
25
|
-
|
|
45
|
+
const registration = this.serviceRegistry.registerType(Scopes.request, {
|
|
46
|
+
typeOrKey,
|
|
47
|
+
typeOrInstance: type
|
|
48
|
+
});
|
|
49
|
+
return registration;
|
|
26
50
|
}
|
|
27
51
|
build() {
|
|
28
52
|
return new Crucible({
|
|
29
53
|
serviceRegistry: this.serviceRegistry
|
|
30
54
|
});
|
|
31
55
|
}
|
|
32
|
-
register = (override)=>(scope)=>(typeOrKey, typeOrInstance)=>this.serviceRegistry.registerType(scope, {
|
|
33
|
-
typeOrKey,
|
|
34
|
-
typeOrInstance,
|
|
35
|
-
override
|
|
36
|
-
});
|
|
37
|
-
registerMany(override, scopeOrType, types) {
|
|
38
|
-
const bind = this.register(override);
|
|
39
|
-
const isScope = typeof scopeOrType !== "function";
|
|
40
|
-
const scope = isScope ? scopeOrType : Scopes.transient;
|
|
41
|
-
const allTypes = isScope ? types : [
|
|
42
|
-
scopeOrType,
|
|
43
|
-
...types
|
|
44
|
-
];
|
|
45
|
-
return allTypes.map((type)=>bind(scope)(type.name, type));
|
|
46
|
-
}
|
|
47
|
-
createRegistrar(override) {
|
|
48
|
-
const bind = this.register(override);
|
|
49
|
-
return {
|
|
50
|
-
registerType: (type, scope = Scopes.transient)=>bind(scope)(type.name, type),
|
|
51
|
-
registerTypes: (scopeOrType, ...types)=>this.registerMany(override, scopeOrType, types),
|
|
52
|
-
registerTransient: (typeOrKey, type)=>bind(Scopes.transient)(typeOrKey, type),
|
|
53
|
-
registerSingleton: (typeOrKey, typeOrInstance)=>bind(Scopes.singleton)(typeOrKey, typeOrInstance),
|
|
54
|
-
registerRequestScoped: (typeOrKey, type)=>bind(Scopes.request)(typeOrKey, type)
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
56
|
}
|
|
58
57
|
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NydWNpYmxlL3NyYy9zZXJ2aWNlcy9jcnVjaWJsZS1idWlsZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29uc3RydWN0YWJsZSwgRnVuY3Rpb25UeXBlIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9yZWZsZWN0aW9uXCI7XG5pbXBvcnQgeyBTY29wZXMgfSBmcm9tIFwiLi4vY29uc3QuanNcIjtcbmltcG9ydCB0eXBlIHsgU2VydmljZVJlZ2lzdHJhdGlvbiB9IGZyb20gXCIuLi9tb2RlbHMvc2VydmljZS1yZWdpc3RyYXRpb24ubW9kZWwuanNcIjtcbmltcG9ydCB0eXBlIHsgQ29udGFpbmVyQnVpbGRlciwgU2NvcGUgfSBmcm9tIFwiLi4vdHlwZXMvdHlwZXMuanNcIjtcbmltcG9ydCB7IENydWNpYmxlIH0gZnJvbSBcIi4vY3J1Y2libGUuanNcIjtcbmltcG9ydCB7IFNlcnZpY2VSZWdpc3RyeSB9IGZyb20gXCIuL3NlcnZpY2UtcmVnaXN0cnkuanNcIjtcblxudHlwZSBDb250YWluZXJCdWlsZGVyT3B0aW9ucyA9IHtcblx0c2VydmljZVJlZ2lzdHJ5OiBTZXJ2aWNlUmVnaXN0cnk7XG59O1xuXG5leHBvcnQgY2xhc3MgQ3J1Y2libGVCdWlsZGVyIGltcGxlbWVudHMgQ29udGFpbmVyQnVpbGRlciB7XG5cdHByaXZhdGUgc2VydmljZVJlZ2lzdHJ5OiBTZXJ2aWNlUmVnaXN0cnk7XG5cdHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zPzogQ29udGFpbmVyQnVpbGRlck9wdGlvbnMpIHtcblx0XHR0aGlzLnNlcnZpY2VSZWdpc3RyeSA9IG9wdGlvbnM/LnNlcnZpY2VSZWdpc3RyeSA/PyBuZXcgU2VydmljZVJlZ2lzdHJ5KCk7XG5cdH1cblxuXHRwdWJsaWMgcmVnaXN0ZXJUeXBlKHR5cGU6IENvbnN0cnVjdGFibGUsIHNjb3BlOiBTY29wZSA9IFNjb3Blcy50cmFuc2llbnQpIHtcblx0XHRjb25zdCByZWdpc3RyYXRpb24gPSB0aGlzLnNlcnZpY2VSZWdpc3RyeS5yZWdpc3RlclR5cGUoc2NvcGUsIHtcblx0XHRcdHR5cGVPcktleTogdHlwZS5uYW1lLFxuXHRcdFx0dHlwZU9ySW5zdGFuY2U6IHR5cGUsXG5cdFx0fSk7XG5cdFx0cmV0dXJuIHJlZ2lzdHJhdGlvbjtcblx0fVxuXG5cdHB1YmxpYyByZWdpc3RlclR5cGVzKC4uLnR5cGVzOiBDb25zdHJ1Y3RhYmxlW10pOiBTZXJ2aWNlUmVnaXN0cmF0aW9uW107XG5cdHB1YmxpYyByZWdpc3RlclR5cGVzKHNjb3BlOiBTY29wZSwgLi4udHlwZXM6IENvbnN0cnVjdGFibGVbXSk6IFNlcnZpY2VSZWdpc3RyYXRpb25bXTtcblx0cHVibGljIHJlZ2lzdGVyVHlwZXMoXG5cdFx0c2NvcGVPclR5cGU6IFNjb3BlIHwgQ29uc3RydWN0YWJsZSxcblx0XHQuLi50eXBlczogQ29uc3RydWN0YWJsZVtdXG5cdCk6IFNlcnZpY2VSZWdpc3RyYXRpb25bXSB7XG5cdFx0Y29uc3QgcmVnaXN0cmF0aW9ucyA9IEFycmF5Lm9mPFNlcnZpY2VSZWdpc3RyYXRpb24+KCk7XG5cblx0XHRjb25zdCBpc1Njb3BlID0gdHlwZW9mIHNjb3BlT3JUeXBlICE9PSBcImZ1bmN0aW9uXCI7XG5cdFx0Y29uc3Qgc2NvcGUgPSBpc1Njb3BlID8gc2NvcGVPclR5cGUgOiBTY29wZXMudHJhbnNpZW50O1xuXHRcdGNvbnN0IGFsbFR5cGVzID0gaXNTY29wZSA/IHR5cGVzIDogW3Njb3BlT3JUeXBlLCAuLi50eXBlc107XG5cdFx0Zm9yIChjb25zdCB0eXBlIG9mIGFsbFR5cGVzKSB7XG5cdFx0XHRjb25zdCByZWdpc3RyYXRpb24gPSB0aGlzLnJlZ2lzdGVyVHlwZSh0eXBlLCBzY29wZSk7XG5cdFx0XHRyZWdpc3RyYXRpb25zLnB1c2gocmVnaXN0cmF0aW9uKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmVnaXN0cmF0aW9ucztcblx0fVxuXG5cdHB1YmxpYyByZWdpc3RlclRyYW5zaWVudChcblx0XHRrZXk6IHN0cmluZyB8IHN5bWJvbCxcblx0XHR0eXBlOiBDb25zdHJ1Y3RhYmxlIHwgRnVuY3Rpb25UeXBlLFxuXHQpOiBTZXJ2aWNlUmVnaXN0cmF0aW9uO1xuXHRwdWJsaWMgcmVnaXN0ZXJUcmFuc2llbnQodHlwZTogQ29uc3RydWN0YWJsZSk6IFNlcnZpY2VSZWdpc3RyYXRpb247XG5cdHB1YmxpYyByZWdpc3RlclRyYW5zaWVudCh0eXBlT3JLZXk6IHN0cmluZyB8IHN5bWJvbCB8IENvbnN0cnVjdGFibGUsIHR5cGU/OiBDb25zdHJ1Y3RhYmxlKSB7XG5cdFx0Y29uc3QgcmVnaXN0cmF0aW9uID0gdGhpcy5zZXJ2aWNlUmVnaXN0cnkucmVnaXN0ZXJUeXBlKFNjb3Blcy50cmFuc2llbnQsIHtcblx0XHRcdHR5cGVPcktleSxcblx0XHRcdHR5cGVPckluc3RhbmNlOiB0eXBlLFxuXHRcdH0pO1xuXHRcdHJldHVybiByZWdpc3RyYXRpb247XG5cdH1cblxuXHRwdWJsaWMgcmVnaXN0ZXJTaW5nbGV0b24oXG5cdFx0a2V5OiBzdHJpbmcgfCBzeW1ib2wgfCBDb25zdHJ1Y3RhYmxlIHwgb2JqZWN0LFxuXHRcdGluc3RhbmNlOiBvYmplY3QsXG5cdCk6IFNlcnZpY2VSZWdpc3RyYXRpb247XG5cdHB1YmxpYyByZWdpc3RlclNpbmdsZXRvbihrZXk6IHN0cmluZyB8IHN5bWJvbCwgdHlwZTogQ29uc3RydWN0YWJsZSk6IFNlcnZpY2VSZWdpc3RyYXRpb247XG5cdHB1YmxpYyByZWdpc3RlclNpbmdsZXRvbih0eXBlOiBDb25zdHJ1Y3RhYmxlKTogU2VydmljZVJlZ2lzdHJhdGlvbjtcblx0cHVibGljIHJlZ2lzdGVyU2luZ2xldG9uKFxuXHRcdHR5cGVPcktleTogc3RyaW5nIHwgc3ltYm9sIHwgQ29uc3RydWN0YWJsZSxcblx0XHR0eXBlT3JJbnN0YW5jZT86IENvbnN0cnVjdGFibGUgfCBvYmplY3QsXG5cdCkge1xuXHRcdGNvbnN0IHJlZ2lzdHJhdGlvbiA9IHRoaXMuc2VydmljZVJlZ2lzdHJ5LnJlZ2lzdGVyVHlwZShTY29wZXMuc2luZ2xldG9uLCB7XG5cdFx0XHR0eXBlT3JLZXksXG5cdFx0XHR0eXBlT3JJbnN0YW5jZSxcblx0XHR9KTtcblx0XHRyZXR1cm4gcmVnaXN0cmF0aW9uO1xuXHR9XG5cblx0cHVibGljIHJlZ2lzdGVyUmVxdWVzdFNjb3BlZDxUPih0eXBlOiAoKSA9PiBUKTogU2VydmljZVJlZ2lzdHJhdGlvbjtcblx0cHVibGljIHJlZ2lzdGVyUmVxdWVzdFNjb3BlZDxUPihrZXk6IHN0cmluZyB8IHN5bWJvbCwgdHlwZTogKCkgPT4gVCk6IFNlcnZpY2VSZWdpc3RyYXRpb247XG5cdHB1YmxpYyByZWdpc3RlclJlcXVlc3RTY29wZWQoa2V5OiBzdHJpbmcgfCBzeW1ib2wsIHR5cGU6IENvbnN0cnVjdGFibGUpOiBTZXJ2aWNlUmVnaXN0cmF0aW9uO1xuXHRwdWJsaWMgcmVnaXN0ZXJSZXF1ZXN0U2NvcGVkKHR5cGU6IENvbnN0cnVjdGFibGUpOiBTZXJ2aWNlUmVnaXN0cmF0aW9uO1xuXHRwdWJsaWMgcmVnaXN0ZXJSZXF1ZXN0U2NvcGVkKFxuXHRcdHR5cGVPcktleTogc3RyaW5nIHwgc3ltYm9sIHwgQ29uc3RydWN0YWJsZSB8IEZ1bmN0aW9uVHlwZSxcblx0XHR0eXBlPzogQ29uc3RydWN0YWJsZSB8IEZ1bmN0aW9uVHlwZSxcblx0KSB7XG5cdFx0Y29uc3QgcmVnaXN0cmF0aW9uID0gdGhpcy5zZXJ2aWNlUmVnaXN0cnkucmVnaXN0ZXJUeXBlKFNjb3Blcy5yZXF1ZXN0LCB7XG5cdFx0XHR0eXBlT3JLZXksXG5cdFx0XHR0eXBlT3JJbnN0YW5jZTogdHlwZSxcblx0XHR9KTtcblx0XHRyZXR1cm4gcmVnaXN0cmF0aW9uO1xuXHR9XG5cblx0cHVibGljIGJ1aWxkKCk6IENydWNpYmxlIHtcblx0XHRyZXR1cm4gbmV3IENydWNpYmxlKHsgc2VydmljZVJlZ2lzdHJ5OiB0aGlzLnNlcnZpY2VSZWdpc3RyeSB9KTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIlNjb3BlcyIsIkNydWNpYmxlIiwiU2VydmljZVJlZ2lzdHJ5IiwiQ3J1Y2libGVCdWlsZGVyIiwic2VydmljZVJlZ2lzdHJ5Iiwib3B0aW9ucyIsInJlZ2lzdGVyVHlwZSIsInR5cGUiLCJzY29wZSIsInRyYW5zaWVudCIsInJlZ2lzdHJhdGlvbiIsInR5cGVPcktleSIsIm5hbWUiLCJ0eXBlT3JJbnN0YW5jZSIsInJlZ2lzdGVyVHlwZXMiLCJzY29wZU9yVHlwZSIsInR5cGVzIiwicmVnaXN0cmF0aW9ucyIsIkFycmF5Iiwib2YiLCJpc1Njb3BlIiwiYWxsVHlwZXMiLCJwdXNoIiwicmVnaXN0ZXJUcmFuc2llbnQiLCJyZWdpc3RlclNpbmdsZXRvbiIsInNpbmdsZXRvbiIsInJlZ2lzdGVyUmVxdWVzdFNjb3BlZCIsInJlcXVlc3QiLCJidWlsZCJdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBU0EsTUFBTSxRQUFRLGNBQWM7QUFHckMsU0FBU0MsUUFBUSxRQUFRLGdCQUFnQjtBQUN6QyxTQUFTQyxlQUFlLFFBQVEsd0JBQXdCO0FBTXhELE9BQU8sTUFBTUM7SUFDSkMsZ0JBQWlDO0lBQ3pDLFlBQW1CQyxPQUFpQyxDQUFFO1FBQ3JELElBQUksQ0FBQ0QsZUFBZSxHQUFHQyxTQUFTRCxtQkFBbUIsSUFBSUY7SUFDeEQ7SUFFT0ksYUFBYUMsSUFBbUIsRUFBRUMsUUFBZVIsT0FBT1MsU0FBUyxFQUFFO1FBQ3pFLE1BQU1DLGVBQWUsSUFBSSxDQUFDTixlQUFlLENBQUNFLFlBQVksQ0FBQ0UsT0FBTztZQUM3REcsV0FBV0osS0FBS0ssSUFBSTtZQUNwQkMsZ0JBQWdCTjtRQUNqQjtRQUNBLE9BQU9HO0lBQ1I7SUFJT0ksY0FDTkMsV0FBa0MsRUFDbEMsR0FBR0MsS0FBc0IsRUFDRDtRQUN4QixNQUFNQyxnQkFBZ0JDLE1BQU1DLEVBQUU7UUFFOUIsTUFBTUMsVUFBVSxPQUFPTCxnQkFBZ0I7UUFDdkMsTUFBTVAsUUFBUVksVUFBVUwsY0FBY2YsT0FBT1MsU0FBUztRQUN0RCxNQUFNWSxXQUFXRCxVQUFVSixRQUFRO1lBQUNEO2VBQWdCQztTQUFNO1FBQzFELEtBQUssTUFBTVQsUUFBUWMsU0FBVTtZQUM1QixNQUFNWCxlQUFlLElBQUksQ0FBQ0osWUFBWSxDQUFDQyxNQUFNQztZQUM3Q1MsY0FBY0ssSUFBSSxDQUFDWjtRQUNwQjtRQUVBLE9BQU9PO0lBQ1I7SUFPT00sa0JBQWtCWixTQUEwQyxFQUFFSixJQUFvQixFQUFFO1FBQzFGLE1BQU1HLGVBQWUsSUFBSSxDQUFDTixlQUFlLENBQUNFLFlBQVksQ0FBQ04sT0FBT1MsU0FBUyxFQUFFO1lBQ3hFRTtZQUNBRSxnQkFBZ0JOO1FBQ2pCO1FBQ0EsT0FBT0c7SUFDUjtJQVFPYyxrQkFDTmIsU0FBMEMsRUFDMUNFLGNBQXVDLEVBQ3RDO1FBQ0QsTUFBTUgsZUFBZSxJQUFJLENBQUNOLGVBQWUsQ0FBQ0UsWUFBWSxDQUFDTixPQUFPeUIsU0FBUyxFQUFFO1lBQ3hFZDtZQUNBRTtRQUNEO1FBQ0EsT0FBT0g7SUFDUjtJQU1PZ0Isc0JBQ05mLFNBQXlELEVBQ3pESixJQUFtQyxFQUNsQztRQUNELE1BQU1HLGVBQWUsSUFBSSxDQUFDTixlQUFlLENBQUNFLFlBQVksQ0FBQ04sT0FBTzJCLE9BQU8sRUFBRTtZQUN0RWhCO1lBQ0FFLGdCQUFnQk47UUFDakI7UUFDQSxPQUFPRztJQUNSO0lBRU9rQixRQUFrQjtRQUN4QixPQUFPLElBQUkzQixTQUFTO1lBQUVHLGlCQUFpQixJQUFJLENBQUNBLGVBQWU7UUFBQztJQUM3RDtBQUNEIn0=
|
|
@@ -8,7 +8,6 @@ export class Crucible {
|
|
|
8
8
|
key;
|
|
9
9
|
instances = new Map();
|
|
10
10
|
serviceRegistry;
|
|
11
|
-
parent;
|
|
12
11
|
rootScope;
|
|
13
12
|
scopes = new Map();
|
|
14
13
|
logger = scribe.logger(Crucible.name);
|
|
@@ -17,8 +16,7 @@ export class Crucible {
|
|
|
17
16
|
this.key = options?.key;
|
|
18
17
|
this.serviceRegistry = new ServiceRegistry(options?.serviceRegistry);
|
|
19
18
|
this.registerLifetimeScope();
|
|
20
|
-
this.
|
|
21
|
-
this.rootScope = options?.parent?.rootScope ?? this;
|
|
19
|
+
this.rootScope = options?.rootScope ?? this;
|
|
22
20
|
}
|
|
23
21
|
resolveMany(resolveRequest) {
|
|
24
22
|
const key = new RegistrationKey(resolveRequest);
|
|
@@ -44,41 +42,28 @@ export class Crucible {
|
|
|
44
42
|
return service;
|
|
45
43
|
}
|
|
46
44
|
beginScope(name) {
|
|
47
|
-
if (this.
|
|
48
|
-
throw new Error("This container has been disposed");
|
|
49
|
-
}
|
|
50
|
-
if (name != null && this.scopes.has(name)) {
|
|
45
|
+
if (this.scopes.has(name)) {
|
|
51
46
|
throw new DuplicateScopeError(`Cannot create duplicate scope. Scope with ${name} is already created and has not been disposed.`);
|
|
52
47
|
}
|
|
53
48
|
const scope = new Crucible({
|
|
54
49
|
key: name,
|
|
55
50
|
serviceRegistry: this.serviceRegistry,
|
|
56
|
-
|
|
51
|
+
rootScope: this
|
|
57
52
|
});
|
|
58
|
-
|
|
59
|
-
this.scopes.set(name, scope);
|
|
60
|
-
}
|
|
53
|
+
this.scopes.set(name, scope);
|
|
61
54
|
return scope;
|
|
62
55
|
}
|
|
63
56
|
[Symbol.dispose]() {
|
|
64
57
|
if (this.isDisposed) {
|
|
65
58
|
return;
|
|
66
59
|
}
|
|
67
|
-
this.
|
|
60
|
+
this.dispose();
|
|
68
61
|
}
|
|
69
|
-
|
|
70
|
-
if (this.isDisposed) {
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
await this.disposeAsync();
|
|
74
|
-
}
|
|
75
|
-
disposeSync() {
|
|
62
|
+
dispose() {
|
|
76
63
|
if (this.isDisposed) {
|
|
77
64
|
return;
|
|
78
65
|
}
|
|
79
66
|
this.isDisposed = true;
|
|
80
|
-
this.parent?.releaseScope(this.key);
|
|
81
|
-
this.scopes.clear();
|
|
82
67
|
for (const [, inst] of this.instances){
|
|
83
68
|
if (inst === this) {
|
|
84
69
|
continue;
|
|
@@ -86,24 +71,6 @@ export class Crucible {
|
|
|
86
71
|
inst[Symbol.dispose]?.();
|
|
87
72
|
}
|
|
88
73
|
}
|
|
89
|
-
async disposeAsync() {
|
|
90
|
-
if (this.isDisposed) {
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
this.isDisposed = true;
|
|
94
|
-
this.parent?.releaseScope(this.key);
|
|
95
|
-
this.scopes.clear();
|
|
96
|
-
for (const [, inst] of this.instances){
|
|
97
|
-
if (inst === this) {
|
|
98
|
-
continue;
|
|
99
|
-
}
|
|
100
|
-
if (Symbol.asyncDispose in inst) {
|
|
101
|
-
await inst[Symbol.asyncDispose]();
|
|
102
|
-
} else {
|
|
103
|
-
inst[Symbol.dispose]?.();
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
74
|
getRegistrationFrom(key) {
|
|
108
75
|
const registration = this.serviceRegistry.getRegistration(key.value);
|
|
109
76
|
return registration;
|
|
@@ -121,7 +88,7 @@ export class Crucible {
|
|
|
121
88
|
}
|
|
122
89
|
getOrCreateInstance(registration) {
|
|
123
90
|
if (this.isDisposed) {
|
|
124
|
-
throw new Error("This
|
|
91
|
+
throw new Error("This continer has been disposed");
|
|
125
92
|
}
|
|
126
93
|
const { key, type, isInstance } = registration;
|
|
127
94
|
const cacheKey = isInstance ? key.value : type;
|
|
@@ -155,18 +122,12 @@ export class Crucible {
|
|
|
155
122
|
}
|
|
156
123
|
return resolved;
|
|
157
124
|
}
|
|
158
|
-
releaseScope(name) {
|
|
159
|
-
if (name == null) {
|
|
160
|
-
return;
|
|
161
|
-
}
|
|
162
|
-
this.scopes.delete(name);
|
|
163
|
-
}
|
|
164
125
|
registerLifetimeScope() {
|
|
165
|
-
this.serviceRegistry.
|
|
126
|
+
this.serviceRegistry.registerType(Scopes.request, {
|
|
166
127
|
typeOrKey: LifetimeScopeToken,
|
|
167
128
|
typeOrInstance: this
|
|
168
129
|
});
|
|
169
130
|
}
|
|
170
131
|
}
|
|
171
132
|
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NydWNpYmxlL3NyYy9zZXJ2aWNlcy9jcnVjaWJsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHR0eXBlIENvbnN0cnVjdGFibGUsXG5cdHR5cGUgRnVuY3Rpb25UeXBlLFxuXHRnZXRNZXRhLFxuXHRpc0FycmF5VHlwZSxcblx0aXNDb25zdHJ1Y3RhYmxlLFxuXHRSZWZsZWN0aW9uTWV0YSxcbn0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9yZWZsZWN0aW9uXCI7XG5pbXBvcnQgeyBzY3JpYmUgfSBmcm9tIFwiQGRlY29oZXJlL3NjcmliZVwiO1xuaW1wb3J0IHsgQ3J1Y2libGVNZXRhLCBMaWZldGltZVNjb3BlVG9rZW4sIFNjb3BlcyB9IGZyb20gXCIuLi9jb25zdC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBJbmplY3Rpb25NZXRhZGF0YSB9IGZyb20gXCIuLi9kZWNvcmF0b3JzL2luamVjdC5kZWNvcmF0b3IuanNcIjtcbmltcG9ydCB7IFJlZ2lzdHJhdGlvbktleSB9IGZyb20gXCIuLi9tb2RlbHMvcmVnaXN0cmF0aW9uLWtleS5tb2RlbC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTZXJ2aWNlUmVnaXN0cmF0aW9uIH0gZnJvbSBcIi4uL21vZGVscy9zZXJ2aWNlLXJlZ2lzdHJhdGlvbi5tb2RlbC5qc1wiO1xuaW1wb3J0IHsgRHVwbGljYXRlU2NvcGVFcnJvciwgUmVzb2x2ZUVycm9yIH0gZnJvbSBcIi4uL3R5cGVzL2Vycm9ycy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBJQ29udGFpbmVyLCBMaWZldGltZVNjb3BlLCBSZXNvbHZlUmVxdWVzdCB9IGZyb20gXCIuLi90eXBlcy90eXBlcy5qc1wiO1xuaW1wb3J0IHsgU2VydmljZVJlZ2lzdHJ5IH0gZnJvbSBcIi4vc2VydmljZS1yZWdpc3RyeS5qc1wiO1xuXG50eXBlIENydWNpYmxlT3B0aW9ucyA9IHtcblx0a2V5Pzogc3RyaW5nO1xuXHRwYXJlbnQ/OiBDcnVjaWJsZTtcblx0c2VydmljZVJlZ2lzdHJ5OiBTZXJ2aWNlUmVnaXN0cnk7XG59O1xuXG5leHBvcnQgY2xhc3MgQ3J1Y2libGUgaW1wbGVtZW50cyBJQ29udGFpbmVyIHtcblx0cHVibGljIGtleTogc3RyaW5nO1xuXHRwcm90ZWN0ZWQgaW5zdGFuY2VzID0gbmV3IE1hcDx1bmtub3duLCBvYmplY3Q+KCk7XG5cdHByaXZhdGUgc2VydmljZVJlZ2lzdHJ5OiBTZXJ2aWNlUmVnaXN0cnk7XG5cdHByaXZhdGUgcGFyZW50PzogQ3J1Y2libGU7XG5cdHByaXZhdGUgcm9vdFNjb3BlOiBDcnVjaWJsZTtcblx0cHJpdmF0ZSBzY29wZXMgPSBuZXcgTWFwPHN0cmluZywgTGlmZXRpbWVTY29wZT4oKTtcblx0cHJpdmF0ZSBsb2dnZXIgPSBzY3JpYmUubG9nZ2VyKENydWNpYmxlLm5hbWUpO1xuXHRwcml2YXRlIGlzRGlzcG9zZWQgPSBmYWxzZTtcblx0cHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBDcnVjaWJsZU9wdGlvbnMpIHtcblx0XHR0aGlzLmtleSA9IG9wdGlvbnM/LmtleTtcblx0XHR0aGlzLnNlcnZpY2VSZWdpc3RyeSA9IG5ldyBTZXJ2aWNlUmVnaXN0cnkob3B0aW9ucz8uc2VydmljZVJlZ2lzdHJ5KTtcblx0XHR0aGlzLnJlZ2lzdGVyTGlmZXRpbWVTY29wZSgpO1xuXHRcdHRoaXMucGFyZW50ID0gb3B0aW9ucz8ucGFyZW50O1xuXHRcdHRoaXMucm9vdFNjb3BlID0gb3B0aW9ucz8ucGFyZW50Py5yb290U2NvcGUgPz8gdGhpcztcblx0fVxuXG5cdHB1YmxpYyByZXNvbHZlTWFueTxUIGV4dGVuZHMgb2JqZWN0ID0gb2JqZWN0PihyZXNvbHZlUmVxdWVzdDogUmVzb2x2ZVJlcXVlc3Q8VD4pOiBUW10ge1xuXHRcdGNvbnN0IGtleSA9IG5ldyBSZWdpc3RyYXRpb25LZXkocmVzb2x2ZVJlcXVlc3QpO1xuXHRcdGNvbnN0IHJlZ2lzdHJhdGlvbnMgPSB0aGlzLmdldFJlZ2lzdHJhdGlvbkZyb20oa2V5KSA/PyBbXTtcblxuXHRcdGNvbnN0IHNlcnZpY2VzID0gQXJyYXkub2Y8VD4oKTtcblx0XHRmb3IgKGNvbnN0IHJlZ2lzdHJhdGlvbiBvZiByZWdpc3RyYXRpb25zKSB7XG5cdFx0XHRjb25zdCBzZXJ2aWNlID0gdGhpcy5yZXNvbHZlUmVnaXN0cmF0aW9uPFQ+KHJlZ2lzdHJhdGlvbik7XG5cdFx0XHRzZXJ2aWNlcy5wdXNoKHNlcnZpY2UpO1xuXHRcdH1cblx0XHRyZXR1cm4gc2VydmljZXM7XG5cdH1cblxuXHRwdWJsaWMgcmVzb2x2ZTxUIGV4dGVuZHMgb2JqZWN0IHwgb2JqZWN0W10+KHJlc29sdmVSZXF1ZXN0OiBSZXNvbHZlUmVxdWVzdDxUPik6IFQge1xuXHRcdGNvbnN0IGtleSA9IG5ldyBSZWdpc3RyYXRpb25LZXkocmVzb2x2ZVJlcXVlc3QpO1xuXHRcdGNvbnN0IHJlZ2lzdHJhdGlvbiA9IHRoaXMuZ2V0UmVnaXN0cmF0aW9uRnJvbShrZXkpO1xuXHRcdGlmIChyZWdpc3RyYXRpb24gPT0gbnVsbCkge1xuXHRcdFx0dGhpcy5sb2dnZXIud2FybihgQ2Fubm90IHJlc29sdmUgZGVwZW5kZW5jeSAke2tleS50b1N0cmluZygpfWApO1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXG5cdFx0aWYgKHJlZ2lzdHJhdGlvbi5sZW5ndGggPiAxKSB7XG5cdFx0XHR0aHJvdyBuZXcgUmVzb2x2ZUVycm9yKFxuXHRcdFx0XHRgVGhlcmUgYXJlIG11bHRpcGxlIHNlcnZpY2VzIHJlZ2lzdGVyZWQgd2l0aCBrZXkgJHtrZXkudG9TdHJpbmcoKX0uIFVzZSByZXNvbHZlTWFueSB0byByZXNvbHZlIGFsbCBpbXBsZW1lbnRhdGlvbnMuYCxcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgc2VydmljZSA9IHRoaXMucmVzb2x2ZVJlZ2lzdHJhdGlvbjxUPihyZWdpc3RyYXRpb25bMF0pO1xuXHRcdHJldHVybiBzZXJ2aWNlO1xuXHR9XG5cblx0cHVibGljIGJlZ2luU2NvcGUobmFtZT86IHN0cmluZykge1xuXHRcdGlmICh0aGlzLmlzRGlzcG9zZWQpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIlRoaXMgY29udGFpbmVyIGhhcyBiZWVuIGRpc3Bvc2VkXCIpO1xuXHRcdH1cblx0XHRpZiAobmFtZSAhPSBudWxsICYmIHRoaXMuc2NvcGVzLmhhcyhuYW1lKSkge1xuXHRcdFx0dGhyb3cgbmV3IER1cGxpY2F0ZVNjb3BlRXJyb3IoXG5cdFx0XHRcdGBDYW5ub3QgY3JlYXRlIGR1cGxpY2F0ZSBzY29wZS4gU2NvcGUgd2l0aCAke25hbWV9IGlzIGFscmVhZHkgY3JlYXRlZCBhbmQgaGFzIG5vdCBiZWVuIGRpc3Bvc2VkLmAsXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdGNvbnN0IHNjb3BlID0gbmV3IENydWNpYmxlKHtcblx0XHRcdGtleTogbmFtZSxcblx0XHRcdHNlcnZpY2VSZWdpc3RyeTogdGhpcy5zZXJ2aWNlUmVnaXN0cnksXG5cdFx0XHRwYXJlbnQ6IHRoaXMsXG5cdFx0fSk7XG5cblx0XHRpZiAobmFtZSAhPSBudWxsKSB7XG5cdFx0XHR0aGlzLnNjb3Blcy5zZXQobmFtZSwgc2NvcGUpO1xuXHRcdH1cblx0XHRyZXR1cm4gc2NvcGU7XG5cdH1cblxuXHRwdWJsaWMgW1N5bWJvbC5kaXNwb3NlXSgpIHtcblx0XHRpZiAodGhpcy5pc0Rpc3Bvc2VkKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRoaXMuZGlzcG9zZVN5bmMoKTtcblx0fVxuXG5cdHB1YmxpYyBhc3luYyBbU3ltYm9sLmFzeW5jRGlzcG9zZV0oKSB7XG5cdFx0aWYgKHRoaXMuaXNEaXNwb3NlZCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRhd2FpdCB0aGlzLmRpc3Bvc2VBc3luYygpO1xuXHR9XG5cblx0cHJpdmF0ZSBkaXNwb3NlU3luYygpIHtcblx0XHRpZiAodGhpcy5pc0Rpc3Bvc2VkKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5pc0Rpc3Bvc2VkID0gdHJ1ZTtcblx0XHR0aGlzLnBhcmVudD8ucmVsZWFzZVNjb3BlKHRoaXMua2V5KTtcblx0XHR0aGlzLnNjb3Blcy5jbGVhcigpO1xuXHRcdGZvciAoY29uc3QgWywgaW5zdF0gb2YgdGhpcy5pbnN0YW5jZXMpIHtcblx0XHRcdGlmIChpbnN0ID09PSB0aGlzKSB7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXHRcdFx0aW5zdFtTeW1ib2wuZGlzcG9zZV0/LigpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgZGlzcG9zZUFzeW5jKCkge1xuXHRcdGlmICh0aGlzLmlzRGlzcG9zZWQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLmlzRGlzcG9zZWQgPSB0cnVlO1xuXHRcdHRoaXMucGFyZW50Py5yZWxlYXNlU2NvcGUodGhpcy5rZXkpO1xuXHRcdHRoaXMuc2NvcGVzLmNsZWFyKCk7XG5cdFx0Zm9yIChjb25zdCBbLCBpbnN0XSBvZiB0aGlzLmluc3RhbmNlcykge1xuXHRcdFx0aWYgKGluc3QgPT09IHRoaXMpIHtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRpZiAoU3ltYm9sLmFzeW5jRGlzcG9zZSBpbiBpbnN0KSB7XG5cdFx0XHRcdGF3YWl0IChpbnN0IGFzIEFzeW5jRGlzcG9zYWJsZSlbU3ltYm9sLmFzeW5jRGlzcG9zZV0oKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdChpbnN0IGFzIFBhcnRpYWw8RGlzcG9zYWJsZT4pW1N5bWJvbC5kaXNwb3NlXT8uKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBnZXRSZWdpc3RyYXRpb25Gcm9tKGtleTogUmVnaXN0cmF0aW9uS2V5KSB7XG5cdFx0Y29uc3QgcmVnaXN0cmF0aW9uID0gdGhpcy5zZXJ2aWNlUmVnaXN0cnkuZ2V0UmVnaXN0cmF0aW9uKGtleS52YWx1ZSk7XG5cdFx0cmV0dXJuIHJlZ2lzdHJhdGlvbjtcblx0fVxuXG5cdHByaXZhdGUgcmVzb2x2ZVJlZ2lzdHJhdGlvbjxUIGV4dGVuZHMgb2JqZWN0PihyZWdpc3RyYXRpb246IFNlcnZpY2VSZWdpc3RyYXRpb24pOiBUIHtcblx0XHRjb25zdCB7IHNjb3BlIH0gPSByZWdpc3RyYXRpb247XG5cdFx0c3dpdGNoIChzY29wZSkge1xuXHRcdFx0Y2FzZSBTY29wZXMudHJhbnNpZW50OlxuXHRcdFx0XHRyZXR1cm4gdGhpcy5jcmVhdGVJbnN0YW5jZShyZWdpc3RyYXRpb24pO1xuXHRcdFx0Y2FzZSBTY29wZXMuc2luZ2xldG9uOlxuXHRcdFx0XHRyZXR1cm4gdGhpcy5yb290U2NvcGUuZ2V0T3JDcmVhdGVJbnN0YW5jZShyZWdpc3RyYXRpb24pO1xuXHRcdFx0Y2FzZSBTY29wZXMucmVxdWVzdDpcblx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0T3JDcmVhdGVJbnN0YW5jZShyZWdpc3RyYXRpb24pO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgZ2V0T3JDcmVhdGVJbnN0YW5jZTxUIGV4dGVuZHMgb2JqZWN0PihyZWdpc3RyYXRpb246IFNlcnZpY2VSZWdpc3RyYXRpb24pOiBUIHtcblx0XHRpZiAodGhpcy5pc0Rpc3Bvc2VkKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIGNvbnRhaW5lciBoYXMgYmVlbiBkaXNwb3NlZFwiKTtcblx0XHR9XG5cdFx0Y29uc3QgeyBrZXksIHR5cGUsIGlzSW5zdGFuY2UgfSA9IHJlZ2lzdHJhdGlvbjtcblx0XHRjb25zdCBjYWNoZUtleSA9IGlzSW5zdGFuY2UgPyBrZXkudmFsdWUgOiB0eXBlO1xuXHRcdGNvbnN0IGV4aXN0aW5nSW5zdGFuY2UgPSB0aGlzLmluc3RhbmNlcy5nZXQoY2FjaGVLZXkpO1xuXHRcdGlmIChleGlzdGluZ0luc3RhbmNlICE9IG51bGwpIHtcblx0XHRcdHJldHVybiBleGlzdGluZ0luc3RhbmNlIGFzIFQ7XG5cdFx0fVxuXG5cdFx0Y29uc3QgaW5zdGFuY2UgPSBpc0luc3RhbmNlID8gKHR5cGUgYXMgVCkgOiB0aGlzLmNyZWF0ZUluc3RhbmNlPFQ+KHJlZ2lzdHJhdGlvbik7XG5cdFx0dGhpcy5pbnN0YW5jZXMuc2V0KGNhY2hlS2V5LCBpbnN0YW5jZSk7XG5cdFx0cmV0dXJuIGluc3RhbmNlO1xuXHR9XG5cblx0cHJpdmF0ZSBjcmVhdGVJbnN0YW5jZTxUIGV4dGVuZHMgb2JqZWN0PihyZWdpc3RyYXRpb246IFNlcnZpY2VSZWdpc3RyYXRpb24pOiBUIHtcblx0XHRjb25zdCB0eXBlID0gcmVnaXN0cmF0aW9uLnR5cGUgYXMgQ29uc3RydWN0YWJsZSB8IEZ1bmN0aW9uVHlwZTtcblx0XHRjb25zdCBjYW5Db25zdHJ1Y3QgPSBpc0NvbnN0cnVjdGFibGUodHlwZSk7XG5cdFx0Y29uc3QgZGVwcyA9IHRoaXMucmVzb2x2ZURlcGVuZGVuY2llcyh0eXBlKTtcblx0XHRjb25zdCBpbnN0ID0gKGNhbkNvbnN0cnVjdCA/IG5ldyB0eXBlKC4uLmRlcHMpIDogdHlwZSgpKSBhcyBUO1xuXHRcdHJldHVybiBpbnN0O1xuXHR9XG5cblx0cHJpdmF0ZSByZXNvbHZlRGVwZW5kZW5jaWVzKHR5cGU6IENvbnN0cnVjdGFibGUgfCBGdW5jdGlvblR5cGUpOiB1bmtub3duW10ge1xuXHRcdGNvbnN0IHBhcmFtcyA9IGdldE1ldGE8QXJyYXk8Q29uc3RydWN0YWJsZT4+KFJlZmxlY3Rpb25NZXRhLnBhcmFtdHlwZXMsIHR5cGUpID8/IFtdO1xuXG5cdFx0Y29uc3QgaW5qZWN0VG9rZW5zID1cblx0XHRcdGdldE1ldGE8SW5qZWN0aW9uTWV0YWRhdGE+KENydWNpYmxlTWV0YS5pbmplY3R0b2tlbiwgdHlwZSkgPz8gbmV3IE1hcCgpO1xuXG5cdFx0Ly9UT0RPOiBwdXQgYSB0cnkgY2F0Y2ggaGVyZSBzbyB3ZSBjYW4gdGhyb3cgdGhlIG5hbWUgb2YgdGhlIHNlcnZpY2Vcblx0XHRsZXQgcmVzb2x2ZWQgPSBbXTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHBhcmFtcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0Y29uc3QgdG9rZW4gPSBpbmplY3RUb2tlbnMuZ2V0KGkpPy5rZXkgPz8gcGFyYW1zW2ldLm5hbWU7XG5cdFx0XHRjb25zdCBkZXAgPSBpc0FycmF5VHlwZShwYXJhbXNbaV0pID8gdGhpcy5yZXNvbHZlTWFueSh0b2tlbikgOiB0aGlzLnJlc29sdmUodG9rZW4pO1xuXHRcdFx0cmVzb2x2ZWQgPSBbLi4ucmVzb2x2ZWQsIGRlcF07XG5cdFx0fVxuXHRcdHJldHVybiByZXNvbHZlZDtcblx0fVxuXG5cdHByaXZhdGUgcmVsZWFzZVNjb3BlKG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuXHRcdGlmIChuYW1lID09IG51bGwpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0dGhpcy5zY29wZXMuZGVsZXRlKG5hbWUpO1xuXHR9XG5cblx0cHJpdmF0ZSByZWdpc3RlckxpZmV0aW1lU2NvcGUoKSB7XG5cdFx0dGhpcy5zZXJ2aWNlUmVnaXN0cnkucmVwbGFjZVR5cGUoU2NvcGVzLnJlcXVlc3QsIHtcblx0XHRcdHR5cGVPcktleTogTGlmZXRpbWVTY29wZVRva2VuLFxuXHRcdFx0dHlwZU9ySW5zdGFuY2U6IHRoaXMsXG5cdFx0fSk7XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJnZXRNZXRhIiwiaXNBcnJheVR5cGUiLCJpc0NvbnN0cnVjdGFibGUiLCJSZWZsZWN0aW9uTWV0YSIsInNjcmliZSIsIkNydWNpYmxlTWV0YSIsIkxpZmV0aW1lU2NvcGVUb2tlbiIsIlNjb3BlcyIsIlJlZ2lzdHJhdGlvbktleSIsIkR1cGxpY2F0ZVNjb3BlRXJyb3IiLCJSZXNvbHZlRXJyb3IiLCJTZXJ2aWNlUmVnaXN0cnkiLCJDcnVjaWJsZSIsImtleSIsImluc3RhbmNlcyIsIk1hcCIsInNlcnZpY2VSZWdpc3RyeSIsInBhcmVudCIsInJvb3RTY29wZSIsInNjb3BlcyIsImxvZ2dlciIsIm5hbWUiLCJpc0Rpc3Bvc2VkIiwib3B0aW9ucyIsInJlZ2lzdGVyTGlmZXRpbWVTY29wZSIsInJlc29sdmVNYW55IiwicmVzb2x2ZVJlcXVlc3QiLCJyZWdpc3RyYXRpb25zIiwiZ2V0UmVnaXN0cmF0aW9uRnJvbSIsInNlcnZpY2VzIiwiQXJyYXkiLCJvZiIsInJlZ2lzdHJhdGlvbiIsInNlcnZpY2UiLCJyZXNvbHZlUmVnaXN0cmF0aW9uIiwicHVzaCIsInJlc29sdmUiLCJ3YXJuIiwidG9TdHJpbmciLCJsZW5ndGgiLCJiZWdpblNjb3BlIiwiRXJyb3IiLCJoYXMiLCJzY29wZSIsInNldCIsIlN5bWJvbCIsImRpc3Bvc2UiLCJkaXNwb3NlU3luYyIsImFzeW5jRGlzcG9zZSIsImRpc3Bvc2VBc3luYyIsInJlbGVhc2VTY29wZSIsImNsZWFyIiwiaW5zdCIsImdldFJlZ2lzdHJhdGlvbiIsInZhbHVlIiwidHJhbnNpZW50IiwiY3JlYXRlSW5zdGFuY2UiLCJzaW5nbGV0b24iLCJnZXRPckNyZWF0ZUluc3RhbmNlIiwicmVxdWVzdCIsInR5cGUiLCJpc0luc3RhbmNlIiwiY2FjaGVLZXkiLCJleGlzdGluZ0luc3RhbmNlIiwiZ2V0IiwiaW5zdGFuY2UiLCJjYW5Db25zdHJ1Y3QiLCJkZXBzIiwicmVzb2x2ZURlcGVuZGVuY2llcyIsInBhcmFtcyIsInBhcmFtdHlwZXMiLCJpbmplY3RUb2tlbnMiLCJpbmplY3R0b2tlbiIsInJlc29sdmVkIiwiaSIsInRva2VuIiwiZGVwIiwiZGVsZXRlIiwicmVwbGFjZVR5cGUiLCJ0eXBlT3JLZXkiLCJ0eXBlT3JJbnN0YW5jZSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FHQ0EsT0FBTyxFQUNQQyxXQUFXLEVBQ1hDLGVBQWUsRUFDZkMsY0FBYyxRQUNSLDZCQUE2QjtBQUNwQyxTQUFTQyxNQUFNLFFBQVEsbUJBQW1CO0FBQzFDLFNBQVNDLFlBQVksRUFBRUMsa0JBQWtCLEVBQUVDLE1BQU0sUUFBUSxjQUFjO0FBRXZFLFNBQVNDLGVBQWUsUUFBUSxzQ0FBc0M7QUFFdEUsU0FBU0MsbUJBQW1CLEVBQUVDLFlBQVksUUFBUSxxQkFBcUI7QUFFdkUsU0FBU0MsZUFBZSxRQUFRLHdCQUF3QjtBQVF4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
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NydWNpYmxlL3NyYy9zZXJ2aWNlcy9jcnVjaWJsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHR0eXBlIENvbnN0cnVjdGFibGUsXG5cdHR5cGUgRnVuY3Rpb25UeXBlLFxuXHRnZXRNZXRhLFxuXHRpc0FycmF5VHlwZSxcblx0aXNDb25zdHJ1Y3RhYmxlLFxuXHRSZWZsZWN0aW9uTWV0YSxcbn0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9yZWZsZWN0aW9uXCI7XG5pbXBvcnQgeyBzY3JpYmUgfSBmcm9tIFwiQGRlY29oZXJlL3NjcmliZVwiO1xuaW1wb3J0IHsgQ3J1Y2libGVNZXRhLCBMaWZldGltZVNjb3BlVG9rZW4sIFNjb3BlcyB9IGZyb20gXCIuLi9jb25zdC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBJbmplY3Rpb25NZXRhZGF0YSB9IGZyb20gXCIuLi9kZWNvcmF0b3JzL2luamVjdC5kZWNvcmF0b3IuanNcIjtcbmltcG9ydCB7IFJlZ2lzdHJhdGlvbktleSB9IGZyb20gXCIuLi9tb2RlbHMvcmVnaXN0cmF0aW9uLWtleS5tb2RlbC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTZXJ2aWNlUmVnaXN0cmF0aW9uIH0gZnJvbSBcIi4uL21vZGVscy9zZXJ2aWNlLXJlZ2lzdHJhdGlvbi5tb2RlbC5qc1wiO1xuaW1wb3J0IHsgRHVwbGljYXRlU2NvcGVFcnJvciwgUmVzb2x2ZUVycm9yIH0gZnJvbSBcIi4uL3R5cGVzL2Vycm9ycy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBJQ29udGFpbmVyLCBMaWZldGltZVNjb3BlLCBSZXNvbHZlUmVxdWVzdCB9IGZyb20gXCIuLi90eXBlcy90eXBlcy5qc1wiO1xuaW1wb3J0IHsgU2VydmljZVJlZ2lzdHJ5IH0gZnJvbSBcIi4vc2VydmljZS1yZWdpc3RyeS5qc1wiO1xuXG50eXBlIENydWNpYmxlT3B0aW9ucyA9IHtcblx0a2V5Pzogc3RyaW5nO1xuXHRyb290U2NvcGU/OiBDcnVjaWJsZTtcblx0c2VydmljZVJlZ2lzdHJ5OiBTZXJ2aWNlUmVnaXN0cnk7XG59O1xuXG5leHBvcnQgY2xhc3MgQ3J1Y2libGUgaW1wbGVtZW50cyBJQ29udGFpbmVyIHtcblx0cHVibGljIGtleTogc3RyaW5nO1xuXHRwcm90ZWN0ZWQgaW5zdGFuY2VzID0gbmV3IE1hcDx1bmtub3duLCBvYmplY3Q+KCk7XG5cdHByaXZhdGUgc2VydmljZVJlZ2lzdHJ5OiBTZXJ2aWNlUmVnaXN0cnk7XG5cdHByaXZhdGUgcm9vdFNjb3BlOiBDcnVjaWJsZTtcblx0cHJpdmF0ZSBzY29wZXMgPSBuZXcgTWFwPHN0cmluZywgTGlmZXRpbWVTY29wZT4oKTtcblx0cHJpdmF0ZSBsb2dnZXIgPSBzY3JpYmUubG9nZ2VyKENydWNpYmxlLm5hbWUpO1xuXHRwcml2YXRlIGlzRGlzcG9zZWQgPSBmYWxzZTtcblx0cHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBDcnVjaWJsZU9wdGlvbnMpIHtcblx0XHR0aGlzLmtleSA9IG9wdGlvbnM/LmtleTtcblx0XHR0aGlzLnNlcnZpY2VSZWdpc3RyeSA9IG5ldyBTZXJ2aWNlUmVnaXN0cnkob3B0aW9ucz8uc2VydmljZVJlZ2lzdHJ5KTtcblx0XHR0aGlzLnJlZ2lzdGVyTGlmZXRpbWVTY29wZSgpO1xuXHRcdHRoaXMucm9vdFNjb3BlID0gb3B0aW9ucz8ucm9vdFNjb3BlID8/IHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgcmVzb2x2ZU1hbnk8VCBleHRlbmRzIG9iamVjdCA9IG9iamVjdD4ocmVzb2x2ZVJlcXVlc3Q6IFJlc29sdmVSZXF1ZXN0PFQ+KTogVFtdIHtcblx0XHRjb25zdCBrZXkgPSBuZXcgUmVnaXN0cmF0aW9uS2V5KHJlc29sdmVSZXF1ZXN0KTtcblx0XHRjb25zdCByZWdpc3RyYXRpb25zID0gdGhpcy5nZXRSZWdpc3RyYXRpb25Gcm9tKGtleSkgPz8gW107XG5cblx0XHRjb25zdCBzZXJ2aWNlcyA9IEFycmF5Lm9mPFQ+KCk7XG5cdFx0Zm9yIChjb25zdCByZWdpc3RyYXRpb24gb2YgcmVnaXN0cmF0aW9ucykge1xuXHRcdFx0Y29uc3Qgc2VydmljZSA9IHRoaXMucmVzb2x2ZVJlZ2lzdHJhdGlvbjxUPihyZWdpc3RyYXRpb24pO1xuXHRcdFx0c2VydmljZXMucHVzaChzZXJ2aWNlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHNlcnZpY2VzO1xuXHR9XG5cblx0cHVibGljIHJlc29sdmU8VCBleHRlbmRzIG9iamVjdCB8IG9iamVjdFtdPihyZXNvbHZlUmVxdWVzdDogUmVzb2x2ZVJlcXVlc3Q8VD4pOiBUIHtcblx0XHRjb25zdCBrZXkgPSBuZXcgUmVnaXN0cmF0aW9uS2V5KHJlc29sdmVSZXF1ZXN0KTtcblx0XHRjb25zdCByZWdpc3RyYXRpb24gPSB0aGlzLmdldFJlZ2lzdHJhdGlvbkZyb20oa2V5KTtcblx0XHRpZiAocmVnaXN0cmF0aW9uID09IG51bGwpIHtcblx0XHRcdHRoaXMubG9nZ2VyLndhcm4oYENhbm5vdCByZXNvbHZlIGRlcGVuZGVuY3kgJHtrZXkudG9TdHJpbmcoKX1gKTtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblxuXHRcdGlmIChyZWdpc3RyYXRpb24ubGVuZ3RoID4gMSkge1xuXHRcdFx0dGhyb3cgbmV3IFJlc29sdmVFcnJvcihcblx0XHRcdFx0YFRoZXJlIGFyZSBtdWx0aXBsZSBzZXJ2aWNlcyByZWdpc3RlcmVkIHdpdGgga2V5ICR7a2V5LnRvU3RyaW5nKCl9LiBVc2UgcmVzb2x2ZU1hbnkgdG8gcmVzb2x2ZSBhbGwgaW1wbGVtZW50YXRpb25zLmAsXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdGNvbnN0IHNlcnZpY2UgPSB0aGlzLnJlc29sdmVSZWdpc3RyYXRpb248VD4ocmVnaXN0cmF0aW9uWzBdKTtcblx0XHRyZXR1cm4gc2VydmljZTtcblx0fVxuXG5cdHB1YmxpYyBiZWdpblNjb3BlKG5hbWU/OiBzdHJpbmcpIHtcblx0XHRpZiAodGhpcy5zY29wZXMuaGFzKG5hbWUpKSB7XG5cdFx0XHR0aHJvdyBuZXcgRHVwbGljYXRlU2NvcGVFcnJvcihcblx0XHRcdFx0YENhbm5vdCBjcmVhdGUgZHVwbGljYXRlIHNjb3BlLiBTY29wZSB3aXRoICR7bmFtZX0gaXMgYWxyZWFkeSBjcmVhdGVkIGFuZCBoYXMgbm90IGJlZW4gZGlzcG9zZWQuYCxcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgc2NvcGUgPSBuZXcgQ3J1Y2libGUoe1xuXHRcdFx0a2V5OiBuYW1lLFxuXHRcdFx0c2VydmljZVJlZ2lzdHJ5OiB0aGlzLnNlcnZpY2VSZWdpc3RyeSxcblx0XHRcdHJvb3RTY29wZTogdGhpcyxcblx0XHR9KTtcblxuXHRcdHRoaXMuc2NvcGVzLnNldChuYW1lLCBzY29wZSk7XG5cdFx0cmV0dXJuIHNjb3BlO1xuXHR9XG5cblx0cHVibGljIFtTeW1ib2wuZGlzcG9zZV0oKSB7XG5cdFx0aWYgKHRoaXMuaXNEaXNwb3NlZCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0aGlzLmRpc3Bvc2UoKTtcblx0fVxuXG5cdHByaXZhdGUgZGlzcG9zZSgpIHtcblx0XHRpZiAodGhpcy5pc0Rpc3Bvc2VkKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5pc0Rpc3Bvc2VkID0gdHJ1ZTtcblx0XHRmb3IgKGNvbnN0IFssIGluc3RdIG9mIHRoaXMuaW5zdGFuY2VzKSB7XG5cdFx0XHRpZiAoaW5zdCA9PT0gdGhpcykge1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblx0XHRcdGluc3RbU3ltYm9sLmRpc3Bvc2VdPy4oKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGdldFJlZ2lzdHJhdGlvbkZyb20oa2V5OiBSZWdpc3RyYXRpb25LZXkpIHtcblx0XHRjb25zdCByZWdpc3RyYXRpb24gPSB0aGlzLnNlcnZpY2VSZWdpc3RyeS5nZXRSZWdpc3RyYXRpb24oa2V5LnZhbHVlKTtcblx0XHRyZXR1cm4gcmVnaXN0cmF0aW9uO1xuXHR9XG5cblx0cHJpdmF0ZSByZXNvbHZlUmVnaXN0cmF0aW9uPFQgZXh0ZW5kcyBvYmplY3Q+KHJlZ2lzdHJhdGlvbjogU2VydmljZVJlZ2lzdHJhdGlvbik6IFQge1xuXHRcdGNvbnN0IHsgc2NvcGUgfSA9IHJlZ2lzdHJhdGlvbjtcblx0XHRzd2l0Y2ggKHNjb3BlKSB7XG5cdFx0XHRjYXNlIFNjb3Blcy50cmFuc2llbnQ6XG5cdFx0XHRcdHJldHVybiB0aGlzLmNyZWF0ZUluc3RhbmNlKHJlZ2lzdHJhdGlvbik7XG5cdFx0XHRjYXNlIFNjb3Blcy5zaW5nbGV0b246XG5cdFx0XHRcdHJldHVybiB0aGlzLnJvb3RTY29wZS5nZXRPckNyZWF0ZUluc3RhbmNlKHJlZ2lzdHJhdGlvbik7XG5cdFx0XHRjYXNlIFNjb3Blcy5yZXF1ZXN0OlxuXHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRPckNyZWF0ZUluc3RhbmNlKHJlZ2lzdHJhdGlvbik7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBnZXRPckNyZWF0ZUluc3RhbmNlPFQgZXh0ZW5kcyBvYmplY3Q+KHJlZ2lzdHJhdGlvbjogU2VydmljZVJlZ2lzdHJhdGlvbik6IFQge1xuXHRcdGlmICh0aGlzLmlzRGlzcG9zZWQpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIlRoaXMgY29udGluZXIgaGFzIGJlZW4gZGlzcG9zZWRcIik7XG5cdFx0fVxuXHRcdGNvbnN0IHsga2V5LCB0eXBlLCBpc0luc3RhbmNlIH0gPSByZWdpc3RyYXRpb247XG5cdFx0Y29uc3QgY2FjaGVLZXkgPSBpc0luc3RhbmNlID8ga2V5LnZhbHVlIDogdHlwZTtcblx0XHRjb25zdCBleGlzdGluZ0luc3RhbmNlID0gdGhpcy5pbnN0YW5jZXMuZ2V0KGNhY2hlS2V5KTtcblx0XHRpZiAoZXhpc3RpbmdJbnN0YW5jZSAhPSBudWxsKSB7XG5cdFx0XHRyZXR1cm4gZXhpc3RpbmdJbnN0YW5jZSBhcyBUO1xuXHRcdH1cblxuXHRcdGNvbnN0IGluc3RhbmNlID0gaXNJbnN0YW5jZSA/ICh0eXBlIGFzIFQpIDogdGhpcy5jcmVhdGVJbnN0YW5jZTxUPihyZWdpc3RyYXRpb24pO1xuXHRcdHRoaXMuaW5zdGFuY2VzLnNldChjYWNoZUtleSwgaW5zdGFuY2UpO1xuXHRcdHJldHVybiBpbnN0YW5jZTtcblx0fVxuXG5cdHByaXZhdGUgY3JlYXRlSW5zdGFuY2U8VCBleHRlbmRzIG9iamVjdD4ocmVnaXN0cmF0aW9uOiBTZXJ2aWNlUmVnaXN0cmF0aW9uKTogVCB7XG5cdFx0Y29uc3QgdHlwZSA9IHJlZ2lzdHJhdGlvbi50eXBlIGFzIENvbnN0cnVjdGFibGUgfCBGdW5jdGlvblR5cGU7XG5cdFx0Y29uc3QgY2FuQ29uc3RydWN0ID0gaXNDb25zdHJ1Y3RhYmxlKHR5cGUpO1xuXHRcdGNvbnN0IGRlcHMgPSB0aGlzLnJlc29sdmVEZXBlbmRlbmNpZXModHlwZSk7XG5cdFx0Y29uc3QgaW5zdCA9IChjYW5Db25zdHJ1Y3QgPyBuZXcgdHlwZSguLi5kZXBzKSA6IHR5cGUoKSkgYXMgVDtcblx0XHRyZXR1cm4gaW5zdDtcblx0fVxuXG5cdHByaXZhdGUgcmVzb2x2ZURlcGVuZGVuY2llcyh0eXBlOiBDb25zdHJ1Y3RhYmxlIHwgRnVuY3Rpb25UeXBlKTogdW5rbm93bltdIHtcblx0XHRjb25zdCBwYXJhbXMgPSBnZXRNZXRhPEFycmF5PENvbnN0cnVjdGFibGU+PihSZWZsZWN0aW9uTWV0YS5wYXJhbXR5cGVzLCB0eXBlKSA/PyBbXTtcblxuXHRcdGNvbnN0IGluamVjdFRva2VucyA9XG5cdFx0XHRnZXRNZXRhPEluamVjdGlvbk1ldGFkYXRhPihDcnVjaWJsZU1ldGEuaW5qZWN0dG9rZW4sIHR5cGUpID8/IG5ldyBNYXAoKTtcblxuXHRcdC8vVE9ETzogcHV0IGEgdHJ5IGNhdGNoIGhlcmUgc28gd2UgY2FuIHRocm93IHRoZSBuYW1lIG9mIHRoZSBzZXJ2aWNlXG5cdFx0bGV0IHJlc29sdmVkID0gW107XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBwYXJhbXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IHRva2VuID0gaW5qZWN0VG9rZW5zLmdldChpKT8ua2V5ID8/IHBhcmFtc1tpXS5uYW1lO1xuXHRcdFx0Y29uc3QgZGVwID0gaXNBcnJheVR5cGUocGFyYW1zW2ldKSA/IHRoaXMucmVzb2x2ZU1hbnkodG9rZW4pIDogdGhpcy5yZXNvbHZlKHRva2VuKTtcblx0XHRcdHJlc29sdmVkID0gWy4uLnJlc29sdmVkLCBkZXBdO1xuXHRcdH1cblx0XHRyZXR1cm4gcmVzb2x2ZWQ7XG5cdH1cblxuXHRwcml2YXRlIHJlZ2lzdGVyTGlmZXRpbWVTY29wZSgpIHtcblx0XHR0aGlzLnNlcnZpY2VSZWdpc3RyeS5yZWdpc3RlclR5cGUoU2NvcGVzLnJlcXVlc3QsIHtcblx0XHRcdHR5cGVPcktleTogTGlmZXRpbWVTY29wZVRva2VuLFxuXHRcdFx0dHlwZU9ySW5zdGFuY2U6IHRoaXMsXG5cdFx0fSk7XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJnZXRNZXRhIiwiaXNBcnJheVR5cGUiLCJpc0NvbnN0cnVjdGFibGUiLCJSZWZsZWN0aW9uTWV0YSIsInNjcmliZSIsIkNydWNpYmxlTWV0YSIsIkxpZmV0aW1lU2NvcGVUb2tlbiIsIlNjb3BlcyIsIlJlZ2lzdHJhdGlvbktleSIsIkR1cGxpY2F0ZVNjb3BlRXJyb3IiLCJSZXNvbHZlRXJyb3IiLCJTZXJ2aWNlUmVnaXN0cnkiLCJDcnVjaWJsZSIsImtleSIsImluc3RhbmNlcyIsIk1hcCIsInNlcnZpY2VSZWdpc3RyeSIsInJvb3RTY29wZSIsInNjb3BlcyIsImxvZ2dlciIsIm5hbWUiLCJpc0Rpc3Bvc2VkIiwib3B0aW9ucyIsInJlZ2lzdGVyTGlmZXRpbWVTY29wZSIsInJlc29sdmVNYW55IiwicmVzb2x2ZVJlcXVlc3QiLCJyZWdpc3RyYXRpb25zIiwiZ2V0UmVnaXN0cmF0aW9uRnJvbSIsInNlcnZpY2VzIiwiQXJyYXkiLCJvZiIsInJlZ2lzdHJhdGlvbiIsInNlcnZpY2UiLCJyZXNvbHZlUmVnaXN0cmF0aW9uIiwicHVzaCIsInJlc29sdmUiLCJ3YXJuIiwidG9TdHJpbmciLCJsZW5ndGgiLCJiZWdpblNjb3BlIiwiaGFzIiwic2NvcGUiLCJzZXQiLCJTeW1ib2wiLCJkaXNwb3NlIiwiaW5zdCIsImdldFJlZ2lzdHJhdGlvbiIsInZhbHVlIiwidHJhbnNpZW50IiwiY3JlYXRlSW5zdGFuY2UiLCJzaW5nbGV0b24iLCJnZXRPckNyZWF0ZUluc3RhbmNlIiwicmVxdWVzdCIsIkVycm9yIiwidHlwZSIsImlzSW5zdGFuY2UiLCJjYWNoZUtleSIsImV4aXN0aW5nSW5zdGFuY2UiLCJnZXQiLCJpbnN0YW5jZSIsImNhbkNvbnN0cnVjdCIsImRlcHMiLCJyZXNvbHZlRGVwZW5kZW5jaWVzIiwicGFyYW1zIiwicGFyYW10eXBlcyIsImluamVjdFRva2VucyIsImluamVjdHRva2VuIiwicmVzb2x2ZWQiLCJpIiwidG9rZW4iLCJkZXAiLCJyZWdpc3RlclR5cGUiLCJ0eXBlT3JLZXkiLCJ0eXBlT3JJbnN0YW5jZSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FHQ0EsT0FBTyxFQUNQQyxXQUFXLEVBQ1hDLGVBQWUsRUFDZkMsY0FBYyxRQUNSLDZCQUE2QjtBQUNwQyxTQUFTQyxNQUFNLFFBQVEsbUJBQW1CO0FBQzFDLFNBQVNDLFlBQVksRUFBRUMsa0JBQWtCLEVBQUVDLE1BQU0sUUFBUSxjQUFjO0FBRXZFLFNBQVNDLGVBQWUsUUFBUSxzQ0FBc0M7QUFFdEUsU0FBU0MsbUJBQW1CLEVBQUVDLFlBQVksUUFBUSxxQkFBcUI7QUFFdkUsU0FBU0MsZUFBZSxRQUFRLHdCQUF3QjtBQVF4RCxPQUFPLE1BQU1DO0lBQ0xDLElBQVk7SUFDVEMsWUFBWSxJQUFJQyxNQUF1QjtJQUN6Q0MsZ0JBQWlDO0lBQ2pDQyxVQUFvQjtJQUNwQkMsU0FBUyxJQUFJSCxNQUE2QjtJQUMxQ0ksU0FBU2YsT0FBT2UsTUFBTSxDQUFDUCxTQUFTUSxJQUFJLEVBQUU7SUFDdENDLGFBQWEsTUFBTTtJQUMzQixZQUFtQkMsT0FBeUIsQ0FBRTtRQUM3QyxJQUFJLENBQUNULEdBQUcsR0FBR1MsU0FBU1Q7UUFDcEIsSUFBSSxDQUFD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
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { RegistrationKey } from "../models/registration-key.model.js";
|
|
2
2
|
import { ServiceRegistration } from "../models/service-registration.model.js";
|
|
3
|
-
import { RegistrationError } from "../types/errors.js";
|
|
4
3
|
export class ServiceRegistry {
|
|
5
4
|
registrations;
|
|
6
5
|
constructor(parent){
|
|
@@ -8,22 +7,10 @@ export class ServiceRegistry {
|
|
|
8
7
|
}
|
|
9
8
|
registerType(scope, options) {
|
|
10
9
|
const registration = this.createRegistrationFrom(scope, options);
|
|
11
|
-
const
|
|
12
|
-
const duplicate = existing.find((reg)=>reg.isEqual(registration));
|
|
13
|
-
if (duplicate != null && !options.override) {
|
|
14
|
-
throw new RegistrationError(`A service is already registered for key ${registration.key}. Use builder.override.registerSingleton() (or the matching register* method) to replace it.`);
|
|
15
|
-
}
|
|
16
|
-
const remaining = existing.filter((reg)=>!reg.isEqual(registration));
|
|
10
|
+
const existingRegistration = this.getRegistrations(registration.key)?.filter((reg)=>!reg.isEqual(registration)) ?? [];
|
|
17
11
|
this.setRegistration(registration.key, [
|
|
18
12
|
registration,
|
|
19
|
-
...
|
|
20
|
-
]);
|
|
21
|
-
return registration;
|
|
22
|
-
}
|
|
23
|
-
replaceType(scope, options) {
|
|
24
|
-
const registration = this.createRegistrationFrom(scope, options);
|
|
25
|
-
this.setRegistration(registration.key, [
|
|
26
|
-
registration
|
|
13
|
+
...existingRegistration
|
|
27
14
|
]);
|
|
28
15
|
return registration;
|
|
29
16
|
}
|
|
@@ -50,4 +37,4 @@ export class ServiceRegistry {
|
|
|
50
37
|
}
|
|
51
38
|
}
|
|
52
39
|
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NydWNpYmxlL3NyYy9zZXJ2aWNlcy9zZXJ2aWNlLXJlZ2lzdHJ5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29uc3RydWN0YWJsZSwgRnVuY3Rpb25UeXBlIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9yZWZsZWN0aW9uXCI7XG5pbXBvcnQgeyBSZWdpc3RyYXRpb25LZXkgfSBmcm9tIFwiLi4vbW9kZWxzL3JlZ2lzdHJhdGlvbi1rZXkubW9kZWwuanNcIjtcbmltcG9ydCB7IFNlcnZpY2VSZWdpc3RyYXRpb24gfSBmcm9tIFwiLi4vbW9kZWxzL3NlcnZpY2UtcmVnaXN0cmF0aW9uLm1vZGVsLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNjb3BlIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzLmpzXCI7XG5cbmV4cG9ydCB0eXBlIFJlZ2lzdGVyVHlwZU9wdGlvbnMgPSB7XG5cdHR5cGVPcktleTogc3RyaW5nIHwgc3ltYm9sIHwgQ29uc3RydWN0YWJsZSB8IEZ1bmN0aW9uVHlwZTtcblx0dHlwZU9ySW5zdGFuY2U/OiBDb25zdHJ1Y3RhYmxlIHwgRnVuY3Rpb25UeXBlIHwgb2JqZWN0O1xufTtcblxuZXhwb3J0IGNsYXNzIFNlcnZpY2VSZWdpc3RyeSB7XG5cdHByaXZhdGUgcmVhZG9ubHkgcmVnaXN0cmF0aW9uczogTWFwPHN0cmluZywgU2VydmljZVJlZ2lzdHJhdGlvbltdPjtcblx0cHVibGljIGNvbnN0cnVjdG9yKHBhcmVudD86IFNlcnZpY2VSZWdpc3RyeSkge1xuXHRcdHRoaXMucmVnaXN0cmF0aW9ucyA9IG5ldyBNYXAocGFyZW50Py5yZWdpc3RyYXRpb25zKTtcblx0fVxuXG5cdHB1YmxpYyByZWdpc3RlclR5cGUoc2NvcGU6IFNjb3BlLCBvcHRpb25zOiBSZWdpc3RlclR5cGVPcHRpb25zKSB7XG5cdFx0Y29uc3QgcmVnaXN0cmF0aW9uID0gdGhpcy5jcmVhdGVSZWdpc3RyYXRpb25Gcm9tKHNjb3BlLCBvcHRpb25zKTtcblx0XHRjb25zdCBleGlzdGluZ1JlZ2lzdHJhdGlvbiA9XG5cdFx0XHR0aGlzLmdldFJlZ2lzdHJhdGlvbnMocmVnaXN0cmF0aW9uLmtleSk/LmZpbHRlcigocmVnKSA9PiAhcmVnLmlzRXF1YWwocmVnaXN0cmF0aW9uKSkgPz9cblx0XHRcdFtdO1xuXG5cdFx0dGhpcy5zZXRSZWdpc3RyYXRpb24ocmVnaXN0cmF0aW9uLmtleSwgW3JlZ2lzdHJhdGlvbiwgLi4uZXhpc3RpbmdSZWdpc3RyYXRpb25dKTtcblx0XHRyZXR1cm4gcmVnaXN0cmF0aW9uO1xuXHR9XG5cblx0cHVibGljIGdldFJlZ2lzdHJhdGlvbihrZXk6IHN0cmluZyB8IHN5bWJvbCB8IENvbnN0cnVjdGFibGUpOiBTZXJ2aWNlUmVnaXN0cmF0aW9uW10ge1xuXHRcdGNvbnN0IGtleVZhbCA9IG5ldyBSZWdpc3RyYXRpb25LZXkoa2V5KS52YWx1ZTtcblx0XHRjb25zdCByZWdpc3RyYXRpb24gPSB0aGlzLnJlZ2lzdHJhdGlvbnMuZ2V0KGtleVZhbCk7XG5cdFx0cmV0dXJuIHJlZ2lzdHJhdGlvbjtcblx0fVxuXG5cdHByaXZhdGUgY3JlYXRlUmVnaXN0cmF0aW9uRnJvbShzY29wZTogU2NvcGUsIG9wdGlvbnM6IFJlZ2lzdGVyVHlwZU9wdGlvbnMpIHtcblx0XHRjb25zdCB7IHR5cGVPcktleSwgdHlwZU9ySW5zdGFuY2UgfSA9IG9wdGlvbnM7XG5cdFx0Y29uc3QgaXNLZXkgPSB0eXBlb2YgdHlwZU9yS2V5ID09PSBcInN0cmluZ1wiIHx8IHR5cGVvZiB0eXBlT3JLZXkgPT09IFwic3ltYm9sXCI7XG5cdFx0Y29uc3QgaXNJbnN0YW5jZSA9IHR5cGVvZiB0eXBlT3JJbnN0YW5jZSA9PT0gXCJvYmplY3RcIjtcblx0XHRjb25zdCBrZXkgPSBuZXcgUmVnaXN0cmF0aW9uS2V5KCFpc0tleSA/IHR5cGVPcktleS5uYW1lIDogdHlwZU9yS2V5KTtcblx0XHRjb25zdCB0eXBlID0gaXNJbnN0YW5jZSA/IHR5cGVPckluc3RhbmNlIDogaXNLZXkgPyB0eXBlT3JJbnN0YW5jZSA6IHR5cGVPcktleTtcblx0XHRjb25zdCByZWdpc3RyYXRpb24gPSBuZXcgU2VydmljZVJlZ2lzdHJhdGlvbihrZXksIHR5cGUsIHNjb3BlLCBpc0luc3RhbmNlKTtcblx0XHRyZXR1cm4gcmVnaXN0cmF0aW9uO1xuXHR9XG5cblx0cHJpdmF0ZSBnZXRSZWdpc3RyYXRpb25zKGtleTogUmVnaXN0cmF0aW9uS2V5KSB7XG5cdFx0Y29uc3QgdmFsdWUgPSBrZXkudmFsdWU7XG5cdFx0cmV0dXJuIHRoaXMucmVnaXN0cmF0aW9ucy5nZXQodmFsdWUpO1xuXHR9XG5cblx0cHJpdmF0ZSBzZXRSZWdpc3RyYXRpb24oa2V5OiBSZWdpc3RyYXRpb25LZXksIHJlZ2lzdHJhdGlvbnM6IFNlcnZpY2VSZWdpc3RyYXRpb25bXSkge1xuXHRcdHRoaXMucmVnaXN0cmF0aW9ucy5zZXQoa2V5LnZhbHVlLCByZWdpc3RyYXRpb25zKTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIlJlZ2lzdHJhdGlvbktleSIsIlNlcnZpY2VSZWdpc3RyYXRpb24iLCJTZXJ2aWNlUmVnaXN0cnkiLCJyZWdpc3RyYXRpb25zIiwicGFyZW50IiwiTWFwIiwicmVnaXN0ZXJUeXBlIiwic2NvcGUiLCJvcHRpb25zIiwicmVnaXN0cmF0aW9uIiwiY3JlYXRlUmVnaXN0cmF0aW9uRnJvbSIsImV4aXN0aW5nUmVnaXN0cmF0aW9uIiwiZ2V0UmVnaXN0cmF0aW9ucyIsImtleSIsImZpbHRlciIsInJlZyIsImlzRXF1YWwiLCJzZXRSZWdpc3RyYXRpb24iLCJnZXRSZWdpc3RyYXRpb24iLCJrZXlWYWwiLCJ2YWx1ZSIsImdldCIsInR5cGVPcktleSIsInR5cGVPckluc3RhbmNlIiwiaXNLZXkiLCJpc0luc3RhbmNlIiwibmFtZSIsInR5cGUiLCJzZXQiXSwibWFwcGluZ3MiOiJBQUNBLFNBQVNBLGVBQWUsUUFBUSxzQ0FBc0M7QUFDdEUsU0FBU0MsbUJBQW1CLFFBQVEsMENBQTBDO0FBUTlFLE9BQU8sTUFBTUM7SUFDS0MsY0FBa0Q7SUFDbkUsWUFBbUJDLE1BQXdCLENBQUU7UUFDNUMsSUFBSSxDQUFDRCxhQUFhLEdBQUcsSUFBSUUsSUFBSUQsUUFBUUQ7SUFDdEM7SUFFT0csYUFBYUMsS0FBWSxFQUFFQyxPQUE0QixFQUFFO1FBQy9ELE1BQU1DLGVBQWUsSUFBSSxDQUFDQyxzQkFBc0IsQ0FBQ0gsT0FBT0M7UUFDeEQsTUFBTUcsdUJBQ0wsSUFBSSxDQUFDQyxnQkFBZ0IsQ0FBQ0gsYUFBYUksR0FBRyxHQUFHQyxPQUFPLENBQUNDLE1BQVEsQ0FBQ0EsSUFBSUMsT0FBTyxDQUFDUCxrQkFDdEUsRUFBRTtRQUVILElBQUksQ0FBQ1EsZUFBZSxDQUFDUixhQUFhSSxHQUFHLEVBQUU7WUFBQ0o7ZUFBaUJFO1NBQXFCO1FBQzlFLE9BQU9GO0lBQ1I7SUFFT1MsZ0JBQWdCTCxHQUFvQyxFQUF5QjtRQUNuRixNQUFNTSxTQUFTLElBQUluQixnQkFBZ0JhLEtBQUtPLEtBQUs7UUFDN0MsTUFBTVgsZUFBZSxJQUFJLENBQUNOLGFBQWEsQ0FBQ2tCLEdBQUcsQ0FBQ0Y7UUFDNUMsT0FBT1Y7SUFDUjtJQUVRQyx1QkFBdUJILEtBQVksRUFBRUMsT0FBNEIsRUFBRTtRQUMxRSxNQUFNLEVBQUVjLFNBQVMsRUFBRUMsY0FBYyxFQUFFLEdBQUdmO1FBQ3RDLE1BQU1nQixRQUFRLE9BQU9GLGNBQWMsWUFBWSxPQUFPQSxjQUFjO1FBQ3BFLE1BQU1HLGFBQWEsT0FBT0YsbUJBQW1CO1FBQzdDLE1BQU1WLE1BQU0sSUFBSWIsZ0JBQWdCLENBQUN3QixRQUFRRixVQUFVSSxJQUFJLEdBQUdKO1FBQzFELE1BQU1LLE9BQU9GLGFBQWFGLGlCQUFpQkMsUUFBUUQsaUJBQWlCRDtRQUNwRSxNQUFNYixlQUFlLElBQUlSLG9CQUFvQlksS0FBS2MsTUFBTXBCLE9BQU9rQjtRQUMvRCxPQUFPaEI7SUFDUjtJQUVRRyxpQkFBaUJDLEdBQW9CLEVBQUU7UUFDOUMsTUFBTU8sUUFBUVAsSUFBSU8sS0FBSztRQUN2QixPQUFPLElBQUksQ0FBQ2pCLGFBQWEsQ0FBQ2tCLEdBQUcsQ0FBQ0Q7SUFDL0I7SUFFUUgsZ0JBQWdCSixHQUFvQixFQUFFVixhQUFvQyxFQUFFO1FBQ25GLElBQUksQ0FBQ0EsYUFBYSxDQUFDeUIsR0FBRyxDQUFDZixJQUFJTyxLQUFLLEVBQUVqQjtJQUNuQztBQUNEIn0=
|
package/es6/src/types/index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export * from "./errors.js";
|
|
2
1
|
export * from "./types.js";
|
|
3
2
|
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NydWNpYmxlL3NyYy90eXBlcy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi90eXBlcy5qc1wiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSJ9
|
package/es6/src/types/types.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { };
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NydWNpYmxlL3NyYy90eXBlcy90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSB7XG5cdENvbnRhaW5lckJ1aWxkZXIsXG5cdElDb250YWluZXIsXG5cdExpZmV0aW1lU2NvcGUsXG5cdFJlc29sdmVSZXF1ZXN0LFxuXHRTY29wZSxcblx0U2VydmljZVByb3ZpZGVyLFxufSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NvbXBvc2l0aW9uXCI7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsV0FPcUMifQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@decohere/crucible",
|
|
3
|
-
"version": "0.0.1-dev.
|
|
3
|
+
"version": "0.0.1-dev.7",
|
|
4
4
|
"description": "Lightweight dependency injection container with decorator-based wiring",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript",
|
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@decohere/nexus": "0.0.1-dev.
|
|
34
|
-
"@decohere/scribe": "0.0.1-dev.
|
|
33
|
+
"@decohere/nexus": "0.0.1-dev.7",
|
|
34
|
+
"@decohere/scribe": "0.0.1-dev.7"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {}
|
|
37
37
|
}
|
package/types/src/const.d.ts
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
|
-
import { type Constructable } from "@decohere/nexus/reflection";
|
|
2
1
|
export type InjectionMetadata = Map<number, InjectionToken>;
|
|
3
2
|
export type InjectionToken = {
|
|
4
|
-
key: string | symbol
|
|
3
|
+
key: string | symbol;
|
|
5
4
|
};
|
|
6
|
-
|
|
7
|
-
* Bind a constructor parameter to a registration key.
|
|
8
|
-
* A class uses `Class.name` (same key as `registerSingleton(Class)`).
|
|
9
|
-
* Prefer the class over a name string. Use a symbol or string when the key is not the class name.
|
|
10
|
-
*/
|
|
11
|
-
export declare function inject(key: string | symbol | Constructable): (target: object, _propertyKey: string | symbol | undefined, idx: number) => void;
|
|
5
|
+
export declare function inject(key: string | symbol): (target: object, _propertyKey: string | symbol | undefined, idx: number) => void;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Constructable, FunctionType } from "@decohere/nexus/reflection";
|
|
2
2
|
import type { ServiceRegistration } from "../models/service-registration.model.js";
|
|
3
|
-
import type { ContainerBuilder,
|
|
3
|
+
import type { ContainerBuilder, Scope } from "../types/types.js";
|
|
4
4
|
import { Crucible } from "./crucible.js";
|
|
5
5
|
import { ServiceRegistry } from "./service-registry.js";
|
|
6
6
|
type ContainerBuilderOptions = {
|
|
@@ -9,7 +9,6 @@ type ContainerBuilderOptions = {
|
|
|
9
9
|
export declare class CrucibleBuilder implements ContainerBuilder {
|
|
10
10
|
private serviceRegistry;
|
|
11
11
|
constructor(options?: ContainerBuilderOptions);
|
|
12
|
-
get override(): ContainerRegistrar;
|
|
13
12
|
registerType(type: Constructable, scope?: Scope): ServiceRegistration;
|
|
14
13
|
registerTypes(...types: Constructable[]): ServiceRegistration[];
|
|
15
14
|
registerTypes(scope: Scope, ...types: Constructable[]): ServiceRegistration[];
|
|
@@ -23,8 +22,5 @@ export declare class CrucibleBuilder implements ContainerBuilder {
|
|
|
23
22
|
registerRequestScoped(key: string | symbol, type: Constructable): ServiceRegistration;
|
|
24
23
|
registerRequestScoped(type: Constructable): ServiceRegistration;
|
|
25
24
|
build(): Crucible;
|
|
26
|
-
private register;
|
|
27
|
-
private registerMany;
|
|
28
|
-
private createRegistrar;
|
|
29
25
|
}
|
|
30
26
|
export {};
|
|
@@ -2,14 +2,13 @@ import type { IContainer, ResolveRequest } from "../types/types.js";
|
|
|
2
2
|
import { ServiceRegistry } from "./service-registry.js";
|
|
3
3
|
type CrucibleOptions = {
|
|
4
4
|
key?: string;
|
|
5
|
-
|
|
5
|
+
rootScope?: Crucible;
|
|
6
6
|
serviceRegistry: ServiceRegistry;
|
|
7
7
|
};
|
|
8
8
|
export declare class Crucible implements IContainer {
|
|
9
9
|
key: string;
|
|
10
10
|
protected instances: Map<unknown, object>;
|
|
11
11
|
private serviceRegistry;
|
|
12
|
-
private parent?;
|
|
13
12
|
private rootScope;
|
|
14
13
|
private scopes;
|
|
15
14
|
private logger;
|
|
@@ -19,15 +18,12 @@ export declare class Crucible implements IContainer {
|
|
|
19
18
|
resolve<T extends object | object[]>(resolveRequest: ResolveRequest<T>): T;
|
|
20
19
|
beginScope(name?: string): Crucible;
|
|
21
20
|
[Symbol.dispose](): void;
|
|
22
|
-
|
|
23
|
-
private disposeSync;
|
|
24
|
-
private disposeAsync;
|
|
21
|
+
private dispose;
|
|
25
22
|
private getRegistrationFrom;
|
|
26
23
|
private resolveRegistration;
|
|
27
24
|
private getOrCreateInstance;
|
|
28
25
|
private createInstance;
|
|
29
26
|
private resolveDependencies;
|
|
30
|
-
private releaseScope;
|
|
31
27
|
private registerLifetimeScope;
|
|
32
28
|
}
|
|
33
29
|
export {};
|
|
@@ -4,13 +4,11 @@ import type { Scope } from "../types/types.js";
|
|
|
4
4
|
export type RegisterTypeOptions = {
|
|
5
5
|
typeOrKey: string | symbol | Constructable | FunctionType;
|
|
6
6
|
typeOrInstance?: Constructable | FunctionType | object;
|
|
7
|
-
override?: boolean;
|
|
8
7
|
};
|
|
9
8
|
export declare class ServiceRegistry {
|
|
10
9
|
private readonly registrations;
|
|
11
10
|
constructor(parent?: ServiceRegistry);
|
|
12
11
|
registerType(scope: Scope, options: RegisterTypeOptions): ServiceRegistration;
|
|
13
|
-
replaceType(scope: Scope, options: RegisterTypeOptions): ServiceRegistration;
|
|
14
12
|
getRegistration(key: string | symbol | Constructable): ServiceRegistration[];
|
|
15
13
|
private createRegistrationFrom;
|
|
16
14
|
private getRegistrations;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export type { ContainerBuilder,
|
|
1
|
+
export type { ContainerBuilder, IContainer, LifetimeScope, ResolveRequest, Scope, ServiceProvider, } from "@decohere/nexus/composition";
|