UNPKG

@web-atoms/core-docs

Version:
54 lines 2.28 kB
(function (factory) { if (typeof module === "object" && typeof module.exports === "object") { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === "function" && define.amd) { define(["require", "exports", "../core/types", "./ServiceCollection"], factory); } })(function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Register = void 0; const types_1 = require("../core/types"); const ServiceCollection_1 = require("./ServiceCollection"); const globalNS = (typeof global === "undefined") ? window : global; 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_1.ServiceCollection.instance.register(id.for || target, id.for ? (sp) => sp.create(target) : null, id.scope || ServiceCollection_1.Scope.Transient, id.id); if (id.mockOrInject) { if (id.mockOrInject.inject) { types_1.DI.inject(target, id.mockOrInject.inject); } else if (id.mockOrInject.mock) { types_1.DI.mockType(target, id.mockOrInject.mock); } else if (id.mockOrInject.globalVar) { ServiceCollection_1.ServiceCollection.instance.register(id.for || target, (sp) => evalGlobal(id.mockOrInject.globalVar), id.scope || ServiceCollection_1.Scope.Global, id.id); } } return; } ServiceCollection_1.ServiceCollection.instance.register(target, null, scope, id); }; } exports.Register = Register; }); //# sourceMappingURL=Register.js.map