lakutata
Version:
An IoC-based universal application framework.
198 lines (124 loc) • 5.18 kB
JavaScript
/* Build Date: Mon Jan 05 2026 23:52:23 GMT+0800 (China Standard Time) */
import { b as t, O as o, G as e, B as s } from "../../../../vendor/Package.internal.4.mjs";
import { OverridableObjectTargetConfigNotFoundException as r } from "../../../exceptions/di/OverridableObjectTargetConfigNotFoundException.mjs";
import { As as i } from "../../helpers/As.mjs";
import { InvalidObjectTypeException as p } from "../../../exceptions/InvalidObjectTypeException.mjs";
import { ArrayToSet as m } from "../../helpers/ArrayToSet.mjs";
import { SetToArray as n } from "../../helpers/SetToArray.mjs";
import "../../../../vendor/Package.internal.3.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.internal.1.mjs";
import "../../../../vendor/Package.internal.2.mjs";
import "../../../exceptions/di/LifetimeLockedException.mjs";
import "../abstracts/Exception.mjs";
import "../../../../vendor/Package.internal.5.mjs";
import "../../../../vendor/Package.internal.6.mjs";
import "./ThrowWarning.mjs";
import "../../helpers/Templating.mjs";
import "./CamelCase.mjs";
import "../../helpers/NoCase.mjs";
import "../../helpers/DevNull.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.internal.7.mjs";
import "./DataValidator.mjs";
import "node:util/types";
import "../../validation/VLD.mjs";
import "url";
import "../../../exceptions/dto/InvalidValueException.mjs";
import "../../../../vendor/Package.internal.8.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 "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 "../../../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 = m(r);
this.$bootstrap = s.bootstrap ? s.bootstrap : [];
s.objects?.anonymous?.forEach(t => this.$loadOptions.push(t));
if (s.objects && s.objects.named) {
const o = s.objects.named;
Object.keys(o).forEach(e => this.$loadOptions.push({
...o[e],
[t]: e
}));
}
this.processOverridableNamedObjectOptions(o.Component, s.components);
this.processOverridableNamedObjectOptions(o.Provider, s.providers);
}
validateObjectType(t, o) {
if (e(o) !== t) throw new p("{0} configuration only accepts object declarations of {1} types", [ t, t.toLowerCase() ]);
return o;
}
processOverridableNamedObjectOptions(o, e) {
if (!e) return;
Object.keys(e).forEach(p => {
const m = e[p];
m[t] = p;
if (m.class) {
m.class = this.validateObjectType(o, m.class);
return this.$loadOptions.push(i(m)) ? void 0 : void 0;
}
for (const o of this.$presetLoadOptionsSet) {
if (typeof o === "string") continue;
if (o instanceof s) continue;
if (m[t] === o[t]) {
this.$loadOptions.push(Object.assign({}, o, m));
return this.$presetLoadOptionsSet.delete(o) ? 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 };