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