{"version":3,"sources":["node_modules/validator/lib/util/assertString.js","node_modules/validator/lib/util/merge.js","node_modules/validator/lib/isFQDN.js","node_modules/validator/lib/isIP.js","node_modules/validator/lib/isURL.js","node_modules/class-transformer/esm2015/enums/transformation-type.enum.js","node_modules/class-transformer/esm2015/MetadataStorage.js","node_modules/class-transformer/esm2015/storage.js","node_modules/class-transformer/esm2015/utils/get-global.util.js","node_modules/class-transformer/esm2015/utils/is-promise.util.js","node_modules/class-transformer/esm2015/TransformOperationExecutor.js","node_modules/class-transformer/esm2015/constants/default-options.constant.js","node_modules/class-transformer/esm2015/ClassTransformer.js","node_modules/class-transformer/esm2015/decorators/expose.decorator.js","node_modules/class-transformer/esm2015/decorators/transform.decorator.js","node_modules/class-transformer/esm2015/index.js","node_modules/class-validator/esm2015/metadata/ValidationMetadata.js","node_modules/class-validator/esm2015/validation-schema/ValidationSchemaToMetadataTransformer.js","node_modules/class-validator/esm2015/utils/get-global.util.js","node_modules/class-validator/esm2015/metadata/MetadataStorage.js","node_modules/src/validation/ValidationTypes.ts","node_modules/class-validator/esm2015/container.js","node_modules/class-validator/esm2015/metadata/ConstraintMetadata.js","node_modules/class-validator/esm2015/register-decorator.js","node_modules/class-validator/esm2015/decorator/common/ValidateBy.js","node_modules/class-validator/esm2015/decorator/string/IsUrl.js","apps/toolkits-frontend/src/app/app.config.ts"],"sourcesContent":["\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = assertString;\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction assertString(input) {\n var isString = typeof input === 'string' || input instanceof String;\n if (!isString) {\n var invalidType = _typeof(input);\n if (input === null) invalidType = 'null';else if (invalidType === 'object') invalidType = input.constructor.name;\n throw new TypeError(\"Expected a string but received a \".concat(invalidType));\n }\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = merge;\nfunction merge() {\n var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var defaults = arguments.length > 1 ? arguments[1] : undefined;\n for (var key in defaults) {\n if (typeof obj[key] === 'undefined') {\n obj[key] = defaults[key];\n }\n }\n return obj;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isFQDN;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nvar default_fqdn_options = {\n require_tld: true,\n allow_underscores: false,\n allow_trailing_dot: false,\n allow_numeric_tld: false,\n allow_wildcard: false,\n ignore_max_length: false\n};\nfunction isFQDN(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_fqdn_options);\n\n /* Remove the optional trailing dot before checking validity */\n if (options.allow_trailing_dot && str[str.length - 1] === '.') {\n str = str.substring(0, str.length - 1);\n }\n\n /* Remove the optional wildcard before checking validity */\n if (options.allow_wildcard === true && str.indexOf('*.') === 0) {\n str = str.substring(2);\n }\n var parts = str.split('.');\n var tld = parts[parts.length - 1];\n if (options.require_tld) {\n // disallow fqdns without tld\n if (parts.length < 2) {\n return false;\n }\n if (!options.allow_numeric_tld && !/^([a-z\\u00A1-\\u00A8\\u00AA-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]{2,}|xn[a-z0-9-]{2,})$/i.test(tld)) {\n return false;\n }\n\n // disallow spaces\n if (/\\s/.test(tld)) {\n return false;\n }\n }\n\n // reject numeric TLDs\n if (!options.allow_numeric_tld && /^\\d+$/.test(tld)) {\n return false;\n }\n return parts.every(function (part) {\n if (part.length > 63 && !options.ignore_max_length) {\n return false;\n }\n if (!/^[a-z_\\u00a1-\\uffff0-9-]+$/i.test(part)) {\n return false;\n }\n\n // disallow full-width chars\n if (/[\\uff01-\\uff5e]/.test(part)) {\n return false;\n }\n\n // disallow parts starting or ending with hyphen\n if (/^-|-$/.test(part)) {\n return false;\n }\n if (!options.allow_underscores && /_/.test(part)) {\n return false;\n }\n return true;\n });\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isIP;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n/**\n11.3. Examples\n\n The following addresses\n\n fe80::1234 (on the 1st link of the node)\n ff02::5678 (on the 5th link of the node)\n ff08::9abc (on the 10th organization of the node)\n\n would be represented as follows:\n\n fe80::1234%1\n ff02::5678%5\n ff08::9abc%10\n\n (Here we assume a natural translation from a zone index to the\n part, where the Nth zone of any scope is translated into\n \"N\".)\n\n If we use interface names as , those addresses could also be\n represented as follows:\n\n fe80::1234%ne0\n ff02::5678%pvc1.3\n ff08::9abc%interface10\n\n where the interface \"ne0\" belongs to the 1st link, \"pvc1.3\" belongs\n to the 5th link, and \"interface10\" belongs to the 10th organization.\n * * */\nvar IPv4SegmentFormat = '(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';\nvar IPv4AddressFormat = \"(\".concat(IPv4SegmentFormat, \"[.]){3}\").concat(IPv4SegmentFormat);\nvar IPv4AddressRegExp = new RegExp(\"^\".concat(IPv4AddressFormat, \"$\"));\nvar IPv6SegmentFormat = '(?:[0-9a-fA-F]{1,4})';\nvar IPv6AddressRegExp = new RegExp('^(' + \"(?:\".concat(IPv6SegmentFormat, \":){7}(?:\").concat(IPv6SegmentFormat, \"|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){6}(?:\").concat(IPv4AddressFormat, \"|:\").concat(IPv6SegmentFormat, \"|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){5}(?::\").concat(IPv4AddressFormat, \"|(:\").concat(IPv6SegmentFormat, \"){1,2}|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){4}(?:(:\").concat(IPv6SegmentFormat, \"){0,1}:\").concat(IPv4AddressFormat, \"|(:\").concat(IPv6SegmentFormat, \"){1,3}|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){3}(?:(:\").concat(IPv6SegmentFormat, \"){0,2}:\").concat(IPv4AddressFormat, \"|(:\").concat(IPv6SegmentFormat, \"){1,4}|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){2}(?:(:\").concat(IPv6SegmentFormat, \"){0,3}:\").concat(IPv4AddressFormat, \"|(:\").concat(IPv6SegmentFormat, \"){1,5}|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){1}(?:(:\").concat(IPv6SegmentFormat, \"){0,4}:\").concat(IPv4AddressFormat, \"|(:\").concat(IPv6SegmentFormat, \"){1,6}|:)|\") + \"(?::((?::\".concat(IPv6SegmentFormat, \"){0,5}:\").concat(IPv4AddressFormat, \"|(?::\").concat(IPv6SegmentFormat, \"){1,7}|:))\") + ')(%[0-9a-zA-Z-.:]{1,})?$');\nfunction isIP(str) {\n var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n (0, _assertString.default)(str);\n version = String(version);\n if (!version) {\n return isIP(str, 4) || isIP(str, 6);\n }\n if (version === '4') {\n return IPv4AddressRegExp.test(str);\n }\n if (version === '6') {\n return IPv6AddressRegExp.test(str);\n }\n return false;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isURL;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _isFQDN = _interopRequireDefault(require(\"./isFQDN\"));\nvar _isIP = _interopRequireDefault(require(\"./isIP\"));\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n/*\noptions for isURL method\n\nrequire_protocol - if set as true isURL will return false if protocol is not present in the URL\nrequire_valid_protocol - isURL will check if the URL's protocol is present in the protocols option\nprotocols - valid protocols can be modified with this option\nrequire_host - if set as false isURL will not check if host is present in the URL\nrequire_port - if set as true isURL will check if port is present in the URL\nallow_protocol_relative_urls - if set as true protocol relative URLs will be allowed\nvalidate_length - if set as false isURL will skip string length validation (IE maximum is 2083)\n\n*/\n\nvar default_url_options = {\n protocols: ['http', 'https', 'ftp'],\n require_tld: true,\n require_protocol: false,\n require_host: true,\n require_port: false,\n require_valid_protocol: true,\n allow_underscores: false,\n allow_trailing_dot: false,\n allow_protocol_relative_urls: false,\n allow_fragments: true,\n allow_query_components: true,\n validate_length: true\n};\nvar wrapped_ipv6 = /^\\[([^\\]]+)\\](?::([0-9]+))?$/;\nfunction isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n}\nfunction checkHost(host, matches) {\n for (var i = 0; i < matches.length; i++) {\n var match = matches[i];\n if (host === match || isRegExp(match) && match.test(host)) {\n return true;\n }\n }\n return false;\n}\nfunction isURL(url, options) {\n (0, _assertString.default)(url);\n if (!url || /[\\s<>]/.test(url)) {\n return false;\n }\n if (url.indexOf('mailto:') === 0) {\n return false;\n }\n options = (0, _merge.default)(options, default_url_options);\n if (options.validate_length && url.length >= 2083) {\n return false;\n }\n if (!options.allow_fragments && url.includes('#')) {\n return false;\n }\n if (!options.allow_query_components && (url.includes('?') || url.includes('&'))) {\n return false;\n }\n var protocol, auth, host, hostname, port, port_str, split, ipv6;\n split = url.split('#');\n url = split.shift();\n split = url.split('?');\n url = split.shift();\n split = url.split('://');\n if (split.length > 1) {\n protocol = split.shift().toLowerCase();\n if (options.require_valid_protocol && options.protocols.indexOf(protocol) === -1) {\n return false;\n }\n } else if (options.require_protocol) {\n return false;\n } else if (url.slice(0, 2) === '//') {\n if (!options.allow_protocol_relative_urls) {\n return false;\n }\n split[0] = url.slice(2);\n }\n url = split.join('://');\n if (url === '') {\n return false;\n }\n split = url.split('/');\n url = split.shift();\n if (url === '' && !options.require_host) {\n return true;\n }\n split = url.split('@');\n if (split.length > 1) {\n if (options.disallow_auth) {\n return false;\n }\n if (split[0] === '') {\n return false;\n }\n auth = split.shift();\n if (auth.indexOf(':') >= 0 && auth.split(':').length > 2) {\n return false;\n }\n var _auth$split = auth.split(':'),\n _auth$split2 = _slicedToArray(_auth$split, 2),\n user = _auth$split2[0],\n password = _auth$split2[1];\n if (user === '' && password === '') {\n return false;\n }\n }\n hostname = split.join('@');\n port_str = null;\n ipv6 = null;\n var ipv6_match = hostname.match(wrapped_ipv6);\n if (ipv6_match) {\n host = '';\n ipv6 = ipv6_match[1];\n port_str = ipv6_match[2] || null;\n } else {\n split = hostname.split(':');\n host = split.shift();\n if (split.length) {\n port_str = split.join(':');\n }\n }\n if (port_str !== null && port_str.length > 0) {\n port = parseInt(port_str, 10);\n if (!/^[0-9]+$/.test(port_str) || port <= 0 || port > 65535) {\n return false;\n }\n } else if (options.require_port) {\n return false;\n }\n if (options.host_whitelist) {\n return checkHost(host, options.host_whitelist);\n }\n if (host === '' && !options.require_host) {\n return true;\n }\n if (!(0, _isIP.default)(host) && !(0, _isFQDN.default)(host, options) && (!ipv6 || !(0, _isIP.default)(ipv6, 6))) {\n return false;\n }\n host = host || ipv6;\n if (options.host_blacklist && checkHost(host, options.host_blacklist)) {\n return false;\n }\n return true;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","export var TransformationType = /*#__PURE__*/function (TransformationType) {\n TransformationType[TransformationType[\"PLAIN_TO_CLASS\"] = 0] = \"PLAIN_TO_CLASS\";\n TransformationType[TransformationType[\"CLASS_TO_PLAIN\"] = 1] = \"CLASS_TO_PLAIN\";\n TransformationType[TransformationType[\"CLASS_TO_CLASS\"] = 2] = \"CLASS_TO_CLASS\";\n return TransformationType;\n}(TransformationType || {});\n\n","import { TransformationType } from './enums';\n/**\n * Storage all library metadata.\n */\nexport class MetadataStorage {\n constructor() {\n // -------------------------------------------------------------------------\n // Properties\n // -------------------------------------------------------------------------\n this._typeMetadatas = new Map();\n this._transformMetadatas = new Map();\n this._exposeMetadatas = new Map();\n this._excludeMetadatas = new Map();\n this._ancestorsMap = new Map();\n }\n // -------------------------------------------------------------------------\n // Adder Methods\n // -------------------------------------------------------------------------\n addTypeMetadata(metadata) {\n if (!this._typeMetadatas.has(metadata.target)) {\n this._typeMetadatas.set(metadata.target, new Map());\n }\n this._typeMetadatas.get(metadata.target).set(metadata.propertyName, metadata);\n }\n addTransformMetadata(metadata) {\n if (!this._transformMetadatas.has(metadata.target)) {\n this._transformMetadatas.set(metadata.target, new Map());\n }\n if (!this._transformMetadatas.get(metadata.target).has(metadata.propertyName)) {\n this._transformMetadatas.get(metadata.target).set(metadata.propertyName, []);\n }\n this._transformMetadatas.get(metadata.target).get(metadata.propertyName).push(metadata);\n }\n addExposeMetadata(metadata) {\n if (!this._exposeMetadatas.has(metadata.target)) {\n this._exposeMetadatas.set(metadata.target, new Map());\n }\n this._exposeMetadatas.get(metadata.target).set(metadata.propertyName, metadata);\n }\n addExcludeMetadata(metadata) {\n if (!this._excludeMetadatas.has(metadata.target)) {\n this._excludeMetadatas.set(metadata.target, new Map());\n }\n this._excludeMetadatas.get(metadata.target).set(metadata.propertyName, metadata);\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n findTransformMetadatas(target, propertyName, transformationType) {\n return this.findMetadatas(this._transformMetadatas, target, propertyName).filter(metadata => {\n if (!metadata.options) return true;\n if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true) return true;\n if (metadata.options.toClassOnly === true) {\n return transformationType === TransformationType.CLASS_TO_CLASS || transformationType === TransformationType.PLAIN_TO_CLASS;\n }\n if (metadata.options.toPlainOnly === true) {\n return transformationType === TransformationType.CLASS_TO_PLAIN;\n }\n return true;\n });\n }\n findExcludeMetadata(target, propertyName) {\n return this.findMetadata(this._excludeMetadatas, target, propertyName);\n }\n findExposeMetadata(target, propertyName) {\n return this.findMetadata(this._exposeMetadatas, target, propertyName);\n }\n findExposeMetadataByCustomName(target, name) {\n return this.getExposedMetadatas(target).find(metadata => {\n return metadata.options && metadata.options.name === name;\n });\n }\n findTypeMetadata(target, propertyName) {\n return this.findMetadata(this._typeMetadatas, target, propertyName);\n }\n getStrategy(target) {\n const excludeMap = this._excludeMetadatas.get(target);\n const exclude = excludeMap && excludeMap.get(undefined);\n const exposeMap = this._exposeMetadatas.get(target);\n const expose = exposeMap && exposeMap.get(undefined);\n if (exclude && expose || !exclude && !expose) return 'none';\n return exclude ? 'excludeAll' : 'exposeAll';\n }\n getExposedMetadatas(target) {\n return this.getMetadata(this._exposeMetadatas, target);\n }\n getExcludedMetadatas(target) {\n return this.getMetadata(this._excludeMetadatas, target);\n }\n getExposedProperties(target, transformationType) {\n return this.getExposedMetadatas(target).filter(metadata => {\n if (!metadata.options) return true;\n if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true) return true;\n if (metadata.options.toClassOnly === true) {\n return transformationType === TransformationType.CLASS_TO_CLASS || transformationType === TransformationType.PLAIN_TO_CLASS;\n }\n if (metadata.options.toPlainOnly === true) {\n return transformationType === TransformationType.CLASS_TO_PLAIN;\n }\n return true;\n }).map(metadata => metadata.propertyName);\n }\n getExcludedProperties(target, transformationType) {\n return this.getExcludedMetadatas(target).filter(metadata => {\n if (!metadata.options) return true;\n if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true) return true;\n if (metadata.options.toClassOnly === true) {\n return transformationType === TransformationType.CLASS_TO_CLASS || transformationType === TransformationType.PLAIN_TO_CLASS;\n }\n if (metadata.options.toPlainOnly === true) {\n return transformationType === TransformationType.CLASS_TO_PLAIN;\n }\n return true;\n }).map(metadata => metadata.propertyName);\n }\n clear() {\n this._typeMetadatas.clear();\n this._exposeMetadatas.clear();\n this._excludeMetadatas.clear();\n this._ancestorsMap.clear();\n }\n // -------------------------------------------------------------------------\n // Private Methods\n // -------------------------------------------------------------------------\n getMetadata(metadatas, target) {\n const metadataFromTargetMap = metadatas.get(target);\n let metadataFromTarget;\n if (metadataFromTargetMap) {\n metadataFromTarget = Array.from(metadataFromTargetMap.values()).filter(meta => meta.propertyName !== undefined);\n }\n const metadataFromAncestors = [];\n for (const ancestor of this.getAncestors(target)) {\n const ancestorMetadataMap = metadatas.get(ancestor);\n if (ancestorMetadataMap) {\n const metadataFromAncestor = Array.from(ancestorMetadataMap.values()).filter(meta => meta.propertyName !== undefined);\n metadataFromAncestors.push(...metadataFromAncestor);\n }\n }\n return metadataFromAncestors.concat(metadataFromTarget || []);\n }\n findMetadata(metadatas, target, propertyName) {\n const metadataFromTargetMap = metadatas.get(target);\n if (metadataFromTargetMap) {\n const metadataFromTarget = metadataFromTargetMap.get(propertyName);\n if (metadataFromTarget) {\n return metadataFromTarget;\n }\n }\n for (const ancestor of this.getAncestors(target)) {\n const ancestorMetadataMap = metadatas.get(ancestor);\n if (ancestorMetadataMap) {\n const ancestorResult = ancestorMetadataMap.get(propertyName);\n if (ancestorResult) {\n return ancestorResult;\n }\n }\n }\n return undefined;\n }\n findMetadatas(metadatas, target, propertyName) {\n const metadataFromTargetMap = metadatas.get(target);\n let metadataFromTarget;\n if (metadataFromTargetMap) {\n metadataFromTarget = metadataFromTargetMap.get(propertyName);\n }\n const metadataFromAncestorsTarget = [];\n for (const ancestor of this.getAncestors(target)) {\n const ancestorMetadataMap = metadatas.get(ancestor);\n if (ancestorMetadataMap) {\n if (ancestorMetadataMap.has(propertyName)) {\n metadataFromAncestorsTarget.push(...ancestorMetadataMap.get(propertyName));\n }\n }\n }\n return metadataFromAncestorsTarget.slice().reverse().concat((metadataFromTarget || []).slice().reverse());\n }\n getAncestors(target) {\n if (!target) return [];\n if (!this._ancestorsMap.has(target)) {\n const ancestors = [];\n for (let baseClass = Object.getPrototypeOf(target.prototype.constructor); typeof baseClass.prototype !== 'undefined'; baseClass = Object.getPrototypeOf(baseClass.prototype.constructor)) {\n ancestors.push(baseClass);\n }\n this._ancestorsMap.set(target, ancestors);\n }\n return this._ancestorsMap.get(target);\n }\n}\n","import { MetadataStorage } from './MetadataStorage';\n/**\n * Default metadata storage is used as singleton and can be used to storage all metadatas.\n */\nexport const defaultMetadataStorage = new MetadataStorage();\n","/**\n * This function returns the global object across Node and browsers.\n *\n * Note: `globalThis` is the standardized approach however it has been added to\n * Node.js in version 12. We need to include this snippet until Node 12 EOL.\n */\nexport function getGlobal() {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Cannot find name 'window'.\n if (typeof window !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Cannot find name 'window'.\n return window;\n }\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Cannot find name 'self'.\n if (typeof self !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Cannot find name 'self'.\n return self;\n }\n}\n","export function isPromise(p) {\n return p !== null && typeof p === 'object' && typeof p.then === 'function';\n}\n","import { defaultMetadataStorage } from './storage';\nimport { TransformationType } from './enums';\nimport { getGlobal, isPromise } from './utils';\nfunction instantiateArrayType(arrayType) {\n const array = new arrayType();\n if (!(array instanceof Set) && !('push' in array)) {\n return [];\n }\n return array;\n}\nexport class TransformOperationExecutor {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n constructor(transformationType, options) {\n this.transformationType = transformationType;\n this.options = options;\n // -------------------------------------------------------------------------\n // Private Properties\n // -------------------------------------------------------------------------\n this.recursionStack = new Set();\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n transform(source, value, targetType, arrayType, isMap, level = 0) {\n if (Array.isArray(value) || value instanceof Set) {\n const newValue = arrayType && this.transformationType === TransformationType.PLAIN_TO_CLASS ? instantiateArrayType(arrayType) : [];\n value.forEach((subValue, index) => {\n const subSource = source ? source[index] : undefined;\n if (!this.options.enableCircularCheck || !this.isCircular(subValue)) {\n let realTargetType;\n if (typeof targetType !== 'function' && targetType && targetType.options && targetType.options.discriminator && targetType.options.discriminator.property && targetType.options.discriminator.subTypes) {\n if (this.transformationType === TransformationType.PLAIN_TO_CLASS) {\n realTargetType = targetType.options.discriminator.subTypes.find(subType => subType.name === subValue[targetType.options.discriminator.property]);\n const options = {\n newObject: newValue,\n object: subValue,\n property: undefined\n };\n const newType = targetType.typeFunction(options);\n realTargetType === undefined ? realTargetType = newType : realTargetType = realTargetType.value;\n if (!targetType.options.keepDiscriminatorProperty) delete subValue[targetType.options.discriminator.property];\n }\n if (this.transformationType === TransformationType.CLASS_TO_CLASS) {\n realTargetType = subValue.constructor;\n }\n if (this.transformationType === TransformationType.CLASS_TO_PLAIN) {\n subValue[targetType.options.discriminator.property] = targetType.options.discriminator.subTypes.find(subType => subType.value === subValue.constructor).name;\n }\n } else {\n realTargetType = targetType;\n }\n const value = this.transform(subSource, subValue, realTargetType, undefined, subValue instanceof Map, level + 1);\n if (newValue instanceof Set) {\n newValue.add(value);\n } else {\n newValue.push(value);\n }\n } else if (this.transformationType === TransformationType.CLASS_TO_CLASS) {\n if (newValue instanceof Set) {\n newValue.add(subValue);\n } else {\n newValue.push(subValue);\n }\n }\n });\n return newValue;\n } else if (targetType === String && !isMap) {\n if (value === null || value === undefined) return value;\n return String(value);\n } else if (targetType === Number && !isMap) {\n if (value === null || value === undefined) return value;\n return Number(value);\n } else if (targetType === Boolean && !isMap) {\n if (value === null || value === undefined) return value;\n return Boolean(value);\n } else if ((targetType === Date || value instanceof Date) && !isMap) {\n if (value instanceof Date) {\n return new Date(value.valueOf());\n }\n if (value === null || value === undefined) return value;\n return new Date(value);\n } else if (!!getGlobal().Buffer && (targetType === Buffer || value instanceof Buffer) && !isMap) {\n if (value === null || value === undefined) return value;\n return Buffer.from(value);\n } else if (isPromise(value) && !isMap) {\n return new Promise((resolve, reject) => {\n value.then(data => resolve(this.transform(undefined, data, targetType, undefined, undefined, level + 1)), reject);\n });\n } else if (!isMap && value !== null && typeof value === 'object' && typeof value.then === 'function') {\n // Note: We should not enter this, as promise has been handled above\n // This option simply returns the Promise preventing a JS error from happening and should be an inaccessible path.\n return value; // skip promise transformation\n } else if (typeof value === 'object' && value !== null) {\n // try to guess the type\n if (!targetType && value.constructor !== Object /* && TransformationType === TransformationType.CLASS_TO_PLAIN*/) if (!Array.isArray(value) && value.constructor === Array) {\n // Somebody attempts to convert special Array like object to Array, eg:\n // const evilObject = { '100000000': '100000000', __proto__: [] };\n // This could be used to cause Denial-of-service attack so we don't allow it.\n // See prevent-array-bomb.spec.ts for more details.\n } else {\n // We are good we can use the built-in constructor\n targetType = value.constructor;\n }\n if (!targetType && source) targetType = source.constructor;\n if (this.options.enableCircularCheck) {\n // add transformed type to prevent circular references\n this.recursionStack.add(value);\n }\n const keys = this.getKeys(targetType, value, isMap);\n let newValue = source ? source : {};\n if (!source && (this.transformationType === TransformationType.PLAIN_TO_CLASS || this.transformationType === TransformationType.CLASS_TO_CLASS)) {\n if (isMap) {\n newValue = new Map();\n } else if (targetType) {\n newValue = new targetType();\n } else {\n newValue = {};\n }\n }\n // traverse over keys\n for (const key of keys) {\n if (key === '__proto__' || key === 'constructor') {\n continue;\n }\n const valueKey = key;\n let newValueKey = key,\n propertyName = key;\n if (!this.options.ignoreDecorators && targetType) {\n if (this.transformationType === TransformationType.PLAIN_TO_CLASS) {\n const exposeMetadata = defaultMetadataStorage.findExposeMetadataByCustomName(targetType, key);\n if (exposeMetadata) {\n propertyName = exposeMetadata.propertyName;\n newValueKey = exposeMetadata.propertyName;\n }\n } else if (this.transformationType === TransformationType.CLASS_TO_PLAIN || this.transformationType === TransformationType.CLASS_TO_CLASS) {\n const exposeMetadata = defaultMetadataStorage.findExposeMetadata(targetType, key);\n if (exposeMetadata && exposeMetadata.options && exposeMetadata.options.name) {\n newValueKey = exposeMetadata.options.name;\n }\n }\n }\n // get a subvalue\n let subValue = undefined;\n if (this.transformationType === TransformationType.PLAIN_TO_CLASS) {\n /**\n * This section is added for the following report:\n * https://github.com/typestack/class-transformer/issues/596\n *\n * We should not call functions or constructors when transforming to class.\n */\n subValue = value[valueKey];\n } else {\n if (value instanceof Map) {\n subValue = value.get(valueKey);\n } else if (value[valueKey] instanceof Function) {\n subValue = value[valueKey]();\n } else {\n subValue = value[valueKey];\n }\n }\n // determine a type\n let type = undefined,\n isSubValueMap = subValue instanceof Map;\n if (targetType && isMap) {\n type = targetType;\n } else if (targetType) {\n const metadata = defaultMetadataStorage.findTypeMetadata(targetType, propertyName);\n if (metadata) {\n const options = {\n newObject: newValue,\n object: value,\n property: propertyName\n };\n const newType = metadata.typeFunction ? metadata.typeFunction(options) : metadata.reflectedType;\n if (metadata.options && metadata.options.discriminator && metadata.options.discriminator.property && metadata.options.discriminator.subTypes) {\n if (!(value[valueKey] instanceof Array)) {\n if (this.transformationType === TransformationType.PLAIN_TO_CLASS) {\n type = metadata.options.discriminator.subTypes.find(subType => {\n if (subValue && subValue instanceof Object && metadata.options.discriminator.property in subValue) {\n return subType.name === subValue[metadata.options.discriminator.property];\n }\n });\n type === undefined ? type = newType : type = type.value;\n if (!metadata.options.keepDiscriminatorProperty) {\n if (subValue && subValue instanceof Object && metadata.options.discriminator.property in subValue) {\n delete subValue[metadata.options.discriminator.property];\n }\n }\n }\n if (this.transformationType === TransformationType.CLASS_TO_CLASS) {\n type = subValue.constructor;\n }\n if (this.transformationType === TransformationType.CLASS_TO_PLAIN) {\n if (subValue) {\n subValue[metadata.options.discriminator.property] = metadata.options.discriminator.subTypes.find(subType => subType.value === subValue.constructor).name;\n }\n }\n } else {\n type = metadata;\n }\n } else {\n type = newType;\n }\n isSubValueMap = isSubValueMap || metadata.reflectedType === Map;\n } else if (this.options.targetMaps) {\n // try to find a type in target maps\n this.options.targetMaps.filter(map => map.target === targetType && !!map.properties[propertyName]).forEach(map => type = map.properties[propertyName]);\n } else if (this.options.enableImplicitConversion && this.transformationType === TransformationType.PLAIN_TO_CLASS) {\n // if we have no registererd type via the @Type() decorator then we check if we have any\n // type declarations in reflect-metadata (type declaration is emited only if some decorator is added to the property.)\n const reflectedType = Reflect.getMetadata('design:type', targetType.prototype, propertyName);\n if (reflectedType) {\n type = reflectedType;\n }\n }\n }\n // if value is an array try to get its custom array type\n const arrayType = Array.isArray(value[valueKey]) ? this.getReflectedType(targetType, propertyName) : undefined;\n // const subValueKey = TransformationType === TransformationType.PLAIN_TO_CLASS && newKeyName ? newKeyName : key;\n const subSource = source ? source[valueKey] : undefined;\n // if its deserialization then type if required\n // if we uncomment this types like string[] will not work\n // if (this.transformationType === TransformationType.PLAIN_TO_CLASS && !type && subValue instanceof Object && !(subValue instanceof Date))\n // throw new Error(`Cannot determine type for ${(targetType as any).name }.${propertyName}, did you forget to specify a @Type?`);\n // if newValue is a source object that has method that match newKeyName then skip it\n if (newValue.constructor.prototype) {\n const descriptor = Object.getOwnPropertyDescriptor(newValue.constructor.prototype, newValueKey);\n if ((this.transformationType === TransformationType.PLAIN_TO_CLASS || this.transformationType === TransformationType.CLASS_TO_CLASS) && (\n // eslint-disable-next-line @typescript-eslint/unbound-method\n descriptor && !descriptor.set || newValue[newValueKey] instanceof Function))\n // || TransformationType === TransformationType.CLASS_TO_CLASS\n continue;\n }\n if (!this.options.enableCircularCheck || !this.isCircular(subValue)) {\n const transformKey = this.transformationType === TransformationType.PLAIN_TO_CLASS ? newValueKey : key;\n let finalValue;\n if (this.transformationType === TransformationType.CLASS_TO_PLAIN) {\n // Get original value\n finalValue = value[transformKey];\n // Apply custom transformation\n finalValue = this.applyCustomTransformations(finalValue, targetType, transformKey, value, this.transformationType);\n // If nothing change, it means no custom transformation was applied, so use the subValue.\n finalValue = value[transformKey] === finalValue ? subValue : finalValue;\n // Apply the default transformation\n finalValue = this.transform(subSource, finalValue, type, arrayType, isSubValueMap, level + 1);\n } else {\n if (subValue === undefined && this.options.exposeDefaultValues) {\n // Set default value if nothing provided\n finalValue = newValue[newValueKey];\n } else {\n finalValue = this.transform(subSource, subValue, type, arrayType, isSubValueMap, level + 1);\n finalValue = this.applyCustomTransformations(finalValue, targetType, transformKey, value, this.transformationType);\n }\n }\n if (finalValue !== undefined || this.options.exposeUnsetFields) {\n if (newValue instanceof Map) {\n newValue.set(newValueKey, finalValue);\n } else {\n newValue[newValueKey] = finalValue;\n }\n }\n } else if (this.transformationType === TransformationType.CLASS_TO_CLASS) {\n let finalValue = subValue;\n finalValue = this.applyCustomTransformations(finalValue, targetType, key, value, this.transformationType);\n if (finalValue !== undefined || this.options.exposeUnsetFields) {\n if (newValue instanceof Map) {\n newValue.set(newValueKey, finalValue);\n } else {\n newValue[newValueKey] = finalValue;\n }\n }\n }\n }\n if (this.options.enableCircularCheck) {\n this.recursionStack.delete(value);\n }\n return newValue;\n } else {\n return value;\n }\n }\n applyCustomTransformations(value, target, key, obj, transformationType) {\n let metadatas = defaultMetadataStorage.findTransformMetadatas(target, key, this.transformationType);\n // apply versioning options\n if (this.options.version !== undefined) {\n metadatas = metadatas.filter(metadata => {\n if (!metadata.options) return true;\n return this.checkVersion(metadata.options.since, metadata.options.until);\n });\n }\n // apply grouping options\n if (this.options.groups && this.options.groups.length) {\n metadatas = metadatas.filter(metadata => {\n if (!metadata.options) return true;\n return this.checkGroups(metadata.options.groups);\n });\n } else {\n metadatas = metadatas.filter(metadata => {\n return !metadata.options || !metadata.options.groups || !metadata.options.groups.length;\n });\n }\n metadatas.forEach(metadata => {\n value = metadata.transformFn({\n value,\n key,\n obj,\n type: transformationType,\n options: this.options\n });\n });\n return value;\n }\n // preventing circular references\n isCircular(object) {\n return this.recursionStack.has(object);\n }\n getReflectedType(target, propertyName) {\n if (!target) return undefined;\n const meta = defaultMetadataStorage.findTypeMetadata(target, propertyName);\n return meta ? meta.reflectedType : undefined;\n }\n getKeys(target, object, isMap) {\n // determine exclusion strategy\n let strategy = defaultMetadataStorage.getStrategy(target);\n if (strategy === 'none') strategy = this.options.strategy || 'exposeAll'; // exposeAll is default strategy\n // get all keys that need to expose\n let keys = [];\n if (strategy === 'exposeAll' || isMap) {\n if (object instanceof Map) {\n keys = Array.from(object.keys());\n } else {\n keys = Object.keys(object);\n }\n }\n if (isMap) {\n // expose & exclude do not apply for map keys only to fields\n return keys;\n }\n /**\n * If decorators are ignored but we don't want the extraneous values, then we use the\n * metadata to decide which property is needed, but doesn't apply the decorator effect.\n */\n if (this.options.ignoreDecorators && this.options.excludeExtraneousValues && target) {\n const exposedProperties = defaultMetadataStorage.getExposedProperties(target, this.transformationType);\n const excludedProperties = defaultMetadataStorage.getExcludedProperties(target, this.transformationType);\n keys = [...exposedProperties, ...excludedProperties];\n }\n if (!this.options.ignoreDecorators && target) {\n // add all exposed to list of keys\n let exposedProperties = defaultMetadataStorage.getExposedProperties(target, this.transformationType);\n if (this.transformationType === TransformationType.PLAIN_TO_CLASS) {\n exposedProperties = exposedProperties.map(key => {\n const exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key);\n if (exposeMetadata && exposeMetadata.options && exposeMetadata.options.name) {\n return exposeMetadata.options.name;\n }\n return key;\n });\n }\n if (this.options.excludeExtraneousValues) {\n keys = exposedProperties;\n } else {\n keys = keys.concat(exposedProperties);\n }\n // exclude excluded properties\n const excludedProperties = defaultMetadataStorage.getExcludedProperties(target, this.transformationType);\n if (excludedProperties.length > 0) {\n keys = keys.filter(key => {\n return !excludedProperties.includes(key);\n });\n }\n // apply versioning options\n if (this.options.version !== undefined) {\n keys = keys.filter(key => {\n const exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key);\n if (!exposeMetadata || !exposeMetadata.options) return true;\n return this.checkVersion(exposeMetadata.options.since, exposeMetadata.options.until);\n });\n }\n // apply grouping options\n if (this.options.groups && this.options.groups.length) {\n keys = keys.filter(key => {\n const exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key);\n if (!exposeMetadata || !exposeMetadata.options) return true;\n return this.checkGroups(exposeMetadata.options.groups);\n });\n } else {\n keys = keys.filter(key => {\n const exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key);\n return !exposeMetadata || !exposeMetadata.options || !exposeMetadata.options.groups || !exposeMetadata.options.groups.length;\n });\n }\n }\n // exclude prefixed properties\n if (this.options.excludePrefixes && this.options.excludePrefixes.length) {\n keys = keys.filter(key => this.options.excludePrefixes.every(prefix => {\n return key.substr(0, prefix.length) !== prefix;\n }));\n }\n // make sure we have unique keys\n keys = keys.filter((key, index, self) => {\n return self.indexOf(key) === index;\n });\n return keys;\n }\n checkVersion(since, until) {\n let decision = true;\n if (decision && since) decision = this.options.version >= since;\n if (decision && until) decision = this.options.version < until;\n return decision;\n }\n checkGroups(groups) {\n if (!groups) return true;\n return this.options.groups.some(optionGroup => groups.includes(optionGroup));\n }\n}\n","/**\n * These are the default options used by any transformation operation.\n */\nexport const defaultOptions = {\n enableCircularCheck: false,\n enableImplicitConversion: false,\n excludeExtraneousValues: false,\n excludePrefixes: undefined,\n exposeDefaultValues: false,\n exposeUnsetFields: true,\n groups: undefined,\n ignoreDecorators: false,\n strategy: undefined,\n targetMaps: undefined,\n version: undefined\n};\n","import { TransformOperationExecutor } from './TransformOperationExecutor';\nimport { TransformationType } from './enums';\nimport { defaultOptions } from './constants/default-options.constant';\nexport class ClassTransformer {\n instanceToPlain(object, options) {\n const executor = new TransformOperationExecutor(TransformationType.CLASS_TO_PLAIN, {\n ...defaultOptions,\n ...options\n });\n return executor.transform(undefined, object, undefined, undefined, undefined, undefined);\n }\n classToPlainFromExist(object, plainObject, options) {\n const executor = new TransformOperationExecutor(TransformationType.CLASS_TO_PLAIN, {\n ...defaultOptions,\n ...options\n });\n return executor.transform(plainObject, object, undefined, undefined, undefined, undefined);\n }\n plainToInstance(cls, plain, options) {\n const executor = new TransformOperationExecutor(TransformationType.PLAIN_TO_CLASS, {\n ...defaultOptions,\n ...options\n });\n return executor.transform(undefined, plain, cls, undefined, undefined, undefined);\n }\n plainToClassFromExist(clsObject, plain, options) {\n const executor = new TransformOperationExecutor(TransformationType.PLAIN_TO_CLASS, {\n ...defaultOptions,\n ...options\n });\n return executor.transform(clsObject, plain, undefined, undefined, undefined, undefined);\n }\n instanceToInstance(object, options) {\n const executor = new TransformOperationExecutor(TransformationType.CLASS_TO_CLASS, {\n ...defaultOptions,\n ...options\n });\n return executor.transform(undefined, object, undefined, undefined, undefined, undefined);\n }\n classToClassFromExist(object, fromObject, options) {\n const executor = new TransformOperationExecutor(TransformationType.CLASS_TO_CLASS, {\n ...defaultOptions,\n ...options\n });\n return executor.transform(fromObject, object, undefined, undefined, undefined, undefined);\n }\n serialize(object, options) {\n return JSON.stringify(this.instanceToPlain(object, options));\n }\n /**\n * Deserializes given JSON string to a object of the given class.\n */\n deserialize(cls, json, options) {\n const jsonObject = JSON.parse(json);\n return this.plainToInstance(cls, jsonObject, options);\n }\n /**\n * Deserializes given JSON string to an array of objects of the given class.\n */\n deserializeArray(cls, json, options) {\n const jsonObject = JSON.parse(json);\n return this.plainToInstance(cls, jsonObject, options);\n }\n}\n","import { defaultMetadataStorage } from '../storage';\n/**\n * Marks the given class or property as included. By default the property is included in both\n * constructorToPlain and plainToConstructor transformations. It can be limited to only one direction\n * via using the `toPlainOnly` or `toClassOnly` option.\n *\n * Can be applied to class definitions and properties.\n */\nexport function Expose(options = {}) {\n /**\n * NOTE: The `propertyName` property must be marked as optional because\n * this decorator used both as a class and a property decorator and the\n * Typescript compiler will freak out if we make it mandatory as a class\n * decorator only receives one parameter.\n */\n return function (object, propertyName) {\n defaultMetadataStorage.addExposeMetadata({\n target: object instanceof Function ? object : object.constructor,\n propertyName: propertyName,\n options\n });\n };\n}\n","import { defaultMetadataStorage } from '../storage';\n/**\n * Defines a custom logic for value transformation.\n *\n * Can be applied to properties only.\n */\nexport function Transform(transformFn, options = {}) {\n return function (target, propertyName) {\n defaultMetadataStorage.addTransformMetadata({\n target: target.constructor,\n propertyName: propertyName,\n transformFn,\n options\n });\n };\n}\n","import { ClassTransformer } from './ClassTransformer';\nexport { ClassTransformer } from './ClassTransformer';\nexport * from './decorators';\nexport * from './interfaces';\nexport * from './enums';\nconst classTransformer = new ClassTransformer();\nexport function classToPlain(object, options) {\n return classTransformer.instanceToPlain(object, options);\n}\nexport function instanceToPlain(object, options) {\n return classTransformer.instanceToPlain(object, options);\n}\nexport function classToPlainFromExist(object, plainObject, options) {\n return classTransformer.classToPlainFromExist(object, plainObject, options);\n}\nexport function plainToClass(cls, plain, options) {\n return classTransformer.plainToInstance(cls, plain, options);\n}\nexport function plainToInstance(cls, plain, options) {\n return classTransformer.plainToInstance(cls, plain, options);\n}\nexport function plainToClassFromExist(clsObject, plain, options) {\n return classTransformer.plainToClassFromExist(clsObject, plain, options);\n}\nexport function instanceToInstance(object, options) {\n return classTransformer.instanceToInstance(object, options);\n}\nexport function classToClassFromExist(object, fromObject, options) {\n return classTransformer.classToClassFromExist(object, fromObject, options);\n}\nexport function serialize(object, options) {\n return classTransformer.serialize(object, options);\n}\n/**\n * Deserializes given JSON string to a object of the given class.\n *\n * @deprecated This function is being removed. Please use the following instead:\n * ```\n * instanceToClass(cls, JSON.parse(json), options)\n * ```\n */\nexport function deserialize(cls, json, options) {\n return classTransformer.deserialize(cls, json, options);\n}\n/**\n * Deserializes given JSON string to an array of objects of the given class.\n *\n * @deprecated This function is being removed. Please use the following instead:\n * ```\n * JSON.parse(json).map(value => instanceToClass(cls, value, options))\n * ```\n *\n */\nexport function deserializeArray(cls, json, options) {\n return classTransformer.deserializeArray(cls, json, options);\n}\n","/**\n * This metadata contains validation rules.\n */\nexport class ValidationMetadata {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n constructor(args) {\n /**\n * Validation groups used for this validation.\n */\n this.groups = [];\n /**\n * Specifies if validated value is an array and each of its item must be validated.\n */\n this.each = false;\n /*\n * A transient set of data passed through to the validation result for response mapping\n */\n this.context = undefined;\n this.type = args.type;\n this.name = args.name;\n this.target = args.target;\n this.propertyName = args.propertyName;\n this.constraints = args === null || args === void 0 ? void 0 : args.constraints;\n this.constraintCls = args.constraintCls;\n this.validationTypeOptions = args.validationTypeOptions;\n if (args.validationOptions) {\n this.message = args.validationOptions.message;\n this.groups = args.validationOptions.groups;\n this.always = args.validationOptions.always;\n this.each = args.validationOptions.each;\n this.context = args.validationOptions.context;\n }\n }\n}\n","import { ValidationMetadata } from '../metadata/ValidationMetadata';\n/**\n * Used to transform validation schemas to validation metadatas.\n */\nexport class ValidationSchemaToMetadataTransformer {\n transform(schema) {\n const metadatas = [];\n Object.keys(schema.properties).forEach(property => {\n schema.properties[property].forEach(validation => {\n const validationOptions = {\n message: validation.message,\n groups: validation.groups,\n always: validation.always,\n each: validation.each\n };\n const args = {\n type: validation.type,\n name: validation.name,\n target: schema.name,\n propertyName: property,\n constraints: validation.constraints,\n validationTypeOptions: validation.options,\n validationOptions: validationOptions\n };\n metadatas.push(new ValidationMetadata(args));\n });\n });\n return metadatas;\n }\n}\n","/**\n * This function returns the global object across Node and browsers.\n *\n * Note: `globalThis` is the standardized approach however it has been added to\n * Node.js in version 12. We need to include this snippet until Node 12 EOL.\n */\nexport function getGlobal() {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Cannot find name 'window'.\n if (typeof window !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Cannot find name 'window'.\n return window;\n }\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Cannot find name 'self'.\n if (typeof self !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Cannot find name 'self'.\n return self;\n }\n}\n","import { ValidationSchemaToMetadataTransformer } from '../validation-schema/ValidationSchemaToMetadataTransformer';\nimport { getGlobal } from '../utils';\n/**\n * Storage all metadatas.\n */\nexport class MetadataStorage {\n constructor() {\n // -------------------------------------------------------------------------\n // Private properties\n // -------------------------------------------------------------------------\n this.validationMetadatas = new Map();\n this.constraintMetadatas = new Map();\n }\n get hasValidationMetaData() {\n return !!this.validationMetadatas.size;\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Adds a new validation metadata.\n */\n addValidationSchema(schema) {\n const validationMetadatas = new ValidationSchemaToMetadataTransformer().transform(schema);\n validationMetadatas.forEach(validationMetadata => this.addValidationMetadata(validationMetadata));\n }\n /**\n * Adds a new validation metadata.\n */\n addValidationMetadata(metadata) {\n const existingMetadata = this.validationMetadatas.get(metadata.target);\n if (existingMetadata) {\n existingMetadata.push(metadata);\n } else {\n this.validationMetadatas.set(metadata.target, [metadata]);\n }\n }\n /**\n * Adds a new constraint metadata.\n */\n addConstraintMetadata(metadata) {\n const existingMetadata = this.constraintMetadatas.get(metadata.target);\n if (existingMetadata) {\n existingMetadata.push(metadata);\n } else {\n this.constraintMetadatas.set(metadata.target, [metadata]);\n }\n }\n /**\n * Groups metadata by their property names.\n */\n groupByPropertyName(metadata) {\n const grouped = {};\n metadata.forEach(metadata => {\n if (!grouped[metadata.propertyName]) grouped[metadata.propertyName] = [];\n grouped[metadata.propertyName].push(metadata);\n });\n return grouped;\n }\n /**\n * Gets all validation metadatas for the given object with the given groups.\n */\n getTargetValidationMetadatas(targetConstructor, targetSchema, always, strictGroups, groups) {\n const includeMetadataBecauseOfAlwaysOption = metadata => {\n // `metadata.always` overrides global default.\n if (typeof metadata.always !== 'undefined') return metadata.always;\n // `metadata.groups` overrides global default.\n if (metadata.groups && metadata.groups.length) return false;\n // Use global default.\n return always;\n };\n const excludeMetadataBecauseOfStrictGroupsOption = metadata => {\n if (strictGroups) {\n // Validation is not using groups.\n if (!groups || !groups.length) {\n // `metadata.groups` has at least one group.\n if (metadata.groups && metadata.groups.length) return true;\n }\n }\n return false;\n };\n // get directly related to a target metadatas\n const filteredForOriginalMetadatasSearch = this.validationMetadatas.get(targetConstructor) || [];\n const originalMetadatas = filteredForOriginalMetadatasSearch.filter(metadata => {\n if (metadata.target !== targetConstructor && metadata.target !== targetSchema) return false;\n if (includeMetadataBecauseOfAlwaysOption(metadata)) return true;\n if (excludeMetadataBecauseOfStrictGroupsOption(metadata)) return false;\n if (groups && groups.length > 0) return metadata.groups && !!metadata.groups.find(group => groups.indexOf(group) !== -1);\n return true;\n });\n // get metadatas for inherited classes\n const filteredForInheritedMetadatasSearch = [];\n for (const [key, value] of this.validationMetadatas.entries()) {\n if (targetConstructor.prototype instanceof key) {\n filteredForInheritedMetadatasSearch.push(...value);\n }\n }\n const inheritedMetadatas = filteredForInheritedMetadatasSearch.filter(metadata => {\n // if target is a string it's means we validate against a schema, and there is no inheritance support for schemas\n if (typeof metadata.target === 'string') return false;\n if (metadata.target === targetConstructor) return false;\n if (metadata.target instanceof Function && !(targetConstructor.prototype instanceof metadata.target)) return false;\n if (includeMetadataBecauseOfAlwaysOption(metadata)) return true;\n if (excludeMetadataBecauseOfStrictGroupsOption(metadata)) return false;\n if (groups && groups.length > 0) return metadata.groups && !!metadata.groups.find(group => groups.indexOf(group) !== -1);\n return true;\n });\n // filter out duplicate metadatas, prefer original metadatas instead of inherited metadatas\n const uniqueInheritedMetadatas = inheritedMetadatas.filter(inheritedMetadata => {\n return !originalMetadatas.find(originalMetadata => {\n return originalMetadata.propertyName === inheritedMetadata.propertyName && originalMetadata.type === inheritedMetadata.type;\n });\n });\n return originalMetadatas.concat(uniqueInheritedMetadatas);\n }\n /**\n * Gets all validator constraints for the given object.\n */\n getTargetValidatorConstraints(target) {\n return this.constraintMetadatas.get(target) || [];\n }\n}\n/**\n * Gets metadata storage.\n * Metadata storage follows the best practices and stores metadata in a global variable.\n */\nexport function getMetadataStorage() {\n const global = getGlobal();\n if (!global.classValidatorMetadataStorage) {\n global.classValidatorMetadataStorage = new MetadataStorage();\n }\n return global.classValidatorMetadataStorage;\n}\n","/**\n * Validation types.\n */\nexport class ValidationTypes {\n /* system */\n static CUSTOM_VALIDATION = 'customValidation'; // done\n static NESTED_VALIDATION = 'nestedValidation'; // done\n static PROMISE_VALIDATION = 'promiseValidation'; // done\n static CONDITIONAL_VALIDATION = 'conditionalValidation'; // done\n static WHITELIST = 'whitelistValidation'; // done\n static IS_DEFINED = 'isDefined'; // done\n\n /**\n * Checks if validation type is valid.\n */\n static isValid(type: string): boolean {\n return (\n type !== 'isValid' &&\n type !== 'getMessage' &&\n Object.keys(this)\n .map(key => (this as any)[key])\n .indexOf(type) !== -1\n );\n }\n}\n","/**\n * Container to be used by this library for inversion control. If container was not implicitly set then by default\n * container simply creates a new instance of the given class.\n */\nconst defaultContainer = new class {\n constructor() {\n this.instances = [];\n }\n get(someClass) {\n let instance = this.instances.find(instance => instance.type === someClass);\n if (!instance) {\n instance = {\n type: someClass,\n object: new someClass()\n };\n this.instances.push(instance);\n }\n return instance.object;\n }\n}();\nlet userContainer;\nlet userContainerOptions;\n/**\n * Sets container to be used by this library.\n */\nexport function useContainer(iocContainer, options) {\n userContainer = iocContainer;\n userContainerOptions = options;\n}\n/**\n * Gets the IOC container used by this library.\n */\nexport function getFromContainer(someClass) {\n if (userContainer) {\n try {\n const instance = userContainer.get(someClass);\n if (instance) return instance;\n if (!userContainerOptions || !userContainerOptions.fallback) return instance;\n } catch (error) {\n if (!userContainerOptions || !userContainerOptions.fallbackOnErrors) throw error;\n }\n }\n return defaultContainer.get(someClass);\n}\n","import { getFromContainer } from '../container';\n/**\n * This metadata interface contains information for custom validators.\n */\nexport class ConstraintMetadata {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n constructor(target, name, async = false) {\n this.target = target;\n this.name = name;\n this.async = async;\n }\n // -------------------------------------------------------------------------\n // Accessors\n // -------------------------------------------------------------------------\n /**\n * Instance of the target custom validation class which performs validation.\n */\n get instance() {\n return getFromContainer(this.target);\n }\n}\n","import { ConstraintMetadata } from './metadata/ConstraintMetadata';\nimport { ValidationMetadata } from './metadata/ValidationMetadata';\nimport { ValidationTypes } from './validation/ValidationTypes';\nimport { getFromContainer } from './container';\nimport { MetadataStorage, getMetadataStorage } from './metadata/MetadataStorage';\n/**\n * Registers a custom validation decorator.\n */\nexport function registerDecorator(options) {\n let constraintCls;\n if (options.validator instanceof Function) {\n constraintCls = options.validator;\n const constraintClasses = getFromContainer(MetadataStorage).getTargetValidatorConstraints(options.validator);\n if (constraintClasses.length > 1) {\n throw `More than one implementation of ValidatorConstraintInterface found for validator on: ${options.target.name}:${options.propertyName}`;\n }\n } else {\n const validator = options.validator;\n constraintCls = class CustomConstraint {\n validate(value, validationArguments) {\n return validator.validate(value, validationArguments);\n }\n defaultMessage(validationArguments) {\n if (validator.defaultMessage) {\n return validator.defaultMessage(validationArguments);\n }\n return '';\n }\n };\n getMetadataStorage().addConstraintMetadata(new ConstraintMetadata(constraintCls, options.name, options.async));\n }\n const validationMetadataArgs = {\n type: options.name && ValidationTypes.isValid(options.name) ? options.name : ValidationTypes.CUSTOM_VALIDATION,\n name: options.name,\n target: options.target,\n propertyName: options.propertyName,\n validationOptions: options.options,\n constraintCls: constraintCls,\n constraints: options.constraints\n };\n getMetadataStorage().addValidationMetadata(new ValidationMetadata(validationMetadataArgs));\n}\n","import { registerDecorator } from '../../register-decorator';\nexport function buildMessage(impl, validationOptions) {\n return validationArguments => {\n const eachPrefix = validationOptions && validationOptions.each ? 'each value in ' : '';\n return impl(eachPrefix, validationArguments);\n };\n}\nexport function ValidateBy(options, validationOptions) {\n return function (object, propertyName) {\n registerDecorator({\n name: options.name,\n target: object.constructor,\n propertyName: propertyName,\n options: validationOptions,\n constraints: options.constraints,\n validator: options.validator\n });\n };\n}\n","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isUrlValidator from 'validator/lib/isURL';\nexport const IS_URL = 'isUrl';\n/**\n * Checks if the string is a url.\n * If given value is not a string, then it returns false.\n */\nexport function isURL(value, options) {\n return typeof value === 'string' && isUrlValidator(value, options);\n}\n/**\n * Checks if the string is a url.\n * If given value is not a string, then it returns false.\n */\nexport function IsUrl(options, validationOptions) {\n return ValidateBy({\n name: IS_URL,\n constraints: [options],\n validator: {\n validate: (value, args) => isURL(value, args === null || args === void 0 ? void 0 : args.constraints[0]),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a URL address', validationOptions)\n }\n }, validationOptions);\n}\n","import { Expose } from 'class-transformer';\nimport { IsUrl } from 'class-validator';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class BrowserEnvConfig {\n @IsUrl({ require_tld: false })\n @Expose({ name: 'TOOLKIT_API' })\n readonly toolkitApi!: string;\n\n @IsUrl({ require_tld: false })\n @Expose({ name: 'TOOLKIT_VUE_APP' })\n readonly vueApp!: string;\n\n @IsUrl({ require_tld: false })\n @Expose({ name: 'TOOLKIT_DJANGO_API' })\n readonly djangoApi!: string;\n\n @IsUrl({ require_tld: false })\n @Expose({ name: 'TOOLKIT_GEO_API' })\n readonly geoApi!: string;\n\n @IsUrl({ require_tld: false })\n @Expose({ name: 'TOOLKIT_ENROLLMENT_API' })\n readonly enrollmentApi!: string;\n\n @IsUrl({ require_tld: false })\n @Expose({ name: 'TOOLKIT_LEADS_API' })\n readonly leadsApi!: string;\n}\n"],"mappings":"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","names":["require_assertString","__commonJSMin","exports","module","assertString","_typeof","o","input","isString","invalidType","require_merge","__commonJSMin","exports","module","merge","obj","defaults","key","require_isFQDN","__commonJSMin","exports","module","isFQDN","_assertString","_interopRequireDefault","_merge","obj","default_fqdn_options","str","options","parts","tld","part","require_isIP","__commonJSMin","exports","module","isIP","_assertString","_interopRequireDefault","obj","IPv4SegmentFormat","IPv4AddressFormat","IPv4AddressRegExp","IPv6SegmentFormat","IPv6AddressRegExp","str","version","require_isURL","__commonJSMin","exports","module","isURL","_assertString","_interopRequireDefault","_isFQDN","_isIP","_merge","obj","_slicedToArray","arr","i","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","o","minLen","_arrayLikeToArray","n","len","arr2","l","t","e","f","r","default_url_options","wrapped_ipv6","isRegExp","checkHost","host","matches","match","url","options","protocol","auth","hostname","port","port_str","split","ipv6","_auth$split","_auth$split2","user","password","ipv6_match","TransformationType","MetadataStorage","metadata","target","propertyName","transformationType","TransformationType","name","excludeMap","exclude","exposeMap","expose","metadatas","metadataFromTargetMap","metadataFromTarget","meta","metadataFromAncestors","ancestor","ancestorMetadataMap","metadataFromAncestor","ancestorResult","metadataFromAncestorsTarget","ancestors","baseClass","defaultMetadataStorage","MetadataStorage","getGlobal","isPromise","p","instantiateArrayType","arrayType","array","TransformOperationExecutor","transformationType","options","source","value","targetType","isMap","level","newValue","TransformationType","subValue","index","subSource","realTargetType","subType","newType","getGlobal","isPromise","resolve","reject","data","keys","key","valueKey","newValueKey","propertyName","exposeMetadata","defaultMetadataStorage","type","isSubValueMap","metadata","map","reflectedType","descriptor","transformKey","finalValue","target","obj","metadatas","object","meta","strategy","exposedProperties","excludedProperties","prefix","self","since","until","decision","groups","optionGroup","defaultOptions","ClassTransformer","object","options","TransformOperationExecutor","TransformationType","__spreadValues","defaultOptions","plainObject","cls","plain","clsObject","fromObject","json","jsonObject","Expose","options","object","propertyName","defaultMetadataStorage","Transform","transformFn","options","target","propertyName","defaultMetadataStorage","classTransformer","ClassTransformer","plainToInstance","cls","plain","options","classTransformer","ValidationMetadata","args","ValidationSchemaToMetadataTransformer","schema","metadatas","property","validation","validationOptions","args","ValidationMetadata","getGlobal","MetadataStorage","schema","ValidationSchemaToMetadataTransformer","validationMetadata","metadata","existingMetadata","grouped","targetConstructor","targetSchema","always","strictGroups","groups","includeMetadataBecauseOfAlwaysOption","excludeMetadataBecauseOfStrictGroupsOption","originalMetadatas","group","filteredForInheritedMetadatasSearch","key","value","uniqueInheritedMetadatas","inheritedMetadata","originalMetadata","target","getMetadataStorage","global","getGlobal","ValidationTypes","type","key","defaultContainer","someClass","instance","userContainer","userContainerOptions","getFromContainer","someClass","userContainer","instance","userContainerOptions","error","defaultContainer","ConstraintMetadata","target","name","async","getFromContainer","registerDecorator","options","constraintCls","getFromContainer","MetadataStorage","validator","value","validationArguments","getMetadataStorage","ConstraintMetadata","validationMetadataArgs","ValidationTypes","ValidationMetadata","buildMessage","impl","validationOptions","validationArguments","eachPrefix","ValidateBy","options","object","propertyName","registerDecorator","import_isURL","IS_URL","isURL","value","options","isUrlValidator","IsUrl","validationOptions","ValidateBy","args","buildMessage","eachPrefix","BrowserEnvConfig","factory","ɵfac","_BrowserEnvConfig","__decorate","IsUrl","require_tld","Expose","name","__metadata"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]}