summaryrefslogtreecommitdiff
path: root/src/node_modules/class-validator/esm2015/container.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/node_modules/class-validator/esm2015/container.js')
-rw-r--r--src/node_modules/class-validator/esm2015/container.js47
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