UNPKG

@ncodedcode/ncode_react_lib

Version:

ncode react application context library

52 lines 1.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ServiceLocator = exports.ServiceScope = void 0; var ServiceScope; (function (ServiceScope) { ServiceScope[ServiceScope["factory"] = 0] = "factory"; ServiceScope[ServiceScope["single"] = 1] = "single"; })(ServiceScope = exports.ServiceScope || (exports.ServiceScope = {})); var InstanceFactory = (function () { function InstanceFactory(scope, creator) { this.scope = scope; this.creator = creator; this.instance = null; } return InstanceFactory; }()); var ServiceLocator = (function () { function ServiceLocator() { } ServiceLocator.prototype.regist = function (scope, name, creator) { var factory = new InstanceFactory(scope, creator); ServiceLocator._instances[name] = factory; }; ServiceLocator.prototype.resolve = function (name) { var instance = ServiceLocator._instances[name]; if (!instance) { throw new Error("regist ".concat(name, " first!!")); } var factory = instance; if (factory.scope === ServiceScope.single) { if (factory.instance == null && factory.creator != null) { factory.instance = factory.creator(this); factory.creator = null; } return factory.instance; } if (factory.creator != null) { return factory.creator(this); } throw new Error("regist ".concat(name, " first!!")); }; ServiceLocator.prototype.registFactory = function (name, creator) { this.regist(ServiceScope.factory, name, creator); }; ServiceLocator.prototype.registSingle = function (name, creator) { this.regist(ServiceScope.single, name, creator); }; ServiceLocator._instances = {}; return ServiceLocator; }()); exports.ServiceLocator = ServiceLocator; //# sourceMappingURL=ServiceLocator.js.map