diff options
Diffstat (limited to 'src/node_modules/class-validator/esm5/container.js')
-rw-r--r-- | src/node_modules/class-validator/esm5/container.js | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/node_modules/class-validator/esm5/container.js b/src/node_modules/class-validator/esm5/container.js new file mode 100644 index 0000000..6cbaf33 --- /dev/null +++ b/src/node_modules/class-validator/esm5/container.js @@ -0,0 +1,48 @@ +/** + * 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 function useContainer(iocContainer, options) { + userContainer = iocContainer; + userContainerOptions = options; +} +/** + * Gets the IOC container used by this library. + */ +export 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); +} + +//# sourceMappingURL=container.js.map |