@web-atoms/core
Version:
52 lines (51 loc) • 1.68 kB
JavaScript
System.register(["../core/types", "./ServiceCollection"], function (_export, _context) {
"use strict";
var DI, Scope, ServiceCollection, globalNS;
function evalGlobal(path) {
if (typeof path === "string") {
let r = globalNS;
for (const iterator of path.split(".")) {
r = r[iterator];
if (r === undefined || r === null) {
return r;
}
}
return r;
}
return path;
}
function Register(id, scope) {
return target => {
if (typeof id === "object") {
if (scope) {
id.scope = scope;
}
ServiceCollection.instance.register(id.for || target, id.for ? sp => sp.create(target) : null, id.scope || Scope.Transient, id.id);
if (id.mockOrInject) {
if (id.mockOrInject.inject) {
DI.inject(target, id.mockOrInject.inject);
} else if (id.mockOrInject.mock) {
DI.mockType(target, id.mockOrInject.mock);
} else if (id.mockOrInject.globalVar) {
ServiceCollection.instance.register(id.for || target, sp => evalGlobal(id.mockOrInject.globalVar), id.scope || Scope.Global, id.id);
}
}
return;
}
ServiceCollection.instance.register(target, null, scope, id);
};
}
_export("Register", Register);
return {
setters: [function (_coreTypes) {
DI = _coreTypes.DI;
}, function (_ServiceCollection) {
Scope = _ServiceCollection.Scope;
ServiceCollection = _ServiceCollection.ServiceCollection;
}],
execute: function () {
globalNS = typeof global === "undefined" ? window : global;
}
};
});
//# sourceMappingURL=Register.js.map