@ncodedcode/ncode_react_lib
Version:
ncode react application context library
52 lines • 1.95 kB
JavaScript
;
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