UNPKG

cds-routing-handlers

Version:

Package to route and implement CDS handlers via a class based approach in Typescript.

61 lines 1.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getFromContainer = exports.useContainer = void 0; /** * Container to be used by this library for inversion control. If container was not implicitly set then by default * container simply creates a new instance of the given class. */ var defaultContainer = new (/** @class */ (function () { function class_1() { this.instances = []; } class_1.prototype.get = function (someClass) { var instance = this.instances.find(function (instance) { return instance.type === someClass; }); if (!instance) { instance = { type: someClass, object: new someClass() }; this.instances.push(instance); } return instance.object; }; return class_1; }()))(); var userContainer; var userContainerOptions; /** * Sets container to be used by this library. * * @export * @param {{ get(someClass: any): any }} iocContainer * @param {IUseContainerOptions} [options] */ function useContainer(iocContainer, options) { userContainer = iocContainer; userContainerOptions = options; } exports.useContainer = useContainer; /** * Gets the IOC container used by this library. * * @export * @template T * @param {({ new (...args: any[]): T } | Function)} someClass * @returns {T} */ function getFromContainer(someClass) { if (userContainer) { try { var instance = userContainer.get(someClass); if (instance) return instance; if (!userContainerOptions || !userContainerOptions.fallback) return instance; } catch (error) { if (!userContainerOptions || !userContainerOptions.fallbackOnErrors) throw error; } } return defaultContainer.get(someClass); } exports.getFromContainer = getFromContainer; //# sourceMappingURL=container.js.map