UNPKG

@baizey/dependency-injection

Version:
74 lines (73 loc) 2.47 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.SingletonLifetime = void 0; exports.singleton = singleton; var SingletonLifetime = /** @class */ (function () { function SingletonLifetime(name, factory) { Object.defineProperty(this, "factory", { enumerable: true, configurable: true, writable: true, value: void 0 }); Object.defineProperty(this, "name", { enumerable: true, configurable: true, writable: true, value: void 0 }); Object.defineProperty(this, "isSingleton", { enumerable: true, configurable: true, writable: true, value: true }); this.name = name; this.factory = factory; } Object.defineProperty(SingletonLifetime.prototype, "provide", { enumerable: false, configurable: true, writable: true, value: function (provider, context) { var instances = provider.instances; if (!(this.name in instances)) instances[this.name] = this.factory(provider.createProxy(context), undefined, provider, context); return instances[this.name]; } }); Object.defineProperty(SingletonLifetime.prototype, "validate", { enumerable: false, configurable: true, writable: true, value: function (provider, context) { return this.provide(provider, context); } }); Object.defineProperty(SingletonLifetime.prototype, "clone", { enumerable: false, configurable: true, writable: true, value: function () { return new SingletonLifetime(this.name, this.factory); } }); return SingletonLifetime; }()); exports.SingletonLifetime = SingletonLifetime; function singleton(dep) { return typeof dep === 'function' ? { lifetime: SingletonLifetime, constructor: dep } : __assign({ lifetime: SingletonLifetime }, dep); }