UNPKG

lakutata

Version:

An IoC-based universal application framework.

203 lines (153 loc) 4.2 kB
"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;