lakutata
Version:
An IoC-based universal application framework.
212 lines (132 loc) • 5.59 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, {
value: "Module"
});
const e = require("../../../../vendor/Package.3.cjs");
const r = require("../../../exceptions/di/OverridableObjectTargetConfigNotFoundException.cjs");
const t = require("../../helpers/As.cjs");
const s = require("../../../exceptions/InvalidObjectTypeException.cjs");
const o = require("../../helpers/ArrayToSet.cjs");
const i = require("../../helpers/SetToArray.cjs");
require("../../../../vendor/Package.1.cjs");
require("../async-constructor/AsyncConstructor.cjs");
require("../async-constructor/Append.cjs");
require("../../helpers/IsPromiseLike.cjs");
require("../../helpers/IsPromise.cjs");
require("util/types");
require("../../../decorators/di/Lifetime.cjs");
require("./ObjectLifetime.cjs");
require("../../../constants/DIMetadataKey.cjs");
require("../../../../vendor/Package.4.cjs");
require("../../../../vendor/Package.5.cjs");
require("../../../exceptions/di/LifetimeLockedException.cjs");
require("../abstracts/Exception.cjs");
require("./BasicInfo.cjs");
require("../../../../vendor/Package.6.cjs");
require("../../../../vendor/Package.7.cjs");
require("./ThrowWarning.cjs");
require("../../helpers/Templating.cjs");
require("./CamelCase.cjs");
require("../../helpers/NoCase.cjs");
require("../../../exceptions/MethodNotFoundException.cjs");
require("../../ioc/DependencyInjectionContainer.cjs");
require("util");
require("../../ioc/Errors.cjs");
require("../../../exceptions/di/DependencyInjectionException.cjs");
require("./ConstructorSymbol.cjs");
require("node:crypto");
require("../../../../vendor/Package.2.cjs");
require("./DataValidator.cjs");
require("node:util/types");
require("../../validation/VLD.cjs");
require("../../../../vendor/Package.11.cjs");
require("url");
require("../../../../vendor/Package.10.cjs");
require("../../../exceptions/dto/InvalidValueException.cjs");
require("../../../../vendor/Package.9.cjs");
require("../../helpers/IsHtml.cjs");
require("../../helpers/IsXML.cjs");
require("../../../constants/DTOMetadataKey.cjs");
require("../../helpers/ObjectConstructor.cjs");
require("../../helpers/ObjectParentConstructors.cjs");
require("../../helpers/ObjectParentConstructor.cjs");
require("../../helpers/ObjectPrototype.cjs");
require("../../ioc/InjectionMode.cjs");
require("../../ioc/Lifetime.cjs");
require("../../ioc/ListModules.cjs");
require("../../../../vendor/Package.8.cjs");
require("os");
require("path");
require("stream");
require("events");
require("fs");
require("../../ioc/Utils.cjs");
require("../../ioc/FunctionTokenizer.cjs");
require("../../ioc/LoadModules.cjs");
require("../../ioc/Resolvers.cjs");
require("../../ioc/ParamParser.cjs");
require("./ObjectWeakRefs.cjs");
require("./ConfigurableRecordsInjection.cjs");
require("./ObjectConfiguration.cjs");
require("./ObjectInjection.cjs");
require("./ObjectContainer.cjs");
require("../../helpers/DevNull.cjs");
require("../../../decorators/dto/Expect.cjs");
require("../../../decorators/dto/IndexSignature.cjs");
require("../../../decorators/dto/Accept.cjs");
require("./MethodValidation.cjs");
require("../../../exceptions/dto/InvalidMethodAcceptException.cjs");
require("../../../exceptions/dto/InvalidMethodReturnException.cjs");
require("../../helpers/IsEmptyObject.cjs");
class ModuleConfigLoader {
constructor(r, t, s = []) {
this.$presetLoadOptionsSet = new Set;
this.$loadOptions = [];
this.$bootstrap = [];
this.$module = r;
this.$presetLoadOptionsSet = o.ArrayToSet(s);
this.$bootstrap = t.bootstrap ? t.bootstrap : [];
t.objects?.anonymous?.forEach((e => this.$loadOptions.push(e)));
if (t.objects && t.objects.named) {
const r = t.objects.named;
Object.keys(r).forEach((t => this.$loadOptions.push({
...r[t],
[e.OBJECT_ID]: t
})));
}
this.processOverridableNamedObjectOptions(e.ObjectType.Component, t.components);
this.processOverridableNamedObjectOptions(e.ObjectType.Provider, t.providers);
this.processOverridableNamedObjectOptions(e.ObjectType.Module, t.modules);
}
validateObjectType(r, t) {
if (e.GetObjectType(t) !== r) throw new s.InvalidObjectTypeException("{0} configuration only accepts object declarations of {1} types", [ r, r.toLowerCase() ]);
return t;
}
processOverridableNamedObjectOptions(s, o) {
if (!o) return;
Object.keys(o).forEach((i => {
const c = o[i];
c[e.OBJECT_ID] = i;
if (c.class) {
c.class = this.validateObjectType(s, c.class);
return this.$loadOptions.push(t.As(c)) ? void 0 : void 0;
}
for (const r of this.$presetLoadOptionsSet) {
if (typeof r === "string") continue;
if (r instanceof e.BaseObject) continue;
if (c[e.OBJECT_ID] === r[e.OBJECT_ID]) {
this.$loadOptions.push(Object.assign({}, r, c));
return this.$presetLoadOptionsSet.delete(r) ? void 0 : void 0;
}
}
throw new r.OverridableObjectTargetConfigNotFoundException("No applicable configuration target found");
}));
}
get loadOptions() {
return [ ...this.$loadOptions, ...i.SetToArray(this.$presetLoadOptionsSet) ];
}
get bootstrap() {
return this.$bootstrap;
}
}
exports.ModuleConfigLoader = ModuleConfigLoader;