lakutata
Version:
An IoC-based universal application framework.
275 lines (174 loc) • 6.9 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, {
value: "Module"
});
const e = require("../../../vendor/Package.1.cjs");
const r = require("./Component.cjs");
const t = require("../../decorators/di/Lifetime.cjs");
const s = require("../../../vendor/Package.3.cjs");
const o = require("../base/internal/ObjectContainer.cjs");
const i = require("../../options/ModuleOptions.cjs");
const c = require("../base/internal/ModuleConfigLoader.cjs");
const n = require("node:util/types");
const a = require("../../decorators/di/Configurable.cjs");
const u = require("../helpers/As.cjs");
const p = require("../helpers/NonceStr.cjs");
require("../base/EventEmitter.cjs");
require("../../../vendor/Package.5.cjs");
require("./Provider.cjs");
require("../base/async-constructor/AsyncConstructor.cjs");
require("../base/async-constructor/Append.cjs");
require("../helpers/IsPromiseLike.cjs");
require("../helpers/IsPromise.cjs");
require("util/types");
require("../../exceptions/MethodNotFoundException.cjs");
require("../base/abstracts/Exception.cjs");
require("../base/internal/BasicInfo.cjs");
require("../../../vendor/Package.6.cjs");
require("../../../vendor/Package.7.cjs");
require("../base/internal/ThrowWarning.cjs");
require("../helpers/Templating.cjs");
require("../base/internal/CamelCase.cjs");
require("../helpers/NoCase.cjs");
require("../ioc/DependencyInjectionContainer.cjs");
require("util");
require("../ioc/Errors.cjs");
require("../../exceptions/di/DependencyInjectionException.cjs");
require("../base/internal/ConstructorSymbol.cjs");
require("../../constants/DIMetadataKey.cjs");
require("../../../vendor/Package.4.cjs");
require("node:crypto");
require("../../../vendor/Package.2.cjs");
require("../base/internal/DataValidator.cjs");
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("../base/internal/ObjectLifetime.cjs");
require("../../exceptions/di/LifetimeLockedException.cjs");
require("../base/internal/ObjectWeakRefs.cjs");
require("../base/internal/ConfigurableRecordsInjection.cjs");
require("../base/internal/ObjectConfiguration.cjs");
require("../base/internal/ObjectInjection.cjs");
require("../helpers/DevNull.cjs");
require("../../decorators/dto/Expect.cjs");
require("../../decorators/dto/IndexSignature.cjs");
require("../../decorators/dto/Accept.cjs");
require("../base/internal/MethodValidation.cjs");
require("../../exceptions/dto/InvalidMethodAcceptException.cjs");
require("../../exceptions/dto/InvalidMethodReturnException.cjs");
require("../helpers/IsEmptyObject.cjs");
require("../../options/ModuleLoadObjectsOptions.cjs");
require("../../options/LoadNamedObjectOptions.cjs");
require("../../options/LoadAnonymousObjectOptions.cjs");
require("../../options/OverridableNamedObjectOptions.cjs");
require("../../options/OverridableObjectOptions.cjs");
require("../../exceptions/di/OverridableObjectTargetConfigNotFoundException.cjs");
require("../../exceptions/InvalidObjectTypeException.cjs");
require("../helpers/ArrayToSet.cjs");
require("../helpers/SetToArray.cjs");
require("../helpers/RandomString.cjs");
require("../../../vendor/Package.15.cjs");
require("crypto");
const d = `_$.MODULE.INITIALIZED_${p.NonceStr()}`;
const j = `_$.MODULE.INITIALIZE_ERROR_${p.NonceStr()}`;
exports.Module = class Module extends r.Component {
get container() {
return o.GetObjectContainer(this);
}
#e;
#r;
constructor(e) {
super(e);
this.ConfigLoader = c.ModuleConfigLoader;
this.options = {};
this.#e = [];
this.#r = [];
}
async [s.__init](...e) {
setImmediate((async () => {
try {
await super[s.__init](...e, (async () => {
await this.container.load(this.#e);
}), (async () => {
Reflect.defineMetadata("#bootstrap", this.#r, this);
for (const e of this.#r) {
if (n.isAsyncFunction(e)) {
await u.As(e)(this);
} else {
await this.getObject(u.As(e));
}
}
Reflect.deleteMetadata("#bootstrap", this);
}));
this.emit(d);
} catch (e) {
this.emit(j, e);
}
}));
}
async [s.__destroy](...e) {
return await super[s.__destroy](...e);
}
mode() {
if (!process.env.NODE_ENV) process.env.NODE_ENV = "development";
switch (process.env.NODE_ENV.toLowerCase()) {
case "production":
return "production";
case "development":
return "development";
default:
{
process.env.NODE_ENV = "development";
return "development";
}
}
}
async reload() {
await new Promise(((e, r) => {
this.once(d, (() => e()));
super.reload().catch(r);
}));
}
async getObject(e, r = {}) {
return await super.getObject(e, r);
}
static {
e.__decorate([ a.Configurable(i.ModuleOptions.optional().default({}).options({
stripUnknown: false
}), (function(e) {
const {bootstrap: r, loadOptions: t} = new this.ConfigLoader(this, this.options);
r.forEach((e => this.#r.push(e)));
const s = new this.ConfigLoader(this, e, t);
s.bootstrap.forEach((e => this.#r.push(e)));
this.#e = s.loadOptions;
return e;
})), e.__metadata("design:type", i.ModuleOptions) ], Module.prototype, "options", void 0);
}
};
exports.Module = e.__decorate([ t.Singleton(true), s.DefineObjectType(s.ObjectType.Module), e.__metadata("design:paramtypes", [ Object ]) ], exports.Module);
exports.MODULE_INITIALIZED = d;
exports.MODULE_INITIALIZE_ERROR = j;