lakutata
Version:
An IoC-based universal application framework.
203 lines (153 loc) • 4.2 kB
JavaScript
"use strict";
Object.defineProperty(exports, Symbol.toStringTag, {
value: "Module"
});
const e = require("url");
const r = require("./Lifetime.cjs");
const s = require("./Resolvers.cjs");
const t = require("./Utils.cjs");
const n = require("../base/internal/CamelCase.cjs");
const i = require("../helpers/As.cjs");
require("./Errors.cjs");
require("../../exceptions/di/DependencyInjectionException.cjs");
require("../base/abstracts/Exception.cjs");
require("../base/internal/BasicInfo.cjs");
require("../../../vendor/Package.6.cjs");
require("../../../vendor/Package.5.cjs");
require("../../../vendor/Package.7.cjs");
require("../base/internal/ThrowWarning.cjs");
require("../helpers/Templating.cjs");
require("../helpers/NoCase.cjs");
require("../base/internal/ConstructorSymbol.cjs");
require("../../constants/DIMetadataKey.cjs");
require("../../../vendor/Package.4.cjs");
require("node:crypto");
require("../../../vendor/Package.2.cjs");
require("../../../vendor/Package.1.cjs");
require("../base/internal/DataValidator.cjs");
require("node:util/types");
require("../validation/VLD.cjs");
require("../../../vendor/Package.11.cjs");
require("../../../vendor/Package.10.cjs");
require("util");
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("./InjectionMode.cjs");
require("./ParamParser.cjs");
require("./FunctionTokenizer.cjs");
const o = {
camelCase: e => n.CamelCase(e)
};
function c(e, r, s) {
s ??= {};
const t = e.container;
s = p(s);
const n = e.listModules(r, s);
if (s.esModules) {
return a(e, t, n, s);
} else {
const r = n.map((r => {
const s = e.require(r.path);
return u(s, r);
}));
return l(r, t, n, s);
}
}
async function a(r, s, t, n) {
const o = [];
for (const s of t) {
const t = e.pathToFileURL(s.path).toString();
o.push(i.As(r.require(t)));
}
const c = await Promise.all(o);
const a = [];
for (let e = 0; e < t.length; e++) {
a.push(i.As(u(c[e], t[e])));
}
return l(a, s, t, n);
}
function u(e, r) {
const n = [];
if (!e) return n;
if (t.isFunction(e)) {
n.push({
name: r.name,
path: r.path,
value: e,
opts: r.opts
});
return n;
}
if (e.default && t.isFunction(e.default)) {
n.push({
name: r.name,
path: r.path,
value: e.default,
opts: r.opts
});
}
for (const i of Object.keys(e)) {
if (i === "default") continue;
if (t.isFunction(e[i]) && s.RESOLVER in e[i]) {
n.push({
name: i,
path: r.path,
value: e[i],
opts: r.opts
});
}
}
return n;
}
function l(e, r, s, t) {
e.reduce(((e, r) => e.concat(r)), []).filter((e => e)).forEach(j.bind(null, r, t));
return {
loadedModules: s
};
}
function p(e) {
return {
resolverOptions: {
lifetime: r.Lifetime.TRANSIENT,
...e && e.resolverOptions
},
...e
};
}
function j(e, r, n) {
const i = n.value[s.RESOLVER];
let c = i && i.name;
if (!c) {
c = n.name;
let e = r.formatName;
if (e) {
if (typeof e === "string") {
e = o[e];
}
if (e) {
c = e(c, n);
}
}
}
let a = n.opts;
if (typeof a === "string") {
a = {
lifetime: a
};
}
const u = {
...r.resolverOptions,
...a,
...i
};
const l = u.register ? u.register : t.isClass(n.value) ? s.asClass : s.asFunction;
e.register(c, l(n.value, u));
}
exports.loadModules = c;