UNPKG

@baizey/dependency-injection

Version:
58 lines (57 loc) 2.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ServiceProvider = void 0; var utils_1 = require("../utils"); var ServiceProvider = /** @class */ (function () { function ServiceProvider(lifetimes) { Object.defineProperty(this, "instances", { enumerable: true, configurable: true, writable: true, value: void 0 }); Object.defineProperty(this, "lifetimes", { enumerable: true, configurable: true, writable: true, value: void 0 }); Object.defineProperty(this, "proxy", { enumerable: true, configurable: true, writable: true, value: void 0 }); this.instances = {}; this.lifetimes = lifetimes; this.proxy = new Proxy(this, { get: function (t, p) { return t.provide(p); } }); } Object.defineProperty(ServiceProvider.prototype, "createProxy", { enumerable: false, configurable: true, writable: true, value: function (context) { var _a; return (_a = context === null || context === void 0 ? void 0 : context.proxy) !== null && _a !== void 0 ? _a : this.proxy; } }); Object.defineProperty(ServiceProvider.prototype, "provide", { enumerable: false, configurable: true, writable: true, value: function (selector, context) { var _a; var key = (0, utils_1.extractSelector)(selector); var stored = (_a = context === null || context === void 0 ? void 0 : context.instances[key]) !== null && _a !== void 0 ? _a : this.instances[key]; if (stored !== undefined) return stored; if (context === undefined) { context = { instances: {} }; context.proxy = new Proxy(this, { get: function (t, p) { return t.provide(p, context); } }); } return this.lifetimes[key].provide(this, context); } }); return ServiceProvider; }()); exports.ServiceProvider = ServiceProvider;