const require_rolldown_runtime = require('../../../../../../_virtual/rolldown_runtime.js');

//#region ../../node_modules/.pnpm/class-validator@0.14.1/node_modules/class-validator/cjs/container.js
var require_container = /* @__PURE__ */ require_rolldown_runtime.__commonJS({ "../../node_modules/.pnpm/class-validator@0.14.1/node_modules/class-validator/cjs/container.js": ((exports) => {
	Object.defineProperty(exports, "__esModule", { value: true });
	/**
	* 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$1) => instance$1.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.
	*/
	function useContainer(iocContainer, options) {
		userContainer = iocContainer;
		userContainerOptions = options;
	}
	exports.useContainer = useContainer;
	/**
	* Gets the IOC container used by this library.
	*/
	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);
	}
	exports.getFromContainer = getFromContainer;
}) });

//#endregion
Object.defineProperty(exports, 'default', {
  enumerable: true,
  get: function () {
    return require_container();
  }
});