@fileflow/sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KYCWizard-D3Leb4rK.mjs","sources":["../../../node_modules/.pnpm/lucide-react@0.321.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/car.js","../../../node_modules/.pnpm/lucide-react@0.321.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/clock.js","../../../node_modules/.pnpm/lucide-react@0.321.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/file-text.js","../../../node_modules/.pnpm/lucide-react@0.321.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/home.js","../../../node_modules/.pnpm/lucide-react@0.321.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/image.js","../../../node_modules/.pnpm/lucide-react@0.321.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/shield-check.js","../src/store/kyc-store.ts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js","../../shared/dist/index.mjs","../src/kyc/components/DocumentUploader.tsx","../src/kyc/components/DocumentStatus.tsx","../src/kyc/components/KYCWizard.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.321.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Car = createLucideIcon(\"Car\", [\n [\n \"path\",\n {\n d: \"M19 17h2c.6 0 1-.4 1-1v-3c0-.9-.7-1.7-1.5-1.9C18.7 10.6 16 10 16 10s-1.3-1.4-2.2-2.3c-.5-.4-1.1-.7-1.8-.7H5c-.6 0-1.1.4-1.4.9l-1.4 2.9A3.7 3.7 0 0 0 2 12v4c0 .6.4 1 1 1h2\",\n key: \"5owen\"\n }\n ],\n [\"circle\", { cx: \"7\", cy: \"17\", r: \"2\", key: \"u2ysq9\" }],\n [\"path\", { d: \"M9 17h6\", key: \"r8uit2\" }],\n [\"circle\", { cx: \"17\", cy: \"17\", r: \"2\", key: \"axvx0g\" }]\n]);\n\nexport { Car as default };\n//# sourceMappingURL=car.js.map\n","/**\n * @license lucide-react v0.321.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Clock = createLucideIcon(\"Clock\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"polyline\", { points: \"12 6 12 12 16 14\", key: \"68esgv\" }]\n]);\n\nexport { Clock as default };\n//# sourceMappingURL=clock.js.map\n","/**\n * @license lucide-react v0.321.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst FileText = createLucideIcon(\"FileText\", [\n [\"path\", { d: \"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\", key: \"1rqfz7\" }],\n [\"path\", { d: \"M14 2v4a2 2 0 0 0 2 2h4\", key: \"tnqrlb\" }],\n [\"path\", { d: \"M10 9H8\", key: \"b1mrlr\" }],\n [\"path\", { d: \"M16 13H8\", key: \"t4e002\" }],\n [\"path\", { d: \"M16 17H8\", key: \"z1uh3a\" }]\n]);\n\nexport { FileText as default };\n//# sourceMappingURL=file-text.js.map\n","/**\n * @license lucide-react v0.321.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Home = createLucideIcon(\"Home\", [\n [\"path\", { d: \"m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\", key: \"y5dka4\" }],\n [\"polyline\", { points: \"9 22 9 12 15 12 15 22\", key: \"e2us08\" }]\n]);\n\nexport { Home as default };\n//# sourceMappingURL=home.js.map\n","/**\n * @license lucide-react v0.321.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Image = createLucideIcon(\"Image\", [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", ry: \"2\", key: \"1m3agn\" }],\n [\"circle\", { cx: \"9\", cy: \"9\", r: \"2\", key: \"af1f0g\" }],\n [\"path\", { d: \"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\", key: \"1xmnt7\" }]\n]);\n\nexport { Image as default };\n//# sourceMappingURL=image.js.map\n","/**\n * @license lucide-react v0.321.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ShieldCheck = createLucideIcon(\"ShieldCheck\", [\n [\"path\", { d: \"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10\", key: \"1irkt0\" }],\n [\"path\", { d: \"m9 12 2 2 4-4\", key: \"dzmm74\" }]\n]);\n\nexport { ShieldCheck as default };\n//# sourceMappingURL=shield-check.js.map\n","import { create } from 'zustand';\nimport type { \n DocumentType, \n KYCDocument, \n DocumentStatus,\n FraudFlag,\n ExtractedData,\n} from '@fileflow/shared';\n\nexport type KYCStep = 'select' | 'upload' | 'processing' | 'review' | 'complete';\n\nexport interface DocumentState {\n id: string | null;\n type: DocumentType;\n status: DocumentStatus;\n file: File | null;\n previewUrl: string | null;\n extractedData: ExtractedData | null;\n confidence: number;\n fraudFlags: FraudFlag[];\n error: string | null;\n}\n\nexport interface KYCState {\n // Session\n sessionId: string | null;\n status: string;\n step: KYCStep;\n \n // Required documents\n requiredDocuments: DocumentType[];\n currentDocumentType: DocumentType | null;\n \n // Document states\n documents: Map<DocumentType, DocumentState>;\n \n // Verification\n isVerified: boolean;\n verificationStatus: object | null;\n \n // UI state\n isLoading: boolean;\n error: string | null;\n}\n\nexport interface KYCActions {\n // Initialize\n setSessionId: (sessionId: string) => void;\n setRequiredDocuments: (documents: DocumentType[]) => void;\n \n // Document management\n setCurrentDocumentType: (type: DocumentType) => void;\n setDocumentFile: (type: DocumentType, file: File) => void;\n setDocumentStatus: (type: DocumentType, status: DocumentStatus) => void;\n setDocumentData: (type: DocumentType, data: Partial<DocumentState>) => void;\n clearDocumentPreview: (type: DocumentType) => void;\n \n // Navigation\n setStep: (step: KYCStep) => void;\n nextDocument: () => void;\n \n // Verification\n setVerificationStatus: (status: object) => void;\n setVerified: (verified: boolean) => void;\n \n // Status\n setStatus: (status: string) => void;\n setLoading: (loading: boolean) => void;\n setError: (error: string | null) => void;\n \n // Helpers\n getNextRequiredDocument: () => DocumentType | null;\n areAllDocumentsUploaded: () => boolean;\n areAllDocumentsProcessed: () => boolean;\n \n // Reset\n reset: () => void;\n}\n\nconst createEmptyDocumentState = (type: DocumentType): DocumentState => ({\n id: null,\n type,\n status: 'uploaded',\n file: null,\n previewUrl: null,\n extractedData: null,\n confidence: 0,\n fraudFlags: [],\n error: null,\n});\n\nconst initialState: KYCState = {\n sessionId: null,\n status: 'idle',\n step: 'select',\n requiredDocuments: [],\n currentDocumentType: null,\n documents: new Map(),\n isVerified: false,\n verificationStatus: null,\n isLoading: false,\n error: null,\n};\n\nexport const useKYCStore = create<KYCState & KYCActions>((set, get) => ({\n ...initialState,\n\n setSessionId: (sessionId) => set({ sessionId }),\n\n setRequiredDocuments: (documents) => {\n const docsMap = new Map<DocumentType, DocumentState>();\n for (const type of documents) {\n docsMap.set(type, createEmptyDocumentState(type));\n }\n set({ \n requiredDocuments: documents, \n documents: docsMap,\n currentDocumentType: documents[0] || null,\n });\n },\n\n setCurrentDocumentType: (type) => set({ currentDocumentType: type }),\n\n setDocumentFile: (type, file) => {\n const { documents } = get();\n const doc = documents.get(type) || createEmptyDocumentState(type);\n \n // Create preview URL\n const previewUrl = URL.createObjectURL(file);\n \n const updated = new Map(documents);\n updated.set(type, {\n ...doc,\n file,\n previewUrl,\n status: 'uploaded',\n error: null,\n });\n \n set({ documents: updated });\n },\n\n setDocumentStatus: (type, status) => {\n const { documents } = get();\n const doc = documents.get(type);\n if (doc) {\n const updated = new Map(documents);\n updated.set(type, { ...doc, status });\n set({ documents: updated });\n }\n },\n\n setDocumentData: (type, data) => {\n const { documents } = get();\n const doc = documents.get(type);\n if (doc) {\n const updated = new Map(documents);\n updated.set(type, { ...doc, ...data });\n set({ documents: updated });\n }\n },\n\n clearDocumentPreview: (type) => {\n const { documents } = get();\n const doc = documents.get(type);\n if (doc?.previewUrl) {\n URL.revokeObjectURL(doc.previewUrl);\n }\n },\n\n setStep: (step) => set({ step }),\n\n nextDocument: () => {\n const { requiredDocuments, currentDocumentType, documents } = get();\n const currentIndex = currentDocumentType \n ? requiredDocuments.indexOf(currentDocumentType) \n : -1;\n \n // Find next document that needs upload\n for (let i = currentIndex + 1; i < requiredDocuments.length; i++) {\n const type = requiredDocuments[i];\n const doc = documents.get(type);\n if (!doc?.file) {\n set({ currentDocumentType: type });\n return;\n }\n }\n \n // All documents uploaded, move to processing/review\n set({ \n currentDocumentType: null,\n step: 'processing',\n });\n },\n\n setVerificationStatus: (status) => set({ verificationStatus: status }),\n \n setVerified: (verified) => set({ isVerified: verified }),\n\n setStatus: (status) => set({ status }),\n \n setLoading: (isLoading) => set({ isLoading }),\n \n setError: (error) => set({ error }),\n\n getNextRequiredDocument: () => {\n const { requiredDocuments, documents } = get();\n for (const type of requiredDocuments) {\n const doc = documents.get(type);\n if (!doc?.file) {\n return type;\n }\n }\n return null;\n },\n\n areAllDocumentsUploaded: () => {\n const { requiredDocuments, documents } = get();\n return requiredDocuments.every((type) => {\n const doc = documents.get(type);\n return doc?.file !== null;\n });\n },\n\n areAllDocumentsProcessed: () => {\n const { requiredDocuments, documents } = get();\n return requiredDocuments.every((type) => {\n const doc = documents.get(type);\n return doc?.status === 'completed' || doc?.status === 'requires_review';\n });\n },\n\n reset: () => {\n // Clean up preview URLs\n const { documents } = get();\n for (const doc of documents.values()) {\n if (doc.previewUrl) {\n URL.revokeObjectURL(doc.previewUrl);\n }\n }\n set(initialState);\n },\n}));\n","export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n","import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n","import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n","import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n","export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n","import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n","// src/types/theme.ts\nvar DEFAULT_THEME = {\n colors: {\n primary: \"#6366f1\",\n primaryHover: \"#4f46e5\",\n primaryLight: \"#e0e7ff\",\n background: \"#f8fafc\",\n backgroundSecondary: \"#f1f5f9\",\n backgroundTertiary: \"#e2e8f0\",\n surface: \"#ffffff\",\n surfaceHover: \"#f8fafc\",\n border: \"#e2e8f0\",\n borderHover: \"#a5b4fc\",\n textPrimary: \"#0f172a\",\n textSecondary: \"#475569\",\n textMuted: \"#94a3b8\",\n textInverse: \"#ffffff\",\n success: \"#10b981\",\n successLight: \"#d1fae5\",\n warning: \"#f59e0b\",\n warningLight: \"#fef3c7\",\n error: \"#ef4444\",\n errorLight: \"#fee2e2\",\n info: \"#3b82f6\",\n infoLight: \"#dbeafe\"\n },\n typography: {\n fontFamily: \"Inter, system-ui, -apple-system, sans-serif\",\n fontFamilyMono: \"JetBrains Mono, Menlo, Monaco, monospace\",\n fontSizeXs: \"0.75rem\",\n fontSizeSm: \"0.875rem\",\n fontSizeBase: \"1rem\",\n fontSizeLg: \"1.125rem\",\n fontSizeXl: \"1.25rem\",\n fontSize2xl: \"1.5rem\",\n fontSize3xl: \"1.875rem\",\n fontWeightNormal: \"400\",\n fontWeightMedium: \"500\",\n fontWeightSemibold: \"600\",\n fontWeightBold: \"700\",\n lineHeightTight: \"1.25\",\n lineHeightNormal: \"1.5\",\n lineHeightRelaxed: \"1.75\"\n },\n spacing: {\n radiusNone: \"0\",\n radiusSm: \"0.25rem\",\n radiusMd: \"0.375rem\",\n radiusLg: \"0.5rem\",\n radiusXl: \"0.75rem\",\n radius2xl: \"1rem\",\n radiusFull: \"9999px\",\n space1: \"0.25rem\",\n space2: \"0.5rem\",\n space3: \"0.75rem\",\n space4: \"1rem\",\n space5: \"1.25rem\",\n space6: \"1.5rem\",\n space8: \"2rem\"\n },\n shadows: {\n shadowNone: \"none\",\n shadowSm: \"0 1px 2px 0 rgb(0 0 0 / 0.05)\",\n shadowMd: \"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)\",\n shadowLg: \"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)\",\n shadowXl: \"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)\"\n }\n};\nvar PRESET_THEMES = {\n default: DEFAULT_THEME,\n dark: {\n ...DEFAULT_THEME,\n colors: {\n primary: \"#818cf8\",\n primaryHover: \"#6366f1\",\n primaryLight: \"#312e81\",\n background: \"#0f172a\",\n backgroundSecondary: \"#1e293b\",\n backgroundTertiary: \"#334155\",\n surface: \"#1e293b\",\n surfaceHover: \"#334155\",\n border: \"#334155\",\n borderHover: \"#6366f1\",\n textPrimary: \"#f1f5f9\",\n textSecondary: \"#cbd5e1\",\n textMuted: \"#64748b\",\n textInverse: \"#0f172a\",\n success: \"#34d399\",\n successLight: \"#064e3b\",\n warning: \"#fbbf24\",\n warningLight: \"#78350f\",\n error: \"#f87171\",\n errorLight: \"#7f1d1d\",\n info: \"#60a5fa\",\n infoLight: \"#1e3a8a\"\n }\n },\n ocean: {\n ...DEFAULT_THEME,\n colors: {\n ...DEFAULT_THEME.colors,\n primary: \"#0ea5e9\",\n primaryHover: \"#0284c7\",\n primaryLight: \"#e0f2fe\",\n borderHover: \"#38bdf8\"\n }\n },\n forest: {\n ...DEFAULT_THEME,\n colors: {\n ...DEFAULT_THEME.colors,\n primary: \"#10b981\",\n primaryHover: \"#059669\",\n primaryLight: \"#d1fae5\",\n borderHover: \"#34d399\"\n }\n },\n sunset: {\n ...DEFAULT_THEME,\n colors: {\n ...DEFAULT_THEME.colors,\n primary: \"#f97316\",\n primaryHover: \"#ea580c\",\n primaryLight: \"#ffedd5\",\n borderHover: \"#fb923c\"\n }\n },\n berry: {\n ...DEFAULT_THEME,\n colors: {\n ...DEFAULT_THEME.colors,\n primary: \"#ec4899\",\n primaryHover: \"#db2777\",\n primaryLight: \"#fce7f3\",\n borderHover: \"#f472b6\"\n }\n }\n};\nvar DEFAULT_FEATURE_THEMES = {\n import: DEFAULT_THEME,\n kyc: {\n ...DEFAULT_THEME,\n colors: {\n ...DEFAULT_THEME.colors,\n // Teal/emerald color scheme for trust/security feel\n primary: \"#0d9488\",\n primaryHover: \"#0f766e\",\n primaryLight: \"#ccfbf1\",\n borderHover: \"#5eead4\"\n }\n }\n};\nfunction mergeFeatureThemes(partial) {\n return {\n import: {\n colors: { ...DEFAULT_FEATURE_THEMES.import.colors, ...partial.import?.colors },\n typography: { ...DEFAULT_FEATURE_THEMES.import.typography, ...partial.import?.typography },\n spacing: { ...DEFAULT_FEATURE_THEMES.import.spacing, ...partial.import?.spacing },\n shadows: { ...DEFAULT_FEATURE_THEMES.import.shadows, ...partial.import?.shadows }\n },\n kyc: {\n colors: { ...DEFAULT_FEATURE_THEMES.kyc.colors, ...partial.kyc?.colors },\n typography: { ...DEFAULT_FEATURE_THEMES.kyc.typography, ...partial.kyc?.typography },\n spacing: { ...DEFAULT_FEATURE_THEMES.kyc.spacing, ...partial.kyc?.spacing },\n shadows: { ...DEFAULT_FEATURE_THEMES.kyc.shadows, ...partial.kyc?.shadows }\n }\n };\n}\nfunction themeToCssVariables(theme) {\n return {\n \"--ff-color-primary\": theme.colors.primary,\n \"--ff-color-primary-hover\": theme.colors.primaryHover,\n \"--ff-color-primary-light\": theme.colors.primaryLight,\n \"--ff-color-background\": theme.colors.background,\n \"--ff-color-background-secondary\": theme.colors.backgroundSecondary,\n \"--ff-color-background-tertiary\": theme.colors.backgroundTertiary,\n \"--ff-color-surface\": theme.colors.surface,\n \"--ff-color-surface-hover\": theme.colors.surfaceHover,\n \"--ff-color-border\": theme.colors.border,\n \"--ff-color-border-hover\": theme.colors.borderHover,\n \"--ff-color-text-primary\": theme.colors.textPrimary,\n \"--ff-color-text-secondary\": theme.colors.textSecondary,\n \"--ff-color-text-muted\": theme.colors.textMuted,\n \"--ff-color-text-inverse\": theme.colors.textInverse,\n \"--ff-color-success\": theme.colors.success,\n \"--ff-color-success-light\": theme.colors.successLight,\n \"--ff-color-warning\": theme.colors.warning,\n \"--ff-color-warning-light\": theme.colors.warningLight,\n \"--ff-color-error\": theme.colors.error,\n \"--ff-color-error-light\": theme.colors.errorLight,\n \"--ff-color-info\": theme.colors.info,\n \"--ff-color-info-light\": theme.colors.infoLight,\n \"--ff-font-family\": theme.typography.fontFamily,\n \"--ff-font-family-mono\": theme.typography.fontFamilyMono,\n \"--ff-font-size-xs\": theme.typography.fontSizeXs,\n \"--ff-font-size-sm\": theme.typography.fontSizeSm,\n \"--ff-font-size-base\": theme.typography.fontSizeBase,\n \"--ff-font-size-lg\": theme.typography.fontSizeLg,\n \"--ff-font-size-xl\": theme.typography.fontSizeXl,\n \"--ff-font-size-2xl\": theme.typography.fontSize2xl,\n \"--ff-font-size-3xl\": theme.typography.fontSize3xl,\n \"--ff-font-weight-normal\": theme.typography.fontWeightNormal,\n \"--ff-font-weight-medium\": theme.typography.fontWeightMedium,\n \"--ff-font-weight-semibold\": theme.typography.fontWeightSemibold,\n \"--ff-font-weight-bold\": theme.typography.fontWeightBold,\n \"--ff-line-height-tight\": theme.typography.lineHeightTight,\n \"--ff-line-height-normal\": theme.typography.lineHeightNormal,\n \"--ff-line-height-relaxed\": theme.typography.lineHeightRelaxed,\n \"--ff-radius-none\": theme.spacing.radiusNone,\n \"--ff-radius-sm\": theme.spacing.radiusSm,\n \"--ff-radius-md\": theme.spacing.radiusMd,\n \"--ff-radius-lg\": theme.spacing.radiusLg,\n \"--ff-radius-xl\": theme.spacing.radiusXl,\n \"--ff-radius-2xl\": theme.spacing.radius2xl,\n \"--ff-radius-full\": theme.spacing.radiusFull,\n \"--ff-space-1\": theme.spacing.space1,\n \"--ff-space-2\": theme.spacing.space2,\n \"--ff-space-3\": theme.spacing.space3,\n \"--ff-space-4\": theme.spacing.space4,\n \"--ff-space-5\": theme.spacing.space5,\n \"--ff-space-6\": theme.spacing.space6,\n \"--ff-space-8\": theme.spacing.space8,\n \"--ff-shadow-none\": theme.shadows.shadowNone,\n \"--ff-shadow-sm\": theme.shadows.shadowSm,\n \"--ff-shadow-md\": theme.shadows.shadowMd,\n \"--ff-shadow-lg\": theme.shadows.shadowLg,\n \"--ff-shadow-xl\": theme.shadows.shadowXl\n };\n}\nfunction mergeTheme(partialTheme) {\n return {\n colors: { ...DEFAULT_THEME.colors, ...partialTheme.colors },\n typography: { ...DEFAULT_THEME.typography, ...partialTheme.typography },\n spacing: { ...DEFAULT_THEME.spacing, ...partialTheme.spacing },\n shadows: { ...DEFAULT_THEME.shadows, ...partialTheme.shadows }\n };\n}\n\n// src/schemas/import-schemas.ts\nimport { z } from \"zod\";\nvar ColumnTypeSchema = z.enum([\n \"string\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"datetime\",\n \"email\",\n \"phone\",\n \"url\",\n \"enum\"\n]);\nvar ValidatorTypeSchema = z.enum([\n \"required\",\n \"email\",\n \"phone\",\n \"url\",\n \"date\",\n \"number\",\n \"integer\",\n \"float\",\n \"minLength\",\n \"maxLength\",\n \"min\",\n \"max\",\n \"pattern\",\n \"enum\",\n \"unique\",\n \"custom\"\n]);\nvar ValidationSeveritySchema = z.enum([\"error\", \"warning\", \"info\"]);\nvar ValidatorConfigSchema = z.object({\n type: ValidatorTypeSchema,\n params: z.record(z.unknown()).optional(),\n message: z.string().optional(),\n severity: ValidationSeveritySchema.optional().default(\"error\")\n});\nvar TransformTypeSchema = z.enum([\n \"trim\",\n \"lowercase\",\n \"uppercase\",\n \"capitalize\",\n \"toNumber\",\n \"toDate\",\n \"toBoolean\",\n \"replace\",\n \"custom\"\n]);\nvar TransformConfigSchema = z.object({\n type: TransformTypeSchema,\n params: z.record(z.unknown()).optional()\n});\nvar SchemaColumnSchema = z.object({\n key: z.string().min(1).max(100),\n label: z.string().min(1).max(200),\n type: ColumnTypeSchema,\n required: z.boolean().optional().default(false),\n description: z.string().max(500).optional(),\n validators: z.array(ValidatorConfigSchema).optional(),\n transform: TransformConfigSchema.optional()\n});\nvar SchemaOptionsSchema = z.object({\n allowExtraColumns: z.boolean().optional().default(false),\n skipEmptyRows: z.boolean().optional().default(true),\n trimWhitespace: z.boolean().optional().default(true),\n dateFormat: z.string().optional(),\n uniqueKeys: z.array(z.string()).optional(),\n maxRows: z.number().int().positive().optional().default(1e5)\n});\nvar ImportSchemaSchema = z.object({\n columns: z.array(SchemaColumnSchema).min(1),\n options: SchemaOptionsSchema.optional()\n});\nvar ImportSessionStatusSchema = z.enum([\n \"created\",\n \"file_uploaded\",\n \"parsing\",\n \"parsed\",\n \"mapping\",\n \"mapped\",\n \"validating\",\n \"validated\",\n \"editing\",\n \"completed\",\n \"failed\",\n \"cancelled\"\n]);\nvar CreateImportSessionSchema = z.object({\n schema: ImportSchemaSchema,\n metadata: z.record(z.unknown()).optional()\n});\nvar ColumnMappingSchema = z.object({\n sourceColumn: z.string(),\n targetKey: z.string().nullable(),\n confidence: z.number().min(0).max(1),\n isAutoMapped: z.boolean(),\n reasoning: z.string().optional()\n});\nvar UpdateMappingsSchema = z.object({\n sessionId: z.string().uuid(),\n mappings: z.array(ColumnMappingSchema)\n});\nvar ValidationErrorSchema = z.object({\n rowIndex: z.number().int().nonnegative(),\n columnKey: z.string(),\n value: z.union([z.string(), z.number(), z.boolean(), z.null()]),\n severity: ValidationSeveritySchema,\n validatorType: ValidatorTypeSchema,\n message: z.string(),\n suggestion: z.string().optional()\n});\nvar UpdateRowSchema = z.object({\n sessionId: z.string().uuid(),\n rowIndex: z.number().int().nonnegative(),\n columnKey: z.string(),\n value: z.union([z.string(), z.number(), z.boolean(), z.null()])\n});\nvar BatchUpdateRowsSchema = z.object({\n sessionId: z.string().uuid(),\n updates: z.array(\n z.object({\n rowIndex: z.number().int().nonnegative(),\n columnKey: z.string(),\n value: z.union([z.string(), z.number(), z.boolean(), z.null()])\n })\n )\n});\nvar CompleteImportSchema = z.object({\n sessionId: z.string().uuid(),\n skipInvalidRows: z.boolean().optional().default(false),\n acknowledgeWarnings: z.boolean().optional().default(false)\n});\n\n// src/schemas/kyc-schemas.ts\nimport { z as z2 } from \"zod\";\n\n// src/constants/validation-rules.ts\nvar EMAIL_REGEX = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\nfunction isValidEmail(email) {\n return EMAIL_REGEX.test(email);\n}\nvar PHONE_E164_REGEX = /^\\+[1-9]\\d{1,14}$/;\nvar PHONE_NORTH_AMERICAN_REGEX = /^(\\+1)?[\\s.-]?\\(?[2-9]\\d{2}\\)?[\\s.-]?\\d{3}[\\s.-]?\\d{4}$/;\nvar PHONE_CANADIAN_REGEX = /^(\\+1)?[\\s.-]?\\(?[2-9]\\d{2}\\)?[\\s.-]?\\d{3}[\\s.-]?\\d{4}$/;\nfunction isValidPhone(phone) {\n return PHONE_E164_REGEX.test(phone) || PHONE_NORTH_AMERICAN_REGEX.test(phone);\n}\nfunction normalizePhone(phone) {\n const digits = phone.replace(/[^\\d+]/g, \"\");\n if (digits.length === 10) {\n return `+1${digits}`;\n }\n if (digits.length === 11 && digits.startsWith(\"1\")) {\n return `+${digits}`;\n }\n return digits;\n}\nvar CANADIAN_POSTAL_CODE_REGEX = /^[ABCEGHJ-NPRSTVXY]\\d[ABCEGHJ-NPRSTV-Z][ ]?\\d[ABCEGHJ-NPRSTV-Z]\\d$/i;\nvar CANADIAN_POSTAL_CODE_SPACED_REGEX = /^[ABCEGHJ-NPRSTVXY]\\d[ABCEGHJ-NPRSTV-Z] \\d[ABCEGHJ-NPRSTV-Z]\\d$/i;\nfunction isValidCanadianPostalCode(postalCode) {\n return CANADIAN_POSTAL_CODE_REGEX.test(postalCode);\n}\nfunction formatCanadianPostalCode(postalCode) {\n const cleaned = postalCode.replace(/\\s/g, \"\").toUpperCase();\n if (cleaned.length === 6) {\n return `${cleaned.slice(0, 3)} ${cleaned.slice(3)}`;\n }\n return cleaned;\n}\nvar CANADIAN_PASSPORT_REGEX = /^[A-Z]{2}\\d{6}$/;\nfunction isValidCanadianPassport(passportNumber) {\n return CANADIAN_PASSPORT_REGEX.test(passportNumber.toUpperCase());\n}\nvar URL_REGEX = /^https?:\\/\\/(?:www\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b(?:[-a-zA-Z0-9()@:%_+.~#?&/=]*)$/;\nfunction isValidUrl(url) {\n try {\n new URL(url);\n return URL_REGEX.test(url);\n } catch {\n return false;\n }\n}\nvar ISO_DATE_REGEX = /^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])$/;\nvar DATE_FORMATS = {\n ISO: \"YYYY-MM-DD\",\n US: \"MM/DD/YYYY\",\n EU: \"DD/MM/YYYY\",\n CANADIAN: \"YYYY-MM-DD\"\n // ISO is standard in Canada\n};\nfunction isValidISODate(dateString) {\n if (!ISO_DATE_REGEX.test(dateString)) {\n return false;\n }\n const date = new Date(dateString);\n return !isNaN(date.getTime());\n}\nfunction isDateExpired(dateString) {\n const date = new Date(dateString);\n return date < /* @__PURE__ */ new Date();\n}\nfunction isDateWithinDays(dateString, days) {\n const date = new Date(dateString);\n const now = /* @__PURE__ */ new Date();\n const diffTime = now.getTime() - date.getTime();\n const diffDays = diffTime / (1e3 * 60 * 60 * 24);\n return diffDays <= days;\n}\nfunction isValidNumber(value) {\n return !isNaN(parseFloat(value)) && isFinite(parseFloat(value));\n}\nfunction isValidInteger(value) {\n return Number.isInteger(parseFloat(value));\n}\nfunction isInRange(value, min, max) {\n return value >= min && value <= max;\n}\nfunction isNotEmpty(value) {\n return value !== null && value !== void 0 && value.trim().length > 0;\n}\nfunction isWithinLength(value, min, max) {\n return value.length >= min && value.length <= max;\n}\nfunction matchesPattern(value, pattern) {\n return pattern.test(value);\n}\nfunction calculateAge(dateOfBirth) {\n const dob = new Date(dateOfBirth);\n const now = /* @__PURE__ */ new Date();\n let age = now.getFullYear() - dob.getFullYear();\n const monthDiff = now.getMonth() - dob.getMonth();\n if (monthDiff < 0 || monthDiff === 0 && now.getDate() < dob.getDate()) {\n age--;\n }\n return age;\n}\nfunction isAdult(dateOfBirth, adultAge = 18) {\n return calculateAge(dateOfBirth) >= adultAge;\n}\nvar PROOF_OF_ADDRESS_MAX_AGE_DAYS = 90;\nvar VALID_CSV_MIME_TYPES = [\n \"text/csv\",\n \"text/plain\",\n \"application/csv\",\n \"application/vnd.ms-excel\"\n];\nvar VALID_EXCEL_MIME_TYPES = [\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n \"application/vnd.ms-excel\"\n];\nvar VALID_DOCUMENT_MIME_TYPES = [\n \"application/pdf\",\n \"image/jpeg\",\n \"image/jpg\",\n \"image/png\"\n];\nvar MAX_CSV_FILE_SIZE = 50 * 1024 * 1024;\nvar MAX_EXCEL_FILE_SIZE = 50 * 1024 * 1024;\nvar MAX_DOCUMENT_FILE_SIZE = 10 * 1024 * 1024;\nvar MAX_IMPORT_ROWS = 1e5;\nvar DEFAULT_BATCH_SIZE = 1e3;\n\n// src/constants/canadian-provinces.ts\nvar CANADIAN_PROVINCES = {\n AB: {\n code: \"AB\",\n name: \"Alberta\",\n nameInFrench: \"Alberta\",\n isTerritory: false,\n licenseFormat: /^\\d{6,9}$/,\n licenseFormatDescription: \"6-9 digits\",\n licenseExampleFormat: \"123456789\"\n },\n BC: {\n code: \"BC\",\n name: \"British Columbia\",\n nameInFrench: \"Colombie-Britannique\",\n isTerritory: false,\n licenseFormat: /^\\d{7}$/,\n licenseFormatDescription: \"7 digits\",\n licenseExampleFormat: \"1234567\"\n },\n MB: {\n code: \"MB\",\n name: \"Manitoba\",\n nameInFrench: \"Manitoba\",\n isTerritory: false,\n licenseFormat: /^[A-Z]{2}\\d{6}[A-Z]?$/,\n licenseFormatDescription: \"2 letters + 6 digits + optional letter\",\n licenseExampleFormat: \"AB123456C\"\n },\n NB: {\n code: \"NB\",\n name: \"New Brunswick\",\n nameInFrench: \"Nouveau-Brunswick\",\n isTerritory: false,\n licenseFormat: /^\\d{7}$/,\n licenseFormatDescription: \"7 digits\",\n licenseExampleFormat: \"1234567\"\n },\n NL: {\n code: \"NL\",\n name: \"Newfoundland and Labrador\",\n nameInFrench: \"Terre-Neuve-et-Labrador\",\n isTerritory: false,\n licenseFormat: /^[A-Z]\\d{9}$/,\n licenseFormatDescription: \"1 letter + 9 digits\",\n licenseExampleFormat: \"A123456789\"\n },\n NS: {\n code: \"NS\",\n name: \"Nova Scotia\",\n nameInFrench: \"Nouvelle-\\xC9cosse\",\n isTerritory: false,\n licenseFormat: /^[A-Z]{5}\\d{9}$/,\n licenseFormatDescription: \"5 letters + 9 digits\",\n licenseExampleFormat: \"ABCDE123456789\"\n },\n NT: {\n code: \"NT\",\n name: \"Northwest Territories\",\n nameInFrench: \"Territoires du Nord-Ouest\",\n isTerritory: true,\n licenseFormat: /^\\d{6}$/,\n licenseFormatDescription: \"6 digits\",\n licenseExampleFormat: \"123456\"\n },\n NU: {\n code: \"NU\",\n name: \"Nunavut\",\n nameInFrench: \"Nunavut\",\n isTerritory: true,\n licenseFormat: /^\\d{6}$/,\n licenseFormatDescription: \"6 digits\",\n licenseExampleFormat: \"123456\"\n },\n ON: {\n code: \"ON\",\n name: \"Ontario\",\n nameInFrench: \"Ontario\",\n isTerritory: false,\n licenseFormat: /^[A-Z]\\d{4}-\\d{5}-\\d{5}$|^[A-Z]\\d{14}$/,\n licenseFormatDescription: \"1 letter + 14 digits (with or without dashes)\",\n licenseExampleFormat: \"A1234-56789-01234\"\n },\n PE: {\n code: \"PE\",\n name: \"Prince Edward Island\",\n nameInFrench: \"\\xCEle-du-Prince-\\xC9douard\",\n isTerritory: false,\n licenseFormat: /^\\d{5,6}$/,\n licenseFormatDescription: \"5-6 digits\",\n licenseExampleFormat: \"123456\"\n },\n QC: {\n code: \"QC\",\n name: \"Quebec\",\n nameInFrench: \"Qu\\xE9bec\",\n isTerritory: false,\n licenseFormat: /^[A-Z]\\d{12}$/,\n licenseFormatDescription: \"1 letter + 12 digits\",\n licenseExampleFormat: \"A123456789012\"\n },\n SK: {\n code: \"SK\",\n name: \"Saskatchewan\",\n nameInFrench: \"Saskatchewan\",\n isTerritory: false,\n licenseFormat: /^\\d{8}$/,\n licenseFormatDescription: \"8 digits\",\n licenseExampleFormat: \"12345678\"\n },\n YT: {\n code: \"YT\",\n name: \"Yukon\",\n nameInFrench: \"Yukon\",\n isTerritory: true,\n licenseFormat: /^\\d{6}$/,\n licenseFormatDescription: \"6 digits\",\n licenseExampleFormat: \"123456\"\n }\n};\nvar PROVINCE_CODES = Object.keys(CANADIAN_PROVINCES);\nvar PROVINCE_NAMES = Object.fromEntries(\n Object.entries(CANADIAN_PROVINCES).map(([code, info]) => [code, info.name])\n);\nfunction getProvinceInfo(code) {\n return CANADIAN_PROVINCES[code];\n}\nfunction validateLicenseFormat(licenseNumber, province) {\n const provinceInfo = CANADIAN_PROVINCES[province];\n return provinceInfo.licenseFormat.test(licenseNumber);\n}\nfunction detectProvinceFromLicense(licenseNumber) {\n for (const [code, info] of Object.entries(CANADIAN_PROVINCES)) {\n if (info.licenseFormat.test(licenseNumber)) {\n return code;\n }\n }\n return null;\n}\n\n// src/schemas/kyc-schemas.ts\nvar CanadianProvinceSchema = z2.enum([\n \"AB\",\n \"BC\",\n \"MB\",\n \"NB\",\n \"NL\",\n \"NS\",\n \"NT\",\n \"NU\",\n \"ON\",\n \"PE\",\n \"QC\",\n \"SK\",\n \"YT\"\n]);\nvar CanadianAddressSchema = z2.object({\n streetLine1: z2.string().min(1).max(200),\n streetLine2: z2.string().max(200).optional(),\n city: z2.string().min(1).max(100),\n province: CanadianProvinceSchema,\n postalCode: z2.string().regex(CANADIAN_POSTAL_CODE_REGEX, \"Invalid Canadian postal code format (A1A 1A1)\"),\n country: z2.literal(\"Canada\")\n});\nvar DocumentTypeSchema = z2.enum([\"passport\", \"drivers_license\", \"proof_of_address\"]);\nvar DocumentStatusSchema = z2.enum([\"uploaded\", \"processing\", \"completed\", \"failed\", \"requires_review\"]);\nvar OCRQualitySchema = z2.enum([\"excellent\", \"good\", \"fair\", \"poor\"]);\nvar OCRProviderSchema = z2.enum([\"tesseract\", \"textract\", \"gpt4vision\"]);\nvar SexSchema = z2.enum([\"M\", \"F\", \"X\"]);\nvar FraudFlagTypeSchema = z2.enum([\n \"image_manipulation\",\n \"poor_quality\",\n \"inconsistent_data\",\n \"expired_document\",\n \"invalid_format\",\n \"suspicious_pattern\",\n \"missing_security_features\",\n \"document_tampering\"\n]);\nvar FraudSeveritySchema = z2.enum([\"high\", \"medium\", \"low\"]);\nvar FraudFlagSchema = z2.object({\n type: FraudFlagTypeSchema,\n severity: FraudSeveritySchema,\n message: z2.string(),\n field: z2.string().optional(),\n details: z2.record(z2.unknown()).optional()\n});\nvar PassportConfidenceSchema = z2.object({\n fullName: z2.number().min(0).max(1),\n passportNumber: z2.number().min(0).max(1),\n dateOfBirth: z2.number().min(0).max(1),\n dateOfIssue: z2.number().min(0).max(1),\n dateOfExpiry: z2.number().min(0).max(1),\n placeOfBirth: z2.number().min(0).max(1),\n sex: z2.number().min(0).max(1),\n nationality: z2.number().min(0).max(1)\n});\nvar PassportDataSchema = z2.object({\n documentType: z2.literal(\"passport\"),\n fullName: z2.string().min(1),\n givenNames: z2.string().min(1),\n surname: z2.string().min(1),\n passportNumber: z2.string().regex(CANADIAN_PASSPORT_REGEX, \"Invalid Canadian passport number (format: AB123456)\"),\n dateOfBirth: z2.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/, \"Date must be in YYYY-MM-DD format\"),\n dateOfIssue: z2.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/, \"Date must be in YYYY-MM-DD format\"),\n dateOfExpiry: z2.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/, \"Date must be in YYYY-MM-DD format\"),\n placeOfBirth: z2.string().min(1),\n sex: SexSchema,\n nationality: z2.string().min(1),\n photoBase64: z2.string().optional(),\n mrzLine1: z2.string().optional(),\n mrzLine2: z2.string().optional(),\n confidence: PassportConfidenceSchema\n});\nvar DriversLicenseConfidenceSchema = z2.object({\n fullName: z2.number().min(0).max(1),\n licenseNumber: z2.number().min(0).max(1),\n dateOfBirth: z2.number().min(0).max(1),\n expiryDate: z2.number().min(0).max(1),\n address: z2.number().min(0).max(1),\n province: z2.number().min(0).max(1),\n licenseClass: z2.number().min(0).max(1)\n});\nvar DriversLicenseDataSchema = z2.object({\n documentType: z2.literal(\"drivers_license\"),\n fullName: z2.string().min(1),\n firstName: z2.string().min(1),\n lastName: z2.string().min(1),\n middleName: z2.string().optional(),\n licenseNumber: z2.string().min(1),\n dateOfBirth: z2.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/, \"Date must be in YYYY-MM-DD format\"),\n expiryDate: z2.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/, \"Date must be in YYYY-MM-DD format\"),\n issueDate: z2.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/, \"Date must be in YYYY-MM-DD format\").optional(),\n address: CanadianAddressSchema,\n province: CanadianProvinceSchema,\n licenseClass: z2.string().min(1),\n restrictions: z2.string().optional(),\n endorsements: z2.string().optional(),\n sex: SexSchema.optional(),\n height: z2.string().optional(),\n eyeColor: z2.string().optional(),\n photoBase64: z2.string().optional(),\n confidence: DriversLicenseConfidenceSchema\n});\nvar DriversLicenseDataRefinedSchema = DriversLicenseDataSchema.refine(\n (data) => {\n const provinceInfo = CANADIAN_PROVINCES[data.province];\n return provinceInfo.licenseFormat.test(data.licenseNumber);\n },\n {\n message: \"License number format doesn't match the province requirements\",\n path: [\"licenseNumber\"]\n }\n);\nvar ProofOfAddressTypeSchema = z2.enum([\n \"utility_bill\",\n \"bank_statement\",\n \"government_letter\",\n \"tax_statement\",\n \"lease_agreement\",\n \"insurance_statement\",\n \"other\"\n]);\nvar ProofOfAddressConfidenceSchema = z2.object({\n fullName: z2.number().min(0).max(1),\n address: z2.number().min(0).max(1),\n documentSubType: z2.number().min(0).max(1),\n issuer: z2.number().min(0).max(1),\n documentDate: z2.number().min(0).max(1)\n});\nvar ProofOfAddressDataSchema = z2.object({\n documentType: z2.literal(\"proof_of_address\"),\n fullName: z2.string().min(1),\n address: CanadianAddressSchema,\n documentSubType: ProofOfAddressTypeSchema,\n issuer: z2.string().min(1),\n documentDate: z2.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/, \"Date must be in YYYY-MM-DD format\"),\n accountNumber: z2.string().max(4).optional(),\n // Last 4 digits only\n statementPeriod: z2.object({\n start: z2.string(),\n end: z2.string()\n }).optional(),\n confidence: ProofOfAddressConfidenceSchema\n});\nvar ProofOfAddressDataRefinedSchema = ProofOfAddressDataSchema.refine(\n (data) => {\n const docDate = new Date(data.documentDate);\n const now = /* @__PURE__ */ new Date();\n const diffDays = (now.getTime() - docDate.getTime()) / (1e3 * 60 * 60 * 24);\n return diffDays <= 90;\n },\n {\n message: \"Proof of address must be dated within the last 90 days\",\n path: [\"documentDate\"]\n }\n);\nvar ExtractedDataSchema = z2.discriminatedUnion(\"documentType\", [\n PassportDataSchema,\n DriversLicenseDataSchema,\n ProofOfAddressDataSchema\n]);\nvar KYCSessionStatusSchema = z2.enum([\n \"created\",\n \"documents_pending\",\n \"processing\",\n \"review_required\",\n \"completed\",\n \"failed\",\n \"cancelled\"\n]);\nvar CreateKYCSessionSchema = z2.object({\n requiredDocuments: z2.array(DocumentTypeSchema).min(1),\n metadata: z2.record(z2.unknown()).optional()\n});\nvar UploadDocumentSchema = z2.object({\n sessionId: z2.string().uuid(),\n documentType: DocumentTypeSchema\n});\nvar KYCDocumentSchema = z2.object({\n id: z2.string().uuid(),\n sessionId: z2.string().uuid(),\n type: DocumentTypeSchema,\n status: DocumentStatusSchema,\n uploadedAt: z2.string().datetime(),\n processedAt: z2.string().datetime().optional(),\n originalFilename: z2.string(),\n fileSize: z2.number().int().positive(),\n mimeType: z2.string(),\n s3Key: z2.string(),\n extractedData: ExtractedDataSchema.optional(),\n confidence: z2.number().min(0).max(1),\n ocrQuality: OCRQualitySchema,\n fraudFlags: z2.array(FraudFlagSchema),\n processingTimeMs: z2.number().int().optional(),\n ocrProvider: OCRProviderSchema.optional(),\n aiModel: z2.string().optional()\n});\nvar VerifySessionSchema = z2.object({\n sessionId: z2.string().uuid(),\n acceptWarnings: z2.boolean().optional().default(false)\n});\n\n// src/schemas/payspace-batch.ts\nvar TRANSACTION_TYPES = [\"payment\", \"payout\", \"subscription\"];\nvar PAYMENT_METHODS = [\n \"credit_card\",\n \"digital_cheque\",\n \"etransfer_request_money\",\n \"etransfer_standard\",\n \"interac_online\",\n \"online_banking\",\n \"apple_pay\",\n \"google_pay\",\n \"ach_payment\",\n \"etransfer_send_money\",\n \"visa_direct\",\n \"credit_send\",\n \"master_card_send\",\n \"direct_deposit\",\n \"rtp_payout\",\n \"ach_payout\",\n \"wire_transfer\"\n];\nvar ITEM_TYPES = [\"digital\", \"physical\"];\nvar BILLING_CYCLE_INTERVALS = [\"daily\", \"weekly\", \"monthly\", \"yearly\"];\nvar requiredColumns = [\n {\n key: \"sid\",\n label: \"Site ID\",\n type: \"integer\",\n required: true,\n description: \"Your site's unique ID (whole number)\",\n validators: [\n { type: \"required\", message: \"Site ID is required\" },\n { type: \"integer\", message: \"Site ID must be a whole number\" },\n { type: \"min\", params: { value: 1 }, message: \"Site ID must be a positive number\" }\n ]\n },\n {\n key: \"type\",\n label: \"Transaction Type\",\n type: \"enum\",\n required: true,\n description: \"Type of transaction: payment, payout, or subscription\",\n validators: [\n { type: \"required\", message: \"Transaction type is required\" },\n {\n type: \"enum\",\n params: { values: TRANSACTION_TYPES },\n message: `Transaction type must be one of: ${TRANSACTION_TYPES.join(\", \")}`\n }\n ],\n transform: { type: \"lowercase\" }\n },\n {\n key: \"methods\",\n label: \"Payment Methods\",\n type: \"string\",\n required: true,\n description: \"Payment methods (comma-separated): credit_card, interac_online, etc.\",\n validators: [\n { type: \"required\", message: \"At least one payment method is required\" },\n {\n type: \"custom\",\n params: {\n validatorName: \"commaSeparatedEnum\",\n allowedValues: PAYMENT_METHODS\n },\n message: `Payment methods must be comma-separated values from: ${PAYMENT_METHODS.join(\", \")}`\n }\n ],\n transform: { type: \"lowercase\" }\n },\n {\n key: \"email\",\n label: \"Customer Email\",\n type: \"email\",\n required: true,\n description: \"Customer's email address\",\n validators: [\n { type: \"required\", message: \"Customer email is required\" },\n { type: \"email\", message: \"Must be a valid email address\" }\n ],\n transform: { type: \"trim\" }\n },\n {\n key: \"item_name\",\n label: \"Item Name\",\n type: \"string\",\n required: true,\n description: \"Name of the product or service\",\n validators: [\n { type: \"required\", message: \"Item name is required\" },\n { type: \"minLength\", params: { value: 1 }, message: \"Item name cannot be empty\" },\n { type: \"maxLength\", params: { value: 255 }, message: \"Item name must be 255 characters or less\" }\n ],\n transform: { type: \"trim\" }\n },\n {\n key: \"item_quantity\",\n label: \"Item Quantity\",\n type: \"integer\",\n required: true,\n description: \"Number of items (whole number)\",\n validators: [\n { type: \"required\", message: \"Item quantity is required\" },\n { type: \"integer\", message: \"Item quantity must be a whole number\" },\n { type: \"min\", params: { value: 1 }, message: \"Item quantity must be at least 1\" }\n ]\n },\n {\n key: \"item_unit_price\",\n label: \"Item Unit Price\",\n type: \"float\",\n required: true,\n description: \"Price per item (decimal number, no currency symbols)\",\n validators: [\n { type: \"required\", message: \"Item unit price is required\" },\n { type: \"float\", message: \"Item unit price must be a number\" },\n { type: \"min\", params: { value: 0 }, message: \"Item unit price cannot be negative\" },\n {\n type: \"pattern\",\n params: { regex: \"^[0-9]+(\\\\.[0-9]{1,2})?$\" },\n message: \"Item unit price must be a number with up to 2 decimal places (no currency symbols)\",\n severity: \"warning\"\n }\n ]\n },\n {\n key: \"item_type\",\n label: \"Item Type\",\n type: \"enum\",\n required: true,\n description: \"Type of item: digital or physical\",\n validators: [\n { type: \"required\", message: \"Item type is required\" },\n {\n type: \"enum\",\n params: { values: ITEM_TYPES },\n message: `Item type must be one of: ${ITEM_TYPES.join(\", \")}`\n }\n ],\n transform: { type: \"lowercase\" }\n },\n {\n key: \"udf1\",\n label: \"Custom Reference (UDF1)\",\n type: \"string\",\n required: true,\n description: \"Your internal reference (invoice number, order ID, etc.)\",\n validators: [\n { type: \"required\", message: \"Custom reference (UDF1) is required\" },\n { type: \"maxLength\", params: { value: 255 }, message: \"Custom reference must be 255 characters or less\" }\n ],\n transform: { type: \"trim\" }\n }\n];\nvar sessionSettingsColumns = [\n {\n key: \"preferred_method\",\n label: \"Preferred Payment Method\",\n type: \"enum\",\n required: false,\n description: \"Default payment method selected for customer\",\n validators: [\n {\n type: \"enum\",\n params: { values: PAYMENT_METHODS },\n message: `Preferred method must be one of: ${PAYMENT_METHODS.join(\", \")}`\n }\n ],\n transform: { type: \"lowercase\" }\n }\n];\nvar billingColumns = [\n {\n key: \"phone\",\n label: \"Phone Number\",\n type: \"phone\",\n required: false,\n description: \"Customer phone number\",\n validators: [\n { type: \"phone\", message: \"Must be a valid phone number\", severity: \"warning\" }\n ],\n transform: { type: \"trim\" }\n },\n {\n key: \"billing_first_name\",\n label: \"Billing First Name\",\n type: \"string\",\n required: false,\n description: \"Customer billing first name\",\n validators: [\n { type: \"maxLength\", params: { value: 100 }, message: \"First name must be 100 characters or less\" }\n ],\n transform: { type: \"trim\" }\n },\n {\n key: \"billing_last_name\",\n label: \"Billing Last Name\",\n type: \"string\",\n required: false,\n description: \"Customer billing last name\",\n validators: [\n { type: \"maxLength\", params: { value: 100 }, message: \"Last name must be 100 characters or less\" }\n ],\n transform: { type: \"trim\" }\n },\n {\n key: \"billing_address\",\n label: \"Billing Address\",\n type: \"string\",\n required: false,\n description: \"Customer billing street address\",\n validators: [\n { type: \"maxLength\", params: { value: 255 }, message: \"Address must be 255 characters or less\" }\n ],\n transform: { type: \"trim\" }\n },\n {\n key: \"billing_unit_number\",\n label: \"Billing Unit Number\",\n type: \"string\",\n required: false,\n description: \"Apartment, suite, or unit number\",\n validators: [\n { type: \"maxLength\", params: { value: 50 }, message: \"Unit number must be 50 characters or less\" }\n ],\n transform: { type: \"trim\" }\n },\n {\n key: \"billing_city\",\n label: \"Billing City\",\n type: \"string\",\n required: false,\n description: \"Customer billing city\",\n validators: [\n { type: \"maxLength\", params: { value: 100 }, message: \"City must be 100 characters or less\" }\n ],\n transform: { type: \"trim\" }\n },\n {\n key: \"billing_state\",\n label: \"Billing State/Province\",\n type: \"string\",\n required: false,\n description: \"State or province code (e.g., ON, BC, CA)\",\n validators: [\n { type: \"maxLength\", params: { value: 50 }, message: \"State/Province must be 50 characters or less\" }\n ],\n transform: { type: \"trim\" }\n },\n {\n key: \"billing_country\",\n label: \"Billing Country\",\n type: \"string\",\n required: false,\n description: \"Country name or code\",\n validators: [\n { type: \"maxLength\", params: { value: 100 }, message: \"Country must be 100 characters or less\" }\n ],\n transform: { type: \"trim\" }\n },\n {\n key: \"billing_zip_code\",\n label: \"Billing Postal/ZIP Code\",\n type: \"string\",\n required: false,\n description: \"Postal or ZIP code\",\n validators: [\n { type: \"maxLength\", params: { value: 20 }, message: \"Postal code must be 20 characters or less\" }\n ],\n transform: { type: \"trim\" }\n },\n {\n key: \"billing_company\",\n label: \"Billing Company\",\n type: \"string\",\n required: false,\n description: \"Company or business name\",\n validators: [\n { type: \"maxLength\", params: { value: 255 }, message: \"Company name must be 255 characters or less\" }\n ],\n transform: { type: \"trim\" }\n }\n];\nvar shippingColumns = [\n {\n key: \"shipping_first_name\",\n label: \"Shipping First Name\",\n type: \"string\",\n required: false,\n description: \"Shipping recipient first name\",\n transform: { type: \"trim\" }\n },\n {\n key: \"shipping_last_name\",\n label: \"Shipping Last Name\",\n type: \"string\",\n required: false,\n description: \"Shipping recipient last name\",\n transform: { type: \"trim\" }\n },\n {\n key: \"shipping_address\",\n label: \"Shipping Address\",\n type: \"string\",\n required: false,\n description: \"Shipping street address\",\n transform: { type: \"trim\" }\n },\n {\n key: \"shipping_unit_number\",\n label: \"Shipping Unit Number\",\n type: \"string\",\n required: false,\n description: \"Shipping apartment, suite, or unit number\",\n transform: { type: \"trim\" }\n },\n {\n key: \"shipping_city\",\n label: \"Shipping City\",\n type: \"string\",\n required: false,\n description: \"Shipping city\",\n transform: { type: \"trim\" }\n },\n {\n key: \"shipping_state\",\n label: \"Shipping State/Province\",\n type: \"string\",\n required: false,\n description: \"Shipping state or province\",\n transform: { type: \"trim\" }\n },\n {\n key: \"shipping_country\",\n label: \"Shipping Country\",\n type: \"string\",\n required: false,\n description: \"Shipping country\",\n transform: { type: \"trim\" }\n },\n {\n key: \"shipping_zip_code\",\n label: \"Shipping Postal/ZIP Code\",\n type: \"string\",\n required: false,\n description: \"Shipping postal or ZIP code\",\n transform: { type: \"trim\" }\n }\n];\nvar itemDetailsColumns = [\n {\n key: \"item_description\",\n label: \"Item Description\",\n type: \"string\",\n required: false,\n description: \"Detailed description of the item\",\n validators: [\n { type: \"maxLength\", params: { value: 1e3 }, message: \"Description must be 1000 characters or less\" }\n ],\n transform: { type: \"trim\" }\n },\n {\n key: \"item_sku\",\n label: \"Item SKU\",\n type: \"string\",\n required: false,\n description: \"Product SKU or identifier\",\n validators: [\n { type: \"maxLength\", params: { value: 100 }, message: \"SKU must be 100 characters or less\" }\n ],\n transform: { type: \"trim\" }\n },\n {\n key: \"item_image_url\",\n label: \"Item Image URL\",\n type: \"url\",\n required: false,\n description: \"URL to product image (must start with http:// or https://)\",\n validators: [\n { type: \"url\", message: \"Must be a valid URL starting with http:// or https://\" }\n ],\n transform: { type: \"trim\" }\n },\n {\n key: \"additional_items\",\n label: \"Additional Items\",\n type: \"string\",\n required: false,\n description: \"Additional items in JSON format\",\n transform: { type: \"trim\" }\n }\n];\nvar notificationColumns = [\n {\n key: \"email_recipients\",\n label: \"Email Recipients\",\n type: \"string\",\n required: false,\n description: \"Additional email recipients for notifications\",\n validators: [\n {\n type: \"custom\",\n params: { validatorName: \"commaSeparatedEmails\" },\n message: \"Must be valid comma-separated email addresses\",\n severity: \"warning\"\n }\n ],\n transform: { type: \"trim\" }\n },\n {\n key: \"phone_recipients\",\n label: \"Phone Recipients\",\n type: \"string\",\n required: false,\n description: \"SMS notification recipients\",\n transform: { type: \"trim\" }\n },\n {\n key: \"notification_info\",\n label: \"Notification Info\",\n type: \"string\",\n required: false,\n description: \"Additional notification information\",\n transform: { type: \"trim\" }\n }\n];\nvar billingCycleColumns = [\n {\n key: \"subscription_amount\",\n label: \"Subscription Amount\",\n type: \"float\",\n required: false,\n description: \"Recurring subscription amount\",\n validators: [\n { type: \"float\", message: \"Subscription amount must be a number\" },\n { type: \"min\", params: { value: 0 }, message: \"Amount cannot be negative\" }\n ]\n },\n {\n key: \"billing_cycle_interval\",\n label: \"Billing Cycle Interval\",\n type: \"enum\",\n required: false,\n description: \"Billing frequency: daily, weekly, monthly, yearly\",\n validators: [\n {\n type: \"enum\",\n params: { values: BILLING_CYCLE_INTERVALS },\n message: `Billing interval must be one of: ${BILLING_CYCLE_INTERVALS.join(\", \")}`\n }\n ],\n transform: { type: \"lowercase\" }\n },\n {\n key: \"billing_cycle_interval_count\",\n label: \"Billing Cycle Count\",\n type: \"integer\",\n required: false,\n description: \"Number of intervals between billing\",\n validators: [\n { type: \"integer\", message: \"Must be a whole number\" },\n { type: \"min\", params: { value: 1 }, message: \"Must be at least 1\" }\n ]\n },\n {\n key: \"billing_cycle_month\",\n label: \"Billing Cycle Month\",\n type: \"integer\",\n required: false,\n description: \"Month for yearly billing (1-12)\",\n validators: [\n { type: \"integer\", message: \"Must be a whole number\" },\n { type: \"min\", params: { value: 1 }, message: \"Month must be 1-12\" },\n { type: \"max\", params: { value: 12 }, message: \"Month must be 1-12\" }\n ]\n },\n {\n key: \"billing_cycle_week\",\n label: \"Billing Cycle Week\",\n type: \"integer\",\n required: false,\n description: \"Week number for billing\",\n validators: [\n { type: \"integer\", message: \"Must be a whole number\" }\n ]\n },\n {\n key: \"billing_cycle_day_of_month\",\n label: \"Billing Day of Month\",\n type: \"integer\",\n required: false,\n description: \"Day of month for billing (1-31)\",\n validators: [\n { type: \"integer\", message: \"Must be a whole number\" },\n { type: \"min\", params: { value: 1 }, message: \"Day must be 1-31\" },\n { type: \"max\", params: { value: 31 }, message: \"Day must be 1-31\" }\n ]\n },\n {\n key: \"billing_cycle_day_of_week\",\n label: \"Billing Day of Week\",\n type: \"integer\",\n required: false,\n description: \"Day of week for billing (0=Sunday, 6=Saturday)\",\n validators: [\n { type: \"integer\", message: \"Must be a whole number\" },\n { type: \"min\", params: { value: 0 }, message: \"Day must be 0-6\" },\n { type: \"max\", params: { value: 6 }, message: \"Day must be 0-6\" }\n ]\n },\n {\n key: \"billing_cycle_expression\",\n label: \"Billing Cycle Expression\",\n type: \"string\",\n required: false,\n description: \"Cron expression for custom billing schedule\",\n transform: { type: \"trim\" }\n },\n {\n key: \"billing_cycle_weekday\",\n label: \"Billing Cycle Weekday\",\n type: \"boolean\",\n required: false,\n description: \"Whether to bill only on weekdays\"\n },\n {\n key: \"billing_cycle_start_at\",\n label: \"Billing Cycle Start Date\",\n type: \"datetime\",\n required: false,\n description: \"Start date for billing cycle (ISO 8601 format)\",\n validators: [\n { type: \"date\", message: \"Must be a valid date/time\" }\n ]\n }\n];\nvar urlColumns = [\n {\n key: \"return_url\",\n label: \"Return URL\",\n type: \"url\",\n required: false,\n description: \"URL to redirect after successful payment\",\n validators: [\n { type: \"url\", message: \"Must be a valid URL starting with http:// or https://\" }\n ],\n transform: { type: \"trim\" }\n },\n {\n key: \"failed_return_url\",\n label: \"Failed Return URL\",\n type: \"url\",\n required: false,\n description: \"URL to redirect after failed payment\",\n validators: [\n { type: \"url\", message: \"Must be a valid URL starting with http:// or https://\" }\n ],\n transform: { type: \"trim\" }\n },\n {\n key: \"merchant_ntf_url\",\n label: \"Merchant Notification URL\",\n type: \"url\",\n required: false,\n description: \"Webhook URL for payment notifications\",\n validators: [\n { type: \"url\", message: \"Must be a valid URL starting with http:// or https://\" }\n ],\n transform: { type: \"trim\" }\n }\n];\nvar otherColumns = [\n {\n key: \"convinience_fee\",\n label: \"Convenience Fee\",\n type: \"float\",\n required: false,\n description: \"Additional convenience fee amount\",\n validators: [\n { type: \"float\", message: \"Fee must be a number\" },\n { type: \"min\", params: { value: 0 }, message: \"Fee cannot be negative\" }\n ]\n },\n {\n key: \"udf2\",\n label: \"Custom Field 2 (UDF2)\",\n type: \"string\",\n required: false,\n description: \"Additional custom reference field\",\n validators: [\n { type: \"maxLength\", params: { value: 255 }, message: \"Must be 255 characters or less\" }\n ],\n transform: { type: \"trim\" }\n },\n {\n key: \"udf3\",\n label: \"Custom Field 3 (UDF3)\",\n type: \"string\",\n required: false,\n description: \"Additional custom reference field\",\n validators: [\n { type: \"maxLength\", params: { value: 255 }, message: \"Must be 255 characters or less\" }\n ],\n transform: { type: \"trim\" }\n }\n];\nvar PAYSPACE_BATCH_SCHEMA = {\n columns: [\n ...requiredColumns,\n ...sessionSettingsColumns,\n ...billingColumns,\n ...shippingColumns,\n ...itemDetailsColumns,\n ...notificationColumns,\n ...billingCycleColumns,\n ...urlColumns,\n ...otherColumns\n ],\n options: {\n allowExtraColumns: true,\n skipEmptyRows: true,\n trimWhitespace: true,\n uniqueKeys: [\"email\"]\n }\n};\nvar REQUIRED_FIELDS = requiredColumns.map((c) => c.key);\nvar ALL_FIELDS = PAYSPACE_BATCH_SCHEMA.columns.map((c) => c.key);\n\n// src/constants/document-types.ts\nvar DOCUMENT_TYPES = {\n passport: {\n type: \"passport\",\n label: \"Canadian Passport\",\n description: \"A valid Canadian passport (not expired)\",\n acceptedFormats: [\".pdf\", \".jpg\", \".jpeg\", \".png\"],\n maxFileSize: 10 * 1024 * 1024,\n // 10MB\n estimatedProcessingTime: 8,\n requiredFields: [\n \"fullName\",\n \"passportNumber\",\n \"dateOfBirth\",\n \"dateOfIssue\",\n \"dateOfExpiry\",\n \"placeOfBirth\",\n \"sex\",\n \"nationality\"\n ]\n },\n drivers_license: {\n type: \"drivers_license\",\n label: \"Canadian Driver's License\",\n description: \"A valid Canadian provincial or territorial driver's license\",\n acceptedFormats: [\".pdf\", \".jpg\", \".jpeg\", \".png\"],\n maxFileSize: 10 * 1024 * 1024,\n // 10MB\n estimatedProcessingTime: 8,\n requiredFields: [\n \"fullName\",\n \"licenseNumber\",\n \"dateOfBirth\",\n \"expiryDate\",\n \"address\",\n \"province\",\n \"licenseClass\"\n ]\n },\n proof_of_address: {\n type: \"proof_of_address\",\n label: \"Proof of Address\",\n description: \"A document showing your current Canadian address (dated within 90 days)\",\n acceptedFormats: [\".pdf\", \".jpg\", \".jpeg\", \".png\"],\n maxFileSize: 10 * 1024 * 1024,\n // 10MB\n estimatedProcessingTime: 10,\n requiredFields: [\"fullName\", \"address\", \"documentSubType\", \"issuer\", \"documentDate\"]\n }\n};\nvar PROOF_OF_ADDRESS_TYPES = {\n utility_bill: {\n label: \"Utility Bill\",\n description: \"Electricity, gas, water, internet, or phone bill\"\n },\n bank_statement: {\n label: \"Bank Statement\",\n description: \"Monthly bank or credit card statement\"\n },\n government_letter: {\n label: \"Government Letter\",\n description: \"Official correspondence from CRA, Service Canada, or provincial government\"\n },\n tax_statement: {\n label: \"Tax Statement\",\n description: \"Property tax statement or CRA assessment\"\n },\n lease_agreement: {\n label: \"Lease Agreement\",\n description: \"Current residential lease or rental agreement\"\n },\n insurance_statement: {\n label: \"Insurance Statement\",\n description: \"Home or auto insurance statement\"\n },\n other: {\n label: \"Other Document\",\n description: \"Other official document showing your name and address\"\n }\n};\nvar SUPPORTED_IMPORT_EXTENSIONS = [\".csv\", \".xlsx\", \".xls\"];\nvar SUPPORTED_DOCUMENT_EXTENSIONS = [\".pdf\", \".jpg\", \".jpeg\", \".png\"];\nvar MIME_TYPE_MAP = {\n \".csv\": [\"text/csv\", \"text/plain\", \"application/csv\"],\n \".xlsx\": [\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"],\n \".xls\": [\"application/vnd.ms-excel\"],\n \".pdf\": [\"application/pdf\"],\n \".jpg\": [\"image/jpeg\"],\n \".jpeg\": [\"image/jpeg\"],\n \".png\": [\"image/png\"]\n};\nfunction getDocumentTypeInfo(type) {\n return DOCUMENT_TYPES[type];\n}\nfunction getAcceptedExtensions(type) {\n return DOCUMENT_TYPES[type].acceptedFormats.join(\",\");\n}\nfunction isValidFileExtension(filename, type) {\n const ext = filename.toLowerCase().slice(filename.lastIndexOf(\".\"));\n return DOCUMENT_TYPES[type].acceptedFormats.includes(ext);\n}\n\n// src/constants/error-codes.ts\nvar AUTH_ERRORS = {\n INVALID_API_KEY: {\n code: \"AUTH_1001\",\n message: \"Invalid or missing API key\"\n },\n API_KEY_EXPIRED: {\n code: \"AUTH_1002\",\n message: \"API key has expired\"\n },\n INSUFFICIENT_PERMISSIONS: {\n code: \"AUTH_1003\",\n message: \"Insufficient permissions for this operation\"\n },\n RATE_LIMIT_EXCEEDED: {\n code: \"AUTH_1004\",\n message: \"Rate limit exceeded. Please try again later\"\n }\n};\nvar UPLOAD_ERRORS = {\n FILE_TOO_LARGE: {\n code: \"UPLOAD_2001\",\n message: \"File exceeds maximum allowed size\"\n },\n INVALID_FILE_TYPE: {\n code: \"UPLOAD_2002\",\n message: \"File type not supported\"\n },\n FILE_CORRUPTED: {\n code: \"UPLOAD_2003\",\n message: \"File appears to be corrupted or unreadable\"\n },\n UPLOAD_FAILED: {\n code: \"UPLOAD_2004\",\n message: \"File upload failed. Please try again\"\n },\n NO_FILE_PROVIDED: {\n code: \"UPLOAD_2005\",\n message: \"No file was provided\"\n }\n};\nvar PARSE_ERRORS = {\n INVALID_CSV: {\n code: \"PARSE_3001\",\n message: \"Invalid CSV format\"\n },\n INVALID_EXCEL: {\n code: \"PARSE_3002\",\n message: \"Invalid Excel format\"\n },\n NO_DATA_FOUND: {\n code: \"PARSE_3003\",\n message: \"No data found in file\"\n },\n TOO_MANY_ROWS: {\n code: \"PARSE_3004\",\n message: \"File exceeds maximum row limit\"\n },\n ENCODING_ERROR: {\n code: \"PARSE_3005\",\n message: \"Unable to detect file encoding\"\n },\n EMPTY_HEADERS: {\n code: \"PARSE_3006\",\n message: \"No column headers found\"\n }\n};\nvar VALIDATION_ERRORS = {\n REQUIRED_FIELD_MISSING: {\n code: \"VALIDATION_4001\",\n message: \"Required field is missing\"\n },\n INVALID_EMAIL: {\n code: \"VALIDATION_4002\",\n message: \"Invalid email format\"\n },\n INVALID_PHONE: {\n code: \"VALIDATION_4003\",\n message: \"Invalid phone number format\"\n },\n INVALID_DATE: {\n code: \"VALIDATION_4004\",\n message: \"Invalid date format\"\n },\n INVALID_NUMBER: {\n code: \"VALIDATION_4005\",\n message: \"Invalid number format\"\n },\n DUPLICATE_VALUE: {\n code: \"VALIDATION_4006\",\n message: \"Duplicate value found\"\n },\n VALUE_OUT_OF_RANGE: {\n code: \"VALIDATION_4007\",\n message: \"Value is out of allowed range\"\n },\n PATTERN_MISMATCH: {\n code: \"VALIDATION_4008\",\n message: \"Value does not match required pattern\"\n },\n INVALID_ENUM_VALUE: {\n code: \"VALIDATION_4009\",\n message: \"Value is not in allowed list\"\n }\n};\nvar KYC_ERRORS = {\n DOCUMENT_UNREADABLE: {\n code: \"KYC_5001\",\n message: \"Document is unreadable or too low quality\"\n },\n DOCUMENT_EXPIRED: {\n code: \"KYC_5002\",\n message: \"Document has expired\"\n },\n INVALID_DOCUMENT_TYPE: {\n code: \"KYC_5003\",\n message: \"Document type could not be determined\"\n },\n EXTRACTION_FAILED: {\n code: \"KYC_5004\",\n message: \"Failed to extract data from document\"\n },\n INVALID_PASSPORT_FORMAT: {\n code: \"KYC_5005\",\n message: \"Invalid Canadian passport number format\"\n },\n INVALID_LICENSE_FORMAT: {\n code: \"KYC_5006\",\n message: \"Invalid driver's license number format for province\"\n },\n INVALID_POSTAL_CODE: {\n code: \"KYC_5007\",\n message: \"Invalid Canadian postal code format\"\n },\n DOCUMENT_TOO_OLD: {\n code: \"KYC_5008\",\n message: \"Proof of address document is older than 90 days\"\n },\n NON_CANADIAN_DOCUMENT: {\n code: \"KYC_5009\",\n message: \"Document does not appear to be Canadian\"\n },\n NAME_MISMATCH: {\n code: \"KYC_5010\",\n message: \"Names do not match across documents\"\n },\n ADDRESS_MISMATCH: {\n code: \"KYC_5011\",\n message: \"Addresses do not match across documents\"\n },\n FRAUD_DETECTED: {\n code: \"KYC_5012\",\n message: \"Potential document fraud detected\"\n },\n OCR_TIMEOUT: {\n code: \"KYC_5013\",\n message: \"Document processing timed out\"\n }\n};\nvar SESSION_ERRORS = {\n SESSION_NOT_FOUND: {\n code: \"SESSION_6001\",\n message: \"Session not found\"\n },\n SESSION_EXPIRED: {\n code: \"SESSION_6002\",\n message: \"Session has expired\"\n },\n INVALID_SESSION_STATE: {\n code: \"SESSION_6003\",\n message: \"Invalid operation for current session state\"\n },\n SESSION_ALREADY_COMPLETED: {\n code: \"SESSION_6004\",\n message: \"Session has already been completed\"\n }\n};\nvar SERVER_ERRORS = {\n INTERNAL_ERROR: {\n code: \"SERVER_9001\",\n message: \"An internal error occurred\"\n },\n SERVICE_UNAVAILABLE: {\n code: \"SERVER_9002\",\n message: \"Service temporarily unavailable\"\n },\n AI_SERVICE_ERROR: {\n code: \"SERVER_9003\",\n message: \"AI processing service error\"\n },\n STORAGE_ERROR: {\n code: \"SERVER_9004\",\n message: \"File storage error\"\n },\n DATABASE_ERROR: {\n code: \"SERVER_9005\",\n message: \"Database error\"\n }\n};\nvar ALL_ERROR_CODES = {\n ...AUTH_ERRORS,\n ...UPLOAD_ERRORS,\n ...PARSE_ERRORS,\n ...VALIDATION_ERRORS,\n ...KYC_ERRORS,\n ...SESSION_ERRORS,\n ...SERVER_ERRORS\n};\nexport {\n ALL_ERROR_CODES,\n ALL_FIELDS,\n AUTH_ERRORS,\n BILLING_CYCLE_INTERVALS,\n BatchUpdateRowsSchema,\n CANADIAN_PASSPORT_REGEX,\n CANADIAN_POSTAL_CODE_REGEX,\n CANADIAN_POSTAL_CODE_SPACED_REGEX,\n CANADIAN_PROVINCES,\n CanadianAddressSchema,\n CanadianProvinceSchema,\n ColumnMappingSchema,\n ColumnTypeSchema,\n CompleteImportSchema,\n CreateImportSessionSchema,\n CreateKYCSessionSchema,\n DATE_FORMATS,\n DEFAULT_BATCH_SIZE,\n DEFAULT_FEATURE_THEMES,\n DEFAULT_THEME,\n DOCUMENT_TYPES,\n DocumentStatusSchema,\n DocumentTypeSchema,\n DriversLicenseConfidenceSchema,\n DriversLicenseDataRefinedSchema,\n DriversLicenseDataSchema,\n EMAIL_REGEX,\n ExtractedDataSchema,\n FraudFlagSchema,\n FraudFlagTypeSchema,\n FraudSeveritySchema,\n ISO_DATE_REGEX,\n ITEM_TYPES,\n ImportSchemaSchema,\n ImportSessionStatusSchema,\n KYCDocumentSchema,\n KYCSessionStatusSchema,\n KYC_ERRORS,\n MAX_CSV_FILE_SIZE,\n MAX_DOCUMENT_FILE_SIZE,\n MAX_EXCEL_FILE_SIZE,\n MAX_IMPORT_ROWS,\n MIME_TYPE_MAP,\n OCRProviderSchema,\n OCRQualitySchema,\n PARSE_ERRORS,\n PAYMENT_METHODS,\n PAYSPACE_BATCH_SCHEMA,\n PHONE_CANADIAN_REGEX,\n PHONE_E164_REGEX,\n PHONE_NORTH_AMERICAN_REGEX,\n PRESET_THEMES,\n PROOF_OF_ADDRESS_MAX_AGE_DAYS,\n PROOF_OF_ADDRESS_TYPES,\n PROVINCE_CODES,\n PROVINCE_NAMES,\n PassportConfidenceSchema,\n PassportDataSchema,\n ProofOfAddressConfidenceSchema,\n ProofOfAddressDataRefinedSchema,\n ProofOfAddressDataSchema,\n ProofOfAddressTypeSchema,\n REQUIRED_FIELDS,\n SERVER_ERRORS,\n SESSION_ERRORS,\n SUPPORTED_DOCUMENT_EXTENSIONS,\n SUPPORTED_IMPORT_EXTENSIONS,\n SchemaColumnSchema,\n SchemaOptionsSchema,\n SexSchema,\n TRANSACTION_TYPES,\n TransformConfigSchema,\n TransformTypeSchema,\n UPLOAD_ERRORS,\n URL_REGEX,\n UpdateMappingsSchema,\n UpdateRowSchema,\n UploadDocumentSchema,\n VALIDATION_ERRORS,\n VALID_CSV_MIME_TYPES,\n VALID_DOCUMENT_MIME_TYPES,\n VALID_EXCEL_MIME_TYPES,\n ValidationErrorSchema,\n ValidationSeveritySchema,\n ValidatorConfigSchema,\n ValidatorTypeSchema,\n VerifySessionSchema,\n calculateAge,\n detectProvinceFromLicense,\n formatCanadianPostalCode,\n getAcceptedExtensions,\n getDocumentTypeInfo,\n getProvinceInfo,\n isAdult,\n isDateExpired,\n isDateWithinDays,\n isInRange,\n isNotEmpty,\n isValidCanadianPassport,\n isValidCanadianPostalCode,\n isValidEmail,\n isValidFileExtension,\n isValidISODate,\n isValidInteger,\n isValidNumber,\n isValidPhone,\n isValidUrl,\n isWithinLength,\n matchesPattern,\n mergeFeatureThemes,\n mergeTheme,\n normalizePhone,\n themeToCssVariables,\n validateLicenseFormat\n};\n//# sourceMappingURL=index.mjs.map","import React, { useCallback } from 'react';\nimport { useDropzone } from 'react-dropzone';\nimport { Upload, FileText, Image, AlertCircle, X } from 'lucide-react';\nimport { clsx } from 'clsx';\nimport { useKYCStore } from '../../store/kyc-store';\nimport type { DocumentType } from '@fileflow/shared';\nimport { DOCUMENT_TYPES } from '@fileflow/shared';\n\ninterface DocumentUploaderProps {\n documentType: DocumentType;\n onFileSelect?: (file: File) => void;\n}\n\nexport const DocumentUploader: React.FC<DocumentUploaderProps> = ({\n documentType,\n onFileSelect,\n}) => {\n const { documents, setDocumentFile, isLoading } = useKYCStore();\n const documentState = documents.get(documentType);\n const documentInfo = DOCUMENT_TYPES[documentType];\n\n const onDrop = useCallback(\n (acceptedFiles: File[], rejectedFiles: unknown[]) => {\n if (rejectedFiles.length > 0) {\n return;\n }\n\n if (acceptedFiles.length > 0) {\n const file = acceptedFiles[0];\n setDocumentFile(documentType, file);\n onFileSelect?.(file);\n }\n },\n [documentType, onFileSelect, setDocumentFile]\n );\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n onDrop,\n accept: {\n 'application/pdf': ['.pdf'],\n 'image/jpeg': ['.jpg', '.jpeg'],\n 'image/png': ['.png'],\n },\n maxSize: documentInfo.maxFileSize,\n multiple: false,\n disabled: isLoading,\n });\n\n const formatFileSize = (bytes: number): string => {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n };\n\n const getFileIcon = () => {\n if (documentState?.file?.type === 'application/pdf') {\n return <FileText className=\"ff-w-6 ff-h-6\" />;\n }\n return <Image className=\"ff-w-6 ff-h-6\" />;\n };\n\n const clearFile = (e: React.MouseEvent) => {\n e.stopPropagation();\n useKYCStore.getState().clearDocumentPreview(documentType);\n setDocumentFile(documentType, null as unknown as File);\n };\n\n // Show preview if file is selected\n if (documentState?.file && documentState.previewUrl) {\n return (\n <div className=\"ff-space-y-4\">\n {/* Document Info */}\n <div className=\"ff-bg-primary-50 ff-border ff-border-primary-200 ff-rounded-lg ff-p-4\">\n <div className=\"ff-flex ff-items-center ff-gap-3\">\n <div className=\"ff-p-2 ff-bg-primary-100 ff-rounded-lg ff-text-primary-600\">\n {getFileIcon()}\n </div>\n <div className=\"ff-flex-1 ff-min-w-0\">\n <p className=\"ff-font-medium ff-text-primary-900 ff-truncate\">\n {documentState.file.name}\n </p>\n <p className=\"ff-text-sm ff-text-primary-600\">\n {formatFileSize(documentState.file.size)}\n </p>\n </div>\n <button\n onClick={clearFile}\n className=\"ff-p-1.5 ff-text-primary-600 hover:ff-text-primary-800 hover:ff-bg-primary-100 ff-rounded-full ff-transition-colors\"\n aria-label=\"Remove file\"\n >\n <X className=\"ff-w-5 ff-h-5\" />\n </button>\n </div>\n </div>\n\n {/* Preview */}\n <div className=\"ff-document-preview ff-aspect-[3/4] ff-max-h-96\">\n {documentState.file.type === 'application/pdf' ? (\n <iframe\n src={documentState.previewUrl}\n className=\"ff-w-full ff-h-full ff-rounded-lg\"\n title=\"Document preview\"\n />\n ) : (\n <img\n src={documentState.previewUrl}\n alt=\"Document preview\"\n className=\"ff-w-full ff-h-full ff-object-contain ff-rounded-lg\"\n />\n )}\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"ff-space-y-4\">\n {/* Document Type Info */}\n <div className=\"ff-text-center ff-mb-4\">\n <h3 className=\"ff-text-lg ff-font-semibold ff-text-gray-900\">{documentInfo.label}</h3>\n <p className=\"ff-text-sm ff-text-gray-500 ff-mt-1\">{documentInfo.description}</p>\n </div>\n\n {/* Dropzone */}\n <div\n {...getRootProps()}\n className={clsx(\n 'ff-dropzone ff-min-h-[200px]',\n isDragActive && 'ff-dropzone-active',\n isLoading && 'ff-opacity-50 ff-cursor-not-allowed'\n )}\n >\n <input {...getInputProps()} />\n <div className=\"ff-flex ff-flex-col ff-items-center ff-gap-4\">\n <div\n className={clsx(\n 'ff-p-4 ff-rounded-full',\n isDragActive ? 'ff-bg-primary-100' : 'ff-bg-gray-100'\n )}\n >\n <Upload\n className={clsx(\n 'ff-w-10 ff-h-10',\n isDragActive ? 'ff-text-primary-600' : 'ff-text-gray-400'\n )}\n />\n </div>\n <div className=\"ff-text-center\">\n <p className=\"ff-text-base ff-font-medium ff-text-gray-700\">\n {isDragActive ? 'Drop your document here' : 'Upload your document'}\n </p>\n <p className=\"ff-text-sm ff-text-gray-500 ff-mt-1\">\n Drag & drop or{' '}\n <span className=\"ff-text-primary-600 ff-font-medium\">browse files</span>\n </p>\n </div>\n <div className=\"ff-flex ff-flex-wrap ff-justify-center ff-gap-2 ff-text-xs ff-text-gray-400\">\n {documentInfo.acceptedFormats.map((format) => (\n <span key={format} className=\"ff-px-2 ff-py-1 ff-bg-gray-100 ff-rounded\">\n {format.toUpperCase()}\n </span>\n ))}\n <span className=\"ff-px-2 ff-py-1\">\n Max {formatFileSize(documentInfo.maxFileSize)}\n </span>\n </div>\n </div>\n </div>\n\n {/* Error */}\n {documentState?.error && (\n <div className=\"ff-flex ff-items-center ff-gap-2 ff-p-3 ff-bg-error-50 ff-text-error-700 ff-rounded-lg\">\n <AlertCircle className=\"ff-w-4 ff-h-4 ff-flex-shrink-0\" />\n <p className=\"ff-text-sm\">{documentState.error}</p>\n </div>\n )}\n\n {/* Tips */}\n <div className=\"ff-bg-gray-50 ff-rounded-lg ff-p-4\">\n <h4 className=\"ff-text-sm ff-font-medium ff-text-gray-700 ff-mb-2\">Tips for best results:</h4>\n <ul className=\"ff-text-sm ff-text-gray-500 ff-space-y-1 ff-list-disc ff-list-inside\">\n <li>Ensure all text is clearly visible and readable</li>\n <li>Avoid glare, shadows, or blurry images</li>\n <li>Include all four corners of the document</li>\n <li>Use good lighting when taking photos</li>\n </ul>\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { CheckCircle, XCircle, AlertTriangle, Loader2, Clock } from 'lucide-react';\nimport { clsx } from 'clsx';\nimport { useKYCStore } from '../../store/kyc-store';\nimport type { DocumentType, DocumentStatus as DocStatus } from '@fileflow/shared';\nimport { DOCUMENT_TYPES } from '@fileflow/shared';\n\ninterface DocumentStatusProps {\n documentType: DocumentType;\n showDetails?: boolean;\n}\n\nexport const DocumentStatus: React.FC<DocumentStatusProps> = ({\n documentType,\n showDetails = true,\n}) => {\n const { documents } = useKYCStore();\n const documentState = documents.get(documentType);\n const documentInfo = DOCUMENT_TYPES[documentType];\n\n const getStatusConfig = (status?: DocStatus) => {\n switch (status) {\n case 'completed':\n return {\n icon: CheckCircle,\n color: 'ff-text-success-600',\n bgColor: 'ff-bg-success-100',\n label: 'Verified',\n description: 'Document successfully processed',\n };\n case 'requires_review':\n return {\n icon: AlertTriangle,\n color: 'ff-text-warning-600',\n bgColor: 'ff-bg-warning-100',\n label: 'Review Required',\n description: 'Manual verification may be needed',\n };\n case 'failed':\n return {\n icon: XCircle,\n color: 'ff-text-error-600',\n bgColor: 'ff-bg-error-100',\n label: 'Failed',\n description: 'Unable to process document',\n };\n case 'processing':\n return {\n icon: Loader2,\n color: 'ff-text-primary-600',\n bgColor: 'ff-bg-primary-100',\n label: 'Processing',\n description: 'Analyzing document...',\n };\n case 'uploaded':\n return {\n icon: Clock,\n color: 'ff-text-gray-600',\n bgColor: 'ff-bg-gray-100',\n label: 'Pending',\n description: 'Waiting to be processed',\n };\n default:\n return {\n icon: Clock,\n color: 'ff-text-gray-400',\n bgColor: 'ff-bg-gray-100',\n label: 'Not Uploaded',\n description: 'Upload document to continue',\n };\n }\n };\n\n const statusConfig = getStatusConfig(documentState?.status);\n const Icon = statusConfig.icon;\n\n return (\n <div className=\"ff-space-y-3\">\n {/* Status Header */}\n <div className=\"ff-flex ff-items-center ff-gap-3\">\n <div className={clsx('ff-p-2 ff-rounded-lg', statusConfig.bgColor)}>\n <Icon\n className={clsx(\n 'ff-w-5 ff-h-5',\n statusConfig.color,\n documentState?.status === 'processing' && 'ff-animate-spin'\n )}\n />\n </div>\n <div>\n <p className=\"ff-font-medium ff-text-gray-900\">{documentInfo.label}</p>\n <p className={clsx('ff-text-sm', statusConfig.color)}>{statusConfig.label}</p>\n </div>\n </div>\n\n {/* Confidence Score */}\n {documentState?.confidence !== undefined && documentState.confidence > 0 && (\n <div className=\"ff-space-y-1\">\n <div className=\"ff-flex ff-items-center ff-justify-between ff-text-sm\">\n <span className=\"ff-text-gray-600\">Confidence</span>\n <span\n className={clsx(\n 'ff-font-medium',\n documentState.confidence >= 0.8 && 'ff-text-success-600',\n documentState.confidence >= 0.6 &&\n documentState.confidence < 0.8 &&\n 'ff-text-warning-600',\n documentState.confidence < 0.6 && 'ff-text-error-600'\n )}\n >\n {Math.round(documentState.confidence * 100)}%\n </span>\n </div>\n <div className=\"ff-progress\">\n <div\n className={clsx(\n 'ff-progress-bar',\n documentState.confidence >= 0.8 && 'ff-bg-success-500',\n documentState.confidence >= 0.6 &&\n documentState.confidence < 0.8 &&\n 'ff-bg-warning-500',\n documentState.confidence < 0.6 && 'ff-bg-error-500'\n )}\n style={{ width: `${documentState.confidence * 100}%` }}\n />\n </div>\n </div>\n )}\n\n {/* Fraud Flags */}\n {showDetails && documentState?.fraudFlags && documentState.fraudFlags.length > 0 && (\n <div className=\"ff-space-y-2\">\n <p className=\"ff-text-sm ff-font-medium ff-text-gray-700\">Issues Detected</p>\n <div className=\"ff-space-y-1\">\n {documentState.fraudFlags.map((flag, index) => (\n <div\n key={index}\n className={clsx(\n 'ff-flex ff-items-start ff-gap-2 ff-p-2 ff-rounded ff-text-sm',\n flag.severity === 'high' && 'ff-bg-error-50 ff-text-error-700',\n flag.severity === 'medium' && 'ff-bg-warning-50 ff-text-warning-700',\n flag.severity === 'low' && 'ff-bg-gray-50 ff-text-gray-600'\n )}\n >\n {flag.severity === 'high' ? (\n <XCircle className=\"ff-w-4 ff-h-4 ff-flex-shrink-0 ff-mt-0.5\" />\n ) : (\n <AlertTriangle className=\"ff-w-4 ff-h-4 ff-flex-shrink-0 ff-mt-0.5\" />\n )}\n <span>{flag.message}</span>\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Extracted Data Preview */}\n {showDetails &&\n documentState?.extractedData &&\n documentState.status === 'completed' && (\n <div className=\"ff-bg-gray-50 ff-rounded-lg ff-p-3\">\n <p className=\"ff-text-sm ff-font-medium ff-text-gray-700 ff-mb-2\">\n Extracted Information\n </p>\n <dl className=\"ff-space-y-1 ff-text-sm\">\n {'fullName' in documentState.extractedData && (\n <div className=\"ff-flex ff-justify-between\">\n <dt className=\"ff-text-gray-500\">Name</dt>\n <dd className=\"ff-text-gray-900 ff-font-medium\">\n {documentState.extractedData.fullName}\n </dd>\n </div>\n )}\n {'dateOfBirth' in documentState.extractedData && (\n <div className=\"ff-flex ff-justify-between\">\n <dt className=\"ff-text-gray-500\">Date of Birth</dt>\n <dd className=\"ff-text-gray-900\">{documentState.extractedData.dateOfBirth}</dd>\n </div>\n )}\n {documentState.extractedData.documentType === 'passport' &&\n 'passportNumber' in documentState.extractedData && (\n <div className=\"ff-flex ff-justify-between\">\n <dt className=\"ff-text-gray-500\">Passport #</dt>\n <dd className=\"ff-text-gray-900 ff-font-mono\">\n {documentState.extractedData.passportNumber}\n </dd>\n </div>\n )}\n {documentState.extractedData.documentType === 'drivers_license' &&\n 'licenseNumber' in documentState.extractedData && (\n <div className=\"ff-flex ff-justify-between\">\n <dt className=\"ff-text-gray-500\">License #</dt>\n <dd className=\"ff-text-gray-900 ff-font-mono\">\n {documentState.extractedData.licenseNumber}\n </dd>\n </div>\n )}\n {'address' in documentState.extractedData && documentState.extractedData.address && (\n <div className=\"ff-flex ff-justify-between\">\n <dt className=\"ff-text-gray-500\">Address</dt>\n <dd className=\"ff-text-gray-900 ff-text-right\">\n {documentState.extractedData.address.city},{' '}\n {documentState.extractedData.address.province}\n </dd>\n </div>\n )}\n </dl>\n </div>\n )}\n </div>\n );\n};\n","import React, { useCallback, useEffect, useState } from 'react';\nimport {\n FileText,\n Car,\n Home,\n CheckCircle,\n X,\n Loader2,\n ChevronRight,\n ShieldCheck,\n} from 'lucide-react';\nimport { clsx } from 'clsx';\nimport { useKYCStore, type KYCStep } from '../../store/kyc-store';\nimport { getClient } from '../../api/client';\nimport { DocumentUploader } from './DocumentUploader';\nimport { DocumentStatus } from './DocumentStatus';\nimport type { DocumentType, KYCSession, KYCDocument } from '@fileflow/shared';\nimport { DOCUMENT_TYPES } from '@fileflow/shared';\n\ninterface KYCWizardProps {\n requiredDocuments: DocumentType[];\n onComplete?: (session: KYCSession) => void;\n onCancel?: () => void;\n onError?: (error: Error) => void;\n}\n\nconst DOCUMENT_ICONS: Record<DocumentType, React.ElementType> = {\n passport: FileText,\n drivers_license: Car,\n proof_of_address: Home,\n};\n\nexport const KYCWizard: React.FC<KYCWizardProps> = ({\n requiredDocuments,\n onComplete,\n onCancel,\n onError,\n}) => {\n const {\n sessionId,\n step,\n currentDocumentType,\n documents,\n isVerified,\n verificationStatus,\n isLoading,\n error,\n setSessionId,\n setRequiredDocuments,\n setCurrentDocumentType,\n setDocumentStatus,\n setDocumentData,\n setStep,\n nextDocument,\n setVerificationStatus,\n setVerified,\n setLoading,\n setError,\n areAllDocumentsUploaded,\n areAllDocumentsProcessed,\n reset,\n } = useKYCStore();\n\n const [pollingDocument, setPollingDocument] = useState<string | null>(null);\n\n // Initialize\n useEffect(() => {\n setRequiredDocuments(requiredDocuments);\n initializeSession();\n\n return () => {\n // Cleanup polling on unmount\n setPollingDocument(null);\n };\n }, [requiredDocuments]);\n\n const initializeSession = async () => {\n try {\n setLoading(true);\n const client = getClient();\n const result = await client.createKYCSession(requiredDocuments);\n setSessionId(result.sessionId);\n setStep('upload');\n } catch (err) {\n const error = err as Error;\n setError(error.message);\n onError?.(error);\n } finally {\n setLoading(false);\n }\n };\n\n const handleFileSelect = useCallback(\n async (file: File) => {\n if (!sessionId || !currentDocumentType) return;\n\n try {\n setLoading(true);\n setError(null);\n\n const client = getClient();\n const result = await client.uploadKYCDocument(sessionId, currentDocumentType, file);\n\n setDocumentData(currentDocumentType, {\n id: result.documentId,\n status: 'processing',\n });\n\n // Start polling for document status\n setPollingDocument(result.documentId);\n pollDocumentStatus(result.documentId);\n } catch (err) {\n const error = err as Error;\n setDocumentData(currentDocumentType, {\n status: 'failed',\n error: error.message,\n });\n onError?.(error);\n } finally {\n setLoading(false);\n }\n },\n [sessionId, currentDocumentType]\n );\n\n const pollDocumentStatus = async (documentId: string) => {\n const maxAttempts = 30;\n const maxConsecutiveErrors = 3; // Stop after 3 consecutive errors\n let attempts = 0;\n let consecutiveErrors = 0;\n\n const poll = async () => {\n if (attempts >= maxAttempts) {\n setPollingDocument(null);\n if (currentDocumentType) {\n setDocumentData(currentDocumentType, {\n status: 'failed',\n error: 'Processing timed out. Please try again.',\n });\n }\n return;\n }\n\n // Stop polling if we've had too many consecutive errors\n if (consecutiveErrors >= maxConsecutiveErrors) {\n setPollingDocument(null);\n if (currentDocumentType) {\n setDocumentData(currentDocumentType, {\n status: 'failed',\n error: 'Failed to check document status. Please refresh and try again.',\n });\n }\n return;\n }\n\n try {\n const client = getClient();\n const result = await client.getKYCDocument(documentId);\n const doc = result.document as KYCDocument;\n\n // Reset consecutive errors on success\n consecutiveErrors = 0;\n\n const docType = doc.type as DocumentType;\n setDocumentData(docType, {\n id: doc.id,\n status: doc.status,\n extractedData: doc.extractedData,\n confidence: doc.confidence,\n fraudFlags: doc.fraudFlags,\n error: null, // Clear any previous errors\n });\n\n if (doc.status === 'completed' || doc.status === 'requires_review' || doc.status === 'failed') {\n setPollingDocument(null);\n\n // Check if all documents are processed\n if (areAllDocumentsUploaded()) {\n const allProcessed = areAllDocumentsProcessed();\n if (allProcessed) {\n setStep('review');\n }\n } else {\n // Move to next document\n nextDocument();\n }\n return;\n }\n\n // Continue polling\n attempts++;\n setTimeout(poll, 2000);\n } catch (err) {\n const error = err as Error & { status?: number };\n consecutiveErrors++;\n attempts++;\n \n // On 404, stop immediately - the document doesn't exist\n if (error.status === 404 || error.message?.includes('not found')) {\n setPollingDocument(null);\n if (currentDocumentType) {\n setDocumentData(currentDocumentType, {\n status: 'failed',\n error: 'Session not found or invalid state',\n });\n }\n return;\n }\n\n // On other errors, retry with backoff (up to maxConsecutiveErrors times)\n if (consecutiveErrors < maxConsecutiveErrors) {\n setTimeout(poll, 3000 * consecutiveErrors); // Exponential backoff\n } else {\n setPollingDocument(null);\n if (currentDocumentType) {\n setDocumentData(currentDocumentType, {\n status: 'failed',\n error: error.message || 'Failed to process document',\n });\n }\n }\n }\n };\n\n poll();\n };\n\n const handleVerify = async () => {\n if (!sessionId) return;\n\n try {\n setLoading(true);\n setError(null);\n\n const client = getClient();\n const result = await client.verifyKYCSession(sessionId, true);\n\n setVerificationStatus(result.verificationStatus);\n const status = result.verificationStatus as { isVerified: boolean };\n setVerified(status.isVerified);\n setStep('complete');\n\n onComplete?.(result as unknown as KYCSession);\n } catch (err) {\n const error = err as Error;\n setError(error.message);\n onError?.(error);\n } finally {\n setLoading(false);\n }\n };\n\n const handleCancel = () => {\n reset();\n onCancel?.();\n };\n\n const selectDocument = (type: DocumentType) => {\n setCurrentDocumentType(type);\n setStep('upload');\n };\n\n const isDocumentComplete = (type: DocumentType) => {\n const doc = documents.get(type);\n return doc?.status === 'completed' || doc?.status === 'requires_review';\n };\n\n return (\n <div className=\"ff-container ff-bg-white ff-rounded-xl ff-shadow-xl ff-overflow-hidden ff-flex ff-flex-col ff-max-h-[90vh]\">\n {/* Header */}\n <div className=\"ff-flex ff-items-center ff-justify-between ff-px-6 ff-py-4 ff-border-b ff-border-gray-200 ff-bg-gray-50 ff-flex-shrink-0\">\n <div className=\"ff-flex ff-items-center ff-gap-3\">\n <ShieldCheck className=\"ff-w-6 ff-h-6 ff-text-primary-600\" />\n <h2 className=\"ff-text-xl ff-font-semibold ff-text-gray-900\">Identity Verification</h2>\n </div>\n <button\n onClick={handleCancel}\n className=\"ff-p-2 ff-text-gray-400 hover:ff-text-gray-600 ff-rounded-full hover:ff-bg-gray-100\"\n >\n <X className=\"ff-w-5 ff-h-5\" />\n </button>\n </div>\n\n {/* Content */}\n <div className=\"ff-p-6 ff-overflow-y-auto ff-flex-1 ff-min-h-0\">\n {error && (\n <div className=\"ff-mb-4 ff-p-4 ff-bg-error-50 ff-border ff-border-error-200 ff-rounded-lg ff-text-error-700\">\n {error}\n </div>\n )}\n\n {/* Document Selection */}\n {step === 'select' && (\n <div className=\"ff-space-y-4\">\n <p className=\"ff-text-gray-600 ff-text-center ff-mb-6\">\n Please upload the following documents to verify your identity\n </p>\n <div className=\"ff-grid ff-gap-4\">\n {requiredDocuments.map((type) => {\n const Icon = DOCUMENT_ICONS[type];\n const info = DOCUMENT_TYPES[type];\n const doc = documents.get(type);\n const isComplete = isDocumentComplete(type);\n\n return (\n <button\n key={type}\n onClick={() => selectDocument(type)}\n className={clsx(\n 'ff-flex ff-items-center ff-gap-4 ff-p-4 ff-rounded-lg ff-border-2 ff-text-left ff-transition-all',\n isComplete\n ? 'ff-border-success-300 ff-bg-success-50'\n : 'ff-border-gray-200 hover:ff-border-primary-300 hover:ff-bg-primary-50'\n )}\n >\n <div\n className={clsx(\n 'ff-p-3 ff-rounded-lg',\n isComplete ? 'ff-bg-success-100' : 'ff-bg-gray-100'\n )}\n >\n {isComplete ? (\n <CheckCircle className=\"ff-w-6 ff-h-6 ff-text-success-600\" />\n ) : (\n <Icon className=\"ff-w-6 ff-h-6 ff-text-gray-600\" />\n )}\n </div>\n <div className=\"ff-flex-1\">\n <p className=\"ff-font-medium ff-text-gray-900\">{info.label}</p>\n <p className=\"ff-text-sm ff-text-gray-500\">{info.description}</p>\n </div>\n <ChevronRight className=\"ff-w-5 ff-h-5 ff-text-gray-400\" />\n </button>\n );\n })}\n </div>\n </div>\n )}\n\n {/* Document Upload */}\n {step === 'upload' && currentDocumentType && (\n <div className=\"ff-max-w-lg ff-mx-auto\">\n <DocumentUploader documentType={currentDocumentType} onFileSelect={handleFileSelect} />\n </div>\n )}\n\n {/* Processing */}\n {step === 'processing' && (\n <div className=\"ff-flex ff-flex-col ff-items-center ff-justify-center ff-py-12\">\n <Loader2 className=\"ff-w-12 ff-h-12 ff-text-primary-600 ff-animate-spin ff-mb-4\" />\n <h3 className=\"ff-text-lg ff-font-semibold ff-text-gray-900 ff-mb-2\">\n Processing Documents\n </h3>\n <p className=\"ff-text-gray-500 ff-text-center\">\n We're analyzing your documents. This may take a moment...\n </p>\n </div>\n )}\n\n {/* Review */}\n {step === 'review' && (\n <div className=\"ff-space-y-6\">\n <div className=\"ff-text-center ff-mb-6\">\n <h3 className=\"ff-text-lg ff-font-semibold ff-text-gray-900\">Review Your Documents</h3>\n <p className=\"ff-text-gray-500\">\n Please review the extracted information before completing verification\n </p>\n </div>\n\n <div className=\"ff-grid ff-gap-4\">\n {requiredDocuments.map((type) => (\n <div\n key={type}\n className=\"ff-border ff-border-gray-200 ff-rounded-lg ff-p-4\"\n >\n <DocumentStatus documentType={type} showDetails={true} />\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Complete */}\n {step === 'complete' && (\n <div className=\"ff-flex ff-flex-col ff-items-center ff-justify-center ff-py-12\">\n <div\n className={clsx(\n 'ff-w-16 ff-h-16 ff-rounded-full ff-flex ff-items-center ff-justify-center ff-mb-4',\n isVerified ? 'ff-bg-success-100' : 'ff-bg-warning-100'\n )}\n >\n {isVerified ? (\n <CheckCircle className=\"ff-w-10 ff-h-10 ff-text-success-600\" />\n ) : (\n <ShieldCheck className=\"ff-w-10 ff-h-10 ff-text-warning-600\" />\n )}\n </div>\n <h3 className=\"ff-text-xl ff-font-semibold ff-text-gray-900 ff-mb-2\">\n {isVerified ? 'Verification Complete!' : 'Review Required'}\n </h3>\n <p className=\"ff-text-gray-500 ff-text-center\">\n {isVerified\n ? 'Your identity has been successfully verified.'\n : 'Additional review may be required. We will contact you if needed.'}\n </p>\n </div>\n )}\n </div>\n\n {/* Footer */}\n {step !== 'complete' && (\n <div className=\"ff-flex ff-items-center ff-justify-between ff-px-6 ff-py-4 ff-border-t ff-border-gray-200 ff-bg-gray-50 ff-flex-shrink-0\">\n <button\n onClick={() => {\n if (step === 'upload') {\n setStep('select');\n } else if (step === 'review') {\n setStep('select');\n }\n }}\n disabled={isLoading}\n className=\"ff-btn ff-btn-secondary\"\n >\n Back\n </button>\n\n {step === 'review' && (\n <button\n onClick={handleVerify}\n disabled={isLoading || !areAllDocumentsProcessed()}\n className=\"ff-btn ff-btn-primary\"\n >\n {isLoading ? (\n <>\n <Loader2 className=\"ff-w-4 ff-h-4 ff-mr-2 ff-animate-spin\" />\n Verifying...\n </>\n ) : (\n 'Complete Verification'\n )}\n </button>\n )}\n\n {step === 'select' && areAllDocumentsUploaded() && (\n <button\n onClick={() => setStep('review')}\n className=\"ff-btn ff-btn-primary\"\n >\n Review & Verify\n </button>\n )}\n </div>\n )}\n </div>\n );\n};\n"],"names":["Car","createLucideIcon","Clock","FileText","Home","Image","ShieldCheck","createEmptyDocumentState","type","initialState","useKYCStore","create","set","get","sessionId","documents","docsMap","file","doc","previewUrl","updated","status","data","step","requiredDocuments","currentDocumentType","currentIndex","i","verified","isLoading","error","util","_","assertIs","_arg","assertNever","_x","items","obj","item","validKeys","k","filtered","e","object","keys","key","arr","checker","val","joinValues","array","separator","value","objectUtil","first","second","ZodParsedType","getParsedType","ZodIssueCode","ZodError","issues","sub","subs","actualProto","_mapper","mapper","issue","fieldErrors","processError","curr","el","formErrors","firstEl","errorMap","_ctx","message","overrideErrorMap","defaultErrorMap","getErrorMap","makeIssue","params","path","errorMaps","issueData","fullPath","fullIssue","errorMessage","maps","m","map","addIssueToContext","ctx","overrideMap","x","ParseStatus","results","arrayValue","INVALID","pairs","syncPairs","pair","finalObject","DIRTY","OK","isAborted","isDirty","isValid","isAsync","errorUtil","ParseInputLazyPath","parent","handleResult","result","processCreateParams","invalid_type_error","required_error","description","iss","ZodType","input","err","_b","_a","maybeAsyncResult","check","getIssueProperties","setError","refinementData","refinement","ZodEffects","ZodFirstPartyTypeKind","def","ZodOptional","ZodNullable","ZodArray","ZodPromise","option","ZodUnion","incoming","ZodIntersection","transform","defaultValueFunc","ZodDefault","ZodBranded","catchValueFunc","ZodCatch","This","target","ZodPipeline","ZodReadonly","cuidRegex","cuid2Regex","ulidRegex","uuidRegex","nanoidRegex","jwtRegex","durationRegex","emailRegex","_emojiRegex","emojiRegex","ipv4Regex","ipv4CidrRegex","ipv6Regex","ipv6CidrRegex","base64Regex","base64urlRegex","dateRegexSource","dateRegex","timeRegexSource","args","secondsRegexSource","secondsQuantifier","timeRegex","datetimeRegex","regex","opts","isValidIP","ip","version","isValidJWT","jwt","alg","header","base64","decoded","isValidCidr","ZodString","tooBig","tooSmall","validation","options","minLength","maxLength","len","ch","min","max","floatSafeRemainder","valDecCount","stepDecCount","decCount","valInt","stepInt","ZodNumber","kind","inclusive","ZodBigInt","ZodBoolean","ZodDate","minDate","maxDate","ZodSymbol","ZodUndefined","ZodNull","ZodAny","ZodUnknown","ZodNever","ZodVoid","schema","deepPartialify","ZodObject","newShape","fieldSchema","ZodTuple","shape","shapeKeys","extraKeys","keyValidator","unknownKeys","catchall","defaultError","augmentation","merging","index","mask","newField","createZodEnum","handleResults","unionErrors","childCtx","dirty","types","getDiscriminator","ZodLazy","ZodLiteral","ZodEnum","ZodNativeEnum","ZodDiscriminatedUnion","discriminator","discriminatorValue","optionsMap","discriminatorValues","mergeValues","b","aType","bType","bKeys","sharedKeys","newObj","sharedValue","newArray","itemA","itemB","handleParsed","parsedLeft","parsedRight","merged","left","right","itemIndex","rest","schemas","ZodRecord","keyType","valueType","third","ZodMap","finalMap","ZodSet","finalizeSet","elements","parsedSet","element","minSize","maxSize","size","getter","values","expectedValues","enumValues","newDef","opt","nativeEnumValues","promisified","effect","checkCtx","arg","processed","executeRefinement","acc","inner","base","preprocess","newCtx","ZodNaN","inResult","a","freeze","stringType","numberType","booleanType","nullType","unknownType","arrayType","objectType","unionType","discriminatedUnionType","recordType","literalType","enumType","DEFAULT_THEME","ColumnTypeSchema","z.enum","ValidatorTypeSchema","ValidationSeveritySchema","ValidatorConfigSchema","z.object","z.record","z.unknown","z.string","TransformTypeSchema","TransformConfigSchema","SchemaColumnSchema","z.boolean","z.array","SchemaOptionsSchema","z.number","ImportSchemaSchema","ColumnMappingSchema","z.union","z.null","CANADIAN_POSTAL_CODE_REGEX","CANADIAN_PASSPORT_REGEX","CANADIAN_PROVINCES","code","info","CanadianProvinceSchema","z2.enum","CanadianAddressSchema","z2.object","z2.string","z2.literal","DocumentTypeSchema","DocumentStatusSchema","OCRQualitySchema","OCRProviderSchema","SexSchema","FraudFlagTypeSchema","FraudSeveritySchema","FraudFlagSchema","z2.record","z2.unknown","PassportConfidenceSchema","z2.number","PassportDataSchema","DriversLicenseConfidenceSchema","DriversLicenseDataSchema","ProofOfAddressTypeSchema","ProofOfAddressConfidenceSchema","ProofOfAddressDataSchema","docDate","ExtractedDataSchema","z2.discriminatedUnion","z2.array","z2.boolean","TRANSACTION_TYPES","PAYMENT_METHODS","ITEM_TYPES","BILLING_CYCLE_INTERVALS","requiredColumns","sessionSettingsColumns","billingColumns","shippingColumns","itemDetailsColumns","notificationColumns","billingCycleColumns","urlColumns","otherColumns","PAYSPACE_BATCH_SCHEMA","c","DOCUMENT_TYPES","DocumentUploader","documentType","onFileSelect","setDocumentFile","documentState","documentInfo","onDrop","useCallback","acceptedFiles","rejectedFiles","getRootProps","getInputProps","isDragActive","useDropzone","formatFileSize","bytes","getFileIcon","jsx","clearFile","jsxs","X","clsx","Upload","format","AlertCircle","DocumentStatus","showDetails","statusConfig","CheckCircle","AlertTriangle","XCircle","Loader2","Icon","flag","DOCUMENT_ICONS","KYCWizard","onComplete","onCancel","onError","isVerified","verificationStatus","setSessionId","setRequiredDocuments","setCurrentDocumentType","setDocumentStatus","setDocumentData","setStep","nextDocument","setVerificationStatus","setVerified","setLoading","areAllDocumentsUploaded","areAllDocumentsProcessed","reset","pollingDocument","setPollingDocument","useState","useEffect","initializeSession","getClient","handleFileSelect","pollDocumentStatus","documentId","attempts","consecutiveErrors","poll","docType","handleVerify","handleCancel","selectDocument","isDocumentComplete","isComplete","ChevronRight","Fragment"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,7,8,9,10,11,12,13]}