|
@@ -2,12 +2,6 @@ var __defProp = Object.defineProperty;
|
|
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
|
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
|
|
|
-var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
|
|
|
-var __export = (target, all) => {
|
|
|
|
|
- for (var name in all)
|
|
|
|
|
- __defProp(target, name, { get: all[name], enumerable: true });
|
|
|
|
|
-};
|
|
|
|
|
var __copyProps = (to, from, except, desc) => {
|
|
var __copyProps = (to, from, except, desc) => {
|
|
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
|
for (let key of __getOwnPropNames(from))
|
|
for (let key of __getOwnPropNames(from))
|
|
@@ -16,327 +10,14 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
}
|
|
}
|
|
|
return to;
|
|
return to;
|
|
|
};
|
|
};
|
|
|
|
|
+var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
|
-var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
|
|
|
-
|
|
|
|
|
-// src/index.js
|
|
|
|
|
var src_exports = {};
|
|
var src_exports = {};
|
|
|
-__export(src_exports, {
|
|
|
|
|
- Service: () => Service,
|
|
|
|
|
- ServiceContainer: () => ServiceContainer
|
|
|
|
|
-});
|
|
|
|
|
module.exports = __toCommonJS(src_exports);
|
|
module.exports = __toCommonJS(src_exports);
|
|
|
-
|
|
|
|
|
-// node_modules/@e22m4u/js-format/src/utils/is-class.js
|
|
|
|
|
-function isClass(value) {
|
|
|
|
|
- if (!value) return false;
|
|
|
|
|
- return typeof value === "function" && /^class\s/.test(Function.prototype.toString.call(value));
|
|
|
|
|
-}
|
|
|
|
|
-__name(isClass, "isClass");
|
|
|
|
|
-
|
|
|
|
|
-// node_modules/@e22m4u/js-format/src/value-to-string.js
|
|
|
|
|
-var BASE_CTOR_NAMES = [
|
|
|
|
|
- "String",
|
|
|
|
|
- "Number",
|
|
|
|
|
- "Boolean",
|
|
|
|
|
- "Object",
|
|
|
|
|
- "Array",
|
|
|
|
|
- "Function",
|
|
|
|
|
- "Symbol",
|
|
|
|
|
- "Map",
|
|
|
|
|
- "Set",
|
|
|
|
|
- "Date"
|
|
|
|
|
-];
|
|
|
|
|
-function valueToString(input) {
|
|
|
|
|
- if (input == null) return String(input);
|
|
|
|
|
- if (typeof input === "string") return `"${input}"`;
|
|
|
|
|
- if (typeof input === "number" || typeof input === "boolean")
|
|
|
|
|
- return String(input);
|
|
|
|
|
- if (isClass(input)) return input.name ? input.name : "Class";
|
|
|
|
|
- if (input.constructor && input.constructor.name)
|
|
|
|
|
- return BASE_CTOR_NAMES.includes(input.constructor.name) ? input.constructor.name : `${input.constructor.name} (instance)`;
|
|
|
|
|
- if (typeof input === "object" && input.constructor == null) return "Object";
|
|
|
|
|
- return String(input);
|
|
|
|
|
-}
|
|
|
|
|
-__name(valueToString, "valueToString");
|
|
|
|
|
-
|
|
|
|
|
-// node_modules/@e22m4u/js-format/src/array-to-list.js
|
|
|
|
|
-var SEPARATOR = ", ";
|
|
|
|
|
-function arrayToList(input) {
|
|
|
|
|
- if (Array.isArray(input) && input.length)
|
|
|
|
|
- return input.map(valueToString).join(SEPARATOR);
|
|
|
|
|
- return valueToString(input);
|
|
|
|
|
-}
|
|
|
|
|
-__name(arrayToList, "arrayToList");
|
|
|
|
|
-
|
|
|
|
|
-// node_modules/@e22m4u/js-format/src/format.js
|
|
|
|
|
-function format(pattern) {
|
|
|
|
|
- if (pattern instanceof Date) {
|
|
|
|
|
- pattern = pattern.toISOString();
|
|
|
|
|
- } else if (typeof pattern !== "string") {
|
|
|
|
|
- pattern = String(pattern);
|
|
|
|
|
- }
|
|
|
|
|
- const re = /(%?)(%([sdjvl]))/g;
|
|
|
|
|
- const args = Array.prototype.slice.call(arguments, 1);
|
|
|
|
|
- if (args.length) {
|
|
|
|
|
- pattern = pattern.replace(re, function(match, escaped, ptn, flag) {
|
|
|
|
|
- let arg = args.shift();
|
|
|
|
|
- switch (flag) {
|
|
|
|
|
- case "s":
|
|
|
|
|
- arg = String(arg);
|
|
|
|
|
- break;
|
|
|
|
|
- case "d":
|
|
|
|
|
- arg = Number(arg);
|
|
|
|
|
- break;
|
|
|
|
|
- case "j":
|
|
|
|
|
- arg = JSON.stringify(arg);
|
|
|
|
|
- break;
|
|
|
|
|
- case "v":
|
|
|
|
|
- arg = valueToString(arg);
|
|
|
|
|
- break;
|
|
|
|
|
- case "l":
|
|
|
|
|
- arg = arrayToList(arg);
|
|
|
|
|
- break;
|
|
|
|
|
- }
|
|
|
|
|
- if (!escaped) return arg;
|
|
|
|
|
- args.unshift(arg);
|
|
|
|
|
- return match;
|
|
|
|
|
- });
|
|
|
|
|
- }
|
|
|
|
|
- if (args.length) pattern += " " + args.join(" ");
|
|
|
|
|
- pattern = pattern.replace(/%{2}/g, "%");
|
|
|
|
|
- return "" + pattern;
|
|
|
|
|
-}
|
|
|
|
|
-__name(format, "format");
|
|
|
|
|
-
|
|
|
|
|
-// node_modules/@e22m4u/js-format/src/errorf.js
|
|
|
|
|
-var _Errorf = class _Errorf extends Error {
|
|
|
|
|
- /**
|
|
|
|
|
- * Constructor.
|
|
|
|
|
- *
|
|
|
|
|
- * @param {string|undefined} pattern
|
|
|
|
|
- * @param {any} args
|
|
|
|
|
- */
|
|
|
|
|
- constructor(pattern = void 0, ...args) {
|
|
|
|
|
- const message = pattern != null ? format(pattern, ...args) : void 0;
|
|
|
|
|
- super(message);
|
|
|
|
|
- }
|
|
|
|
|
-};
|
|
|
|
|
-__name(_Errorf, "Errorf");
|
|
|
|
|
-var Errorf = _Errorf;
|
|
|
|
|
-
|
|
|
|
|
-// src/errors/invalid-argument-error.js
|
|
|
|
|
-var _InvalidArgumentError = class _InvalidArgumentError extends Errorf {
|
|
|
|
|
-};
|
|
|
|
|
-__name(_InvalidArgumentError, "InvalidArgumentError");
|
|
|
|
|
-var InvalidArgumentError = _InvalidArgumentError;
|
|
|
|
|
-
|
|
|
|
|
-// src/service-container.js
|
|
|
|
|
-var _ServiceContainer = class _ServiceContainer {
|
|
|
|
|
- /**
|
|
|
|
|
- * Services map.
|
|
|
|
|
- *
|
|
|
|
|
- * @type {Map<any, any>}
|
|
|
|
|
- * @private
|
|
|
|
|
- */
|
|
|
|
|
- _services = /* @__PURE__ */ new Map();
|
|
|
|
|
- /**
|
|
|
|
|
- * Parent container.
|
|
|
|
|
- *
|
|
|
|
|
- * @type {ServiceContainer}
|
|
|
|
|
- * @private
|
|
|
|
|
- */
|
|
|
|
|
- _parent;
|
|
|
|
|
- /**
|
|
|
|
|
- * Constructor.
|
|
|
|
|
- *
|
|
|
|
|
- * @param {ServiceContainer|undefined} parent
|
|
|
|
|
- */
|
|
|
|
|
- constructor(parent = void 0) {
|
|
|
|
|
- if (parent != null) {
|
|
|
|
|
- if (!(parent instanceof _ServiceContainer))
|
|
|
|
|
- throw new InvalidArgumentError(
|
|
|
|
|
- 'The provided parameter "parent" of ServicesContainer.constructor must be an instance ServiceContainer, but %v given.',
|
|
|
|
|
- parent
|
|
|
|
|
- );
|
|
|
|
|
- this._parent = parent;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- /**
|
|
|
|
|
- * Получить существующий или новый экземпляр.
|
|
|
|
|
- *
|
|
|
|
|
- * @param {*} ctor
|
|
|
|
|
- * @param {*} args
|
|
|
|
|
- * @return {*}
|
|
|
|
|
- */
|
|
|
|
|
- get(ctor, ...args) {
|
|
|
|
|
- if (!ctor || typeof ctor !== "function")
|
|
|
|
|
- throw new InvalidArgumentError(
|
|
|
|
|
- "The first argument of ServicesContainer.get must be a class constructor, but %v given.",
|
|
|
|
|
- ctor
|
|
|
|
|
- );
|
|
|
|
|
- if (!this._services.has(ctor) && this._parent && this._parent.has(ctor)) {
|
|
|
|
|
- return this._parent.get(ctor);
|
|
|
|
|
- }
|
|
|
|
|
- let service = this._services.get(ctor);
|
|
|
|
|
- if (!service || args.length) {
|
|
|
|
|
- service = ctor.kind === "Service" ? new ctor(this, ...args) : new ctor(...args);
|
|
|
|
|
- this._services.set(ctor, service);
|
|
|
|
|
- } else if (typeof service === "function") {
|
|
|
|
|
- service = service();
|
|
|
|
|
- this._services.set(ctor, service);
|
|
|
|
|
- }
|
|
|
|
|
- return service;
|
|
|
|
|
- }
|
|
|
|
|
- /**
|
|
|
|
|
- * Проверка существования конструктора в контейнере.
|
|
|
|
|
- *
|
|
|
|
|
- * @param {*} ctor
|
|
|
|
|
- * @return {boolean}
|
|
|
|
|
- */
|
|
|
|
|
- has(ctor) {
|
|
|
|
|
- if (this._services.has(ctor)) return true;
|
|
|
|
|
- if (this._parent) return this._parent.has(ctor);
|
|
|
|
|
- return false;
|
|
|
|
|
- }
|
|
|
|
|
- /**
|
|
|
|
|
- * Добавить конструктор в контейнер.
|
|
|
|
|
- *
|
|
|
|
|
- * @param {*} ctor
|
|
|
|
|
- * @param {*} args
|
|
|
|
|
- * @return {this}
|
|
|
|
|
- */
|
|
|
|
|
- add(ctor, ...args) {
|
|
|
|
|
- if (!ctor || typeof ctor !== "function")
|
|
|
|
|
- throw new InvalidArgumentError(
|
|
|
|
|
- "The first argument of ServicesContainer.add must be a class constructor, but %v given.",
|
|
|
|
|
- ctor
|
|
|
|
|
- );
|
|
|
|
|
- const factory = /* @__PURE__ */ __name(() => ctor.kind === "Service" ? new ctor(this, ...args) : new ctor(...args), "factory");
|
|
|
|
|
- this._services.set(ctor, factory);
|
|
|
|
|
- return this;
|
|
|
|
|
- }
|
|
|
|
|
- /**
|
|
|
|
|
- * Добавить конструктор и создать экземпляр.
|
|
|
|
|
- *
|
|
|
|
|
- * @param {*} ctor
|
|
|
|
|
- * @param {*} args
|
|
|
|
|
- * @return {this}
|
|
|
|
|
- */
|
|
|
|
|
- use(ctor, ...args) {
|
|
|
|
|
- if (!ctor || typeof ctor !== "function")
|
|
|
|
|
- throw new InvalidArgumentError(
|
|
|
|
|
- "The first argument of ServicesContainer.use must be a class constructor, but %v given.",
|
|
|
|
|
- ctor
|
|
|
|
|
- );
|
|
|
|
|
- const service = ctor.kind === "Service" ? new ctor(this, ...args) : new ctor(...args);
|
|
|
|
|
- this._services.set(ctor, service);
|
|
|
|
|
- return this;
|
|
|
|
|
- }
|
|
|
|
|
- /**
|
|
|
|
|
- * Добавить конструктор и связанный экземпляр.
|
|
|
|
|
- *
|
|
|
|
|
- * @param {*} ctor
|
|
|
|
|
- * @param {*} service
|
|
|
|
|
- * @return {this}
|
|
|
|
|
- */
|
|
|
|
|
- set(ctor, service) {
|
|
|
|
|
- if (!ctor || typeof ctor !== "function")
|
|
|
|
|
- throw new InvalidArgumentError(
|
|
|
|
|
- "The first argument of ServicesContainer.set must be a class constructor, but %v given.",
|
|
|
|
|
- ctor
|
|
|
|
|
- );
|
|
|
|
|
- if (!service || typeof service !== "object" || Array.isArray(service))
|
|
|
|
|
- throw new InvalidArgumentError(
|
|
|
|
|
- "The second argument of ServicesContainer.set must be an Object, but %v given.",
|
|
|
|
|
- service
|
|
|
|
|
- );
|
|
|
|
|
- this._services.set(ctor, service);
|
|
|
|
|
- return this;
|
|
|
|
|
- }
|
|
|
|
|
-};
|
|
|
|
|
-__name(_ServiceContainer, "ServiceContainer");
|
|
|
|
|
-var ServiceContainer = _ServiceContainer;
|
|
|
|
|
-
|
|
|
|
|
-// src/service.js
|
|
|
|
|
-var _Service = class _Service {
|
|
|
|
|
- /**
|
|
|
|
|
- * Container.
|
|
|
|
|
- *
|
|
|
|
|
- * @type {ServiceContainer}
|
|
|
|
|
- */
|
|
|
|
|
- container;
|
|
|
|
|
- /**
|
|
|
|
|
- * Constructor.
|
|
|
|
|
- *
|
|
|
|
|
- * @param {ServiceContainer|undefined} container
|
|
|
|
|
- */
|
|
|
|
|
- constructor(container = void 0) {
|
|
|
|
|
- this.container = container instanceof ServiceContainer ? container : new ServiceContainer();
|
|
|
|
|
- }
|
|
|
|
|
- /**
|
|
|
|
|
- * Получить существующий или новый экземпляр.
|
|
|
|
|
- *
|
|
|
|
|
- * @param {*} ctor
|
|
|
|
|
- * @param {*} args
|
|
|
|
|
- * @return {*}
|
|
|
|
|
- */
|
|
|
|
|
- getService(ctor, ...args) {
|
|
|
|
|
- return this.container.get(ctor, ...args);
|
|
|
|
|
- }
|
|
|
|
|
- /**
|
|
|
|
|
- * Проверка существования конструктора в контейнере.
|
|
|
|
|
- *
|
|
|
|
|
- * @param {*} ctor
|
|
|
|
|
- * @return {boolean}
|
|
|
|
|
- */
|
|
|
|
|
- hasService(ctor) {
|
|
|
|
|
- return this.container.has(ctor);
|
|
|
|
|
- }
|
|
|
|
|
- /**
|
|
|
|
|
- * Добавить конструктор в контейнер.
|
|
|
|
|
- *
|
|
|
|
|
- * @param {*} ctor
|
|
|
|
|
- * @param {*} args
|
|
|
|
|
- * @return {this}
|
|
|
|
|
- */
|
|
|
|
|
- addService(ctor, ...args) {
|
|
|
|
|
- this.container.add(ctor, ...args);
|
|
|
|
|
- return this;
|
|
|
|
|
- }
|
|
|
|
|
- /**
|
|
|
|
|
- * Добавить конструктор и создать экземпляр.
|
|
|
|
|
- *
|
|
|
|
|
- * @param {*} ctor
|
|
|
|
|
- * @param {*} args
|
|
|
|
|
- * @return {this}
|
|
|
|
|
- */
|
|
|
|
|
- useService(ctor, ...args) {
|
|
|
|
|
- this.container.use(ctor, ...args);
|
|
|
|
|
- return this;
|
|
|
|
|
- }
|
|
|
|
|
- /**
|
|
|
|
|
- * Добавить конструктор и связанный экземпляр.
|
|
|
|
|
- *
|
|
|
|
|
- * @param {*} ctor
|
|
|
|
|
- * @param {*} service
|
|
|
|
|
- * @return {this}
|
|
|
|
|
- */
|
|
|
|
|
- setService(ctor, service) {
|
|
|
|
|
- this.container.set(ctor, service);
|
|
|
|
|
- return this;
|
|
|
|
|
- }
|
|
|
|
|
-};
|
|
|
|
|
-__name(_Service, "Service");
|
|
|
|
|
-/**
|
|
|
|
|
- * Kind.
|
|
|
|
|
- *
|
|
|
|
|
- * @type {string}
|
|
|
|
|
- */
|
|
|
|
|
-__publicField(_Service, "kind", "Service");
|
|
|
|
|
-var Service = _Service;
|
|
|
|
|
|
|
+__reExport(src_exports, require("./service.js"), module.exports);
|
|
|
|
|
+__reExport(src_exports, require("./service-container.js"), module.exports);
|
|
|
// Annotate the CommonJS export names for ESM import in node:
|
|
// Annotate the CommonJS export names for ESM import in node:
|
|
|
0 && (module.exports = {
|
|
0 && (module.exports = {
|
|
|
- Service,
|
|
|
|
|
- ServiceContainer
|
|
|
|
|
|
|
+ ...require("./service.js"),
|
|
|
|
|
+ ...require("./service-container.js")
|
|
|
});
|
|
});
|