diff options
Diffstat (limited to 'src/node_modules/class-validator/esm2015/container.js')
-rw-r--r-- | src/node_modules/class-validator/esm2015/container.js | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/node_modules/class-validator/esm2015/container.js b/src/node_modules/class-validator/esm2015/container.js new file mode 100644 index 0000000..6e93b02 --- /dev/null +++ b/src/node_modules/class-validator/esm2015/container.js @@ -0,0 +1,47 @@ +/** + * 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. + */ +const defaultContainer = new (class { + constructor() { + this.instances = []; + } + get(someClass) { + let instance = this.instances.find(instance => instance.type === someClass); + if (!instance) { + instance = { type: someClass, object: new someClass() }; + this.instances.push(instance); + } + return instance.object; + } +})(); +let userContainer; +let 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 { + const 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 |