UNPKG

tsioc

Version:

tsioc is AOP, Ioc container, via typescript decorator

105 lines (103 loc) 3.97 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports, "__esModule", { value: true }); var index_1 = require("../../utils/index"); var index_2 = require("../decorators/index"); /** * Provider Map * * @export * @class Providers */ var ProviderMap = /** @class */ (function () { function ProviderMap(container) { this.container = container; this.maps = new index_1.MapSet(); } ProviderMap.prototype.has = function (provide) { return this.maps.has(provide); }; ProviderMap.prototype.get = function (provide) { return this.maps.get(provide); }; ProviderMap.prototype.add = function (provide, provider) { var _this = this; if (index_1.isUndefined(provide)) { return this; } var factory; if (index_1.isToken(provider) && this.container.has(provider)) { factory = function () { var providers = []; for (var _i = 0; _i < arguments.length; _i++) { providers[_i] = arguments[_i]; } return (_a = _this.container).resolve.apply(_a, [provider].concat(providers)); var _a; }; } else { if (index_1.isFunction(provider)) { factory = function () { var providers = []; for (var _i = 0; _i < arguments.length; _i++) { providers[_i] = arguments[_i]; } return provider.apply(void 0, [_this.container].concat(providers)); }; } else { factory = function () { return provider; }; } } this.maps.set(provide, factory); return this; }; ProviderMap.prototype.remove = function (provide) { if (this.maps.has(provide)) { this.maps.delete(provide); } return this; }; ProviderMap.prototype.resolve = function (provide) { var providers = []; for (var _i = 1; _i < arguments.length; _i++) { providers[_i - 1] = arguments[_i]; } if (!this.maps.has(provide)) { return (!index_1.isNumber(provide) && this.container.has(provide)) ? (_a = this.container).resolve.apply(_a, [provide].concat(providers)) : null; } var provider = this.maps.get(provide); return index_1.isToken(provider) ? (_b = this.container).resolve.apply(_b, [provider].concat(providers)) : provider.apply(void 0, providers); var _a, _b; }; ProviderMap.prototype.forEach = function (express) { this.maps.forEach(express); }; ProviderMap.prototype.copy = function (map) { var _this = this; if (!map) { return; } map.forEach(function (val, token) { _this.maps.set(token, val); }); }; ProviderMap = __decorate([ index_2.NonePointcut(), __metadata("design:paramtypes", [Object]) ], ProviderMap); return ProviderMap; }()); exports.ProviderMap = ProviderMap; //# sourceMappingURL=../../sourcemaps/core/providers/ProviderMap.js.map