@marteye/studiojs 1.1.38 → 1.1.39
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.
- package/dist/index.d.ts +126 -3
- package/dist/index.esm.js +105 -2
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +105 -2
- package/dist/index.js.map +1 -1
- package/dist/resources/activity.d.ts +35 -0
- package/dist/resources/ledger.d.ts +64 -0
- package/dist/resources/payouts.d.ts +34 -0
- package/dist/resources.d.ts +8 -0
- package/dist/studio.d.ts +8 -0
- package/dist/types.d.ts +26 -2
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/net/fetch.ts","../src/net/http.ts","../src/resources/actions.ts","../src/resources/adjustments.ts","../src/resources/carts.ts","../src/resources/extras.ts","../src/resources/bidderApplications.ts","../src/resources/customers.ts","../node_modules/zod/lib/index.mjs","../src/utils/multipart-upload.ts","../src/resources/files.ts","../src/resources/invoices.ts","../src/resources/lotItems.ts","../src/resources/lots.ts","../src/resources/markets.ts","../src/resources/payments.ts","../src/resources/payouts.ts","../src/resources/productCodes.ts","../src/resources/sales.ts","../src/resources/saleTemplates.ts","../src/resources/search.ts","../src/resources/settings.ts","../src/resources/taxRates.ts","../src/resources/webhooks.ts","../src/resources/cph.ts","../src/resources/contacts.ts","../src/resources/ledger.ts","../src/resources.ts","../src/studio.ts","../src/types.ts","../src/createApp.ts","../src/utils/eartag.ts","../src/utils/lots.ts"],"sourcesContent":["export default function getFetch() {\n if (typeof fetch === \"undefined\") {\n throw new Error(\"fetch is not defined. Please use a polyfill.\");\n }\n return fetch;\n}\n","export default function SimpleHttpClient(\n baseUrl: string,\n apiKey: string,\n fetch: any,\n defaultTimeout: number,\n debug: boolean = false\n) {\n async function request<T>(method: string, path: string, body?: any) {\n let controller = new AbortController();\n\n let t = setTimeout(() => {\n controller.abort();\n\n if (debug) {\n console.log(`[SimpleHttpClient] ${method} ${path} timed out`);\n }\n }, defaultTimeout);\n\n let requestInit: any = {\n method,\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n signal: controller.signal,\n };\n\n if (body) {\n requestInit.body = typeof body === \"string\" ? body : JSON.stringify(body);\n }\n\n if (debug) {\n let info: any = {};\n if (requestInit.headers) {\n info.headers = requestInit.headers;\n }\n if (requestInit.body) {\n info.body = requestInit.body;\n }\n\n console.log(`[SimpleHttpClient] ${method} ${baseUrl}${path}`, info);\n }\n\n let response = await fetch(`${baseUrl}${path}`, requestInit);\n clearTimeout(t);\n\n if (debug) {\n console.log(\n `[SimpleHttpClient] ${method} ${path} response: ${response.status}`\n );\n }\n\n if (response.ok) {\n return response.json() as T;\n }\n\n if (response.status === 404) {\n throw new Error(`${baseUrl}${path} not found`);\n }\n\n throw new Error(\n `Request failed with status ${response.status}: ${await response.text()}}`\n );\n }\n\n return {\n get: async <T>(path: string, queryParams?: any) => {\n let query = queryParams\n ? `?${new URLSearchParams(queryParams).toString()}`\n : \"\";\n return request<T>(\"GET\", `${path}${query}`);\n },\n post: async <T>(path: string, body: any) => {\n return request<T>(\"POST\", path, body);\n },\n patch: async <T>(path: string, body: any) => {\n return request<T>(\"PATCH\", path, body);\n },\n delete: async <T>(path: string) => {\n return request<T>(\"DELETE\", path);\n },\n };\n}\n\nexport type HttpClient = ReturnType<typeof SimpleHttpClient>;\n","// Path: studiojs/src/resources/markets.ts\n\nimport { createHmac } from \"crypto\";\nimport { HttpClient } from \"../net/http\";\n\nexport default function create(_: HttpClient) {\n const actions = {\n /***\n * This is used to construct the action from the request body\n *\n * @param body the request body\n * @param signature the signature of the request taken from the header\n * @param endpointSecret the pre-shared secret\n * @returns the action\n */\n constructAction: async (\n bodyAsBuffer: Buffer,\n signature: string,\n endpointSecret: string\n ) => {\n let rawBody = bodyAsBuffer.toString();\n\n let expectedSignature = createHmac(\"sha256\", endpointSecret)\n .update(rawBody)\n .digest(\"hex\");\n\n if (signature !== expectedSignature) {\n console.error(\n `Unable to construct action. Signature mismatch.`,\n signature,\n \"!=\",\n expectedSignature\n );\n throw new Error(`Unable to construct action. Signature mismatch.`);\n }\n\n try {\n return JSON.parse(rawBody);\n } catch (e) {\n throw new Error(`Unable to construct action. ${e}`);\n }\n },\n };\n\n return actions;\n}\n\nexport type Webhooks = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { AdjustmentsConfiguration } from \"../types\";\n\nexport default function create(httpClient: HttpClient) {\n return {\n list: async (marketId: string) => {\n return httpClient.get<AdjustmentsConfiguration[]>(\n `/${marketId}/adjustments`\n );\n },\n get: async (marketId: string, id: string) => {\n return httpClient.get<AdjustmentsConfiguration>(\n `/${marketId}/adjustments/${id}`\n );\n },\n create: async (\n marketId: string,\n data: Partial<AdjustmentsConfiguration>\n ) => {\n return httpClient.post<AdjustmentsConfiguration>(\n `/${marketId}/adjustments`,\n data\n );\n },\n update: async (\n marketId: string,\n id: string,\n data: Partial<AdjustmentsConfiguration>\n ) => {\n return httpClient.post<AdjustmentsConfiguration>(\n `/${marketId}/adjustments/${id}`,\n data\n );\n },\n };\n}\n\nexport type Adjustments = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { CartItem, Lot } from \"../types\";\n\nexport interface LotsBySale {\n saleId: string;\n marketId: string;\n lots: Lot[];\n}\n\nexport interface CartResponse {\n customerId: string;\n extras: CartItem[];\n lotsBuyingBySale: LotsBySale[];\n lotsSellingBySale: LotsBySale[];\n}\n\nexport interface AddExtraPayload {\n productId: string;\n clientType: \"Seller\" | \"Buyer\";\n quantity: number;\n unitPriceInCents: number;\n passthroughFundsToCustomerId?: string | null;\n}\n\nexport default function create(httpClient: HttpClient) {\n return {\n /**\n * Get the full cart for a customer including extras and uninvoiced lots\n */\n get: async (marketId: string, customerId: string) => {\n return httpClient.get<CartResponse>(\n `/${marketId}/carts/${customerId}`\n );\n },\n\n /**\n * Add an extra product to the customer's cart\n */\n addExtra: async (\n marketId: string,\n customerId: string,\n data: AddExtraPayload\n ) => {\n return httpClient.post<CartResponse>(\n `/${marketId}/carts/${customerId}`,\n data\n );\n },\n\n /**\n * Remove an extra from the customer's cart\n */\n removeExtra: async (\n marketId: string,\n customerId: string,\n itemId: string\n ) => {\n return httpClient.delete<void>(\n `/${marketId}/carts/${customerId}/${itemId}`\n );\n },\n };\n}\n\nexport type Carts = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { Product } from \"../types\";\n\nexport interface CreateExtraPayload {\n id: string;\n name: string;\n taxRateId: string;\n defaultUnitPriceInCents?: number;\n unitPriceIncludesVat?: boolean;\n applyToClients?: (\"Seller\" | \"Buyer\")[];\n subtotalGroup?: string | null;\n passThroughFundsToAnotherCustomer?: boolean;\n isEnabled?: boolean;\n metadata?: Record<string, any>;\n}\n\nexport interface UpdateExtraPayload {\n name?: string;\n taxRateId?: string;\n defaultUnitPriceInCents?: number;\n unitPriceIncludesVat?: boolean;\n applyToClients?: (\"Seller\" | \"Buyer\")[];\n subtotalGroup?: string | null;\n passThroughFundsToAnotherCustomer?: boolean;\n isEnabled?: boolean;\n metadata?: Record<string, any>;\n}\n\nexport default function create(httpClient: HttpClient) {\n return {\n list: async (marketId: string) => {\n return httpClient.get<Product[]>(`/${marketId}/extras`);\n },\n get: async (marketId: string, id: string) => {\n return httpClient.get<Product>(`/${marketId}/extras/${id}`);\n },\n create: async (marketId: string, data: CreateExtraPayload) => {\n return httpClient.post<Product>(`/${marketId}/extras`, data);\n },\n update: async (marketId: string, id: string, data: UpdateExtraPayload) => {\n return httpClient.post<Product>(`/${marketId}/extras/${id}`, data);\n },\n };\n}\n\nexport type Extras = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { Application } from \"../types\";\n\n// Define the type for application creation\nexport interface CreateApplicationPayload {\n displayName: string;\n phoneNumber?: string;\n email?: string;\n address: {\n firstLine: string;\n secondLine?: string;\n county?: string;\n postCode: string;\n };\n dateOfMarteyeAccountCreation?: string;\n hasWonLotsOnMarteye?: boolean;\n isApprovedAtOtherMarkets?: boolean;\n marteyeUid: string;\n notes?: string;\n}\n\n// Define the type for application update\nexport interface UpdateApplicationPayload {\n displayName?: string;\n phoneNumber?: string;\n email?: string;\n address?: {\n firstLine?: string;\n secondLine?: string;\n county?: string;\n postCode?: string;\n };\n notes?: string;\n}\n\nexport interface ListApplicationsOptions {\n lastId?: string;\n status?: \"pending\" | \"approved\" | \"rejected\";\n}\n\nexport interface ListApplicationsResponse {\n applications: Application[];\n lastId: string | null;\n hasMore: boolean;\n}\n\n/***\n * Bidder applications\n */\nexport default function create(httpClient: HttpClient) {\n let applications = {\n /**\n * List applications for a market with optional filtering\n * @param marketId - ID of the market\n * @param options - Optional query parameters for filtering and pagination\n * @returns Paginated list of applications\n */\n list: async (marketId: string, options?: ListApplicationsOptions) => {\n return httpClient.get<ListApplicationsResponse>(\n `/${marketId}/applications`,\n options\n );\n },\n\n /**\n * Get a single application by ID\n * @param marketId - ID of the market\n * @param applicationId - ID of the application\n * @returns The application details\n */\n get: async (marketId: string, applicationId: string) => {\n return httpClient.get<Application>(\n `/${marketId}/applications/${applicationId}`\n );\n },\n\n /**\n * Create a new application\n * @param marketId - ID of the market\n * @param applicationData - The application data\n * @returns The created application\n */\n create: async (\n marketId: string,\n applicationData: CreateApplicationPayload\n ) => {\n return httpClient.post<Application>(\n `/${marketId}/applications`,\n applicationData\n );\n },\n\n /**\n * Update an existing application\n * @param marketId - ID of the market\n * @param applicationId - ID of the application to update\n * @param updateData - The fields to update\n * @returns The updated application\n * @throws Error if the application is already approved or rejected\n */\n update: async (\n marketId: string,\n applicationId: string,\n updateData: UpdateApplicationPayload\n ) => {\n return httpClient.post<Application>(\n `/${marketId}/applications/${applicationId}`,\n updateData\n );\n },\n\n /**\n * Approve an application\n * @param marketId - ID of the market\n * @param applicationId - ID of the application to approve\n * @param notes - Optional notes for the approval\n * @returns The approved application\n * @throws Error if the application is not in pending status\n */\n approve: async (\n marketId: string,\n applicationId: string,\n notes?: string\n ) => {\n return httpClient.post<Application>(\n `/${marketId}/applications/${applicationId}/approve`,\n { notes }\n );\n },\n\n /**\n * Reject an application\n * @param marketId - ID of the market\n * @param applicationId - ID of the application to reject\n * @param notes - Optional notes for the rejection\n * @returns The rejected application\n * @throws Error if the application is not in pending status\n */\n reject: async (marketId: string, applicationId: string, notes?: string) => {\n return httpClient.post<Application>(\n `/${marketId}/applications/${applicationId}/reject`,\n { notes }\n );\n },\n };\n\n return applications;\n}\n\nexport type Applications = ReturnType<typeof create>;\n","// Path: studiojs/src/resources/markets.ts\n\nimport { HttpClient } from \"../net/http\";\nimport {\n Customer,\n InvoiceDeliveryPreference,\n PayoutMethod,\n} from \"../types\";\n\n// Define the type for customer creation\nexport interface CreateCustomerPayload {\n displayName: string;\n email?: string;\n phone?: string;\n accountNumberPrefix?: string;\n accountNumber?: string;\n cphNumber?: string;\n farmName?: string;\n address: {\n company?: string;\n firstName?: string;\n lastName?: string;\n address1: string;\n address2?: string;\n city: string;\n province?: string;\n zip: string;\n country: string;\n };\n marteyeUid?: string;\n}\n\nexport interface FarmAssuranceUpdate {\n number?: string | null;\n scheme?: string | null;\n expiry?: string | Date | null;\n}\n\nexport interface KeeperDetailsUpdate {\n herdNumber?: string | null;\n flockNumber?: string | null;\n cphNumber?: string | null;\n farmName?: string | null;\n slapMark?: string | null;\n farmAssurance?: {\n cattle?: FarmAssuranceUpdate | null;\n sheep?: FarmAssuranceUpdate | null;\n pigs?: FarmAssuranceUpdate | null;\n };\n vetAttestation?: {\n vanNumber?: string | null;\n expiry?: string | Date | null;\n } | null;\n movementReporting?: {\n fromOrigin?: boolean | null;\n toDestination?: boolean | null;\n } | null;\n}\n\nexport interface UpdateCustomerPayload {\n displayName?: string | null;\n email?: {\n email: string;\n isVerified?: boolean;\n createdAt?: string | Date;\n } | null;\n phoneNumber?: {\n phoneNumber: string;\n isVerified?: boolean;\n createdAt?: string | Date;\n } | null;\n address?: Customer[\"address\"] | null;\n otherAddresses?: Customer[\"otherAddresses\"] | null;\n otherPhoneNumbers?: Customer[\"otherPhoneNumbers\"] | null;\n payoutPreference?: PayoutMethod | \"none\" | null;\n invoiceDeliveryPreference?: InvoiceDeliveryPreference | \"none\" | null;\n statementDeliveryPreference?: InvoiceDeliveryPreference | \"none\" | null;\n bankDetails?: Customer[\"bankDetails\"] | null;\n preferSettleDebtsFirst?: boolean;\n vatNumber?: string | null;\n accountNumber?: string | null;\n notes?: string | null;\n attributeDefaultsBuyer?: Customer[\"attributeDefaultsBuyer\"] | null;\n attributeDefaultsSeller?: Customer[\"attributeDefaultsSeller\"] | null;\n metadata?: Customer[\"metadata\"] | null;\n keeperDetails?: KeeperDetailsUpdate;\n}\n\n// Define the type for the paginated customers response\nexport interface CustomersListResponse {\n customers: Customer[];\n lastId: string | null;\n hasMore: boolean;\n}\n\nexport default function create(httpClient: HttpClient) {\n let customers = {\n list: async (\n marketId: string,\n lastId?: string | null\n ): Promise<CustomersListResponse> => {\n let params: Record<string, string> = {};\n if (lastId) {\n params.lastId = lastId;\n }\n return httpClient.get<CustomersListResponse>(\n `/${marketId}/customers`,\n params\n );\n },\n get: async (marketId: string, customerId: string) => {\n return httpClient.get<Customer>(`/${marketId}/customers/${customerId}`);\n },\n avatar: async (marketId: string, customerId: string) => {\n return httpClient.get<Customer>(\n `/${marketId}/customers/${customerId}/avatar`\n );\n },\n create: async (marketId: string, customerData: CreateCustomerPayload) => {\n return httpClient.post<Customer>(`/${marketId}/customers`, customerData);\n },\n update: async (\n marketId: string,\n customerId: string,\n customerData: UpdateCustomerPayload\n ) => {\n return httpClient.post<Customer>(\n `/${marketId}/customers/${customerId}`,\n customerData\n );\n },\n /**\n * Get a customer by their account number\n * @param marketId - ID of the market the customer belongs to\n * @param accountNumber - The customer's account number to search for\n * @returns The customer with the specified account number or null if not found\n */\n getByAccountNumber: async (marketId: string, accountNumber: string) => {\n const response = await httpClient.get<CustomersListResponse>(\n `/${marketId}/customers`,\n { accountNumber }\n );\n\n // API returns a list of customers, but when filtering by account number,\n // we should get at most one customer since account numbers are unique\n if (response.customers && response.customers.length > 0) {\n return response.customers[0];\n }\n\n return null;\n },\n getByMartEyeUid: async (marketId: string, marteyeUid: string) => {\n const response = await httpClient.get<CustomersListResponse>(\n `/${marketId}/customers`,\n { marteyeUid }\n );\n if (response.customers && response.customers.length > 0) {\n return response.customers[0];\n }\n return null;\n },\n };\n\n return customers;\n}\n\nexport type Customers = ReturnType<typeof create>;\n","var util;\n(function (util) {\n util.assertEqual = (val) => val;\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\" && isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array\n .map((val) => (typeof val === \"string\" ? `'${val}'` : val))\n .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 = {}));\nvar objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nconst 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]);\nconst 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 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 &&\n typeof data.then === \"function\" &&\n data.catch &&\n 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\nconst 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]);\nconst quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nclass 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 fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].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\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\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `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\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `smaller than or equal to`\n : `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};\n\nlet overrideErrorMap = errorMap;\nfunction setErrorMap(map) {\n overrideErrorMap = map;\n}\nfunction getErrorMap() {\n return overrideErrorMap;\n}\n\nconst 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};\nconst EMPTY_PATH = [];\nfunction 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 === errorMap ? undefined : errorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nclass 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__\" &&\n (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nconst INVALID = Object.freeze({\n status: \"aborted\",\n});\nconst DIRTY = (value) => ({ status: \"dirty\", value });\nconst OK = (value) => ({ status: \"valid\", value });\nconst isAborted = (x) => x.status === \"aborted\";\nconst isDirty = (x) => x.status === \"dirty\";\nconst isValid = (x) => x.status === \"valid\";\nconst isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nfunction __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nvar errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message === null || message === void 0 ? void 0 : message.message;\n})(errorUtil || (errorUtil = {}));\n\nvar _ZodEnum_cache, _ZodNativeEnum_cache;\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 (this._key instanceof Array) {\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 var _a, _b;\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message !== null && message !== void 0 ? message : ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: (_a = message !== null && message !== void 0 ? message : required_error) !== null && _a !== void 0 ? _a : ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: (_b = message !== null && message !== void 0 ? message : invalid_type_error) !== null && _b !== void 0 ? _b : ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nclass 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 var _a;\n const ctx = {\n common: {\n issues: [],\n async: (_a = params === null || params === void 0 ? void 0 : params.async) !== null && _a !== void 0 ? _a : false,\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n },\n path: (params === null || params === void 0 ? void 0 : 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 var _a, _b;\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 ((_b = (_a = err === null || err === void 0 ? void 0 : err.message) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === null || _b === void 0 ? void 0 : _b.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 === null || params === void 0 ? void 0 : params.errorMap,\n async: true,\n },\n path: (params === null || params === void 0 ? void 0 : 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)\n ? maybeAsyncResult\n : 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\"\n ? refinementData(val, ctx)\n : 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 regex = `\\\\d{2}:\\\\d{2}:\\\\d{2}`;\n let regex = `([01]\\\\d|2[0-3]):[0-5]\\\\d:[0-5]\\\\d`;\n if (args.precision) {\n regex = `${regex}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n regex = `${regex}(\\\\.\\\\d+)?`;\n }\n return regex;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nfunction 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 // 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 (!decoded.typ || !decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch (_a) {\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}\nclass 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 (_a) {\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 var _a, _b;\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 === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n offset: (_a = options === null || options === void 0 ? void 0 : options.offset) !== null && _a !== void 0 ? _a : false,\n local: (_b = options === null || options === void 0 ? void 0 : options.local) !== null && _b !== void 0 ? _b : false,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : 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 === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : 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 === null || options === void 0 ? void 0 : options.position,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : 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 var _a;\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : 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 = parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / Math.pow(10, decCount);\n}\nclass 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\n ? input.data < check.value\n : 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\n ? input.data > check.value\n : 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\" ||\n (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null, min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" ||\n ch.kind === \"int\" ||\n 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 === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass 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 (_a) {\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\n ? input.data < check.value\n : 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\n ? input.data > check.value\n : 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 var _a;\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\nclass 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 === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass 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 (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 === null || params === void 0 ? void 0 : params.coerce) || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nclass 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};\nclass 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};\nclass 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};\nclass 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};\nclass 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};\nclass 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};\nclass 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};\nclass 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}\nclass 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 return (this._cached = { shape, keys });\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 &&\n 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 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 var _a, _b, _c, _d;\n const defaultError = (_c = (_b = (_a = this._def).errorMap) === null || _b === void 0 ? void 0 : _b.call(_a, issue, ctx).message) !== null && _c !== void 0 ? _c : ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: (_d = errorUtil.errToObj(message).message) !== null && _d !== void 0 ? _d : 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 util.objectKeys(mask).forEach((key) => {\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 util.objectKeys(this.shape).forEach((key) => {\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 util.objectKeys(this.shape).forEach((key) => {\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 util.objectKeys(this.shape).forEach((key) => {\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};\nclass 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};\nclass 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\n .objectKeys(a)\n .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 &&\n bType === ZodParsedType.date &&\n +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nclass 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};\nclass 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};\nclass 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}\nclass 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};\nclass 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};\nclass 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: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].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: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].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\n .parseAsync(args, params)\n .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\n ? args\n : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nclass 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};\nclass 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}\nclass ZodEnum extends ZodType {\n constructor() {\n super(...arguments);\n _ZodEnum_cache.set(this, void 0);\n }\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 (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\")) {\n __classPrivateFieldSet(this, _ZodEnum_cache, new Set(this._def.values), \"f\");\n }\n if (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\").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}\n_ZodEnum_cache = new WeakMap();\nZodEnum.create = createZodEnum;\nclass ZodNativeEnum extends ZodType {\n constructor() {\n super(...arguments);\n _ZodNativeEnum_cache.set(this, void 0);\n }\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string &&\n 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 (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\")) {\n __classPrivateFieldSet(this, _ZodNativeEnum_cache, new Set(util.getValidEnumValues(this._def.values)), \"f\");\n }\n if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\").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}\n_ZodNativeEnum_cache = new WeakMap();\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nclass 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 &&\n 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\n ? ctx.data\n : 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};\nclass 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\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .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 base;\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\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((base) => {\n if (!isValid(base))\n return base;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({ status: status.value, value: result }));\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};\nclass 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};\nclass 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};\nclass 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\"\n ? params.default\n : () => params.default,\n ...processCreateParams(params),\n });\n};\nclass 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};\nclass 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};\nconst BRAND = Symbol(\"zod_brand\");\nclass 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}\nclass 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}\nclass 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)\n ? result.then((data) => freeze(data))\n : 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\"\n ? params(data)\n : typeof params === \"string\"\n ? { message: params }\n : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nfunction 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 var _a, _b;\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n var _a, _b;\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = (_b = (_a = params.fatal) !== null && _a !== void 0 ? _a : fatal) !== null && _b !== void 0 ? _b : true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = (_b = (_a = params.fatal) !== null && _a !== void 0 ? _a : fatal) !== null && _b !== void 0 ? _b : true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nconst late = {\n object: ZodObject.lazycreate,\n};\nvar 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 = {}));\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();\nconst 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};\nconst NEVER = INVALID;\n\nvar z = /*#__PURE__*/Object.freeze({\n __proto__: null,\n defaultErrorMap: errorMap,\n setErrorMap: setErrorMap,\n getErrorMap: getErrorMap,\n makeIssue: makeIssue,\n EMPTY_PATH: EMPTY_PATH,\n addIssueToContext: addIssueToContext,\n ParseStatus: ParseStatus,\n INVALID: INVALID,\n DIRTY: DIRTY,\n OK: OK,\n isAborted: isAborted,\n isDirty: isDirty,\n isValid: isValid,\n isAsync: isAsync,\n get util () { return util; },\n get objectUtil () { return objectUtil; },\n ZodParsedType: ZodParsedType,\n getParsedType: getParsedType,\n ZodType: ZodType,\n datetimeRegex: datetimeRegex,\n ZodString: ZodString,\n ZodNumber: ZodNumber,\n ZodBigInt: ZodBigInt,\n ZodBoolean: ZodBoolean,\n ZodDate: ZodDate,\n ZodSymbol: ZodSymbol,\n ZodUndefined: ZodUndefined,\n ZodNull: ZodNull,\n ZodAny: ZodAny,\n ZodUnknown: ZodUnknown,\n ZodNever: ZodNever,\n ZodVoid: ZodVoid,\n ZodArray: ZodArray,\n ZodObject: ZodObject,\n ZodUnion: ZodUnion,\n ZodDiscriminatedUnion: ZodDiscriminatedUnion,\n ZodIntersection: ZodIntersection,\n ZodTuple: ZodTuple,\n ZodRecord: ZodRecord,\n ZodMap: ZodMap,\n ZodSet: ZodSet,\n ZodFunction: ZodFunction,\n ZodLazy: ZodLazy,\n ZodLiteral: ZodLiteral,\n ZodEnum: ZodEnum,\n ZodNativeEnum: ZodNativeEnum,\n ZodPromise: ZodPromise,\n ZodEffects: ZodEffects,\n ZodTransformer: ZodEffects,\n ZodOptional: ZodOptional,\n ZodNullable: ZodNullable,\n ZodDefault: ZodDefault,\n ZodCatch: ZodCatch,\n ZodNaN: ZodNaN,\n BRAND: BRAND,\n ZodBranded: ZodBranded,\n ZodPipeline: ZodPipeline,\n ZodReadonly: ZodReadonly,\n custom: custom,\n Schema: ZodType,\n ZodSchema: ZodType,\n late: late,\n get ZodFirstPartyTypeKind () { return ZodFirstPartyTypeKind; },\n coerce: coerce,\n any: anyType,\n array: arrayType,\n bigint: bigIntType,\n boolean: booleanType,\n date: dateType,\n discriminatedUnion: discriminatedUnionType,\n effect: effectsType,\n 'enum': enumType,\n 'function': functionType,\n 'instanceof': instanceOfType,\n intersection: intersectionType,\n lazy: lazyType,\n literal: literalType,\n map: mapType,\n nan: nanType,\n nativeEnum: nativeEnumType,\n never: neverType,\n 'null': nullType,\n nullable: nullableType,\n number: numberType,\n object: objectType,\n oboolean: oboolean,\n onumber: onumber,\n optional: optionalType,\n ostring: ostring,\n pipeline: pipelineType,\n preprocess: preprocessType,\n promise: promiseType,\n record: recordType,\n set: setType,\n strictObject: strictObjectType,\n string: stringType,\n symbol: symbolType,\n transformer: effectsType,\n tuple: tupleType,\n 'undefined': undefinedType,\n union: unionType,\n unknown: unknownType,\n 'void': voidType,\n NEVER: NEVER,\n ZodIssueCode: ZodIssueCode,\n quotelessJson: quotelessJson,\n ZodError: ZodError\n});\n\nexport { BRAND, DIRTY, EMPTY_PATH, INVALID, NEVER, OK, ParseStatus, ZodType as Schema, ZodAny, ZodArray, ZodBigInt, ZodBoolean, ZodBranded, ZodCatch, ZodDate, ZodDefault, ZodDiscriminatedUnion, ZodEffects, ZodEnum, ZodError, ZodFirstPartyTypeKind, ZodFunction, ZodIntersection, ZodIssueCode, ZodLazy, ZodLiteral, ZodMap, ZodNaN, ZodNativeEnum, ZodNever, ZodNull, ZodNullable, ZodNumber, ZodObject, ZodOptional, ZodParsedType, ZodPipeline, ZodPromise, ZodReadonly, ZodRecord, ZodType as ZodSchema, ZodSet, ZodString, ZodSymbol, ZodEffects as ZodTransformer, ZodTuple, ZodType, ZodUndefined, ZodUnion, ZodUnknown, ZodVoid, addIssueToContext, anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, coerce, custom, dateType as date, datetimeRegex, z as default, errorMap as defaultErrorMap, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, getErrorMap, getParsedType, instanceOfType as instanceof, intersectionType as intersection, isAborted, isAsync, isDirty, isValid, late, lazyType as lazy, literalType as literal, makeIssue, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, objectUtil, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, quotelessJson, recordType as record, setType as set, setErrorMap, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, util, voidType as void, z };\n","import { z } from \"zod\";\nimport { Media } from \"../types\";\n\nconst BASE_CF_URL = \"https://mediacrate.marteye.ie\";\n\n/**\n|--------------------------------------------------\n| START OF MEDIA CRATE CODE\n|--------------------------------------------------\n*/\nexport const processorPayload = z.object({\n assetPath: z.string().url({ message: \"URL is required\" }),\n suffix: z.string().min(1, { message: \"Suffix Type is required\" }),\n});\n\n// Adding Sizes here will make more end points in the mainConfig object\nexport const IMAGE_SIZES_VALUES = [\n \"thumbnail\",\n \"small\",\n \"medium\",\n \"large\",\n] as const;\n\nexport const VIDEO_TASKS_VALUES = [\"compressed\", \"thumbnail\"] as const;\n\nexport const videoTaskSchema = z.enum(VIDEO_TASKS_VALUES);\n\nexport const imageSizeSchema = z.enum(IMAGE_SIZES_VALUES);\n\nexport type ImageSize = z.infer<typeof imageSizeSchema>;\n\nexport type ProcessorPayload = z.infer<typeof processorPayload>;\n\nexport type VideoVMPayload = ProcessorPayload & {\n task: VideoTask;\n};\n\nexport type VideoTask = z.infer<typeof videoTaskSchema>;\n\n// We need a \"Origin Type\" - The main File to show to the user\nexport type SupportedFileTypesNames = \"image\" | \"video\" | \"file\";\n\nexport type VariantProcessingState = {\n fileName: string;\n thumbHash: string;\n path: string;\n url: string;\n fileType: string; // mimeType\n variants: Partial<\n Record<\n ImageSize | VideoTask,\n {\n url: string;\n isProcessing: boolean;\n type: SupportedFileTypesNames;\n }\n >\n >;\n};\n\n/**\n |--------------------------------------------------\n | END OF MEDIA CRATE CODE\n |--------------------------------------------------\n */\n\ntype MediaFinishUploadResponse = {\n message: string;\n mediaType: string;\n process: VariantProcessingState;\n};\nconst UPLOAD_PATHS = {\n START_UPLOAD: \"startMultipartUpload\",\n UPLOAD_PART: \"uploadChunk\",\n FINISH_UPLOAD: \"finishMultipartUpload\",\n CANCEL_UPLOAD: \"cancelUpload\",\n DELETE_UPLOAD: \"deleteUpload\",\n UPLOAD_SINGLE_FILE: \"upload\",\n} as const;\n\nexport type MediaUploadOptions = {\n marketId: string;\n saleId: string;\n lotId: string;\n attributeId: string;\n options?: {\n bucket?: \"raw\";\n parallelParts?: number;\n baseUrl?: string;\n progressCallback?: (progress: {\n /**\n * The state of the upload\n */\n state: \"uploading\" | \"finished\" | \"failed\" | \"starting\";\n /**\n * The progress of the upload\n */\n progress: number;\n /**\n * The current part number\n */\n currentPart?: number;\n /**\n * The total parts\n */\n totalParts?: number;\n }) => void;\n };\n};\n\n/**\n|--------------------------------------------------\n| Helper Functions\n|--------------------------------------------------\n*/\n\nconst MIME_TYPE_MAP: Record<string, string> = {\n png: \"image/png\",\n jpg: \"image/jpeg\",\n jpeg: \"image/jpeg\",\n mp4: \"video/mp4\",\n mov: \"video/quicktime\",\n qt: \"video/quicktime\",\n};\n\n/**\n|--------------------------------------------------\n| Make a File Path\n|--------------------------------------------------\n*/\nexport function createFilePath(\n marketId: string,\n saleId: string,\n lotId: string,\n attributeId: string,\n fileName: string\n) {\n return `/${marketId}/${saleId}/${lotId}/${attributeId}/${fileName}`;\n}\n\nconst getHeaders = (\n mimeType: string,\n bucket: string = \"raw\",\n token: string\n) => {\n const headers = new Headers();\n headers.append(\"mbtype\", bucket);\n headers.append(\"mmimetype\", mimeType);\n headers.append(\"Authorization\", `Bearer ${token}`);\n return headers;\n};\n/**\n * Starts a multipart upload process for a file\n * @param {Object} params - The parameters for starting the upload\n * @param {string} params.fileName - Name of the file without extension\n * @param {string} params.fileMimeType - MIME type of the file\n * @param {string} params.fileExtension - File extension\n * @param {MediaUploadOptions} params.options - Upload options including market, sale, lot and attribute IDs\n * @returns {Promise<{uploadId: string, filePath: string, fileMimeType: string, fileExtension: string, fileName: string}>}\n * @throws {Error} When upload initialization fails\n */\nexport const startUpload = async ({\n fileName,\n fileMimeType,\n fileExtension,\n token,\n options,\n}: {\n fileName: string;\n fileMimeType: string;\n fileExtension: string;\n token: string;\n options: MediaUploadOptions;\n}): Promise<{\n uploadId: string;\n filePath: string;\n fileMimeType: string;\n fileExtension: string;\n fileName: string;\n}> => {\n const headers = getHeaders(fileMimeType, options.options?.bucket, token);\n\n const formData = new FormData();\n\n const filePath = createFilePath(\n options.marketId,\n options.saleId,\n options.lotId,\n options.attributeId,\n `${fileName}.${fileExtension}`\n );\n\n formData.append(\"filePath\", filePath);\n headers.append(\"Authorization\", `Bearer ${token}`);\n\n let uploadIdResponse = await fetch(\n new URL(`${BASE_CF_URL}/${UPLOAD_PATHS.START_UPLOAD}`),\n {\n method: \"POST\",\n body: formData,\n headers: headers,\n }\n );\n if (!uploadIdResponse.ok) {\n throw new Error(\"Failed to start upload\");\n }\n\n const startedUploadJson = await uploadIdResponse.json();\n\n let uploadId = startedUploadJson.data.uploadId;\n\n if (!uploadId) {\n throw new Error(\"Failed to start upload\");\n }\n\n return {\n uploadId,\n filePath,\n fileName,\n fileMimeType,\n fileExtension,\n };\n};\n\nexport type ChunkedFile = {\n partNumber: string;\n chunk: string;\n fileExtension: string;\n fileMimeType: string;\n};\n\n/**\n * Splits a file into chunks for multipart upload\n * Note: Native does not have File Prototype, please implement your own chunking logic\n * @param {File} file - The file to be chunked\n * @param {number} chunkSize - Size of each chunk in bytes\n * @returns {Array<ChunkedFile>} Array of chunked file parts\n */\nexport const chunkFile = (\n file: File,\n chunkSize: number\n): Array<ChunkedFile> => {\n const totalParts = Math.ceil(file.size / chunkSize);\n const parts = [] as Array<ChunkedFile>;\n\n for (let i = 0; i < totalParts; i++) {\n const start = chunkSize * i;\n const end = Math.min(file.size, start + chunkSize);\n const part = file.slice(start, end).toString();\n parts.push({\n partNumber: `${i + 1}`,\n chunk: part,\n fileExtension: file.name.split(\".\").pop() || \"\",\n fileMimeType: file.type,\n });\n }\n return parts;\n};\n/**\n * Uploads a single part/chunk of a file\n * @param {ChunkedFile} chunkedFile - The chunk of file to upload\n * @param {string} uploadId - Upload ID from startUpload\n * @param {string} filePath - Path where file will be stored\n * @param {MediaUploadOptions} options - Upload options\n * @returns {Promise<{partNumber: string, eTag: string}>}\n * @throws {Error} When part upload fails\n */\nexport const uploadPart = async ({\n chunkedFile,\n uploadId,\n filePath,\n options,\n token,\n}: {\n chunkedFile: ChunkedFile;\n uploadId: string;\n filePath: string;\n options: MediaUploadOptions;\n token: string;\n}): Promise<{ partNumber: string; eTag: string }> => {\n const headers = getHeaders(\n chunkedFile.fileMimeType,\n options.options?.bucket,\n token\n );\n\n const formData = new FormData();\n formData.append(\"filePath\", filePath);\n formData.append(\"uploadId\", uploadId);\n formData.append(\"partNumber\", `${chunkedFile.partNumber}`);\n\n formData.append(\"file\", {\n uri: `data:${chunkedFile.fileMimeType};base64,${chunkedFile.chunk}`,\n type: chunkedFile.fileMimeType,\n name: `part_${chunkedFile.partNumber}.${chunkedFile.fileExtension}`,\n } as any);\n\n let uploadPartResponse = await fetch(\n new URL(`${BASE_CF_URL}/${UPLOAD_PATHS.UPLOAD_PART}`),\n {\n method: \"POST\",\n body: formData,\n headers: headers,\n }\n );\n\n if (!uploadPartResponse.ok) {\n throw new Error(\"Failed to upload part\");\n }\n const uploadPartJson = await uploadPartResponse.json();\n\n return {\n partNumber: chunkedFile.partNumber,\n eTag: uploadPartJson.data.eTag,\n };\n};\n\n/**\n * Completes a multipart upload by combining all parts\n * @param {string} filePath - Path where file is stored\n * @param {string} fileMimeType - MIME type of the file\n * @param {string} uploadId - Upload ID from startUpload\n * @param {Array<{partNumber: string, eTag: string}>} sections - Array of successfully uploaded parts\n * @param {MediaUploadOptions} options - Upload options\n * @returns {Promise<MediaFinishUploadResponse>}\n * @throws {Error} When finishing upload fails\n */\nexport const finishUpload = async ({\n filePath,\n fileMimeType,\n uploadId,\n sections,\n options,\n token,\n}: {\n filePath: string;\n fileMimeType: string;\n uploadId: string;\n sections: Array<{ partNumber: string; eTag: string }>;\n options: MediaUploadOptions;\n token: string;\n}): Promise<MediaFinishUploadResponse> => {\n const headers = getHeaders(fileMimeType, options.options?.bucket, token);\n\n const formData = new FormData();\n formData.append(\"filePath\", filePath);\n formData.append(\"uploadId\", uploadId);\n formData.append(\"sections\", JSON.stringify(sections));\n\n let finishUploadResponse = await fetch(\n new URL(`${BASE_CF_URL}/${UPLOAD_PATHS.FINISH_UPLOAD}`),\n {\n method: \"POST\",\n body: formData,\n headers: headers,\n }\n );\n\n if (!finishUploadResponse.ok) {\n throw new Error(\"Failed to finish upload\");\n }\n\n return await finishUploadResponse.json();\n};\n\n/**\n * Cancels an in-progress multipart upload\n * @param {string} uploadId - Upload ID to cancel\n * @param {string} filePath - Path of the file being uploaded\n * @param {string} fileMimeType - MIME type of the file\n * @param {MediaUploadOptions} options - Upload options\n * @returns {Promise<{data: boolean}>}\n * @throws {Error} When canceling upload fails\n */\nexport const cancelUpload = async ({\n uploadId,\n filePath,\n fileMimeType,\n options,\n token,\n}: {\n uploadId: string;\n filePath: string;\n fileMimeType: string;\n options: MediaUploadOptions;\n token: string;\n}): Promise<{ data: boolean }> => {\n const headers = getHeaders(fileMimeType, options.options?.bucket, token);\n const formDataAbort = new FormData();\n\n formDataAbort.append(\"uploadId\", uploadId);\n formDataAbort.append(\"filePath\", filePath);\n\n const abortUploadResponse = await fetch(\n new URL(`${BASE_CF_URL}/${UPLOAD_PATHS.CANCEL_UPLOAD}`),\n {\n headers: headers,\n method: \"POST\",\n body: formDataAbort,\n }\n );\n\n if (!abortUploadResponse.ok) {\n throw new Error(\"Failed to cancel upload\");\n }\n\n return await abortUploadResponse.json();\n};\n\n/**\n * Deletes a multipart upload\n * @param {string} fileUrl - The URL of the file to delete\n * @returns {Promise<{data: boolean}>}\n * @throws {Error} When deleting upload fails\n */\nexport const deleteUpload = async (\n fileUrl: string,\n token: string\n): Promise<{ data: boolean }> => {\n if (!fileUrl) {\n throw new Error(\"Invalid URL\");\n }\n const unlinkUrl = new URL(`${BASE_CF_URL}/${UPLOAD_PATHS.DELETE_UPLOAD}`);\n const headers = new Headers();\n const formDataAbort = new FormData();\n\n formDataAbort.append(\"fileUrl\", fileUrl);\n headers.append(\"Authorization\", `Bearer ${token}`);\n\n const unlinkAssets = await fetch(unlinkUrl, {\n headers: headers,\n method: \"DELETE\",\n body: formDataAbort,\n });\n\n if (!unlinkAssets.ok) {\n throw new Error(\"Error unlinking assets\");\n }\n return await unlinkAssets.json();\n};\n\nexport type FileInput = {\n file: File;\n uploadConfig: MediaUploadOptions;\n};\n\nexport type ChunkedInput = {\n fileName: string;\n chunks: ChunkedFile[];\n uploadConfig: MediaUploadOptions;\n};\n\n/**\n * Handles the complete file upload process including chunking and progress tracking -\n * WEB: Pass in a file and we will chunk it and upload it in parallel\n * NATIVE: You need to chunk the file yourself.\n * @param {FileInput | ChunkedInput} input - Either {file, options} or {fileName, chunks, options}\n * @returns {Promise<MediaFinishUploadResponse>}\n * @throws {Error} When upload fails\n */\nexport const uploadMultipartFile = async (\n input: FileInput | ChunkedInput,\n token: string\n): Promise<MediaFinishUploadResponse> => {\n let uploadId = \"\";\n let filePath = \"\";\n let fileMimeType = \"\";\n let fileName = \"\";\n let fileExtension = \"\";\n let chunks: ChunkedFile[] = [];\n let options = input.uploadConfig;\n\n try {\n const parallelParts = options.options?.parallelParts || 3;\n\n // Web can just pass in a file and we will chunk it\n if (\"file\" in input) {\n fileName = input.file.name.replace(/\\.[^/.]+$/, \"\");\n fileExtension = input.file.name.split(\".\").pop() || \"\";\n fileMimeType = input.file.type;\n chunks = chunkFile(input.file, 5 * 1024 * 1024);\n } else {\n // Native does not have File Prototype, so Native has to chunk the file (Base64) and pass it to us.\n fileName = input.fileName;\n fileExtension = input.chunks[0].fileExtension;\n fileMimeType = input.chunks[0].fileMimeType;\n chunks = input.chunks;\n }\n if (options.options?.progressCallback) {\n options.options.progressCallback({\n state: \"starting\",\n progress: 0,\n totalParts: chunks.length,\n currentPart: 0,\n });\n }\n const { uploadId: uploadIdResponseId, filePath: filePathResponse } =\n await startUpload({\n fileName,\n fileMimeType,\n fileExtension,\n token,\n options,\n });\n\n filePath = filePathResponse;\n uploadId = uploadIdResponseId;\n\n if (!uploadId) {\n throw new Error(\"Failed to start upload\");\n }\n let sections = [];\n for (let i = 0; i < chunks.length; i += parallelParts) {\n const batch = chunks.slice(i, i + parallelParts);\n const batchPromises = batch.map((c) =>\n uploadPart({ chunkedFile: c, uploadId, filePath, options, token })\n );\n // Wait for current batch to complete before starting next batch\n const batchResults = await Promise.all(batchPromises);\n sections.push(...batchResults);\n\n // Optionally update progress\n if (options.options?.progressCallback) {\n options.options.progressCallback({\n state: \"uploading\",\n progress: Math.min(1, (i + parallelParts) / chunks.length),\n currentPart: i + parallelParts,\n totalParts: chunks.length,\n });\n }\n }\n\n const finishUploadResponse = await finishUpload({\n filePath,\n fileMimeType,\n uploadId,\n sections,\n options,\n token,\n });\n if (options.options?.progressCallback) {\n options.options.progressCallback({\n state: \"finished\",\n progress: 1,\n currentPart: chunks.length,\n totalParts: chunks.length,\n });\n }\n return finishUploadResponse;\n } catch (error) {\n if (options.options?.progressCallback) {\n options.options.progressCallback({\n state: \"failed\",\n progress: 0,\n currentPart: 0,\n totalParts: chunks.length,\n });\n }\n // We only cancel if the uploadId is set\n if (uploadId) {\n await cancelUpload({\n uploadId,\n filePath,\n fileMimeType,\n options,\n token,\n }).catch((err) => {\n console.log(\"error\", err);\n });\n }\n throw new Error(\"Upload failed and canceled \" + error);\n }\n};\n\nexport type SingleFileInput =\n | {\n file?: File;\n filePath?: never;\n uploadConfig: MediaUploadOptions;\n }\n | {\n filePath?: string;\n file?: never;\n uploadConfig: MediaUploadOptions;\n };\n\nexport const uploadSingleFile = async (\n input: SingleFileInput,\n token: string\n): Promise<{\n message: string;\n data: Media;\n}> => {\n const { file, filePath, uploadConfig } = input;\n\n let fileMimeType = \"\";\n let destinationPath = \"\";\n let fileName = \"\";\n let fileExtension = \"\";\n\n if (!filePath && !file) {\n throw new Error(\"Either filePath or file must be provided\");\n }\n\n if (filePath && file) {\n throw new Error(\"Only one of filePath or file can be provided\");\n }\n\n // We perform a copy form one file to another\n if (filePath) {\n fileName = filePath.split(\"/\").pop() || \"\";\n fileExtension = fileName.split(\".\").pop() || \"\";\n fileMimeType = MIME_TYPE_MAP[fileExtension] || \"\";\n\n destinationPath = createFilePath(\n uploadConfig.marketId,\n uploadConfig.saleId,\n uploadConfig.lotId,\n uploadConfig.attributeId,\n `${fileName}`\n );\n }\n\n // We upload a single File\n if (file) {\n fileName = file.name.replace(/\\.[^/.]+$/, \"\");\n fileExtension = file.name.split(\".\").pop() || \"\";\n fileMimeType = file.type;\n\n destinationPath = createFilePath(\n uploadConfig.marketId,\n uploadConfig.saleId,\n uploadConfig.lotId,\n uploadConfig.attributeId,\n `${fileName}.${fileExtension}`\n );\n }\n // Construct the Fetch Request\n const uploadUrl = new URL(\n `${BASE_CF_URL}/${UPLOAD_PATHS.UPLOAD_SINGLE_FILE}`\n );\n const headers = new Headers();\n\n headers.append(\"mbtype\", \"raw\");\n headers.append(\"Authorization\", `Bearer ${token}`);\n headers.append(\"mmimetype\", fileMimeType);\n\n const formData = new FormData();\n\n filePath && formData.append(\"existingFilePath\", filePath);\n destinationPath && formData.append(\"filePath\", destinationPath);\n file && formData.append(\"file\", file);\n\n const uploadResponse = await fetch(uploadUrl, {\n headers: headers,\n method: \"POST\",\n body: formData,\n });\n\n if (!uploadResponse.ok) {\n throw new Error(\"Failed to upload single file\");\n }\n\n return (await uploadResponse.json()) as {\n message: string;\n data: Media;\n };\n};\n","// Multipart Upload for Media to the MARTEYE Media Service\n\nimport {\n deleteUpload,\n uploadMultipartFile,\n uploadSingleFile,\n} from \"../utils/multipart-upload\";\n\nexport default function create() {\n const files = {\n uploadSingleFile: async (\n input: Parameters<typeof uploadSingleFile>[0],\n token: string\n ) => {\n return await uploadSingleFile(input, token);\n },\n uploadMultipartFile: async (\n input: Parameters<typeof uploadMultipartFile>[0],\n token: string\n ) => {\n return await uploadMultipartFile(input, token);\n },\n\n deleteFile: async (fileUrl: string, token: string) => {\n return await deleteUpload(fileUrl, token);\n },\n };\n\n return files;\n}\n\nexport type Files = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { Invoice } from \"../types\";\n\n// Define the type for the paginated invoices response\nexport interface InvoicesListResponse {\n invoices: Invoice[];\n lastId: string | null;\n hasMore: boolean;\n}\n\nexport default function create(httpClient: HttpClient) {\n const invoices = {\n /**\n * List all invoices for a market with pagination\n * @param marketId - ID of the market\n * @param lastId - ID of the last invoice from previous page (for pagination)\n * @returns Paginated list of invoices\n */\n list: async (\n marketId: string,\n lastId?: string | null\n ): Promise<InvoicesListResponse> => {\n let params: Record<string, string> = {};\n if (lastId) {\n params.lastId = lastId;\n }\n return httpClient.get<InvoicesListResponse>(\n `/${marketId}/invoices`,\n params\n );\n },\n\n /**\n * Get a specific invoice by ID\n * @param marketId - ID of the market\n * @param invoiceId - ID of the invoice to fetch\n * @returns The invoice details\n */\n get: async (marketId: string, invoiceId: string): Promise<Invoice> => {\n return httpClient.get<Invoice>(`/${marketId}/invoices/${invoiceId}`);\n },\n };\n\n return invoices;\n}\n\nexport type Invoices = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { LotItem } from \"../types\";\n\nexport default function create(httpClient: HttpClient) {\n return {\n create: async (\n marketId: string,\n saleId: string,\n lotId: string,\n data: {\n attributes?: Record<string, any>;\n notes?: Array<{\n text: string;\n }>;\n metadata?: Record<string, any>;\n }\n ) => {\n return httpClient.post<LotItem>(\n `/${marketId}/sales/${saleId}/lots/${lotId}/items`,\n data\n );\n },\n update: async (\n marketId: string,\n saleId: string,\n lotId: string,\n itemId: string,\n data: {\n attributes?: Record<string, any>;\n index?: number;\n metadata?: Record<string, any>;\n }\n ) => {\n return httpClient.post<LotItem>(\n `/${marketId}/sales/${saleId}/lots/${lotId}/items/${itemId}`,\n data\n );\n },\n delete: async (\n marketId: string,\n saleId: string,\n lotId: string,\n itemId: string\n ) => {\n return httpClient.delete(\n `/${marketId}/sales/${saleId}/lots/${lotId}/items/${itemId}`\n );\n },\n };\n}\n\nexport type LotItems = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { Lot, LotSaleStatus } from \"../types\";\n\n/**\n * Defines the possible status values for a lot in a sale\n */\n\nexport default function create(httpClient: HttpClient) {\n return {\n get: async (marketId: string, saleId: string, lotId: string) => {\n return httpClient.get<Lot>(`/${marketId}/sales/${saleId}/lots/${lotId}`);\n },\n list: async (\n marketId: string,\n saleId: string,\n filters?: {\n group?: string;\n productCode?: string;\n saleStatus?: LotSaleStatus;\n sellerCustomerId?: string;\n buyerCustomerId?: string;\n }\n ) => {\n return httpClient.get<Lot[]>(`/${marketId}/sales/${saleId}/lots`, filters);\n },\n create: async (\n marketId: string,\n saleId: string,\n data: {\n index?: number;\n lotNumber?: string;\n group?: string;\n productCode?: string;\n sellerCustomerId?: string;\n attributes?: Record<string, any>;\n metadata?: Record<string, any>;\n buyerCustomerId?: string;\n unitPriceInCents?: number;\n reservePriceInCents?: number;\n startingPriceInCents?: number;\n startAt?: string;\n endAt?: string;\n previousLotNumber?: string;\n saleStatus?: LotSaleStatus;\n }\n ) => {\n return httpClient.post<Lot>(`/${marketId}/sales/${saleId}/lots`, data);\n },\n update: async (\n marketId: string,\n saleId: string,\n lotId: string,\n data: {\n productCode?: string;\n attributes?: Record<string, any>;\n sellerCasual?: string | null;\n sellerCustomerId?: string | null;\n lotNumber?: string | null;\n remarks?: string;\n notes?: string;\n unitOfSale?: \"Per KG\" | \"Per Item\" | \"Per Lot\" | \"Per 1000KG\";\n unitPriceInCents?: number;\n reservePriceInCents?: number;\n startingPriceInCents?: number;\n buyerCasual?: string | null;\n buyerCustomerId?: string | null;\n startAt?: string | null;\n endAt?: string | null;\n saleStatus?: LotSaleStatus;\n metadata?: Record<string, any>;\n inputAccessories?: Record<string, any>;\n }\n ) => {\n return httpClient.post<Lot>(\n `/${marketId}/sales/${saleId}/lots/${lotId}`,\n data\n );\n },\n delete: async (marketId: string, saleId: string, lotId: string) => {\n return httpClient.delete(`/${marketId}/sales/${saleId}/lots/${lotId}`);\n },\n };\n}\n\nexport type Lots = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { Market } from \"../types\";\n\nexport default function create(httpClient: HttpClient) {\n const markets = {\n get: async (marketId: string) => {\n return httpClient.get<Market>(`/${marketId}`);\n },\n // update: async (marketId: string, market: Partial<Market>) => {\n // // return httpClient.put<Market>(`/${marketId}`, market);\n // },\n // create: async (market: Market) => {\n // // return httpClient.post<Market>(\"/\", market);\n // },\n // //\n // watch: async (marketId: string, callback: (market: Market) => void) => {\n // // return httpClient.post<Market>(`/${marketId}/watch`);\n // },\n // hint: async (marketId: string, callback: () => void) => {\n // // return httpClient.post<Market>(`/${marketId}/hint`);\n // },\n };\n\n return markets;\n}\n\nexport type Markets = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { Payment } from \"../types\";\n\n// Define the type for the paginated payments response\nexport interface PaymentsListResponse {\n payments: Payment[];\n lastId: string | null;\n hasMore: boolean;\n}\n\nexport default function create(httpClient: HttpClient) {\n const payments = {\n /**\n * List all payments for a market with pagination\n * @param marketId - ID of the market\n * @param lastId - ID of the last payment from previous page (for pagination)\n * @returns Paginated list of payments\n */\n list: async (\n marketId: string,\n lastId?: string | null\n ): Promise<PaymentsListResponse> => {\n let params: Record<string, string> = {};\n if (lastId) {\n params.lastId = lastId;\n }\n return httpClient.get<PaymentsListResponse>(\n `/${marketId}/payments`,\n params\n );\n },\n\n /**\n * Get a specific payment by ID\n * @param marketId - ID of the market\n * @param paymentId - ID of the payment to fetch\n * @returns The payment details\n */\n get: async (marketId: string, paymentId: string): Promise<Payment> => {\n return httpClient.get<Payment>(`/${marketId}/payments/${paymentId}`);\n },\n };\n\n return payments;\n}\n\nexport type Payments = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { Payout } from \"../types\";\n\n// Define the type for the paginated payouts response\nexport interface PayoutsListResponse {\n payouts: Payout[];\n lastId: string | null;\n hasMore: boolean;\n}\n\nexport default function create(httpClient: HttpClient) {\n const payouts = {\n /**\n * List all payouts for a market with pagination\n * @param marketId - ID of the market\n * @param lastId - ID of the last payout from previous page (for pagination)\n * @returns Paginated list of payouts\n */\n list: async (\n marketId: string,\n lastId?: string | null\n ): Promise<PayoutsListResponse> => {\n let params: Record<string, string> = {};\n if (lastId) {\n params.lastId = lastId;\n }\n return httpClient.get<PayoutsListResponse>(\n `/${marketId}/payouts`,\n params\n );\n },\n\n /**\n * Get a specific payout by ID\n * @param marketId - ID of the market\n * @param payoutId - ID of the payout to fetch\n * @returns The payout details\n */\n get: async (marketId: string, payoutId: string): Promise<Payout> => {\n return httpClient.get<Payout>(`/${marketId}/payouts/${payoutId}`);\n },\n };\n\n return payouts;\n}\n\nexport type Payouts = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { ProductCodeConfiguration } from \"../types\";\n\nexport default function create(httpClient: HttpClient) {\n return {\n list: async (marketId: string) => {\n return httpClient.get<ProductCodeConfiguration[]>(\n `/${marketId}/product-codes`\n );\n },\n get: async (marketId: string, id: string) => {\n return httpClient.get<ProductCodeConfiguration>(\n `/${marketId}/product-codes/${id}`\n );\n },\n create: async (marketId: string, data: Partial<ProductCodeConfiguration>) => {\n return httpClient.post<ProductCodeConfiguration>(\n `/${marketId}/product-codes`,\n data\n );\n },\n update: async (\n marketId: string,\n id: string,\n data: Partial<ProductCodeConfiguration>\n ) => {\n return httpClient.post<ProductCodeConfiguration>(\n `/${marketId}/product-codes/${id}`,\n data\n );\n },\n };\n}\n\nexport type ProductCodes = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { Sale, SalePublishStatus } from \"../types\";\n\ntype SalesListResponse = {\n start: string;\n end: string;\n sales: Sale[];\n};\n\n// Response type for creating a sale\ntype CreateSaleResponse = {\n saleId: string;\n};\n\n// Request type for creating a sale\ntype CreateSaleRequest = {\n name: string;\n startsAt: string;\n availableProductCodes: string[];\n recurring?: null | \"Weekly\" | \"Bi-weekly\" | \"Monthly\";\n martEyeSaleType?: \"LIVE\" | \"TIMED\" | null;\n location?: string | null;\n description?: string | null;\n image?: string | null;\n cover?: string | null;\n templateId?: string | null;\n attributeDefaults?: {\n [attributekey: string]: string | number | boolean;\n };\n};\n\nexport default function create(httpClient: HttpClient) {\n return {\n get: async (marketId: string, saleId: string) => {\n return httpClient.get<Sale>(`/${marketId}/sales/${saleId}`);\n },\n list: async (\n marketId: string,\n opts: {\n start?: string;\n end?: string;\n }\n ) => {\n return httpClient.get<SalesListResponse>(`/${marketId}/sales`, opts);\n },\n create: async (marketId: string, saleData: CreateSaleRequest) => {\n return httpClient.post<CreateSaleResponse>(\n `/${marketId}/sales`,\n saleData\n );\n },\n update: async (\n marketId: string,\n saleId: string,\n data: {\n name?: string;\n startsAt?: string;\n recurring?: \"Weekly\" | \"Bi-weekly\" | \"Monthly\" | null;\n defaultProductCode?: string;\n attributeDefaults?: Record<string, any>;\n publishStatus?: SalePublishStatus;\n marteyeSettings?: {\n description?: string;\n image?: string;\n logo?: string;\n type: \"LIVE\" | \"TIMED\";\n location?: string | null;\n descriptionLines?: string[];\n descriptionLink?: string;\n deposit?: number;\n hidePrices?: boolean;\n hideReplay?: boolean;\n labels?: string[];\n tags?: string[];\n details?: Array<{\n markdownBase64: string;\n title: string;\n }>;\n cover?: string;\n primaryColour?: string;\n secondaryColour?: string;\n foregroundColour?: string;\n extensionTime?: number;\n incrementLadder?: Array<{\n max: number;\n increment: number;\n }>;\n hideNav?: boolean;\n signInOverrideLink?: string;\n published?: boolean;\n pin?: boolean;\n cascade?: boolean;\n reportEmail?: string;\n queueLots?: boolean;\n } | null;\n }\n ) => {\n return httpClient.post<Sale>(`/${marketId}/sales/${saleId}`, data);\n },\n };\n}\n\nexport type Sales = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { SaleTemplate } from \"../types\";\n\ntype CreateTemplateRequest = {\n saleId: string;\n name: string;\n description?: string | null;\n};\n\ntype UpdateTemplateRequest = {\n name?: string;\n description?: string | null;\n};\n\nexport default function create(httpClient: HttpClient) {\n return {\n list: async (marketId: string) => {\n return httpClient.get<{ templates: SaleTemplate[] }>(\n `/${marketId}/sale-templates`\n );\n },\n get: async (marketId: string, templateId: string) => {\n return httpClient.get<{ template: SaleTemplate }>(\n `/${marketId}/sale-templates/${templateId}`\n );\n },\n create: async (marketId: string, body: CreateTemplateRequest) => {\n return httpClient.post<{ templateId: string }>(\n `/${marketId}/sale-templates`,\n body\n );\n },\n update: async (\n marketId: string,\n templateId: string,\n body: UpdateTemplateRequest\n ) => {\n return httpClient.post<{ template: SaleTemplate }>(\n `/${marketId}/sale-templates/${templateId}`,\n body\n );\n },\n delete: async (marketId: string, templateId: string) => {\n return httpClient.delete<{ success: boolean }>(\n `/${marketId}/sale-templates/${templateId}`\n );\n },\n };\n}\n\nexport type SaleTemplates = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\n\n/**\n * Search result interface based on the API implementation\n */\nexport interface SearchResult {\n hits: Array<{\n id: string;\n marketId: string;\n title: string;\n [key: string]: any;\n }>;\n processingTimeMs: number;\n query: string;\n}\n\nexport default function create(httpClient: HttpClient) {\n let search = {\n /**\n * Search for documents within a market\n * @param marketId - ID of the market to search in\n * @param query - Search query string\n * @returns Search results containing matching documents\n */\n query: async (marketId: string, query: string) => {\n return httpClient.get<SearchResult>(`/${marketId}/search`, { q: query });\n },\n };\n\n return search;\n}\n\nexport type Search = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { SettingsMarketDefaults } from \"../types\";\n\nexport default function create(httpClient: HttpClient) {\n return {\n get: async (marketId: string) => {\n return httpClient.get<SettingsMarketDefaults>(`/${marketId}/settings`);\n },\n };\n}\n\nexport type Settings = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { TaxRate } from \"../types\";\n\nexport default function create(httpClient: HttpClient) {\n return {\n list: async (marketId: string) => {\n return httpClient.get<TaxRate[]>(`/${marketId}/tax_rates`);\n },\n get: async (marketId: string, id: string) => {\n return httpClient.get<TaxRate>(`/${marketId}/tax_rates/${id}`);\n },\n };\n}\n\nexport type TaxRates = ReturnType<typeof create>;\n","// Path: studiojs/src/resources/markets.ts\n\nimport { createHmac } from \"crypto\";\nimport { HttpClient } from \"../net/http\";\nimport { WebhookEvent } from \"../types\";\n\nexport default function create(_: HttpClient) {\n const webhooks = {\n /***\n * This is used to construct the webhook event from the request body\n * @param body the request body\n * @param signature the signature of the request taken from the header\n * @param endpointSecret the pre-shared secret\n * @returns the webhook event\n */\n constructEvent: async <T extends any>(\n bodyAsBuffer: Buffer,\n signature: string | undefined | null,\n endpointSecret: string | undefined | null\n ) => {\n if (!endpointSecret) {\n throw new Error(\"Endpoint secret is required\");\n }\n\n if (!signature) {\n throw new Error(\"Signature is required\");\n }\n\n let bodyText = bodyAsBuffer.toString();\n\n let expectedSignature = createHmac(\"sha256\", endpointSecret)\n .update(bodyText)\n .digest(\"hex\");\n\n if (signature !== expectedSignature) {\n console.error(\n `Unable to construct event. Signature mismatch.`,\n signature,\n \"!=\",\n expectedSignature\n );\n throw new Error(`Unable to construct event. Signature mismatch.`);\n }\n\n try {\n return JSON.parse(bodyText) as WebhookEvent<T>;\n } catch (e) {\n throw new Error(`Unable to construct event. ${e}`);\n }\n },\n };\n\n return webhooks;\n}\n\nexport type Webhooks = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { CphLookupResponse } from \"../types\";\n\nexport default function create(httpClient: HttpClient) {\n return {\n lookup: async (marketId: string, cph: string) =>\n httpClient.get<CphLookupResponse>(`/${marketId}/cph`, { cph }),\n };\n}\n\nexport type Cph = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { CustomerContact } from \"../types\";\n\nexport interface ListContactsResponse {\n contacts: CustomerContact[];\n lastId: string | null;\n hasMore: boolean;\n}\n\nexport interface CreateOrUpdateContactPayload {\n id?: string;\n displayName?: string | null;\n email?: string | null;\n phoneNumber?: string | null;\n notes?: string | null;\n marteyeUid?: string | null;\n accountEmails?: boolean;\n marketingEmails?: boolean;\n}\n\nexport default function create(httpClient: HttpClient) {\n return {\n list: async (\n marketId: string,\n customerId: string,\n params?: { lastId?: string; limit?: number }\n ): Promise<ListContactsResponse> => {\n const query: Record<string, any> = {};\n if (params?.lastId) query.lastId = params.lastId;\n if (params?.limit) query.limit = params.limit;\n return httpClient.get<ListContactsResponse>(\n `/${marketId}/customers/${customerId}/contacts`,\n query\n );\n },\n get: async (marketId: string, customerId: string, contactId: string) => {\n return httpClient.get<CustomerContact>(\n `/${marketId}/customers/${customerId}/contacts/${contactId}`\n );\n },\n create: async (\n marketId: string,\n customerId: string,\n payload: CreateOrUpdateContactPayload\n ) => {\n return httpClient.post<CustomerContact>(\n `/${marketId}/customers/${customerId}/contacts`,\n payload\n );\n },\n update: async (\n marketId: string,\n customerId: string,\n contactId: string,\n payload: CreateOrUpdateContactPayload\n ) => {\n return httpClient.post<CustomerContact>(\n `/${marketId}/customers/${customerId}/contacts/${contactId}`,\n payload\n );\n },\n delete: async (marketId: string, customerId: string, contactId: string) => {\n return httpClient.delete<void>(\n `/${marketId}/customers/${customerId}/contacts/${contactId}`\n );\n },\n };\n}\n\nexport type Contacts = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\n\nexport interface LedgerBalanceResponse {\n balanceInCents: number;\n}\n\nexport default function create(httpClient: HttpClient) {\n let ledger = {\n /**\n * Get the current balance for a ledger account\n * @param marketId - ID of the market\n * @param account - Full account string (format: owner:accountType:accountName)\n * e.g. \"customerId:asset:trade receivable\" or \"market:liability:trade payable\"\n * @returns The current balance in cents\n */\n getBalance: async (\n marketId: string,\n account: string\n ): Promise<LedgerBalanceResponse> => {\n return httpClient.get<LedgerBalanceResponse>(\n `/${marketId}/ledger/balance`,\n { account }\n );\n },\n };\n\n return ledger;\n}\n\nexport type Ledger = ReturnType<typeof create>;\n","import type { HttpClient } from \"./net/http\";\n\nimport actions from \"./resources/actions\";\nimport adjustments from \"./resources/adjustments\";\nimport carts from \"./resources/carts\";\nimport extras from \"./resources/extras\";\nimport bidderApplications from \"./resources/bidderApplications\";\nimport customers from \"./resources/customers\";\nimport files from \"./resources/files\";\nimport invoices from \"./resources/invoices\";\nimport lotItems from \"./resources/lotItems\";\nimport lots from \"./resources/lots\";\nimport markets from \"./resources/markets\";\nimport payments from \"./resources/payments\";\nimport payouts from \"./resources/payouts\";\nimport productCodes from \"./resources/productCodes\";\nimport sales from \"./resources/sales\";\nimport saleTemplates from \"./resources/saleTemplates\";\nimport search from \"./resources/search\";\nimport settings from \"./resources/settings\";\nimport taxRates from \"./resources/taxRates\";\nimport webhooks from \"./resources/webhooks\";\nimport cph from \"./resources/cph\";\nimport contacts from \"./resources/contacts\";\nimport ledger from \"./resources/ledger\";\n\nexport default function resources(httpClient: HttpClient) {\n return {\n markets: markets(httpClient),\n sales: sales(httpClient),\n lots: lots(httpClient),\n lotitems: lotItems(httpClient),\n carts: carts(httpClient),\n cph: cph(httpClient),\n webhooks: webhooks(httpClient),\n actions: actions(httpClient),\n bidderApplications: bidderApplications(httpClient),\n settings: settings(httpClient),\n adjustments: adjustments(httpClient),\n extras: extras(httpClient),\n productCodes: productCodes(httpClient),\n saleTemplates: saleTemplates(httpClient),\n taxRates: taxRates(httpClient),\n customers: customers(httpClient),\n invoices: invoices(httpClient),\n payments: payments(httpClient),\n payouts: payouts(httpClient),\n search: search(httpClient),\n files: files(),\n contacts: contacts(httpClient),\n ledger: ledger(httpClient),\n };\n}\n","import getFetch from \"./net/fetch\";\nimport HttpClient from \"./net/http\";\nimport Resources from \"./resources\";\n\nconst BaseUrl = \"https://app.marteyestudio.com/api\";\nconst DefaultTimeout = 10000;\n\nexport type StudioInstance = ReturnType<typeof Resources> & {\n isDebugMode: boolean;\n};\n\nexport function Studio(\n info: {\n apiKey?: string;\n baseUrl?: string;\n defaultTimeout?: number;\n debug?: boolean;\n } = {}\n) {\n let apiKeyOrNull = info.apiKey ?? process.env.STUDIO_API_KEY;\n if (!apiKeyOrNull) {\n throw new Error(\"Studio API key is not set\");\n }\n\n let infoWithDefaults = {\n apiKey: apiKeyOrNull,\n baseUrl: info.baseUrl ?? BaseUrl,\n defaultTimeout: info.defaultTimeout ?? DefaultTimeout,\n debug: info.debug ?? false,\n };\n\n let httpClient = HttpClient(\n infoWithDefaults.baseUrl,\n infoWithDefaults.apiKey,\n getFetch(),\n infoWithDefaults.defaultTimeout,\n infoWithDefaults.debug\n );\n\n return {\n ...Resources(httpClient),\n isDebugMode: infoWithDefaults.debug,\n };\n}\n","type Timestamp = string; // ISO 8601\r\n\r\n// dicates vat and commission applicatble to the line item\r\nexport type ClientType = \"Seller\" | \"Buyer\";\r\n\r\nexport type SuperType =\r\n | \"Sheep\"\r\n | \"Goats\"\r\n | \"Cattle\"\r\n | \"Pigs\"\r\n | \"Horses\"\r\n | \"Deer\"\r\n | \"Poultry\"\r\n | \"Machinery\"\r\n | \"Antiques\"\r\n | \"Other\";\r\n\r\nexport const SupportedSuperTypes: SuperType[] = [\r\n \"Sheep\",\r\n \"Goats\",\r\n \"Cattle\",\r\n \"Pigs\",\r\n \"Horses\",\r\n \"Deer\",\r\n \"Poultry\",\r\n \"Machinery\",\r\n \"Antiques\",\r\n \"Other\",\r\n];\r\nexport const LivestockSuperTypes: SuperType[] = [\r\n \"Sheep\",\r\n \"Goats\",\r\n \"Cattle\",\r\n \"Pigs\",\r\n \"Horses\",\r\n \"Deer\",\r\n \"Poultry\",\r\n];\r\n\r\nexport type Currency = \"GBP\" | \"EUR\" | \"USD\";\r\nexport const SupportedCurrencyCodes: Currency[] = [\"GBP\", \"EUR\", \"USD\"];\r\n// ISO 3166-2:GB\r\nexport type SupportedCountryCode =\r\n | \"GB-ENG\"\r\n | \"GB-SCT\"\r\n | \"GB-WLS\"\r\n | \"GB-NIR\"\r\n | \"IE\";\r\nexport type CurrenciesWithGuinea = Currency | \"GUINEA-GBP\";\r\n\r\nexport type UnitOfSale =\r\n | \"Per KG\"\r\n | \"Per Item\" /* aka 'per head'*/\r\n | \"Per Lot\"\r\n | \"Per 1000KG\";\r\nexport const SupportedUnitsOfSale: UnitOfSale[] = [\r\n \"Per KG\",\r\n \"Per Item\",\r\n \"Per Lot\",\r\n \"Per 1000KG\",\r\n];\r\nexport type PaymentMethod =\r\n | \"BACS\"\r\n | \"Cheque\"\r\n | \"BankTransfer\"\r\n | \"Cash\"\r\n | \"Card\"\r\n | \"Credit\"; // contra\r\n\r\nexport type InvoiceDeliveryPreference = \"email\" | \"printed\" | \"both\";\r\nexport type PayoutMethod = \"BACS\" | \"Cheque\" | \"Cash\";\r\n\r\nexport const SupportedPaymentMethods: PaymentMethod[] = [\r\n \"BACS\",\r\n \"Cheque\",\r\n \"BankTransfer\",\r\n \"Cash\",\r\n \"Card\",\r\n \"Credit\",\r\n];\r\n\r\nexport interface Market {\r\n id: string;\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n\r\n name: string;\r\n description: string;\r\n\r\n logo: string;\r\n primaryColour: string;\r\n secondaryColour: string;\r\n\r\n countryCode: SupportedCountryCode;\r\n\r\n address: Address;\r\n\r\n telephone?: string;\r\n vatNumber?: string;\r\n email?: string;\r\n\r\n movementLocationNumbers?: {\r\n number: string;\r\n type: \"CPH\" | \"Herd Number\" | \"Flock Number\" | \"Other\";\r\n // the issuing country that the holding number is valid for\r\n createdAt: Timestamp;\r\n }[];\r\n\r\n // Displayed on the invoice and other documents\r\n paymentInstructions?: string;\r\n\r\n // --/ settings\r\n}\r\n\r\nexport interface SettingsMarketDefaults {\r\n updatedAt: Timestamp;\r\n updatedBy: string | null;\r\n marketId: string;\r\n\r\n name: string;\r\n description: string;\r\n address: Address;\r\n defaultCurrency: Currency;\r\n defaultPayoutPreference: PayoutMethod;\r\n defaultUnitOfSale: UnitOfSale; // the fallback if the product code doesn't have one\r\n\r\n defaultSuperType?: SuperType | null;\r\n defaultSettleDebtsFirst?: boolean;\r\n\r\n // When enabled, emails are sent to actual customers. When disabled, emails are redirected to the market email address.\r\n liveEmailsEnabled?: boolean;\r\n\r\n lotDescriptionTemplateMap?: {\r\n default: string | undefined;\r\n [supertype: string]: string | undefined;\r\n };\r\n\r\n rostrumAttributesMap?: {\r\n default: string[] | undefined;\r\n [supertype: string]: string[] | undefined;\r\n };\r\n\r\n // When printing all docs are not selected by default\r\n // You can override that here for whole classes of supertypes\r\n // Add the ID to deselect it when printing. This can be overridden product code\r\n // the most specific setting will be used\r\n selectDocumentIdsMap: {\r\n [supertype: string]: string[];\r\n };\r\n}\r\n\r\nexport interface SettingsProductCodes {\r\n [code: string]: ProductCodeConfiguration;\r\n}\r\n\r\nexport interface SettingsTaxRates {\r\n [id: string]: TaxRate;\r\n}\r\n\r\nexport interface SettingsAdjustmentsConfiguration {\r\n [id: string]: AdjustmentsConfiguration;\r\n}\r\n\r\nexport interface SettingsAccessories {\r\n [id: string]: Accessory;\r\n}\r\n\r\nexport interface SettingsPrinters {\r\n [id: string]: Printer;\r\n}\r\n\r\nexport type DeviceType = \"globeWeigh\" | \"allflexRaceReader\";\r\n\r\nexport interface Accessory {\r\n deviceId: string;\r\n deviceType: DeviceType;\r\n friendlyName: string;\r\n endOfMessagePattern: string;\r\n host: string;\r\n isEnabled: boolean;\r\n port: number;\r\n regex: string;\r\n saleProfileId: string;\r\n timeoutMs: number;\r\n updatedAt: Timestamp;\r\n createdAt: Timestamp;\r\n}\r\n\r\n/**\r\n * @description Configuration for the printer\r\n */\r\nexport interface Printer {\r\n id: string; // our unique id for the printer may include Tray at end if multiple trays\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n\r\n /**\r\n * @description The name of the printer. Its the same as the id\r\n */\r\n name: string; // name of the printer which is used by pdf-to-printer\r\n friendlyName: string; // friendly name e.g. Printer In Office\r\n /**\r\n * Optional single IPP URI if linked by IP discovery\r\n */\r\n uri?: string;\r\n chequePrinter?: boolean;\r\n /**\r\n * The next cheque number to use when printing a cheque\r\n */\r\n nextChequeNumber?: number;\r\n lastPrintedAt?: Timestamp;\r\n lastPrinterMessage?: string;\r\n}\r\n\r\n// in global studio settings\r\nexport interface SettingsGlobalAttributes {\r\n [id: string]: AttributeDefinition;\r\n}\r\n\r\nexport type AttributeValueType =\r\n | string\r\n | number\r\n | boolean\r\n | Timestamp\r\n | Media\r\n | Media[];\r\n\r\n/****\r\n * Used to grant a user access to a market.\r\n * Each member of staff should have their own.\r\n */\r\nexport interface MemberSharingConfiguration {\r\n uid: string;\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n\r\n displayName?: string;\r\n photoURL?: string;\r\n\r\n marketId: string;\r\n // only one owner per market.\r\n role: \"Owner\" | \"Admin\" | \"Editor\";\r\n}\r\n\r\nexport type DisplayBoardMode =\r\n | \"off\"\r\n | \"live\"\r\n | \"manual\"\r\n | { type: \"focused\"; field: string };\r\n\r\nexport type SalePublishStatus = \"unpublished\" | \"sale\" | \"catalogPublished\";\r\n\r\nexport interface Sale {\r\n id: string;\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n updatedBy?: string | null;\r\n\r\n startsAt: Timestamp;\r\n\r\n closedAt?: Timestamp | null;\r\n\r\n // The owner of the sale\r\n marketId: string;\r\n\r\n // \"Weekly Dairy Sale\" / \"Fat Lambs, Hoggets & Fat Ewes\" etc\r\n name: string;\r\n\r\n recurring?: null | \"Weekly\" | \"Bi-weekly\" | \"Monthly\";\r\n\r\n defaultProductCode: string;\r\n\r\n /**\r\n * Default attributes values for any new lot item\r\n */\r\n attributeDefaults?: {\r\n [attributekey: string]: AttributeValueType;\r\n };\r\n\r\n /**\r\n * the codes that are allowed for the sale\r\n */\r\n availableProductCodes: string[];\r\n\r\n /**\r\n * the supertypes from the product codes. e..g Cattle, Sheep, Pigs etc\r\n */\r\n superTypes: SuperType[];\r\n\r\n // Either the string ID for a known item attibute (begins with an @) or a custom attribute\r\n attributeSet: AttributeDefinition[];\r\n\r\n // Not all attributes are valid for all products\r\n attributeSetByProductCode: {\r\n [code: string]: string[];\r\n };\r\n\r\n // The ID of the group of lots that are currently being sold (for a live sale)\r\n currentLotGroup?: string | null;\r\n // The ID of the group of lots that are currently being displayed on the display board\r\n // The null if you want it live and to follow currentLotGroup\r\n displayBoardLotGroup?: string | null | \"BLANK\";\r\n // The ID of the group the clerk has queued up next\r\n nextLotGroup?: string | null;\r\n\r\n /**\r\n * Auto queue the next lot when the current lot is sold in rostrum\r\n */\r\n autoQueue?: boolean;\r\n\r\n /**\r\n * The sale profile ID to use for this sale. Which is used to find settings specific devices and printers etc.\r\n */\r\n saleProfileId?: string | null;\r\n\r\n /**\r\n * Show the display board\r\n */\r\n displayBoard?: boolean;\r\n\r\n /**\r\n * The display board mode (off, live, manual, or focused on a field)\r\n */\r\n displayBoardMode?: DisplayBoardMode;\r\n\r\n /// folllow on sale ? TBD\r\n\r\n // MartEye Live details\r\n martEyeId?: string | null; // null === not on MartEye\r\n marteyeSettings?: MartEyeTimedSaleSettings | MartEyeLiveSaleSettings | null;\r\n\r\n stats?: {\r\n lots: {\r\n count: number;\r\n sold: number;\r\n invoiced: number;\r\n valueInCents: number;\r\n };\r\n lotItems: {\r\n count: number;\r\n };\r\n customers: {\r\n count: number;\r\n buyers: number;\r\n sellers: number;\r\n };\r\n };\r\n\r\n // The market members that have edited the sale\r\n editedBy?: string[];\r\n\r\n /**\r\n * Publishing status for external systems\r\n * - unpublished: Not listed in external system\r\n * - sale: Sale date is listed externally\r\n * - catalogPublished: Sale and catalog information synced\r\n */\r\n publishStatus?: SalePublishStatus;\r\n}\r\n\r\nexport interface TemplateSaleData {\r\n name?: string;\r\n description?: string | null;\r\n image?: string | null;\r\n location?: string | null;\r\n martEyeSaleType?: \"LIVE\" | \"TIMED\" | null;\r\n cover?: string | null;\r\n availableProductCodes: string[];\r\n attributeDefaults?: {\r\n [attributekey: string]: AttributeValueType;\r\n };\r\n marteyeSettings?: MartEyeTimedSaleSettings | MartEyeLiveSaleSettings | null;\r\n}\r\n\r\nexport interface SaleTemplate {\r\n id: string;\r\n marketId: string;\r\n name: string;\r\n description?: string | null;\r\n sourceSaleId?: string;\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n createdBy: string;\r\n saleData: TemplateSaleData;\r\n lotGridConfigs?: {\r\n [configId: string]: StoredDataGridConfig;\r\n };\r\n}\r\n\r\nexport interface StoredDataGridConfig {\r\n widths?: { [key: string]: number };\r\n hiddenColumnIds: string[];\r\n columnOrder: string[];\r\n}\r\n\r\nexport interface MartEyeLiveSaleSettings {\r\n description?: string;\r\n image?: string;\r\n logo?: string;\r\n type: \"LIVE\";\r\n\r\n // If you want to oveeride the marts name as the location\r\n location?: string | null;\r\n\r\n // Optional free text used in the info tab on the catalogue page\r\n descriptionLines?: string[];\r\n // optional link to an external catalogue\r\n descriptionLink?: string;\r\n\r\n deposit?: number;\r\n\r\n // true if prices should be hidden after the sale\r\n hidePrices?: boolean;\r\n\r\n // true if we dont want to show replay videos\r\n hideReplay?: boolean;\r\n\r\n labels?: string[];\r\n tags?: string[];\r\n\r\n // if the marteye lots should be queued in order they are in in studio\r\n queueLots?: boolean;\r\n}\r\n\r\nexport interface MartEyeTimedSaleSettings {\r\n description?: string;\r\n // URL of the image to display on the tile\r\n image?: string;\r\n // An override for the logo on the tile\r\n logo?: string;\r\n type: \"TIMED\";\r\n\r\n /**\r\n * The moment the staggered closing sequence should begin.\r\n * The first lot will close at this time, with subsequent lots\r\n * offset by `staggerSeconds` each.\r\n */\r\n closingStartsAt: Timestamp;\r\n\r\n /**\r\n * The number of seconds to offset each subsequent lot’s closing time\r\n * from the previous one.\r\n * Example: 30 → lot #1 closes at `closingStartsAt`, lot #2 at +30 s, lot #3 at +60 s …\r\n */\r\n staggerSeconds: number;\r\n\r\n /**\r\n * The location of the sale. This could be a physical location Ring 1 / Ring 2 / Farm Address etc\r\n */\r\n location?: string | null;\r\n\r\n // The details to go on the front page\r\n details?: { markdownBase64: string; title: string }[];\r\n\r\n // the url for the cover image\r\n cover?: string;\r\n\r\n // dominant colour used for things like the nav bar\r\n primaryColour?: string;\r\n // used for things like the tab bar\r\n secondaryColour?: string;\r\n // the colour used for text or tabbar indicator\r\n foregroundColour?: string;\r\n\r\n // The number of seconds to extend a lot by when there's a last min bid\r\n extensionTime: number;\r\n\r\n // the increments and break points to go up in\r\n incrementLadder: IncrementLadder;\r\n\r\n // if true remove the nav bar on desktop\r\n hideNav?: boolean;\r\n\r\n // a link to send people to when they click the sign in button\r\n signInOverrideLink?: string;\r\n\r\n // should show on main page\r\n published?: boolean;\r\n\r\n // true if should pin to the top of the list\r\n pin?: boolean;\r\n\r\n // labels to show on the tile. Different to tags\r\n labels?: string[];\r\n\r\n // if provided will request that the user submits a deposit\r\n deposit?: number;\r\n\r\n // If true each lot will only being ending once the one before it has closed\r\n cascade?: boolean;\r\n\r\n // comma seperated people to send the report to\r\n reportEmail?: string;\r\n}\r\n\r\nexport type IncrementLadder = IncrementLadderItem[];\r\n\r\nexport interface IncrementLadderItem {\r\n max: number;\r\n increment: number;\r\n}\r\n\r\nexport interface SaleFromSearch\r\n extends Omit<Omit<Omit<Sale, \"createdAt\">, \"updatedAt\">, \"startsAt\"> {\r\n createdAt: number;\r\n updatedAt: number;\r\n startsAt: number;\r\n}\r\n\r\nexport type LotSaleStatus = \"Sold\" | \"Unsold\" | \"Rerun\" | \"Resold\" | null;\r\n\r\nexport interface Lot {\r\n id: string; // unique for the sale? Could be saleId + lotNumber\r\n saleId: string;\r\n marketId: string;\r\n\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n updatedBy?: string | null;\r\n\r\n // the item code of the lot. This is used to determine the commission rate and the display board\r\n // a lot can only contain items with the same product code (you can think of it as a product type)\r\n productCode: string;\r\n // / Set by a cloud function\r\n superType?: SuperType;\r\n // subtype?: ProductSubtype;\r\n isLivestock?: boolean;\r\n // \\ Set by a cloud function\r\n\r\n attributes: {\r\n [key: string]: AttributeValueType;\r\n };\r\n\r\n // if present here than the attribute is loading in\r\n // remove to signify it has loaded\r\n loadingAttributes?: {\r\n [attributePath: string]: {\r\n id: string;\r\n // time loading began\r\n startAt: Timestamp;\r\n // the path to the attribute (may be on an item)\r\n path: string;\r\n };\r\n };\r\n\r\n itemMap: {\r\n [itemId: string]: LotItem;\r\n };\r\n\r\n sellerCasual?: string | null;\r\n sellerCustomerId: string | null;\r\n seller?: ShortCustomerDetails;\r\n\r\n lotNumber?: string | null;\r\n // The sort order of the lot within the sale\r\n index: number;\r\n // More than one lot can be sold in the ring at once. This groups the lots. Convention to use the earliest lot number in the group as the group ID\r\n group?: string;\r\n\r\n // Free text description of the lot. Intended to be customer facing.\r\n remarks?: string;\r\n\r\n // free text notes, not customer facing possible not needed.\r\n notes?: string;\r\n\r\n // Sale config\r\n currency: CurrenciesWithGuinea;\r\n\r\n unitOfSale: UnitOfSale;\r\n\r\n reservePriceInCents?: number | null;\r\n startingPriceInCents?: number | null;\r\n\r\n // --- Sale record\r\n\r\n unitPriceInCents?: number;\r\n\r\n // This could be any free text that the clerk input on the rostrum. It can be thought of as a note for someone to look up the actual buyer later\r\n buyerCasual?: string | null;\r\n buyerCustomerId: string | null;\r\n buyer?: ShortCustomerDetails | null;\r\n\r\n // The time the lot entered and left the ring\r\n startAt?: Timestamp;\r\n endAt?: Timestamp;\r\n\r\n // must be set, the null used to find records that have not been invoiced\r\n sellerInvoiceId: string | null;\r\n sellerInvoiceNumber?: number | undefined | null;\r\n // must be set, used to find records that have not been invoiced\r\n buyerInvoiceId: string | null;\r\n buyerInvoiceNumber?: number | undefined | null;\r\n\r\n // If an invoice is voided, we keep a record of the ID here\r\n voidedSellerInvoiceIds?: string[];\r\n voidedBuyerInvoiceIds?: string[];\r\n\r\n // in the case when a lot is unsold.\r\n // The seller gets and invoice but the buyer does not.\r\n saleStatus?: LotSaleStatus;\r\n // ignore the result of this lot. Likely because rerun or resold\r\n void?: boolean;\r\n // if this lot was created from a rerun or resell, this is the ID of the original lot\r\n originalLot?: string;\r\n\r\n // -- /Sale record\r\n\r\n metadata: {\r\n [key: string]: any;\r\n };\r\n\r\n // These are controlled by a cloud function\r\n generated?: LotGeneratedValues;\r\n\r\n // Issues with a lot can be raised asyncronously and resolved later.\r\n issues?: {\r\n [issueId: string]: LotIssue;\r\n };\r\n\r\n resolvedIssues?: {\r\n [issueId: string]: LotIssue;\r\n };\r\n\r\n /***\r\n * Default values for any new lot item\r\n */\r\n itemAttributeDefaults?: {\r\n [attributekey: string]: AttributeValueType;\r\n };\r\n}\r\n\r\ntype LotIssueCode =\r\n | \"unknown-attribute\" // attribute ID is invalid or not setup for this sale\r\n | \"validation-error\" // serverside validation error\r\n | \"staff-flagged\"; // a staff member has raised an issue with the lot that needs to be resovled\r\n\r\nexport interface LotIssue {\r\n id: string;\r\n // optional. If the issue is specific to an item then this is the ID of the item\r\n itemId?: string | null;\r\n // optional. The path to the parameter that caused the issue\r\n path?: string | null;\r\n code: LotIssueCode;\r\n // The issue description\r\n description: string;\r\n // The issue severity\r\n severity: \"error\" | \"warning\" | \"info\";\r\n createdAt: Timestamp;\r\n // Who created the issue\r\n createdBy: string;\r\n // If there is an approval required for this lo\r\n blockCheckout: boolean;\r\n}\r\n\r\nexport interface LotWithItemsAsArray extends Omit<Lot, \"itemMap\"> {\r\n items: LotItem[];\r\n}\r\n\r\nexport interface LotGeneratedValues {\r\n // The total value of the lot in cents\r\n totalValueInCents?: number | null;\r\n\r\n // a description we can use in the cart and on the invoice\r\n description?: string | null;\r\n\r\n // We carry these through to the invoice as averages\r\n pricePerKiloInCents?: number | null;\r\n averageWeightKg?: number | null;\r\n pricePerItemInCents?: number | null;\r\n\r\n countOfItems?: number | null;\r\n\r\n // The position of the lot in the sale as sorted by the \"index\" value on the lot\r\n // eventually consistent with the index value\r\n ordinal?: number | null;\r\n}\r\n\r\n// To save a lookup to the customer document we store a copy of the customer details in the lot taken at the time it was added\r\n// Whilst the customer may change their details later it's actually a useful feature not to go back and update the lot with the change\r\nexport interface ShortCustomerDetails {\r\n // true if the customer record has been found and copied in\r\n // false if the customer could not be found\r\n isSet: boolean;\r\n\r\n id?: string;\r\n copiedInAt?: Timestamp;\r\n accountNumber?: string;\r\n bidderNumber?: number | null;\r\n displayName?: string;\r\n\r\n // unsued on everything but the market\r\n avatar?: string | null;\r\n}\r\n\r\n// note the item does not have it's own document in firestore. It exists inside the Lot\r\nexport interface LotItem {\r\n id: string; // unique ID but it wont be created by firestore\r\n\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n updatedBy?: string | null;\r\n index: number;\r\n\r\n attributes: {\r\n [key: string]: AttributeValueType;\r\n };\r\n\r\n notes: {\r\n id: string;\r\n text: string;\r\n createdAt: Timestamp;\r\n }[];\r\n\r\n metadata: {\r\n // Interesting things to add here could be:\r\n // - time the item was scanned in\r\n // - photos of the entry forms\r\n // - links to clips generated\r\n [key: string]: string | number | boolean | Timestamp | Media;\r\n };\r\n}\r\n\r\n/***\r\n * A market may offer other products and services. This is a way to track those.\r\n * They simply create a line item on the invoice\r\n *\r\n * /settings/products\r\n */\r\nexport interface Product {\r\n id: string;\r\n\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n marketId: string;\r\n\r\n name: string;\r\n taxRateId: string;\r\n defaultUnitPriceInCents: number;\r\n\r\n unitPriceIncludesVat?: boolean;\r\n\r\n // The type of client this config applies too. If empty applies to all client types\r\n applyToClients: ClientType[];\r\n\r\n // line items with the same code are given a subtotal for the group on the invoice\r\n subtotalGroup?: SubtotalGroups | null | undefined;\r\n\r\n // true if this product supports routing this money to another customer (say a dealer or haulier)\r\n passThroughFundsToAnotherCustomer?: boolean;\r\n\r\n // Is the product enabled\r\n isEnabled?: boolean;\r\n\r\n // if this product relates to a lot then this is the lot ID\r\n // e.g. dealer charge for a lot\r\n relatedTo?: { lotId: string; saleId: string } | null;\r\n\r\n // if true, and a relatedTo is set, then the funds will be added to the lot total on the invoice\r\n obfusicate?: boolean;\r\n\r\n metadata: {\r\n [key: string]: string | number | boolean | Timestamp | Media;\r\n };\r\n}\r\n\r\n/***\r\n * When a product is added to a cart it becomes a CartProductItem\r\n *\r\n *\r\n * markets/ballymena/carts/{userId}\r\n *\r\n * {id: CartItem}\r\n */\r\nexport interface CartItem {\r\n id: string; // unique ID but it wont be created by firestore\r\n\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n updatedBy?: string | null;\r\n\r\n marketId: string;\r\n customerId: string;\r\n\r\n // The ID of the product\r\n productId: string;\r\n\r\n clientType: ClientType;\r\n // The quantity of the product\r\n quantity: number;\r\n\r\n // The total price of the product\r\n unitPriceInCents: number;\r\n\r\n // If the product supports routing this money to another customer (say a dealer or haulier)\r\n // then this is the ID of the customer to send the funds to\r\n passthroughFundsToCustomerId?: string | null;\r\n\r\n generated?: {\r\n totalInCents: number;\r\n };\r\n}\r\n\r\n/***\r\n * Items have codes. And those codes are used to apply the correct commission rates, report movements etc.\r\n */\r\nexport interface ProductCodeConfiguration {\r\n // Unique for the market, is the ID for the document\r\n code: string;\r\n\r\n createdAt?: Timestamp;\r\n updatedAt?: Timestamp;\r\n updatedBy?: string | null;\r\n\r\n // Integrations will use this for determining if this item needs to have movements reported etc\r\n superType: SuperType;\r\n\r\n // subtype?: ProductSubtype;\r\n\r\n description: string;\r\n\r\n // Name for the icon to use in the UI\r\n icon?: string;\r\n\r\n // A set of expected attributes needed for the catalogue\r\n // attributes?: string[];\r\n\r\n metadata: {\r\n [key: string]: string | number | boolean | Timestamp | Media;\r\n };\r\n\r\n // -- invoices\r\n // - the following generate line items for the invoice.\r\n // - They can be removed or changed manually by the user\r\n\r\n // id for a TaxRate record\r\n // Users shoudl be able to override this on the invoice later\r\n // e.g. people may have different tax rates if they live in another country\r\n taxRateId: string;\r\n\r\n // groups up on the subtotal lines on the invoice\r\n // leave null if grouping isn't needed\r\n subtotalGroup?: SubtotalGroups | null;\r\n\r\n // extra charges to apply on the invoice (e.g. commission, levies etc)\r\n // IDs for AdjustmentsConfiguration records\r\n adjustmentIds: string[];\r\n\r\n // If the price is inclusive of VAT\r\n // We need to for IE as it is assumed the hammer price includes VAT\r\n // default false\r\n unitPriceIncludesVat?: boolean;\r\n\r\n totalExVatRebatePecentage?: number;\r\n\r\n // These carry over to the lots\r\n defaultCurrency?: CurrenciesWithGuinea; // if empty, defaults to market currency\r\n defaultUnitOfSale: UnitOfSale;\r\n\r\n // if provided, the lot will default to this product code when created\r\n // if the number is within this range\r\n defaultLotRange?: {\r\n min: number;\r\n max: number;\r\n };\r\n\r\n // These are copied over to new lots and lot items when created\r\n // item level attributes are prefixed \"@\"\r\n attributeDefaults?: {\r\n [attributekey: string]: AttributeValueType;\r\n };\r\n\r\n // A handlebars template to use for the description on the invoice\r\n lotDescriptionTemplate?: string;\r\n\r\n // The attributes we want editable on the rostrum active page\r\n rostrumAttributes?: string[];\r\n\r\n // When printing all docs are not selected by default\r\n // You can override that here for lots of this product code\r\n selectDocumentIds?: string[] | null;\r\n}\r\n\r\n/***\r\n * How the products are stored in settings\r\n */\r\nexport interface ProductConfiguration {\r\n [id: string]: Product;\r\n}\r\n\r\nexport interface Cart {\r\n customerId: string;\r\n updatedAt: Timestamp;\r\n itemsById: {\r\n [itemId: string]: CartItem;\r\n };\r\n}\r\n\r\nexport interface EmailWrapper {\r\n email: string;\r\n isVerified: boolean;\r\n createdAt: Timestamp;\r\n}\r\n\r\nexport interface PhoneNumberWrapper {\r\n phoneNumber: string;\r\n isVerified: boolean;\r\n createdAt: Timestamp;\r\n}\r\n\r\nexport interface AddressWrapper {\r\n address: Address;\r\n createdAt: Timestamp;\r\n updatedAt?: Timestamp;\r\n updatedBy?: string | null;\r\n}\r\n\r\nexport interface FarmAssurances {\r\n createdAt: Timestamp;\r\n updatedAt?: Timestamp;\r\n updatedBy?: string | null;\r\n memberReference: string;\r\n expiryDate: Timestamp;\r\n\r\n // TODO need the full list of scopes that Red Tractor use\r\n scope?: \"Beef\" | \"Dairy\" | \"Pork\" | \"Sheep\" | \"Other\";\r\n}\r\n\r\nexport type BankDetails = {\r\n accountName?: string; // Optional used to over ride the name of the account holder\r\n} & (\r\n | { accountNumber: string; sortCode: string; IBAN?: never } // Either accountNumber and sortCode without IBAN\r\n | { IBAN: string; accountNumber?: never; sortCode?: never }\r\n); // Or just IBAN without accountNumber and sortCode\r\n\r\nexport type CustomerBankDetails = BankDetails & {\r\n id?: string;\r\n createdAt?: Timestamp;\r\n updatedAt?: Timestamp;\r\n updatedBy?: string | null;\r\n};\r\n\r\nexport interface CustomerContact {\r\n id: string;\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n updatedBy?: string | null;\r\n marketId: string;\r\n displayName: string;\r\n email?: string | null;\r\n phoneNumber?: string | null;\r\n /** @deprecated */\r\n landlineNumber?: string | null;\r\n /** @deprecated */\r\n address?: Address;\r\n isPrimary?: boolean;\r\n isActive?: boolean;\r\n isDeleted?: boolean;\r\n isVerified?: boolean;\r\n accountEmails?: boolean;\r\n marketingEmails?: boolean;\r\n marteyeUid?: string | null;\r\n notes?: string | null;\r\n metadata?: {\r\n [key: string]: string | number | boolean | Timestamp | Media;\r\n };\r\n}\r\n\r\n/**\r\n * Used to store the bank details for a market\r\n */\r\nexport type MarketBankDetails = {\r\n name: string; // The bank account owner\r\n bankId: string; // virgin/hsbc etc\r\n address: Address;\r\n} & (\r\n | { accountNumber: string; sortCode: string; IBAN?: never } // Either accountNumber and sortCode without IBAN\r\n | { IBAN: string; accountNumber?: never; sortCode?: never }\r\n); // Or just IBAN without accountNumber and sortCode\r\n\r\nexport interface Customer {\r\n id: string;\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n\r\n updatedBy?: string | null;\r\n\r\n // The market this customer belongs to\r\n marketId: string;\r\n\r\n // Every market has one customer to represent themselves. If this it true this record is that account.\r\n // Another way to tell is that the ID for this document will be identical to the market ID\r\n isMarketAccount?: boolean;\r\n\r\n // The user's \"account\" with the market. Useful for quick look up + showing on invoices\r\n accountNumber?: string;\r\n // A unique number that can be used to identify the customer.\r\n // Possible that it's reset as soon as after each sale\r\n bidderNumber?: number | null;\r\n\r\n // Name for display purposes - can be a person's name or a business name\r\n displayName?: string | null;\r\n\r\n firstName?: string | null;\r\n lastName?: string | null;\r\n\r\n tradingName?: string | null;\r\n\r\n email?: EmailWrapper;\r\n phoneNumber?: PhoneNumberWrapper;\r\n /** @deprecated */\r\n otherPhoneNumbers?: PhoneNumberWrapper[];\r\n\r\n address: AddressWrapper;\r\n /** @deprecated */\r\n otherAddresses: {\r\n [addressId: string]: AddressWrapper;\r\n };\r\n\r\n photoURL?: string | null;\r\n\r\n payoutPreference?: PayoutMethod;\r\n invoiceDeliveryPreference?: InvoiceDeliveryPreference;\r\n statementDeliveryPreference?: InvoiceDeliveryPreference;\r\n bankDetails?: CustomerBankDetails | CustomerBankDetails[] | null;\r\n contacts?: CustomerContact[];\r\n\r\n // Attributes to add to the lot when the customer is the seller/buyer\r\n // Here we have an array of attribute values. The most latest used is added to the\r\n // 0 position in the array. The other values could be shown in a dropdown for the user to select\r\n attributeDefaultsBuyer?: {\r\n [attributekey: string]: AttributeValueType[];\r\n };\r\n attributeDefaultsSeller?: {\r\n [attributekey: string]: AttributeValueType[];\r\n };\r\n\r\n // If true any debt on the account will be paid down first before paying out out a credit balance (cheque/BACS etc)\r\n // defaults to true. Some markets call this \"contra\"\r\n preferSettleDebtsFirst?: boolean;\r\n\r\n // People may or may not have VAT numbers. This will affect the tax calculation on their bill.\r\n // the VAT number is used to determine the country and has prefix GB, IE, DE etc. for specific countries\r\n vatNumber?: string;\r\n\r\n metadata: {\r\n [key: string]: string | number | boolean | Timestamp | Media;\r\n };\r\n\r\n // If at any point this customer has bought or sold items in the market\r\n lastItemPurchaseDate?: Timestamp;\r\n lastItemSaleDate?: Timestamp;\r\n hasPurchasedItems?: boolean;\r\n hasSoldItems?: boolean;\r\n\r\n // Notes\r\n notes?: string;\r\n status?: \"archived\" | \"deleted\" | null;\r\n deleteAfter?: Timestamp;\r\n}\r\n\r\n// All Timestamps are replaced with a number\r\nexport interface CustomerFromSearch\r\n extends Omit<\r\n Customer,\r\n \"createdAt\" | \"updatedAt\" | \"lastItemPurchaseDate\" | \"lastItemSaleDate\"\r\n > {\r\n createdAt: number;\r\n updatedAt: number;\r\n\r\n // If at any point this customer has bought or sold items in the market\r\n lastItemPurchaseDate?: number;\r\n lastItemSaleDate?: number;\r\n}\r\n\r\nexport interface Application {\r\n id: string;\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n\r\n // The market this application belongs to\r\n marketId: string;\r\n\r\n // Application status\r\n status: \"pending\" | \"approved\" | \"rejected\";\r\n\r\n // Applicant details\r\n displayName: string;\r\n phoneNumber?: string;\r\n email?: string;\r\n\r\n // Address information\r\n address: {\r\n firstLine: string;\r\n secondLine?: string;\r\n county?: string;\r\n postCode: string;\r\n };\r\n\r\n // Marteye account information\r\n dateOfMarteyeAccountCreation?: Timestamp;\r\n hasWonLotsOnMarteye?: boolean;\r\n isApprovedAtOtherMarkets?: boolean;\r\n marteyeUid: string;\r\n\r\n // Additional information\r\n notes?: string;\r\n\r\n // Who approved/rejected the application\r\n approvedBy?: string;\r\n rejectedBy?: string;\r\n approvedAt?: Timestamp;\r\n rejectedAt?: Timestamp;\r\n}\r\n\r\nexport interface Address {\r\n id: string;\r\n nickname?: string;\r\n company?: string;\r\n firstName?: string;\r\n lastName?: string;\r\n address1: string;\r\n address2?: string;\r\n city: string;\r\n province?: string;\r\n zip: string;\r\n // ISO Country Code. Must include the sub-region if applicable (e.g. GB-ENG, GB-WLS, GB-NIR, GB-SCT)\r\n // this is the part that is needed for calculating tax on the invoice\r\n country: string;\r\n}\r\n\r\nexport const IMAGE_SIZES_VALUES = [\"small\", \"medium\", \"large\"] as const;\r\n\r\nexport const VIDEO_TASKS_VALUES = [\"compressed\", \"thumbnail\"] as const;\r\n\r\nexport type ImageSizes = (typeof IMAGE_SIZES_VALUES)[number];\r\nexport type VideoTasks = (typeof VIDEO_TASKS_VALUES)[number];\r\n\r\nexport type SupportedFileTypesNames = \"image\" | \"video\" | \"file\";\r\n\r\nexport interface Media {\r\n id: string;\r\n fileName: string;\r\n path: string;\r\n url: string;\r\n fileType: string; // mimeType\r\n variants: Partial<\r\n Record<\r\n ImageSizes | VideoTasks,\r\n {\r\n url: string;\r\n isLocal?: boolean;\r\n isProcessing: boolean;\r\n type: SupportedFileTypesNames;\r\n }\r\n >\r\n >;\r\n}\r\n\r\n//// --- Report Headers --- ////\r\n\r\nexport type MarketReportHeaders =\r\n | \"grossServices\"\r\n | \"vatOnServices\"\r\n | \"grossGoods\"\r\n | \"vatOnGoods\"\r\n | \"netTotal\"\r\n | \"contra\";\r\n\r\n// --- Invoices ---\r\n/**\r\n * Content types which will denote the position of the data on the invoice wihth out with a cheque\r\n */\r\n\r\n// a type used to define the position of the fields on the cheque\r\nexport type FieldPositions = {\r\n id: ChequeField | InvoiceField;\r\n x: number;\r\n y: number;\r\n};\r\n\r\nexport type InvoiceField =\r\n | \"invoiceNumber\"\r\n | \"invoiceDate\"\r\n | \"description\"\r\n | \"lotNumber\"\r\n | \"quantity\"\r\n | \"weight\"\r\n | \"unitPrice\"\r\n | \"grossLineTotal\"\r\n | \"accountRef\"\r\n | \"accountName\"\r\n | \"businessAddress\"\r\n | \"customerAddress\"\r\n | \"lineItemsStartLine\" // the line that table items start at\r\n | \"footerBoundaryLine\" // this marks the line of the cheque break if used\r\n | \"vatNumber\"\r\n | \"saleName\"\r\n | \"subTotal\" // the column of subtotals e.g. vat, livestock etc\r\n | \"subTotalTable\" // the table of subtotals e.g. vat, livestock etc\";\r\n | \"tagList\"\r\n | \"tagNumber\";\r\n\r\n// a list of fields that can be used to generate a cheque\r\nexport type ChequeField =\r\n | \"chequeDate\"\r\n | \"chequeNumber\"\r\n | \"payee\"\r\n | \"amount\"\r\n | \"amountInWords\"\r\n | \"hunderdsOfThousands\"\r\n | \"tensOfThousands\"\r\n | \"thousands\"\r\n | \"hundreds\"\r\n | \"tens\"\r\n | \"units\";\r\n\r\nexport type SubtotalGroups = \"Commission\" | string;\r\n\r\nexport type AdjustmentTotalTarget =\r\n | \"Per Invoice\"\r\n | \"Total - finalTotalInCents\"\r\n | \"Total - lotTotalLessCommissionInCentsExVat\";\r\n\r\nexport type AdjustmentTarget =\r\n | UnitOfSale\r\n // Apply after the totals have been calculated but before any other total adjustments\r\n | AdjustmentTotalTarget;\r\n\r\n/***\r\n * Commission is added as a line item. Can also be used for levies etc\r\n */\r\nexport interface AdjustmentsConfiguration {\r\n id: string;\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n updatedBy?: string | null;\r\n\r\n // a friendly name for the adjustment to be used in the UI\r\n name?: string | null;\r\n\r\n // // How the item appears on the invoice\r\n description?: string | null;\r\n\r\n // The type of client this config applies too. If empty applies to all client types\r\n applyToClients: ClientType[];\r\n\r\n // line items with the same code are given a subtotal for the group on the invoice\r\n subtotalGroup?: SubtotalGroups | null | undefined;\r\n\r\n // this dictates how the money is moved through the ledger\r\n // commission is an income for the market\r\n // a levy would be a \"liability\" as becomes a liability to be paid off later as an expense\r\n // \"vat-rebate\" will (eventually) move the money back into the VAT account\r\n type: \"commission\" | \"levy\" | \"vat-rebate\";\r\n\r\n // Selects where this commission config applies\r\n filter?: {\r\n // apply only to item with this currency\r\n currency?: CurrenciesWithGuinea | null;\r\n\r\n // Apply only between the min and max quantity range (inclusive).\r\n quantity?: {\r\n // default zero\r\n min?: number;\r\n // default Infinity\r\n max?: number;\r\n } | null;\r\n\r\n // Apply only between a min and max per item price\r\n unitPrice?: {\r\n // default zero\r\n minInCents?: number;\r\n // default Infinity\r\n maxInCents?: number;\r\n } | null;\r\n\r\n totalPrice?: {\r\n // default zero\r\n minInCents?: number;\r\n // default Infinity\r\n maxInCents?: number;\r\n } | null;\r\n\r\n // set true to apply this adjustment if a customer is vat registered in any tax region\r\n // false to apply if they are not vat registered\r\n // leave undefined or null to apply to all customers\r\n customerIsVATRegistered?: boolean | null;\r\n // set true to apply this adjustment if the customer is in the same tax region as the market\r\n // false to apply if they are not in the same tax region\r\n // leave undefined or null to apply to all customers\r\n customerWithinTaxRegion?: boolean | null;\r\n\r\n // Will apply if a lot or any items has the attribute key / value pair\r\n // e.g. \"onlineBuyer\" : true\r\n // note we only allow the simple attribute values\r\n attribute?: {\r\n key: string;\r\n // use null to filter for null or undefined values\r\n value: string | number | boolean | null;\r\n } | null;\r\n };\r\n\r\n // The ID of the tax rate that is applied to this adjustment\r\n taxRateId: string;\r\n\r\n adjustment: Adjustment & { target: AdjustmentTarget };\r\n}\r\n\r\ninterface Adjustment {\r\n percentage?: {\r\n // A value between 0-1.\r\n value?: number;\r\n // A minimum value the commision can be\r\n floorInCents?: number;\r\n // A cap for the heighest value a commision can be\r\n ceilingInCents?: number;\r\n } | null;\r\n\r\n // A single amount that is added if the filter applies.\r\n // Could be used for entry fees but likely need to seperate out the entry fee from the commission\r\n fixedAmountInCents?: number | null;\r\n\r\n // Ladder adjustment - allows different percentages at different value brackets\r\n ladder?: {\r\n steps: {\r\n // A percentage value between 0-1\r\n percentageValue?: number;\r\n // This step applies from the upToAmountInCents of the previous step (or zero) up to this upToAmountInCents\r\n // Use null to indicate no upper limit (infinity)\r\n upToAmountInCents?: number | null;\r\n }[];\r\n\r\n // A minimum commission value\r\n floorInCents?: number;\r\n // A cap for the heighest value a commision can be\r\n ceilingInCents?: number;\r\n };\r\n}\r\n\r\nexport interface LineItemAdjustmentConfiguration\r\n extends AdjustmentsConfiguration {\r\n adjustment: Adjustment & { target: UnitOfSale };\r\n}\r\n\r\n// specifically for targeting invoice totals\r\nexport interface InvoiceTotalAdjustmentConfiguration\r\n extends AdjustmentsConfiguration {\r\n adjustment: Adjustment & { target: AdjustmentTotalTarget };\r\n}\r\n\r\n/***\r\n * Tax config is used to generate the invoice but the user can still edit the invoice, overriding the final values.\r\n */\r\nexport interface TaxRate {\r\n id: string;\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n marketId: string;\r\n\r\n // description of the tax shown on the invoice\r\n description: string;\r\n\r\n // line items with the same code are given a subtotal for the group on the invoice\r\n // e.g. \"Tax on Services\" or \"VAT\"\r\n taxSubtotalGroup?: string | null;\r\n\r\n // A value between 0-1. This is the tax rate that will be applied\r\n percentage: number;\r\n\r\n // If true then this tax rate will override others if\r\n // customerIsVATRegistered === true\r\n // customerWithinTaxRegion === false\r\n //\r\n // (see the createDraftInvoice function)\r\n // There can be only one export tax rate. Validate in the UI.\r\n isExportTaxRate?: boolean;\r\n}\r\n\r\n// A payment into the market\r\nexport interface Payment {\r\n id: string;\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n updatedBy?: string;\r\n\r\n transactionDate: Timestamp;\r\n\r\n marketId: string;\r\n // the customer who made the payment\r\n customerId: string;\r\n method: PaymentMethod;\r\n\r\n // note currency is always assumed to be the market currency\r\n amountInCents: number;\r\n // Should be what will appear on the mart's bank statement\r\n // for a cheque this is the cheque number\r\n // for bacs this is the reference number\r\n // for card this is the transaction reference\r\n // not always present (e.g. cash)\r\n reference: string | null;\r\n\r\n status: \"complete\" | \"void\";\r\n\r\n voidedAt?: Timestamp | null;\r\n voidedBy?: string | null;\r\n voidReason?: string | null;\r\n\r\n // Invoices that this payment went toward\r\n invoiceIds: string[];\r\n invoices?: Array<{\r\n id: string;\r\n amountAppliedInCents?: number;\r\n }>;\r\n\r\n // The transactions that were created on the ledger for this\r\n transactionIds: string[];\r\n}\r\n\r\nexport interface Payout {\r\n id: string;\r\n marketId: string;\r\n\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n updatedBy: string | null;\r\n customerId: string;\r\n // Credit only allowed for payouts created by the system\r\n method: PayoutMethod | \"Credit\";\r\n amountInCents: number;\r\n\r\n invoices?: Array<{\r\n id: string;\r\n amountAppliedInCents?: number;\r\n }>;\r\n\r\n // for BACS these are present\r\n accountName?: string; // usually the customer's name\r\n accountNumber?: string;\r\n sortCode?: string;\r\n\r\n // for cheque these are present\r\n chequeMadePayableTo?: string;\r\n\r\n transactionDate: Timestamp;\r\n reference: string | null;\r\n status: \"pending\" | \"complete\" | \"void\";\r\n notes: string | null;\r\n\r\n completedAt?: Timestamp | null;\r\n completedBy?: string | null;\r\n\r\n voidedAt?: Timestamp | null;\r\n voidedBy?: string | null;\r\n voidReason?: string | null;\r\n\r\n // The transactions that were created on the ledger for this\r\n transactionIds: string[];\r\n\r\n // The invoices paid by this payout\r\n invoiceIds: string[];\r\n}\r\n\r\nexport interface DraftInvoice extends InvoiceTotals {\r\n // the ID is deterministic so saving can be made idempotent\r\n id: string;\r\n\r\n currency: Currency;\r\n\r\n status: \"draft\";\r\n\r\n // the time the invoice was sent\r\n issuedAt?: Timestamp;\r\n\r\n // the identifiers for the lots the invoice is for\r\n lotIdents: { lotId: string; saleId: string }[];\r\n // buyer or seller\r\n clientType: ClientType;\r\n\r\n customerId: string;\r\n customerAccountNumber: string;\r\n\r\n // The name of the customer or trading name to go on the invoice\r\n name: string;\r\n // The customer's address that was used for this invoice.\r\n // The address influences how tax is calculated\r\n address: Address;\r\n email: string | null;\r\n\r\n // the super type of the invoice sheep or cattle etc\r\n superTypes?: SuperType[];\r\n\r\n // The settings around tax used to generate the invoice\r\n customerIsVATRegistered: boolean;\r\n customerWithinTaxRegion: boolean;\r\n\r\n // the line items that make up the invoice\r\n lineItems: InvoiceLineItem[];\r\n // adjustments are added as line items. Can also be used for levies etc\r\n adjustmentLineItems: InvoiceLineItem[];\r\n\r\n // the vat number of the client is required for the invoice if its going for export\r\n vatNumber?: string;\r\n\r\n // the IDs for any extra products that were added onto this invoice\r\n extraProductIds: string[];\r\n\r\n // if a seller, the preferred payout method for this invoice\r\n payoutMethod?: PayoutMethod | null;\r\n payoutParams?: {\r\n // default true, if any debts should be tackled first\r\n settleDebtsFirst: boolean;\r\n\r\n // For BACS\r\n accountName?: string;\r\n accountNumber?: string;\r\n sortCode?: string;\r\n\r\n // For cheque\r\n chequeMadePayableTo?: string;\r\n };\r\n\r\n // The exact payouts wont be accurate until the invoice is finalised\r\n potentialPayoutsById?: {\r\n [payoutId: string]: {\r\n id: string;\r\n amountInCents: number;\r\n paymentMethod: PaymentMethod;\r\n invoice?: {\r\n // included if this payout will pay off an invoice\r\n id: string;\r\n invoiceNumber: number;\r\n fullyPaid: boolean;\r\n };\r\n };\r\n };\r\n\r\n // We may need to collect some info for the lots at checkout (e.g. destination address)\r\n // atrributes here will get set onto the relevant lots once the invoice is created\r\n attributeValues?: {\r\n [attributekey: string]: AttributeValueType;\r\n };\r\n\r\n // The attributes to collect\r\n attributes: AttributeDefinition[];\r\n\r\n // customisable, shown on the invoice\r\n averages?: { label: string; value: number; formattedValue: string }[];\r\n\r\n paymentInstructions?: string | null;\r\n}\r\n\r\nexport interface InvoiceTotals {\r\n //the lot total in cents\r\n lotTotalInCentsExVat: number;\r\n\r\n // the vat on the lot total in cents\r\n vatOnLotTotalInCents: number;\r\n\r\n // this calcluates the total commission from commissionLineItems exlusive of vat\r\n commissionTotalInCents?: number;\r\n // VAT on commission in cents. Needs to be seperate to allow for vat margin scheme\r\n vatOnCommissionInCents?: number;\r\n // the total adjustments from adjustmentLineItems exlusive of vat\r\n nonCommissionAdjustmentsInCents?: number;\r\n // VAT on adjustments in cents. Needs to be seperate to allow for vat margin scheme\r\n vatOnAdjustmentsInCents?: number;\r\n subtotalGroupTotals: {\r\n [key in SubtotalGroups]: number;\r\n };\r\n taxSubtotalGroupTotals: {\r\n [key in string]: number;\r\n };\r\n // the final total of the invoice after adjustments, commission and tax\r\n finalTotalInCents: number;\r\n}\r\n\r\n// Invoice\r\nexport interface SimplePaymentIn {\r\n paymentId: string;\r\n amountInCents: number;\r\n paymentMethod: PaymentMethod;\r\n reference: string | null;\r\n paidAt: Timestamp;\r\n}\r\n\r\n/**\r\n * Used on invoice to show the payout. Use payout collection for the source of truth\r\n */\r\nexport interface SimplePaymentOut {\r\n payoutId: string;\r\n amountInCents: number;\r\n paymentMethod: PaymentMethod;\r\n reference: string | null;\r\n paidAt: Timestamp;\r\n}\r\n\r\nexport interface Invoice\r\n extends Omit<\r\n Omit<\r\n Omit<Omit<DraftInvoice, \"ledgerAccountTotals\">, \"potentialPayoutsById\">,\r\n \"payoutParams\"\r\n >,\r\n \"status\"\r\n > {\r\n id: string;\r\n invoiceNumber: number;\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n updatedBy?: string | null;\r\n\r\n marketId: string;\r\n\r\n // a list of the sale IDs that this invoice was created for\r\n // needed for firebase querying\r\n saleIds: string[];\r\n sales: {\r\n // if this was created for a sale or group of sales then the sale id is included\r\n id: string;\r\n // the sale type. like EWES Sale, Store Sale etc,\r\n name?: string;\r\n startsAt?: Timestamp;\r\n }[];\r\n\r\n // The transactions that were created on the ledger for this invoice\r\n transactionIds?: string[];\r\n\r\n // issued- valid for seller (not cashed) and buyer ( not paid)\r\n status: \"draft\" | \"issued\" | \"void\" | \"imported\" | \"paid\";\r\n // TODO these aren't yet in place\r\n // | \"uncollectible\" | \"void\" | \"archived\";\r\n\r\n // A simplified copy of the Payment record that would have been created\r\n paymentsInById: {\r\n [paymentId: string]: SimplePaymentIn;\r\n };\r\n\r\n payoutMethod: PayoutMethod | null;\r\n payoutsById: {\r\n [payoutId: string]: SimplePaymentOut;\r\n };\r\n\r\n voidReason?: string;\r\n voidedAt?: Timestamp;\r\n voidedBy?: string;\r\n\r\n // a description of the invoice e.g. 'Invoice for 10 sheep'\r\n description?: string;\r\n\r\n // optional - if a haulier is involved in the sale then the haulier can be added here\r\n // their vehicle reg details and auth number will be pulled from their customer profile\r\n // haulierCustomerId?: string | null;\r\n\r\n // the footer text that appears on the invoice at the bottom. Can be used to add a note to the invoice like ppk or a note to the customer\r\n footnotes?: string[];\r\n\r\n metadata: {\r\n [key: string]: string | number | boolean | Timestamp | Media;\r\n };\r\n\r\n /***\r\n * this is important to add when adding an invoice\r\n * it creates a lock so we only ever get sequential invoice numbers\r\n * The invoice will have this as null until the next invoice is created\r\n */\r\n internalNextInvoiceId: string | null;\r\n\r\n // ID's of the email tasks that have been created for this invoice\r\n emailNotifications?: string[];\r\n\r\n // status of invoice emails per recipient\r\n emailStatus?: {\r\n recipient: string;\r\n status: \"sent\" | \"delivered\" | \"opened\" | \"bounced\";\r\n timestamp: Timestamp;\r\n }[];\r\n\r\n pitchPayLink: string | null;\r\n}\r\nexport interface Printer {\r\n name: string;\r\n id: string;\r\n}\r\n\r\nexport interface InvoiceLineItem {\r\n id: string;\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n\r\n // groups up on the subtotal lines on the invoice\r\n subtotalGroup?: SubtotalGroups | null;\r\n\r\n clientType: ClientType;\r\n\r\n description: string;\r\n\r\n // The sort order of the line item within the invoice\r\n index?: number;\r\n\r\n quantity: number;\r\n // The price of 1 item\r\n impreciseUnitPriceInCents: number;\r\n // helpful later for showing the price per unit\r\n unitOfSale?: UnitOfSale;\r\n unitPriceIncludesVat?: boolean;\r\n\r\n taxRate: TaxRate;\r\n taxAmountInCents: number;\r\n\r\n discountAmountInCents?: number;\r\n\r\n totalAmountInCentsExVat: number; // unitPriceInCents * quantity - discountAmountInCents\r\n\r\n // If this item relates to the sale of item(s)\r\n // handy for drilling down from an invoice to the specific items\r\n saleId?: string;\r\n lotId?: string;\r\n lotProductCode?: string;\r\n superType?: SuperType | null;\r\n // subtype?: ProductSubtype | null;\r\n // If this was a line item for an extra product\r\n productId?: string;\r\n // if this product applies to a lot then this is the lot ID\r\n productRelatedTo?: { lotId: string; saleId: string } | null;\r\n productObfusicate?: boolean;\r\n\r\n // The money for this line item goes to this account\r\n passthroughFundsToCustomerId?: string | null;\r\n\r\n // if this line was created from an adjustment\r\n adjustmentConfig?: AdjustmentsConfiguration;\r\n\r\n metadata: {\r\n [key: string]:\r\n | string\r\n | number\r\n | boolean\r\n | Timestamp\r\n | Media\r\n | { [key: string]: string | number | boolean | Timestamp };\r\n };\r\n}\r\n\r\n// table positions for the tables in invoice PDFs\r\nexport interface TablePosition {\r\n id: InvoiceField | ChequeField | MarketReportHeaders;\r\n title: string;\r\n cellWidth: number; // width of each cell. Each cell is cummulatively added to the x position to build table\r\n halign: \"left\" | \"center\" | \"right\";\r\n}\r\n\r\nexport type WebhookEventName =\r\n | \"market.updated\"\r\n | \"sale.created\"\r\n | \"sale.updated\"\r\n | \"sale.deleted\"\r\n | \"lot.created\"\r\n | \"lot.updated\"\r\n | \"lot.deleted\"\r\n | \"lot.media.created\"\r\n | \"lot.media.deleted\"\r\n | \"invoice.created\"\r\n | \"invoice.updated\"\r\n | \"invoice.deleted\"\r\n | \"payment.created\"\r\n | \"payment.updated\"\r\n | \"payment.deleted\"\r\n | \"payout.created\"\r\n | \"payout.updated\"\r\n | \"payout.deleted\"\r\n // customers\r\n | \"customer.created\"\r\n | \"customer.updated\"\r\n | \"customer.deleted\"\r\n // staff members\r\n | \"member.created\"\r\n | \"member.updated\"\r\n | \"member.deleted\";\r\n\r\nexport const supportedWebhookEvents = [\r\n \"market.updated\",\r\n \"sale.created\",\r\n \"sale.updated\",\r\n \"sale.deleted\",\r\n \"lot.created\",\r\n \"lot.updated\",\r\n \"lot.deleted\",\r\n \"lot.media.created\",\r\n \"lot.media.deleted\",\r\n \"invoice.created\",\r\n \"invoice.updated\",\r\n \"invoice.deleted\",\r\n \"payment.created\",\r\n \"payment.updated\",\r\n \"payment.deleted\",\r\n \"payout.created\",\r\n \"payout.updated\",\r\n \"payout.deleted\",\r\n // customers\r\n \"customer.created\",\r\n \"customer.updated\",\r\n \"customer.deleted\",\r\n // staff members\r\n \"member.created\",\r\n \"member.updated\",\r\n \"member.deleted\",\r\n] as const;\r\n\r\nexport type ObjectType =\r\n | \"market\"\r\n | \"sale\"\r\n | \"lot\"\r\n | \"invoice\"\r\n | \"payment\"\r\n | \"customer\"\r\n | \"member\";\r\n\r\n// The object that is sent to the recevier\r\nexport interface WebhookEvent<T> {\r\n id: string;\r\n createdAt: Timestamp;\r\n trigger: WebhookEventName;\r\n // the market the event relates to\r\n marketId: string;\r\n objectType: ObjectType;\r\n // note object ID not included as sub objects (like lots) need the sale ID too to be referenced. Better to get from the object itself\r\n // objectId: string\r\n data: {\r\n // the object the event relates to\r\n object: T;\r\n // the before / after change on the object\r\n objectBefore?: T;\r\n };\r\n}\r\n\r\nexport type SupportedAttributeTypes =\r\n | \"string\"\r\n | \"number\"\r\n | \"boolean\"\r\n | \"date\"\r\n | \"datetime\"\r\n | \"media\"\r\n | \"mediaset\"\r\n | \"time\";\r\n\r\nexport interface AttributeDefinition {\r\n // conventions\r\n // prefix with @ for item level attributes\r\n id: string;\r\n name: string;\r\n shortName?: string;\r\n description?: string;\r\n\r\n // The attribute in MartEye\r\n martEyeAttribute?: string;\r\n\r\n // An array of {countryCode}/{superType} that this attribute applies to\r\n // e.g. \"GB-NIR/Sheep\" or \"IE/Cattle\"\r\n applyTo: string[];\r\n\r\n // lot => set all items to the same value in the lot\r\n // item => the items can be different values\r\n level: \"item\" | \"lot\";\r\n\r\n // default false\r\n readonly?: boolean;\r\n\r\n // default false. If the attribute can be displayed in the MartEye app / other catalogues\r\n // public?: boolean;\r\n\r\n // if the group is set the attribute will be grouped with other attributes in the same group\r\n lotDetailFlyoutGroup?: string;\r\n\r\n // If the attribute should be set at the checkout phase we assign it to a group\r\n // to appear on the page\r\n buyerCheckoutGroup?: string;\r\n sellerCheckoutGroup?: string;\r\n\r\n // if true, the values for this attribute will be copied over the customer to be used as\r\n // defaults for their next sale. (think CPH or Flock number)\r\n buyerCustomerAttribute?: boolean;\r\n sellerCustomerAttribute?: boolean;\r\n\r\n // If true will hide on the column on the sale sheet\r\n defaultHiddenOnSaleSheet?: boolean;\r\n\r\n // Only if the seller and product code are the same.\r\n // Effective only on the QuickSheet.\r\n prefillableFromPreviousLot?: boolean;\r\n\r\n // If true, isn't shown at all in the lot flyout or the sale sheet.\r\n // Handy for system level attributes.\r\n hidden?: boolean;\r\n\r\n // If true, the attribute will be shown in the seller details panel\r\n // in the quicksheet and in the Rostrum\r\n showInSellerDetailsPanel?: boolean;\r\n\r\n // --- Templates\r\n\r\n // A template used to render the value in the sale sheet (and other places)\r\n displayTemplate?: string;\r\n // for when the level is item, there's more than one value and it's being viewed in a lot context\r\n displayTemplateMultiValue?: string;\r\n\r\n // --- /Templates\r\n\r\n // --- Validation\r\n\r\n type: SupportedAttributeTypes;\r\n\r\n // true if this is required before the price is set.\r\n requiredPreSale: boolean;\r\n\r\n // true if can't checkout without this attribute being valid\r\n // but not needed before the price is set\r\n requiredToCheckout: boolean;\r\n\r\n // validation for number attributes\r\n minValue?: number;\r\n maxValue?: number;\r\n\r\n // validation for string attributes\r\n minLength?: number;\r\n maxLength?: number;\r\n // a regex pattern to match against\r\n regexPattern?: string;\r\n\r\n // validation for date attributes\r\n // we use node-chrono for parsing these\r\n // all expressions are parsed against the sale start date\r\n // examples:\r\n // midnight today: \"2021-01-05T00:00:00.000Z\"\r\n // midnight: \"2021-01-05T00:00:00.000Z\"\r\n // noon: \"2021-01-05T12:00:00.000Z\"\r\n // midnight tomorrow: \"2021-01-06T00:00:00.000Z\"\r\n // yesterday: \"2021-01-04T01:00:00.000Z\"\r\n // next year: \"2022-01-05T01:00:00.000Z\"\r\n // 5 days from now: \"2021-01-10T01:00:00.000Z\"\r\n // 5 days ago: \"2020-12-31T01:00:00.000Z\"\r\n // 60 days ago: \"2020-11-06T01:00:00.000Z\"\r\n // 2 days from now: \"2021-01-07T01:00:00.000Z\"\r\n // 2021-01-01T00:00: \"2021-01-01T00:00:00.000Z\"\r\n minDateExpression?: string;\r\n maxDateExpression?: string;\r\n\r\n // if provided the attribute will only be allowed to be one of these values\r\n allowedValues?: string[];\r\n\r\n // ---/Validation\r\n}\r\n\r\n// Apps Intergations\r\nexport interface StudioAppPartial {\r\n id: string;\r\n name: string;\r\n version: string;\r\n description: string;\r\n icon: string;\r\n parameterConfig: AppParameterConfig[];\r\n parameterValues: {\r\n [key: string]: string | number | boolean | string[];\r\n };\r\n}\r\n\r\nexport type AppParameterConfig = {\r\n id: string;\r\n type: \"string\" | \"number\" | \"boolean\" | \"string[]\" | \"password\";\r\n label: string;\r\n description?: string;\r\n required?: boolean;\r\n defaultValue?: string | number | boolean | string[];\r\n};\r\n\r\nexport interface CphLookupResponse {\r\n cph: string;\r\n county: string;\r\n parish: string;\r\n holding: string;\r\n subLocation?: string;\r\n country: string;\r\n region: string | null;\r\n spatialUnit: string | null;\r\n office: string | null;\r\n ahdoNumber: string | null;\r\n parishName: string;\r\n tbTestingInterval: string | null;\r\n tbArea: string | null;\r\n cphValid?: boolean | null;\r\n farmName?: string | null;\r\n}\r\n","import { supportedWebhookEvents, WebhookEventName } from \"./types\";\n/**\n * Headers used by Studio to identify webhook and action requests\n */\nexport const StudioHeaders = {\n marketId: \"x-studio-market-id\",\n webhookId: \"x-studio-webhook-id\",\n action: \"x-studio-action\",\n apiKey: \"x-studio-key\",\n signature: \"x-studio-signature\",\n};\n\nexport interface StudioManifest {\n id: string; // must be unique\n name: string;\n version: string;\n description: string;\n icon: string;\n author: string;\n\n // action name to url mapping\n actions: {\n name: string;\n url: string;\n }[];\n\n webhooks: {\n url: string;\n triggers: WebhookEventName[];\n }[];\n\n // User configurable settings for the app. Appears in the app settings page.\n parameterConfig: {\n id: string;\n type: \"string\" | \"number\" | \"boolean\" | \"string[]\" | \"password\";\n label: string;\n description?: string;\n required?: boolean;\n defaultValue?: string | number | boolean | string[];\n }[];\n}\n\n/***\n * Creates an app manifest used to describe the app to Studio\n *\n * @param appConfig\n * @returns\n */\nexport function createAppManifest(appConfig: {\n id: string;\n name: string;\n version: string;\n description: string;\n icon: string;\n author: string;\n}) {\n let manifest: StudioManifest = {\n id: appConfig.id,\n name: appConfig.name,\n version: appConfig.version,\n description: appConfig.description,\n icon: appConfig.icon,\n author: appConfig.author,\n webhooks: [],\n parameterConfig: [],\n actions: [],\n };\n\n return {\n addWebhook: (url: string, triggers: WebhookEventName[]) => {\n // Validate the url is a valid url\n try {\n new URL(url);\n } catch (e) {\n throw new Error(`Invalid webhook url. Must be a valid url`);\n }\n\n // Ensure the webhook triggers are allowed\n for (let t of triggers) {\n if (!supportedWebhookEvents.includes(t)) {\n throw new Error(\n `Invalid webhook trigger. Must be one of ${supportedWebhookEvents.join(\n \", \"\n )}`\n );\n }\n }\n\n manifest.webhooks.push({\n url,\n triggers,\n });\n },\n addConfig: (config: {\n id: string;\n type: \"string\" | \"number\" | \"boolean\" | \"string[]\" | \"password\";\n label: string;\n description?: string;\n required?: boolean;\n defaultValue?: string | number | boolean | string[];\n }) => {\n manifest.parameterConfig.push(config);\n },\n addAction: (action: { name: string; url: string }) => {\n manifest.actions.push(action);\n },\n get manifest() {\n // print this and upload to studio\n return manifest;\n },\n };\n}\n","export type CountryCode = keyof typeof EarTag.countryCodes;\n\nexport default class EarTag {\n static regexISO24631 =\n /^([0-9]{1})([0-9]{1})([0-9]{2})([0-9]{2})([0-9]{1})(372|826|899|528|250|276)([0-9]{7})([0-9]{5})/;\n\n static countryCodes: { [key: string]: string } = {\n IE: \"372\",\n UK: \"826\",\n XI: \"899\",\n NL: \"528\",\n FR: \"250\",\n DE: \"276\",\n BE: \"056\",\n };\n\n static get countryCodesByNumber(): { [code: string]: CountryCode } {\n let reversed: { [code: string]: CountryCode } = {};\n for (const key of Object.keys(EarTag.countryCodes) as Array<\n keyof typeof EarTag.countryCodes\n >) {\n reversed[EarTag.countryCodes[key]] = key;\n }\n return reversed;\n }\n\n private normalisedCountryCode(\n countryCode: string | null | undefined | null | number\n ): CountryCode | null {\n if (!countryCode || typeof countryCode !== \"string\") {\n return null;\n }\n switch (countryCode) {\n case \"GB-ENG\":\n case \"GB-SCT\":\n case \"GB-WLS\":\n return \"UK\";\n case \"GB-NIR\":\n return \"XI\";\n default:\n return countryCode as CountryCode;\n }\n }\n\n private _raw: string;\n get raw(): string {\n return this._raw;\n }\n\n // readonly properties\n private _isEartag: boolean = false;\n isEartag(): boolean {\n return this._isEartag;\n }\n\n private _isoCountryCode?: string;\n get isoCountryCode(): string | undefined {\n return this._isoCountryCode;\n }\n\n private _nationalIdentifier?: string;\n get nationalIdentifier(): string | undefined {\n return this._nationalIdentifier;\n }\n\n // private constructor\n constructor(\n input: string,\n fallbackCountryCode?: CountryCode | string | null\n ) {\n fallbackCountryCode = this.normalisedCountryCode(fallbackCountryCode);\n\n let workingInput = input.replace(/\\s/g, \"\").replace(/[^ -~]+/g, \"\");\n this._raw = workingInput; // Store the initial cleaned input. May get updated if prefix is added.\n\n // Part 1: Handle explicit country codes (alpha or numeric) in the input string\n let parsedCountryCode: string | undefined;\n let parsedNationalIdentifier: string | undefined;\n\n // 1a. Alpha prefix\n if (workingInput.length > 2 && /^[A-Z]{2}/.test(workingInput)) {\n const alphaCode = workingInput.slice(0, 2);\n const numericCode = EarTag.countryCodes[alphaCode];\n if (numericCode) {\n // Replace alpha with numeric for further parsing\n workingInput = numericCode + workingInput.slice(2);\n this._raw = workingInput; // Update _raw as it now contains numeric country code\n }\n // If unknown alpha, workingInput remains as is, will be handled by numeric check or fallback\n }\n\n // 1b. Numeric country code (already in workingInput, or converted from alpha)\n const countryPattern = \"(372|826|899|528|250|276|056)\";\n\n const regex12 = new RegExp(\n `^[0-9]{0,7}(${countryPattern})([0-9]{7})([0-9]{5})`\n );\n let match12 = regex12.exec(workingInput);\n\n if (match12) {\n parsedCountryCode = match12[1];\n parsedNationalIdentifier = `${match12[3]}${match12[4]}`;\n } else {\n const regex11 = new RegExp(\n `^[0-9]{0,7}(${countryPattern})([0-9]{6})([0-9]{5})`\n );\n let match11 = regex11.exec(workingInput);\n if (match11) {\n parsedCountryCode = match11[1];\n parsedNationalIdentifier = `${match11[3]}${match11[4]}`;\n }\n }\n\n // Part 2: If no country code parsed yet, try fallback\n if (!parsedCountryCode && fallbackCountryCode) {\n const numericFallback = EarTag.countryCodes[fallbackCountryCode];\n if (numericFallback) {\n // `workingInput` at this point is the original input (cleaned, no recognized country code)\n // Assume `workingInput` is the national identifier part (must be 11 or 12 digits)\n if (workingInput.length === 12 || workingInput.length === 11) {\n parsedCountryCode = numericFallback;\n parsedNationalIdentifier = workingInput;\n // Update _raw to reflect the tag as if it had the country code\n this._raw = numericFallback + workingInput;\n }\n }\n }\n\n // Part 3: Finalize and set properties\n if (parsedCountryCode && parsedNationalIdentifier) {\n this._isoCountryCode = parsedCountryCode;\n if (parsedNationalIdentifier.length === 11) {\n // Pad 11-digit national ID to 12-digits by prepending \"0\"\n this._nationalIdentifier = \"0\" + parsedNationalIdentifier;\n } else if (parsedNationalIdentifier.length === 12) {\n this._nationalIdentifier = parsedNationalIdentifier;\n } else {\n // This case should ideally not be reached if lengths are checked properly before.\n this._isEartag = false;\n return;\n }\n this._isEartag = true;\n } else {\n this._isEartag = false;\n }\n }\n\n public static parse(\n str: string,\n fallbackCountryCode?: CountryCode | string | null\n ): EarTag {\n return new EarTag(str, fallbackCountryCode);\n }\n\n public static format(\n str: string,\n marketCountry?: string | null | undefined\n ): string | null {\n let t = EarTag.parse(str, marketCountry);\n if (t.isEartag()) {\n return t.toString();\n }\n return null;\n }\n\n toString(): string {\n if (!this._isEartag) {\n return \"Invalid EarTag\";\n }\n\n return `${\n EarTag.countryCodesByNumber[this.isoCountryCode!]\n } ${this.nationalIdentifier!.slice(0, 7)} ${this.nationalIdentifier!.slice(\n 7\n )}`;\n }\n\n isISO24631(): boolean {\n return EarTag.regexISO24631.test(this._raw);\n }\n\n toISO24631(): string {\n if (!this.isISO24631()) {\n return \"Not a ISO24631 EarTag\";\n }\n // ISO 24631 Formatting for movements\n const res = EarTag.regexISO24631.exec(this._raw)!;\n return `${res[1]} ${res[2]} ${res[3]} ${res[4]} ${res[5]} ${res[6]} ${res[7]} ${res[8]}`;\n }\n}\n","/**\n * Extract the smallest lot number for sorting purposes.\n * Handles formats:\n * - Simple: \"7\" -> 7\n * - Alpha suffix: \"7A\" -> 7\n * - Range: \"7-9\" -> 7\n * - Range with alpha: \"7A-9A\" -> 7\n * - With gaps: \"7-8, 10\" -> 7\n * - Complex: \"7A-8A, 10B\" -> 7\n */\nfunction extractMinLotNumber(lotNumber: string): {\n num: number | null;\n alpha: string;\n} {\n // Handle empty/null\n if (!lotNumber) return { num: null, alpha: \"\" };\n\n // Split by comma first (handles \"7-8, 10\" format), flexible with whitespace\n let segments = lotNumber.split(/\\s*,\\s*/);\n\n let minNum: number | null = null;\n let minAlpha = \"\";\n\n for (let segment of segments) {\n // Split by hyphen (handles \"7-9\" range format), flexible with whitespace\n let rangeParts = segment.split(/\\s*-\\s*/);\n\n for (let part of rangeParts) {\n // Extract number and alpha from each part (e.g., \"7A\" -> 7, \"A\")\n let match = part.trim().match(/^(\\d+)(\\D*)$/);\n if (match) {\n let num = parseInt(match[1], 10);\n let alpha = match[2] || \"\";\n\n if (\n minNum === null ||\n num < minNum ||\n (num === minNum && alpha < minAlpha)\n ) {\n minNum = num;\n minAlpha = alpha;\n }\n }\n }\n }\n\n return { num: minNum, alpha: minAlpha };\n}\n\nexport function lotComparator<T extends { lotNumber: string }>(\n a: T,\n b: T\n): number {\n let aMin = extractMinLotNumber(a.lotNumber);\n let bMin = extractMinLotNumber(b.lotNumber);\n\n // If neither has numbers, fall back to string comparison\n if (aMin.num === null && bMin.num === null) {\n return a.lotNumber.localeCompare(b.lotNumber);\n }\n\n // If only one has numbers, the one without comes first\n if (aMin.num === null) return -1;\n if (bMin.num === null) return 1;\n\n // Compare numeric parts\n if (aMin.num !== bMin.num) return aMin.num - bMin.num;\n\n // Compare alpha suffixes by length then alphabetically\n if (aMin.alpha.length !== bMin.alpha.length) {\n return aMin.alpha.length - bMin.alpha.length;\n }\n return aMin.alpha.localeCompare(bMin.alpha);\n}\n\nexport function sortByLotNumber<T extends { lotNumber: string }>(\n lots: T[]\n): T[] {\n return [...lots].sort(lotComparator);\n}\n\n/***\n * Generate the next lot number in a sequence.\n * Handles various formats:\n * - Simple: \"7\" -> \"8\"\n * - Alphanumeric: \"7A\" -> \"7B\"\n * - Range: \"1-3\" -> \"4\", \"1 - 3\" -> \"4\" (flexible whitespace)\n * - Range with alpha: \"1-3A\" -> \"3B\"\n * - Compound: \"1-3, 10\" -> \"11\", \"1-5, 7-9\" -> \"10\"\n */\nexport function nextLotNumber(previousLotNumber: string): string {\n // Helper to compare alpha suffixes (longer = greater, then alphabetically)\n function isGreaterAlpha(a: string, b: string): boolean {\n let aUpper = a.toUpperCase();\n let bUpper = b.toUpperCase();\n if (aUpper.length !== bUpper.length) {\n return aUpper.length > bUpper.length;\n }\n return aUpper > bUpper;\n }\n\n // Split by comma (handles \"7-8, 10\" format), flexible with whitespace\n let segments = previousLotNumber.split(/\\s*,\\s*/);\n\n let maxNum: number | null = null;\n let maxAlpha = \"\";\n\n for (let segment of segments) {\n // Check if segment is a range (contains hyphen with numbers on both sides)\n // Flexible with whitespace: \"1-3\", \"1 - 3\", \"1- 3\", \"1 -3\", \"1 -3\"\n let rangeMatch = segment.trim().match(/^(\\d+)\\s*-\\s*(\\d+)(\\D*)$/);\n\n if (rangeMatch) {\n // Range format: take the end number\n let endNum = parseInt(rangeMatch[2], 10);\n let alphaPart = rangeMatch[3] || \"\";\n\n if (\n maxNum === null ||\n endNum > maxNum ||\n (endNum === maxNum && isGreaterAlpha(alphaPart, maxAlpha))\n ) {\n maxNum = endNum;\n maxAlpha = alphaPart;\n }\n } else {\n // Single value: \"7\" or \"7A\"\n let singleMatch = segment.trim().match(/^(\\d+)(\\D*)$/);\n if (singleMatch) {\n let num = parseInt(singleMatch[1], 10);\n let alphaPart = singleMatch[2] || \"\";\n\n if (\n maxNum === null ||\n num > maxNum ||\n (num === maxNum && isGreaterAlpha(alphaPart, maxAlpha))\n ) {\n maxNum = num;\n maxAlpha = alphaPart;\n }\n }\n }\n }\n\n // If we found numeric parts, increment\n if (maxNum !== null) {\n if (maxAlpha === \"\") {\n return (maxNum + 1).toString();\n } else {\n let nextAlpha = incrementAlphaSequence(maxAlpha);\n return maxNum + nextAlpha;\n }\n }\n\n // Fallback: treat as pure alphabetic (e.g., \"A\" -> \"B\")\n return incrementAlphaSequence(previousLotNumber);\n}\n\nfunction incrementAlphaSequence(alpha: string): string {\n if (alpha === \"\") {\n return \"A\";\n }\n\n // Convert to uppercase for consistent handling\n alpha = alpha.toUpperCase();\n\n // Check if we're at the end of sequence (all Z's)\n if (alpha === \"Z\".repeat(alpha.length)) {\n // Z -> AA, ZZ -> AAA, etc.\n return \"A\".repeat(alpha.length + 1);\n }\n\n // Convert string to array for easier manipulation\n let chars = alpha.split(\"\");\n let carry = true;\n\n // Start from the rightmost character and work backwards\n for (let i = chars.length - 1; i >= 0 && carry; i--) {\n if (chars[i] === \"Z\") {\n chars[i] = \"A\";\n // carry remains true\n } else {\n // Increment the character\n chars[i] = String.fromCharCode(chars[i].charCodeAt(0) + 1);\n carry = false;\n }\n }\n\n // If we still have carry, prepend an A\n if (carry) {\n chars.unshift(\"A\");\n }\n\n return chars.join(\"\");\n}\n"],"names":["create","createHmac","IMAGE_SIZES_VALUES","VIDEO_TASKS_VALUES","markets","sales","lots","lotItems","carts","cph","webhooks","actions","bidderApplications","settings","adjustments","extras","productCodes","saleTemplates","taxRates","customers","invoices","payments","payouts","search","files","contacts","ledger","HttpClient","Resources"],"mappings":"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","x_google_ignoreList":[8]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/net/fetch.ts","../src/net/http.ts","../src/resources/actions.ts","../src/resources/activity.ts","../src/resources/adjustments.ts","../src/resources/carts.ts","../src/resources/extras.ts","../src/resources/bidderApplications.ts","../src/resources/customers.ts","../node_modules/zod/lib/index.mjs","../src/utils/multipart-upload.ts","../src/resources/files.ts","../src/resources/invoices.ts","../src/resources/lotItems.ts","../src/resources/lots.ts","../src/resources/markets.ts","../src/resources/payments.ts","../src/resources/payouts.ts","../src/resources/productCodes.ts","../src/resources/sales.ts","../src/resources/saleTemplates.ts","../src/resources/search.ts","../src/resources/settings.ts","../src/resources/taxRates.ts","../src/resources/webhooks.ts","../src/resources/cph.ts","../src/resources/contacts.ts","../src/resources/ledger.ts","../src/resources.ts","../src/studio.ts","../src/types.ts","../src/createApp.ts","../src/utils/eartag.ts","../src/utils/lots.ts"],"sourcesContent":["export default function getFetch() {\n if (typeof fetch === \"undefined\") {\n throw new Error(\"fetch is not defined. Please use a polyfill.\");\n }\n return fetch;\n}\n","export default function SimpleHttpClient(\n baseUrl: string,\n apiKey: string,\n fetch: any,\n defaultTimeout: number,\n debug: boolean = false\n) {\n async function request<T>(method: string, path: string, body?: any) {\n let controller = new AbortController();\n\n let t = setTimeout(() => {\n controller.abort();\n\n if (debug) {\n console.log(`[SimpleHttpClient] ${method} ${path} timed out`);\n }\n }, defaultTimeout);\n\n let requestInit: any = {\n method,\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n signal: controller.signal,\n };\n\n if (body) {\n requestInit.body = typeof body === \"string\" ? body : JSON.stringify(body);\n }\n\n if (debug) {\n let info: any = {};\n if (requestInit.headers) {\n info.headers = requestInit.headers;\n }\n if (requestInit.body) {\n info.body = requestInit.body;\n }\n\n console.log(`[SimpleHttpClient] ${method} ${baseUrl}${path}`, info);\n }\n\n let response = await fetch(`${baseUrl}${path}`, requestInit);\n clearTimeout(t);\n\n if (debug) {\n console.log(\n `[SimpleHttpClient] ${method} ${path} response: ${response.status}`\n );\n }\n\n if (response.ok) {\n return response.json() as T;\n }\n\n if (response.status === 404) {\n throw new Error(`${baseUrl}${path} not found`);\n }\n\n throw new Error(\n `Request failed with status ${response.status}: ${await response.text()}}`\n );\n }\n\n return {\n get: async <T>(path: string, queryParams?: any) => {\n let query = queryParams\n ? `?${new URLSearchParams(queryParams).toString()}`\n : \"\";\n return request<T>(\"GET\", `${path}${query}`);\n },\n post: async <T>(path: string, body: any) => {\n return request<T>(\"POST\", path, body);\n },\n patch: async <T>(path: string, body: any) => {\n return request<T>(\"PATCH\", path, body);\n },\n delete: async <T>(path: string) => {\n return request<T>(\"DELETE\", path);\n },\n };\n}\n\nexport type HttpClient = ReturnType<typeof SimpleHttpClient>;\n","// Path: studiojs/src/resources/markets.ts\n\nimport { createHmac } from \"crypto\";\nimport { HttpClient } from \"../net/http\";\n\nexport default function create(_: HttpClient) {\n const actions = {\n /***\n * This is used to construct the action from the request body\n *\n * @param body the request body\n * @param signature the signature of the request taken from the header\n * @param endpointSecret the pre-shared secret\n * @returns the action\n */\n constructAction: async (\n bodyAsBuffer: Buffer,\n signature: string,\n endpointSecret: string\n ) => {\n let rawBody = bodyAsBuffer.toString();\n\n let expectedSignature = createHmac(\"sha256\", endpointSecret)\n .update(rawBody)\n .digest(\"hex\");\n\n if (signature !== expectedSignature) {\n console.error(\n `Unable to construct action. Signature mismatch.`,\n signature,\n \"!=\",\n expectedSignature\n );\n throw new Error(`Unable to construct action. Signature mismatch.`);\n }\n\n try {\n return JSON.parse(rawBody);\n } catch (e) {\n throw new Error(`Unable to construct action. ${e}`);\n }\n },\n };\n\n return actions;\n}\n\nexport type Webhooks = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { ActivityLog } from \"../types\";\n\nexport interface ActivityListResponse {\n data: ActivityLog[];\n lastId: string | null;\n hasMore: boolean;\n}\n\nexport interface ActivityListParams {\n saleId?: string;\n entityType?: string;\n entityId?: string;\n operation?: string;\n memberId?: string;\n from?: string;\n to?: string;\n limit?: number;\n lastId?: string;\n}\n\nexport default function create(httpClient: HttpClient) {\n let activity = {\n /**\n * List activity logs for a market with pagination and filtering\n * @param marketId - ID of the market\n * @param params - Optional filtering and pagination parameters\n * @returns Paginated list of activity logs\n */\n list: async (\n marketId: string,\n params?: ActivityListParams\n ): Promise<ActivityListResponse> => {\n let queryParams: Record<string, string> = {};\n\n if (params?.saleId) {\n queryParams.saleId = params.saleId;\n }\n if (params?.entityType) {\n queryParams.entityType = params.entityType;\n }\n if (params?.entityId) {\n queryParams.entityId = params.entityId;\n }\n if (params?.operation) {\n queryParams.operation = params.operation;\n }\n if (params?.memberId) {\n queryParams.memberId = params.memberId;\n }\n if (params?.from) {\n queryParams.from = params.from;\n }\n if (params?.to) {\n queryParams.to = params.to;\n }\n if (params?.limit !== undefined) {\n queryParams.limit = String(params.limit);\n }\n if (params?.lastId) {\n queryParams.lastId = params.lastId;\n }\n\n return httpClient.get<ActivityListResponse>(\n `/${marketId}/activity`,\n queryParams\n );\n },\n\n /**\n * Get a specific activity log by ID\n * @param marketId - ID of the market\n * @param activityId - ID of the activity log entry\n * @returns The activity log details\n */\n get: async (marketId: string, activityId: string): Promise<ActivityLog> => {\n return httpClient.get<ActivityLog>(\n `/${marketId}/activity/${activityId}`\n );\n },\n };\n\n return activity;\n}\n\nexport type Activity = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { AdjustmentsConfiguration } from \"../types\";\n\nexport default function create(httpClient: HttpClient) {\n return {\n list: async (marketId: string) => {\n return httpClient.get<AdjustmentsConfiguration[]>(\n `/${marketId}/adjustments`\n );\n },\n get: async (marketId: string, id: string) => {\n return httpClient.get<AdjustmentsConfiguration>(\n `/${marketId}/adjustments/${id}`\n );\n },\n create: async (\n marketId: string,\n data: Partial<AdjustmentsConfiguration>\n ) => {\n return httpClient.post<AdjustmentsConfiguration>(\n `/${marketId}/adjustments`,\n data\n );\n },\n update: async (\n marketId: string,\n id: string,\n data: Partial<AdjustmentsConfiguration>\n ) => {\n return httpClient.post<AdjustmentsConfiguration>(\n `/${marketId}/adjustments/${id}`,\n data\n );\n },\n };\n}\n\nexport type Adjustments = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { CartItem, Lot } from \"../types\";\n\nexport interface LotsBySale {\n saleId: string;\n marketId: string;\n lots: Lot[];\n}\n\nexport interface CartResponse {\n customerId: string;\n extras: CartItem[];\n lotsBuyingBySale: LotsBySale[];\n lotsSellingBySale: LotsBySale[];\n}\n\nexport interface AddExtraPayload {\n productId: string;\n clientType: \"Seller\" | \"Buyer\";\n quantity: number;\n unitPriceInCents: number;\n passthroughFundsToCustomerId?: string | null;\n}\n\nexport default function create(httpClient: HttpClient) {\n return {\n /**\n * Get the full cart for a customer including extras and uninvoiced lots\n */\n get: async (marketId: string, customerId: string) => {\n return httpClient.get<CartResponse>(\n `/${marketId}/carts/${customerId}`\n );\n },\n\n /**\n * Add an extra product to the customer's cart\n */\n addExtra: async (\n marketId: string,\n customerId: string,\n data: AddExtraPayload\n ) => {\n return httpClient.post<CartResponse>(\n `/${marketId}/carts/${customerId}`,\n data\n );\n },\n\n /**\n * Remove an extra from the customer's cart\n */\n removeExtra: async (\n marketId: string,\n customerId: string,\n itemId: string\n ) => {\n return httpClient.delete<void>(\n `/${marketId}/carts/${customerId}/${itemId}`\n );\n },\n };\n}\n\nexport type Carts = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { Product } from \"../types\";\n\nexport interface CreateExtraPayload {\n id: string;\n name: string;\n taxRateId: string;\n defaultUnitPriceInCents?: number;\n unitPriceIncludesVat?: boolean;\n applyToClients?: (\"Seller\" | \"Buyer\")[];\n subtotalGroup?: string | null;\n passThroughFundsToAnotherCustomer?: boolean;\n isEnabled?: boolean;\n metadata?: Record<string, any>;\n}\n\nexport interface UpdateExtraPayload {\n name?: string;\n taxRateId?: string;\n defaultUnitPriceInCents?: number;\n unitPriceIncludesVat?: boolean;\n applyToClients?: (\"Seller\" | \"Buyer\")[];\n subtotalGroup?: string | null;\n passThroughFundsToAnotherCustomer?: boolean;\n isEnabled?: boolean;\n metadata?: Record<string, any>;\n}\n\nexport default function create(httpClient: HttpClient) {\n return {\n list: async (marketId: string) => {\n return httpClient.get<Product[]>(`/${marketId}/extras`);\n },\n get: async (marketId: string, id: string) => {\n return httpClient.get<Product>(`/${marketId}/extras/${id}`);\n },\n create: async (marketId: string, data: CreateExtraPayload) => {\n return httpClient.post<Product>(`/${marketId}/extras`, data);\n },\n update: async (marketId: string, id: string, data: UpdateExtraPayload) => {\n return httpClient.post<Product>(`/${marketId}/extras/${id}`, data);\n },\n };\n}\n\nexport type Extras = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { Application } from \"../types\";\n\n// Define the type for application creation\nexport interface CreateApplicationPayload {\n displayName: string;\n phoneNumber?: string;\n email?: string;\n address: {\n firstLine: string;\n secondLine?: string;\n county?: string;\n postCode: string;\n };\n dateOfMarteyeAccountCreation?: string;\n hasWonLotsOnMarteye?: boolean;\n isApprovedAtOtherMarkets?: boolean;\n marteyeUid: string;\n notes?: string;\n}\n\n// Define the type for application update\nexport interface UpdateApplicationPayload {\n displayName?: string;\n phoneNumber?: string;\n email?: string;\n address?: {\n firstLine?: string;\n secondLine?: string;\n county?: string;\n postCode?: string;\n };\n notes?: string;\n}\n\nexport interface ListApplicationsOptions {\n lastId?: string;\n status?: \"pending\" | \"approved\" | \"rejected\";\n}\n\nexport interface ListApplicationsResponse {\n applications: Application[];\n lastId: string | null;\n hasMore: boolean;\n}\n\n/***\n * Bidder applications\n */\nexport default function create(httpClient: HttpClient) {\n let applications = {\n /**\n * List applications for a market with optional filtering\n * @param marketId - ID of the market\n * @param options - Optional query parameters for filtering and pagination\n * @returns Paginated list of applications\n */\n list: async (marketId: string, options?: ListApplicationsOptions) => {\n return httpClient.get<ListApplicationsResponse>(\n `/${marketId}/applications`,\n options\n );\n },\n\n /**\n * Get a single application by ID\n * @param marketId - ID of the market\n * @param applicationId - ID of the application\n * @returns The application details\n */\n get: async (marketId: string, applicationId: string) => {\n return httpClient.get<Application>(\n `/${marketId}/applications/${applicationId}`\n );\n },\n\n /**\n * Create a new application\n * @param marketId - ID of the market\n * @param applicationData - The application data\n * @returns The created application\n */\n create: async (\n marketId: string,\n applicationData: CreateApplicationPayload\n ) => {\n return httpClient.post<Application>(\n `/${marketId}/applications`,\n applicationData\n );\n },\n\n /**\n * Update an existing application\n * @param marketId - ID of the market\n * @param applicationId - ID of the application to update\n * @param updateData - The fields to update\n * @returns The updated application\n * @throws Error if the application is already approved or rejected\n */\n update: async (\n marketId: string,\n applicationId: string,\n updateData: UpdateApplicationPayload\n ) => {\n return httpClient.post<Application>(\n `/${marketId}/applications/${applicationId}`,\n updateData\n );\n },\n\n /**\n * Approve an application\n * @param marketId - ID of the market\n * @param applicationId - ID of the application to approve\n * @param notes - Optional notes for the approval\n * @returns The approved application\n * @throws Error if the application is not in pending status\n */\n approve: async (\n marketId: string,\n applicationId: string,\n notes?: string\n ) => {\n return httpClient.post<Application>(\n `/${marketId}/applications/${applicationId}/approve`,\n { notes }\n );\n },\n\n /**\n * Reject an application\n * @param marketId - ID of the market\n * @param applicationId - ID of the application to reject\n * @param notes - Optional notes for the rejection\n * @returns The rejected application\n * @throws Error if the application is not in pending status\n */\n reject: async (marketId: string, applicationId: string, notes?: string) => {\n return httpClient.post<Application>(\n `/${marketId}/applications/${applicationId}/reject`,\n { notes }\n );\n },\n };\n\n return applications;\n}\n\nexport type Applications = ReturnType<typeof create>;\n","// Path: studiojs/src/resources/markets.ts\n\nimport { HttpClient } from \"../net/http\";\nimport {\n Customer,\n InvoiceDeliveryPreference,\n PayoutMethod,\n} from \"../types\";\n\n// Define the type for customer creation\nexport interface CreateCustomerPayload {\n displayName: string;\n email?: string;\n phone?: string;\n accountNumberPrefix?: string;\n accountNumber?: string;\n cphNumber?: string;\n farmName?: string;\n address: {\n company?: string;\n firstName?: string;\n lastName?: string;\n address1: string;\n address2?: string;\n city: string;\n province?: string;\n zip: string;\n country: string;\n };\n marteyeUid?: string;\n}\n\nexport interface FarmAssuranceUpdate {\n number?: string | null;\n scheme?: string | null;\n expiry?: string | Date | null;\n}\n\nexport interface KeeperDetailsUpdate {\n herdNumber?: string | null;\n flockNumber?: string | null;\n cphNumber?: string | null;\n farmName?: string | null;\n slapMark?: string | null;\n farmAssurance?: {\n cattle?: FarmAssuranceUpdate | null;\n sheep?: FarmAssuranceUpdate | null;\n pigs?: FarmAssuranceUpdate | null;\n };\n vetAttestation?: {\n vanNumber?: string | null;\n expiry?: string | Date | null;\n } | null;\n movementReporting?: {\n fromOrigin?: boolean | null;\n toDestination?: boolean | null;\n } | null;\n}\n\nexport interface UpdateCustomerPayload {\n displayName?: string | null;\n email?: {\n email: string;\n isVerified?: boolean;\n createdAt?: string | Date;\n } | null;\n phoneNumber?: {\n phoneNumber: string;\n isVerified?: boolean;\n createdAt?: string | Date;\n } | null;\n address?: Customer[\"address\"] | null;\n otherAddresses?: Customer[\"otherAddresses\"] | null;\n otherPhoneNumbers?: Customer[\"otherPhoneNumbers\"] | null;\n payoutPreference?: PayoutMethod | \"none\" | null;\n invoiceDeliveryPreference?: InvoiceDeliveryPreference | \"none\" | null;\n statementDeliveryPreference?: InvoiceDeliveryPreference | \"none\" | null;\n bankDetails?: Customer[\"bankDetails\"] | null;\n preferSettleDebtsFirst?: boolean;\n vatNumber?: string | null;\n accountNumber?: string | null;\n notes?: string | null;\n attributeDefaultsBuyer?: Customer[\"attributeDefaultsBuyer\"] | null;\n attributeDefaultsSeller?: Customer[\"attributeDefaultsSeller\"] | null;\n metadata?: Customer[\"metadata\"] | null;\n keeperDetails?: KeeperDetailsUpdate;\n}\n\n// Define the type for the paginated customers response\nexport interface CustomersListResponse {\n customers: Customer[];\n lastId: string | null;\n hasMore: boolean;\n}\n\nexport default function create(httpClient: HttpClient) {\n let customers = {\n list: async (\n marketId: string,\n lastId?: string | null\n ): Promise<CustomersListResponse> => {\n let params: Record<string, string> = {};\n if (lastId) {\n params.lastId = lastId;\n }\n return httpClient.get<CustomersListResponse>(\n `/${marketId}/customers`,\n params\n );\n },\n get: async (marketId: string, customerId: string) => {\n return httpClient.get<Customer>(`/${marketId}/customers/${customerId}`);\n },\n avatar: async (marketId: string, customerId: string) => {\n return httpClient.get<Customer>(\n `/${marketId}/customers/${customerId}/avatar`\n );\n },\n create: async (marketId: string, customerData: CreateCustomerPayload) => {\n return httpClient.post<Customer>(`/${marketId}/customers`, customerData);\n },\n update: async (\n marketId: string,\n customerId: string,\n customerData: UpdateCustomerPayload\n ) => {\n return httpClient.post<Customer>(\n `/${marketId}/customers/${customerId}`,\n customerData\n );\n },\n /**\n * Get a customer by their account number\n * @param marketId - ID of the market the customer belongs to\n * @param accountNumber - The customer's account number to search for\n * @returns The customer with the specified account number or null if not found\n */\n getByAccountNumber: async (marketId: string, accountNumber: string) => {\n const response = await httpClient.get<CustomersListResponse>(\n `/${marketId}/customers`,\n { accountNumber }\n );\n\n // API returns a list of customers, but when filtering by account number,\n // we should get at most one customer since account numbers are unique\n if (response.customers && response.customers.length > 0) {\n return response.customers[0];\n }\n\n return null;\n },\n getByMartEyeUid: async (marketId: string, marteyeUid: string) => {\n const response = await httpClient.get<CustomersListResponse>(\n `/${marketId}/customers`,\n { marteyeUid }\n );\n if (response.customers && response.customers.length > 0) {\n return response.customers[0];\n }\n return null;\n },\n };\n\n return customers;\n}\n\nexport type Customers = ReturnType<typeof create>;\n","var util;\n(function (util) {\n util.assertEqual = (val) => val;\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\" && isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array\n .map((val) => (typeof val === \"string\" ? `'${val}'` : val))\n .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 = {}));\nvar objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nconst 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]);\nconst 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 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 &&\n typeof data.then === \"function\" &&\n data.catch &&\n 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\nconst 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]);\nconst quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nclass 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 fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].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\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\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `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\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `smaller than or equal to`\n : `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};\n\nlet overrideErrorMap = errorMap;\nfunction setErrorMap(map) {\n overrideErrorMap = map;\n}\nfunction getErrorMap() {\n return overrideErrorMap;\n}\n\nconst 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};\nconst EMPTY_PATH = [];\nfunction 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 === errorMap ? undefined : errorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nclass 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__\" &&\n (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nconst INVALID = Object.freeze({\n status: \"aborted\",\n});\nconst DIRTY = (value) => ({ status: \"dirty\", value });\nconst OK = (value) => ({ status: \"valid\", value });\nconst isAborted = (x) => x.status === \"aborted\";\nconst isDirty = (x) => x.status === \"dirty\";\nconst isValid = (x) => x.status === \"valid\";\nconst isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nfunction __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nvar errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message === null || message === void 0 ? void 0 : message.message;\n})(errorUtil || (errorUtil = {}));\n\nvar _ZodEnum_cache, _ZodNativeEnum_cache;\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 (this._key instanceof Array) {\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 var _a, _b;\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message !== null && message !== void 0 ? message : ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: (_a = message !== null && message !== void 0 ? message : required_error) !== null && _a !== void 0 ? _a : ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: (_b = message !== null && message !== void 0 ? message : invalid_type_error) !== null && _b !== void 0 ? _b : ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nclass 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 var _a;\n const ctx = {\n common: {\n issues: [],\n async: (_a = params === null || params === void 0 ? void 0 : params.async) !== null && _a !== void 0 ? _a : false,\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n },\n path: (params === null || params === void 0 ? void 0 : 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 var _a, _b;\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 ((_b = (_a = err === null || err === void 0 ? void 0 : err.message) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === null || _b === void 0 ? void 0 : _b.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 === null || params === void 0 ? void 0 : params.errorMap,\n async: true,\n },\n path: (params === null || params === void 0 ? void 0 : 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)\n ? maybeAsyncResult\n : 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\"\n ? refinementData(val, ctx)\n : 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 regex = `\\\\d{2}:\\\\d{2}:\\\\d{2}`;\n let regex = `([01]\\\\d|2[0-3]):[0-5]\\\\d:[0-5]\\\\d`;\n if (args.precision) {\n regex = `${regex}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n regex = `${regex}(\\\\.\\\\d+)?`;\n }\n return regex;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nfunction 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 // 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 (!decoded.typ || !decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch (_a) {\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}\nclass 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 (_a) {\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 var _a, _b;\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 === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n offset: (_a = options === null || options === void 0 ? void 0 : options.offset) !== null && _a !== void 0 ? _a : false,\n local: (_b = options === null || options === void 0 ? void 0 : options.local) !== null && _b !== void 0 ? _b : false,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : 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 === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : 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 === null || options === void 0 ? void 0 : options.position,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : 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 var _a;\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : 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 = parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / Math.pow(10, decCount);\n}\nclass 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\n ? input.data < check.value\n : 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\n ? input.data > check.value\n : 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\" ||\n (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null, min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" ||\n ch.kind === \"int\" ||\n 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 === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass 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 (_a) {\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\n ? input.data < check.value\n : 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\n ? input.data > check.value\n : 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 var _a;\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\nclass 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 === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass 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 (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 === null || params === void 0 ? void 0 : params.coerce) || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nclass 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};\nclass 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};\nclass 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};\nclass 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};\nclass 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};\nclass 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};\nclass 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};\nclass 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}\nclass 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 return (this._cached = { shape, keys });\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 &&\n 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 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 var _a, _b, _c, _d;\n const defaultError = (_c = (_b = (_a = this._def).errorMap) === null || _b === void 0 ? void 0 : _b.call(_a, issue, ctx).message) !== null && _c !== void 0 ? _c : ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: (_d = errorUtil.errToObj(message).message) !== null && _d !== void 0 ? _d : 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 util.objectKeys(mask).forEach((key) => {\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 util.objectKeys(this.shape).forEach((key) => {\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 util.objectKeys(this.shape).forEach((key) => {\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 util.objectKeys(this.shape).forEach((key) => {\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};\nclass 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};\nclass 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\n .objectKeys(a)\n .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 &&\n bType === ZodParsedType.date &&\n +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nclass 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};\nclass 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};\nclass 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}\nclass 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};\nclass 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};\nclass 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: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].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: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].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\n .parseAsync(args, params)\n .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\n ? args\n : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nclass 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};\nclass 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}\nclass ZodEnum extends ZodType {\n constructor() {\n super(...arguments);\n _ZodEnum_cache.set(this, void 0);\n }\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 (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\")) {\n __classPrivateFieldSet(this, _ZodEnum_cache, new Set(this._def.values), \"f\");\n }\n if (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\").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}\n_ZodEnum_cache = new WeakMap();\nZodEnum.create = createZodEnum;\nclass ZodNativeEnum extends ZodType {\n constructor() {\n super(...arguments);\n _ZodNativeEnum_cache.set(this, void 0);\n }\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string &&\n 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 (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\")) {\n __classPrivateFieldSet(this, _ZodNativeEnum_cache, new Set(util.getValidEnumValues(this._def.values)), \"f\");\n }\n if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\").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}\n_ZodNativeEnum_cache = new WeakMap();\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nclass 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 &&\n 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\n ? ctx.data\n : 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};\nclass 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\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .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 base;\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\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((base) => {\n if (!isValid(base))\n return base;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({ status: status.value, value: result }));\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};\nclass 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};\nclass 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};\nclass 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\"\n ? params.default\n : () => params.default,\n ...processCreateParams(params),\n });\n};\nclass 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};\nclass 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};\nconst BRAND = Symbol(\"zod_brand\");\nclass 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}\nclass 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}\nclass 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)\n ? result.then((data) => freeze(data))\n : 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\"\n ? params(data)\n : typeof params === \"string\"\n ? { message: params }\n : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nfunction 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 var _a, _b;\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n var _a, _b;\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = (_b = (_a = params.fatal) !== null && _a !== void 0 ? _a : fatal) !== null && _b !== void 0 ? _b : true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = (_b = (_a = params.fatal) !== null && _a !== void 0 ? _a : fatal) !== null && _b !== void 0 ? _b : true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nconst late = {\n object: ZodObject.lazycreate,\n};\nvar 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 = {}));\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();\nconst 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};\nconst NEVER = INVALID;\n\nvar z = /*#__PURE__*/Object.freeze({\n __proto__: null,\n defaultErrorMap: errorMap,\n setErrorMap: setErrorMap,\n getErrorMap: getErrorMap,\n makeIssue: makeIssue,\n EMPTY_PATH: EMPTY_PATH,\n addIssueToContext: addIssueToContext,\n ParseStatus: ParseStatus,\n INVALID: INVALID,\n DIRTY: DIRTY,\n OK: OK,\n isAborted: isAborted,\n isDirty: isDirty,\n isValid: isValid,\n isAsync: isAsync,\n get util () { return util; },\n get objectUtil () { return objectUtil; },\n ZodParsedType: ZodParsedType,\n getParsedType: getParsedType,\n ZodType: ZodType,\n datetimeRegex: datetimeRegex,\n ZodString: ZodString,\n ZodNumber: ZodNumber,\n ZodBigInt: ZodBigInt,\n ZodBoolean: ZodBoolean,\n ZodDate: ZodDate,\n ZodSymbol: ZodSymbol,\n ZodUndefined: ZodUndefined,\n ZodNull: ZodNull,\n ZodAny: ZodAny,\n ZodUnknown: ZodUnknown,\n ZodNever: ZodNever,\n ZodVoid: ZodVoid,\n ZodArray: ZodArray,\n ZodObject: ZodObject,\n ZodUnion: ZodUnion,\n ZodDiscriminatedUnion: ZodDiscriminatedUnion,\n ZodIntersection: ZodIntersection,\n ZodTuple: ZodTuple,\n ZodRecord: ZodRecord,\n ZodMap: ZodMap,\n ZodSet: ZodSet,\n ZodFunction: ZodFunction,\n ZodLazy: ZodLazy,\n ZodLiteral: ZodLiteral,\n ZodEnum: ZodEnum,\n ZodNativeEnum: ZodNativeEnum,\n ZodPromise: ZodPromise,\n ZodEffects: ZodEffects,\n ZodTransformer: ZodEffects,\n ZodOptional: ZodOptional,\n ZodNullable: ZodNullable,\n ZodDefault: ZodDefault,\n ZodCatch: ZodCatch,\n ZodNaN: ZodNaN,\n BRAND: BRAND,\n ZodBranded: ZodBranded,\n ZodPipeline: ZodPipeline,\n ZodReadonly: ZodReadonly,\n custom: custom,\n Schema: ZodType,\n ZodSchema: ZodType,\n late: late,\n get ZodFirstPartyTypeKind () { return ZodFirstPartyTypeKind; },\n coerce: coerce,\n any: anyType,\n array: arrayType,\n bigint: bigIntType,\n boolean: booleanType,\n date: dateType,\n discriminatedUnion: discriminatedUnionType,\n effect: effectsType,\n 'enum': enumType,\n 'function': functionType,\n 'instanceof': instanceOfType,\n intersection: intersectionType,\n lazy: lazyType,\n literal: literalType,\n map: mapType,\n nan: nanType,\n nativeEnum: nativeEnumType,\n never: neverType,\n 'null': nullType,\n nullable: nullableType,\n number: numberType,\n object: objectType,\n oboolean: oboolean,\n onumber: onumber,\n optional: optionalType,\n ostring: ostring,\n pipeline: pipelineType,\n preprocess: preprocessType,\n promise: promiseType,\n record: recordType,\n set: setType,\n strictObject: strictObjectType,\n string: stringType,\n symbol: symbolType,\n transformer: effectsType,\n tuple: tupleType,\n 'undefined': undefinedType,\n union: unionType,\n unknown: unknownType,\n 'void': voidType,\n NEVER: NEVER,\n ZodIssueCode: ZodIssueCode,\n quotelessJson: quotelessJson,\n ZodError: ZodError\n});\n\nexport { BRAND, DIRTY, EMPTY_PATH, INVALID, NEVER, OK, ParseStatus, ZodType as Schema, ZodAny, ZodArray, ZodBigInt, ZodBoolean, ZodBranded, ZodCatch, ZodDate, ZodDefault, ZodDiscriminatedUnion, ZodEffects, ZodEnum, ZodError, ZodFirstPartyTypeKind, ZodFunction, ZodIntersection, ZodIssueCode, ZodLazy, ZodLiteral, ZodMap, ZodNaN, ZodNativeEnum, ZodNever, ZodNull, ZodNullable, ZodNumber, ZodObject, ZodOptional, ZodParsedType, ZodPipeline, ZodPromise, ZodReadonly, ZodRecord, ZodType as ZodSchema, ZodSet, ZodString, ZodSymbol, ZodEffects as ZodTransformer, ZodTuple, ZodType, ZodUndefined, ZodUnion, ZodUnknown, ZodVoid, addIssueToContext, anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, coerce, custom, dateType as date, datetimeRegex, z as default, errorMap as defaultErrorMap, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, getErrorMap, getParsedType, instanceOfType as instanceof, intersectionType as intersection, isAborted, isAsync, isDirty, isValid, late, lazyType as lazy, literalType as literal, makeIssue, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, objectUtil, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, quotelessJson, recordType as record, setType as set, setErrorMap, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, util, voidType as void, z };\n","import { z } from \"zod\";\nimport { Media } from \"../types\";\n\nconst BASE_CF_URL = \"https://mediacrate.marteye.ie\";\n\n/**\n|--------------------------------------------------\n| START OF MEDIA CRATE CODE\n|--------------------------------------------------\n*/\nexport const processorPayload = z.object({\n assetPath: z.string().url({ message: \"URL is required\" }),\n suffix: z.string().min(1, { message: \"Suffix Type is required\" }),\n});\n\n// Adding Sizes here will make more end points in the mainConfig object\nexport const IMAGE_SIZES_VALUES = [\n \"thumbnail\",\n \"small\",\n \"medium\",\n \"large\",\n] as const;\n\nexport const VIDEO_TASKS_VALUES = [\"compressed\", \"thumbnail\"] as const;\n\nexport const videoTaskSchema = z.enum(VIDEO_TASKS_VALUES);\n\nexport const imageSizeSchema = z.enum(IMAGE_SIZES_VALUES);\n\nexport type ImageSize = z.infer<typeof imageSizeSchema>;\n\nexport type ProcessorPayload = z.infer<typeof processorPayload>;\n\nexport type VideoVMPayload = ProcessorPayload & {\n task: VideoTask;\n};\n\nexport type VideoTask = z.infer<typeof videoTaskSchema>;\n\n// We need a \"Origin Type\" - The main File to show to the user\nexport type SupportedFileTypesNames = \"image\" | \"video\" | \"file\";\n\nexport type VariantProcessingState = {\n fileName: string;\n thumbHash: string;\n path: string;\n url: string;\n fileType: string; // mimeType\n variants: Partial<\n Record<\n ImageSize | VideoTask,\n {\n url: string;\n isProcessing: boolean;\n type: SupportedFileTypesNames;\n }\n >\n >;\n};\n\n/**\n |--------------------------------------------------\n | END OF MEDIA CRATE CODE\n |--------------------------------------------------\n */\n\ntype MediaFinishUploadResponse = {\n message: string;\n mediaType: string;\n process: VariantProcessingState;\n};\nconst UPLOAD_PATHS = {\n START_UPLOAD: \"startMultipartUpload\",\n UPLOAD_PART: \"uploadChunk\",\n FINISH_UPLOAD: \"finishMultipartUpload\",\n CANCEL_UPLOAD: \"cancelUpload\",\n DELETE_UPLOAD: \"deleteUpload\",\n UPLOAD_SINGLE_FILE: \"upload\",\n} as const;\n\nexport type MediaUploadOptions = {\n marketId: string;\n saleId: string;\n lotId: string;\n attributeId: string;\n options?: {\n bucket?: \"raw\";\n parallelParts?: number;\n baseUrl?: string;\n progressCallback?: (progress: {\n /**\n * The state of the upload\n */\n state: \"uploading\" | \"finished\" | \"failed\" | \"starting\";\n /**\n * The progress of the upload\n */\n progress: number;\n /**\n * The current part number\n */\n currentPart?: number;\n /**\n * The total parts\n */\n totalParts?: number;\n }) => void;\n };\n};\n\n/**\n|--------------------------------------------------\n| Helper Functions\n|--------------------------------------------------\n*/\n\nconst MIME_TYPE_MAP: Record<string, string> = {\n png: \"image/png\",\n jpg: \"image/jpeg\",\n jpeg: \"image/jpeg\",\n mp4: \"video/mp4\",\n mov: \"video/quicktime\",\n qt: \"video/quicktime\",\n};\n\n/**\n|--------------------------------------------------\n| Make a File Path\n|--------------------------------------------------\n*/\nexport function createFilePath(\n marketId: string,\n saleId: string,\n lotId: string,\n attributeId: string,\n fileName: string\n) {\n return `/${marketId}/${saleId}/${lotId}/${attributeId}/${fileName}`;\n}\n\nconst getHeaders = (\n mimeType: string,\n bucket: string = \"raw\",\n token: string\n) => {\n const headers = new Headers();\n headers.append(\"mbtype\", bucket);\n headers.append(\"mmimetype\", mimeType);\n headers.append(\"Authorization\", `Bearer ${token}`);\n return headers;\n};\n/**\n * Starts a multipart upload process for a file\n * @param {Object} params - The parameters for starting the upload\n * @param {string} params.fileName - Name of the file without extension\n * @param {string} params.fileMimeType - MIME type of the file\n * @param {string} params.fileExtension - File extension\n * @param {MediaUploadOptions} params.options - Upload options including market, sale, lot and attribute IDs\n * @returns {Promise<{uploadId: string, filePath: string, fileMimeType: string, fileExtension: string, fileName: string}>}\n * @throws {Error} When upload initialization fails\n */\nexport const startUpload = async ({\n fileName,\n fileMimeType,\n fileExtension,\n token,\n options,\n}: {\n fileName: string;\n fileMimeType: string;\n fileExtension: string;\n token: string;\n options: MediaUploadOptions;\n}): Promise<{\n uploadId: string;\n filePath: string;\n fileMimeType: string;\n fileExtension: string;\n fileName: string;\n}> => {\n const headers = getHeaders(fileMimeType, options.options?.bucket, token);\n\n const formData = new FormData();\n\n const filePath = createFilePath(\n options.marketId,\n options.saleId,\n options.lotId,\n options.attributeId,\n `${fileName}.${fileExtension}`\n );\n\n formData.append(\"filePath\", filePath);\n headers.append(\"Authorization\", `Bearer ${token}`);\n\n let uploadIdResponse = await fetch(\n new URL(`${BASE_CF_URL}/${UPLOAD_PATHS.START_UPLOAD}`),\n {\n method: \"POST\",\n body: formData,\n headers: headers,\n }\n );\n if (!uploadIdResponse.ok) {\n throw new Error(\"Failed to start upload\");\n }\n\n const startedUploadJson = await uploadIdResponse.json();\n\n let uploadId = startedUploadJson.data.uploadId;\n\n if (!uploadId) {\n throw new Error(\"Failed to start upload\");\n }\n\n return {\n uploadId,\n filePath,\n fileName,\n fileMimeType,\n fileExtension,\n };\n};\n\nexport type ChunkedFile = {\n partNumber: string;\n chunk: string;\n fileExtension: string;\n fileMimeType: string;\n};\n\n/**\n * Splits a file into chunks for multipart upload\n * Note: Native does not have File Prototype, please implement your own chunking logic\n * @param {File} file - The file to be chunked\n * @param {number} chunkSize - Size of each chunk in bytes\n * @returns {Array<ChunkedFile>} Array of chunked file parts\n */\nexport const chunkFile = (\n file: File,\n chunkSize: number\n): Array<ChunkedFile> => {\n const totalParts = Math.ceil(file.size / chunkSize);\n const parts = [] as Array<ChunkedFile>;\n\n for (let i = 0; i < totalParts; i++) {\n const start = chunkSize * i;\n const end = Math.min(file.size, start + chunkSize);\n const part = file.slice(start, end).toString();\n parts.push({\n partNumber: `${i + 1}`,\n chunk: part,\n fileExtension: file.name.split(\".\").pop() || \"\",\n fileMimeType: file.type,\n });\n }\n return parts;\n};\n/**\n * Uploads a single part/chunk of a file\n * @param {ChunkedFile} chunkedFile - The chunk of file to upload\n * @param {string} uploadId - Upload ID from startUpload\n * @param {string} filePath - Path where file will be stored\n * @param {MediaUploadOptions} options - Upload options\n * @returns {Promise<{partNumber: string, eTag: string}>}\n * @throws {Error} When part upload fails\n */\nexport const uploadPart = async ({\n chunkedFile,\n uploadId,\n filePath,\n options,\n token,\n}: {\n chunkedFile: ChunkedFile;\n uploadId: string;\n filePath: string;\n options: MediaUploadOptions;\n token: string;\n}): Promise<{ partNumber: string; eTag: string }> => {\n const headers = getHeaders(\n chunkedFile.fileMimeType,\n options.options?.bucket,\n token\n );\n\n const formData = new FormData();\n formData.append(\"filePath\", filePath);\n formData.append(\"uploadId\", uploadId);\n formData.append(\"partNumber\", `${chunkedFile.partNumber}`);\n\n formData.append(\"file\", {\n uri: `data:${chunkedFile.fileMimeType};base64,${chunkedFile.chunk}`,\n type: chunkedFile.fileMimeType,\n name: `part_${chunkedFile.partNumber}.${chunkedFile.fileExtension}`,\n } as any);\n\n let uploadPartResponse = await fetch(\n new URL(`${BASE_CF_URL}/${UPLOAD_PATHS.UPLOAD_PART}`),\n {\n method: \"POST\",\n body: formData,\n headers: headers,\n }\n );\n\n if (!uploadPartResponse.ok) {\n throw new Error(\"Failed to upload part\");\n }\n const uploadPartJson = await uploadPartResponse.json();\n\n return {\n partNumber: chunkedFile.partNumber,\n eTag: uploadPartJson.data.eTag,\n };\n};\n\n/**\n * Completes a multipart upload by combining all parts\n * @param {string} filePath - Path where file is stored\n * @param {string} fileMimeType - MIME type of the file\n * @param {string} uploadId - Upload ID from startUpload\n * @param {Array<{partNumber: string, eTag: string}>} sections - Array of successfully uploaded parts\n * @param {MediaUploadOptions} options - Upload options\n * @returns {Promise<MediaFinishUploadResponse>}\n * @throws {Error} When finishing upload fails\n */\nexport const finishUpload = async ({\n filePath,\n fileMimeType,\n uploadId,\n sections,\n options,\n token,\n}: {\n filePath: string;\n fileMimeType: string;\n uploadId: string;\n sections: Array<{ partNumber: string; eTag: string }>;\n options: MediaUploadOptions;\n token: string;\n}): Promise<MediaFinishUploadResponse> => {\n const headers = getHeaders(fileMimeType, options.options?.bucket, token);\n\n const formData = new FormData();\n formData.append(\"filePath\", filePath);\n formData.append(\"uploadId\", uploadId);\n formData.append(\"sections\", JSON.stringify(sections));\n\n let finishUploadResponse = await fetch(\n new URL(`${BASE_CF_URL}/${UPLOAD_PATHS.FINISH_UPLOAD}`),\n {\n method: \"POST\",\n body: formData,\n headers: headers,\n }\n );\n\n if (!finishUploadResponse.ok) {\n throw new Error(\"Failed to finish upload\");\n }\n\n return await finishUploadResponse.json();\n};\n\n/**\n * Cancels an in-progress multipart upload\n * @param {string} uploadId - Upload ID to cancel\n * @param {string} filePath - Path of the file being uploaded\n * @param {string} fileMimeType - MIME type of the file\n * @param {MediaUploadOptions} options - Upload options\n * @returns {Promise<{data: boolean}>}\n * @throws {Error} When canceling upload fails\n */\nexport const cancelUpload = async ({\n uploadId,\n filePath,\n fileMimeType,\n options,\n token,\n}: {\n uploadId: string;\n filePath: string;\n fileMimeType: string;\n options: MediaUploadOptions;\n token: string;\n}): Promise<{ data: boolean }> => {\n const headers = getHeaders(fileMimeType, options.options?.bucket, token);\n const formDataAbort = new FormData();\n\n formDataAbort.append(\"uploadId\", uploadId);\n formDataAbort.append(\"filePath\", filePath);\n\n const abortUploadResponse = await fetch(\n new URL(`${BASE_CF_URL}/${UPLOAD_PATHS.CANCEL_UPLOAD}`),\n {\n headers: headers,\n method: \"POST\",\n body: formDataAbort,\n }\n );\n\n if (!abortUploadResponse.ok) {\n throw new Error(\"Failed to cancel upload\");\n }\n\n return await abortUploadResponse.json();\n};\n\n/**\n * Deletes a multipart upload\n * @param {string} fileUrl - The URL of the file to delete\n * @returns {Promise<{data: boolean}>}\n * @throws {Error} When deleting upload fails\n */\nexport const deleteUpload = async (\n fileUrl: string,\n token: string\n): Promise<{ data: boolean }> => {\n if (!fileUrl) {\n throw new Error(\"Invalid URL\");\n }\n const unlinkUrl = new URL(`${BASE_CF_URL}/${UPLOAD_PATHS.DELETE_UPLOAD}`);\n const headers = new Headers();\n const formDataAbort = new FormData();\n\n formDataAbort.append(\"fileUrl\", fileUrl);\n headers.append(\"Authorization\", `Bearer ${token}`);\n\n const unlinkAssets = await fetch(unlinkUrl, {\n headers: headers,\n method: \"DELETE\",\n body: formDataAbort,\n });\n\n if (!unlinkAssets.ok) {\n throw new Error(\"Error unlinking assets\");\n }\n return await unlinkAssets.json();\n};\n\nexport type FileInput = {\n file: File;\n uploadConfig: MediaUploadOptions;\n};\n\nexport type ChunkedInput = {\n fileName: string;\n chunks: ChunkedFile[];\n uploadConfig: MediaUploadOptions;\n};\n\n/**\n * Handles the complete file upload process including chunking and progress tracking -\n * WEB: Pass in a file and we will chunk it and upload it in parallel\n * NATIVE: You need to chunk the file yourself.\n * @param {FileInput | ChunkedInput} input - Either {file, options} or {fileName, chunks, options}\n * @returns {Promise<MediaFinishUploadResponse>}\n * @throws {Error} When upload fails\n */\nexport const uploadMultipartFile = async (\n input: FileInput | ChunkedInput,\n token: string\n): Promise<MediaFinishUploadResponse> => {\n let uploadId = \"\";\n let filePath = \"\";\n let fileMimeType = \"\";\n let fileName = \"\";\n let fileExtension = \"\";\n let chunks: ChunkedFile[] = [];\n let options = input.uploadConfig;\n\n try {\n const parallelParts = options.options?.parallelParts || 3;\n\n // Web can just pass in a file and we will chunk it\n if (\"file\" in input) {\n fileName = input.file.name.replace(/\\.[^/.]+$/, \"\");\n fileExtension = input.file.name.split(\".\").pop() || \"\";\n fileMimeType = input.file.type;\n chunks = chunkFile(input.file, 5 * 1024 * 1024);\n } else {\n // Native does not have File Prototype, so Native has to chunk the file (Base64) and pass it to us.\n fileName = input.fileName;\n fileExtension = input.chunks[0].fileExtension;\n fileMimeType = input.chunks[0].fileMimeType;\n chunks = input.chunks;\n }\n if (options.options?.progressCallback) {\n options.options.progressCallback({\n state: \"starting\",\n progress: 0,\n totalParts: chunks.length,\n currentPart: 0,\n });\n }\n const { uploadId: uploadIdResponseId, filePath: filePathResponse } =\n await startUpload({\n fileName,\n fileMimeType,\n fileExtension,\n token,\n options,\n });\n\n filePath = filePathResponse;\n uploadId = uploadIdResponseId;\n\n if (!uploadId) {\n throw new Error(\"Failed to start upload\");\n }\n let sections = [];\n for (let i = 0; i < chunks.length; i += parallelParts) {\n const batch = chunks.slice(i, i + parallelParts);\n const batchPromises = batch.map((c) =>\n uploadPart({ chunkedFile: c, uploadId, filePath, options, token })\n );\n // Wait for current batch to complete before starting next batch\n const batchResults = await Promise.all(batchPromises);\n sections.push(...batchResults);\n\n // Optionally update progress\n if (options.options?.progressCallback) {\n options.options.progressCallback({\n state: \"uploading\",\n progress: Math.min(1, (i + parallelParts) / chunks.length),\n currentPart: i + parallelParts,\n totalParts: chunks.length,\n });\n }\n }\n\n const finishUploadResponse = await finishUpload({\n filePath,\n fileMimeType,\n uploadId,\n sections,\n options,\n token,\n });\n if (options.options?.progressCallback) {\n options.options.progressCallback({\n state: \"finished\",\n progress: 1,\n currentPart: chunks.length,\n totalParts: chunks.length,\n });\n }\n return finishUploadResponse;\n } catch (error) {\n if (options.options?.progressCallback) {\n options.options.progressCallback({\n state: \"failed\",\n progress: 0,\n currentPart: 0,\n totalParts: chunks.length,\n });\n }\n // We only cancel if the uploadId is set\n if (uploadId) {\n await cancelUpload({\n uploadId,\n filePath,\n fileMimeType,\n options,\n token,\n }).catch((err) => {\n console.log(\"error\", err);\n });\n }\n throw new Error(\"Upload failed and canceled \" + error);\n }\n};\n\nexport type SingleFileInput =\n | {\n file?: File;\n filePath?: never;\n uploadConfig: MediaUploadOptions;\n }\n | {\n filePath?: string;\n file?: never;\n uploadConfig: MediaUploadOptions;\n };\n\nexport const uploadSingleFile = async (\n input: SingleFileInput,\n token: string\n): Promise<{\n message: string;\n data: Media;\n}> => {\n const { file, filePath, uploadConfig } = input;\n\n let fileMimeType = \"\";\n let destinationPath = \"\";\n let fileName = \"\";\n let fileExtension = \"\";\n\n if (!filePath && !file) {\n throw new Error(\"Either filePath or file must be provided\");\n }\n\n if (filePath && file) {\n throw new Error(\"Only one of filePath or file can be provided\");\n }\n\n // We perform a copy form one file to another\n if (filePath) {\n fileName = filePath.split(\"/\").pop() || \"\";\n fileExtension = fileName.split(\".\").pop() || \"\";\n fileMimeType = MIME_TYPE_MAP[fileExtension] || \"\";\n\n destinationPath = createFilePath(\n uploadConfig.marketId,\n uploadConfig.saleId,\n uploadConfig.lotId,\n uploadConfig.attributeId,\n `${fileName}`\n );\n }\n\n // We upload a single File\n if (file) {\n fileName = file.name.replace(/\\.[^/.]+$/, \"\");\n fileExtension = file.name.split(\".\").pop() || \"\";\n fileMimeType = file.type;\n\n destinationPath = createFilePath(\n uploadConfig.marketId,\n uploadConfig.saleId,\n uploadConfig.lotId,\n uploadConfig.attributeId,\n `${fileName}.${fileExtension}`\n );\n }\n // Construct the Fetch Request\n const uploadUrl = new URL(\n `${BASE_CF_URL}/${UPLOAD_PATHS.UPLOAD_SINGLE_FILE}`\n );\n const headers = new Headers();\n\n headers.append(\"mbtype\", \"raw\");\n headers.append(\"Authorization\", `Bearer ${token}`);\n headers.append(\"mmimetype\", fileMimeType);\n\n const formData = new FormData();\n\n filePath && formData.append(\"existingFilePath\", filePath);\n destinationPath && formData.append(\"filePath\", destinationPath);\n file && formData.append(\"file\", file);\n\n const uploadResponse = await fetch(uploadUrl, {\n headers: headers,\n method: \"POST\",\n body: formData,\n });\n\n if (!uploadResponse.ok) {\n throw new Error(\"Failed to upload single file\");\n }\n\n return (await uploadResponse.json()) as {\n message: string;\n data: Media;\n };\n};\n","// Multipart Upload for Media to the MARTEYE Media Service\n\nimport {\n deleteUpload,\n uploadMultipartFile,\n uploadSingleFile,\n} from \"../utils/multipart-upload\";\n\nexport default function create() {\n const files = {\n uploadSingleFile: async (\n input: Parameters<typeof uploadSingleFile>[0],\n token: string\n ) => {\n return await uploadSingleFile(input, token);\n },\n uploadMultipartFile: async (\n input: Parameters<typeof uploadMultipartFile>[0],\n token: string\n ) => {\n return await uploadMultipartFile(input, token);\n },\n\n deleteFile: async (fileUrl: string, token: string) => {\n return await deleteUpload(fileUrl, token);\n },\n };\n\n return files;\n}\n\nexport type Files = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { Invoice } from \"../types\";\n\n// Define the type for the paginated invoices response\nexport interface InvoicesListResponse {\n invoices: Invoice[];\n lastId: string | null;\n hasMore: boolean;\n}\n\nexport default function create(httpClient: HttpClient) {\n const invoices = {\n /**\n * List all invoices for a market with pagination\n * @param marketId - ID of the market\n * @param lastId - ID of the last invoice from previous page (for pagination)\n * @returns Paginated list of invoices\n */\n list: async (\n marketId: string,\n lastId?: string | null\n ): Promise<InvoicesListResponse> => {\n let params: Record<string, string> = {};\n if (lastId) {\n params.lastId = lastId;\n }\n return httpClient.get<InvoicesListResponse>(\n `/${marketId}/invoices`,\n params\n );\n },\n\n /**\n * Get a specific invoice by ID\n * @param marketId - ID of the market\n * @param invoiceId - ID of the invoice to fetch\n * @returns The invoice details\n */\n get: async (marketId: string, invoiceId: string): Promise<Invoice> => {\n return httpClient.get<Invoice>(`/${marketId}/invoices/${invoiceId}`);\n },\n };\n\n return invoices;\n}\n\nexport type Invoices = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { LotItem } from \"../types\";\n\nexport default function create(httpClient: HttpClient) {\n return {\n create: async (\n marketId: string,\n saleId: string,\n lotId: string,\n data: {\n attributes?: Record<string, any>;\n notes?: Array<{\n text: string;\n }>;\n metadata?: Record<string, any>;\n }\n ) => {\n return httpClient.post<LotItem>(\n `/${marketId}/sales/${saleId}/lots/${lotId}/items`,\n data\n );\n },\n update: async (\n marketId: string,\n saleId: string,\n lotId: string,\n itemId: string,\n data: {\n attributes?: Record<string, any>;\n index?: number;\n metadata?: Record<string, any>;\n }\n ) => {\n return httpClient.post<LotItem>(\n `/${marketId}/sales/${saleId}/lots/${lotId}/items/${itemId}`,\n data\n );\n },\n delete: async (\n marketId: string,\n saleId: string,\n lotId: string,\n itemId: string\n ) => {\n return httpClient.delete(\n `/${marketId}/sales/${saleId}/lots/${lotId}/items/${itemId}`\n );\n },\n };\n}\n\nexport type LotItems = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { Lot, LotSaleStatus } from \"../types\";\n\n/**\n * Defines the possible status values for a lot in a sale\n */\n\nexport default function create(httpClient: HttpClient) {\n return {\n get: async (marketId: string, saleId: string, lotId: string) => {\n return httpClient.get<Lot>(`/${marketId}/sales/${saleId}/lots/${lotId}`);\n },\n list: async (\n marketId: string,\n saleId: string,\n filters?: {\n group?: string;\n productCode?: string;\n saleStatus?: LotSaleStatus;\n sellerCustomerId?: string;\n buyerCustomerId?: string;\n }\n ) => {\n return httpClient.get<Lot[]>(`/${marketId}/sales/${saleId}/lots`, filters);\n },\n create: async (\n marketId: string,\n saleId: string,\n data: {\n index?: number;\n lotNumber?: string;\n group?: string;\n productCode?: string;\n sellerCustomerId?: string;\n attributes?: Record<string, any>;\n metadata?: Record<string, any>;\n buyerCustomerId?: string;\n unitPriceInCents?: number;\n reservePriceInCents?: number;\n startingPriceInCents?: number;\n startAt?: string;\n endAt?: string;\n previousLotNumber?: string;\n saleStatus?: LotSaleStatus;\n }\n ) => {\n return httpClient.post<Lot>(`/${marketId}/sales/${saleId}/lots`, data);\n },\n update: async (\n marketId: string,\n saleId: string,\n lotId: string,\n data: {\n productCode?: string;\n attributes?: Record<string, any>;\n sellerCasual?: string | null;\n sellerCustomerId?: string | null;\n lotNumber?: string | null;\n remarks?: string;\n notes?: string;\n unitOfSale?: \"Per KG\" | \"Per Item\" | \"Per Lot\" | \"Per 1000KG\";\n unitPriceInCents?: number;\n reservePriceInCents?: number;\n startingPriceInCents?: number;\n buyerCasual?: string | null;\n buyerCustomerId?: string | null;\n startAt?: string | null;\n endAt?: string | null;\n saleStatus?: LotSaleStatus;\n metadata?: Record<string, any>;\n inputAccessories?: Record<string, any>;\n }\n ) => {\n return httpClient.post<Lot>(\n `/${marketId}/sales/${saleId}/lots/${lotId}`,\n data\n );\n },\n delete: async (marketId: string, saleId: string, lotId: string) => {\n return httpClient.delete(`/${marketId}/sales/${saleId}/lots/${lotId}`);\n },\n };\n}\n\nexport type Lots = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { Market } from \"../types\";\n\nexport default function create(httpClient: HttpClient) {\n const markets = {\n get: async (marketId: string) => {\n return httpClient.get<Market>(`/${marketId}`);\n },\n // update: async (marketId: string, market: Partial<Market>) => {\n // // return httpClient.put<Market>(`/${marketId}`, market);\n // },\n // create: async (market: Market) => {\n // // return httpClient.post<Market>(\"/\", market);\n // },\n // //\n // watch: async (marketId: string, callback: (market: Market) => void) => {\n // // return httpClient.post<Market>(`/${marketId}/watch`);\n // },\n // hint: async (marketId: string, callback: () => void) => {\n // // return httpClient.post<Market>(`/${marketId}/hint`);\n // },\n };\n\n return markets;\n}\n\nexport type Markets = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { Payment } from \"../types\";\n\n// Define the type for the paginated payments response\nexport interface PaymentsListResponse {\n payments: Payment[];\n lastId: string | null;\n hasMore: boolean;\n}\n\nexport default function create(httpClient: HttpClient) {\n const payments = {\n /**\n * List all payments for a market with pagination\n * @param marketId - ID of the market\n * @param lastId - ID of the last payment from previous page (for pagination)\n * @returns Paginated list of payments\n */\n list: async (\n marketId: string,\n lastId?: string | null\n ): Promise<PaymentsListResponse> => {\n let params: Record<string, string> = {};\n if (lastId) {\n params.lastId = lastId;\n }\n return httpClient.get<PaymentsListResponse>(\n `/${marketId}/payments`,\n params\n );\n },\n\n /**\n * Get a specific payment by ID\n * @param marketId - ID of the market\n * @param paymentId - ID of the payment to fetch\n * @returns The payment details\n */\n get: async (marketId: string, paymentId: string): Promise<Payment> => {\n return httpClient.get<Payment>(`/${marketId}/payments/${paymentId}`);\n },\n };\n\n return payments;\n}\n\nexport type Payments = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { Payout } from \"../types\";\n\n// Define the type for the paginated payouts response\nexport interface PayoutsListResponse {\n payouts: Payout[];\n lastId: string | null;\n hasMore: boolean;\n}\n\n// Define the type for the create payout response\nexport interface PayoutCreateResponse {\n payout: Payout;\n}\n\n// Define the type for creating a payout\nexport interface CreatePayoutRequest {\n /** IDs of the seller invoices this payout is for. All must be for the same customer and have status \"issued\". */\n invoiceIds: string[];\n /** Payout method */\n method: \"BACS\" | \"Cheque\" | \"Cash\";\n /** Payout amount in cents. If not provided, defaults to the sum of amountDueInCents across all invoices. */\n amountInCents?: number;\n /** Transaction date (ISO 8601). Defaults to now. */\n transactionDate?: string;\n /** Cheque number or BACS reference */\n reference?: string | null;\n /** Optional notes */\n notes?: string | null;\n /** Account holder name (BACS only). Falls back to customer bank details or display name. */\n accountName?: string;\n /** 8-digit account number (BACS only). Falls back to customer bank details. */\n accountNumber?: string;\n /** 6-digit sort code (BACS only). Falls back to customer bank details. */\n sortCode?: string;\n /** Name on cheque (Cheque only). Falls back to customer display name. */\n chequeMadePayableTo?: string;\n}\n\nexport default function create(httpClient: HttpClient) {\n const payouts = {\n /**\n * List all payouts for a market with pagination\n * @param marketId - ID of the market\n * @param lastId - ID of the last payout from previous page (for pagination)\n * @returns Paginated list of payouts\n */\n list: async (\n marketId: string,\n lastId?: string | null\n ): Promise<PayoutsListResponse> => {\n let params: Record<string, string> = {};\n if (lastId) {\n params.lastId = lastId;\n }\n return httpClient.get<PayoutsListResponse>(\n `/${marketId}/payouts`,\n params\n );\n },\n\n /**\n * Get a specific payout by ID\n * @param marketId - ID of the market\n * @param payoutId - ID of the payout to fetch\n * @returns The payout details\n */\n get: async (marketId: string, payoutId: string): Promise<Payout> => {\n return httpClient.get<Payout>(`/${marketId}/payouts/${payoutId}`);\n },\n\n /**\n * Create a payout for one or more seller invoices.\n * Use this to re-create a payout after voiding (e.g., lost cheque).\n * Payment details will fall back to customer defaults if not provided.\n * @param marketId - ID of the market\n * @param data - Payout creation data\n * @returns The created payout\n */\n create: async (\n marketId: string,\n data: CreatePayoutRequest\n ): Promise<PayoutCreateResponse> => {\n return httpClient.post<PayoutCreateResponse>(\n `/${marketId}/payouts`,\n data\n );\n },\n };\n\n return payouts;\n}\n\nexport type Payouts = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { ProductCodeConfiguration } from \"../types\";\n\nexport default function create(httpClient: HttpClient) {\n return {\n list: async (marketId: string) => {\n return httpClient.get<ProductCodeConfiguration[]>(\n `/${marketId}/product-codes`\n );\n },\n get: async (marketId: string, id: string) => {\n return httpClient.get<ProductCodeConfiguration>(\n `/${marketId}/product-codes/${id}`\n );\n },\n create: async (marketId: string, data: Partial<ProductCodeConfiguration>) => {\n return httpClient.post<ProductCodeConfiguration>(\n `/${marketId}/product-codes`,\n data\n );\n },\n update: async (\n marketId: string,\n id: string,\n data: Partial<ProductCodeConfiguration>\n ) => {\n return httpClient.post<ProductCodeConfiguration>(\n `/${marketId}/product-codes/${id}`,\n data\n );\n },\n };\n}\n\nexport type ProductCodes = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { Sale, SalePublishStatus } from \"../types\";\n\ntype SalesListResponse = {\n start: string;\n end: string;\n sales: Sale[];\n};\n\n// Response type for creating a sale\ntype CreateSaleResponse = {\n saleId: string;\n};\n\n// Request type for creating a sale\ntype CreateSaleRequest = {\n name: string;\n startsAt: string;\n availableProductCodes: string[];\n recurring?: null | \"Weekly\" | \"Bi-weekly\" | \"Monthly\";\n martEyeSaleType?: \"LIVE\" | \"TIMED\" | null;\n location?: string | null;\n description?: string | null;\n image?: string | null;\n cover?: string | null;\n templateId?: string | null;\n attributeDefaults?: {\n [attributekey: string]: string | number | boolean;\n };\n};\n\nexport default function create(httpClient: HttpClient) {\n return {\n get: async (marketId: string, saleId: string) => {\n return httpClient.get<Sale>(`/${marketId}/sales/${saleId}`);\n },\n list: async (\n marketId: string,\n opts: {\n start?: string;\n end?: string;\n }\n ) => {\n return httpClient.get<SalesListResponse>(`/${marketId}/sales`, opts);\n },\n create: async (marketId: string, saleData: CreateSaleRequest) => {\n return httpClient.post<CreateSaleResponse>(\n `/${marketId}/sales`,\n saleData\n );\n },\n update: async (\n marketId: string,\n saleId: string,\n data: {\n name?: string;\n startsAt?: string;\n recurring?: \"Weekly\" | \"Bi-weekly\" | \"Monthly\" | null;\n defaultProductCode?: string;\n attributeDefaults?: Record<string, any>;\n publishStatus?: SalePublishStatus;\n marteyeSettings?: {\n description?: string;\n image?: string;\n logo?: string;\n type: \"LIVE\" | \"TIMED\";\n location?: string | null;\n descriptionLines?: string[];\n descriptionLink?: string;\n deposit?: number;\n hidePrices?: boolean;\n hideReplay?: boolean;\n labels?: string[];\n tags?: string[];\n details?: Array<{\n markdownBase64: string;\n title: string;\n }>;\n cover?: string;\n primaryColour?: string;\n secondaryColour?: string;\n foregroundColour?: string;\n extensionTime?: number;\n incrementLadder?: Array<{\n max: number;\n increment: number;\n }>;\n hideNav?: boolean;\n signInOverrideLink?: string;\n published?: boolean;\n pin?: boolean;\n cascade?: boolean;\n reportEmail?: string;\n queueLots?: boolean;\n } | null;\n }\n ) => {\n return httpClient.post<Sale>(`/${marketId}/sales/${saleId}`, data);\n },\n };\n}\n\nexport type Sales = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { SaleTemplate } from \"../types\";\n\ntype CreateTemplateRequest = {\n saleId: string;\n name: string;\n description?: string | null;\n};\n\ntype UpdateTemplateRequest = {\n name?: string;\n description?: string | null;\n};\n\nexport default function create(httpClient: HttpClient) {\n return {\n list: async (marketId: string) => {\n return httpClient.get<{ templates: SaleTemplate[] }>(\n `/${marketId}/sale-templates`\n );\n },\n get: async (marketId: string, templateId: string) => {\n return httpClient.get<{ template: SaleTemplate }>(\n `/${marketId}/sale-templates/${templateId}`\n );\n },\n create: async (marketId: string, body: CreateTemplateRequest) => {\n return httpClient.post<{ templateId: string }>(\n `/${marketId}/sale-templates`,\n body\n );\n },\n update: async (\n marketId: string,\n templateId: string,\n body: UpdateTemplateRequest\n ) => {\n return httpClient.post<{ template: SaleTemplate }>(\n `/${marketId}/sale-templates/${templateId}`,\n body\n );\n },\n delete: async (marketId: string, templateId: string) => {\n return httpClient.delete<{ success: boolean }>(\n `/${marketId}/sale-templates/${templateId}`\n );\n },\n };\n}\n\nexport type SaleTemplates = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\n\n/**\n * Search result interface based on the API implementation\n */\nexport interface SearchResult {\n hits: Array<{\n id: string;\n marketId: string;\n title: string;\n [key: string]: any;\n }>;\n processingTimeMs: number;\n query: string;\n}\n\nexport default function create(httpClient: HttpClient) {\n let search = {\n /**\n * Search for documents within a market\n * @param marketId - ID of the market to search in\n * @param query - Search query string\n * @returns Search results containing matching documents\n */\n query: async (marketId: string, query: string) => {\n return httpClient.get<SearchResult>(`/${marketId}/search`, { q: query });\n },\n };\n\n return search;\n}\n\nexport type Search = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { SettingsMarketDefaults } from \"../types\";\n\nexport default function create(httpClient: HttpClient) {\n return {\n get: async (marketId: string) => {\n return httpClient.get<SettingsMarketDefaults>(`/${marketId}/settings`);\n },\n };\n}\n\nexport type Settings = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { TaxRate } from \"../types\";\n\nexport default function create(httpClient: HttpClient) {\n return {\n list: async (marketId: string) => {\n return httpClient.get<TaxRate[]>(`/${marketId}/tax_rates`);\n },\n get: async (marketId: string, id: string) => {\n return httpClient.get<TaxRate>(`/${marketId}/tax_rates/${id}`);\n },\n };\n}\n\nexport type TaxRates = ReturnType<typeof create>;\n","// Path: studiojs/src/resources/markets.ts\n\nimport { createHmac } from \"crypto\";\nimport { HttpClient } from \"../net/http\";\nimport { WebhookEvent } from \"../types\";\n\nexport default function create(_: HttpClient) {\n const webhooks = {\n /***\n * This is used to construct the webhook event from the request body\n * @param body the request body\n * @param signature the signature of the request taken from the header\n * @param endpointSecret the pre-shared secret\n * @returns the webhook event\n */\n constructEvent: async <T extends any>(\n bodyAsBuffer: Buffer,\n signature: string | undefined | null,\n endpointSecret: string | undefined | null\n ) => {\n if (!endpointSecret) {\n throw new Error(\"Endpoint secret is required\");\n }\n\n if (!signature) {\n throw new Error(\"Signature is required\");\n }\n\n let bodyText = bodyAsBuffer.toString();\n\n let expectedSignature = createHmac(\"sha256\", endpointSecret)\n .update(bodyText)\n .digest(\"hex\");\n\n if (signature !== expectedSignature) {\n console.error(\n `Unable to construct event. Signature mismatch.`,\n signature,\n \"!=\",\n expectedSignature\n );\n throw new Error(`Unable to construct event. Signature mismatch.`);\n }\n\n try {\n return JSON.parse(bodyText) as WebhookEvent<T>;\n } catch (e) {\n throw new Error(`Unable to construct event. ${e}`);\n }\n },\n };\n\n return webhooks;\n}\n\nexport type Webhooks = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { CphLookupResponse } from \"../types\";\n\nexport default function create(httpClient: HttpClient) {\n return {\n lookup: async (marketId: string, cph: string) =>\n httpClient.get<CphLookupResponse>(`/${marketId}/cph`, { cph }),\n };\n}\n\nexport type Cph = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\nimport { CustomerContact } from \"../types\";\n\nexport interface ListContactsResponse {\n contacts: CustomerContact[];\n lastId: string | null;\n hasMore: boolean;\n}\n\nexport interface CreateOrUpdateContactPayload {\n id?: string;\n displayName?: string | null;\n email?: string | null;\n phoneNumber?: string | null;\n notes?: string | null;\n marteyeUid?: string | null;\n accountEmails?: boolean;\n marketingEmails?: boolean;\n}\n\nexport default function create(httpClient: HttpClient) {\n return {\n list: async (\n marketId: string,\n customerId: string,\n params?: { lastId?: string; limit?: number }\n ): Promise<ListContactsResponse> => {\n const query: Record<string, any> = {};\n if (params?.lastId) query.lastId = params.lastId;\n if (params?.limit) query.limit = params.limit;\n return httpClient.get<ListContactsResponse>(\n `/${marketId}/customers/${customerId}/contacts`,\n query\n );\n },\n get: async (marketId: string, customerId: string, contactId: string) => {\n return httpClient.get<CustomerContact>(\n `/${marketId}/customers/${customerId}/contacts/${contactId}`\n );\n },\n create: async (\n marketId: string,\n customerId: string,\n payload: CreateOrUpdateContactPayload\n ) => {\n return httpClient.post<CustomerContact>(\n `/${marketId}/customers/${customerId}/contacts`,\n payload\n );\n },\n update: async (\n marketId: string,\n customerId: string,\n contactId: string,\n payload: CreateOrUpdateContactPayload\n ) => {\n return httpClient.post<CustomerContact>(\n `/${marketId}/customers/${customerId}/contacts/${contactId}`,\n payload\n );\n },\n delete: async (marketId: string, customerId: string, contactId: string) => {\n return httpClient.delete<void>(\n `/${marketId}/customers/${customerId}/contacts/${contactId}`\n );\n },\n };\n}\n\nexport type Contacts = ReturnType<typeof create>;\n","import { HttpClient } from \"../net/http\";\n\nexport interface LedgerBalanceResponse {\n balanceInCents: number;\n}\n\nexport interface LedgerTransaction {\n id: string;\n createdAt: string;\n updatedAt: string;\n transactionDate: string;\n marketId: string;\n account: string;\n rollUpAccounts: string[];\n accountType: \"income\" | \"expense\" | \"asset\" | \"liability\" | \"equity\";\n accountName: string;\n owner: \"market\" | string;\n isMarketAccount: boolean;\n amountInCents: number;\n batchId: string;\n batchDescription: string;\n referenceId: string;\n referenceType: string;\n referenceTxnCount: number;\n referenceGroupKey: string;\n tags: Record<string, string | number | boolean>;\n parentTransactionId: string | null;\n currentBalanceInCents: number;\n sumOfCreditsInCents: number;\n sumOfDebitsInCents: number;\n index: number;\n}\n\nexport interface TransactionsListResponse {\n transactions: LedgerTransaction[];\n nextCursor: string | null;\n hasMore: boolean;\n}\n\nexport interface ListTransactionsParams {\n account: string;\n dateFrom?: string;\n dateTo?: string;\n limit?: number;\n cursor?: string;\n}\n\nexport default function create(httpClient: HttpClient) {\n let ledger = {\n /**\n * Get the current balance for a ledger account\n * @param marketId - ID of the market\n * @param account - Full account string (format: owner:accountType:accountName)\n * e.g. \"customerId:asset:trade receivable\" or \"market:liability:trade payable\"\n * @returns The current balance in cents\n */\n getBalance: async (\n marketId: string,\n account: string\n ): Promise<LedgerBalanceResponse> => {\n return httpClient.get<LedgerBalanceResponse>(\n `/${marketId}/ledger/balance`,\n { account }\n );\n },\n\n /**\n * Get a transaction by ID\n * @param marketId - ID of the market\n * @param transactionId - ID of the transaction\n * @returns The transaction details\n */\n getTransaction: async (\n marketId: string,\n transactionId: string\n ): Promise<LedgerTransaction> => {\n return httpClient.get<LedgerTransaction>(\n `/${marketId}/ledger/transactions/${transactionId}`\n );\n },\n\n /**\n * Get the latest transaction on an account\n * @param marketId - ID of the market\n * @param account - Full account string (format: owner:accountType:accountName)\n * @returns The latest transaction on the account\n */\n getLatestTransaction: async (\n marketId: string,\n account: string\n ): Promise<LedgerTransaction> => {\n return httpClient.get<LedgerTransaction>(\n `/${marketId}/ledger/transactions/latest`,\n { account }\n );\n },\n\n /**\n * List transactions for an account with optional date range and pagination\n * @param marketId - ID of the market\n * @param params - Query parameters\n * @param params.account - Full account string (format: owner:accountType:accountName)\n * @param params.dateFrom - Optional start date (ISO 8601 format, e.g. \"2024-01-01\")\n * @param params.dateTo - Optional end date (ISO 8601 format, e.g. \"2024-12-31\")\n * @param params.limit - Optional max results (default 50, max 100)\n * @param params.cursor - Optional cursor for pagination\n * @returns List of transactions with pagination info\n */\n listTransactions: async (\n marketId: string,\n params: ListTransactionsParams\n ): Promise<TransactionsListResponse> => {\n let queryParams: Record<string, string | number | undefined> = {\n account: params.account,\n dateFrom: params.dateFrom,\n dateTo: params.dateTo,\n limit: params.limit,\n cursor: params.cursor,\n };\n return httpClient.get<TransactionsListResponse>(\n `/${marketId}/ledger/transactions`,\n queryParams\n );\n },\n };\n\n return ledger;\n}\n\nexport type Ledger = ReturnType<typeof create>;\n","import type { HttpClient } from \"./net/http\";\n\nimport actions from \"./resources/actions\";\nimport activity from \"./resources/activity\";\nimport adjustments from \"./resources/adjustments\";\nimport carts from \"./resources/carts\";\nimport extras from \"./resources/extras\";\nimport bidderApplications from \"./resources/bidderApplications\";\nimport customers from \"./resources/customers\";\nimport files from \"./resources/files\";\nimport invoices from \"./resources/invoices\";\nimport lotItems from \"./resources/lotItems\";\nimport lots from \"./resources/lots\";\nimport markets from \"./resources/markets\";\nimport payments from \"./resources/payments\";\nimport payouts from \"./resources/payouts\";\nimport productCodes from \"./resources/productCodes\";\nimport sales from \"./resources/sales\";\nimport saleTemplates from \"./resources/saleTemplates\";\nimport search from \"./resources/search\";\nimport settings from \"./resources/settings\";\nimport taxRates from \"./resources/taxRates\";\nimport webhooks from \"./resources/webhooks\";\nimport cph from \"./resources/cph\";\nimport contacts from \"./resources/contacts\";\nimport ledger from \"./resources/ledger\";\n\nexport default function resources(httpClient: HttpClient) {\n return {\n activity: activity(httpClient),\n markets: markets(httpClient),\n sales: sales(httpClient),\n lots: lots(httpClient),\n lotitems: lotItems(httpClient),\n carts: carts(httpClient),\n cph: cph(httpClient),\n webhooks: webhooks(httpClient),\n actions: actions(httpClient),\n bidderApplications: bidderApplications(httpClient),\n settings: settings(httpClient),\n adjustments: adjustments(httpClient),\n extras: extras(httpClient),\n productCodes: productCodes(httpClient),\n saleTemplates: saleTemplates(httpClient),\n taxRates: taxRates(httpClient),\n customers: customers(httpClient),\n invoices: invoices(httpClient),\n payments: payments(httpClient),\n payouts: payouts(httpClient),\n search: search(httpClient),\n files: files(),\n contacts: contacts(httpClient),\n ledger: ledger(httpClient),\n };\n}\n","import getFetch from \"./net/fetch\";\nimport HttpClient from \"./net/http\";\nimport Resources from \"./resources\";\n\nconst BaseUrl = \"https://app.marteyestudio.com/api\";\nconst DefaultTimeout = 10000;\n\nexport type StudioInstance = ReturnType<typeof Resources> & {\n isDebugMode: boolean;\n};\n\nexport function Studio(\n info: {\n apiKey?: string;\n baseUrl?: string;\n defaultTimeout?: number;\n debug?: boolean;\n } = {}\n) {\n let apiKeyOrNull = info.apiKey ?? process.env.STUDIO_API_KEY;\n if (!apiKeyOrNull) {\n throw new Error(\"Studio API key is not set\");\n }\n\n let infoWithDefaults = {\n apiKey: apiKeyOrNull,\n baseUrl: info.baseUrl ?? BaseUrl,\n defaultTimeout: info.defaultTimeout ?? DefaultTimeout,\n debug: info.debug ?? false,\n };\n\n let httpClient = HttpClient(\n infoWithDefaults.baseUrl,\n infoWithDefaults.apiKey,\n getFetch(),\n infoWithDefaults.defaultTimeout,\n infoWithDefaults.debug\n );\n\n return {\n ...Resources(httpClient),\n isDebugMode: infoWithDefaults.debug,\n };\n}\n","type Timestamp = string; // ISO 8601\r\n\r\n// dicates vat and commission applicatble to the line item\r\nexport type ClientType = \"Seller\" | \"Buyer\";\r\n\r\nexport type SuperType =\r\n | \"Sheep\"\r\n | \"Goats\"\r\n | \"Cattle\"\r\n | \"Pigs\"\r\n | \"Horses\"\r\n | \"Deer\"\r\n | \"Poultry\"\r\n | \"Machinery\"\r\n | \"Antiques\"\r\n | \"Other\";\r\n\r\nexport const SupportedSuperTypes: SuperType[] = [\r\n \"Sheep\",\r\n \"Goats\",\r\n \"Cattle\",\r\n \"Pigs\",\r\n \"Horses\",\r\n \"Deer\",\r\n \"Poultry\",\r\n \"Machinery\",\r\n \"Antiques\",\r\n \"Other\",\r\n];\r\nexport const LivestockSuperTypes: SuperType[] = [\r\n \"Sheep\",\r\n \"Goats\",\r\n \"Cattle\",\r\n \"Pigs\",\r\n \"Horses\",\r\n \"Deer\",\r\n \"Poultry\",\r\n];\r\n\r\nexport type Currency = \"GBP\" | \"EUR\" | \"USD\";\r\nexport const SupportedCurrencyCodes: Currency[] = [\"GBP\", \"EUR\", \"USD\"];\r\n// ISO 3166-2:GB\r\nexport type SupportedCountryCode =\r\n | \"GB-ENG\"\r\n | \"GB-SCT\"\r\n | \"GB-WLS\"\r\n | \"GB-NIR\"\r\n | \"IE\";\r\nexport type CurrenciesWithGuinea = Currency | \"GUINEA-GBP\";\r\n\r\nexport type UnitOfSale =\r\n | \"Per KG\"\r\n | \"Per Item\" /* aka 'per head'*/\r\n | \"Per Lot\"\r\n | \"Per 1000KG\";\r\nexport const SupportedUnitsOfSale: UnitOfSale[] = [\r\n \"Per KG\",\r\n \"Per Item\",\r\n \"Per Lot\",\r\n \"Per 1000KG\",\r\n];\r\nexport type PaymentMethod =\r\n | \"BACS\"\r\n | \"Cheque\"\r\n | \"BankTransfer\"\r\n | \"Cash\"\r\n | \"Card\"\r\n | \"Credit\"; // contra\r\n\r\nexport type InvoiceDeliveryPreference = \"email\" | \"printed\" | \"both\";\r\nexport type PayoutMethod = \"BACS\" | \"Cheque\" | \"Cash\";\r\n\r\nexport const SupportedPaymentMethods: PaymentMethod[] = [\r\n \"BACS\",\r\n \"Cheque\",\r\n \"BankTransfer\",\r\n \"Cash\",\r\n \"Card\",\r\n \"Credit\",\r\n];\r\n\r\nexport interface Market {\r\n id: string;\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n\r\n name: string;\r\n description: string;\r\n\r\n logo: string;\r\n primaryColour: string;\r\n secondaryColour: string;\r\n\r\n countryCode: SupportedCountryCode;\r\n\r\n address: Address;\r\n\r\n telephone?: string;\r\n vatNumber?: string;\r\n email?: string;\r\n\r\n movementLocationNumbers?: {\r\n number: string;\r\n type: \"CPH\" | \"Herd Number\" | \"Flock Number\" | \"Other\";\r\n // the issuing country that the holding number is valid for\r\n createdAt: Timestamp;\r\n }[];\r\n\r\n // Displayed on the invoice and other documents\r\n paymentInstructions?: string;\r\n\r\n // --/ settings\r\n}\r\n\r\nexport interface SettingsMarketDefaults {\r\n updatedAt: Timestamp;\r\n updatedBy: string | null;\r\n marketId: string;\r\n\r\n name: string;\r\n description: string;\r\n address: Address;\r\n defaultCurrency: Currency;\r\n defaultPayoutPreference: PayoutMethod;\r\n defaultUnitOfSale: UnitOfSale; // the fallback if the product code doesn't have one\r\n\r\n defaultSuperType?: SuperType | null;\r\n defaultSettleDebtsFirst?: boolean;\r\n\r\n // When enabled, emails are sent to actual customers. When disabled, emails are redirected to the market email address.\r\n liveEmailsEnabled?: boolean;\r\n\r\n lotDescriptionTemplateMap?: {\r\n default: string | undefined;\r\n [supertype: string]: string | undefined;\r\n };\r\n\r\n rostrumAttributesMap?: {\r\n default: string[] | undefined;\r\n [supertype: string]: string[] | undefined;\r\n };\r\n\r\n // When printing all docs are not selected by default\r\n // You can override that here for whole classes of supertypes\r\n // Add the ID to deselect it when printing. This can be overridden product code\r\n // the most specific setting will be used\r\n selectDocumentIdsMap: {\r\n [supertype: string]: string[];\r\n };\r\n}\r\n\r\nexport interface SettingsProductCodes {\r\n [code: string]: ProductCodeConfiguration;\r\n}\r\n\r\nexport interface SettingsTaxRates {\r\n [id: string]: TaxRate;\r\n}\r\n\r\nexport interface SettingsAdjustmentsConfiguration {\r\n [id: string]: AdjustmentsConfiguration;\r\n}\r\n\r\nexport interface SettingsAccessories {\r\n [id: string]: Accessory;\r\n}\r\n\r\nexport interface SettingsPrinters {\r\n [id: string]: Printer;\r\n}\r\n\r\nexport type DeviceType = \"globeWeigh\" | \"allflexRaceReader\";\r\n\r\nexport interface Accessory {\r\n deviceId: string;\r\n deviceType: DeviceType;\r\n friendlyName: string;\r\n endOfMessagePattern: string;\r\n host: string;\r\n isEnabled: boolean;\r\n port: number;\r\n regex: string;\r\n saleProfileId: string;\r\n timeoutMs: number;\r\n updatedAt: Timestamp;\r\n createdAt: Timestamp;\r\n}\r\n\r\n/**\r\n * @description Configuration for the printer\r\n */\r\nexport interface Printer {\r\n id: string; // our unique id for the printer may include Tray at end if multiple trays\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n\r\n /**\r\n * @description The name of the printer. Its the same as the id\r\n */\r\n name: string; // name of the printer which is used by pdf-to-printer\r\n friendlyName: string; // friendly name e.g. Printer In Office\r\n /**\r\n * Optional single IPP URI if linked by IP discovery\r\n */\r\n uri?: string;\r\n chequePrinter?: boolean;\r\n /**\r\n * The next cheque number to use when printing a cheque\r\n */\r\n nextChequeNumber?: number;\r\n lastPrintedAt?: Timestamp;\r\n lastPrinterMessage?: string;\r\n}\r\n\r\n// in global studio settings\r\nexport interface SettingsGlobalAttributes {\r\n [id: string]: AttributeDefinition;\r\n}\r\n\r\nexport type AttributeValueType =\r\n | string\r\n | number\r\n | boolean\r\n | Timestamp\r\n | Media\r\n | Media[];\r\n\r\n/****\r\n * Used to grant a user access to a market.\r\n * Each member of staff should have their own.\r\n */\r\nexport interface MemberSharingConfiguration {\r\n uid: string;\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n\r\n displayName?: string;\r\n photoURL?: string;\r\n\r\n marketId: string;\r\n // only one owner per market.\r\n role: \"Owner\" | \"Admin\" | \"Editor\";\r\n}\r\n\r\nexport type DisplayBoardMode =\r\n | \"off\"\r\n | \"live\"\r\n | \"manual\"\r\n | { type: \"focused\"; field: string };\r\n\r\nexport type SalePublishStatus = \"unpublished\" | \"sale\" | \"saleAndCatalog\";\r\n\r\nexport interface Sale {\r\n id: string;\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n updatedBy?: string | null;\r\n\r\n startsAt: Timestamp;\r\n\r\n closedAt?: Timestamp | null;\r\n\r\n // The owner of the sale\r\n marketId: string;\r\n\r\n // \"Weekly Dairy Sale\" / \"Fat Lambs, Hoggets & Fat Ewes\" etc\r\n name: string;\r\n\r\n recurring?: null | \"Weekly\" | \"Bi-weekly\" | \"Monthly\";\r\n\r\n defaultProductCode: string;\r\n\r\n /**\r\n * Default attributes values for any new lot item\r\n */\r\n attributeDefaults?: {\r\n [attributekey: string]: AttributeValueType;\r\n };\r\n\r\n /**\r\n * the codes that are allowed for the sale\r\n */\r\n availableProductCodes: string[];\r\n\r\n /**\r\n * the supertypes from the product codes. e..g Cattle, Sheep, Pigs etc\r\n */\r\n superTypes: SuperType[];\r\n\r\n // Either the string ID for a known item attibute (begins with an @) or a custom attribute\r\n attributeSet: AttributeDefinition[];\r\n\r\n // Not all attributes are valid for all products\r\n attributeSetByProductCode: {\r\n [code: string]: string[];\r\n };\r\n\r\n // The ID of the group of lots that are currently being sold (for a live sale)\r\n currentLotGroup?: string | null;\r\n // The ID of the group of lots that are currently being displayed on the display board\r\n // The null if you want it live and to follow currentLotGroup\r\n displayBoardLotGroup?: string | null | \"BLANK\";\r\n // The ID of the group the clerk has queued up next\r\n nextLotGroup?: string | null;\r\n\r\n /**\r\n * Auto queue the next lot when the current lot is sold in rostrum\r\n */\r\n autoQueue?: boolean;\r\n\r\n /**\r\n * The sale profile ID to use for this sale. Which is used to find settings specific devices and printers etc.\r\n */\r\n saleProfileId?: string | null;\r\n\r\n /**\r\n * Show the display board\r\n */\r\n displayBoard?: boolean;\r\n\r\n /**\r\n * The display board mode (off, live, manual, or focused on a field)\r\n */\r\n displayBoardMode?: DisplayBoardMode;\r\n\r\n /// folllow on sale ? TBD\r\n\r\n // MartEye Live details\r\n martEyeId?: string | null; // null === not on MartEye\r\n marteyeSettings?: MartEyeTimedSaleSettings | MartEyeLiveSaleSettings | null;\r\n\r\n stats?: {\r\n lots: {\r\n count: number;\r\n sold: number;\r\n invoiced: number;\r\n valueInCents: number;\r\n };\r\n lotItems: {\r\n count: number;\r\n };\r\n customers: {\r\n count: number;\r\n buyers: number;\r\n sellers: number;\r\n };\r\n };\r\n\r\n // The market members that have edited the sale\r\n editedBy?: string[];\r\n\r\n /**\r\n * Publishing status for external systems\r\n * - unpublished: Not listed in external system\r\n * - sale: Sale date is listed externally\r\n * - saleAndCatalog: Sale and catalog information synced\r\n */\r\n publishStatus?: SalePublishStatus;\r\n}\r\n\r\nexport interface TemplateSaleData {\r\n name?: string;\r\n description?: string | null;\r\n image?: string | null;\r\n location?: string | null;\r\n martEyeSaleType?: \"LIVE\" | \"TIMED\" | null;\r\n cover?: string | null;\r\n availableProductCodes: string[];\r\n attributeDefaults?: {\r\n [attributekey: string]: AttributeValueType;\r\n };\r\n marteyeSettings?: MartEyeTimedSaleSettings | MartEyeLiveSaleSettings | null;\r\n}\r\n\r\nexport interface SaleTemplate {\r\n id: string;\r\n marketId: string;\r\n name: string;\r\n description?: string | null;\r\n sourceSaleId?: string;\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n createdBy: string;\r\n saleData: TemplateSaleData;\r\n lotGridConfigs?: {\r\n [configId: string]: StoredDataGridConfig;\r\n };\r\n}\r\n\r\nexport interface StoredDataGridConfig {\r\n widths?: { [key: string]: number };\r\n hiddenColumnIds: string[];\r\n columnOrder: string[];\r\n}\r\n\r\nexport interface MartEyeLiveSaleSettings {\r\n description?: string;\r\n image?: string;\r\n logo?: string;\r\n type: \"LIVE\";\r\n\r\n // If you want to oveeride the marts name as the location\r\n location?: string | null;\r\n\r\n // Optional free text used in the info tab on the catalogue page\r\n descriptionLines?: string[];\r\n // optional link to an external catalogue\r\n descriptionLink?: string;\r\n\r\n deposit?: number;\r\n\r\n // true if prices should be hidden after the sale\r\n hidePrices?: boolean;\r\n\r\n // true if we dont want to show replay videos\r\n hideReplay?: boolean;\r\n\r\n labels?: string[];\r\n tags?: string[];\r\n\r\n // if the marteye lots should be queued in order they are in in studio\r\n queueLots?: boolean;\r\n}\r\n\r\nexport interface MartEyeTimedSaleSettings {\r\n description?: string;\r\n // URL of the image to display on the tile\r\n image?: string;\r\n // An override for the logo on the tile\r\n logo?: string;\r\n type: \"TIMED\";\r\n\r\n /**\r\n * The moment the staggered closing sequence should begin.\r\n * The first lot will close at this time, with subsequent lots\r\n * offset by `staggerSeconds` each.\r\n */\r\n closingStartsAt: Timestamp;\r\n\r\n /**\r\n * The number of seconds to offset each subsequent lot’s closing time\r\n * from the previous one.\r\n * Example: 30 → lot #1 closes at `closingStartsAt`, lot #2 at +30 s, lot #3 at +60 s …\r\n */\r\n staggerSeconds: number;\r\n\r\n /**\r\n * The location of the sale. This could be a physical location Ring 1 / Ring 2 / Farm Address etc\r\n */\r\n location?: string | null;\r\n\r\n // The details to go on the front page\r\n details?: { markdownBase64: string; title: string }[];\r\n\r\n // the url for the cover image\r\n cover?: string;\r\n\r\n // dominant colour used for things like the nav bar\r\n primaryColour?: string;\r\n // used for things like the tab bar\r\n secondaryColour?: string;\r\n // the colour used for text or tabbar indicator\r\n foregroundColour?: string;\r\n\r\n // The number of seconds to extend a lot by when there's a last min bid\r\n extensionTime: number;\r\n\r\n // the increments and break points to go up in\r\n incrementLadder: IncrementLadder;\r\n\r\n // if true remove the nav bar on desktop\r\n hideNav?: boolean;\r\n\r\n // a link to send people to when they click the sign in button\r\n signInOverrideLink?: string;\r\n\r\n // should show on main page\r\n published?: boolean;\r\n\r\n // true if should pin to the top of the list\r\n pin?: boolean;\r\n\r\n // labels to show on the tile. Different to tags\r\n labels?: string[];\r\n\r\n // if provided will request that the user submits a deposit\r\n deposit?: number;\r\n\r\n // If true each lot will only being ending once the one before it has closed\r\n cascade?: boolean;\r\n\r\n // comma seperated people to send the report to\r\n reportEmail?: string;\r\n}\r\n\r\nexport type IncrementLadder = IncrementLadderItem[];\r\n\r\nexport interface IncrementLadderItem {\r\n max: number;\r\n increment: number;\r\n}\r\n\r\nexport interface SaleFromSearch\r\n extends Omit<Omit<Omit<Sale, \"createdAt\">, \"updatedAt\">, \"startsAt\"> {\r\n createdAt: number;\r\n updatedAt: number;\r\n startsAt: number;\r\n}\r\n\r\nexport type LotSaleStatus = \"Sold\" | \"Unsold\" | \"Rerun\" | \"Resold\" | null;\r\n\r\nexport interface Lot {\r\n id: string; // unique for the sale? Could be saleId + lotNumber\r\n saleId: string;\r\n marketId: string;\r\n\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n updatedBy?: string | null;\r\n\r\n // the item code of the lot. This is used to determine the commission rate and the display board\r\n // a lot can only contain items with the same product code (you can think of it as a product type)\r\n productCode: string;\r\n // / Set by a cloud function\r\n superType?: SuperType;\r\n // subtype?: ProductSubtype;\r\n isLivestock?: boolean;\r\n // \\ Set by a cloud function\r\n\r\n attributes: {\r\n [key: string]: AttributeValueType;\r\n };\r\n\r\n // if present here than the attribute is loading in\r\n // remove to signify it has loaded\r\n loadingAttributes?: {\r\n [attributePath: string]: {\r\n id: string;\r\n // time loading began\r\n startAt: Timestamp;\r\n // the path to the attribute (may be on an item)\r\n path: string;\r\n };\r\n };\r\n\r\n itemMap: {\r\n [itemId: string]: LotItem;\r\n };\r\n\r\n sellerCasual?: string | null;\r\n sellerCustomerId: string | null;\r\n seller?: ShortCustomerDetails;\r\n\r\n lotNumber?: string | null;\r\n // The sort order of the lot within the sale\r\n index: number;\r\n // More than one lot can be sold in the ring at once. This groups the lots. Convention to use the earliest lot number in the group as the group ID\r\n group?: string;\r\n\r\n // Free text description of the lot. Intended to be customer facing.\r\n remarks?: string;\r\n\r\n // free text notes, not customer facing possible not needed.\r\n notes?: string;\r\n\r\n // Sale config\r\n currency: CurrenciesWithGuinea;\r\n\r\n unitOfSale: UnitOfSale;\r\n\r\n reservePriceInCents?: number | null;\r\n startingPriceInCents?: number | null;\r\n\r\n // --- Sale record\r\n\r\n unitPriceInCents?: number;\r\n\r\n // This could be any free text that the clerk input on the rostrum. It can be thought of as a note for someone to look up the actual buyer later\r\n buyerCasual?: string | null;\r\n buyerCustomerId: string | null;\r\n buyer?: ShortCustomerDetails | null;\r\n\r\n // The time the lot entered and left the ring\r\n startAt?: Timestamp;\r\n endAt?: Timestamp;\r\n\r\n // must be set, the null used to find records that have not been invoiced\r\n sellerInvoiceId: string | null;\r\n sellerInvoiceNumber?: number | undefined | null;\r\n // must be set, used to find records that have not been invoiced\r\n buyerInvoiceId: string | null;\r\n buyerInvoiceNumber?: number | undefined | null;\r\n\r\n // If an invoice is voided, we keep a record of the ID here\r\n voidedSellerInvoiceIds?: string[];\r\n voidedBuyerInvoiceIds?: string[];\r\n\r\n // in the case when a lot is unsold.\r\n // The seller gets and invoice but the buyer does not.\r\n saleStatus?: LotSaleStatus;\r\n // ignore the result of this lot. Likely because rerun or resold\r\n void?: boolean;\r\n // if this lot was created from a rerun or resell, this is the ID of the original lot\r\n originalLot?: string;\r\n\r\n // -- /Sale record\r\n\r\n metadata: {\r\n [key: string]: any;\r\n };\r\n\r\n // These are controlled by a cloud function\r\n generated?: LotGeneratedValues;\r\n\r\n // Issues with a lot can be raised asyncronously and resolved later.\r\n issues?: {\r\n [issueId: string]: LotIssue;\r\n };\r\n\r\n resolvedIssues?: {\r\n [issueId: string]: LotIssue;\r\n };\r\n\r\n /***\r\n * Default values for any new lot item\r\n */\r\n itemAttributeDefaults?: {\r\n [attributekey: string]: AttributeValueType;\r\n };\r\n}\r\n\r\ntype LotIssueCode =\r\n | \"unknown-attribute\" // attribute ID is invalid or not setup for this sale\r\n | \"validation-error\" // serverside validation error\r\n | \"staff-flagged\"; // a staff member has raised an issue with the lot that needs to be resovled\r\n\r\nexport interface LotIssue {\r\n id: string;\r\n // optional. If the issue is specific to an item then this is the ID of the item\r\n itemId?: string | null;\r\n // optional. The path to the parameter that caused the issue\r\n path?: string | null;\r\n code: LotIssueCode;\r\n // The issue description\r\n description: string;\r\n // The issue severity\r\n severity: \"error\" | \"warning\" | \"info\";\r\n createdAt: Timestamp;\r\n // Who created the issue\r\n createdBy: string;\r\n // If there is an approval required for this lo\r\n blockCheckout: boolean;\r\n}\r\n\r\nexport interface LotWithItemsAsArray extends Omit<Lot, \"itemMap\"> {\r\n items: LotItem[];\r\n}\r\n\r\nexport interface LotGeneratedValues {\r\n // The total value of the lot in cents\r\n totalValueInCents?: number | null;\r\n\r\n // a description we can use in the cart and on the invoice\r\n description?: string | null;\r\n\r\n // We carry these through to the invoice as averages\r\n pricePerKiloInCents?: number | null;\r\n averageWeightKg?: number | null;\r\n pricePerItemInCents?: number | null;\r\n\r\n countOfItems?: number | null;\r\n\r\n // The position of the lot in the sale as sorted by the \"index\" value on the lot\r\n // eventually consistent with the index value\r\n ordinal?: number | null;\r\n}\r\n\r\n// To save a lookup to the customer document we store a copy of the customer details in the lot taken at the time it was added\r\n// Whilst the customer may change their details later it's actually a useful feature not to go back and update the lot with the change\r\nexport interface ShortCustomerDetails {\r\n // true if the customer record has been found and copied in\r\n // false if the customer could not be found\r\n isSet: boolean;\r\n\r\n id?: string;\r\n copiedInAt?: Timestamp;\r\n accountNumber?: string;\r\n bidderNumber?: number | null;\r\n displayName?: string;\r\n\r\n // unsued on everything but the market\r\n avatar?: string | null;\r\n}\r\n\r\n// note the item does not have it's own document in firestore. It exists inside the Lot\r\nexport interface LotItem {\r\n id: string; // unique ID but it wont be created by firestore\r\n\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n updatedBy?: string | null;\r\n index: number;\r\n\r\n attributes: {\r\n [key: string]: AttributeValueType;\r\n };\r\n\r\n notes: {\r\n id: string;\r\n text: string;\r\n createdAt: Timestamp;\r\n }[];\r\n\r\n metadata: {\r\n // Interesting things to add here could be:\r\n // - time the item was scanned in\r\n // - photos of the entry forms\r\n // - links to clips generated\r\n [key: string]: string | number | boolean | Timestamp | Media;\r\n };\r\n}\r\n\r\n/***\r\n * A market may offer other products and services. This is a way to track those.\r\n * They simply create a line item on the invoice\r\n *\r\n * /settings/products\r\n */\r\nexport interface Product {\r\n id: string;\r\n\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n marketId: string;\r\n\r\n name: string;\r\n taxRateId: string;\r\n defaultUnitPriceInCents: number;\r\n\r\n unitPriceIncludesVat?: boolean;\r\n\r\n // The type of client this config applies too. If empty applies to all client types\r\n applyToClients: ClientType[];\r\n\r\n // line items with the same code are given a subtotal for the group on the invoice\r\n subtotalGroup?: SubtotalGroups | null | undefined;\r\n\r\n // true if this product supports routing this money to another customer (say a dealer or haulier)\r\n passThroughFundsToAnotherCustomer?: boolean;\r\n\r\n // Is the product enabled\r\n isEnabled?: boolean;\r\n\r\n // if this product relates to a lot then this is the lot ID\r\n // e.g. dealer charge for a lot\r\n relatedTo?: { lotId: string; saleId: string } | null;\r\n\r\n // if true, and a relatedTo is set, then the funds will be added to the lot total on the invoice\r\n obfusicate?: boolean;\r\n\r\n metadata: {\r\n [key: string]: string | number | boolean | Timestamp | Media;\r\n };\r\n}\r\n\r\n/***\r\n * When a product is added to a cart it becomes a CartProductItem\r\n *\r\n *\r\n * markets/ballymena/carts/{userId}\r\n *\r\n * {id: CartItem}\r\n */\r\nexport interface CartItem {\r\n id: string; // unique ID but it wont be created by firestore\r\n\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n updatedBy?: string | null;\r\n\r\n marketId: string;\r\n customerId: string;\r\n\r\n // The ID of the product\r\n productId: string;\r\n\r\n clientType: ClientType;\r\n // The quantity of the product\r\n quantity: number;\r\n\r\n // The total price of the product\r\n unitPriceInCents: number;\r\n\r\n // If the product supports routing this money to another customer (say a dealer or haulier)\r\n // then this is the ID of the customer to send the funds to\r\n passthroughFundsToCustomerId?: string | null;\r\n\r\n generated?: {\r\n totalInCents: number;\r\n };\r\n}\r\n\r\n/***\r\n * Items have codes. And those codes are used to apply the correct commission rates, report movements etc.\r\n */\r\nexport interface ProductCodeConfiguration {\r\n // Unique for the market, is the ID for the document\r\n code: string;\r\n\r\n createdAt?: Timestamp;\r\n updatedAt?: Timestamp;\r\n updatedBy?: string | null;\r\n\r\n // Integrations will use this for determining if this item needs to have movements reported etc\r\n superType: SuperType;\r\n\r\n // subtype?: ProductSubtype;\r\n\r\n description: string;\r\n\r\n // Name for the icon to use in the UI\r\n icon?: string;\r\n\r\n // A set of expected attributes needed for the catalogue\r\n // attributes?: string[];\r\n\r\n metadata: {\r\n [key: string]: string | number | boolean | Timestamp | Media;\r\n };\r\n\r\n // -- invoices\r\n // - the following generate line items for the invoice.\r\n // - They can be removed or changed manually by the user\r\n\r\n // id for a TaxRate record\r\n // Users shoudl be able to override this on the invoice later\r\n // e.g. people may have different tax rates if they live in another country\r\n taxRateId: string;\r\n\r\n // groups up on the subtotal lines on the invoice\r\n // leave null if grouping isn't needed\r\n subtotalGroup?: SubtotalGroups | null;\r\n\r\n // extra charges to apply on the invoice (e.g. commission, levies etc)\r\n // IDs for AdjustmentsConfiguration records\r\n adjustmentIds: string[];\r\n\r\n // If the price is inclusive of VAT\r\n // We need to for IE as it is assumed the hammer price includes VAT\r\n // default false\r\n unitPriceIncludesVat?: boolean;\r\n\r\n totalExVatRebatePecentage?: number;\r\n\r\n // These carry over to the lots\r\n defaultCurrency?: CurrenciesWithGuinea; // if empty, defaults to market currency\r\n defaultUnitOfSale: UnitOfSale;\r\n\r\n // if provided, the lot will default to this product code when created\r\n // if the number is within this range\r\n defaultLotRange?: {\r\n min: number;\r\n max: number;\r\n };\r\n\r\n // These are copied over to new lots and lot items when created\r\n // item level attributes are prefixed \"@\"\r\n attributeDefaults?: {\r\n [attributekey: string]: AttributeValueType;\r\n };\r\n\r\n // A handlebars template to use for the description on the invoice\r\n lotDescriptionTemplate?: string;\r\n\r\n // The attributes we want editable on the rostrum active page\r\n rostrumAttributes?: string[];\r\n\r\n // When printing all docs are not selected by default\r\n // You can override that here for lots of this product code\r\n selectDocumentIds?: string[] | null;\r\n}\r\n\r\n/***\r\n * How the products are stored in settings\r\n */\r\nexport interface ProductConfiguration {\r\n [id: string]: Product;\r\n}\r\n\r\nexport interface Cart {\r\n customerId: string;\r\n updatedAt: Timestamp;\r\n itemsById: {\r\n [itemId: string]: CartItem;\r\n };\r\n}\r\n\r\nexport interface EmailWrapper {\r\n email: string;\r\n isVerified: boolean;\r\n createdAt: Timestamp;\r\n}\r\n\r\nexport interface PhoneNumberWrapper {\r\n phoneNumber: string;\r\n isVerified: boolean;\r\n createdAt: Timestamp;\r\n}\r\n\r\nexport interface AddressWrapper {\r\n address: Address;\r\n createdAt: Timestamp;\r\n updatedAt?: Timestamp;\r\n updatedBy?: string | null;\r\n}\r\n\r\nexport interface FarmAssurances {\r\n createdAt: Timestamp;\r\n updatedAt?: Timestamp;\r\n updatedBy?: string | null;\r\n memberReference: string;\r\n expiryDate: Timestamp;\r\n\r\n // TODO need the full list of scopes that Red Tractor use\r\n scope?: \"Beef\" | \"Dairy\" | \"Pork\" | \"Sheep\" | \"Other\";\r\n}\r\n\r\nexport type BankDetails = {\r\n accountName?: string; // Optional used to over ride the name of the account holder\r\n} & (\r\n | { accountNumber: string; sortCode: string; IBAN?: never } // Either accountNumber and sortCode without IBAN\r\n | { IBAN: string; accountNumber?: never; sortCode?: never }\r\n); // Or just IBAN without accountNumber and sortCode\r\n\r\nexport type CustomerBankDetails = BankDetails & {\r\n id?: string;\r\n createdAt?: Timestamp;\r\n updatedAt?: Timestamp;\r\n updatedBy?: string | null;\r\n};\r\n\r\nexport interface CustomerContact {\r\n id: string;\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n updatedBy?: string | null;\r\n marketId: string;\r\n displayName: string;\r\n email?: string | null;\r\n phoneNumber?: string | null;\r\n /** @deprecated */\r\n landlineNumber?: string | null;\r\n /** @deprecated */\r\n address?: Address;\r\n isPrimary?: boolean;\r\n isActive?: boolean;\r\n isDeleted?: boolean;\r\n isVerified?: boolean;\r\n accountEmails?: boolean;\r\n marketingEmails?: boolean;\r\n marteyeUid?: string | null;\r\n notes?: string | null;\r\n metadata?: {\r\n [key: string]: string | number | boolean | Timestamp | Media;\r\n };\r\n}\r\n\r\n/**\r\n * Used to store the bank details for a market\r\n */\r\nexport type MarketBankDetails = {\r\n name: string; // The bank account owner\r\n bankId: string; // virgin/hsbc etc\r\n address: Address;\r\n} & (\r\n | { accountNumber: string; sortCode: string; IBAN?: never } // Either accountNumber and sortCode without IBAN\r\n | { IBAN: string; accountNumber?: never; sortCode?: never }\r\n); // Or just IBAN without accountNumber and sortCode\r\n\r\nexport interface Customer {\r\n id: string;\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n\r\n updatedBy?: string | null;\r\n\r\n // The market this customer belongs to\r\n marketId: string;\r\n\r\n // Every market has one customer to represent themselves. If this it true this record is that account.\r\n // Another way to tell is that the ID for this document will be identical to the market ID\r\n isMarketAccount?: boolean;\r\n\r\n // The user's \"account\" with the market. Useful for quick look up + showing on invoices\r\n accountNumber?: string;\r\n // A unique number that can be used to identify the customer.\r\n // Possible that it's reset as soon as after each sale\r\n bidderNumber?: number | null;\r\n\r\n // Name for display purposes - can be a person's name or a business name\r\n displayName?: string | null;\r\n\r\n firstName?: string | null;\r\n lastName?: string | null;\r\n\r\n tradingName?: string | null;\r\n\r\n email?: EmailWrapper;\r\n phoneNumber?: PhoneNumberWrapper;\r\n /** @deprecated */\r\n otherPhoneNumbers?: PhoneNumberWrapper[];\r\n\r\n address: AddressWrapper;\r\n /** @deprecated */\r\n otherAddresses: {\r\n [addressId: string]: AddressWrapper;\r\n };\r\n\r\n photoURL?: string | null;\r\n\r\n payoutPreference?: PayoutMethod;\r\n invoiceDeliveryPreference?: InvoiceDeliveryPreference;\r\n statementDeliveryPreference?: InvoiceDeliveryPreference;\r\n bankDetails?: CustomerBankDetails | CustomerBankDetails[] | null;\r\n contacts?: CustomerContact[];\r\n\r\n // Attributes to add to the lot when the customer is the seller/buyer\r\n // Here we have an array of attribute values. The most latest used is added to the\r\n // 0 position in the array. The other values could be shown in a dropdown for the user to select\r\n attributeDefaultsBuyer?: {\r\n [attributekey: string]: AttributeValueType[];\r\n };\r\n attributeDefaultsSeller?: {\r\n [attributekey: string]: AttributeValueType[];\r\n };\r\n\r\n // If true any debt on the account will be paid down first before paying out out a credit balance (cheque/BACS etc)\r\n // defaults to true. Some markets call this \"contra\"\r\n preferSettleDebtsFirst?: boolean;\r\n\r\n // People may or may not have VAT numbers. This will affect the tax calculation on their bill.\r\n // the VAT number is used to determine the country and has prefix GB, IE, DE etc. for specific countries\r\n vatNumber?: string;\r\n\r\n metadata: {\r\n [key: string]: string | number | boolean | Timestamp | Media;\r\n };\r\n\r\n // If at any point this customer has bought or sold items in the market\r\n lastItemPurchaseDate?: Timestamp;\r\n lastItemSaleDate?: Timestamp;\r\n hasPurchasedItems?: boolean;\r\n hasSoldItems?: boolean;\r\n\r\n // Notes\r\n notes?: string;\r\n status?: \"archived\" | \"deleted\" | null;\r\n deleteAfter?: Timestamp;\r\n\r\n // Casual buyer labels that auto-map to this customer\r\n // When a lot is entered with a matching buyerCasual, this customer is auto-populated\r\n casualBuyerLabels?: string[];\r\n}\r\n\r\n// All Timestamps are replaced with a number\r\nexport interface CustomerFromSearch\r\n extends Omit<\r\n Customer,\r\n \"createdAt\" | \"updatedAt\" | \"lastItemPurchaseDate\" | \"lastItemSaleDate\"\r\n > {\r\n createdAt: number;\r\n updatedAt: number;\r\n\r\n // If at any point this customer has bought or sold items in the market\r\n lastItemPurchaseDate?: number;\r\n lastItemSaleDate?: number;\r\n}\r\n\r\nexport interface Application {\r\n id: string;\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n\r\n // The market this application belongs to\r\n marketId: string;\r\n\r\n // Application status\r\n status: \"pending\" | \"approved\" | \"rejected\";\r\n\r\n // Applicant details\r\n displayName: string;\r\n phoneNumber?: string;\r\n email?: string;\r\n\r\n // Address information\r\n address: {\r\n firstLine: string;\r\n secondLine?: string;\r\n county?: string;\r\n postCode: string;\r\n };\r\n\r\n // Marteye account information\r\n dateOfMarteyeAccountCreation?: Timestamp;\r\n hasWonLotsOnMarteye?: boolean;\r\n isApprovedAtOtherMarkets?: boolean;\r\n marteyeUid: string;\r\n\r\n // Additional information\r\n notes?: string;\r\n\r\n // Who approved/rejected the application\r\n approvedBy?: string;\r\n rejectedBy?: string;\r\n approvedAt?: Timestamp;\r\n rejectedAt?: Timestamp;\r\n}\r\n\r\nexport interface Address {\r\n id: string;\r\n nickname?: string;\r\n company?: string;\r\n firstName?: string;\r\n lastName?: string;\r\n address1: string;\r\n address2?: string;\r\n city: string;\r\n province?: string;\r\n zip: string;\r\n // ISO Country Code. Must include the sub-region if applicable (e.g. GB-ENG, GB-WLS, GB-NIR, GB-SCT)\r\n // this is the part that is needed for calculating tax on the invoice\r\n country: string;\r\n}\r\n\r\nexport const IMAGE_SIZES_VALUES = [\"small\", \"medium\", \"large\"] as const;\r\n\r\nexport const VIDEO_TASKS_VALUES = [\"compressed\", \"thumbnail\"] as const;\r\n\r\nexport type ImageSizes = (typeof IMAGE_SIZES_VALUES)[number];\r\nexport type VideoTasks = (typeof VIDEO_TASKS_VALUES)[number];\r\n\r\nexport type SupportedFileTypesNames = \"image\" | \"video\" | \"file\";\r\n\r\nexport interface Media {\r\n id: string;\r\n fileName: string;\r\n path: string;\r\n url: string;\r\n fileType: string; // mimeType\r\n variants: Partial<\r\n Record<\r\n ImageSizes | VideoTasks,\r\n {\r\n url: string;\r\n isLocal?: boolean;\r\n isProcessing: boolean;\r\n type: SupportedFileTypesNames;\r\n }\r\n >\r\n >;\r\n}\r\n\r\n//// --- Report Headers --- ////\r\n\r\nexport type MarketReportHeaders =\r\n | \"grossServices\"\r\n | \"vatOnServices\"\r\n | \"grossGoods\"\r\n | \"vatOnGoods\"\r\n | \"netTotal\"\r\n | \"contra\";\r\n\r\n// --- Invoices ---\r\n/**\r\n * Content types which will denote the position of the data on the invoice wihth out with a cheque\r\n */\r\n\r\n// a type used to define the position of the fields on the cheque\r\nexport type FieldPositions = {\r\n id: ChequeField | InvoiceField;\r\n x: number;\r\n y: number;\r\n};\r\n\r\nexport type InvoiceField =\r\n | \"invoiceNumber\"\r\n | \"invoiceDate\"\r\n | \"description\"\r\n | \"lotNumber\"\r\n | \"quantity\"\r\n | \"weight\"\r\n | \"unitPrice\"\r\n | \"grossLineTotal\"\r\n | \"accountRef\"\r\n | \"accountName\"\r\n | \"businessAddress\"\r\n | \"customerAddress\"\r\n | \"lineItemsStartLine\" // the line that table items start at\r\n | \"footerBoundaryLine\" // this marks the line of the cheque break if used\r\n | \"vatNumber\"\r\n | \"saleName\"\r\n | \"subTotal\" // the column of subtotals e.g. vat, livestock etc\r\n | \"subTotalTable\" // the table of subtotals e.g. vat, livestock etc\";\r\n | \"tagList\"\r\n | \"tagNumber\";\r\n\r\n// a list of fields that can be used to generate a cheque\r\nexport type ChequeField =\r\n | \"chequeDate\"\r\n | \"chequeNumber\"\r\n | \"payee\"\r\n | \"amount\"\r\n | \"amountInWords\"\r\n | \"hunderdsOfThousands\"\r\n | \"tensOfThousands\"\r\n | \"thousands\"\r\n | \"hundreds\"\r\n | \"tens\"\r\n | \"units\";\r\n\r\nexport type SubtotalGroups = \"Commission\" | string;\r\n\r\nexport type AdjustmentTotalTarget =\r\n | \"Per Invoice\"\r\n | \"Total - finalTotalInCents\"\r\n | \"Total - lotTotalLessCommissionInCentsExVat\";\r\n\r\nexport type AdjustmentTarget =\r\n | UnitOfSale\r\n // Apply after the totals have been calculated but before any other total adjustments\r\n | AdjustmentTotalTarget;\r\n\r\n/***\r\n * Commission is added as a line item. Can also be used for levies etc\r\n */\r\nexport interface AdjustmentsConfiguration {\r\n id: string;\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n updatedBy?: string | null;\r\n\r\n // a friendly name for the adjustment to be used in the UI\r\n name?: string | null;\r\n\r\n // // How the item appears on the invoice\r\n description?: string | null;\r\n\r\n // The type of client this config applies too. If empty applies to all client types\r\n applyToClients: ClientType[];\r\n\r\n // line items with the same code are given a subtotal for the group on the invoice\r\n subtotalGroup?: SubtotalGroups | null | undefined;\r\n\r\n // this dictates how the money is moved through the ledger\r\n // commission is an income for the market\r\n // a levy would be a \"liability\" as becomes a liability to be paid off later as an expense\r\n // \"vat-rebate\" will (eventually) move the money back into the VAT account\r\n type: \"commission\" | \"levy\" | \"vat-rebate\";\r\n\r\n // Selects where this commission config applies\r\n filter?: {\r\n // apply only to item with this currency\r\n currency?: CurrenciesWithGuinea | null;\r\n\r\n // Apply only between the min and max quantity range (inclusive).\r\n quantity?: {\r\n // default zero\r\n min?: number;\r\n // default Infinity\r\n max?: number;\r\n } | null;\r\n\r\n // Apply only between a min and max per item price\r\n unitPrice?: {\r\n // default zero\r\n minInCents?: number;\r\n // default Infinity\r\n maxInCents?: number;\r\n } | null;\r\n\r\n totalPrice?: {\r\n // default zero\r\n minInCents?: number;\r\n // default Infinity\r\n maxInCents?: number;\r\n } | null;\r\n\r\n // set true to apply this adjustment if a customer is vat registered in any tax region\r\n // false to apply if they are not vat registered\r\n // leave undefined or null to apply to all customers\r\n customerIsVATRegistered?: boolean | null;\r\n // set true to apply this adjustment if the customer is in the same tax region as the market\r\n // false to apply if they are not in the same tax region\r\n // leave undefined or null to apply to all customers\r\n customerWithinTaxRegion?: boolean | null;\r\n\r\n // Will apply if a lot or any items has the attribute key / value pair\r\n // e.g. \"onlineBuyer\" : true\r\n // note we only allow the simple attribute values\r\n attribute?: {\r\n key: string;\r\n // use null to filter for null or undefined values\r\n value: string | number | boolean | null;\r\n } | null;\r\n };\r\n\r\n // The ID of the tax rate that is applied to this adjustment\r\n taxRateId: string;\r\n\r\n adjustment: Adjustment & { target: AdjustmentTarget };\r\n}\r\n\r\ninterface Adjustment {\r\n percentage?: {\r\n // A value between 0-1.\r\n value?: number;\r\n // A minimum value the commision can be\r\n floorInCents?: number;\r\n // A cap for the heighest value a commision can be\r\n ceilingInCents?: number;\r\n } | null;\r\n\r\n // A single amount that is added if the filter applies.\r\n // Could be used for entry fees but likely need to seperate out the entry fee from the commission\r\n fixedAmountInCents?: number | null;\r\n\r\n // Ladder adjustment - allows different percentages at different value brackets\r\n ladder?: {\r\n steps: {\r\n // A percentage value between 0-1\r\n percentageValue?: number;\r\n // This step applies from the upToAmountInCents of the previous step (or zero) up to this upToAmountInCents\r\n // Use null to indicate no upper limit (infinity)\r\n upToAmountInCents?: number | null;\r\n }[];\r\n\r\n // A minimum commission value\r\n floorInCents?: number;\r\n // A cap for the heighest value a commision can be\r\n ceilingInCents?: number;\r\n };\r\n}\r\n\r\nexport interface LineItemAdjustmentConfiguration\r\n extends AdjustmentsConfiguration {\r\n adjustment: Adjustment & { target: UnitOfSale };\r\n}\r\n\r\n// specifically for targeting invoice totals\r\nexport interface InvoiceTotalAdjustmentConfiguration\r\n extends AdjustmentsConfiguration {\r\n adjustment: Adjustment & { target: AdjustmentTotalTarget };\r\n}\r\n\r\n/***\r\n * Tax config is used to generate the invoice but the user can still edit the invoice, overriding the final values.\r\n */\r\nexport interface TaxRate {\r\n id: string;\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n marketId: string;\r\n\r\n // description of the tax shown on the invoice\r\n description: string;\r\n\r\n // line items with the same code are given a subtotal for the group on the invoice\r\n // e.g. \"Tax on Services\" or \"VAT\"\r\n taxSubtotalGroup?: string | null;\r\n\r\n // A value between 0-1. This is the tax rate that will be applied\r\n percentage: number;\r\n\r\n // If true then this tax rate will override others if\r\n // customerIsVATRegistered === true\r\n // customerWithinTaxRegion === false\r\n //\r\n // (see the createDraftInvoice function)\r\n // There can be only one export tax rate. Validate in the UI.\r\n isExportTaxRate?: boolean;\r\n}\r\n\r\n// A payment into the market\r\nexport interface Payment {\r\n id: string;\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n updatedBy?: string;\r\n\r\n transactionDate: Timestamp;\r\n\r\n marketId: string;\r\n // the customer who made the payment\r\n customerId: string;\r\n method: PaymentMethod;\r\n\r\n // note currency is always assumed to be the market currency\r\n amountInCents: number;\r\n // Should be what will appear on the mart's bank statement\r\n // for a cheque this is the cheque number\r\n // for bacs this is the reference number\r\n // for card this is the transaction reference\r\n // not always present (e.g. cash)\r\n reference: string | null;\r\n\r\n status: \"complete\" | \"void\";\r\n\r\n voidedAt?: Timestamp | null;\r\n voidedBy?: string | null;\r\n voidReason?: string | null;\r\n\r\n // Invoices that this payment went toward\r\n invoiceIds: string[];\r\n invoices?: Array<{\r\n id: string;\r\n amountAppliedInCents?: number;\r\n }>;\r\n\r\n // The transactions that were created on the ledger for this\r\n transactionIds: string[];\r\n}\r\n\r\nexport interface Payout {\r\n id: string;\r\n marketId: string;\r\n\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n updatedBy: string | null;\r\n customerId: string;\r\n // Credit only allowed for payouts created by the system\r\n method: PayoutMethod | \"Credit\";\r\n amountInCents: number;\r\n\r\n invoices?: Array<{\r\n id: string;\r\n amountAppliedInCents?: number;\r\n }>;\r\n\r\n // for BACS these are present\r\n accountName?: string; // usually the customer's name\r\n accountNumber?: string;\r\n sortCode?: string;\r\n\r\n // for cheque these are present\r\n chequeMadePayableTo?: string;\r\n\r\n transactionDate: Timestamp;\r\n reference: string | null;\r\n status: \"pending\" | \"complete\" | \"void\";\r\n notes: string | null;\r\n\r\n completedAt?: Timestamp | null;\r\n completedBy?: string | null;\r\n\r\n voidedAt?: Timestamp | null;\r\n voidedBy?: string | null;\r\n voidReason?: string | null;\r\n\r\n // The transactions that were created on the ledger for this\r\n transactionIds: string[];\r\n\r\n // The invoices paid by this payout\r\n invoiceIds: string[];\r\n}\r\n\r\nexport interface DraftInvoice extends InvoiceTotals {\r\n // the ID is deterministic so saving can be made idempotent\r\n id: string;\r\n\r\n currency: Currency;\r\n\r\n status: \"draft\";\r\n\r\n // the time the invoice was sent\r\n issuedAt?: Timestamp;\r\n\r\n // the identifiers for the lots the invoice is for\r\n lotIdents: { lotId: string; saleId: string }[];\r\n // buyer or seller\r\n clientType: ClientType;\r\n\r\n customerId: string;\r\n customerAccountNumber: string;\r\n\r\n // The name of the customer or trading name to go on the invoice\r\n name: string;\r\n // The customer's address that was used for this invoice.\r\n // The address influences how tax is calculated\r\n address: Address;\r\n email: string | null;\r\n\r\n // the super type of the invoice sheep or cattle etc\r\n superTypes?: SuperType[];\r\n\r\n // The settings around tax used to generate the invoice\r\n customerIsVATRegistered: boolean;\r\n customerWithinTaxRegion: boolean;\r\n\r\n // the line items that make up the invoice\r\n lineItems: InvoiceLineItem[];\r\n // adjustments are added as line items. Can also be used for levies etc\r\n adjustmentLineItems: InvoiceLineItem[];\r\n\r\n // the vat number of the client is required for the invoice if its going for export\r\n vatNumber?: string;\r\n\r\n // the IDs for any extra products that were added onto this invoice\r\n extraProductIds: string[];\r\n\r\n // if a seller, the preferred payout method for this invoice\r\n payoutMethod?: PayoutMethod | null;\r\n payoutParams?: {\r\n // default true, if any debts should be tackled first\r\n settleDebtsFirst: boolean;\r\n\r\n // For BACS\r\n accountName?: string;\r\n accountNumber?: string;\r\n sortCode?: string;\r\n\r\n // For cheque\r\n chequeMadePayableTo?: string;\r\n };\r\n\r\n // The exact payouts wont be accurate until the invoice is finalised\r\n potentialPayoutsById?: {\r\n [payoutId: string]: {\r\n id: string;\r\n amountInCents: number;\r\n paymentMethod: PaymentMethod;\r\n invoice?: {\r\n // included if this payout will pay off an invoice\r\n id: string;\r\n invoiceNumber: number;\r\n fullyPaid: boolean;\r\n };\r\n };\r\n };\r\n\r\n // We may need to collect some info for the lots at checkout (e.g. destination address)\r\n // atrributes here will get set onto the relevant lots once the invoice is created\r\n attributeValues?: {\r\n [attributekey: string]: AttributeValueType;\r\n };\r\n\r\n // The attributes to collect\r\n attributes: AttributeDefinition[];\r\n\r\n // customisable, shown on the invoice\r\n averages?: { label: string; value: number; formattedValue: string }[];\r\n\r\n paymentInstructions?: string | null;\r\n}\r\n\r\nexport interface InvoiceTotals {\r\n //the lot total in cents\r\n lotTotalInCentsExVat: number;\r\n\r\n // the vat on the lot total in cents\r\n vatOnLotTotalInCents: number;\r\n\r\n // this calcluates the total commission from commissionLineItems exlusive of vat\r\n commissionTotalInCents?: number;\r\n // VAT on commission in cents. Needs to be seperate to allow for vat margin scheme\r\n vatOnCommissionInCents?: number;\r\n // the total adjustments from adjustmentLineItems exlusive of vat\r\n nonCommissionAdjustmentsInCents?: number;\r\n // VAT on adjustments in cents. Needs to be seperate to allow for vat margin scheme\r\n vatOnAdjustmentsInCents?: number;\r\n subtotalGroupTotals: {\r\n [key in SubtotalGroups]: number;\r\n };\r\n taxSubtotalGroupTotals: {\r\n [key in string]: number;\r\n };\r\n // the final total of the invoice after adjustments, commission and tax\r\n finalTotalInCents: number;\r\n}\r\n\r\n// Invoice\r\nexport interface SimplePaymentIn {\r\n paymentId: string;\r\n amountInCents: number;\r\n paymentMethod: PaymentMethod;\r\n reference: string | null;\r\n paidAt: Timestamp;\r\n}\r\n\r\n/**\r\n * Used on invoice to show the payout. Use payout collection for the source of truth\r\n */\r\nexport interface SimplePaymentOut {\r\n payoutId: string;\r\n amountInCents: number;\r\n paymentMethod: PaymentMethod;\r\n reference: string | null;\r\n paidAt: Timestamp;\r\n}\r\n\r\nexport interface Invoice\r\n extends Omit<\r\n Omit<\r\n Omit<Omit<DraftInvoice, \"ledgerAccountTotals\">, \"potentialPayoutsById\">,\r\n \"payoutParams\"\r\n >,\r\n \"status\"\r\n > {\r\n id: string;\r\n invoiceNumber: number;\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n updatedBy?: string | null;\r\n\r\n marketId: string;\r\n\r\n // a list of the sale IDs that this invoice was created for\r\n // needed for firebase querying\r\n saleIds: string[];\r\n sales: {\r\n // if this was created for a sale or group of sales then the sale id is included\r\n id: string;\r\n // the sale type. like EWES Sale, Store Sale etc,\r\n name?: string;\r\n startsAt?: Timestamp;\r\n }[];\r\n\r\n // The transactions that were created on the ledger for this invoice\r\n transactionIds?: string[];\r\n\r\n // issued- valid for seller (not cashed) and buyer ( not paid)\r\n status: \"draft\" | \"issued\" | \"void\" | \"imported\" | \"paid\";\r\n // TODO these aren't yet in place\r\n // | \"uncollectible\" | \"void\" | \"archived\";\r\n\r\n // A simplified copy of the Payment record that would have been created\r\n paymentsInById: {\r\n [paymentId: string]: SimplePaymentIn;\r\n };\r\n\r\n payoutMethod: PayoutMethod | null;\r\n payoutsById: {\r\n [payoutId: string]: SimplePaymentOut;\r\n };\r\n\r\n voidReason?: string;\r\n voidedAt?: Timestamp;\r\n voidedBy?: string;\r\n\r\n // a description of the invoice e.g. 'Invoice for 10 sheep'\r\n description?: string;\r\n\r\n // optional - if a haulier is involved in the sale then the haulier can be added here\r\n // their vehicle reg details and auth number will be pulled from their customer profile\r\n // haulierCustomerId?: string | null;\r\n\r\n // the footer text that appears on the invoice at the bottom. Can be used to add a note to the invoice like ppk or a note to the customer\r\n footnotes?: string[];\r\n\r\n metadata: {\r\n [key: string]: string | number | boolean | Timestamp | Media;\r\n };\r\n\r\n /***\r\n * this is important to add when adding an invoice\r\n * it creates a lock so we only ever get sequential invoice numbers\r\n * The invoice will have this as null until the next invoice is created\r\n */\r\n internalNextInvoiceId: string | null;\r\n\r\n // ID's of the email tasks that have been created for this invoice\r\n emailNotifications?: string[];\r\n\r\n // status of invoice emails per recipient\r\n emailStatus?: {\r\n recipient: string;\r\n status: \"sent\" | \"delivered\" | \"opened\" | \"bounced\";\r\n timestamp: Timestamp;\r\n }[];\r\n\r\n pitchPayLink: string | null;\r\n}\r\nexport interface Printer {\r\n name: string;\r\n id: string;\r\n}\r\n\r\nexport interface InvoiceLineItem {\r\n id: string;\r\n createdAt: Timestamp;\r\n updatedAt: Timestamp;\r\n\r\n // groups up on the subtotal lines on the invoice\r\n subtotalGroup?: SubtotalGroups | null;\r\n\r\n clientType: ClientType;\r\n\r\n description: string;\r\n\r\n // The sort order of the line item within the invoice\r\n index?: number;\r\n\r\n quantity: number;\r\n // The price of 1 item\r\n impreciseUnitPriceInCents: number;\r\n // helpful later for showing the price per unit\r\n unitOfSale?: UnitOfSale;\r\n unitPriceIncludesVat?: boolean;\r\n\r\n taxRate: TaxRate;\r\n taxAmountInCents: number;\r\n\r\n discountAmountInCents?: number;\r\n\r\n totalAmountInCentsExVat: number; // unitPriceInCents * quantity - discountAmountInCents\r\n\r\n // If this item relates to the sale of item(s)\r\n // handy for drilling down from an invoice to the specific items\r\n saleId?: string;\r\n lotId?: string;\r\n lotProductCode?: string;\r\n superType?: SuperType | null;\r\n // subtype?: ProductSubtype | null;\r\n // If this was a line item for an extra product\r\n productId?: string;\r\n // if this product applies to a lot then this is the lot ID\r\n productRelatedTo?: { lotId: string; saleId: string } | null;\r\n productObfusicate?: boolean;\r\n\r\n // The money for this line item goes to this account\r\n passthroughFundsToCustomerId?: string | null;\r\n\r\n // if this line was created from an adjustment\r\n adjustmentConfig?: AdjustmentsConfiguration;\r\n\r\n metadata: {\r\n [key: string]:\r\n | string\r\n | number\r\n | boolean\r\n | Timestamp\r\n | Media\r\n | { [key: string]: string | number | boolean | Timestamp };\r\n };\r\n}\r\n\r\n// table positions for the tables in invoice PDFs\r\nexport interface TablePosition {\r\n id: InvoiceField | ChequeField | MarketReportHeaders;\r\n title: string;\r\n cellWidth: number; // width of each cell. Each cell is cummulatively added to the x position to build table\r\n halign: \"left\" | \"center\" | \"right\";\r\n}\r\n\r\nexport type WebhookEventName =\r\n | \"market.updated\"\r\n | \"sale.created\"\r\n | \"sale.updated\"\r\n | \"sale.deleted\"\r\n | \"lot.created\"\r\n | \"lot.updated\"\r\n | \"lot.deleted\"\r\n | \"lot.media.created\"\r\n | \"lot.media.deleted\"\r\n | \"invoice.created\"\r\n | \"invoice.updated\"\r\n | \"invoice.deleted\"\r\n | \"payment.created\"\r\n | \"payment.updated\"\r\n | \"payment.deleted\"\r\n | \"payout.created\"\r\n | \"payout.updated\"\r\n | \"payout.deleted\"\r\n // customers\r\n | \"customer.created\"\r\n | \"customer.updated\"\r\n | \"customer.deleted\"\r\n // staff members\r\n | \"member.created\"\r\n | \"member.updated\"\r\n | \"member.deleted\";\r\n\r\nexport const supportedWebhookEvents = [\r\n \"market.updated\",\r\n \"sale.created\",\r\n \"sale.updated\",\r\n \"sale.deleted\",\r\n \"lot.created\",\r\n \"lot.updated\",\r\n \"lot.deleted\",\r\n \"lot.media.created\",\r\n \"lot.media.deleted\",\r\n \"invoice.created\",\r\n \"invoice.updated\",\r\n \"invoice.deleted\",\r\n \"payment.created\",\r\n \"payment.updated\",\r\n \"payment.deleted\",\r\n \"payout.created\",\r\n \"payout.updated\",\r\n \"payout.deleted\",\r\n // customers\r\n \"customer.created\",\r\n \"customer.updated\",\r\n \"customer.deleted\",\r\n // staff members\r\n \"member.created\",\r\n \"member.updated\",\r\n \"member.deleted\",\r\n] as const;\r\n\r\nexport type ObjectType =\r\n | \"market\"\r\n | \"sale\"\r\n | \"lot\"\r\n | \"invoice\"\r\n | \"payment\"\r\n | \"customer\"\r\n | \"member\";\r\n\r\n// The object that is sent to the recevier\r\nexport interface WebhookEvent<T> {\r\n id: string;\r\n createdAt: Timestamp;\r\n trigger: WebhookEventName;\r\n // the market the event relates to\r\n marketId: string;\r\n objectType: ObjectType;\r\n // note object ID not included as sub objects (like lots) need the sale ID too to be referenced. Better to get from the object itself\r\n // objectId: string\r\n data: {\r\n // the object the event relates to\r\n object: T;\r\n // the before / after change on the object\r\n objectBefore?: T;\r\n };\r\n}\r\n\r\nexport type SupportedAttributeTypes =\r\n | \"string\"\r\n | \"number\"\r\n | \"boolean\"\r\n | \"date\"\r\n | \"datetime\"\r\n | \"media\"\r\n | \"mediaset\"\r\n | \"time\";\r\n\r\nexport interface AttributeDefinition {\r\n // conventions\r\n // prefix with @ for item level attributes\r\n id: string;\r\n name: string;\r\n shortName?: string;\r\n description?: string;\r\n\r\n // The attribute in MartEye\r\n martEyeAttribute?: string;\r\n\r\n // An array of {countryCode}/{superType} that this attribute applies to\r\n // e.g. \"GB-NIR/Sheep\" or \"IE/Cattle\"\r\n applyTo: string[];\r\n\r\n // lot => set all items to the same value in the lot\r\n // item => the items can be different values\r\n level: \"item\" | \"lot\";\r\n\r\n // default false\r\n readonly?: boolean;\r\n\r\n // default false. If the attribute can be displayed in the MartEye app / other catalogues\r\n // public?: boolean;\r\n\r\n // if the group is set the attribute will be grouped with other attributes in the same group\r\n lotDetailFlyoutGroup?: string;\r\n\r\n // If the attribute should be set at the checkout phase we assign it to a group\r\n // to appear on the page\r\n buyerCheckoutGroup?: string;\r\n sellerCheckoutGroup?: string;\r\n\r\n // if true, the values for this attribute will be copied over the customer to be used as\r\n // defaults for their next sale. (think CPH or Flock number)\r\n buyerCustomerAttribute?: boolean;\r\n sellerCustomerAttribute?: boolean;\r\n\r\n // If true will hide on the column on the sale sheet\r\n defaultHiddenOnSaleSheet?: boolean;\r\n\r\n // Only if the seller and product code are the same.\r\n // Effective only on the QuickSheet.\r\n prefillableFromPreviousLot?: boolean;\r\n\r\n // If true, isn't shown at all in the lot flyout or the sale sheet.\r\n // Handy for system level attributes.\r\n hidden?: boolean;\r\n\r\n // If true, the attribute will be shown in the seller details panel\r\n // in the quicksheet and in the Rostrum\r\n showInSellerDetailsPanel?: boolean;\r\n\r\n // If true, the attribute will be available in the Seller Review Panel dialog\r\n showInSellerReviewPanel?: boolean;\r\n\r\n // --- Templates\r\n\r\n // A template used to render the value in the sale sheet (and other places)\r\n displayTemplate?: string;\r\n // for when the level is item, there's more than one value and it's being viewed in a lot context\r\n displayTemplateMultiValue?: string;\r\n\r\n // --- /Templates\r\n\r\n // --- Validation\r\n\r\n type: SupportedAttributeTypes;\r\n\r\n // true if this is required before the price is set.\r\n requiredPreSale: boolean;\r\n\r\n // true if can't checkout without this attribute being valid\r\n // but not needed before the price is set\r\n requiredToCheckout: boolean;\r\n\r\n // validation for number attributes\r\n minValue?: number;\r\n maxValue?: number;\r\n\r\n // validation for string attributes\r\n minLength?: number;\r\n maxLength?: number;\r\n // a regex pattern to match against\r\n regexPattern?: string;\r\n\r\n // validation for date attributes\r\n // we use node-chrono for parsing these\r\n // all expressions are parsed against the sale start date\r\n // examples:\r\n // midnight today: \"2021-01-05T00:00:00.000Z\"\r\n // midnight: \"2021-01-05T00:00:00.000Z\"\r\n // noon: \"2021-01-05T12:00:00.000Z\"\r\n // midnight tomorrow: \"2021-01-06T00:00:00.000Z\"\r\n // yesterday: \"2021-01-04T01:00:00.000Z\"\r\n // next year: \"2022-01-05T01:00:00.000Z\"\r\n // 5 days from now: \"2021-01-10T01:00:00.000Z\"\r\n // 5 days ago: \"2020-12-31T01:00:00.000Z\"\r\n // 60 days ago: \"2020-11-06T01:00:00.000Z\"\r\n // 2 days from now: \"2021-01-07T01:00:00.000Z\"\r\n // 2021-01-01T00:00: \"2021-01-01T00:00:00.000Z\"\r\n minDateExpression?: string;\r\n maxDateExpression?: string;\r\n\r\n // if provided the attribute will only be allowed to be one of these values\r\n allowedValues?: string[];\r\n\r\n // ---/Validation\r\n}\r\n\r\n// Apps Intergations\r\nexport interface StudioAppPartial {\r\n id: string;\r\n name: string;\r\n version: string;\r\n description: string;\r\n icon: string;\r\n parameterConfig: AppParameterConfig[];\r\n parameterValues: {\r\n [key: string]: string | number | boolean | string[];\r\n };\r\n}\r\n\r\nexport type AppParameterConfig = {\r\n id: string;\r\n type: \"string\" | \"number\" | \"boolean\" | \"string[]\" | \"password\";\r\n label: string;\r\n description?: string;\r\n required?: boolean;\r\n defaultValue?: string | number | boolean | string[];\r\n};\r\n\r\nexport interface CphLookupResponse {\r\n cph: string;\r\n county: string;\r\n parish: string;\r\n holding: string;\r\n subLocation?: string;\r\n country: string;\r\n region: string | null;\r\n spatialUnit: string | null;\r\n office: string | null;\r\n ahdoNumber: string | null;\r\n parishName: string;\r\n tbTestingInterval: string | null;\r\n tbArea: string | null;\r\n cphValid?: boolean | null;\r\n farmName?: string | null;\r\n}\r\n\r\n// Activity Log types\r\nexport type ActivityOperation = \"created\" | \"updated\" | \"deleted\" | \"voided\";\r\n\r\nexport interface ActivityChange {\r\n before?: any;\r\n after?: any;\r\n}\r\n\r\nexport interface ActivityLog {\r\n id: string;\r\n\r\n // Timing\r\n firstEventAt: Timestamp;\r\n lastEventAt: Timestamp;\r\n\r\n // Actor\r\n userId: string | null;\r\n userName?: string;\r\n\r\n // Context\r\n eventType: WebhookEventName;\r\n entityType: ObjectType;\r\n entityId: string;\r\n entityLabel?: string;\r\n saleIds: string[];\r\n\r\n // Change tracking\r\n operation: ActivityOperation;\r\n changeCount: number;\r\n\r\n // The accumulated diff (original before, latest after)\r\n changes?: {\r\n [fieldPath: string]: ActivityChange;\r\n };\r\n}\r\n","import { supportedWebhookEvents, WebhookEventName } from \"./types\";\n/**\n * Headers used by Studio to identify webhook and action requests\n */\nexport const StudioHeaders = {\n marketId: \"x-studio-market-id\",\n webhookId: \"x-studio-webhook-id\",\n action: \"x-studio-action\",\n apiKey: \"x-studio-key\",\n signature: \"x-studio-signature\",\n};\n\nexport interface StudioManifest {\n id: string; // must be unique\n name: string;\n version: string;\n description: string;\n icon: string;\n author: string;\n\n // action name to url mapping\n actions: {\n name: string;\n url: string;\n }[];\n\n webhooks: {\n url: string;\n triggers: WebhookEventName[];\n }[];\n\n // User configurable settings for the app. Appears in the app settings page.\n parameterConfig: {\n id: string;\n type: \"string\" | \"number\" | \"boolean\" | \"string[]\" | \"password\";\n label: string;\n description?: string;\n required?: boolean;\n defaultValue?: string | number | boolean | string[];\n }[];\n}\n\n/***\n * Creates an app manifest used to describe the app to Studio\n *\n * @param appConfig\n * @returns\n */\nexport function createAppManifest(appConfig: {\n id: string;\n name: string;\n version: string;\n description: string;\n icon: string;\n author: string;\n}) {\n let manifest: StudioManifest = {\n id: appConfig.id,\n name: appConfig.name,\n version: appConfig.version,\n description: appConfig.description,\n icon: appConfig.icon,\n author: appConfig.author,\n webhooks: [],\n parameterConfig: [],\n actions: [],\n };\n\n return {\n addWebhook: (url: string, triggers: WebhookEventName[]) => {\n // Validate the url is a valid url\n try {\n new URL(url);\n } catch (e) {\n throw new Error(`Invalid webhook url. Must be a valid url`);\n }\n\n // Ensure the webhook triggers are allowed\n for (let t of triggers) {\n if (!supportedWebhookEvents.includes(t)) {\n throw new Error(\n `Invalid webhook trigger. Must be one of ${supportedWebhookEvents.join(\n \", \"\n )}`\n );\n }\n }\n\n manifest.webhooks.push({\n url,\n triggers,\n });\n },\n addConfig: (config: {\n id: string;\n type: \"string\" | \"number\" | \"boolean\" | \"string[]\" | \"password\";\n label: string;\n description?: string;\n required?: boolean;\n defaultValue?: string | number | boolean | string[];\n }) => {\n manifest.parameterConfig.push(config);\n },\n addAction: (action: { name: string; url: string }) => {\n manifest.actions.push(action);\n },\n get manifest() {\n // print this and upload to studio\n return manifest;\n },\n };\n}\n","export type CountryCode = keyof typeof EarTag.countryCodes;\n\nexport default class EarTag {\n static regexISO24631 =\n /^([0-9]{1})([0-9]{1})([0-9]{2})([0-9]{2})([0-9]{1})(372|826|899|528|250|276)([0-9]{7})([0-9]{5})/;\n\n static countryCodes: { [key: string]: string } = {\n IE: \"372\",\n UK: \"826\",\n XI: \"899\",\n NL: \"528\",\n FR: \"250\",\n DE: \"276\",\n BE: \"056\",\n };\n\n static get countryCodesByNumber(): { [code: string]: CountryCode } {\n let reversed: { [code: string]: CountryCode } = {};\n for (const key of Object.keys(EarTag.countryCodes) as Array<\n keyof typeof EarTag.countryCodes\n >) {\n reversed[EarTag.countryCodes[key]] = key;\n }\n return reversed;\n }\n\n private normalisedCountryCode(\n countryCode: string | null | undefined | null | number\n ): CountryCode | null {\n if (!countryCode || typeof countryCode !== \"string\") {\n return null;\n }\n switch (countryCode) {\n case \"GB-ENG\":\n case \"GB-SCT\":\n case \"GB-WLS\":\n return \"UK\";\n case \"GB-NIR\":\n return \"XI\";\n default:\n return countryCode as CountryCode;\n }\n }\n\n private _raw: string;\n get raw(): string {\n return this._raw;\n }\n\n // readonly properties\n private _isEartag: boolean = false;\n isEartag(): boolean {\n return this._isEartag;\n }\n\n private _isoCountryCode?: string;\n get isoCountryCode(): string | undefined {\n return this._isoCountryCode;\n }\n\n private _nationalIdentifier?: string;\n get nationalIdentifier(): string | undefined {\n return this._nationalIdentifier;\n }\n\n // private constructor\n constructor(\n input: string,\n fallbackCountryCode?: CountryCode | string | null\n ) {\n fallbackCountryCode = this.normalisedCountryCode(fallbackCountryCode);\n\n let workingInput = input.replace(/\\s/g, \"\").replace(/[^ -~]+/g, \"\");\n this._raw = workingInput; // Store the initial cleaned input. May get updated if prefix is added.\n\n // Part 1: Handle explicit country codes (alpha or numeric) in the input string\n let parsedCountryCode: string | undefined;\n let parsedNationalIdentifier: string | undefined;\n\n // 1a. Alpha prefix\n if (workingInput.length > 2 && /^[A-Z]{2}/.test(workingInput)) {\n const alphaCode = workingInput.slice(0, 2);\n const numericCode = EarTag.countryCodes[alphaCode];\n if (numericCode) {\n // Replace alpha with numeric for further parsing\n workingInput = numericCode + workingInput.slice(2);\n this._raw = workingInput; // Update _raw as it now contains numeric country code\n }\n // If unknown alpha, workingInput remains as is, will be handled by numeric check or fallback\n }\n\n // 1b. Numeric country code (already in workingInput, or converted from alpha)\n const countryPattern = \"(372|826|899|528|250|276|056)\";\n\n const regex12 = new RegExp(\n `^[0-9]{0,7}(${countryPattern})([0-9]{7})([0-9]{5})`\n );\n let match12 = regex12.exec(workingInput);\n\n if (match12) {\n parsedCountryCode = match12[1];\n parsedNationalIdentifier = `${match12[3]}${match12[4]}`;\n } else {\n const regex11 = new RegExp(\n `^[0-9]{0,7}(${countryPattern})([0-9]{6})([0-9]{5})`\n );\n let match11 = regex11.exec(workingInput);\n if (match11) {\n parsedCountryCode = match11[1];\n parsedNationalIdentifier = `${match11[3]}${match11[4]}`;\n }\n }\n\n // Part 2: If no country code parsed yet, try fallback\n if (!parsedCountryCode && fallbackCountryCode) {\n const numericFallback = EarTag.countryCodes[fallbackCountryCode];\n if (numericFallback) {\n // `workingInput` at this point is the original input (cleaned, no recognized country code)\n // Assume `workingInput` is the national identifier part (must be 11 or 12 digits)\n if (workingInput.length === 12 || workingInput.length === 11) {\n parsedCountryCode = numericFallback;\n parsedNationalIdentifier = workingInput;\n // Update _raw to reflect the tag as if it had the country code\n this._raw = numericFallback + workingInput;\n }\n }\n }\n\n // Part 3: Finalize and set properties\n if (parsedCountryCode && parsedNationalIdentifier) {\n this._isoCountryCode = parsedCountryCode;\n if (parsedNationalIdentifier.length === 11) {\n // Pad 11-digit national ID to 12-digits by prepending \"0\"\n this._nationalIdentifier = \"0\" + parsedNationalIdentifier;\n } else if (parsedNationalIdentifier.length === 12) {\n this._nationalIdentifier = parsedNationalIdentifier;\n } else {\n // This case should ideally not be reached if lengths are checked properly before.\n this._isEartag = false;\n return;\n }\n this._isEartag = true;\n } else {\n this._isEartag = false;\n }\n }\n\n public static parse(\n str: string,\n fallbackCountryCode?: CountryCode | string | null\n ): EarTag {\n return new EarTag(str, fallbackCountryCode);\n }\n\n public static format(\n str: string,\n marketCountry?: string | null | undefined\n ): string | null {\n let t = EarTag.parse(str, marketCountry);\n if (t.isEartag()) {\n return t.toString();\n }\n return null;\n }\n\n toString(): string {\n if (!this._isEartag) {\n return \"Invalid EarTag\";\n }\n\n return `${\n EarTag.countryCodesByNumber[this.isoCountryCode!]\n } ${this.nationalIdentifier!.slice(0, 7)} ${this.nationalIdentifier!.slice(\n 7\n )}`;\n }\n\n isISO24631(): boolean {\n return EarTag.regexISO24631.test(this._raw);\n }\n\n toISO24631(): string {\n if (!this.isISO24631()) {\n return \"Not a ISO24631 EarTag\";\n }\n // ISO 24631 Formatting for movements\n const res = EarTag.regexISO24631.exec(this._raw)!;\n return `${res[1]} ${res[2]} ${res[3]} ${res[4]} ${res[5]} ${res[6]} ${res[7]} ${res[8]}`;\n }\n}\n","/**\n * Extract the smallest lot number for sorting purposes.\n * Handles formats:\n * - Simple: \"7\" -> 7\n * - Alpha suffix: \"7A\" -> 7\n * - Range: \"7-9\" -> 7\n * - Range with alpha: \"7A-9A\" -> 7\n * - With gaps: \"7-8, 10\" -> 7\n * - Complex: \"7A-8A, 10B\" -> 7\n */\nfunction extractMinLotNumber(lotNumber: string): {\n num: number | null;\n alpha: string;\n} {\n // Handle empty/null\n if (!lotNumber) return { num: null, alpha: \"\" };\n\n // Split by comma first (handles \"7-8, 10\" format), flexible with whitespace\n let segments = lotNumber.split(/\\s*,\\s*/);\n\n let minNum: number | null = null;\n let minAlpha = \"\";\n\n for (let segment of segments) {\n // Split by hyphen (handles \"7-9\" range format), flexible with whitespace\n let rangeParts = segment.split(/\\s*-\\s*/);\n\n for (let part of rangeParts) {\n // Extract number and alpha from each part (e.g., \"7A\" -> 7, \"A\")\n let match = part.trim().match(/^(\\d+)(\\D*)$/);\n if (match) {\n let num = parseInt(match[1], 10);\n let alpha = match[2] || \"\";\n\n if (\n minNum === null ||\n num < minNum ||\n (num === minNum && alpha < minAlpha)\n ) {\n minNum = num;\n minAlpha = alpha;\n }\n }\n }\n }\n\n return { num: minNum, alpha: minAlpha };\n}\n\nexport function lotComparator<T extends { lotNumber: string }>(\n a: T,\n b: T\n): number {\n let aMin = extractMinLotNumber(a.lotNumber);\n let bMin = extractMinLotNumber(b.lotNumber);\n\n // If neither has numbers, fall back to string comparison\n if (aMin.num === null && bMin.num === null) {\n return a.lotNumber.localeCompare(b.lotNumber);\n }\n\n // If only one has numbers, the one without comes first\n if (aMin.num === null) return -1;\n if (bMin.num === null) return 1;\n\n // Compare numeric parts\n if (aMin.num !== bMin.num) return aMin.num - bMin.num;\n\n // Compare alpha suffixes by length then alphabetically\n if (aMin.alpha.length !== bMin.alpha.length) {\n return aMin.alpha.length - bMin.alpha.length;\n }\n return aMin.alpha.localeCompare(bMin.alpha);\n}\n\nexport function sortByLotNumber<T extends { lotNumber: string }>(\n lots: T[]\n): T[] {\n return [...lots].sort(lotComparator);\n}\n\n/***\n * Generate the next lot number in a sequence.\n * Handles various formats:\n * - Simple: \"7\" -> \"8\"\n * - Alphanumeric: \"7A\" -> \"7B\"\n * - Range: \"1-3\" -> \"4\", \"1 - 3\" -> \"4\" (flexible whitespace)\n * - Range with alpha: \"1-3A\" -> \"3B\"\n * - Compound: \"1-3, 10\" -> \"11\", \"1-5, 7-9\" -> \"10\"\n */\nexport function nextLotNumber(previousLotNumber: string): string {\n // Helper to compare alpha suffixes (longer = greater, then alphabetically)\n function isGreaterAlpha(a: string, b: string): boolean {\n let aUpper = a.toUpperCase();\n let bUpper = b.toUpperCase();\n if (aUpper.length !== bUpper.length) {\n return aUpper.length > bUpper.length;\n }\n return aUpper > bUpper;\n }\n\n // Split by comma (handles \"7-8, 10\" format), flexible with whitespace\n let segments = previousLotNumber.split(/\\s*,\\s*/);\n\n let maxNum: number | null = null;\n let maxAlpha = \"\";\n\n for (let segment of segments) {\n // Check if segment is a range (contains hyphen with numbers on both sides)\n // Flexible with whitespace: \"1-3\", \"1 - 3\", \"1- 3\", \"1 -3\", \"1 -3\"\n let rangeMatch = segment.trim().match(/^(\\d+)\\s*-\\s*(\\d+)(\\D*)$/);\n\n if (rangeMatch) {\n // Range format: take the end number\n let endNum = parseInt(rangeMatch[2], 10);\n let alphaPart = rangeMatch[3] || \"\";\n\n if (\n maxNum === null ||\n endNum > maxNum ||\n (endNum === maxNum && isGreaterAlpha(alphaPart, maxAlpha))\n ) {\n maxNum = endNum;\n maxAlpha = alphaPart;\n }\n } else {\n // Single value: \"7\" or \"7A\"\n let singleMatch = segment.trim().match(/^(\\d+)(\\D*)$/);\n if (singleMatch) {\n let num = parseInt(singleMatch[1], 10);\n let alphaPart = singleMatch[2] || \"\";\n\n if (\n maxNum === null ||\n num > maxNum ||\n (num === maxNum && isGreaterAlpha(alphaPart, maxAlpha))\n ) {\n maxNum = num;\n maxAlpha = alphaPart;\n }\n }\n }\n }\n\n // If we found numeric parts, increment\n if (maxNum !== null) {\n if (maxAlpha === \"\") {\n return (maxNum + 1).toString();\n } else {\n let nextAlpha = incrementAlphaSequence(maxAlpha);\n return maxNum + nextAlpha;\n }\n }\n\n // Fallback: treat as pure alphabetic (e.g., \"A\" -> \"B\")\n return incrementAlphaSequence(previousLotNumber);\n}\n\nfunction incrementAlphaSequence(alpha: string): string {\n if (alpha === \"\") {\n return \"A\";\n }\n\n // Convert to uppercase for consistent handling\n alpha = alpha.toUpperCase();\n\n // Check if we're at the end of sequence (all Z's)\n if (alpha === \"Z\".repeat(alpha.length)) {\n // Z -> AA, ZZ -> AAA, etc.\n return \"A\".repeat(alpha.length + 1);\n }\n\n // Convert string to array for easier manipulation\n let chars = alpha.split(\"\");\n let carry = true;\n\n // Start from the rightmost character and work backwards\n for (let i = chars.length - 1; i >= 0 && carry; i--) {\n if (chars[i] === \"Z\") {\n chars[i] = \"A\";\n // carry remains true\n } else {\n // Increment the character\n chars[i] = String.fromCharCode(chars[i].charCodeAt(0) + 1);\n carry = false;\n }\n }\n\n // If we still have carry, prepend an A\n if (carry) {\n chars.unshift(\"A\");\n }\n\n return chars.join(\"\");\n}\n"],"names":["create","createHmac","IMAGE_SIZES_VALUES","VIDEO_TASKS_VALUES","activity","markets","sales","lots","lotItems","carts","cph","webhooks","actions","bidderApplications","settings","adjustments","extras","productCodes","saleTemplates","taxRates","customers","invoices","payments","payouts","search","files","contacts","ledger","HttpClient","Resources"],"mappings":"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","x_google_ignoreList":[9]}
|