@genspectrum/dashboard-components 1.11.0 → 1.11.1
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/assets/{mutationOverTimeWorker-dhufsWQ2.js.map → mutationOverTimeWorker-CQQFRoK4.js.map} +1 -1
- package/dist/components.d.ts +55 -55
- package/dist/components.js +86 -35
- package/dist/components.js.map +1 -1
- package/dist/util.d.ts +55 -55
- package/package.json +1 -1
- package/src/preact/mutationsOverTime/getFilteredMutationsOverTimeData.ts +1 -1
- package/src/preact/mutationsOverTime/mutations-over-time-grid-tooltip.stories.tsx +47 -0
- package/src/preact/mutationsOverTime/mutations-over-time-grid-tooltip.tsx +64 -28
- package/src/preact/mutationsOverTime/mutations-over-time-grid.tsx +2 -2
- package/src/preact/mutationsOverTime/mutations-over-time.tsx +2 -2
- package/src/query/queryMutationsOverTime.ts +21 -2
- package/src/query/queryMutationsOverTimeNewEndpoint.spec.ts +23 -23
- package/standalone-bundle/assets/{mutationOverTimeWorker-CGqPKySO.js.map → mutationOverTimeWorker-DIpJukJC.js.map} +1 -1
- package/standalone-bundle/dashboard-components.js +1820 -1768
- package/standalone-bundle/dashboard-components.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutationOverTimeWorker-dhufsWQ2.js","sources":["../node_modules/zod/v3/helpers/util.js","../node_modules/zod/v3/ZodError.js","../node_modules/zod/v3/locales/en.js","../node_modules/zod/v3/errors.js","../node_modules/zod/v3/helpers/parseUtil.js","../node_modules/zod/v3/helpers/errorUtil.js","../node_modules/zod/v3/types.js","../src/lapisApi/ReferenceGenome.ts","../src/lapisApi/lapisTypes.ts","../src/lapisApi/LineageDefinition.ts","../src/lapisApi/lapisApi.ts","../src/operator/FetchAggregatedOperator.ts","../src/operator/GroupByOperator.ts","../src/operator/GroupByAndSumOperator.ts","../src/operator/MapOperator.ts","../src/operator/RenameFieldOperator.ts","../src/operator/SortOperator.ts","../node_modules/dayjs/esm/constant.js","../node_modules/dayjs/esm/locale/en.js","../node_modules/dayjs/esm/utils.js","../node_modules/dayjs/esm/index.js","../node_modules/dayjs/esm/plugin/advancedFormat/index.js","../node_modules/dayjs/esm/plugin/isoWeek/index.js","../src/utils/temporalClass.ts","../src/query/queryAggregatedDataOverTime.ts","../src/utils/mutations.ts","../src/operator/FetchSubstitutionsOrDeletionsOperator.ts","../node_modules/preact/dist/preact.module.js","../node_modules/preact/hooks/dist/hooks.module.js","../src/preact/components/error-display.tsx","../src/utils/map2d.ts","../src/preact/mutationsOverTime/MutationOverTimeData.ts","../src/preact/shared/sort/sortSubstitutionsAndDeletions.ts","../src/query/queryMutationsOverTime.ts","../src/preact/webWorkers/workerFunction.ts","../src/preact/mutationsOverTime/mutationOverTimeWorker.ts"],"sourcesContent":["export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n","import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n","import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n","import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n","export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n","import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n","import z from 'zod';\n\nimport type { SequenceType } from '../types';\n\nexport const referenceGenomeResponse = z.object({\n nucleotideSequences: z.array(\n z.object({\n name: z.string(),\n sequence: z.string(),\n }),\n ),\n genes: z.array(\n z.object({\n name: z.string(),\n sequence: z.string(),\n }),\n ),\n});\nexport type ReferenceGenome = z.infer<typeof referenceGenomeResponse>;\n\nexport const getSegmentNames = (referenceGenome: ReferenceGenome, sequenceType: SequenceType) => {\n switch (sequenceType) {\n case 'nucleotide': {\n return referenceGenome.nucleotideSequences.map((sequence) => sequence.name);\n }\n case 'amino acid': {\n return referenceGenome.genes.map((gene) => gene.name);\n }\n }\n};\n\nexport const isSingleSegmented = (referenceGenome: ReferenceGenome) => referenceGenome.nucleotideSequences.length === 1;\n","import z, { type ZodTypeAny } from 'zod';\n\nexport const orderByType = z.enum(['ascending', 'descending']);\n\nexport const orderBy = z.object({\n field: z.string(),\n type: orderByType,\n});\n\nconst filterValue = z.union([z.string(), z.number(), z.boolean(), z.null(), z.undefined(), z.array(z.string())]);\n\nconst dateRange = z.object({\n dateFrom: z.string(),\n dateTo: z.string(),\n});\n\nexport const lapisBaseRequest = z\n .object({\n limit: z.number().optional(),\n offset: z.number().optional(),\n fields: z.array(z.string()).optional(),\n orderBy: z.array(orderBy).optional(),\n })\n .catchall(filterValue);\nexport type LapisBaseRequest = z.infer<typeof lapisBaseRequest>;\n\nexport const mutationsRequest = lapisBaseRequest.extend({ minProportion: z.number().optional() });\nexport type MutationsRequest = z.infer<typeof mutationsRequest>;\n\nconst mutationProportionCount = z.object({\n mutation: z.string(),\n proportion: z.number(),\n count: z.number(),\n sequenceName: z.union([z.string(), z.null()]),\n mutationFrom: z.string(),\n mutationTo: z.string(),\n position: z.number(),\n});\nexport const mutationsResponse = makeLapisResponse(z.array(mutationProportionCount));\nexport type MutationsResponse = z.infer<typeof mutationsResponse>;\n\nexport const mutationsOverTimeRequest = z.object({\n filters: z.record(filterValue),\n downloadAsFile: z.boolean().optional(),\n downloadFileBasename: z.string().optional(),\n compression: z.enum(['gzip', 'none']).optional(),\n includeMutations: z.array(z.string()).optional(),\n dateRanges: z.array(dateRange).optional(),\n dateField: z.string().optional(),\n});\nexport type MutationsOverTimeRequest = z.infer<typeof mutationsOverTimeRequest>;\n\nexport const mutationsOverTimeResponse = makeLapisResponse(\n z.object({\n mutations: z.array(z.string()),\n dateRanges: z.array(dateRange),\n data: z.array(\n z.array(\n z.object({\n count: z.number(),\n coverage: z.number(),\n }),\n ),\n ),\n }),\n);\nexport type MutationsOverTimeResponse = z.infer<typeof mutationsOverTimeResponse>;\n\nconst insertionCount = z.object({\n insertion: z.string(),\n count: z.number(),\n insertedSymbols: z.string(),\n position: z.number(),\n sequenceName: z.union([z.string(), z.null()]),\n});\nexport const insertionsResponse = makeLapisResponse(z.array(insertionCount));\n\nconst baseResponseValueSchema = z.union([z.string(), z.number(), z.boolean(), z.null()]);\n\nexport const aggregatedItem = z.object({ count: z.number() }).catchall(baseResponseValueSchema);\nexport const aggregatedResponse = makeLapisResponse(z.array(aggregatedItem));\nexport type AggregatedItem = z.infer<typeof aggregatedItem>;\n\nexport const detailsItem = z.object({}).catchall(baseResponseValueSchema);\nexport const detailsResponse = makeLapisResponse(z.array(detailsItem));\nexport type DetailsItem = z.infer<typeof detailsItem>;\n\nfunction makeLapisResponse<T extends ZodTypeAny>(data: T) {\n return z.object({\n data,\n });\n}\n\nexport const problemDetail = z.object({\n title: z.string().optional(),\n status: z.number(),\n detail: z.string().optional(),\n type: z.string(),\n instance: z.string().optional(),\n});\n\nexport type ProblemDetail = z.infer<typeof problemDetail>;\n\nexport const lapisError = z.object({\n error: problemDetail,\n});\n","import z from 'zod';\n\nconst lineage = z.object({\n parents: z.array(z.string()).optional(),\n aliases: z.array(z.string()).optional(),\n});\n\nexport const lineageDefinitionResponseSchema = z.record(lineage);\nexport type LineageDefinitionResponse = z.infer<typeof lineageDefinitionResponseSchema>;\n","import { referenceGenomeResponse } from './ReferenceGenome';\nimport {\n aggregatedResponse,\n detailsResponse,\n insertionsResponse,\n type LapisBaseRequest,\n lapisError,\n type MutationsRequest,\n mutationsResponse,\n problemDetail,\n type ProblemDetail,\n type MutationsOverTimeRequest,\n mutationsOverTimeResponse,\n} from './lapisTypes';\nimport { type SequenceType } from '../types';\nimport { lineageDefinitionResponseSchema } from './LineageDefinition';\n\nexport class UnknownLapisError extends Error {\n constructor(\n message: string,\n public readonly status: number,\n public readonly requestedData: string,\n ) {\n super(message);\n this.name = 'UnknownLapisError';\n }\n}\n\nexport class LapisError extends Error {\n constructor(\n message: string,\n public readonly status: number,\n public readonly problemDetail: ProblemDetail,\n public readonly requestedData: string,\n ) {\n super(message);\n this.name = 'LapisError';\n }\n}\n\nexport async function fetchAggregated(lapisUrl: string, body: LapisBaseRequest, signal?: AbortSignal) {\n const response = await callLapis(\n aggregatedEndpoint(lapisUrl),\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n signal,\n },\n 'aggregated data',\n );\n\n return aggregatedResponse.parse(await response.json());\n}\n\nexport async function fetchDetails(lapisUrl: string, body: LapisBaseRequest, signal?: AbortSignal) {\n const response = await fetch(detailsEndpoint(lapisUrl), {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n signal,\n });\n\n await handleErrors(response, 'aggregated data');\n\n return detailsResponse.parse(await response.json());\n}\n\nexport async function fetchInsertions(\n lapisUrl: string,\n body: LapisBaseRequest,\n sequenceType: SequenceType,\n signal?: AbortSignal,\n) {\n const response = await callLapis(\n insertionsEndpoint(lapisUrl, sequenceType),\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n signal,\n },\n `${sequenceType} insertions`,\n );\n\n return insertionsResponse.parse(await response.json());\n}\n\nexport async function fetchSubstitutionsOrDeletions(\n lapisUrl: string,\n body: MutationsRequest,\n sequenceType: SequenceType,\n signal?: AbortSignal,\n) {\n const response = await callLapis(\n substitutionsOrDeletionsEndpoint(lapisUrl, sequenceType),\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n signal,\n },\n `${sequenceType} mutations`,\n );\n\n return mutationsResponse.parse(await response.json());\n}\n\nexport async function fetchMutationsOverTime(\n lapisUrl: string,\n body: MutationsOverTimeRequest,\n sequenceType: SequenceType,\n signal?: AbortSignal,\n) {\n const response = await callLapis(\n mutationsOverTimeEndpoint(lapisUrl, sequenceType),\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n signal,\n },\n `${sequenceType} mutations over time`,\n );\n\n return mutationsOverTimeResponse.parse(await response.json());\n}\n\nexport async function fetchReferenceGenome(lapisUrl: string, signal?: AbortSignal) {\n const response = await callLapis(\n referenceGenomeEndpoint(lapisUrl),\n {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n signal,\n },\n 'the reference genomes',\n );\n\n return referenceGenomeResponse.parse(await response.json());\n}\n\nexport async function fetchLineageDefinition({\n lapisUrl,\n lapisField,\n signal,\n}: {\n lapisUrl: string;\n lapisField: string;\n signal?: AbortSignal;\n}) {\n const response = await callLapis(\n lineageDefinitionEndpoint(lapisUrl, lapisField),\n {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n signal,\n },\n `${lapisField} lineage definition`,\n );\n\n return lineageDefinitionResponseSchema.parse(await response.json());\n}\n\nasync function callLapis(\n input: Parameters<typeof fetch>[0],\n init: Parameters<typeof fetch>[1],\n requestedDataName: string,\n) {\n try {\n const response = await fetch(input, init);\n\n await handleErrors(response, requestedDataName);\n return response;\n } catch (error) {\n const message = error instanceof Error ? error.message : `${error}`;\n throw new UnknownLapisError(`Failed to connect to LAPIS: ${message}`, 500, requestedDataName);\n }\n}\n\nconst handleErrors = async (response: Response, requestedData: string) => {\n if (!response.ok) {\n if (response.status >= 400 && response.status < 500) {\n const json = (await response.json()) as unknown;\n\n const lapisErrorResult = lapisError.safeParse(json);\n if (lapisErrorResult.success) {\n throw new LapisError(\n response.statusText + (lapisErrorResult.data.error.detail ?? ''),\n response.status,\n lapisErrorResult.data.error,\n requestedData,\n );\n }\n\n const problemDetailResult = problemDetail.safeParse(json);\n if (problemDetailResult.success) {\n throw new LapisError(\n response.statusText + (problemDetailResult.data.detail ?? ''),\n response.status,\n problemDetailResult.data,\n requestedData,\n );\n }\n\n throw new UnknownLapisError(\n `${response.statusText}: ${JSON.stringify(json)}`,\n response.status,\n requestedData,\n );\n }\n throw new UnknownLapisError(`${response.statusText}: ${response.status}`, response.status, requestedData);\n }\n};\n\nexport const aggregatedEndpoint = (lapisUrl: string) => `${lapisUrl}/sample/aggregated`;\nexport const detailsEndpoint = (lapisUrl: string) => `${lapisUrl}/sample/details`;\nexport const insertionsEndpoint = (lapisUrl: string, sequenceType: SequenceType) => {\n return sequenceType === 'amino acid'\n ? `${lapisUrl}/sample/aminoAcidInsertions`\n : `${lapisUrl}/sample/nucleotideInsertions`;\n};\nexport const substitutionsOrDeletionsEndpoint = (lapisUrl: string, sequenceType: SequenceType) => {\n return sequenceType === 'amino acid'\n ? `${lapisUrl}/sample/aminoAcidMutations`\n : `${lapisUrl}/sample/nucleotideMutations`;\n};\nexport const mutationsOverTimeEndpoint = (lapisUrl: string, sequenceType: SequenceType) => {\n return sequenceType === 'amino acid'\n ? `${lapisUrl}/component/aminoAcidMutationsOverTime`\n : `${lapisUrl}/component/nucleotideMutationsOverTime`;\n};\nexport const referenceGenomeEndpoint = (lapisUrl: string) => `${lapisUrl}/sample/referenceGenome`;\nexport const lineageDefinitionEndpoint = (lapisUrl: string, lapisField: string) =>\n `${lapisUrl}/sample/lineageDefinition/${lapisField}`;\n","import { type Dataset } from './Dataset';\nimport { type Operator } from './Operator';\nimport { fetchAggregated } from '../lapisApi/lapisApi';\nimport { type AggregatedItem } from '../lapisApi/lapisTypes';\nimport { type LapisFilter } from '../types';\n\nexport class FetchAggregatedOperator<Fields extends Record<string, unknown>>\n implements Operator<Fields & { count: number }>\n{\n constructor(\n private filter: LapisFilter,\n private fields: string[] = [],\n ) {}\n\n async evaluate(lapisUrl: string, signal?: AbortSignal): Promise<Dataset<Fields & { count: number }>> {\n const aggregatedResponse = (\n await fetchAggregated(\n lapisUrl,\n {\n ...this.filter,\n fields: this.fields,\n },\n signal,\n )\n ).data;\n\n if (isFieldsArrayWithCount<Fields & { count: number }>(aggregatedResponse)) {\n return {\n content: aggregatedResponse,\n };\n }\n\n throw new Error('Aggregated response does not have count');\n }\n}\n\nfunction isFieldsArrayWithCount<T>(data: AggregatedItem[]): data is (T & { count: number })[] {\n return data.every((item) => typeof item === 'object' && 'count' in item && typeof item.count === 'number');\n}\n","import { type Dataset } from './Dataset';\nimport { type Operator } from './Operator';\n\nexport class GroupByOperator<Data, AggregationResult, KeyToGroupBy extends keyof Data>\n implements Operator<AggregationResult>\n{\n constructor(\n private child: Operator<Data>,\n private field: KeyToGroupBy,\n private aggregate: (values: Data[]) => AggregationResult,\n ) {}\n\n async evaluate(lapis: string, signal?: AbortSignal): Promise<Dataset<AggregationResult>> {\n const childEvaluated = await this.child.evaluate(lapis, signal);\n const grouped = new Map<Data[KeyToGroupBy], Data[]>();\n for (const row of childEvaluated.content) {\n const key = row[this.field];\n if (!grouped.has(key)) {\n grouped.set(key, []);\n }\n grouped.get(key)!.push(row);\n }\n const result = new Array<AggregationResult>();\n for (const [, values] of grouped) {\n result.push(this.aggregate(values));\n }\n\n return {\n content: result,\n };\n }\n}\n","import { GroupByOperator } from './GroupByOperator';\nimport { type Operator } from './Operator';\nimport { type NumberFields } from '../utils/type-utils';\n\ntype Result<Data, KeyToGroupBy extends keyof Data, KeyToSumBy extends keyof Data> = {\n [P in KeyToGroupBy | KeyToSumBy]: P extends KeyToGroupBy ? Data[KeyToGroupBy] : number;\n};\n\nexport class GroupByAndSumOperator<\n Data,\n KeyToGroupBy extends keyof Data,\n KeySoSumBy extends NumberFields<Data>,\n> extends GroupByOperator<Data, Result<Data, KeyToGroupBy, KeySoSumBy>, KeyToGroupBy> {\n constructor(child: Operator<Data>, groupByField: KeyToGroupBy, sumField: KeySoSumBy) {\n super(child, groupByField, (values: Data[]) => {\n let n = 0;\n for (const value of values) {\n n += value[sumField] as number;\n }\n return {\n [groupByField]: values[0][groupByField],\n [sumField]: n,\n } as Result<Data, KeyToGroupBy, KeySoSumBy>;\n });\n }\n}\n","import { type Dataset } from './Dataset';\nimport { type Operator } from './Operator';\n\nexport class MapOperator<S, T> implements Operator<T> {\n constructor(\n private child: Operator<S>,\n private func: (value: S) => T,\n ) {}\n\n async evaluate(lapis: string, signal?: AbortSignal): Promise<Dataset<T>> {\n const childEvaluated = await this.child.evaluate(lapis, signal);\n return {\n content: childEvaluated.content.map(this.func),\n };\n }\n}\n","import { MapOperator } from './MapOperator';\nimport type { Operator } from './Operator';\n\nexport class RenameFieldOperator<\n OldFieldName extends string,\n NewFieldName extends string,\n Data extends Record<OldFieldName, unknown>,\n> extends MapOperator<Data, Data & Record<NewFieldName, Data[OldFieldName]>> {\n constructor(child: Operator<Data>, oldFieldName: OldFieldName, newFieldName: NewFieldName) {\n super(\n child,\n (value) =>\n ({\n ...value,\n [newFieldName]: value[oldFieldName],\n }) as Data & Record<NewFieldName, Data[OldFieldName]>,\n );\n }\n}\n","import { type Dataset } from './Dataset';\nimport { type Operator } from './Operator';\n\nexport class SortOperator<S> implements Operator<S> {\n constructor(\n private child: Operator<S>,\n private compareFn: (a: S, b: S) => number,\n ) {}\n\n async evaluate(lapis: string, signal?: AbortSignal): Promise<Dataset<S>> {\n const childEvaluated = await this.child.evaluate(lapis, signal);\n return {\n content: childEvaluated.content.sort(this.compareFn),\n };\n }\n}\n","export var SECONDS_A_MINUTE = 60;\nexport var SECONDS_A_HOUR = SECONDS_A_MINUTE * 60;\nexport var SECONDS_A_DAY = SECONDS_A_HOUR * 24;\nexport var SECONDS_A_WEEK = SECONDS_A_DAY * 7;\nexport var MILLISECONDS_A_SECOND = 1e3;\nexport var MILLISECONDS_A_MINUTE = SECONDS_A_MINUTE * MILLISECONDS_A_SECOND;\nexport var MILLISECONDS_A_HOUR = SECONDS_A_HOUR * MILLISECONDS_A_SECOND;\nexport var MILLISECONDS_A_DAY = SECONDS_A_DAY * MILLISECONDS_A_SECOND;\nexport var MILLISECONDS_A_WEEK = SECONDS_A_WEEK * MILLISECONDS_A_SECOND; // English locales\n\nexport var MS = 'millisecond';\nexport var S = 'second';\nexport var MIN = 'minute';\nexport var H = 'hour';\nexport var D = 'day';\nexport var W = 'week';\nexport var M = 'month';\nexport var Q = 'quarter';\nexport var Y = 'year';\nexport var DATE = 'date';\nexport var FORMAT_DEFAULT = 'YYYY-MM-DDTHH:mm:ssZ';\nexport var INVALID_DATE_STRING = 'Invalid Date'; // regex\n\nexport var REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/;\nexport var REGEX_FORMAT = /\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g;","// English [en]\n// We don't need weekdaysShort, weekdaysMin, monthsShort in en.js locale\nexport default {\n name: 'en',\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n ordinal: function ordinal(n) {\n var s = ['th', 'st', 'nd', 'rd'];\n var v = n % 100;\n return \"[\" + n + (s[(v - 20) % 10] || s[v] || s[0]) + \"]\";\n }\n};","import * as C from './constant';\n\nvar padStart = function padStart(string, length, pad) {\n var s = String(string);\n if (!s || s.length >= length) return string;\n return \"\" + Array(length + 1 - s.length).join(pad) + string;\n};\n\nvar padZoneStr = function padZoneStr(instance) {\n var negMinutes = -instance.utcOffset();\n var minutes = Math.abs(negMinutes);\n var hourOffset = Math.floor(minutes / 60);\n var minuteOffset = minutes % 60;\n return \"\" + (negMinutes <= 0 ? '+' : '-') + padStart(hourOffset, 2, '0') + \":\" + padStart(minuteOffset, 2, '0');\n};\n\nvar monthDiff = function monthDiff(a, b) {\n // function from moment.js in order to keep the same result\n if (a.date() < b.date()) return -monthDiff(b, a);\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month());\n var anchor = a.clone().add(wholeMonthDiff, C.M);\n var c = b - anchor < 0;\n var anchor2 = a.clone().add(wholeMonthDiff + (c ? -1 : 1), C.M);\n return +(-(wholeMonthDiff + (b - anchor) / (c ? anchor - anchor2 : anchor2 - anchor)) || 0);\n};\n\nvar absFloor = function absFloor(n) {\n return n < 0 ? Math.ceil(n) || 0 : Math.floor(n);\n};\n\nvar prettyUnit = function prettyUnit(u) {\n var special = {\n M: C.M,\n y: C.Y,\n w: C.W,\n d: C.D,\n D: C.DATE,\n h: C.H,\n m: C.MIN,\n s: C.S,\n ms: C.MS,\n Q: C.Q\n };\n return special[u] || String(u || '').toLowerCase().replace(/s$/, '');\n};\n\nvar isUndefined = function isUndefined(s) {\n return s === undefined;\n};\n\nexport default {\n s: padStart,\n z: padZoneStr,\n m: monthDiff,\n a: absFloor,\n p: prettyUnit,\n u: isUndefined\n};","import * as C from './constant';\nimport en from './locale/en';\nimport U from './utils';\nvar L = 'en'; // global locale\n\nvar Ls = {}; // global loaded locale\n\nLs[L] = en;\nvar IS_DAYJS = '$isDayjsObject'; // eslint-disable-next-line no-use-before-define\n\nvar isDayjs = function isDayjs(d) {\n return d instanceof Dayjs || !!(d && d[IS_DAYJS]);\n};\n\nvar parseLocale = function parseLocale(preset, object, isLocal) {\n var l;\n if (!preset) return L;\n\n if (typeof preset === 'string') {\n var presetLower = preset.toLowerCase();\n\n if (Ls[presetLower]) {\n l = presetLower;\n }\n\n if (object) {\n Ls[presetLower] = object;\n l = presetLower;\n }\n\n var presetSplit = preset.split('-');\n\n if (!l && presetSplit.length > 1) {\n return parseLocale(presetSplit[0]);\n }\n } else {\n var name = preset.name;\n Ls[name] = preset;\n l = name;\n }\n\n if (!isLocal && l) L = l;\n return l || !isLocal && L;\n};\n\nvar dayjs = function dayjs(date, c) {\n if (isDayjs(date)) {\n return date.clone();\n } // eslint-disable-next-line no-nested-ternary\n\n\n var cfg = typeof c === 'object' ? c : {};\n cfg.date = date;\n cfg.args = arguments; // eslint-disable-line prefer-rest-params\n\n return new Dayjs(cfg); // eslint-disable-line no-use-before-define\n};\n\nvar wrapper = function wrapper(date, instance) {\n return dayjs(date, {\n locale: instance.$L,\n utc: instance.$u,\n x: instance.$x,\n $offset: instance.$offset // todo: refactor; do not use this.$offset in you code\n\n });\n};\n\nvar Utils = U; // for plugin use\n\nUtils.l = parseLocale;\nUtils.i = isDayjs;\nUtils.w = wrapper;\n\nvar parseDate = function parseDate(cfg) {\n var date = cfg.date,\n utc = cfg.utc;\n if (date === null) return new Date(NaN); // null is invalid\n\n if (Utils.u(date)) return new Date(); // today\n\n if (date instanceof Date) return new Date(date);\n\n if (typeof date === 'string' && !/Z$/i.test(date)) {\n var d = date.match(C.REGEX_PARSE);\n\n if (d) {\n var m = d[2] - 1 || 0;\n var ms = (d[7] || '0').substring(0, 3);\n\n if (utc) {\n return new Date(Date.UTC(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms));\n }\n\n return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);\n }\n }\n\n return new Date(date); // everything else\n};\n\nvar Dayjs = /*#__PURE__*/function () {\n function Dayjs(cfg) {\n this.$L = parseLocale(cfg.locale, null, true);\n this.parse(cfg); // for plugin\n\n this.$x = this.$x || cfg.x || {};\n this[IS_DAYJS] = true;\n }\n\n var _proto = Dayjs.prototype;\n\n _proto.parse = function parse(cfg) {\n this.$d = parseDate(cfg);\n this.init();\n };\n\n _proto.init = function init() {\n var $d = this.$d;\n this.$y = $d.getFullYear();\n this.$M = $d.getMonth();\n this.$D = $d.getDate();\n this.$W = $d.getDay();\n this.$H = $d.getHours();\n this.$m = $d.getMinutes();\n this.$s = $d.getSeconds();\n this.$ms = $d.getMilliseconds();\n } // eslint-disable-next-line class-methods-use-this\n ;\n\n _proto.$utils = function $utils() {\n return Utils;\n };\n\n _proto.isValid = function isValid() {\n return !(this.$d.toString() === C.INVALID_DATE_STRING);\n };\n\n _proto.isSame = function isSame(that, units) {\n var other = dayjs(that);\n return this.startOf(units) <= other && other <= this.endOf(units);\n };\n\n _proto.isAfter = function isAfter(that, units) {\n return dayjs(that) < this.startOf(units);\n };\n\n _proto.isBefore = function isBefore(that, units) {\n return this.endOf(units) < dayjs(that);\n };\n\n _proto.$g = function $g(input, get, set) {\n if (Utils.u(input)) return this[get];\n return this.set(set, input);\n };\n\n _proto.unix = function unix() {\n return Math.floor(this.valueOf() / 1000);\n };\n\n _proto.valueOf = function valueOf() {\n // timezone(hour) * 60 * 60 * 1000 => ms\n return this.$d.getTime();\n };\n\n _proto.startOf = function startOf(units, _startOf) {\n var _this = this;\n\n // startOf -> endOf\n var isStartOf = !Utils.u(_startOf) ? _startOf : true;\n var unit = Utils.p(units);\n\n var instanceFactory = function instanceFactory(d, m) {\n var ins = Utils.w(_this.$u ? Date.UTC(_this.$y, m, d) : new Date(_this.$y, m, d), _this);\n return isStartOf ? ins : ins.endOf(C.D);\n };\n\n var instanceFactorySet = function instanceFactorySet(method, slice) {\n var argumentStart = [0, 0, 0, 0];\n var argumentEnd = [23, 59, 59, 999];\n return Utils.w(_this.toDate()[method].apply( // eslint-disable-line prefer-spread\n _this.toDate('s'), (isStartOf ? argumentStart : argumentEnd).slice(slice)), _this);\n };\n\n var $W = this.$W,\n $M = this.$M,\n $D = this.$D;\n var utcPad = \"set\" + (this.$u ? 'UTC' : '');\n\n switch (unit) {\n case C.Y:\n return isStartOf ? instanceFactory(1, 0) : instanceFactory(31, 11);\n\n case C.M:\n return isStartOf ? instanceFactory(1, $M) : instanceFactory(0, $M + 1);\n\n case C.W:\n {\n var weekStart = this.$locale().weekStart || 0;\n var gap = ($W < weekStart ? $W + 7 : $W) - weekStart;\n return instanceFactory(isStartOf ? $D - gap : $D + (6 - gap), $M);\n }\n\n case C.D:\n case C.DATE:\n return instanceFactorySet(utcPad + \"Hours\", 0);\n\n case C.H:\n return instanceFactorySet(utcPad + \"Minutes\", 1);\n\n case C.MIN:\n return instanceFactorySet(utcPad + \"Seconds\", 2);\n\n case C.S:\n return instanceFactorySet(utcPad + \"Milliseconds\", 3);\n\n default:\n return this.clone();\n }\n };\n\n _proto.endOf = function endOf(arg) {\n return this.startOf(arg, false);\n };\n\n _proto.$set = function $set(units, _int) {\n var _C$D$C$DATE$C$M$C$Y$C;\n\n // private set\n var unit = Utils.p(units);\n var utcPad = \"set\" + (this.$u ? 'UTC' : '');\n var name = (_C$D$C$DATE$C$M$C$Y$C = {}, _C$D$C$DATE$C$M$C$Y$C[C.D] = utcPad + \"Date\", _C$D$C$DATE$C$M$C$Y$C[C.DATE] = utcPad + \"Date\", _C$D$C$DATE$C$M$C$Y$C[C.M] = utcPad + \"Month\", _C$D$C$DATE$C$M$C$Y$C[C.Y] = utcPad + \"FullYear\", _C$D$C$DATE$C$M$C$Y$C[C.H] = utcPad + \"Hours\", _C$D$C$DATE$C$M$C$Y$C[C.MIN] = utcPad + \"Minutes\", _C$D$C$DATE$C$M$C$Y$C[C.S] = utcPad + \"Seconds\", _C$D$C$DATE$C$M$C$Y$C[C.MS] = utcPad + \"Milliseconds\", _C$D$C$DATE$C$M$C$Y$C)[unit];\n var arg = unit === C.D ? this.$D + (_int - this.$W) : _int;\n\n if (unit === C.M || unit === C.Y) {\n // clone is for badMutable plugin\n var date = this.clone().set(C.DATE, 1);\n date.$d[name](arg);\n date.init();\n this.$d = date.set(C.DATE, Math.min(this.$D, date.daysInMonth())).$d;\n } else if (name) this.$d[name](arg);\n\n this.init();\n return this;\n };\n\n _proto.set = function set(string, _int2) {\n return this.clone().$set(string, _int2);\n };\n\n _proto.get = function get(unit) {\n return this[Utils.p(unit)]();\n };\n\n _proto.add = function add(number, units) {\n var _this2 = this,\n _C$MIN$C$H$C$S$unit;\n\n number = Number(number); // eslint-disable-line no-param-reassign\n\n var unit = Utils.p(units);\n\n var instanceFactorySet = function instanceFactorySet(n) {\n var d = dayjs(_this2);\n return Utils.w(d.date(d.date() + Math.round(n * number)), _this2);\n };\n\n if (unit === C.M) {\n return this.set(C.M, this.$M + number);\n }\n\n if (unit === C.Y) {\n return this.set(C.Y, this.$y + number);\n }\n\n if (unit === C.D) {\n return instanceFactorySet(1);\n }\n\n if (unit === C.W) {\n return instanceFactorySet(7);\n }\n\n var step = (_C$MIN$C$H$C$S$unit = {}, _C$MIN$C$H$C$S$unit[C.MIN] = C.MILLISECONDS_A_MINUTE, _C$MIN$C$H$C$S$unit[C.H] = C.MILLISECONDS_A_HOUR, _C$MIN$C$H$C$S$unit[C.S] = C.MILLISECONDS_A_SECOND, _C$MIN$C$H$C$S$unit)[unit] || 1; // ms\n\n var nextTimeStamp = this.$d.getTime() + number * step;\n return Utils.w(nextTimeStamp, this);\n };\n\n _proto.subtract = function subtract(number, string) {\n return this.add(number * -1, string);\n };\n\n _proto.format = function format(formatStr) {\n var _this3 = this;\n\n var locale = this.$locale();\n if (!this.isValid()) return locale.invalidDate || C.INVALID_DATE_STRING;\n var str = formatStr || C.FORMAT_DEFAULT;\n var zoneStr = Utils.z(this);\n var $H = this.$H,\n $m = this.$m,\n $M = this.$M;\n var weekdays = locale.weekdays,\n months = locale.months,\n meridiem = locale.meridiem;\n\n var getShort = function getShort(arr, index, full, length) {\n return arr && (arr[index] || arr(_this3, str)) || full[index].slice(0, length);\n };\n\n var get$H = function get$H(num) {\n return Utils.s($H % 12 || 12, num, '0');\n };\n\n var meridiemFunc = meridiem || function (hour, minute, isLowercase) {\n var m = hour < 12 ? 'AM' : 'PM';\n return isLowercase ? m.toLowerCase() : m;\n };\n\n var matches = function matches(match) {\n switch (match) {\n case 'YY':\n return String(_this3.$y).slice(-2);\n\n case 'YYYY':\n return Utils.s(_this3.$y, 4, '0');\n\n case 'M':\n return $M + 1;\n\n case 'MM':\n return Utils.s($M + 1, 2, '0');\n\n case 'MMM':\n return getShort(locale.monthsShort, $M, months, 3);\n\n case 'MMMM':\n return getShort(months, $M);\n\n case 'D':\n return _this3.$D;\n\n case 'DD':\n return Utils.s(_this3.$D, 2, '0');\n\n case 'd':\n return String(_this3.$W);\n\n case 'dd':\n return getShort(locale.weekdaysMin, _this3.$W, weekdays, 2);\n\n case 'ddd':\n return getShort(locale.weekdaysShort, _this3.$W, weekdays, 3);\n\n case 'dddd':\n return weekdays[_this3.$W];\n\n case 'H':\n return String($H);\n\n case 'HH':\n return Utils.s($H, 2, '0');\n\n case 'h':\n return get$H(1);\n\n case 'hh':\n return get$H(2);\n\n case 'a':\n return meridiemFunc($H, $m, true);\n\n case 'A':\n return meridiemFunc($H, $m, false);\n\n case 'm':\n return String($m);\n\n case 'mm':\n return Utils.s($m, 2, '0');\n\n case 's':\n return String(_this3.$s);\n\n case 'ss':\n return Utils.s(_this3.$s, 2, '0');\n\n case 'SSS':\n return Utils.s(_this3.$ms, 3, '0');\n\n case 'Z':\n return zoneStr;\n // 'ZZ' logic below\n\n default:\n break;\n }\n\n return null;\n };\n\n return str.replace(C.REGEX_FORMAT, function (match, $1) {\n return $1 || matches(match) || zoneStr.replace(':', '');\n }); // 'ZZ'\n };\n\n _proto.utcOffset = function utcOffset() {\n // Because a bug at FF24, we're rounding the timezone offset around 15 minutes\n // https://github.com/moment/moment/pull/1871\n return -Math.round(this.$d.getTimezoneOffset() / 15) * 15;\n };\n\n _proto.diff = function diff(input, units, _float) {\n var _this4 = this;\n\n var unit = Utils.p(units);\n var that = dayjs(input);\n var zoneDelta = (that.utcOffset() - this.utcOffset()) * C.MILLISECONDS_A_MINUTE;\n var diff = this - that;\n\n var getMonth = function getMonth() {\n return Utils.m(_this4, that);\n };\n\n var result;\n\n switch (unit) {\n case C.Y:\n result = getMonth() / 12;\n break;\n\n case C.M:\n result = getMonth();\n break;\n\n case C.Q:\n result = getMonth() / 3;\n break;\n\n case C.W:\n result = (diff - zoneDelta) / C.MILLISECONDS_A_WEEK;\n break;\n\n case C.D:\n result = (diff - zoneDelta) / C.MILLISECONDS_A_DAY;\n break;\n\n case C.H:\n result = diff / C.MILLISECONDS_A_HOUR;\n break;\n\n case C.MIN:\n result = diff / C.MILLISECONDS_A_MINUTE;\n break;\n\n case C.S:\n result = diff / C.MILLISECONDS_A_SECOND;\n break;\n\n default:\n result = diff; // milliseconds\n\n break;\n }\n\n return _float ? result : Utils.a(result);\n };\n\n _proto.daysInMonth = function daysInMonth() {\n return this.endOf(C.M).$D;\n };\n\n _proto.$locale = function $locale() {\n // get locale object\n return Ls[this.$L];\n };\n\n _proto.locale = function locale(preset, object) {\n if (!preset) return this.$L;\n var that = this.clone();\n var nextLocaleName = parseLocale(preset, object, true);\n if (nextLocaleName) that.$L = nextLocaleName;\n return that;\n };\n\n _proto.clone = function clone() {\n return Utils.w(this.$d, this);\n };\n\n _proto.toDate = function toDate() {\n return new Date(this.valueOf());\n };\n\n _proto.toJSON = function toJSON() {\n return this.isValid() ? this.toISOString() : null;\n };\n\n _proto.toISOString = function toISOString() {\n // ie 8 return\n // new Dayjs(this.valueOf() + this.$d.getTimezoneOffset() * 60000)\n // .format('YYYY-MM-DDTHH:mm:ss.SSS[Z]')\n return this.$d.toISOString();\n };\n\n _proto.toString = function toString() {\n return this.$d.toUTCString();\n };\n\n return Dayjs;\n}();\n\nvar proto = Dayjs.prototype;\ndayjs.prototype = proto;\n[['$ms', C.MS], ['$s', C.S], ['$m', C.MIN], ['$H', C.H], ['$W', C.D], ['$M', C.M], ['$y', C.Y], ['$D', C.DATE]].forEach(function (g) {\n proto[g[1]] = function (input) {\n return this.$g(input, g[0], g[1]);\n };\n});\n\ndayjs.extend = function (plugin, option) {\n if (!plugin.$i) {\n // install plugin only once\n plugin(option, Dayjs, dayjs);\n plugin.$i = true;\n }\n\n return dayjs;\n};\n\ndayjs.locale = parseLocale;\ndayjs.isDayjs = isDayjs;\n\ndayjs.unix = function (timestamp) {\n return dayjs(timestamp * 1e3);\n};\n\ndayjs.en = Ls[L];\ndayjs.Ls = Ls;\ndayjs.p = {};\nexport default dayjs;","import { FORMAT_DEFAULT } from '../../constant';\nexport default (function (o, c) {\n // locale needed later\n var proto = c.prototype;\n var oldFormat = proto.format;\n\n proto.format = function (formatStr) {\n var _this = this;\n\n var locale = this.$locale();\n\n if (!this.isValid()) {\n return oldFormat.bind(this)(formatStr);\n }\n\n var utils = this.$utils();\n var str = formatStr || FORMAT_DEFAULT;\n var result = str.replace(/\\[([^\\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g, function (match) {\n switch (match) {\n case 'Q':\n return Math.ceil((_this.$M + 1) / 3);\n\n case 'Do':\n return locale.ordinal(_this.$D);\n\n case 'gggg':\n return _this.weekYear();\n\n case 'GGGG':\n return _this.isoWeekYear();\n\n case 'wo':\n return locale.ordinal(_this.week(), 'W');\n // W for week\n\n case 'w':\n case 'ww':\n return utils.s(_this.week(), match === 'w' ? 1 : 2, '0');\n\n case 'W':\n case 'WW':\n return utils.s(_this.isoWeek(), match === 'W' ? 1 : 2, '0');\n\n case 'k':\n case 'kk':\n return utils.s(String(_this.$H === 0 ? 24 : _this.$H), match === 'k' ? 1 : 2, '0');\n\n case 'X':\n return Math.floor(_this.$d.getTime() / 1000);\n\n case 'x':\n return _this.$d.getTime();\n\n case 'z':\n return \"[\" + _this.offsetName() + \"]\";\n\n case 'zzz':\n return \"[\" + _this.offsetName('long') + \"]\";\n\n default:\n return match;\n }\n });\n return oldFormat.bind(this)(result);\n };\n});","import { D, W, Y } from '../../constant';\nvar isoWeekPrettyUnit = 'isoweek';\nexport default (function (o, c, d) {\n var getYearFirstThursday = function getYearFirstThursday(year, isUtc) {\n var yearFirstDay = (isUtc ? d.utc : d)().year(year).startOf(Y);\n var addDiffDays = 4 - yearFirstDay.isoWeekday();\n\n if (yearFirstDay.isoWeekday() > 4) {\n addDiffDays += 7;\n }\n\n return yearFirstDay.add(addDiffDays, D);\n };\n\n var getCurrentWeekThursday = function getCurrentWeekThursday(ins) {\n return ins.add(4 - ins.isoWeekday(), D);\n };\n\n var proto = c.prototype;\n\n proto.isoWeekYear = function () {\n var nowWeekThursday = getCurrentWeekThursday(this);\n return nowWeekThursday.year();\n };\n\n proto.isoWeek = function (week) {\n if (!this.$utils().u(week)) {\n return this.add((week - this.isoWeek()) * 7, D);\n }\n\n var nowWeekThursday = getCurrentWeekThursday(this);\n var diffWeekThursday = getYearFirstThursday(this.isoWeekYear(), this.$u);\n return nowWeekThursday.diff(diffWeekThursday, W) + 1;\n };\n\n proto.isoWeekday = function (week) {\n if (!this.$utils().u(week)) {\n return this.day(this.day() % 7 ? week : week - 7);\n }\n\n return this.day() || 7;\n };\n\n var oldStartOf = proto.startOf;\n\n proto.startOf = function (units, startOf) {\n var utils = this.$utils();\n var isStartOf = !utils.u(startOf) ? startOf : true;\n var unit = utils.p(units);\n\n if (unit === isoWeekPrettyUnit) {\n return isStartOf ? this.date(this.date() - (this.isoWeekday() - 1)).startOf('day') : this.date(this.date() - 1 - (this.isoWeekday() - 1) + 7).endOf('day');\n }\n\n return oldStartOf.bind(this)(units, startOf);\n };\n});","import dayjs from 'dayjs/esm';\nimport advancedFormat from 'dayjs/esm/plugin/advancedFormat';\nimport isoWeek from 'dayjs/esm/plugin/isoWeek';\n\nimport type { TemporalGranularity } from '../types';\n\ndayjs.extend(isoWeek);\ndayjs.extend(advancedFormat);\n\n/**\n * https://day.js.org/docs/en/plugin/advanced-format\n */\nconst FORMAT_ISO_WEEK_YEAR_WEEK = 'GGGG-[W]WW';\n\nexport class TemporalCache {\n private yearMonthDayCache = new Map<string, YearMonthDayClass>();\n private yearWeekCache = new Map<string, YearWeekClass>();\n private yearMonthCache = new Map<string, YearMonthClass>();\n private yearCache = new Map<string, YearClass>();\n\n private constructor() {}\n\n getYearMonthDay(s: string): YearMonthDayClass {\n if (!this.yearMonthDayCache.has(s)) {\n this.yearMonthDayCache.set(s, YearMonthDayClass.parse(s, this));\n }\n return this.yearMonthDayCache.get(s)!;\n }\n\n getYearMonth(s: string): YearMonthClass {\n if (!this.yearMonthCache.has(s)) {\n this.yearMonthCache.set(s, YearMonthClass.parse(s, this));\n }\n return this.yearMonthCache.get(s)!;\n }\n\n getYearWeek(s: string): YearWeekClass {\n if (!this.yearWeekCache.has(s)) {\n this.yearWeekCache.set(s, YearWeekClass.parse(s, this));\n }\n return this.yearWeekCache.get(s)!;\n }\n\n getYear(s: string): YearClass {\n if (!this.yearCache.has(s)) {\n this.yearCache.set(s, YearClass.parse(s, this));\n }\n return this.yearCache.get(s)!;\n }\n\n private static instance = new TemporalCache();\n\n static getInstance(): TemporalCache {\n return this.instance;\n }\n}\n\ninterface YearMonthDay {\n type: 'YearMonthDay';\n yearNumber: number;\n monthNumber: number;\n dayNumber: number;\n dateString: string;\n}\n\nexport class YearMonthDayClass implements YearMonthDay {\n readonly type = 'YearMonthDay';\n readonly date;\n readonly dayjs;\n readonly dateString;\n\n constructor(\n readonly yearNumber: number,\n readonly monthNumber: number,\n readonly dayNumber: number,\n readonly cache: TemporalCache,\n ) {\n this.date = new Date(this.yearNumber, this.monthNumber - 1, this.dayNumber);\n this.dayjs = dayjs(this.date);\n this.dateString = this.toString();\n }\n\n get text(): string {\n return this.dayjs.format('YYYY-MM-DD');\n }\n\n toString(): string {\n return this.text;\n }\n\n englishName(): string {\n return this.dayjs.format('dddd, MMMM D, YYYY');\n }\n\n get firstDay(): YearMonthDayClass {\n return this;\n }\n\n get lastDay(): YearMonthDayClass {\n return this;\n }\n\n get year(): YearClass {\n return this.cache.getYear(`${this.yearNumber}`);\n }\n\n get month(): YearMonthClass {\n return this.cache.getYearMonth(this.dayjs.format('YYYY-MM'));\n }\n\n get week(): YearWeekClass {\n return this.cache.getYearWeek(this.dayjs.format(FORMAT_ISO_WEEK_YEAR_WEEK));\n }\n\n addDays(days: number): YearMonthDayClass {\n const date = this.dayjs.add(days, 'day');\n const s = date.format('YYYY-MM-DD');\n return this.cache.getYearMonthDay(s);\n }\n\n minus(other: YearMonthDayClass): number {\n return this.dayjs.diff(other.dayjs, 'day');\n }\n\n static parse(s: string, cache: TemporalCache): YearMonthDayClass {\n const [year, month, day] = s.split('-').map((s) => parseInt(s, 10));\n return new YearMonthDayClass(year, month, day, cache);\n }\n}\n\ninterface YearWeek {\n type: 'YearWeek';\n isoYearNumber: number;\n isoWeekNumber: number;\n dateString: string;\n}\n\nexport class YearWeekClass implements YearWeek {\n readonly type = 'YearWeek';\n readonly dateString;\n\n constructor(\n readonly isoYearNumber: number,\n readonly isoWeekNumber: number,\n readonly cache: TemporalCache,\n ) {\n this.dateString = this.toString();\n }\n\n get text(): string {\n return this.firstDay.dayjs.format(FORMAT_ISO_WEEK_YEAR_WEEK);\n }\n\n toString(): string {\n return this.text;\n }\n\n englishName(): string {\n return `Week ${this.isoWeekNumber}, ${this.isoYearNumber}`;\n }\n\n get firstDay(): YearMonthDayClass {\n // \"The first week of the year, hence, always contains 4 January.\" https://en.wikipedia.org/wiki/ISO_week_date\n const firstDay = dayjs()\n .year(this.isoYearNumber)\n .month(1)\n .date(4)\n .isoWeek(this.isoWeekNumber)\n .startOf('isoWeek');\n return this.cache.getYearMonthDay(firstDay.format('YYYY-MM-DD'));\n }\n\n get lastDay(): YearMonthDayClass {\n const lastDay = this.firstDay.dayjs.add(6, 'days');\n return this.cache.getYearMonthDay(lastDay.format('YYYY-MM-DD'));\n }\n\n get year(): YearClass {\n return this.cache.getYear(`${this.isoYearNumber}`);\n }\n\n addWeeks(weeks: number): YearWeekClass {\n const date = this.firstDay.dayjs.add(weeks, 'week');\n const s = date.format(FORMAT_ISO_WEEK_YEAR_WEEK);\n return this.cache.getYearWeek(s);\n }\n\n minus(other: YearWeekClass): number {\n return this.firstDay.dayjs.diff(other.firstDay.dayjs, 'week');\n }\n\n static parse(s: string, cache: TemporalCache): YearWeekClass {\n const [year, week] = s.split('-W').map((s) => parseInt(s, 10));\n return new YearWeekClass(year, week, cache);\n }\n}\n\ninterface YearMonth {\n type: 'YearMonth';\n yearNumber: number;\n monthNumber: number;\n dateString: string;\n}\n\nexport class YearMonthClass implements YearMonth {\n readonly type = 'YearMonth';\n readonly dateString;\n\n constructor(\n readonly yearNumber: number,\n readonly monthNumber: number,\n readonly cache: TemporalCache,\n ) {\n this.dateString = this.toString();\n }\n\n get text(): string {\n return this.firstDay.dayjs.format('YYYY-MM');\n }\n\n toString(): string {\n return this.text;\n }\n\n englishName(): string {\n return `${monthName(this.monthNumber)} ${this.yearNumber}`;\n }\n\n get firstDay(): YearMonthDayClass {\n return this.cache.getYearMonthDay(dayjs(`${this.yearNumber}-${this.monthNumber}-01`).format('YYYY-MM-DD'));\n }\n\n get lastDay(): YearMonthDayClass {\n return this.cache.getYearMonthDay(\n dayjs(`${this.yearNumber}-${this.monthNumber}-01`).endOf('month').format('YYYY-MM-DD'),\n );\n }\n\n get year(): YearClass {\n return this.cache.getYear(`${this.yearNumber}`);\n }\n\n addMonths(months: number): YearMonthClass {\n const date = this.firstDay.dayjs.add(months, 'month');\n const s = date.format('YYYY-MM');\n return this.cache.getYearMonth(s);\n }\n\n minus(other: YearMonthClass): number {\n return this.firstDay.dayjs.diff(other.firstDay.dayjs, 'month');\n }\n\n static parse(s: string, cache: TemporalCache): YearMonthClass {\n const [year, month] = s.split('-').map((s) => parseInt(s, 10));\n return new YearMonthClass(year, month, cache);\n }\n}\n\ninterface Year {\n type: 'Year';\n year: number;\n dateString: string;\n}\n\nexport class YearClass implements Year {\n readonly type = 'Year';\n readonly dateString;\n\n constructor(\n readonly year: number,\n readonly cache: TemporalCache,\n ) {\n this.dateString = this.toString();\n }\n\n get text(): string {\n return this.firstDay.dayjs.format('YYYY');\n }\n\n toString(): string {\n return this.text;\n }\n\n englishName(): string {\n return this.year.toString();\n }\n\n get firstMonth(): YearMonthClass {\n return this.cache.getYearMonth(`${this.year}-01`);\n }\n\n get lastMonth(): YearMonthClass {\n return this.cache.getYearMonth(`${this.year}-12`);\n }\n\n get firstDay(): YearMonthDayClass {\n return this.firstMonth.firstDay;\n }\n\n get lastDay(): YearMonthDayClass {\n return this.lastMonth.lastDay;\n }\n\n addYears(years: number): YearClass {\n const date = this.firstDay.dayjs.add(years, 'year');\n const s = date.format('YYYY');\n return this.cache.getYear(s);\n }\n\n minus(other: YearClass): number {\n return this.firstDay.dayjs.diff(other.firstDay.dayjs, 'year');\n }\n\n static parse(s: string, cache: TemporalCache): YearClass {\n const year = parseInt(s, 10);\n return new YearClass(year, cache);\n }\n}\n\nfunction monthName(month: number): string {\n return dayjs()\n .month(month - 1)\n .format('MMMM');\n}\n\nexport type TemporalClass = YearMonthDayClass | YearWeekClass | YearMonthClass | YearClass;\nexport type Temporal = YearMonthDay | YearWeek | YearMonth | Year;\n\nexport function toTemporalClass(temporal: Temporal) {\n switch (temporal.type) {\n case 'YearMonthDay':\n return new YearMonthDayClass(\n temporal.yearNumber,\n temporal.monthNumber,\n temporal.dayNumber,\n TemporalCache.getInstance(),\n );\n case 'YearWeek':\n return new YearWeekClass(temporal.isoYearNumber, temporal.isoWeekNumber, TemporalCache.getInstance());\n case 'YearMonth':\n return new YearMonthClass(temporal.yearNumber, temporal.monthNumber, TemporalCache.getInstance());\n case 'Year':\n return new YearClass(temporal.year, TemporalCache.getInstance());\n }\n}\n\nexport function toTemporal(temporalClass: TemporalClass): Temporal {\n switch (temporalClass.type) {\n case 'YearMonthDay':\n return {\n type: 'YearMonthDay',\n yearNumber: temporalClass.yearNumber,\n monthNumber: temporalClass.monthNumber,\n dayNumber: temporalClass.dayNumber,\n dateString: temporalClass.dateString,\n };\n case 'YearWeek':\n return {\n type: 'YearWeek',\n isoYearNumber: temporalClass.isoYearNumber,\n isoWeekNumber: temporalClass.isoWeekNumber,\n dateString: temporalClass.dateString,\n };\n case 'YearMonth':\n return {\n type: 'YearMonth',\n yearNumber: temporalClass.yearNumber,\n monthNumber: temporalClass.monthNumber,\n dateString: temporalClass.dateString,\n };\n case 'Year':\n return {\n type: 'Year',\n year: temporalClass.year,\n dateString: temporalClass.dateString,\n };\n }\n}\n\nexport function generateAllDaysInRange(start: YearMonthDayClass, end: YearMonthDayClass): YearMonthDayClass[] {\n const days = [];\n const daysInBetween = end.minus(start);\n for (let i = 0; i <= daysInBetween; i++) {\n days.push(start.addDays(i));\n }\n return days;\n}\n\nexport function generateAllWeeksInRange(start: YearWeekClass, end: YearWeekClass): YearWeekClass[] {\n const weeks = [];\n const weeksInBetween = end.minus(start);\n for (let i = 0; i <= weeksInBetween; i++) {\n weeks.push(start.addWeeks(i));\n }\n return weeks;\n}\n\nexport function generateAllMonthsInRange(start: YearMonthClass, end: YearMonthClass): YearMonthClass[] {\n const months = [];\n const monthsInBetween = end.minus(start);\n for (let i = 0; i <= monthsInBetween; i++) {\n months.push(start.addMonths(i));\n }\n return months;\n}\n\nexport function generateAllYearsInRange(start: YearClass, end: YearClass): YearClass[] {\n const years = [];\n const yearsInBetween = end.minus(start);\n for (let i = 0; i <= yearsInBetween; i++) {\n years.push(start.addYears(i));\n }\n return years;\n}\n\nexport function generateAllInRange(start: TemporalClass | null, end: TemporalClass | null): TemporalClass[] {\n if (start === null || end === null) {\n return [];\n }\n if (start instanceof YearMonthDayClass && end instanceof YearMonthDayClass) {\n return generateAllDaysInRange(start, end);\n }\n if (start instanceof YearWeekClass && end instanceof YearWeekClass) {\n return generateAllWeeksInRange(start, end);\n }\n if (start instanceof YearMonthClass && end instanceof YearMonthClass) {\n return generateAllMonthsInRange(start, end);\n }\n if (start instanceof YearClass && end instanceof YearClass) {\n return generateAllYearsInRange(start, end);\n }\n throw new Error(`Invalid arguments: start and end must be of the same type: ${start}, ${end}`);\n}\n\nexport function minusTemporal(a: TemporalClass, b: TemporalClass): number {\n if (a instanceof YearMonthDayClass && b instanceof YearMonthDayClass) {\n return a.minus(b);\n }\n if (a instanceof YearWeekClass && b instanceof YearWeekClass) {\n return a.minus(b);\n }\n if (a instanceof YearMonthClass && b instanceof YearMonthClass) {\n return a.minus(b);\n }\n if (a instanceof YearClass && b instanceof YearClass) {\n return a.minus(b);\n }\n throw new Error(`Cannot compare ${a} and ${b}`);\n}\n\nexport function compareTemporal(a: TemporalClass | null, b: TemporalClass | null): number {\n if (a === null) {\n return 1;\n }\n if (b === null) {\n return -1;\n }\n const diff = minusTemporal(a, b);\n if (diff < 0) {\n return -1;\n }\n if (diff > 0) {\n return 1;\n }\n return 0;\n}\n\nexport function getMinMaxTemporal<T extends TemporalClass>(values: Iterable<T | null>) {\n let min: T | null = null;\n let max: T | null = null;\n for (const value of values) {\n if (value === null) {\n continue;\n }\n if (min === null || compareTemporal(value, min) < 0) {\n min = value;\n }\n if (max === null || compareTemporal(value, max) > 0) {\n max = value;\n }\n }\n if (min === null || max === null) {\n return { min: null, max: null };\n }\n return { min, max };\n}\n\nexport function addUnit(temporal: TemporalClass, amount: number): TemporalClass {\n if (temporal instanceof YearMonthDayClass) {\n return temporal.addDays(amount);\n }\n if (temporal instanceof YearWeekClass) {\n return temporal.addWeeks(amount);\n }\n if (temporal instanceof YearMonthClass) {\n return temporal.addMonths(amount);\n }\n if (temporal instanceof YearClass) {\n return temporal.addYears(amount);\n }\n throw new Error(`Invalid argument: ${temporal}`);\n}\n\nexport function parseDateStringToTemporal(date: string, granularity: TemporalGranularity) {\n const cache = TemporalCache.getInstance();\n const day = cache.getYearMonthDay(date);\n switch (granularity) {\n case 'day':\n return day;\n case 'week':\n return day.week;\n case 'month':\n return day.month;\n case 'year':\n return day.year;\n }\n}\n\nexport function dateRangeCompare(a: { dateRange: TemporalClass | null }, b: { dateRange: TemporalClass | null }) {\n if (a.dateRange === null) {\n return 1;\n }\n if (b.dateRange === null) {\n return -1;\n }\n return compareTemporal(a.dateRange, b.dateRange);\n}\n","import { FetchAggregatedOperator } from '../operator/FetchAggregatedOperator';\nimport { FillMissingOperator } from '../operator/FillMissingOperator';\nimport { GroupByAndSumOperator } from '../operator/GroupByAndSumOperator';\nimport { MapOperator } from '../operator/MapOperator';\nimport { RenameFieldOperator } from '../operator/RenameFieldOperator';\nimport { SlidingOperator } from '../operator/SlidingOperator';\nimport { SortOperator } from '../operator/SortOperator';\nimport type { LapisFilter, TemporalGranularity } from '../types';\nimport {\n dateRangeCompare,\n generateAllInRange,\n getMinMaxTemporal,\n parseDateStringToTemporal,\n type TemporalClass,\n} from '../utils/temporalClass';\n\nexport function queryAggregatedDataOverTime(\n filter: LapisFilter,\n granularity: TemporalGranularity,\n smoothingWindow: number,\n lapisDateField: string,\n) {\n const fetchData = new FetchAggregatedOperator<Record<string, string | null>>(filter, [lapisDateField]);\n const dataWithFixedDateKey = new RenameFieldOperator(fetchData, lapisDateField, 'date');\n const mapData = new MapOperator(dataWithFixedDateKey, (d) => mapDateToGranularityRange(d, granularity));\n const groupByData = new GroupByAndSumOperator(mapData, 'dateRange', 'count');\n const fillData = new FillMissingOperator(\n groupByData,\n 'dateRange',\n getMinMaxTemporal,\n generateAllInRange,\n (key) => ({ dateRange: key, count: 0 }),\n );\n const sortData = new SortOperator(fillData, dateRangeCompare);\n\n return smoothingWindow >= 1 ? new SlidingOperator(sortData, smoothingWindow, averageSmoothing) : sortData;\n}\n\nexport function mapDateToGranularityRange(\n data: { date: string | null; count: number },\n granularity: TemporalGranularity,\n) {\n return {\n dateRange: data.date === null ? null : parseDateStringToTemporal(data.date, granularity),\n count: data.count,\n };\n}\n\nfunction averageSmoothing(slidingWindow: { dateRange: TemporalClass | null; count: number }[]) {\n const average = slidingWindow.reduce((acc, curr) => acc + curr.count, 0) / slidingWindow.length;\n const centerIndex = Math.floor(slidingWindow.length / 2);\n return { dateRange: slidingWindow[centerIndex].dateRange, count: average };\n}\n","import { type SubstitutionOrDeletionOrInsertion, type SequenceType } from '../types';\n\nexport interface Mutation {\n readonly position: number;\n readonly code: string;\n readonly type: SubstitutionOrDeletionOrInsertion;\n readonly segment?: string;\n}\n\nexport interface MutationClass extends Mutation {\n equals(other: MutationClass): boolean;\n\n toString(): string;\n}\n\n// Allowed IUPAC characters: https://www.bioinformatics.org/sms/iupac.html\nconst nucleotideChars = 'ACGTRYKMSWBDHVN';\nconst aminoAcidChars = 'ACDEFGHIKLMNPQRSTVWY';\n\nfunction segmentPart(isOptional: boolean) {\n const segmentPart = `(?<segment>[A-Z0-9_-]+):`;\n if (isOptional) {\n return `(${segmentPart})?`;\n }\n return segmentPart;\n}\n\nfunction buildSubstitutionRegex(type: 'nucleotide' | 'aminoAcid', segmentPartIsOptional: boolean) {\n const chars = type === 'nucleotide' ? nucleotideChars : aminoAcidChars;\n\n return new RegExp(\n `^${segmentPart(segmentPartIsOptional)}` +\n `(?<valueAtReference>[${chars}*])?` +\n `(?<position>\\\\d+)` +\n `(?<substitutionValue>[${chars}.*])?$`,\n 'i',\n );\n}\n\nconst nucleotideSubstitutionRegex = buildSubstitutionRegex('nucleotide', true);\nconst aminoAcidSubstitutionRegex = buildSubstitutionRegex('aminoAcid', false);\nconst aminoAcidSubstitutionWithoutSegmentRegex = buildSubstitutionRegex('aminoAcid', true);\n\nexport interface Substitution extends Mutation {\n type: 'substitution';\n valueAtReference: string | undefined;\n substitutionValue: string | undefined;\n}\n\nexport class SubstitutionClass implements MutationClass, Substitution {\n readonly code;\n readonly type = 'substitution';\n\n constructor(\n readonly segment: string | undefined,\n readonly valueAtReference: string | undefined,\n readonly substitutionValue: string | undefined,\n readonly position: number,\n ) {\n const segmentString = this.segment ? `${this.segment}:` : '';\n const valueAtReferenceString = this.valueAtReference ?? '';\n const substitutionValueString = this.substitutionValue ?? '';\n this.code = `${segmentString}${valueAtReferenceString}${this.position}${substitutionValueString}`;\n }\n\n equals(other: MutationClass): boolean {\n if (!(other instanceof SubstitutionClass)) {\n return false;\n }\n return (\n this.segment === other.segment &&\n this.valueAtReference === other.valueAtReference &&\n this.substitutionValue === other.substitutionValue &&\n this.position === other.position\n );\n }\n\n toString() {\n return this.code;\n }\n\n static parse(mutationStr: string, segmentIsOptional: boolean = false): SubstitutionClass | null {\n const matchNucleotide = nucleotideSubstitutionRegex.exec(mutationStr);\n const matchAminoAcid = aminoAcidSubstitutionRegex.exec(mutationStr);\n const matchAminAcidWithoutSegment = segmentIsOptional\n ? aminoAcidSubstitutionWithoutSegmentRegex.exec(mutationStr)\n : undefined;\n const match = matchNucleotide ?? matchAminoAcid ?? matchAminAcidWithoutSegment;\n if (match?.groups === undefined) {\n return null;\n }\n return new SubstitutionClass(\n match.groups.segment,\n match.groups.valueAtReference,\n match.groups.substitutionValue,\n parseInt(match.groups.position, 10),\n );\n }\n}\n\nfunction buildDeletionRegex(type: 'nucleotide' | 'aminoAcid') {\n const chars = type === 'nucleotide' ? nucleotideChars : aminoAcidChars;\n\n return new RegExp(\n `^${segmentPart(type === 'nucleotide')}` + `(?<valueAtReference>[${chars}*])?` + `(?<position>\\\\d+)` + `(-)$`,\n 'i',\n );\n}\n\nconst nucleotideDeletionRegex = buildDeletionRegex('nucleotide');\nconst aminoAcidDeletionRegex = buildDeletionRegex('aminoAcid');\n\nexport interface Deletion extends Mutation {\n type: 'deletion';\n valueAtReference: string | undefined;\n}\n\nexport class DeletionClass implements MutationClass, Deletion {\n readonly code;\n readonly type = 'deletion';\n\n constructor(\n readonly segment: string | undefined,\n readonly valueAtReference: string | undefined,\n readonly position: number,\n ) {\n const segmentString = this.segment ? `${this.segment}:` : '';\n const valueAtReferenceString = this.valueAtReference ?? '';\n this.code = `${segmentString}${valueAtReferenceString}${this.position}-`;\n }\n\n equals(other: MutationClass): boolean {\n if (!(other instanceof DeletionClass)) {\n return false;\n }\n return (\n this.segment === other.segment &&\n this.valueAtReference === other.valueAtReference &&\n this.position === other.position\n );\n }\n\n toString() {\n return this.code;\n }\n\n static parse(mutationStr: string): DeletionClass | null {\n const matchNucleotide = nucleotideDeletionRegex.exec(mutationStr);\n const matchAminoAcid = aminoAcidDeletionRegex.exec(mutationStr);\n const match = matchNucleotide ?? matchAminoAcid;\n if (match?.groups === undefined) {\n return null;\n }\n\n return new DeletionClass(\n match.groups.segment,\n match.groups.valueAtReference,\n parseInt(match.groups.position, 10),\n );\n }\n}\n\nfunction buildInsertionRegex(type: 'nucleotide' | 'aminoAcid') {\n const chars = type === 'nucleotide' ? nucleotideChars : aminoAcidChars;\n\n const wildcardToken = `(?:\\\\.\\\\*)`;\n\n return new RegExp(\n `^ins_${segmentPart(type === 'nucleotide')}(?<position>\\\\d+):(?<insertedSymbols>(?:[${chars}?*]|${wildcardToken})+)$`,\n 'i',\n );\n}\n\nconst nucleotideInsertionRegex = buildInsertionRegex('nucleotide');\nconst aminoAcidInsertionRegex = buildInsertionRegex('aminoAcid');\n\nexport interface Insertion extends Mutation {\n type: 'insertion';\n insertedSymbols: string;\n}\n\nexport class InsertionClass implements MutationClass {\n readonly code;\n readonly type = 'insertion';\n\n constructor(\n readonly segment: string | undefined,\n readonly position: number,\n readonly insertedSymbols: string,\n ) {\n this.code = `ins_${this.segment ? `${this.segment}:` : ''}${this.position}:${this.insertedSymbols}`;\n }\n\n equals(other: MutationClass): boolean {\n if (!(other instanceof InsertionClass)) {\n return false;\n }\n return (\n this.segment === other.segment &&\n this.insertedSymbols === other.insertedSymbols &&\n this.position === other.position\n );\n }\n\n toString() {\n return this.code;\n }\n\n static parse(mutationStr: string): InsertionClass | null {\n const matchNucleotide = nucleotideInsertionRegex.exec(mutationStr);\n const matchAminoAcid = aminoAcidInsertionRegex.exec(mutationStr);\n const match = matchNucleotide ?? matchAminoAcid;\n if (match?.groups === undefined) {\n return null;\n }\n\n return new InsertionClass(\n match.groups.segment,\n parseInt(match.groups.position, 10),\n match.groups.insertedSymbols,\n );\n }\n}\n\nexport function toMutation(\n mutationClass: SubstitutionClass | DeletionClass | InsertionClass,\n): Substitution | Deletion | Insertion {\n if (mutationClass.type === 'insertion') {\n return {\n type: 'insertion' as const,\n code: mutationClass.code,\n segment: mutationClass.segment,\n position: mutationClass.position,\n insertedSymbols: mutationClass.insertedSymbols,\n };\n }\n return toSubstitutionOrDeletion(mutationClass);\n}\n\nexport function toSubstitutionOrDeletion(mutation: SubstitutionClass | DeletionClass): Substitution | Deletion {\n switch (mutation.type) {\n case 'substitution':\n return {\n type: 'substitution' as const,\n code: mutation.code,\n segment: mutation.segment,\n position: mutation.position,\n valueAtReference: mutation.valueAtReference,\n substitutionValue: mutation.substitutionValue,\n };\n case 'deletion':\n return {\n type: 'deletion' as const,\n code: mutation.code,\n segment: mutation.segment,\n position: mutation.position,\n valueAtReference: mutation.valueAtReference,\n };\n }\n}\n\nexport const bases: Record<SequenceType, string[]> = {\n nucleotide: ['A', 'C', 'G', 'T', '-'],\n 'amino acid': [\n 'I',\n 'L',\n 'V',\n 'F',\n 'M',\n 'C',\n 'A',\n 'G',\n 'P',\n 'T',\n 'S',\n 'Y',\n 'W',\n 'Q',\n 'N',\n 'H',\n 'E',\n 'D',\n 'K',\n 'R',\n '-',\n ],\n};\n","import { type Dataset } from './Dataset';\nimport { type Operator } from './Operator';\nimport { fetchSubstitutionsOrDeletions } from '../lapisApi/lapisApi';\nimport { type LapisFilter, type SequenceType, type SubstitutionOrDeletionEntry } from '../types';\nimport { DeletionClass, SubstitutionClass } from '../utils/mutations';\n\nexport class FetchSubstitutionsOrDeletionsOperator implements Operator<SubstitutionOrDeletionEntry> {\n constructor(\n private filter: LapisFilter,\n private sequenceType: SequenceType,\n private minProportion?: number,\n ) {}\n\n async evaluate(lapis: string, signal?: AbortSignal): Promise<Dataset<SubstitutionOrDeletionEntry>> {\n const mutations = await this.fetchMutations(lapis, signal);\n\n const content: SubstitutionOrDeletionEntry[] = mutations.map(\n ({ count, proportion, mutationFrom, mutationTo, position, sequenceName }) => {\n if (mutationTo === '-') {\n return {\n type: 'deletion',\n mutation: new DeletionClass(sequenceName ?? undefined, mutationFrom, position),\n count,\n proportion,\n };\n }\n return {\n type: 'substitution',\n mutation: new SubstitutionClass(sequenceName ?? undefined, mutationFrom, mutationTo, position),\n count,\n proportion,\n };\n },\n );\n\n return { content };\n }\n\n private async fetchMutations(lapis: string, signal?: AbortSignal) {\n const filter = {\n ...this.filter,\n minProportion: this.minProportion,\n };\n\n return fetchSubstitutionsOrDeletions(lapis, filter, this.sequenceType, signal).then(\n (response) => response.data,\n );\n }\n}\n","var n,l,u,t,i,r,o,e,f,c,s,a,h,p={},v=[],y=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,w=Array.isArray;function d(n,l){for(var u in l)n[u]=l[u];return n}function g(n){n&&n.parentNode&&n.parentNode.removeChild(n)}function _(l,u,t){var i,r,o,e={};for(o in u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:e[o]=u[o];if(arguments.length>2&&(e.children=arguments.length>3?n.call(arguments,2):t),\"function\"==typeof l&&null!=l.defaultProps)for(o in l.defaultProps)void 0===e[o]&&(e[o]=l.defaultProps[o]);return m(l,e,i,r,null)}function m(n,t,i,r,o){var e={type:n,props:t,key:i,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:null==o?++u:o,__i:-1,__u:0};return null==o&&null!=l.vnode&&l.vnode(e),e}function b(){return{current:null}}function k(n){return n.children}function x(n,l){this.props=n,this.context=l}function S(n,l){if(null==l)return n.__?S(n.__,n.__i+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return\"function\"==typeof n.type?S(n):null}function C(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return C(n)}}function M(n){(!n.__d&&(n.__d=!0)&&i.push(n)&&!$.__r++||r!=l.debounceRendering)&&((r=l.debounceRendering)||o)($)}function $(){for(var n,u,t,r,o,f,c,s=1;i.length;)i.length>s&&i.sort(e),n=i.shift(),s=i.length,n.__d&&(t=void 0,o=(r=(u=n).__v).__e,f=[],c=[],u.__P&&((t=d({},r)).__v=r.__v+1,l.vnode&&l.vnode(t),O(u.__P,t,r,u.__n,u.__P.namespaceURI,32&r.__u?[o]:null,f,null==o?S(r):o,!!(32&r.__u),c),t.__v=r.__v,t.__.__k[t.__i]=t,z(f,t,c),t.__e!=o&&C(t)));$.__r=0}function I(n,l,u,t,i,r,o,e,f,c,s){var a,h,y,w,d,g,_=t&&t.__k||v,m=l.length;for(f=P(u,l,_,f,m),a=0;a<m;a++)null!=(y=u.__k[a])&&(h=-1==y.__i?p:_[y.__i]||p,y.__i=a,g=O(n,y,h,i,r,o,e,f,c,s),w=y.__e,y.ref&&h.ref!=y.ref&&(h.ref&&q(h.ref,null,y),s.push(y.ref,y.__c||w,y)),null==d&&null!=w&&(d=w),4&y.__u||h.__k===y.__k?f=A(y,f,n):\"function\"==typeof y.type&&void 0!==g?f=g:w&&(f=w.nextSibling),y.__u&=-7);return u.__e=d,f}function P(n,l,u,t,i){var r,o,e,f,c,s=u.length,a=s,h=0;for(n.__k=new Array(i),r=0;r<i;r++)null!=(o=l[r])&&\"boolean\"!=typeof o&&\"function\"!=typeof o?(f=r+h,(o=n.__k[r]=\"string\"==typeof o||\"number\"==typeof o||\"bigint\"==typeof o||o.constructor==String?m(null,o,null,null,null):w(o)?m(k,{children:o},null,null,null):null==o.constructor&&o.__b>0?m(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):o).__=n,o.__b=n.__b+1,e=null,-1!=(c=o.__i=L(o,u,f,a))&&(a--,(e=u[c])&&(e.__u|=2)),null==e||null==e.__v?(-1==c&&(i>s?h--:i<s&&h++),\"function\"!=typeof o.type&&(o.__u|=4)):c!=f&&(c==f-1?h--:c==f+1?h++:(c>f?h--:h++,o.__u|=4))):n.__k[r]=null;if(a)for(r=0;r<s;r++)null!=(e=u[r])&&0==(2&e.__u)&&(e.__e==t&&(t=S(e)),B(e,e));return t}function A(n,l,u){var t,i;if(\"function\"==typeof n.type){for(t=n.__k,i=0;t&&i<t.length;i++)t[i]&&(t[i].__=n,l=A(t[i],l,u));return l}n.__e!=l&&(l&&n.type&&!u.contains(l)&&(l=S(n)),u.insertBefore(n.__e,l||null),l=n.__e);do{l=l&&l.nextSibling}while(null!=l&&8==l.nodeType);return l}function H(n,l){return l=l||[],null==n||\"boolean\"==typeof n||(w(n)?n.some(function(n){H(n,l)}):l.push(n)),l}function L(n,l,u,t){var i,r,o=n.key,e=n.type,f=l[u];if(null===f&&null==n.key||f&&o==f.key&&e==f.type&&0==(2&f.__u))return u;if(t>(null!=f&&0==(2&f.__u)?1:0))for(i=u-1,r=u+1;i>=0||r<l.length;){if(i>=0){if((f=l[i])&&0==(2&f.__u)&&o==f.key&&e==f.type)return i;i--}if(r<l.length){if((f=l[r])&&0==(2&f.__u)&&o==f.key&&e==f.type)return r;r++}}return-1}function T(n,l,u){\"-\"==l[0]?n.setProperty(l,null==u?\"\":u):n[l]=null==u?\"\":\"number\"!=typeof u||y.test(l)?u:u+\"px\"}function j(n,l,u,t,i){var r,o;n:if(\"style\"==l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof t&&(n.style.cssText=t=\"\"),t)for(l in t)u&&l in u||T(n.style,l,\"\");if(u)for(l in u)t&&u[l]==t[l]||T(n.style,l,u[l])}else if(\"o\"==l[0]&&\"n\"==l[1])r=l!=(l=l.replace(f,\"$1\")),o=l.toLowerCase(),l=o in n||\"onFocusOut\"==l||\"onFocusIn\"==l?o.slice(2):l.slice(2),n.l||(n.l={}),n.l[l+r]=u,u?t?u.u=t.u:(u.u=c,n.addEventListener(l,r?a:s,r)):n.removeEventListener(l,r?a:s,r);else{if(\"http://www.w3.org/2000/svg\"==i)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"width\"!=l&&\"height\"!=l&&\"href\"!=l&&\"list\"!=l&&\"form\"!=l&&\"tabIndex\"!=l&&\"download\"!=l&&\"rowSpan\"!=l&&\"colSpan\"!=l&&\"role\"!=l&&\"popover\"!=l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null==u||!1===u&&\"-\"!=l[4]?n.removeAttribute(l):n.setAttribute(l,\"popover\"==l&&1==u?\"\":u))}}function F(n){return function(u){if(this.l){var t=this.l[u.type+n];if(null==u.t)u.t=c++;else if(u.t<t.u)return;return t(l.event?l.event(u):u)}}}function O(n,u,t,i,r,o,e,f,c,s){var a,h,p,v,y,_,m,b,S,C,M,$,P,A,H,L,T,j=u.type;if(null!=u.constructor)return null;128&t.__u&&(c=!!(32&t.__u),o=[f=u.__e=t.__e]),(a=l.__b)&&a(u);n:if(\"function\"==typeof j)try{if(b=u.props,S=\"prototype\"in j&&j.prototype.render,C=(a=j.contextType)&&i[a.__c],M=a?C?C.props.value:a.__:i,t.__c?m=(h=u.__c=t.__c).__=h.__E:(S?u.__c=h=new j(b,M):(u.__c=h=new x(b,M),h.constructor=j,h.render=D),C&&C.sub(h),h.props=b,h.state||(h.state={}),h.context=M,h.__n=i,p=h.__d=!0,h.__h=[],h._sb=[]),S&&null==h.__s&&(h.__s=h.state),S&&null!=j.getDerivedStateFromProps&&(h.__s==h.state&&(h.__s=d({},h.__s)),d(h.__s,j.getDerivedStateFromProps(b,h.__s))),v=h.props,y=h.state,h.__v=u,p)S&&null==j.getDerivedStateFromProps&&null!=h.componentWillMount&&h.componentWillMount(),S&&null!=h.componentDidMount&&h.__h.push(h.componentDidMount);else{if(S&&null==j.getDerivedStateFromProps&&b!==v&&null!=h.componentWillReceiveProps&&h.componentWillReceiveProps(b,M),!h.__e&&null!=h.shouldComponentUpdate&&!1===h.shouldComponentUpdate(b,h.__s,M)||u.__v==t.__v){for(u.__v!=t.__v&&(h.props=b,h.state=h.__s,h.__d=!1),u.__e=t.__e,u.__k=t.__k,u.__k.some(function(n){n&&(n.__=u)}),$=0;$<h._sb.length;$++)h.__h.push(h._sb[$]);h._sb=[],h.__h.length&&e.push(h);break n}null!=h.componentWillUpdate&&h.componentWillUpdate(b,h.__s,M),S&&null!=h.componentDidUpdate&&h.__h.push(function(){h.componentDidUpdate(v,y,_)})}if(h.context=M,h.props=b,h.__P=n,h.__e=!1,P=l.__r,A=0,S){for(h.state=h.__s,h.__d=!1,P&&P(u),a=h.render(h.props,h.state,h.context),H=0;H<h._sb.length;H++)h.__h.push(h._sb[H]);h._sb=[]}else do{h.__d=!1,P&&P(u),a=h.render(h.props,h.state,h.context),h.state=h.__s}while(h.__d&&++A<25);h.state=h.__s,null!=h.getChildContext&&(i=d(d({},i),h.getChildContext())),S&&!p&&null!=h.getSnapshotBeforeUpdate&&(_=h.getSnapshotBeforeUpdate(v,y)),L=a,null!=a&&a.type===k&&null==a.key&&(L=N(a.props.children)),f=I(n,w(L)?L:[L],u,t,i,r,o,e,f,c,s),h.base=u.__e,u.__u&=-161,h.__h.length&&e.push(h),m&&(h.__E=h.__=null)}catch(n){if(u.__v=null,c||null!=o)if(n.then){for(u.__u|=c?160:128;f&&8==f.nodeType&&f.nextSibling;)f=f.nextSibling;o[o.indexOf(f)]=null,u.__e=f}else for(T=o.length;T--;)g(o[T]);else u.__e=t.__e,u.__k=t.__k;l.__e(n,u,t)}else null==o&&u.__v==t.__v?(u.__k=t.__k,u.__e=t.__e):f=u.__e=V(t.__e,u,t,i,r,o,e,c,s);return(a=l.diffed)&&a(u),128&u.__u?void 0:f}function z(n,u,t){for(var i=0;i<t.length;i++)q(t[i],t[++i],t[++i]);l.__c&&l.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u)})}catch(n){l.__e(n,u.__v)}})}function N(n){return\"object\"!=typeof n||null==n||n.__b&&n.__b>0?n:w(n)?n.map(N):d({},n)}function V(u,t,i,r,o,e,f,c,s){var a,h,v,y,d,_,m,b=i.props,k=t.props,x=t.type;if(\"svg\"==x?o=\"http://www.w3.org/2000/svg\":\"math\"==x?o=\"http://www.w3.org/1998/Math/MathML\":o||(o=\"http://www.w3.org/1999/xhtml\"),null!=e)for(a=0;a<e.length;a++)if((d=e[a])&&\"setAttribute\"in d==!!x&&(x?d.localName==x:3==d.nodeType)){u=d,e[a]=null;break}if(null==u){if(null==x)return document.createTextNode(k);u=document.createElementNS(o,x,k.is&&k),c&&(l.__m&&l.__m(t,e),c=!1),e=null}if(null==x)b===k||c&&u.data==k||(u.data=k);else{if(e=e&&n.call(u.childNodes),b=i.props||p,!c&&null!=e)for(b={},a=0;a<u.attributes.length;a++)b[(d=u.attributes[a]).name]=d.value;for(a in b)if(d=b[a],\"children\"==a);else if(\"dangerouslySetInnerHTML\"==a)v=d;else if(!(a in k)){if(\"value\"==a&&\"defaultValue\"in k||\"checked\"==a&&\"defaultChecked\"in k)continue;j(u,a,null,d,o)}for(a in k)d=k[a],\"children\"==a?y=d:\"dangerouslySetInnerHTML\"==a?h=d:\"value\"==a?_=d:\"checked\"==a?m=d:c&&\"function\"!=typeof d||b[a]===d||j(u,a,d,b[a],o);if(h)c||v&&(h.__html==v.__html||h.__html==u.innerHTML)||(u.innerHTML=h.__html),t.__k=[];else if(v&&(u.innerHTML=\"\"),I(\"template\"==t.type?u.content:u,w(y)?y:[y],t,i,r,\"foreignObject\"==x?\"http://www.w3.org/1999/xhtml\":o,e,f,e?e[0]:i.__k&&S(i,0),c,s),null!=e)for(a=e.length;a--;)g(e[a]);c||(a=\"value\",\"progress\"==x&&null==_?u.removeAttribute(\"value\"):null!=_&&(_!==u[a]||\"progress\"==x&&!_||\"option\"==x&&_!=b[a])&&j(u,a,_,b[a],o),a=\"checked\",null!=m&&m!=u[a]&&j(u,a,m,b[a],o))}return u}function q(n,u,t){try{if(\"function\"==typeof n){var i=\"function\"==typeof n.__u;i&&n.__u(),i&&null==u||(n.__u=n(u))}else n.current=u}catch(n){l.__e(n,t)}}function B(n,u,t){var i,r;if(l.unmount&&l.unmount(n),(i=n.ref)&&(i.current&&i.current!=n.__e||q(i,null,u)),null!=(i=n.__c)){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(n){l.__e(n,u)}i.base=i.__P=null}if(i=n.__k)for(r=0;r<i.length;r++)i[r]&&B(i[r],u,t||\"function\"!=typeof n.type);t||g(n.__e),n.__c=n.__=n.__e=void 0}function D(n,l,u){return this.constructor(n,u)}function E(u,t,i){var r,o,e,f;t==document&&(t=document.documentElement),l.__&&l.__(u,t),o=(r=\"function\"==typeof i)?null:i&&i.__k||t.__k,e=[],f=[],O(t,u=(!r&&i||t).__k=_(k,null,[u]),o||p,p,t.namespaceURI,!r&&i?[i]:o?null:t.firstChild?n.call(t.childNodes):null,e,!r&&i?i:o?o.__e:t.firstChild,r,f),z(e,u,f)}function G(n,l){E(n,l,G)}function J(l,u,t){var i,r,o,e,f=d({},l.props);for(o in l.type&&l.type.defaultProps&&(e=l.type.defaultProps),u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:f[o]=void 0===u[o]&&null!=e?e[o]:u[o];return arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),m(l.type,f,i||l.key,r||l.ref,null)}function K(n){function l(n){var u,t;return this.getChildContext||(u=new Set,(t={})[l.__c]=this,this.getChildContext=function(){return t},this.componentWillUnmount=function(){u=null},this.shouldComponentUpdate=function(n){this.props.value!=n.value&&u.forEach(function(n){n.__e=!0,M(n)})},this.sub=function(n){u.add(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u&&u.delete(n),l&&l.call(n)}}),n.children}return l.__c=\"__cC\"+h++,l.__=n,l.Provider=l.__l=(l.Consumer=function(n,l){return n.children(l)}).contextType=l,l}n=v.slice,l={__e:function(n,l,u,t){for(var i,r,o;l=l.__;)if((i=l.__c)&&!i.__)try{if((r=i.constructor)&&null!=r.getDerivedStateFromError&&(i.setState(r.getDerivedStateFromError(n)),o=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),o=i.__d),o)return i.__E=i}catch(l){n=l}throw n}},u=0,t=function(n){return null!=n&&null==n.constructor},x.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!=this.state?this.__s:this.__s=d({},this.state),\"function\"==typeof n&&(n=n(d({},u),this.props)),n&&d(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),M(this))},x.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),M(this))},x.prototype.render=k,i=[],o=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,e=function(n,l){return n.__v.__b-l.__v.__b},$.__r=0,f=/(PointerCapture)$|Capture$/i,c=0,s=F(!1),a=F(!0),h=0;export{x as Component,k as Fragment,J as cloneElement,K as createContext,_ as createElement,b as createRef,_ as h,G as hydrate,t as isValidElement,l as options,E as render,H as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","import{options as n}from\"preact\";var t,r,u,i,o=0,f=[],c=n,e=c.__b,a=c.__r,v=c.diffed,l=c.__c,m=c.unmount,s=c.__;function p(n,t){c.__h&&c.__h(r,n,o||t),o=0;var u=r.__H||(r.__H={__:[],__h:[]});return n>=u.__.length&&u.__.push({}),u.__[n]}function d(n){return o=1,h(D,n)}function h(n,u,i){var o=p(t++,2);if(o.t=n,!o.__c&&(o.__=[i?i(u):D(void 0,u),function(n){var t=o.__N?o.__N[0]:o.__[0],r=o.t(t,n);t!==r&&(o.__N=[r,o.__[1]],o.__c.setState({}))}],o.__c=r,!r.__f)){var f=function(n,t,r){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(n){return!!n.__c});if(u.every(function(n){return!n.__N}))return!c||c.call(this,n,t,r);var i=o.__c.props!==n;return u.forEach(function(n){if(n.__N){var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0)}}),c&&c.call(this,n,t,r)||i};r.__f=!0;var c=r.shouldComponentUpdate,e=r.componentWillUpdate;r.componentWillUpdate=function(n,t,r){if(this.__e){var u=c;c=void 0,f(n,t,r),c=u}e&&e.call(this,n,t,r)},r.shouldComponentUpdate=f}return o.__N||o.__}function y(n,u){var i=p(t++,3);!c.__s&&C(i.__H,u)&&(i.__=n,i.u=u,r.__H.__h.push(i))}function _(n,u){var i=p(t++,4);!c.__s&&C(i.__H,u)&&(i.__=n,i.u=u,r.__h.push(i))}function A(n){return o=5,T(function(){return{current:n}},[])}function F(n,t,r){o=6,_(function(){if(\"function\"==typeof n){var r=n(t());return function(){n(null),r&&\"function\"==typeof r&&r()}}if(n)return n.current=t(),function(){return n.current=null}},null==r?r:r.concat(n))}function T(n,r){var u=p(t++,7);return C(u.__H,r)&&(u.__=n(),u.__H=r,u.__h=n),u.__}function q(n,t){return o=8,T(function(){return n},t)}function x(n){var u=r.context[n.__c],i=p(t++,9);return i.c=n,u?(null==i.__&&(i.__=!0,u.sub(r)),u.props.value):n.__}function P(n,t){c.useDebugValue&&c.useDebugValue(t?t(n):n)}function b(n){var u=p(t++,10),i=d();return u.__=n,r.componentDidCatch||(r.componentDidCatch=function(n,t){u.__&&u.__(n,t),i[1](n)}),[i[0],function(){i[1](void 0)}]}function g(){var n=p(t++,11);if(!n.__){for(var u=r.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;var i=u.__m||(u.__m=[0,0]);n.__=\"P\"+i[0]+\"-\"+i[1]++}return n.__}function j(){for(var n;n=f.shift();)if(n.__P&&n.__H)try{n.__H.__h.forEach(z),n.__H.__h.forEach(B),n.__H.__h=[]}catch(t){n.__H.__h=[],c.__e(t,n.__v)}}c.__b=function(n){r=null,e&&e(n)},c.__=function(n,t){n&&t.__k&&t.__k.__m&&(n.__m=t.__k.__m),s&&s(n,t)},c.__r=function(n){a&&a(n),t=0;var i=(r=n.__c).__H;i&&(u===r?(i.__h=[],r.__h=[],i.__.forEach(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(i.__h.forEach(z),i.__h.forEach(B),i.__h=[],t=0)),u=r},c.diffed=function(n){v&&v(n);var t=n.__c;t&&t.__H&&(t.__H.__h.length&&(1!==f.push(t)&&i===c.requestAnimationFrame||((i=c.requestAnimationFrame)||w)(j)),t.__H.__.forEach(function(n){n.u&&(n.__H=n.u),n.u=void 0})),u=r=null},c.__c=function(n,t){t.some(function(n){try{n.__h.forEach(z),n.__h=n.__h.filter(function(n){return!n.__||B(n)})}catch(r){t.some(function(n){n.__h&&(n.__h=[])}),t=[],c.__e(r,n.__v)}}),l&&l(n,t)},c.unmount=function(n){m&&m(n);var t,r=n.__c;r&&r.__H&&(r.__H.__.forEach(function(n){try{z(n)}catch(n){t=n}}),r.__H=void 0,t&&c.__e(t,r.__v))};var k=\"function\"==typeof requestAnimationFrame;function w(n){var t,r=function(){clearTimeout(u),k&&cancelAnimationFrame(t),setTimeout(n)},u=setTimeout(r,35);k&&(t=requestAnimationFrame(r))}function z(n){var t=r,u=n.__c;\"function\"==typeof u&&(n.__c=void 0,u()),r=t}function B(n){var t=r;n.__c=n.__(),r=t}function C(n,t){return!n||n.length!==t.length||t.some(function(t,r){return t!==n[r]})}function D(n,t){return\"function\"==typeof t?t(n):t}export{q as useCallback,x as useContext,P as useDebugValue,y as useEffect,b as useErrorBoundary,g as useId,F as useImperativeHandle,_ as useLayoutEffect,T as useMemo,h as useReducer,A as useRef,d as useState};\n//# sourceMappingURL=hooks.module.js.map\n","import { type FunctionComponent } from 'preact';\nimport { useEffect, useRef } from 'preact/hooks';\nimport { type ZodError } from 'zod';\n\nimport { InfoHeadline1, InfoParagraph } from './info';\nimport { Modal } from './modal';\nimport { LapisError, UnknownLapisError } from '../../lapisApi/lapisApi';\nimport { gsEventNames } from '../../utils/gsEventNames';\n\nexport class ErrorEvent extends Event {\n constructor(public readonly error: Error) {\n super(gsEventNames.error, {\n bubbles: true,\n composed: true,\n });\n }\n}\n\nexport class UserFacingError extends Error {\n constructor(\n public readonly headline: string,\n message: string,\n ) {\n super(message);\n this.name = 'UserFacingError';\n }\n}\n\nexport class InvalidPropsError extends Error {\n constructor(\n public readonly zodError: ZodError,\n public readonly componentProps: Record<string, unknown>,\n ) {\n super(zodError.message);\n this.name = 'InvalidPropsError';\n }\n}\n\nexport type ErrorDisplayProps = {\n error: Error;\n resetError?: () => void;\n layout?: 'horizontal' | 'vertical';\n};\n\nexport const ErrorDisplay: FunctionComponent<ErrorDisplayProps> = ({ error, resetError, layout }) => {\n // eslint-disable-next-line no-console -- Currently we use the following statement for our error handling\n console.error(error);\n\n const containerRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n containerRef.current?.dispatchEvent(new ErrorEvent(error));\n });\n\n const { headline, details } = getDisplayedErrorMessage(error);\n\n return (\n <div\n ref={containerRef}\n className={`h-full w-full rounded-md border-2 border-gray-100 p-2 flex items-center justify-center ${layout === 'horizontal' ? 'flex-row' : 'flex-col'}`}\n >\n <div>\n <div className='text-red-700 font-bold'>{headline}</div>\n <div>\n Oops! Something went wrong.\n {details !== undefined && (\n <>\n {' '}\n <Modal\n buttonClassName='underline hover:text-gray-400'\n modalContent={\n <>\n <InfoHeadline1>{details.headline}</InfoHeadline1>\n <InfoParagraph>{details.message}</InfoParagraph>\n </>\n }\n >\n Show details.\n </Modal>\n </>\n )}\n </div>\n </div>\n {resetError !== undefined && (\n <button onClick={resetError} className='btn btn-sm flex items-center m-4'>\n <span className='iconify mdi--reload text-lg' />\n Try again\n </button>\n )}\n </div>\n );\n};\n\nfunction getDisplayedErrorMessage(error: Error) {\n if (error instanceof UserFacingError) {\n return {\n headline: `Error - ${error.headline}`,\n details: {\n headline: error.headline,\n message: error.message,\n },\n };\n }\n\n if (error instanceof LapisError) {\n return {\n headline: `Error - Failed fetching ${error.requestedData} from LAPIS`,\n details: {\n headline: `LAPIS request failed: ${error.requestedData} - ${error.problemDetail.status} ${error.problemDetail.title}`,\n message: error.problemDetail.detail ?? error.message,\n },\n };\n }\n\n if (error instanceof UnknownLapisError) {\n return {\n headline: `Error - Failed fetching ${error.requestedData} from LAPIS`,\n details: {\n headline: `LAPIS request failed: An unexpected error occurred while fetching ${error.requestedData}`,\n message: error.message,\n },\n };\n }\n\n if (error instanceof InvalidPropsError) {\n return {\n headline: 'Error - Invalid component attributes',\n details: { headline: 'Invalid component attributes', message: <ZodErrorDetails error={error} /> },\n };\n }\n\n return { headline: 'Error', details: undefined };\n}\n\nfunction ZodErrorDetails({ error }: { error: InvalidPropsError }) {\n const firstError = error.zodError.errors[0];\n return (\n <>\n <p>\n <span className='font-bold'>You are a regular user?</span> Unfortunately, there is nothing you can do at\n the moment. This component is misconfigured. Please contact the administrator of this page.\n </p>\n <p>\n <span className='font-bold'>You are the administrator of this page?</span> You supplied invalid\n attributes to this component. Please check the browser console for more detailed error messages.\n </p>\n {firstError.code === 'invalid_type' && firstError.received === 'null' && (\n <p>\n Is the \"{firstError.path[0]}\" attribute in the HTML of the correct type? The attribute is expected\n to be of type \"{firstError.expected}\".\n </p>\n )}\n <p>This is a summary of the unexpected attribute values:</p>\n <ul className='m-4 list-outside list-disc '>\n {error.zodError.issues.map((issue, index) => {\n const actual =\n issue.path[0] in error.componentProps\n ? `'${JSON.stringify(error.componentProps[issue.path[0]])}'`\n : '';\n return (\n <li key={index}>\n Unexpected value {actual} for \"{issue.path.join('.')}\": {issue.message}\n </li>\n );\n })}\n </ul>\n </>\n );\n}\n","export interface Map2d<Key1, Key2, Value> {\n get(keyFirstAxis: Key1, keySecondAxis: Key2): Value | undefined;\n\n set(keyFirstAxis: Key1, keySecondAxis: Key2, value: Value): void;\n\n getRow(key: Key1): (Value | undefined)[];\n\n deleteRow(key: Key1): void;\n\n getFirstAxisKeys(): Key1[];\n\n getSecondAxisKeys(): Key2[];\n\n getAsArray(): (Value | undefined)[][];\n\n serializeFirstAxis(key: Key1): string;\n\n serializeSecondAxis(key: Key2): string;\n\n getContents(): Map2DContents<Key1, Key2, Value>;\n\n readonly keysFirstAxis: Map<string, Key1>;\n readonly keysSecondAxis: Map<string, Key2>;\n}\n\nexport type Map2DContents<Key1, Key2, Value> = {\n keysFirstAxis: Map<string, Key1>;\n keysSecondAxis: Map<string, Key2>;\n data: Map<string, Map<string, Value>>;\n};\n\nexport class Map2dBase<Key1 extends object | string, Key2 extends object | string, Value>\n implements Map2d<Key1, Key2, Value>\n{\n readonly data: Map<string, Map<string, Value>> = new Map<string, Map<string, Value>>();\n readonly keysFirstAxis = new Map<string, Key1>();\n readonly keysSecondAxis = new Map<string, Key2>();\n\n constructor(\n readonly serializeFirstAxis: (key: Key1) => string,\n readonly serializeSecondAxis: (key: Key2) => string,\n initialContent?: Map2DContents<Key1, Key2, Value>,\n ) {\n if (initialContent) {\n this.keysFirstAxis = new Map(initialContent.keysFirstAxis);\n this.keysSecondAxis = new Map(initialContent.keysSecondAxis);\n this.data = new Map(initialContent.data);\n }\n }\n\n get(keyFirstAxis: Key1, keySecondAxis: Key2) {\n const serializedKeyFirstAxis = this.serializeFirstAxis(keyFirstAxis);\n const serializedKeySecondAxis = this.serializeSecondAxis(keySecondAxis);\n return this.data.get(serializedKeyFirstAxis)?.get(serializedKeySecondAxis);\n }\n\n getRow(key: Key1) {\n const serializedKeyFirstAxis = this.serializeFirstAxis(key);\n const row = this.data.get(serializedKeyFirstAxis);\n if (row === undefined) {\n return [];\n }\n return Array.from(this.keysSecondAxis.keys()).map((key) => row.get(key));\n }\n\n set(keyFirstAxis: Key1, keySecondAxis: Key2, value: Value) {\n const serializedKeyFirstAxis = this.serializeFirstAxis(keyFirstAxis);\n const serializedKeySecondAxis = this.serializeSecondAxis(keySecondAxis);\n\n if (!this.data.has(serializedKeyFirstAxis)) {\n this.data.set(serializedKeyFirstAxis, new Map<string, Value>());\n }\n\n this.data.get(serializedKeyFirstAxis)!.set(serializedKeySecondAxis, value);\n\n this.keysFirstAxis.set(serializedKeyFirstAxis, keyFirstAxis);\n this.keysSecondAxis.set(serializedKeySecondAxis, keySecondAxis);\n }\n\n deleteRow(key: Key1) {\n const serializedKeyFirstAxis = this.serializeFirstAxis(key);\n this.data.delete(serializedKeyFirstAxis);\n this.keysFirstAxis.delete(serializedKeyFirstAxis);\n }\n\n getFirstAxisKeys() {\n return Array.from(this.keysFirstAxis.values());\n }\n\n getSecondAxisKeys() {\n return Array.from(this.keysSecondAxis.values());\n }\n\n getAsArray() {\n return this.getFirstAxisKeys().map((firstAxisKey) => {\n return this.getSecondAxisKeys().map((secondAxisKey) => {\n return this.get(firstAxisKey, secondAxisKey);\n });\n });\n }\n\n getContents(): Map2DContents<Key1, Key2, Value> {\n return {\n keysFirstAxis: this.keysFirstAxis,\n keysSecondAxis: this.keysSecondAxis,\n data: this.data,\n };\n }\n}\n\nexport class SortedMap2d<Key1 extends object | string, Key2 extends object | string, Value> extends Map2dBase<\n Key1,\n Key2,\n Value\n> {\n constructor(\n delegate: Map2d<Key1, Key2, Value>,\n sortFirstAxis: (a: Key1, b: Key1) => number,\n sortSecondAxis: (a: Key2, b: Key2) => number,\n ) {\n const contents = delegate.getContents();\n const sortedFirstAxisKeys = new Map(\n [...contents.keysFirstAxis.entries()].sort((a, b) => sortFirstAxis(a[1], b[1])),\n );\n const sortedSecondAxisKeys = new Map(\n [...contents.keysSecondAxis.entries()].sort((a, b) => sortSecondAxis(a[1], b[1])),\n );\n super(\n (key: Key1) => delegate.serializeFirstAxis(key),\n (key: Key2) => delegate.serializeSecondAxis(key),\n {\n keysFirstAxis: sortedFirstAxisKeys,\n keysSecondAxis: sortedSecondAxisKeys,\n data: contents.data,\n },\n );\n }\n}\n\nexport class Map2dView<Key1 extends object | string, Key2 extends object | string, Value>\n implements Map2d<Key1, Key2, Value>\n{\n readonly keysFirstAxis;\n readonly keysSecondAxis;\n\n readonly baseMap: Map2d<Key1, Key2, Value>;\n\n constructor(map: Map2d<Key1, Key2, Value>) {\n this.keysFirstAxis = new Map(map.keysFirstAxis);\n this.keysSecondAxis = new Map(map.keysSecondAxis);\n\n if (map instanceof Map2dView) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- the generics match, we know that.\n this.baseMap = map.baseMap;\n }\n this.baseMap = map;\n }\n\n serializeFirstAxis(key: Key1) {\n return this.baseMap.serializeFirstAxis(key);\n }\n\n serializeSecondAxis(key: Key2) {\n return this.baseMap.serializeSecondAxis(key);\n }\n\n deleteRow(key: Key1) {\n this.keysFirstAxis.delete(this.serializeFirstAxis(key));\n }\n\n deleteColumn(key: Key2) {\n this.keysSecondAxis.delete(this.serializeSecondAxis(key));\n }\n\n get(keyFirstAxis: Key1, keySecondAxis: Key2) {\n const firstAxisKey = this.serializeFirstAxis(keyFirstAxis);\n const secondAxisKey = this.serializeSecondAxis(keySecondAxis);\n\n if (!this.keysFirstAxis.has(firstAxisKey) || !this.keysSecondAxis.has(secondAxisKey)) {\n return undefined;\n }\n\n return this.baseMap.get(keyFirstAxis, keySecondAxis);\n }\n\n set() {\n throw new Error('Cannot set value on a Map2dView');\n }\n\n getFirstAxisKeys() {\n return Array.from(this.keysFirstAxis.values());\n }\n\n getSecondAxisKeys() {\n return Array.from(this.keysSecondAxis.values());\n }\n\n getAsArray() {\n return this.getFirstAxisKeys().map((firstAxisKey) => {\n return this.getSecondAxisKeys().map((secondAxisKey) => {\n return this.baseMap.get(firstAxisKey, secondAxisKey);\n });\n });\n }\n\n getRow(key: Key1) {\n const serializedKeyFirstAxis = this.serializeFirstAxis(key);\n if (!this.keysFirstAxis.has(serializedKeyFirstAxis)) {\n return [];\n }\n\n return this.getSecondAxisKeys().map((k2) => this.baseMap.get(key, k2));\n }\n\n getColumn(key: Key2) {\n const serializedKeySecondAxis = this.serializeSecondAxis(key);\n if (!this.keysSecondAxis.has(serializedKeySecondAxis)) {\n return [];\n }\n\n return this.getFirstAxisKeys().map((k1) => this.baseMap.get(k1, key));\n }\n\n getContents() {\n return {\n keysFirstAxis: this.keysFirstAxis,\n keysSecondAxis: this.keysSecondAxis,\n data: this.baseMap.getContents().data,\n };\n }\n}\n","import {\n type MutationOverTimeMutationValue,\n serializeSubstitutionOrDeletion,\n serializeTemporal,\n} from '../../query/queryMutationsOverTime';\nimport { type Map2d, Map2dBase, type Map2DContents } from '../../utils/map2d';\nimport type { Deletion, Substitution } from '../../utils/mutations';\nimport type { Temporal, TemporalClass } from '../../utils/temporalClass';\n\nexport type MutationOverTimeDataMap<T extends Temporal | TemporalClass = Temporal> = Map2d<\n Substitution | Deletion,\n T,\n MutationOverTimeMutationValue\n>;\n\nexport class BaseMutationOverTimeDataMap<T extends Temporal | TemporalClass = Temporal> extends Map2dBase<\n Substitution | Deletion,\n T,\n MutationOverTimeMutationValue\n> {\n constructor(initialContent?: Map2DContents<Substitution | Deletion, T, MutationOverTimeMutationValue>) {\n super(serializeSubstitutionOrDeletion, serializeTemporal, initialContent);\n }\n}\n","import type { Deletion, Substitution } from '../../../utils/mutations';\n\nexport const sortSubstitutionsAndDeletions = (a: Substitution | Deletion, b: Substitution | Deletion) => {\n if (a.segment !== b.segment) {\n return compareSegments(a.segment, b.segment);\n }\n\n if (a.position !== b.position) {\n return comparePositions(a.position, b.position);\n }\n\n const aIsDeletion = a.type === 'deletion';\n const bIsDeletion = b.type === 'deletion';\n\n if (aIsDeletion !== bIsDeletion) {\n return aIsDeletion ? 1 : -1;\n }\n\n if (!aIsDeletion && !bIsDeletion) {\n if (a.substitutionValue !== b.substitutionValue) {\n return compareSubstitutionValues(a.substitutionValue, b.substitutionValue);\n }\n }\n\n return 0;\n};\n\nexport const compareSegments = (a: string | undefined, b: string | undefined) => {\n if (a === undefined) {\n return -1;\n }\n if (b === undefined) {\n return 1;\n }\n return a.localeCompare(b);\n};\n\nexport const comparePositions = (a: number, b: number) => {\n return a - b;\n};\n\nconst compareSubstitutionValues = (a: string | undefined, b: string | undefined) => {\n if (a === undefined) {\n return -1;\n }\n if (b === undefined) {\n return 1;\n }\n return a.localeCompare(b);\n};\n","import { mapDateToGranularityRange } from './queryAggregatedDataOverTime';\nimport { fetchMutationsOverTime } from '../lapisApi/lapisApi';\nimport { FetchAggregatedOperator } from '../operator/FetchAggregatedOperator';\nimport { FetchSubstitutionsOrDeletionsOperator } from '../operator/FetchSubstitutionsOrDeletionsOperator';\nimport { GroupByAndSumOperator } from '../operator/GroupByAndSumOperator';\nimport { MapOperator } from '../operator/MapOperator';\nimport { RenameFieldOperator } from '../operator/RenameFieldOperator';\nimport { SortOperator } from '../operator/SortOperator';\nimport { UserFacingError } from '../preact/components/error-display';\nimport { BaseMutationOverTimeDataMap } from '../preact/mutationsOverTime/MutationOverTimeData';\nimport { sortSubstitutionsAndDeletions } from '../preact/shared/sort/sortSubstitutionsAndDeletions';\nimport {\n type DeletionEntry,\n type LapisFilter,\n type SequenceType,\n type SubstitutionEntry,\n type SubstitutionOrDeletionEntry,\n type TemporalGranularity,\n} from '../types';\nimport { type Map2DContents } from '../utils/map2d';\nimport {\n type Deletion,\n type Substitution,\n toSubstitutionOrDeletion,\n DeletionClass,\n SubstitutionClass,\n} from '../utils/mutations';\nimport {\n compareTemporal,\n dateRangeCompare,\n generateAllInRange,\n getMinMaxTemporal,\n parseDateStringToTemporal,\n type Temporal,\n type TemporalClass,\n toTemporal,\n} from '../utils/temporalClass';\n\nexport type MutationOverTimeData = {\n date: TemporalClass;\n mutations: SubstitutionOrDeletionEntry[];\n totalCount: number;\n};\n\nexport type MutationOverTimeMutationValue =\n | {\n type: 'value';\n proportion: number;\n count: number;\n totalCount: number;\n }\n | {\n type: 'wastewaterValue';\n proportion: number;\n }\n | {\n type: 'belowThreshold';\n totalCount: number | null;\n }\n | null;\n\nconst MAX_NUMBER_OF_GRID_COLUMNS = 200;\nexport const MUTATIONS_OVER_TIME_MIN_PROPORTION = 0.001;\n\n/**\n * Create SubstitutionOrDeletionEntry for given code with count and proportion 0.\n * @param code a mutation code like G44T or A23-\n */\nfunction codeToEmptyEntry(code: string): SubstitutionOrDeletionEntry | null {\n const maybeDeletion = DeletionClass.parse(code);\n if (maybeDeletion) {\n return {\n type: 'deletion',\n mutation: maybeDeletion,\n count: 0,\n proportion: 0,\n };\n }\n const maybeSubstitution = SubstitutionClass.parse(code);\n if (maybeSubstitution) {\n return {\n type: 'substitution',\n mutation: maybeSubstitution,\n count: 0,\n proportion: 0,\n };\n }\n return null;\n}\n\n/**\n * Return counts and proportions for all mutations that match the lapisFilter.\n * If `includeMutations` are given, the result will also be filtered for those.\n * Any mutation that isn't in the result, but is in the `includeMutations` will\n * be in the result with count and proportion as 0.\n */\nasync function queryOverallMutationData({\n lapisFilter,\n sequenceType,\n lapis,\n granularity,\n lapisDateField,\n includeMutations,\n signal,\n}: {\n lapisFilter: LapisFilter;\n sequenceType: SequenceType;\n lapis: string;\n granularity: TemporalGranularity;\n lapisDateField: string;\n includeMutations?: string[];\n signal?: AbortSignal;\n}) {\n const requestedDateRanges = await getDatesInDataset(lapisFilter, lapis, granularity, lapisDateField, signal);\n\n if (requestedDateRanges.length === 0) {\n if (includeMutations) {\n return {\n content: includeMutations\n .map(codeToEmptyEntry)\n .filter((e): e is SubstitutionOrDeletionEntry => e !== null),\n };\n } else {\n return {\n content: [],\n };\n }\n }\n\n const filter = {\n ...lapisFilter,\n [`${lapisDateField}From`]: requestedDateRanges[0].firstDay.toString(),\n [`${lapisDateField}To`]: requestedDateRanges[requestedDateRanges.length - 1].lastDay.toString(),\n };\n\n let dataPromise = fetchAndPrepareSubstitutionsOrDeletions(filter, sequenceType).evaluate(lapis, signal);\n\n if (includeMutations) {\n dataPromise = dataPromise.then((data) => {\n return {\n content: includeMutations\n .map((code) => {\n const found = data.content.find((m) => m.mutation.code === code);\n return found ?? codeToEmptyEntry(code);\n })\n .filter((e): e is SubstitutionOrDeletionEntry => e !== null),\n };\n });\n }\n\n return dataPromise;\n}\n\nexport type MutationOverTimeQuery = {\n lapisFilter: LapisFilter;\n displayMutations?: string[];\n sequenceType: SequenceType;\n lapis: string;\n lapisDateField: string;\n granularity: TemporalGranularity;\n useNewEndpoint?: boolean;\n signal?: AbortSignal;\n};\n\nexport async function queryMutationsOverTimeData(query: MutationOverTimeQuery) {\n const { lapisFilter, displayMutations, sequenceType, lapis, lapisDateField, granularity, useNewEndpoint, signal } =\n query;\n\n const requestedDateRanges = await getDatesInDataset(lapisFilter, lapis, granularity, lapisDateField, signal);\n\n if (requestedDateRanges.length > MAX_NUMBER_OF_GRID_COLUMNS) {\n throw new UserFacingError(\n 'Too many dates',\n `The dataset would contain ${requestedDateRanges.length} date intervals. ` +\n `Please reduce the number to below ${MAX_NUMBER_OF_GRID_COLUMNS} to display the data. ` +\n 'You can achieve this by either narrowing the date range in the provided LAPIS filter or by selecting a larger granularity.',\n );\n }\n\n const overallMutationData = queryOverallMutationData({\n lapisFilter,\n sequenceType,\n lapis,\n lapisDateField,\n includeMutations: displayMutations,\n granularity,\n }).then((r) => r.content);\n\n return useNewEndpoint === true\n ? queryMutationsOverTimeDataDirectEndpoint(requestedDateRanges, overallMutationData, query)\n : queryMutationsOverTimeDataMultiQuery(requestedDateRanges, overallMutationData, query);\n}\n\nasync function queryMutationsOverTimeDataMultiQuery(\n allDates: TemporalClass[],\n overallMutationDataPromise: Promise<SubstitutionOrDeletionEntry[]>,\n { lapisFilter, sequenceType, lapis, lapisDateField, signal }: MutationOverTimeQuery,\n) {\n const subQueries = allDates.map(async (date) => {\n const dateFrom = date.firstDay.toString();\n const dateTo = date.lastDay.toString();\n\n const filter = {\n ...lapisFilter,\n [`${lapisDateField}From`]: dateFrom,\n [`${lapisDateField}To`]: dateTo,\n };\n\n const [data, totalCountQuery] = await Promise.all([\n fetchAndPrepareSubstitutionsOrDeletions(filter, sequenceType).evaluate(lapis, signal),\n getTotalNumberOfSequencesInDateRange(filter).evaluate(lapis, signal),\n ]);\n\n return {\n date,\n mutations: data.content,\n totalCount: totalCountQuery.content[0].count,\n };\n });\n\n const data = await Promise.all(subQueries);\n const overallMutationData = await overallMutationDataPromise;\n\n return {\n mutationOverTimeData: groupByMutation(data, overallMutationData),\n overallMutationData,\n };\n}\n\nasync function queryMutationsOverTimeDataDirectEndpoint(\n allDates: TemporalClass[],\n overallMutationDataPromise: Promise<SubstitutionOrDeletionEntry[]>,\n { lapisFilter, sequenceType, lapis, lapisDateField, signal }: MutationOverTimeQuery,\n): Promise<{\n mutationOverTimeData: BaseMutationOverTimeDataMap;\n overallMutationData: SubstitutionOrDeletionEntry[];\n}> {\n const overallMutationData = await overallMutationDataPromise;\n overallMutationData.sort((a, b) => sortSubstitutionsAndDeletions(a.mutation, b.mutation));\n const totalCounts = await Promise.all(\n allDates.map(async (date) => {\n const filter = {\n ...lapisFilter,\n [`${lapisDateField}From`]: date.firstDay.toString(),\n [`${lapisDateField}To`]: date.lastDay.toString(),\n };\n\n const totalCountQuery = await getTotalNumberOfSequencesInDateRange(filter).evaluate(lapis, signal);\n\n return totalCountQuery.content[0].count;\n }),\n );\n\n const includeMutations = overallMutationData.map((value) => value.mutation.code);\n const apiResult = await fetchMutationsOverTime(\n lapis,\n {\n filters: lapisFilter,\n dateRanges: allDates.map((date) => ({\n dateFrom: date.firstDay.toString(),\n dateTo: date.lastDay.toString(),\n })),\n includeMutations,\n dateField: lapisDateField,\n },\n sequenceType,\n signal,\n );\n\n const responseMutations = apiResult.data.mutations.map(parseMutationCode);\n const mutationEntries: SubstitutionOrDeletionEntry[] = responseMutations.map((mutation, i) => {\n const numbers = {\n count: overallMutationData[i].count,\n proportion: overallMutationData[i].proportion,\n };\n if (mutation.type === 'deletion') {\n return {\n type: 'deletion',\n mutation,\n ...numbers,\n };\n } else {\n return {\n type: 'substitution',\n mutation,\n ...numbers,\n };\n }\n });\n\n const mutationOverTimeData: Map2DContents<Substitution | Deletion, Temporal, MutationOverTimeMutationValue> = {\n keysFirstAxis: new Map(responseMutations.map((mutation) => [mutation.code, mutation])),\n keysSecondAxis: new Map(allDates.map((date) => [date.dateString, date])),\n data: new Map(\n responseMutations.map((mutation, i) => [\n mutation.code,\n new Map(\n allDates.map((date, j): [string, MutationOverTimeMutationValue] => {\n if (totalCounts[j] === 0) {\n return [date.dateString, null];\n }\n // 'count' in the API resp. is the number of seqs with the mutation\n const count = apiResult.data.data[i][j].count;\n // 'coverage' in the API resp. is the number of seqs. that have a non-ambiguous symbol at position\n const coverage = apiResult.data.data[i][j].coverage;\n const totalCount = totalCounts[j];\n if (coverage === 0) {\n return [\n date.dateString,\n {\n type: 'belowThreshold',\n totalCount,\n },\n ];\n }\n return [\n date.dateString,\n {\n type: 'value',\n proportion: count / coverage,\n count,\n totalCount,\n },\n ];\n }),\n ),\n ]),\n ),\n };\n\n return {\n mutationOverTimeData: new BaseMutationOverTimeDataMap(mutationOverTimeData),\n overallMutationData: mutationEntries,\n };\n}\n\nfunction parseMutationCode(code: string): SubstitutionClass | DeletionClass {\n const maybeDeletion = DeletionClass.parse(code);\n if (maybeDeletion) {\n return maybeDeletion;\n }\n const maybeSubstitution = SubstitutionClass.parse(code);\n if (maybeSubstitution) {\n return maybeSubstitution;\n }\n throw Error(`Given code is not valid: ${code}`);\n}\n\n/**\n * Returns a list of date ranges as TemporalClass.\n * Respects date range filters given in the lapisFilter as <lapisDateField>From and <lapisDateField>To.\n * If either side (or both sides) of the range are not given, the min and max are determined from\n * the available data.\n */\nasync function getDatesInDataset(\n lapisFilter: LapisFilter,\n lapis: string,\n granularity: TemporalGranularity,\n lapisDateField: string,\n signal: AbortSignal | undefined,\n) {\n const { dateFrom, dateTo } = getDateRangeFromFilter(lapisFilter, lapisDateField, granularity);\n if (dateFrom !== null && dateTo !== null) {\n return generateAllInRange(dateFrom, dateTo);\n }\n\n const { content: availableDates } = await queryAvailableDates(\n lapisFilter,\n lapis,\n granularity,\n lapisDateField,\n signal,\n );\n\n const { min, max } = getMinMaxTemporal(availableDates);\n\n return generateAllInRange(dateFrom ?? min, dateTo ?? max);\n}\n\nfunction getDateRangeFromFilter(lapisFilter: LapisFilter, lapisDateField: string, granularity: TemporalGranularity) {\n const valueFromFilter = lapisFilter[lapisDateField] as string | null;\n\n if (valueFromFilter) {\n return {\n dateFrom: parseDateStringToTemporal(valueFromFilter, granularity),\n dateTo: parseDateStringToTemporal(valueFromFilter, granularity),\n };\n }\n\n const minFromFilter = lapisFilter[`${lapisDateField}From`] as string | null;\n const maxFromFilter = lapisFilter[`${lapisDateField}To`] as string | null;\n\n return {\n dateFrom: minFromFilter ? parseDateStringToTemporal(minFromFilter, granularity) : null,\n dateTo: maxFromFilter ? parseDateStringToTemporal(maxFromFilter, granularity) : null,\n };\n}\n\nfunction queryAvailableDates(\n lapisFilter: LapisFilter,\n lapis: string,\n granularity: TemporalGranularity,\n lapisDateField: string,\n signal?: AbortSignal,\n) {\n return fetchAndPrepareDates(lapisFilter, granularity, lapisDateField).evaluate(lapis, signal);\n}\n\nfunction fetchAndPrepareDates(filter: LapisFilter, granularity: TemporalGranularity, lapisDateField: string) {\n const fetchData = new FetchAggregatedOperator<Record<string, string | null>>(filter, [lapisDateField]);\n const dataWithFixedDateKey = new RenameFieldOperator(fetchData, lapisDateField, 'date');\n const mapData = new MapOperator(dataWithFixedDateKey, (data) => mapDateToGranularityRange(data, granularity));\n const groupByData = new GroupByAndSumOperator(mapData, 'dateRange', 'count');\n const sortData = new SortOperator(groupByData, dateRangeCompare);\n return new MapOperator(sortData, (data) => data.dateRange);\n}\n\nfunction fetchAndPrepareSubstitutionsOrDeletions(filter: LapisFilter, sequenceType: SequenceType) {\n return new FetchSubstitutionsOrDeletionsOperator(filter, sequenceType, MUTATIONS_OVER_TIME_MIN_PROPORTION);\n}\n\nexport function serializeSubstitutionOrDeletion(mutation: Substitution | Deletion) {\n return mutation.code;\n}\n\nexport function serializeTemporal(date: Temporal) {\n return date.dateString;\n}\n\nexport function groupByMutation(\n data: MutationOverTimeData[],\n overallMutationData: (SubstitutionEntry | DeletionEntry)[],\n): BaseMutationOverTimeDataMap {\n const dataArray = new BaseMutationOverTimeDataMap();\n\n const allDates = data.map((mutationData) => mutationData.date);\n\n const sortedOverallMutationData = overallMutationData\n .sort((a, b) => sortSubstitutionsAndDeletions(a.mutation, b.mutation))\n .map((entry) => {\n return toSubstitutionOrDeletion(entry.mutation);\n });\n const sortedDates = allDates.sort((a, b) => compareTemporal(a, b)).map((date) => toTemporal(date));\n\n sortedOverallMutationData.forEach((mutationData) => {\n sortedDates.forEach((date) => {\n dataArray.set(mutationData, date, null);\n });\n });\n\n data.forEach((mutationData) => {\n if (mutationData.totalCount == 0) {\n return;\n }\n\n const date = toTemporal(mutationData.date);\n\n mutationData.mutations.forEach((mutationEntry) => {\n const mutation = toSubstitutionOrDeletion(mutationEntry.mutation);\n\n if (dataArray.get(mutation, date) !== undefined) {\n dataArray.set(mutation, date, {\n type: 'value',\n count: mutationEntry.count,\n proportion: mutationEntry.proportion,\n totalCount: mutationData.totalCount,\n });\n }\n });\n\n for (const firstAxisKey of dataArray.getFirstAxisKeys()) {\n if (dataArray.get(firstAxisKey, date) === null) {\n dataArray.set(firstAxisKey, date, {\n type: 'belowThreshold',\n totalCount: mutationData.totalCount,\n });\n }\n }\n });\n\n return dataArray;\n}\n\nfunction getTotalNumberOfSequencesInDateRange(filter: LapisFilter) {\n return new FetchAggregatedOperator<{ count: number }>(filter);\n}\n","import { type ErrorWorkerStatus, type LoadingWorkerStatus, type SuccessWorkerStatus } from './useWebWorker';\nimport { UserFacingError } from '../components/error-display';\n\nexport async function workerFunction(queryFunction: () => unknown) {\n try {\n postMessage({ status: 'loading' } satisfies LoadingWorkerStatus);\n\n const workerResponse = await queryFunction();\n\n postMessage({\n status: 'success',\n data: workerResponse,\n } satisfies SuccessWorkerStatus<unknown>);\n } catch (error) {\n postMessage(\n (error instanceof UserFacingError\n ? {\n status: 'error',\n userFacing: true,\n headline: error.headline,\n error,\n }\n : {\n status: 'error',\n userFacing: false,\n error: error instanceof Error ? error : new Error(`${error}`),\n }) satisfies ErrorWorkerStatus,\n );\n }\n}\n","import {\n type MutationOverTimeMutationValue,\n type MutationOverTimeQuery,\n queryMutationsOverTimeData,\n} from '../../query/queryMutationsOverTime';\nimport type { SubstitutionOrDeletionEntry } from '../../types';\nimport { type Map2DContents } from '../../utils/map2d';\nimport type { Deletion, Substitution } from '../../utils/mutations';\nimport type { Temporal } from '../../utils/temporalClass';\nimport { workerFunction } from '../webWorkers/workerFunction';\n\nexport type MutationOverTimeWorkerResponse = {\n overallMutationData: SubstitutionOrDeletionEntry<Substitution, Deletion>[];\n mutationOverTimeSerialized: Map2DContents<Substitution | Deletion, Temporal, MutationOverTimeMutationValue>;\n};\n\nexport async function getMutationOverTimeWorkerFunction(event: MessageEvent<MutationOverTimeQuery>) {\n const mutationOverTimeData = await queryMutationsOverTimeData(event.data);\n\n const workerResponse: MutationOverTimeWorkerResponse = {\n overallMutationData: mutationOverTimeData.overallMutationData,\n mutationOverTimeSerialized: mutationOverTimeData.mutationOverTimeData.getContents(),\n };\n return workerResponse;\n}\n\nself.onmessage = async function (event: MessageEvent<MutationOverTimeQuery>) {\n await workerFunction(() => getMutationOverTimeWorkerFunction(event));\n};\n"],"names":["util","k","e","objectUtil","i","defaultErrorMap","m","s","errorUtil","errorMap","ctx","result","issues","a","elements","processed","r","ZodFirstPartyTypeKind","z","problemDetail","aggregatedResponse","v","padStart","padZoneStr","monthDiff","C.M","c","absFloor","prettyUnit","u","C.Y","C.W","C.D","C.DATE","C.H","C.MIN","C.S","C.MS","isUndefined","isDayjs","parseLocale","l","dayjs","wrapper","parseDate","C.REGEX_PARSE","Dayjs","isValid","C.INVALID_DATE_STRING","instanceFactory","instanceFactorySet","C.MILLISECONDS_A_MINUTE","C.MILLISECONDS_A_HOUR","C.MILLISECONDS_A_SECOND","C.FORMAT_DEFAULT","getShort","get$H","matches","C.REGEX_FORMAT","diff","getMonth","C.Q","C.MILLISECONDS_A_WEEK","C.MILLISECONDS_A_DAY","proto","getYearFirstThursday","getCurrentWeekThursday","segmentPart","n","key","data","j"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,17,18,19,20,21,22,27,28]}
|
|
1
|
+
{"version":3,"file":"mutationOverTimeWorker-CQQFRoK4.js","sources":["../node_modules/zod/v3/helpers/util.js","../node_modules/zod/v3/ZodError.js","../node_modules/zod/v3/locales/en.js","../node_modules/zod/v3/errors.js","../node_modules/zod/v3/helpers/parseUtil.js","../node_modules/zod/v3/helpers/errorUtil.js","../node_modules/zod/v3/types.js","../src/lapisApi/ReferenceGenome.ts","../src/lapisApi/lapisTypes.ts","../src/lapisApi/LineageDefinition.ts","../src/lapisApi/lapisApi.ts","../src/operator/FetchAggregatedOperator.ts","../src/operator/GroupByOperator.ts","../src/operator/GroupByAndSumOperator.ts","../src/operator/MapOperator.ts","../src/operator/RenameFieldOperator.ts","../src/operator/SortOperator.ts","../node_modules/dayjs/esm/constant.js","../node_modules/dayjs/esm/locale/en.js","../node_modules/dayjs/esm/utils.js","../node_modules/dayjs/esm/index.js","../node_modules/dayjs/esm/plugin/advancedFormat/index.js","../node_modules/dayjs/esm/plugin/isoWeek/index.js","../src/utils/temporalClass.ts","../src/query/queryAggregatedDataOverTime.ts","../src/utils/mutations.ts","../src/operator/FetchSubstitutionsOrDeletionsOperator.ts","../node_modules/preact/dist/preact.module.js","../node_modules/preact/hooks/dist/hooks.module.js","../src/preact/components/error-display.tsx","../src/utils/map2d.ts","../src/preact/mutationsOverTime/MutationOverTimeData.ts","../src/preact/shared/sort/sortSubstitutionsAndDeletions.ts","../src/query/queryMutationsOverTime.ts","../src/preact/webWorkers/workerFunction.ts","../src/preact/mutationsOverTime/mutationOverTimeWorker.ts"],"sourcesContent":["export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n","import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n","import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n","import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n","export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n","import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n","import z from 'zod';\n\nimport type { SequenceType } from '../types';\n\nexport const referenceGenomeResponse = z.object({\n nucleotideSequences: z.array(\n z.object({\n name: z.string(),\n sequence: z.string(),\n }),\n ),\n genes: z.array(\n z.object({\n name: z.string(),\n sequence: z.string(),\n }),\n ),\n});\nexport type ReferenceGenome = z.infer<typeof referenceGenomeResponse>;\n\nexport const getSegmentNames = (referenceGenome: ReferenceGenome, sequenceType: SequenceType) => {\n switch (sequenceType) {\n case 'nucleotide': {\n return referenceGenome.nucleotideSequences.map((sequence) => sequence.name);\n }\n case 'amino acid': {\n return referenceGenome.genes.map((gene) => gene.name);\n }\n }\n};\n\nexport const isSingleSegmented = (referenceGenome: ReferenceGenome) => referenceGenome.nucleotideSequences.length === 1;\n","import z, { type ZodTypeAny } from 'zod';\n\nexport const orderByType = z.enum(['ascending', 'descending']);\n\nexport const orderBy = z.object({\n field: z.string(),\n type: orderByType,\n});\n\nconst filterValue = z.union([z.string(), z.number(), z.boolean(), z.null(), z.undefined(), z.array(z.string())]);\n\nconst dateRange = z.object({\n dateFrom: z.string(),\n dateTo: z.string(),\n});\n\nexport const lapisBaseRequest = z\n .object({\n limit: z.number().optional(),\n offset: z.number().optional(),\n fields: z.array(z.string()).optional(),\n orderBy: z.array(orderBy).optional(),\n })\n .catchall(filterValue);\nexport type LapisBaseRequest = z.infer<typeof lapisBaseRequest>;\n\nexport const mutationsRequest = lapisBaseRequest.extend({ minProportion: z.number().optional() });\nexport type MutationsRequest = z.infer<typeof mutationsRequest>;\n\nconst mutationProportionCount = z.object({\n mutation: z.string(),\n proportion: z.number(),\n count: z.number(),\n sequenceName: z.union([z.string(), z.null()]),\n mutationFrom: z.string(),\n mutationTo: z.string(),\n position: z.number(),\n});\nexport const mutationsResponse = makeLapisResponse(z.array(mutationProportionCount));\nexport type MutationsResponse = z.infer<typeof mutationsResponse>;\n\nexport const mutationsOverTimeRequest = z.object({\n filters: z.record(filterValue),\n downloadAsFile: z.boolean().optional(),\n downloadFileBasename: z.string().optional(),\n compression: z.enum(['gzip', 'none']).optional(),\n includeMutations: z.array(z.string()).optional(),\n dateRanges: z.array(dateRange).optional(),\n dateField: z.string().optional(),\n});\nexport type MutationsOverTimeRequest = z.infer<typeof mutationsOverTimeRequest>;\n\nexport const mutationsOverTimeResponse = makeLapisResponse(\n z.object({\n mutations: z.array(z.string()),\n dateRanges: z.array(dateRange),\n data: z.array(\n z.array(\n z.object({\n count: z.number(),\n coverage: z.number(),\n }),\n ),\n ),\n }),\n);\nexport type MutationsOverTimeResponse = z.infer<typeof mutationsOverTimeResponse>;\n\nconst insertionCount = z.object({\n insertion: z.string(),\n count: z.number(),\n insertedSymbols: z.string(),\n position: z.number(),\n sequenceName: z.union([z.string(), z.null()]),\n});\nexport const insertionsResponse = makeLapisResponse(z.array(insertionCount));\n\nconst baseResponseValueSchema = z.union([z.string(), z.number(), z.boolean(), z.null()]);\n\nexport const aggregatedItem = z.object({ count: z.number() }).catchall(baseResponseValueSchema);\nexport const aggregatedResponse = makeLapisResponse(z.array(aggregatedItem));\nexport type AggregatedItem = z.infer<typeof aggregatedItem>;\n\nexport const detailsItem = z.object({}).catchall(baseResponseValueSchema);\nexport const detailsResponse = makeLapisResponse(z.array(detailsItem));\nexport type DetailsItem = z.infer<typeof detailsItem>;\n\nfunction makeLapisResponse<T extends ZodTypeAny>(data: T) {\n return z.object({\n data,\n });\n}\n\nexport const problemDetail = z.object({\n title: z.string().optional(),\n status: z.number(),\n detail: z.string().optional(),\n type: z.string(),\n instance: z.string().optional(),\n});\n\nexport type ProblemDetail = z.infer<typeof problemDetail>;\n\nexport const lapisError = z.object({\n error: problemDetail,\n});\n","import z from 'zod';\n\nconst lineage = z.object({\n parents: z.array(z.string()).optional(),\n aliases: z.array(z.string()).optional(),\n});\n\nexport const lineageDefinitionResponseSchema = z.record(lineage);\nexport type LineageDefinitionResponse = z.infer<typeof lineageDefinitionResponseSchema>;\n","import { referenceGenomeResponse } from './ReferenceGenome';\nimport {\n aggregatedResponse,\n detailsResponse,\n insertionsResponse,\n type LapisBaseRequest,\n lapisError,\n type MutationsRequest,\n mutationsResponse,\n problemDetail,\n type ProblemDetail,\n type MutationsOverTimeRequest,\n mutationsOverTimeResponse,\n} from './lapisTypes';\nimport { type SequenceType } from '../types';\nimport { lineageDefinitionResponseSchema } from './LineageDefinition';\n\nexport class UnknownLapisError extends Error {\n constructor(\n message: string,\n public readonly status: number,\n public readonly requestedData: string,\n ) {\n super(message);\n this.name = 'UnknownLapisError';\n }\n}\n\nexport class LapisError extends Error {\n constructor(\n message: string,\n public readonly status: number,\n public readonly problemDetail: ProblemDetail,\n public readonly requestedData: string,\n ) {\n super(message);\n this.name = 'LapisError';\n }\n}\n\nexport async function fetchAggregated(lapisUrl: string, body: LapisBaseRequest, signal?: AbortSignal) {\n const response = await callLapis(\n aggregatedEndpoint(lapisUrl),\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n signal,\n },\n 'aggregated data',\n );\n\n return aggregatedResponse.parse(await response.json());\n}\n\nexport async function fetchDetails(lapisUrl: string, body: LapisBaseRequest, signal?: AbortSignal) {\n const response = await fetch(detailsEndpoint(lapisUrl), {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n signal,\n });\n\n await handleErrors(response, 'aggregated data');\n\n return detailsResponse.parse(await response.json());\n}\n\nexport async function fetchInsertions(\n lapisUrl: string,\n body: LapisBaseRequest,\n sequenceType: SequenceType,\n signal?: AbortSignal,\n) {\n const response = await callLapis(\n insertionsEndpoint(lapisUrl, sequenceType),\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n signal,\n },\n `${sequenceType} insertions`,\n );\n\n return insertionsResponse.parse(await response.json());\n}\n\nexport async function fetchSubstitutionsOrDeletions(\n lapisUrl: string,\n body: MutationsRequest,\n sequenceType: SequenceType,\n signal?: AbortSignal,\n) {\n const response = await callLapis(\n substitutionsOrDeletionsEndpoint(lapisUrl, sequenceType),\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n signal,\n },\n `${sequenceType} mutations`,\n );\n\n return mutationsResponse.parse(await response.json());\n}\n\nexport async function fetchMutationsOverTime(\n lapisUrl: string,\n body: MutationsOverTimeRequest,\n sequenceType: SequenceType,\n signal?: AbortSignal,\n) {\n const response = await callLapis(\n mutationsOverTimeEndpoint(lapisUrl, sequenceType),\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n signal,\n },\n `${sequenceType} mutations over time`,\n );\n\n return mutationsOverTimeResponse.parse(await response.json());\n}\n\nexport async function fetchReferenceGenome(lapisUrl: string, signal?: AbortSignal) {\n const response = await callLapis(\n referenceGenomeEndpoint(lapisUrl),\n {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n signal,\n },\n 'the reference genomes',\n );\n\n return referenceGenomeResponse.parse(await response.json());\n}\n\nexport async function fetchLineageDefinition({\n lapisUrl,\n lapisField,\n signal,\n}: {\n lapisUrl: string;\n lapisField: string;\n signal?: AbortSignal;\n}) {\n const response = await callLapis(\n lineageDefinitionEndpoint(lapisUrl, lapisField),\n {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n signal,\n },\n `${lapisField} lineage definition`,\n );\n\n return lineageDefinitionResponseSchema.parse(await response.json());\n}\n\nasync function callLapis(\n input: Parameters<typeof fetch>[0],\n init: Parameters<typeof fetch>[1],\n requestedDataName: string,\n) {\n try {\n const response = await fetch(input, init);\n\n await handleErrors(response, requestedDataName);\n return response;\n } catch (error) {\n const message = error instanceof Error ? error.message : `${error}`;\n throw new UnknownLapisError(`Failed to connect to LAPIS: ${message}`, 500, requestedDataName);\n }\n}\n\nconst handleErrors = async (response: Response, requestedData: string) => {\n if (!response.ok) {\n if (response.status >= 400 && response.status < 500) {\n const json = (await response.json()) as unknown;\n\n const lapisErrorResult = lapisError.safeParse(json);\n if (lapisErrorResult.success) {\n throw new LapisError(\n response.statusText + (lapisErrorResult.data.error.detail ?? ''),\n response.status,\n lapisErrorResult.data.error,\n requestedData,\n );\n }\n\n const problemDetailResult = problemDetail.safeParse(json);\n if (problemDetailResult.success) {\n throw new LapisError(\n response.statusText + (problemDetailResult.data.detail ?? ''),\n response.status,\n problemDetailResult.data,\n requestedData,\n );\n }\n\n throw new UnknownLapisError(\n `${response.statusText}: ${JSON.stringify(json)}`,\n response.status,\n requestedData,\n );\n }\n throw new UnknownLapisError(`${response.statusText}: ${response.status}`, response.status, requestedData);\n }\n};\n\nexport const aggregatedEndpoint = (lapisUrl: string) => `${lapisUrl}/sample/aggregated`;\nexport const detailsEndpoint = (lapisUrl: string) => `${lapisUrl}/sample/details`;\nexport const insertionsEndpoint = (lapisUrl: string, sequenceType: SequenceType) => {\n return sequenceType === 'amino acid'\n ? `${lapisUrl}/sample/aminoAcidInsertions`\n : `${lapisUrl}/sample/nucleotideInsertions`;\n};\nexport const substitutionsOrDeletionsEndpoint = (lapisUrl: string, sequenceType: SequenceType) => {\n return sequenceType === 'amino acid'\n ? `${lapisUrl}/sample/aminoAcidMutations`\n : `${lapisUrl}/sample/nucleotideMutations`;\n};\nexport const mutationsOverTimeEndpoint = (lapisUrl: string, sequenceType: SequenceType) => {\n return sequenceType === 'amino acid'\n ? `${lapisUrl}/component/aminoAcidMutationsOverTime`\n : `${lapisUrl}/component/nucleotideMutationsOverTime`;\n};\nexport const referenceGenomeEndpoint = (lapisUrl: string) => `${lapisUrl}/sample/referenceGenome`;\nexport const lineageDefinitionEndpoint = (lapisUrl: string, lapisField: string) =>\n `${lapisUrl}/sample/lineageDefinition/${lapisField}`;\n","import { type Dataset } from './Dataset';\nimport { type Operator } from './Operator';\nimport { fetchAggregated } from '../lapisApi/lapisApi';\nimport { type AggregatedItem } from '../lapisApi/lapisTypes';\nimport { type LapisFilter } from '../types';\n\nexport class FetchAggregatedOperator<Fields extends Record<string, unknown>>\n implements Operator<Fields & { count: number }>\n{\n constructor(\n private filter: LapisFilter,\n private fields: string[] = [],\n ) {}\n\n async evaluate(lapisUrl: string, signal?: AbortSignal): Promise<Dataset<Fields & { count: number }>> {\n const aggregatedResponse = (\n await fetchAggregated(\n lapisUrl,\n {\n ...this.filter,\n fields: this.fields,\n },\n signal,\n )\n ).data;\n\n if (isFieldsArrayWithCount<Fields & { count: number }>(aggregatedResponse)) {\n return {\n content: aggregatedResponse,\n };\n }\n\n throw new Error('Aggregated response does not have count');\n }\n}\n\nfunction isFieldsArrayWithCount<T>(data: AggregatedItem[]): data is (T & { count: number })[] {\n return data.every((item) => typeof item === 'object' && 'count' in item && typeof item.count === 'number');\n}\n","import { type Dataset } from './Dataset';\nimport { type Operator } from './Operator';\n\nexport class GroupByOperator<Data, AggregationResult, KeyToGroupBy extends keyof Data>\n implements Operator<AggregationResult>\n{\n constructor(\n private child: Operator<Data>,\n private field: KeyToGroupBy,\n private aggregate: (values: Data[]) => AggregationResult,\n ) {}\n\n async evaluate(lapis: string, signal?: AbortSignal): Promise<Dataset<AggregationResult>> {\n const childEvaluated = await this.child.evaluate(lapis, signal);\n const grouped = new Map<Data[KeyToGroupBy], Data[]>();\n for (const row of childEvaluated.content) {\n const key = row[this.field];\n if (!grouped.has(key)) {\n grouped.set(key, []);\n }\n grouped.get(key)!.push(row);\n }\n const result = new Array<AggregationResult>();\n for (const [, values] of grouped) {\n result.push(this.aggregate(values));\n }\n\n return {\n content: result,\n };\n }\n}\n","import { GroupByOperator } from './GroupByOperator';\nimport { type Operator } from './Operator';\nimport { type NumberFields } from '../utils/type-utils';\n\ntype Result<Data, KeyToGroupBy extends keyof Data, KeyToSumBy extends keyof Data> = {\n [P in KeyToGroupBy | KeyToSumBy]: P extends KeyToGroupBy ? Data[KeyToGroupBy] : number;\n};\n\nexport class GroupByAndSumOperator<\n Data,\n KeyToGroupBy extends keyof Data,\n KeySoSumBy extends NumberFields<Data>,\n> extends GroupByOperator<Data, Result<Data, KeyToGroupBy, KeySoSumBy>, KeyToGroupBy> {\n constructor(child: Operator<Data>, groupByField: KeyToGroupBy, sumField: KeySoSumBy) {\n super(child, groupByField, (values: Data[]) => {\n let n = 0;\n for (const value of values) {\n n += value[sumField] as number;\n }\n return {\n [groupByField]: values[0][groupByField],\n [sumField]: n,\n } as Result<Data, KeyToGroupBy, KeySoSumBy>;\n });\n }\n}\n","import { type Dataset } from './Dataset';\nimport { type Operator } from './Operator';\n\nexport class MapOperator<S, T> implements Operator<T> {\n constructor(\n private child: Operator<S>,\n private func: (value: S) => T,\n ) {}\n\n async evaluate(lapis: string, signal?: AbortSignal): Promise<Dataset<T>> {\n const childEvaluated = await this.child.evaluate(lapis, signal);\n return {\n content: childEvaluated.content.map(this.func),\n };\n }\n}\n","import { MapOperator } from './MapOperator';\nimport type { Operator } from './Operator';\n\nexport class RenameFieldOperator<\n OldFieldName extends string,\n NewFieldName extends string,\n Data extends Record<OldFieldName, unknown>,\n> extends MapOperator<Data, Data & Record<NewFieldName, Data[OldFieldName]>> {\n constructor(child: Operator<Data>, oldFieldName: OldFieldName, newFieldName: NewFieldName) {\n super(\n child,\n (value) =>\n ({\n ...value,\n [newFieldName]: value[oldFieldName],\n }) as Data & Record<NewFieldName, Data[OldFieldName]>,\n );\n }\n}\n","import { type Dataset } from './Dataset';\nimport { type Operator } from './Operator';\n\nexport class SortOperator<S> implements Operator<S> {\n constructor(\n private child: Operator<S>,\n private compareFn: (a: S, b: S) => number,\n ) {}\n\n async evaluate(lapis: string, signal?: AbortSignal): Promise<Dataset<S>> {\n const childEvaluated = await this.child.evaluate(lapis, signal);\n return {\n content: childEvaluated.content.sort(this.compareFn),\n };\n }\n}\n","export var SECONDS_A_MINUTE = 60;\nexport var SECONDS_A_HOUR = SECONDS_A_MINUTE * 60;\nexport var SECONDS_A_DAY = SECONDS_A_HOUR * 24;\nexport var SECONDS_A_WEEK = SECONDS_A_DAY * 7;\nexport var MILLISECONDS_A_SECOND = 1e3;\nexport var MILLISECONDS_A_MINUTE = SECONDS_A_MINUTE * MILLISECONDS_A_SECOND;\nexport var MILLISECONDS_A_HOUR = SECONDS_A_HOUR * MILLISECONDS_A_SECOND;\nexport var MILLISECONDS_A_DAY = SECONDS_A_DAY * MILLISECONDS_A_SECOND;\nexport var MILLISECONDS_A_WEEK = SECONDS_A_WEEK * MILLISECONDS_A_SECOND; // English locales\n\nexport var MS = 'millisecond';\nexport var S = 'second';\nexport var MIN = 'minute';\nexport var H = 'hour';\nexport var D = 'day';\nexport var W = 'week';\nexport var M = 'month';\nexport var Q = 'quarter';\nexport var Y = 'year';\nexport var DATE = 'date';\nexport var FORMAT_DEFAULT = 'YYYY-MM-DDTHH:mm:ssZ';\nexport var INVALID_DATE_STRING = 'Invalid Date'; // regex\n\nexport var REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/;\nexport var REGEX_FORMAT = /\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g;","// English [en]\n// We don't need weekdaysShort, weekdaysMin, monthsShort in en.js locale\nexport default {\n name: 'en',\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n ordinal: function ordinal(n) {\n var s = ['th', 'st', 'nd', 'rd'];\n var v = n % 100;\n return \"[\" + n + (s[(v - 20) % 10] || s[v] || s[0]) + \"]\";\n }\n};","import * as C from './constant';\n\nvar padStart = function padStart(string, length, pad) {\n var s = String(string);\n if (!s || s.length >= length) return string;\n return \"\" + Array(length + 1 - s.length).join(pad) + string;\n};\n\nvar padZoneStr = function padZoneStr(instance) {\n var negMinutes = -instance.utcOffset();\n var minutes = Math.abs(negMinutes);\n var hourOffset = Math.floor(minutes / 60);\n var minuteOffset = minutes % 60;\n return \"\" + (negMinutes <= 0 ? '+' : '-') + padStart(hourOffset, 2, '0') + \":\" + padStart(minuteOffset, 2, '0');\n};\n\nvar monthDiff = function monthDiff(a, b) {\n // function from moment.js in order to keep the same result\n if (a.date() < b.date()) return -monthDiff(b, a);\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month());\n var anchor = a.clone().add(wholeMonthDiff, C.M);\n var c = b - anchor < 0;\n var anchor2 = a.clone().add(wholeMonthDiff + (c ? -1 : 1), C.M);\n return +(-(wholeMonthDiff + (b - anchor) / (c ? anchor - anchor2 : anchor2 - anchor)) || 0);\n};\n\nvar absFloor = function absFloor(n) {\n return n < 0 ? Math.ceil(n) || 0 : Math.floor(n);\n};\n\nvar prettyUnit = function prettyUnit(u) {\n var special = {\n M: C.M,\n y: C.Y,\n w: C.W,\n d: C.D,\n D: C.DATE,\n h: C.H,\n m: C.MIN,\n s: C.S,\n ms: C.MS,\n Q: C.Q\n };\n return special[u] || String(u || '').toLowerCase().replace(/s$/, '');\n};\n\nvar isUndefined = function isUndefined(s) {\n return s === undefined;\n};\n\nexport default {\n s: padStart,\n z: padZoneStr,\n m: monthDiff,\n a: absFloor,\n p: prettyUnit,\n u: isUndefined\n};","import * as C from './constant';\nimport en from './locale/en';\nimport U from './utils';\nvar L = 'en'; // global locale\n\nvar Ls = {}; // global loaded locale\n\nLs[L] = en;\nvar IS_DAYJS = '$isDayjsObject'; // eslint-disable-next-line no-use-before-define\n\nvar isDayjs = function isDayjs(d) {\n return d instanceof Dayjs || !!(d && d[IS_DAYJS]);\n};\n\nvar parseLocale = function parseLocale(preset, object, isLocal) {\n var l;\n if (!preset) return L;\n\n if (typeof preset === 'string') {\n var presetLower = preset.toLowerCase();\n\n if (Ls[presetLower]) {\n l = presetLower;\n }\n\n if (object) {\n Ls[presetLower] = object;\n l = presetLower;\n }\n\n var presetSplit = preset.split('-');\n\n if (!l && presetSplit.length > 1) {\n return parseLocale(presetSplit[0]);\n }\n } else {\n var name = preset.name;\n Ls[name] = preset;\n l = name;\n }\n\n if (!isLocal && l) L = l;\n return l || !isLocal && L;\n};\n\nvar dayjs = function dayjs(date, c) {\n if (isDayjs(date)) {\n return date.clone();\n } // eslint-disable-next-line no-nested-ternary\n\n\n var cfg = typeof c === 'object' ? c : {};\n cfg.date = date;\n cfg.args = arguments; // eslint-disable-line prefer-rest-params\n\n return new Dayjs(cfg); // eslint-disable-line no-use-before-define\n};\n\nvar wrapper = function wrapper(date, instance) {\n return dayjs(date, {\n locale: instance.$L,\n utc: instance.$u,\n x: instance.$x,\n $offset: instance.$offset // todo: refactor; do not use this.$offset in you code\n\n });\n};\n\nvar Utils = U; // for plugin use\n\nUtils.l = parseLocale;\nUtils.i = isDayjs;\nUtils.w = wrapper;\n\nvar parseDate = function parseDate(cfg) {\n var date = cfg.date,\n utc = cfg.utc;\n if (date === null) return new Date(NaN); // null is invalid\n\n if (Utils.u(date)) return new Date(); // today\n\n if (date instanceof Date) return new Date(date);\n\n if (typeof date === 'string' && !/Z$/i.test(date)) {\n var d = date.match(C.REGEX_PARSE);\n\n if (d) {\n var m = d[2] - 1 || 0;\n var ms = (d[7] || '0').substring(0, 3);\n\n if (utc) {\n return new Date(Date.UTC(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms));\n }\n\n return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);\n }\n }\n\n return new Date(date); // everything else\n};\n\nvar Dayjs = /*#__PURE__*/function () {\n function Dayjs(cfg) {\n this.$L = parseLocale(cfg.locale, null, true);\n this.parse(cfg); // for plugin\n\n this.$x = this.$x || cfg.x || {};\n this[IS_DAYJS] = true;\n }\n\n var _proto = Dayjs.prototype;\n\n _proto.parse = function parse(cfg) {\n this.$d = parseDate(cfg);\n this.init();\n };\n\n _proto.init = function init() {\n var $d = this.$d;\n this.$y = $d.getFullYear();\n this.$M = $d.getMonth();\n this.$D = $d.getDate();\n this.$W = $d.getDay();\n this.$H = $d.getHours();\n this.$m = $d.getMinutes();\n this.$s = $d.getSeconds();\n this.$ms = $d.getMilliseconds();\n } // eslint-disable-next-line class-methods-use-this\n ;\n\n _proto.$utils = function $utils() {\n return Utils;\n };\n\n _proto.isValid = function isValid() {\n return !(this.$d.toString() === C.INVALID_DATE_STRING);\n };\n\n _proto.isSame = function isSame(that, units) {\n var other = dayjs(that);\n return this.startOf(units) <= other && other <= this.endOf(units);\n };\n\n _proto.isAfter = function isAfter(that, units) {\n return dayjs(that) < this.startOf(units);\n };\n\n _proto.isBefore = function isBefore(that, units) {\n return this.endOf(units) < dayjs(that);\n };\n\n _proto.$g = function $g(input, get, set) {\n if (Utils.u(input)) return this[get];\n return this.set(set, input);\n };\n\n _proto.unix = function unix() {\n return Math.floor(this.valueOf() / 1000);\n };\n\n _proto.valueOf = function valueOf() {\n // timezone(hour) * 60 * 60 * 1000 => ms\n return this.$d.getTime();\n };\n\n _proto.startOf = function startOf(units, _startOf) {\n var _this = this;\n\n // startOf -> endOf\n var isStartOf = !Utils.u(_startOf) ? _startOf : true;\n var unit = Utils.p(units);\n\n var instanceFactory = function instanceFactory(d, m) {\n var ins = Utils.w(_this.$u ? Date.UTC(_this.$y, m, d) : new Date(_this.$y, m, d), _this);\n return isStartOf ? ins : ins.endOf(C.D);\n };\n\n var instanceFactorySet = function instanceFactorySet(method, slice) {\n var argumentStart = [0, 0, 0, 0];\n var argumentEnd = [23, 59, 59, 999];\n return Utils.w(_this.toDate()[method].apply( // eslint-disable-line prefer-spread\n _this.toDate('s'), (isStartOf ? argumentStart : argumentEnd).slice(slice)), _this);\n };\n\n var $W = this.$W,\n $M = this.$M,\n $D = this.$D;\n var utcPad = \"set\" + (this.$u ? 'UTC' : '');\n\n switch (unit) {\n case C.Y:\n return isStartOf ? instanceFactory(1, 0) : instanceFactory(31, 11);\n\n case C.M:\n return isStartOf ? instanceFactory(1, $M) : instanceFactory(0, $M + 1);\n\n case C.W:\n {\n var weekStart = this.$locale().weekStart || 0;\n var gap = ($W < weekStart ? $W + 7 : $W) - weekStart;\n return instanceFactory(isStartOf ? $D - gap : $D + (6 - gap), $M);\n }\n\n case C.D:\n case C.DATE:\n return instanceFactorySet(utcPad + \"Hours\", 0);\n\n case C.H:\n return instanceFactorySet(utcPad + \"Minutes\", 1);\n\n case C.MIN:\n return instanceFactorySet(utcPad + \"Seconds\", 2);\n\n case C.S:\n return instanceFactorySet(utcPad + \"Milliseconds\", 3);\n\n default:\n return this.clone();\n }\n };\n\n _proto.endOf = function endOf(arg) {\n return this.startOf(arg, false);\n };\n\n _proto.$set = function $set(units, _int) {\n var _C$D$C$DATE$C$M$C$Y$C;\n\n // private set\n var unit = Utils.p(units);\n var utcPad = \"set\" + (this.$u ? 'UTC' : '');\n var name = (_C$D$C$DATE$C$M$C$Y$C = {}, _C$D$C$DATE$C$M$C$Y$C[C.D] = utcPad + \"Date\", _C$D$C$DATE$C$M$C$Y$C[C.DATE] = utcPad + \"Date\", _C$D$C$DATE$C$M$C$Y$C[C.M] = utcPad + \"Month\", _C$D$C$DATE$C$M$C$Y$C[C.Y] = utcPad + \"FullYear\", _C$D$C$DATE$C$M$C$Y$C[C.H] = utcPad + \"Hours\", _C$D$C$DATE$C$M$C$Y$C[C.MIN] = utcPad + \"Minutes\", _C$D$C$DATE$C$M$C$Y$C[C.S] = utcPad + \"Seconds\", _C$D$C$DATE$C$M$C$Y$C[C.MS] = utcPad + \"Milliseconds\", _C$D$C$DATE$C$M$C$Y$C)[unit];\n var arg = unit === C.D ? this.$D + (_int - this.$W) : _int;\n\n if (unit === C.M || unit === C.Y) {\n // clone is for badMutable plugin\n var date = this.clone().set(C.DATE, 1);\n date.$d[name](arg);\n date.init();\n this.$d = date.set(C.DATE, Math.min(this.$D, date.daysInMonth())).$d;\n } else if (name) this.$d[name](arg);\n\n this.init();\n return this;\n };\n\n _proto.set = function set(string, _int2) {\n return this.clone().$set(string, _int2);\n };\n\n _proto.get = function get(unit) {\n return this[Utils.p(unit)]();\n };\n\n _proto.add = function add(number, units) {\n var _this2 = this,\n _C$MIN$C$H$C$S$unit;\n\n number = Number(number); // eslint-disable-line no-param-reassign\n\n var unit = Utils.p(units);\n\n var instanceFactorySet = function instanceFactorySet(n) {\n var d = dayjs(_this2);\n return Utils.w(d.date(d.date() + Math.round(n * number)), _this2);\n };\n\n if (unit === C.M) {\n return this.set(C.M, this.$M + number);\n }\n\n if (unit === C.Y) {\n return this.set(C.Y, this.$y + number);\n }\n\n if (unit === C.D) {\n return instanceFactorySet(1);\n }\n\n if (unit === C.W) {\n return instanceFactorySet(7);\n }\n\n var step = (_C$MIN$C$H$C$S$unit = {}, _C$MIN$C$H$C$S$unit[C.MIN] = C.MILLISECONDS_A_MINUTE, _C$MIN$C$H$C$S$unit[C.H] = C.MILLISECONDS_A_HOUR, _C$MIN$C$H$C$S$unit[C.S] = C.MILLISECONDS_A_SECOND, _C$MIN$C$H$C$S$unit)[unit] || 1; // ms\n\n var nextTimeStamp = this.$d.getTime() + number * step;\n return Utils.w(nextTimeStamp, this);\n };\n\n _proto.subtract = function subtract(number, string) {\n return this.add(number * -1, string);\n };\n\n _proto.format = function format(formatStr) {\n var _this3 = this;\n\n var locale = this.$locale();\n if (!this.isValid()) return locale.invalidDate || C.INVALID_DATE_STRING;\n var str = formatStr || C.FORMAT_DEFAULT;\n var zoneStr = Utils.z(this);\n var $H = this.$H,\n $m = this.$m,\n $M = this.$M;\n var weekdays = locale.weekdays,\n months = locale.months,\n meridiem = locale.meridiem;\n\n var getShort = function getShort(arr, index, full, length) {\n return arr && (arr[index] || arr(_this3, str)) || full[index].slice(0, length);\n };\n\n var get$H = function get$H(num) {\n return Utils.s($H % 12 || 12, num, '0');\n };\n\n var meridiemFunc = meridiem || function (hour, minute, isLowercase) {\n var m = hour < 12 ? 'AM' : 'PM';\n return isLowercase ? m.toLowerCase() : m;\n };\n\n var matches = function matches(match) {\n switch (match) {\n case 'YY':\n return String(_this3.$y).slice(-2);\n\n case 'YYYY':\n return Utils.s(_this3.$y, 4, '0');\n\n case 'M':\n return $M + 1;\n\n case 'MM':\n return Utils.s($M + 1, 2, '0');\n\n case 'MMM':\n return getShort(locale.monthsShort, $M, months, 3);\n\n case 'MMMM':\n return getShort(months, $M);\n\n case 'D':\n return _this3.$D;\n\n case 'DD':\n return Utils.s(_this3.$D, 2, '0');\n\n case 'd':\n return String(_this3.$W);\n\n case 'dd':\n return getShort(locale.weekdaysMin, _this3.$W, weekdays, 2);\n\n case 'ddd':\n return getShort(locale.weekdaysShort, _this3.$W, weekdays, 3);\n\n case 'dddd':\n return weekdays[_this3.$W];\n\n case 'H':\n return String($H);\n\n case 'HH':\n return Utils.s($H, 2, '0');\n\n case 'h':\n return get$H(1);\n\n case 'hh':\n return get$H(2);\n\n case 'a':\n return meridiemFunc($H, $m, true);\n\n case 'A':\n return meridiemFunc($H, $m, false);\n\n case 'm':\n return String($m);\n\n case 'mm':\n return Utils.s($m, 2, '0');\n\n case 's':\n return String(_this3.$s);\n\n case 'ss':\n return Utils.s(_this3.$s, 2, '0');\n\n case 'SSS':\n return Utils.s(_this3.$ms, 3, '0');\n\n case 'Z':\n return zoneStr;\n // 'ZZ' logic below\n\n default:\n break;\n }\n\n return null;\n };\n\n return str.replace(C.REGEX_FORMAT, function (match, $1) {\n return $1 || matches(match) || zoneStr.replace(':', '');\n }); // 'ZZ'\n };\n\n _proto.utcOffset = function utcOffset() {\n // Because a bug at FF24, we're rounding the timezone offset around 15 minutes\n // https://github.com/moment/moment/pull/1871\n return -Math.round(this.$d.getTimezoneOffset() / 15) * 15;\n };\n\n _proto.diff = function diff(input, units, _float) {\n var _this4 = this;\n\n var unit = Utils.p(units);\n var that = dayjs(input);\n var zoneDelta = (that.utcOffset() - this.utcOffset()) * C.MILLISECONDS_A_MINUTE;\n var diff = this - that;\n\n var getMonth = function getMonth() {\n return Utils.m(_this4, that);\n };\n\n var result;\n\n switch (unit) {\n case C.Y:\n result = getMonth() / 12;\n break;\n\n case C.M:\n result = getMonth();\n break;\n\n case C.Q:\n result = getMonth() / 3;\n break;\n\n case C.W:\n result = (diff - zoneDelta) / C.MILLISECONDS_A_WEEK;\n break;\n\n case C.D:\n result = (diff - zoneDelta) / C.MILLISECONDS_A_DAY;\n break;\n\n case C.H:\n result = diff / C.MILLISECONDS_A_HOUR;\n break;\n\n case C.MIN:\n result = diff / C.MILLISECONDS_A_MINUTE;\n break;\n\n case C.S:\n result = diff / C.MILLISECONDS_A_SECOND;\n break;\n\n default:\n result = diff; // milliseconds\n\n break;\n }\n\n return _float ? result : Utils.a(result);\n };\n\n _proto.daysInMonth = function daysInMonth() {\n return this.endOf(C.M).$D;\n };\n\n _proto.$locale = function $locale() {\n // get locale object\n return Ls[this.$L];\n };\n\n _proto.locale = function locale(preset, object) {\n if (!preset) return this.$L;\n var that = this.clone();\n var nextLocaleName = parseLocale(preset, object, true);\n if (nextLocaleName) that.$L = nextLocaleName;\n return that;\n };\n\n _proto.clone = function clone() {\n return Utils.w(this.$d, this);\n };\n\n _proto.toDate = function toDate() {\n return new Date(this.valueOf());\n };\n\n _proto.toJSON = function toJSON() {\n return this.isValid() ? this.toISOString() : null;\n };\n\n _proto.toISOString = function toISOString() {\n // ie 8 return\n // new Dayjs(this.valueOf() + this.$d.getTimezoneOffset() * 60000)\n // .format('YYYY-MM-DDTHH:mm:ss.SSS[Z]')\n return this.$d.toISOString();\n };\n\n _proto.toString = function toString() {\n return this.$d.toUTCString();\n };\n\n return Dayjs;\n}();\n\nvar proto = Dayjs.prototype;\ndayjs.prototype = proto;\n[['$ms', C.MS], ['$s', C.S], ['$m', C.MIN], ['$H', C.H], ['$W', C.D], ['$M', C.M], ['$y', C.Y], ['$D', C.DATE]].forEach(function (g) {\n proto[g[1]] = function (input) {\n return this.$g(input, g[0], g[1]);\n };\n});\n\ndayjs.extend = function (plugin, option) {\n if (!plugin.$i) {\n // install plugin only once\n plugin(option, Dayjs, dayjs);\n plugin.$i = true;\n }\n\n return dayjs;\n};\n\ndayjs.locale = parseLocale;\ndayjs.isDayjs = isDayjs;\n\ndayjs.unix = function (timestamp) {\n return dayjs(timestamp * 1e3);\n};\n\ndayjs.en = Ls[L];\ndayjs.Ls = Ls;\ndayjs.p = {};\nexport default dayjs;","import { FORMAT_DEFAULT } from '../../constant';\nexport default (function (o, c) {\n // locale needed later\n var proto = c.prototype;\n var oldFormat = proto.format;\n\n proto.format = function (formatStr) {\n var _this = this;\n\n var locale = this.$locale();\n\n if (!this.isValid()) {\n return oldFormat.bind(this)(formatStr);\n }\n\n var utils = this.$utils();\n var str = formatStr || FORMAT_DEFAULT;\n var result = str.replace(/\\[([^\\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g, function (match) {\n switch (match) {\n case 'Q':\n return Math.ceil((_this.$M + 1) / 3);\n\n case 'Do':\n return locale.ordinal(_this.$D);\n\n case 'gggg':\n return _this.weekYear();\n\n case 'GGGG':\n return _this.isoWeekYear();\n\n case 'wo':\n return locale.ordinal(_this.week(), 'W');\n // W for week\n\n case 'w':\n case 'ww':\n return utils.s(_this.week(), match === 'w' ? 1 : 2, '0');\n\n case 'W':\n case 'WW':\n return utils.s(_this.isoWeek(), match === 'W' ? 1 : 2, '0');\n\n case 'k':\n case 'kk':\n return utils.s(String(_this.$H === 0 ? 24 : _this.$H), match === 'k' ? 1 : 2, '0');\n\n case 'X':\n return Math.floor(_this.$d.getTime() / 1000);\n\n case 'x':\n return _this.$d.getTime();\n\n case 'z':\n return \"[\" + _this.offsetName() + \"]\";\n\n case 'zzz':\n return \"[\" + _this.offsetName('long') + \"]\";\n\n default:\n return match;\n }\n });\n return oldFormat.bind(this)(result);\n };\n});","import { D, W, Y } from '../../constant';\nvar isoWeekPrettyUnit = 'isoweek';\nexport default (function (o, c, d) {\n var getYearFirstThursday = function getYearFirstThursday(year, isUtc) {\n var yearFirstDay = (isUtc ? d.utc : d)().year(year).startOf(Y);\n var addDiffDays = 4 - yearFirstDay.isoWeekday();\n\n if (yearFirstDay.isoWeekday() > 4) {\n addDiffDays += 7;\n }\n\n return yearFirstDay.add(addDiffDays, D);\n };\n\n var getCurrentWeekThursday = function getCurrentWeekThursday(ins) {\n return ins.add(4 - ins.isoWeekday(), D);\n };\n\n var proto = c.prototype;\n\n proto.isoWeekYear = function () {\n var nowWeekThursday = getCurrentWeekThursday(this);\n return nowWeekThursday.year();\n };\n\n proto.isoWeek = function (week) {\n if (!this.$utils().u(week)) {\n return this.add((week - this.isoWeek()) * 7, D);\n }\n\n var nowWeekThursday = getCurrentWeekThursday(this);\n var diffWeekThursday = getYearFirstThursday(this.isoWeekYear(), this.$u);\n return nowWeekThursday.diff(diffWeekThursday, W) + 1;\n };\n\n proto.isoWeekday = function (week) {\n if (!this.$utils().u(week)) {\n return this.day(this.day() % 7 ? week : week - 7);\n }\n\n return this.day() || 7;\n };\n\n var oldStartOf = proto.startOf;\n\n proto.startOf = function (units, startOf) {\n var utils = this.$utils();\n var isStartOf = !utils.u(startOf) ? startOf : true;\n var unit = utils.p(units);\n\n if (unit === isoWeekPrettyUnit) {\n return isStartOf ? this.date(this.date() - (this.isoWeekday() - 1)).startOf('day') : this.date(this.date() - 1 - (this.isoWeekday() - 1) + 7).endOf('day');\n }\n\n return oldStartOf.bind(this)(units, startOf);\n };\n});","import dayjs from 'dayjs/esm';\nimport advancedFormat from 'dayjs/esm/plugin/advancedFormat';\nimport isoWeek from 'dayjs/esm/plugin/isoWeek';\n\nimport type { TemporalGranularity } from '../types';\n\ndayjs.extend(isoWeek);\ndayjs.extend(advancedFormat);\n\n/**\n * https://day.js.org/docs/en/plugin/advanced-format\n */\nconst FORMAT_ISO_WEEK_YEAR_WEEK = 'GGGG-[W]WW';\n\nexport class TemporalCache {\n private yearMonthDayCache = new Map<string, YearMonthDayClass>();\n private yearWeekCache = new Map<string, YearWeekClass>();\n private yearMonthCache = new Map<string, YearMonthClass>();\n private yearCache = new Map<string, YearClass>();\n\n private constructor() {}\n\n getYearMonthDay(s: string): YearMonthDayClass {\n if (!this.yearMonthDayCache.has(s)) {\n this.yearMonthDayCache.set(s, YearMonthDayClass.parse(s, this));\n }\n return this.yearMonthDayCache.get(s)!;\n }\n\n getYearMonth(s: string): YearMonthClass {\n if (!this.yearMonthCache.has(s)) {\n this.yearMonthCache.set(s, YearMonthClass.parse(s, this));\n }\n return this.yearMonthCache.get(s)!;\n }\n\n getYearWeek(s: string): YearWeekClass {\n if (!this.yearWeekCache.has(s)) {\n this.yearWeekCache.set(s, YearWeekClass.parse(s, this));\n }\n return this.yearWeekCache.get(s)!;\n }\n\n getYear(s: string): YearClass {\n if (!this.yearCache.has(s)) {\n this.yearCache.set(s, YearClass.parse(s, this));\n }\n return this.yearCache.get(s)!;\n }\n\n private static instance = new TemporalCache();\n\n static getInstance(): TemporalCache {\n return this.instance;\n }\n}\n\ninterface YearMonthDay {\n type: 'YearMonthDay';\n yearNumber: number;\n monthNumber: number;\n dayNumber: number;\n dateString: string;\n}\n\nexport class YearMonthDayClass implements YearMonthDay {\n readonly type = 'YearMonthDay';\n readonly date;\n readonly dayjs;\n readonly dateString;\n\n constructor(\n readonly yearNumber: number,\n readonly monthNumber: number,\n readonly dayNumber: number,\n readonly cache: TemporalCache,\n ) {\n this.date = new Date(this.yearNumber, this.monthNumber - 1, this.dayNumber);\n this.dayjs = dayjs(this.date);\n this.dateString = this.toString();\n }\n\n get text(): string {\n return this.dayjs.format('YYYY-MM-DD');\n }\n\n toString(): string {\n return this.text;\n }\n\n englishName(): string {\n return this.dayjs.format('dddd, MMMM D, YYYY');\n }\n\n get firstDay(): YearMonthDayClass {\n return this;\n }\n\n get lastDay(): YearMonthDayClass {\n return this;\n }\n\n get year(): YearClass {\n return this.cache.getYear(`${this.yearNumber}`);\n }\n\n get month(): YearMonthClass {\n return this.cache.getYearMonth(this.dayjs.format('YYYY-MM'));\n }\n\n get week(): YearWeekClass {\n return this.cache.getYearWeek(this.dayjs.format(FORMAT_ISO_WEEK_YEAR_WEEK));\n }\n\n addDays(days: number): YearMonthDayClass {\n const date = this.dayjs.add(days, 'day');\n const s = date.format('YYYY-MM-DD');\n return this.cache.getYearMonthDay(s);\n }\n\n minus(other: YearMonthDayClass): number {\n return this.dayjs.diff(other.dayjs, 'day');\n }\n\n static parse(s: string, cache: TemporalCache): YearMonthDayClass {\n const [year, month, day] = s.split('-').map((s) => parseInt(s, 10));\n return new YearMonthDayClass(year, month, day, cache);\n }\n}\n\ninterface YearWeek {\n type: 'YearWeek';\n isoYearNumber: number;\n isoWeekNumber: number;\n dateString: string;\n}\n\nexport class YearWeekClass implements YearWeek {\n readonly type = 'YearWeek';\n readonly dateString;\n\n constructor(\n readonly isoYearNumber: number,\n readonly isoWeekNumber: number,\n readonly cache: TemporalCache,\n ) {\n this.dateString = this.toString();\n }\n\n get text(): string {\n return this.firstDay.dayjs.format(FORMAT_ISO_WEEK_YEAR_WEEK);\n }\n\n toString(): string {\n return this.text;\n }\n\n englishName(): string {\n return `Week ${this.isoWeekNumber}, ${this.isoYearNumber}`;\n }\n\n get firstDay(): YearMonthDayClass {\n // \"The first week of the year, hence, always contains 4 January.\" https://en.wikipedia.org/wiki/ISO_week_date\n const firstDay = dayjs()\n .year(this.isoYearNumber)\n .month(1)\n .date(4)\n .isoWeek(this.isoWeekNumber)\n .startOf('isoWeek');\n return this.cache.getYearMonthDay(firstDay.format('YYYY-MM-DD'));\n }\n\n get lastDay(): YearMonthDayClass {\n const lastDay = this.firstDay.dayjs.add(6, 'days');\n return this.cache.getYearMonthDay(lastDay.format('YYYY-MM-DD'));\n }\n\n get year(): YearClass {\n return this.cache.getYear(`${this.isoYearNumber}`);\n }\n\n addWeeks(weeks: number): YearWeekClass {\n const date = this.firstDay.dayjs.add(weeks, 'week');\n const s = date.format(FORMAT_ISO_WEEK_YEAR_WEEK);\n return this.cache.getYearWeek(s);\n }\n\n minus(other: YearWeekClass): number {\n return this.firstDay.dayjs.diff(other.firstDay.dayjs, 'week');\n }\n\n static parse(s: string, cache: TemporalCache): YearWeekClass {\n const [year, week] = s.split('-W').map((s) => parseInt(s, 10));\n return new YearWeekClass(year, week, cache);\n }\n}\n\ninterface YearMonth {\n type: 'YearMonth';\n yearNumber: number;\n monthNumber: number;\n dateString: string;\n}\n\nexport class YearMonthClass implements YearMonth {\n readonly type = 'YearMonth';\n readonly dateString;\n\n constructor(\n readonly yearNumber: number,\n readonly monthNumber: number,\n readonly cache: TemporalCache,\n ) {\n this.dateString = this.toString();\n }\n\n get text(): string {\n return this.firstDay.dayjs.format('YYYY-MM');\n }\n\n toString(): string {\n return this.text;\n }\n\n englishName(): string {\n return `${monthName(this.monthNumber)} ${this.yearNumber}`;\n }\n\n get firstDay(): YearMonthDayClass {\n return this.cache.getYearMonthDay(dayjs(`${this.yearNumber}-${this.monthNumber}-01`).format('YYYY-MM-DD'));\n }\n\n get lastDay(): YearMonthDayClass {\n return this.cache.getYearMonthDay(\n dayjs(`${this.yearNumber}-${this.monthNumber}-01`).endOf('month').format('YYYY-MM-DD'),\n );\n }\n\n get year(): YearClass {\n return this.cache.getYear(`${this.yearNumber}`);\n }\n\n addMonths(months: number): YearMonthClass {\n const date = this.firstDay.dayjs.add(months, 'month');\n const s = date.format('YYYY-MM');\n return this.cache.getYearMonth(s);\n }\n\n minus(other: YearMonthClass): number {\n return this.firstDay.dayjs.diff(other.firstDay.dayjs, 'month');\n }\n\n static parse(s: string, cache: TemporalCache): YearMonthClass {\n const [year, month] = s.split('-').map((s) => parseInt(s, 10));\n return new YearMonthClass(year, month, cache);\n }\n}\n\ninterface Year {\n type: 'Year';\n year: number;\n dateString: string;\n}\n\nexport class YearClass implements Year {\n readonly type = 'Year';\n readonly dateString;\n\n constructor(\n readonly year: number,\n readonly cache: TemporalCache,\n ) {\n this.dateString = this.toString();\n }\n\n get text(): string {\n return this.firstDay.dayjs.format('YYYY');\n }\n\n toString(): string {\n return this.text;\n }\n\n englishName(): string {\n return this.year.toString();\n }\n\n get firstMonth(): YearMonthClass {\n return this.cache.getYearMonth(`${this.year}-01`);\n }\n\n get lastMonth(): YearMonthClass {\n return this.cache.getYearMonth(`${this.year}-12`);\n }\n\n get firstDay(): YearMonthDayClass {\n return this.firstMonth.firstDay;\n }\n\n get lastDay(): YearMonthDayClass {\n return this.lastMonth.lastDay;\n }\n\n addYears(years: number): YearClass {\n const date = this.firstDay.dayjs.add(years, 'year');\n const s = date.format('YYYY');\n return this.cache.getYear(s);\n }\n\n minus(other: YearClass): number {\n return this.firstDay.dayjs.diff(other.firstDay.dayjs, 'year');\n }\n\n static parse(s: string, cache: TemporalCache): YearClass {\n const year = parseInt(s, 10);\n return new YearClass(year, cache);\n }\n}\n\nfunction monthName(month: number): string {\n return dayjs()\n .month(month - 1)\n .format('MMMM');\n}\n\nexport type TemporalClass = YearMonthDayClass | YearWeekClass | YearMonthClass | YearClass;\nexport type Temporal = YearMonthDay | YearWeek | YearMonth | Year;\n\nexport function toTemporalClass(temporal: Temporal) {\n switch (temporal.type) {\n case 'YearMonthDay':\n return new YearMonthDayClass(\n temporal.yearNumber,\n temporal.monthNumber,\n temporal.dayNumber,\n TemporalCache.getInstance(),\n );\n case 'YearWeek':\n return new YearWeekClass(temporal.isoYearNumber, temporal.isoWeekNumber, TemporalCache.getInstance());\n case 'YearMonth':\n return new YearMonthClass(temporal.yearNumber, temporal.monthNumber, TemporalCache.getInstance());\n case 'Year':\n return new YearClass(temporal.year, TemporalCache.getInstance());\n }\n}\n\nexport function toTemporal(temporalClass: TemporalClass): Temporal {\n switch (temporalClass.type) {\n case 'YearMonthDay':\n return {\n type: 'YearMonthDay',\n yearNumber: temporalClass.yearNumber,\n monthNumber: temporalClass.monthNumber,\n dayNumber: temporalClass.dayNumber,\n dateString: temporalClass.dateString,\n };\n case 'YearWeek':\n return {\n type: 'YearWeek',\n isoYearNumber: temporalClass.isoYearNumber,\n isoWeekNumber: temporalClass.isoWeekNumber,\n dateString: temporalClass.dateString,\n };\n case 'YearMonth':\n return {\n type: 'YearMonth',\n yearNumber: temporalClass.yearNumber,\n monthNumber: temporalClass.monthNumber,\n dateString: temporalClass.dateString,\n };\n case 'Year':\n return {\n type: 'Year',\n year: temporalClass.year,\n dateString: temporalClass.dateString,\n };\n }\n}\n\nexport function generateAllDaysInRange(start: YearMonthDayClass, end: YearMonthDayClass): YearMonthDayClass[] {\n const days = [];\n const daysInBetween = end.minus(start);\n for (let i = 0; i <= daysInBetween; i++) {\n days.push(start.addDays(i));\n }\n return days;\n}\n\nexport function generateAllWeeksInRange(start: YearWeekClass, end: YearWeekClass): YearWeekClass[] {\n const weeks = [];\n const weeksInBetween = end.minus(start);\n for (let i = 0; i <= weeksInBetween; i++) {\n weeks.push(start.addWeeks(i));\n }\n return weeks;\n}\n\nexport function generateAllMonthsInRange(start: YearMonthClass, end: YearMonthClass): YearMonthClass[] {\n const months = [];\n const monthsInBetween = end.minus(start);\n for (let i = 0; i <= monthsInBetween; i++) {\n months.push(start.addMonths(i));\n }\n return months;\n}\n\nexport function generateAllYearsInRange(start: YearClass, end: YearClass): YearClass[] {\n const years = [];\n const yearsInBetween = end.minus(start);\n for (let i = 0; i <= yearsInBetween; i++) {\n years.push(start.addYears(i));\n }\n return years;\n}\n\nexport function generateAllInRange(start: TemporalClass | null, end: TemporalClass | null): TemporalClass[] {\n if (start === null || end === null) {\n return [];\n }\n if (start instanceof YearMonthDayClass && end instanceof YearMonthDayClass) {\n return generateAllDaysInRange(start, end);\n }\n if (start instanceof YearWeekClass && end instanceof YearWeekClass) {\n return generateAllWeeksInRange(start, end);\n }\n if (start instanceof YearMonthClass && end instanceof YearMonthClass) {\n return generateAllMonthsInRange(start, end);\n }\n if (start instanceof YearClass && end instanceof YearClass) {\n return generateAllYearsInRange(start, end);\n }\n throw new Error(`Invalid arguments: start and end must be of the same type: ${start}, ${end}`);\n}\n\nexport function minusTemporal(a: TemporalClass, b: TemporalClass): number {\n if (a instanceof YearMonthDayClass && b instanceof YearMonthDayClass) {\n return a.minus(b);\n }\n if (a instanceof YearWeekClass && b instanceof YearWeekClass) {\n return a.minus(b);\n }\n if (a instanceof YearMonthClass && b instanceof YearMonthClass) {\n return a.minus(b);\n }\n if (a instanceof YearClass && b instanceof YearClass) {\n return a.minus(b);\n }\n throw new Error(`Cannot compare ${a} and ${b}`);\n}\n\nexport function compareTemporal(a: TemporalClass | null, b: TemporalClass | null): number {\n if (a === null) {\n return 1;\n }\n if (b === null) {\n return -1;\n }\n const diff = minusTemporal(a, b);\n if (diff < 0) {\n return -1;\n }\n if (diff > 0) {\n return 1;\n }\n return 0;\n}\n\nexport function getMinMaxTemporal<T extends TemporalClass>(values: Iterable<T | null>) {\n let min: T | null = null;\n let max: T | null = null;\n for (const value of values) {\n if (value === null) {\n continue;\n }\n if (min === null || compareTemporal(value, min) < 0) {\n min = value;\n }\n if (max === null || compareTemporal(value, max) > 0) {\n max = value;\n }\n }\n if (min === null || max === null) {\n return { min: null, max: null };\n }\n return { min, max };\n}\n\nexport function addUnit(temporal: TemporalClass, amount: number): TemporalClass {\n if (temporal instanceof YearMonthDayClass) {\n return temporal.addDays(amount);\n }\n if (temporal instanceof YearWeekClass) {\n return temporal.addWeeks(amount);\n }\n if (temporal instanceof YearMonthClass) {\n return temporal.addMonths(amount);\n }\n if (temporal instanceof YearClass) {\n return temporal.addYears(amount);\n }\n throw new Error(`Invalid argument: ${temporal}`);\n}\n\nexport function parseDateStringToTemporal(date: string, granularity: TemporalGranularity) {\n const cache = TemporalCache.getInstance();\n const day = cache.getYearMonthDay(date);\n switch (granularity) {\n case 'day':\n return day;\n case 'week':\n return day.week;\n case 'month':\n return day.month;\n case 'year':\n return day.year;\n }\n}\n\nexport function dateRangeCompare(a: { dateRange: TemporalClass | null }, b: { dateRange: TemporalClass | null }) {\n if (a.dateRange === null) {\n return 1;\n }\n if (b.dateRange === null) {\n return -1;\n }\n return compareTemporal(a.dateRange, b.dateRange);\n}\n","import { FetchAggregatedOperator } from '../operator/FetchAggregatedOperator';\nimport { FillMissingOperator } from '../operator/FillMissingOperator';\nimport { GroupByAndSumOperator } from '../operator/GroupByAndSumOperator';\nimport { MapOperator } from '../operator/MapOperator';\nimport { RenameFieldOperator } from '../operator/RenameFieldOperator';\nimport { SlidingOperator } from '../operator/SlidingOperator';\nimport { SortOperator } from '../operator/SortOperator';\nimport type { LapisFilter, TemporalGranularity } from '../types';\nimport {\n dateRangeCompare,\n generateAllInRange,\n getMinMaxTemporal,\n parseDateStringToTemporal,\n type TemporalClass,\n} from '../utils/temporalClass';\n\nexport function queryAggregatedDataOverTime(\n filter: LapisFilter,\n granularity: TemporalGranularity,\n smoothingWindow: number,\n lapisDateField: string,\n) {\n const fetchData = new FetchAggregatedOperator<Record<string, string | null>>(filter, [lapisDateField]);\n const dataWithFixedDateKey = new RenameFieldOperator(fetchData, lapisDateField, 'date');\n const mapData = new MapOperator(dataWithFixedDateKey, (d) => mapDateToGranularityRange(d, granularity));\n const groupByData = new GroupByAndSumOperator(mapData, 'dateRange', 'count');\n const fillData = new FillMissingOperator(\n groupByData,\n 'dateRange',\n getMinMaxTemporal,\n generateAllInRange,\n (key) => ({ dateRange: key, count: 0 }),\n );\n const sortData = new SortOperator(fillData, dateRangeCompare);\n\n return smoothingWindow >= 1 ? new SlidingOperator(sortData, smoothingWindow, averageSmoothing) : sortData;\n}\n\nexport function mapDateToGranularityRange(\n data: { date: string | null; count: number },\n granularity: TemporalGranularity,\n) {\n return {\n dateRange: data.date === null ? null : parseDateStringToTemporal(data.date, granularity),\n count: data.count,\n };\n}\n\nfunction averageSmoothing(slidingWindow: { dateRange: TemporalClass | null; count: number }[]) {\n const average = slidingWindow.reduce((acc, curr) => acc + curr.count, 0) / slidingWindow.length;\n const centerIndex = Math.floor(slidingWindow.length / 2);\n return { dateRange: slidingWindow[centerIndex].dateRange, count: average };\n}\n","import { type SubstitutionOrDeletionOrInsertion, type SequenceType } from '../types';\n\nexport interface Mutation {\n readonly position: number;\n readonly code: string;\n readonly type: SubstitutionOrDeletionOrInsertion;\n readonly segment?: string;\n}\n\nexport interface MutationClass extends Mutation {\n equals(other: MutationClass): boolean;\n\n toString(): string;\n}\n\n// Allowed IUPAC characters: https://www.bioinformatics.org/sms/iupac.html\nconst nucleotideChars = 'ACGTRYKMSWBDHVN';\nconst aminoAcidChars = 'ACDEFGHIKLMNPQRSTVWY';\n\nfunction segmentPart(isOptional: boolean) {\n const segmentPart = `(?<segment>[A-Z0-9_-]+):`;\n if (isOptional) {\n return `(${segmentPart})?`;\n }\n return segmentPart;\n}\n\nfunction buildSubstitutionRegex(type: 'nucleotide' | 'aminoAcid', segmentPartIsOptional: boolean) {\n const chars = type === 'nucleotide' ? nucleotideChars : aminoAcidChars;\n\n return new RegExp(\n `^${segmentPart(segmentPartIsOptional)}` +\n `(?<valueAtReference>[${chars}*])?` +\n `(?<position>\\\\d+)` +\n `(?<substitutionValue>[${chars}.*])?$`,\n 'i',\n );\n}\n\nconst nucleotideSubstitutionRegex = buildSubstitutionRegex('nucleotide', true);\nconst aminoAcidSubstitutionRegex = buildSubstitutionRegex('aminoAcid', false);\nconst aminoAcidSubstitutionWithoutSegmentRegex = buildSubstitutionRegex('aminoAcid', true);\n\nexport interface Substitution extends Mutation {\n type: 'substitution';\n valueAtReference: string | undefined;\n substitutionValue: string | undefined;\n}\n\nexport class SubstitutionClass implements MutationClass, Substitution {\n readonly code;\n readonly type = 'substitution';\n\n constructor(\n readonly segment: string | undefined,\n readonly valueAtReference: string | undefined,\n readonly substitutionValue: string | undefined,\n readonly position: number,\n ) {\n const segmentString = this.segment ? `${this.segment}:` : '';\n const valueAtReferenceString = this.valueAtReference ?? '';\n const substitutionValueString = this.substitutionValue ?? '';\n this.code = `${segmentString}${valueAtReferenceString}${this.position}${substitutionValueString}`;\n }\n\n equals(other: MutationClass): boolean {\n if (!(other instanceof SubstitutionClass)) {\n return false;\n }\n return (\n this.segment === other.segment &&\n this.valueAtReference === other.valueAtReference &&\n this.substitutionValue === other.substitutionValue &&\n this.position === other.position\n );\n }\n\n toString() {\n return this.code;\n }\n\n static parse(mutationStr: string, segmentIsOptional: boolean = false): SubstitutionClass | null {\n const matchNucleotide = nucleotideSubstitutionRegex.exec(mutationStr);\n const matchAminoAcid = aminoAcidSubstitutionRegex.exec(mutationStr);\n const matchAminAcidWithoutSegment = segmentIsOptional\n ? aminoAcidSubstitutionWithoutSegmentRegex.exec(mutationStr)\n : undefined;\n const match = matchNucleotide ?? matchAminoAcid ?? matchAminAcidWithoutSegment;\n if (match?.groups === undefined) {\n return null;\n }\n return new SubstitutionClass(\n match.groups.segment,\n match.groups.valueAtReference,\n match.groups.substitutionValue,\n parseInt(match.groups.position, 10),\n );\n }\n}\n\nfunction buildDeletionRegex(type: 'nucleotide' | 'aminoAcid') {\n const chars = type === 'nucleotide' ? nucleotideChars : aminoAcidChars;\n\n return new RegExp(\n `^${segmentPart(type === 'nucleotide')}` + `(?<valueAtReference>[${chars}*])?` + `(?<position>\\\\d+)` + `(-)$`,\n 'i',\n );\n}\n\nconst nucleotideDeletionRegex = buildDeletionRegex('nucleotide');\nconst aminoAcidDeletionRegex = buildDeletionRegex('aminoAcid');\n\nexport interface Deletion extends Mutation {\n type: 'deletion';\n valueAtReference: string | undefined;\n}\n\nexport class DeletionClass implements MutationClass, Deletion {\n readonly code;\n readonly type = 'deletion';\n\n constructor(\n readonly segment: string | undefined,\n readonly valueAtReference: string | undefined,\n readonly position: number,\n ) {\n const segmentString = this.segment ? `${this.segment}:` : '';\n const valueAtReferenceString = this.valueAtReference ?? '';\n this.code = `${segmentString}${valueAtReferenceString}${this.position}-`;\n }\n\n equals(other: MutationClass): boolean {\n if (!(other instanceof DeletionClass)) {\n return false;\n }\n return (\n this.segment === other.segment &&\n this.valueAtReference === other.valueAtReference &&\n this.position === other.position\n );\n }\n\n toString() {\n return this.code;\n }\n\n static parse(mutationStr: string): DeletionClass | null {\n const matchNucleotide = nucleotideDeletionRegex.exec(mutationStr);\n const matchAminoAcid = aminoAcidDeletionRegex.exec(mutationStr);\n const match = matchNucleotide ?? matchAminoAcid;\n if (match?.groups === undefined) {\n return null;\n }\n\n return new DeletionClass(\n match.groups.segment,\n match.groups.valueAtReference,\n parseInt(match.groups.position, 10),\n );\n }\n}\n\nfunction buildInsertionRegex(type: 'nucleotide' | 'aminoAcid') {\n const chars = type === 'nucleotide' ? nucleotideChars : aminoAcidChars;\n\n const wildcardToken = `(?:\\\\.\\\\*)`;\n\n return new RegExp(\n `^ins_${segmentPart(type === 'nucleotide')}(?<position>\\\\d+):(?<insertedSymbols>(?:[${chars}?*]|${wildcardToken})+)$`,\n 'i',\n );\n}\n\nconst nucleotideInsertionRegex = buildInsertionRegex('nucleotide');\nconst aminoAcidInsertionRegex = buildInsertionRegex('aminoAcid');\n\nexport interface Insertion extends Mutation {\n type: 'insertion';\n insertedSymbols: string;\n}\n\nexport class InsertionClass implements MutationClass {\n readonly code;\n readonly type = 'insertion';\n\n constructor(\n readonly segment: string | undefined,\n readonly position: number,\n readonly insertedSymbols: string,\n ) {\n this.code = `ins_${this.segment ? `${this.segment}:` : ''}${this.position}:${this.insertedSymbols}`;\n }\n\n equals(other: MutationClass): boolean {\n if (!(other instanceof InsertionClass)) {\n return false;\n }\n return (\n this.segment === other.segment &&\n this.insertedSymbols === other.insertedSymbols &&\n this.position === other.position\n );\n }\n\n toString() {\n return this.code;\n }\n\n static parse(mutationStr: string): InsertionClass | null {\n const matchNucleotide = nucleotideInsertionRegex.exec(mutationStr);\n const matchAminoAcid = aminoAcidInsertionRegex.exec(mutationStr);\n const match = matchNucleotide ?? matchAminoAcid;\n if (match?.groups === undefined) {\n return null;\n }\n\n return new InsertionClass(\n match.groups.segment,\n parseInt(match.groups.position, 10),\n match.groups.insertedSymbols,\n );\n }\n}\n\nexport function toMutation(\n mutationClass: SubstitutionClass | DeletionClass | InsertionClass,\n): Substitution | Deletion | Insertion {\n if (mutationClass.type === 'insertion') {\n return {\n type: 'insertion' as const,\n code: mutationClass.code,\n segment: mutationClass.segment,\n position: mutationClass.position,\n insertedSymbols: mutationClass.insertedSymbols,\n };\n }\n return toSubstitutionOrDeletion(mutationClass);\n}\n\nexport function toSubstitutionOrDeletion(mutation: SubstitutionClass | DeletionClass): Substitution | Deletion {\n switch (mutation.type) {\n case 'substitution':\n return {\n type: 'substitution' as const,\n code: mutation.code,\n segment: mutation.segment,\n position: mutation.position,\n valueAtReference: mutation.valueAtReference,\n substitutionValue: mutation.substitutionValue,\n };\n case 'deletion':\n return {\n type: 'deletion' as const,\n code: mutation.code,\n segment: mutation.segment,\n position: mutation.position,\n valueAtReference: mutation.valueAtReference,\n };\n }\n}\n\nexport const bases: Record<SequenceType, string[]> = {\n nucleotide: ['A', 'C', 'G', 'T', '-'],\n 'amino acid': [\n 'I',\n 'L',\n 'V',\n 'F',\n 'M',\n 'C',\n 'A',\n 'G',\n 'P',\n 'T',\n 'S',\n 'Y',\n 'W',\n 'Q',\n 'N',\n 'H',\n 'E',\n 'D',\n 'K',\n 'R',\n '-',\n ],\n};\n","import { type Dataset } from './Dataset';\nimport { type Operator } from './Operator';\nimport { fetchSubstitutionsOrDeletions } from '../lapisApi/lapisApi';\nimport { type LapisFilter, type SequenceType, type SubstitutionOrDeletionEntry } from '../types';\nimport { DeletionClass, SubstitutionClass } from '../utils/mutations';\n\nexport class FetchSubstitutionsOrDeletionsOperator implements Operator<SubstitutionOrDeletionEntry> {\n constructor(\n private filter: LapisFilter,\n private sequenceType: SequenceType,\n private minProportion?: number,\n ) {}\n\n async evaluate(lapis: string, signal?: AbortSignal): Promise<Dataset<SubstitutionOrDeletionEntry>> {\n const mutations = await this.fetchMutations(lapis, signal);\n\n const content: SubstitutionOrDeletionEntry[] = mutations.map(\n ({ count, proportion, mutationFrom, mutationTo, position, sequenceName }) => {\n if (mutationTo === '-') {\n return {\n type: 'deletion',\n mutation: new DeletionClass(sequenceName ?? undefined, mutationFrom, position),\n count,\n proportion,\n };\n }\n return {\n type: 'substitution',\n mutation: new SubstitutionClass(sequenceName ?? undefined, mutationFrom, mutationTo, position),\n count,\n proportion,\n };\n },\n );\n\n return { content };\n }\n\n private async fetchMutations(lapis: string, signal?: AbortSignal) {\n const filter = {\n ...this.filter,\n minProportion: this.minProportion,\n };\n\n return fetchSubstitutionsOrDeletions(lapis, filter, this.sequenceType, signal).then(\n (response) => response.data,\n );\n }\n}\n","var n,l,u,t,i,r,o,e,f,c,s,a,h,p={},v=[],y=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,w=Array.isArray;function d(n,l){for(var u in l)n[u]=l[u];return n}function g(n){n&&n.parentNode&&n.parentNode.removeChild(n)}function _(l,u,t){var i,r,o,e={};for(o in u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:e[o]=u[o];if(arguments.length>2&&(e.children=arguments.length>3?n.call(arguments,2):t),\"function\"==typeof l&&null!=l.defaultProps)for(o in l.defaultProps)void 0===e[o]&&(e[o]=l.defaultProps[o]);return m(l,e,i,r,null)}function m(n,t,i,r,o){var e={type:n,props:t,key:i,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:null==o?++u:o,__i:-1,__u:0};return null==o&&null!=l.vnode&&l.vnode(e),e}function b(){return{current:null}}function k(n){return n.children}function x(n,l){this.props=n,this.context=l}function S(n,l){if(null==l)return n.__?S(n.__,n.__i+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return\"function\"==typeof n.type?S(n):null}function C(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return C(n)}}function M(n){(!n.__d&&(n.__d=!0)&&i.push(n)&&!$.__r++||r!=l.debounceRendering)&&((r=l.debounceRendering)||o)($)}function $(){for(var n,u,t,r,o,f,c,s=1;i.length;)i.length>s&&i.sort(e),n=i.shift(),s=i.length,n.__d&&(t=void 0,o=(r=(u=n).__v).__e,f=[],c=[],u.__P&&((t=d({},r)).__v=r.__v+1,l.vnode&&l.vnode(t),O(u.__P,t,r,u.__n,u.__P.namespaceURI,32&r.__u?[o]:null,f,null==o?S(r):o,!!(32&r.__u),c),t.__v=r.__v,t.__.__k[t.__i]=t,z(f,t,c),t.__e!=o&&C(t)));$.__r=0}function I(n,l,u,t,i,r,o,e,f,c,s){var a,h,y,w,d,g,_=t&&t.__k||v,m=l.length;for(f=P(u,l,_,f,m),a=0;a<m;a++)null!=(y=u.__k[a])&&(h=-1==y.__i?p:_[y.__i]||p,y.__i=a,g=O(n,y,h,i,r,o,e,f,c,s),w=y.__e,y.ref&&h.ref!=y.ref&&(h.ref&&q(h.ref,null,y),s.push(y.ref,y.__c||w,y)),null==d&&null!=w&&(d=w),4&y.__u||h.__k===y.__k?f=A(y,f,n):\"function\"==typeof y.type&&void 0!==g?f=g:w&&(f=w.nextSibling),y.__u&=-7);return u.__e=d,f}function P(n,l,u,t,i){var r,o,e,f,c,s=u.length,a=s,h=0;for(n.__k=new Array(i),r=0;r<i;r++)null!=(o=l[r])&&\"boolean\"!=typeof o&&\"function\"!=typeof o?(f=r+h,(o=n.__k[r]=\"string\"==typeof o||\"number\"==typeof o||\"bigint\"==typeof o||o.constructor==String?m(null,o,null,null,null):w(o)?m(k,{children:o},null,null,null):null==o.constructor&&o.__b>0?m(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):o).__=n,o.__b=n.__b+1,e=null,-1!=(c=o.__i=L(o,u,f,a))&&(a--,(e=u[c])&&(e.__u|=2)),null==e||null==e.__v?(-1==c&&(i>s?h--:i<s&&h++),\"function\"!=typeof o.type&&(o.__u|=4)):c!=f&&(c==f-1?h--:c==f+1?h++:(c>f?h--:h++,o.__u|=4))):n.__k[r]=null;if(a)for(r=0;r<s;r++)null!=(e=u[r])&&0==(2&e.__u)&&(e.__e==t&&(t=S(e)),B(e,e));return t}function A(n,l,u){var t,i;if(\"function\"==typeof n.type){for(t=n.__k,i=0;t&&i<t.length;i++)t[i]&&(t[i].__=n,l=A(t[i],l,u));return l}n.__e!=l&&(l&&n.type&&!u.contains(l)&&(l=S(n)),u.insertBefore(n.__e,l||null),l=n.__e);do{l=l&&l.nextSibling}while(null!=l&&8==l.nodeType);return l}function H(n,l){return l=l||[],null==n||\"boolean\"==typeof n||(w(n)?n.some(function(n){H(n,l)}):l.push(n)),l}function L(n,l,u,t){var i,r,o=n.key,e=n.type,f=l[u];if(null===f&&null==n.key||f&&o==f.key&&e==f.type&&0==(2&f.__u))return u;if(t>(null!=f&&0==(2&f.__u)?1:0))for(i=u-1,r=u+1;i>=0||r<l.length;){if(i>=0){if((f=l[i])&&0==(2&f.__u)&&o==f.key&&e==f.type)return i;i--}if(r<l.length){if((f=l[r])&&0==(2&f.__u)&&o==f.key&&e==f.type)return r;r++}}return-1}function T(n,l,u){\"-\"==l[0]?n.setProperty(l,null==u?\"\":u):n[l]=null==u?\"\":\"number\"!=typeof u||y.test(l)?u:u+\"px\"}function j(n,l,u,t,i){var r,o;n:if(\"style\"==l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof t&&(n.style.cssText=t=\"\"),t)for(l in t)u&&l in u||T(n.style,l,\"\");if(u)for(l in u)t&&u[l]==t[l]||T(n.style,l,u[l])}else if(\"o\"==l[0]&&\"n\"==l[1])r=l!=(l=l.replace(f,\"$1\")),o=l.toLowerCase(),l=o in n||\"onFocusOut\"==l||\"onFocusIn\"==l?o.slice(2):l.slice(2),n.l||(n.l={}),n.l[l+r]=u,u?t?u.u=t.u:(u.u=c,n.addEventListener(l,r?a:s,r)):n.removeEventListener(l,r?a:s,r);else{if(\"http://www.w3.org/2000/svg\"==i)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"width\"!=l&&\"height\"!=l&&\"href\"!=l&&\"list\"!=l&&\"form\"!=l&&\"tabIndex\"!=l&&\"download\"!=l&&\"rowSpan\"!=l&&\"colSpan\"!=l&&\"role\"!=l&&\"popover\"!=l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null==u||!1===u&&\"-\"!=l[4]?n.removeAttribute(l):n.setAttribute(l,\"popover\"==l&&1==u?\"\":u))}}function F(n){return function(u){if(this.l){var t=this.l[u.type+n];if(null==u.t)u.t=c++;else if(u.t<t.u)return;return t(l.event?l.event(u):u)}}}function O(n,u,t,i,r,o,e,f,c,s){var a,h,p,v,y,_,m,b,S,C,M,$,P,A,H,L,T,j=u.type;if(null!=u.constructor)return null;128&t.__u&&(c=!!(32&t.__u),o=[f=u.__e=t.__e]),(a=l.__b)&&a(u);n:if(\"function\"==typeof j)try{if(b=u.props,S=\"prototype\"in j&&j.prototype.render,C=(a=j.contextType)&&i[a.__c],M=a?C?C.props.value:a.__:i,t.__c?m=(h=u.__c=t.__c).__=h.__E:(S?u.__c=h=new j(b,M):(u.__c=h=new x(b,M),h.constructor=j,h.render=D),C&&C.sub(h),h.props=b,h.state||(h.state={}),h.context=M,h.__n=i,p=h.__d=!0,h.__h=[],h._sb=[]),S&&null==h.__s&&(h.__s=h.state),S&&null!=j.getDerivedStateFromProps&&(h.__s==h.state&&(h.__s=d({},h.__s)),d(h.__s,j.getDerivedStateFromProps(b,h.__s))),v=h.props,y=h.state,h.__v=u,p)S&&null==j.getDerivedStateFromProps&&null!=h.componentWillMount&&h.componentWillMount(),S&&null!=h.componentDidMount&&h.__h.push(h.componentDidMount);else{if(S&&null==j.getDerivedStateFromProps&&b!==v&&null!=h.componentWillReceiveProps&&h.componentWillReceiveProps(b,M),!h.__e&&null!=h.shouldComponentUpdate&&!1===h.shouldComponentUpdate(b,h.__s,M)||u.__v==t.__v){for(u.__v!=t.__v&&(h.props=b,h.state=h.__s,h.__d=!1),u.__e=t.__e,u.__k=t.__k,u.__k.some(function(n){n&&(n.__=u)}),$=0;$<h._sb.length;$++)h.__h.push(h._sb[$]);h._sb=[],h.__h.length&&e.push(h);break n}null!=h.componentWillUpdate&&h.componentWillUpdate(b,h.__s,M),S&&null!=h.componentDidUpdate&&h.__h.push(function(){h.componentDidUpdate(v,y,_)})}if(h.context=M,h.props=b,h.__P=n,h.__e=!1,P=l.__r,A=0,S){for(h.state=h.__s,h.__d=!1,P&&P(u),a=h.render(h.props,h.state,h.context),H=0;H<h._sb.length;H++)h.__h.push(h._sb[H]);h._sb=[]}else do{h.__d=!1,P&&P(u),a=h.render(h.props,h.state,h.context),h.state=h.__s}while(h.__d&&++A<25);h.state=h.__s,null!=h.getChildContext&&(i=d(d({},i),h.getChildContext())),S&&!p&&null!=h.getSnapshotBeforeUpdate&&(_=h.getSnapshotBeforeUpdate(v,y)),L=a,null!=a&&a.type===k&&null==a.key&&(L=N(a.props.children)),f=I(n,w(L)?L:[L],u,t,i,r,o,e,f,c,s),h.base=u.__e,u.__u&=-161,h.__h.length&&e.push(h),m&&(h.__E=h.__=null)}catch(n){if(u.__v=null,c||null!=o)if(n.then){for(u.__u|=c?160:128;f&&8==f.nodeType&&f.nextSibling;)f=f.nextSibling;o[o.indexOf(f)]=null,u.__e=f}else for(T=o.length;T--;)g(o[T]);else u.__e=t.__e,u.__k=t.__k;l.__e(n,u,t)}else null==o&&u.__v==t.__v?(u.__k=t.__k,u.__e=t.__e):f=u.__e=V(t.__e,u,t,i,r,o,e,c,s);return(a=l.diffed)&&a(u),128&u.__u?void 0:f}function z(n,u,t){for(var i=0;i<t.length;i++)q(t[i],t[++i],t[++i]);l.__c&&l.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u)})}catch(n){l.__e(n,u.__v)}})}function N(n){return\"object\"!=typeof n||null==n||n.__b&&n.__b>0?n:w(n)?n.map(N):d({},n)}function V(u,t,i,r,o,e,f,c,s){var a,h,v,y,d,_,m,b=i.props,k=t.props,x=t.type;if(\"svg\"==x?o=\"http://www.w3.org/2000/svg\":\"math\"==x?o=\"http://www.w3.org/1998/Math/MathML\":o||(o=\"http://www.w3.org/1999/xhtml\"),null!=e)for(a=0;a<e.length;a++)if((d=e[a])&&\"setAttribute\"in d==!!x&&(x?d.localName==x:3==d.nodeType)){u=d,e[a]=null;break}if(null==u){if(null==x)return document.createTextNode(k);u=document.createElementNS(o,x,k.is&&k),c&&(l.__m&&l.__m(t,e),c=!1),e=null}if(null==x)b===k||c&&u.data==k||(u.data=k);else{if(e=e&&n.call(u.childNodes),b=i.props||p,!c&&null!=e)for(b={},a=0;a<u.attributes.length;a++)b[(d=u.attributes[a]).name]=d.value;for(a in b)if(d=b[a],\"children\"==a);else if(\"dangerouslySetInnerHTML\"==a)v=d;else if(!(a in k)){if(\"value\"==a&&\"defaultValue\"in k||\"checked\"==a&&\"defaultChecked\"in k)continue;j(u,a,null,d,o)}for(a in k)d=k[a],\"children\"==a?y=d:\"dangerouslySetInnerHTML\"==a?h=d:\"value\"==a?_=d:\"checked\"==a?m=d:c&&\"function\"!=typeof d||b[a]===d||j(u,a,d,b[a],o);if(h)c||v&&(h.__html==v.__html||h.__html==u.innerHTML)||(u.innerHTML=h.__html),t.__k=[];else if(v&&(u.innerHTML=\"\"),I(\"template\"==t.type?u.content:u,w(y)?y:[y],t,i,r,\"foreignObject\"==x?\"http://www.w3.org/1999/xhtml\":o,e,f,e?e[0]:i.__k&&S(i,0),c,s),null!=e)for(a=e.length;a--;)g(e[a]);c||(a=\"value\",\"progress\"==x&&null==_?u.removeAttribute(\"value\"):null!=_&&(_!==u[a]||\"progress\"==x&&!_||\"option\"==x&&_!=b[a])&&j(u,a,_,b[a],o),a=\"checked\",null!=m&&m!=u[a]&&j(u,a,m,b[a],o))}return u}function q(n,u,t){try{if(\"function\"==typeof n){var i=\"function\"==typeof n.__u;i&&n.__u(),i&&null==u||(n.__u=n(u))}else n.current=u}catch(n){l.__e(n,t)}}function B(n,u,t){var i,r;if(l.unmount&&l.unmount(n),(i=n.ref)&&(i.current&&i.current!=n.__e||q(i,null,u)),null!=(i=n.__c)){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(n){l.__e(n,u)}i.base=i.__P=null}if(i=n.__k)for(r=0;r<i.length;r++)i[r]&&B(i[r],u,t||\"function\"!=typeof n.type);t||g(n.__e),n.__c=n.__=n.__e=void 0}function D(n,l,u){return this.constructor(n,u)}function E(u,t,i){var r,o,e,f;t==document&&(t=document.documentElement),l.__&&l.__(u,t),o=(r=\"function\"==typeof i)?null:i&&i.__k||t.__k,e=[],f=[],O(t,u=(!r&&i||t).__k=_(k,null,[u]),o||p,p,t.namespaceURI,!r&&i?[i]:o?null:t.firstChild?n.call(t.childNodes):null,e,!r&&i?i:o?o.__e:t.firstChild,r,f),z(e,u,f)}function G(n,l){E(n,l,G)}function J(l,u,t){var i,r,o,e,f=d({},l.props);for(o in l.type&&l.type.defaultProps&&(e=l.type.defaultProps),u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:f[o]=void 0===u[o]&&null!=e?e[o]:u[o];return arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),m(l.type,f,i||l.key,r||l.ref,null)}function K(n){function l(n){var u,t;return this.getChildContext||(u=new Set,(t={})[l.__c]=this,this.getChildContext=function(){return t},this.componentWillUnmount=function(){u=null},this.shouldComponentUpdate=function(n){this.props.value!=n.value&&u.forEach(function(n){n.__e=!0,M(n)})},this.sub=function(n){u.add(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u&&u.delete(n),l&&l.call(n)}}),n.children}return l.__c=\"__cC\"+h++,l.__=n,l.Provider=l.__l=(l.Consumer=function(n,l){return n.children(l)}).contextType=l,l}n=v.slice,l={__e:function(n,l,u,t){for(var i,r,o;l=l.__;)if((i=l.__c)&&!i.__)try{if((r=i.constructor)&&null!=r.getDerivedStateFromError&&(i.setState(r.getDerivedStateFromError(n)),o=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),o=i.__d),o)return i.__E=i}catch(l){n=l}throw n}},u=0,t=function(n){return null!=n&&null==n.constructor},x.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!=this.state?this.__s:this.__s=d({},this.state),\"function\"==typeof n&&(n=n(d({},u),this.props)),n&&d(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),M(this))},x.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),M(this))},x.prototype.render=k,i=[],o=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,e=function(n,l){return n.__v.__b-l.__v.__b},$.__r=0,f=/(PointerCapture)$|Capture$/i,c=0,s=F(!1),a=F(!0),h=0;export{x as Component,k as Fragment,J as cloneElement,K as createContext,_ as createElement,b as createRef,_ as h,G as hydrate,t as isValidElement,l as options,E as render,H as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","import{options as n}from\"preact\";var t,r,u,i,o=0,f=[],c=n,e=c.__b,a=c.__r,v=c.diffed,l=c.__c,m=c.unmount,s=c.__;function p(n,t){c.__h&&c.__h(r,n,o||t),o=0;var u=r.__H||(r.__H={__:[],__h:[]});return n>=u.__.length&&u.__.push({}),u.__[n]}function d(n){return o=1,h(D,n)}function h(n,u,i){var o=p(t++,2);if(o.t=n,!o.__c&&(o.__=[i?i(u):D(void 0,u),function(n){var t=o.__N?o.__N[0]:o.__[0],r=o.t(t,n);t!==r&&(o.__N=[r,o.__[1]],o.__c.setState({}))}],o.__c=r,!r.__f)){var f=function(n,t,r){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(n){return!!n.__c});if(u.every(function(n){return!n.__N}))return!c||c.call(this,n,t,r);var i=o.__c.props!==n;return u.forEach(function(n){if(n.__N){var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0)}}),c&&c.call(this,n,t,r)||i};r.__f=!0;var c=r.shouldComponentUpdate,e=r.componentWillUpdate;r.componentWillUpdate=function(n,t,r){if(this.__e){var u=c;c=void 0,f(n,t,r),c=u}e&&e.call(this,n,t,r)},r.shouldComponentUpdate=f}return o.__N||o.__}function y(n,u){var i=p(t++,3);!c.__s&&C(i.__H,u)&&(i.__=n,i.u=u,r.__H.__h.push(i))}function _(n,u){var i=p(t++,4);!c.__s&&C(i.__H,u)&&(i.__=n,i.u=u,r.__h.push(i))}function A(n){return o=5,T(function(){return{current:n}},[])}function F(n,t,r){o=6,_(function(){if(\"function\"==typeof n){var r=n(t());return function(){n(null),r&&\"function\"==typeof r&&r()}}if(n)return n.current=t(),function(){return n.current=null}},null==r?r:r.concat(n))}function T(n,r){var u=p(t++,7);return C(u.__H,r)&&(u.__=n(),u.__H=r,u.__h=n),u.__}function q(n,t){return o=8,T(function(){return n},t)}function x(n){var u=r.context[n.__c],i=p(t++,9);return i.c=n,u?(null==i.__&&(i.__=!0,u.sub(r)),u.props.value):n.__}function P(n,t){c.useDebugValue&&c.useDebugValue(t?t(n):n)}function b(n){var u=p(t++,10),i=d();return u.__=n,r.componentDidCatch||(r.componentDidCatch=function(n,t){u.__&&u.__(n,t),i[1](n)}),[i[0],function(){i[1](void 0)}]}function g(){var n=p(t++,11);if(!n.__){for(var u=r.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;var i=u.__m||(u.__m=[0,0]);n.__=\"P\"+i[0]+\"-\"+i[1]++}return n.__}function j(){for(var n;n=f.shift();)if(n.__P&&n.__H)try{n.__H.__h.forEach(z),n.__H.__h.forEach(B),n.__H.__h=[]}catch(t){n.__H.__h=[],c.__e(t,n.__v)}}c.__b=function(n){r=null,e&&e(n)},c.__=function(n,t){n&&t.__k&&t.__k.__m&&(n.__m=t.__k.__m),s&&s(n,t)},c.__r=function(n){a&&a(n),t=0;var i=(r=n.__c).__H;i&&(u===r?(i.__h=[],r.__h=[],i.__.forEach(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(i.__h.forEach(z),i.__h.forEach(B),i.__h=[],t=0)),u=r},c.diffed=function(n){v&&v(n);var t=n.__c;t&&t.__H&&(t.__H.__h.length&&(1!==f.push(t)&&i===c.requestAnimationFrame||((i=c.requestAnimationFrame)||w)(j)),t.__H.__.forEach(function(n){n.u&&(n.__H=n.u),n.u=void 0})),u=r=null},c.__c=function(n,t){t.some(function(n){try{n.__h.forEach(z),n.__h=n.__h.filter(function(n){return!n.__||B(n)})}catch(r){t.some(function(n){n.__h&&(n.__h=[])}),t=[],c.__e(r,n.__v)}}),l&&l(n,t)},c.unmount=function(n){m&&m(n);var t,r=n.__c;r&&r.__H&&(r.__H.__.forEach(function(n){try{z(n)}catch(n){t=n}}),r.__H=void 0,t&&c.__e(t,r.__v))};var k=\"function\"==typeof requestAnimationFrame;function w(n){var t,r=function(){clearTimeout(u),k&&cancelAnimationFrame(t),setTimeout(n)},u=setTimeout(r,35);k&&(t=requestAnimationFrame(r))}function z(n){var t=r,u=n.__c;\"function\"==typeof u&&(n.__c=void 0,u()),r=t}function B(n){var t=r;n.__c=n.__(),r=t}function C(n,t){return!n||n.length!==t.length||t.some(function(t,r){return t!==n[r]})}function D(n,t){return\"function\"==typeof t?t(n):t}export{q as useCallback,x as useContext,P as useDebugValue,y as useEffect,b as useErrorBoundary,g as useId,F as useImperativeHandle,_ as useLayoutEffect,T as useMemo,h as useReducer,A as useRef,d as useState};\n//# sourceMappingURL=hooks.module.js.map\n","import { type FunctionComponent } from 'preact';\nimport { useEffect, useRef } from 'preact/hooks';\nimport { type ZodError } from 'zod';\n\nimport { InfoHeadline1, InfoParagraph } from './info';\nimport { Modal } from './modal';\nimport { LapisError, UnknownLapisError } from '../../lapisApi/lapisApi';\nimport { gsEventNames } from '../../utils/gsEventNames';\n\nexport class ErrorEvent extends Event {\n constructor(public readonly error: Error) {\n super(gsEventNames.error, {\n bubbles: true,\n composed: true,\n });\n }\n}\n\nexport class UserFacingError extends Error {\n constructor(\n public readonly headline: string,\n message: string,\n ) {\n super(message);\n this.name = 'UserFacingError';\n }\n}\n\nexport class InvalidPropsError extends Error {\n constructor(\n public readonly zodError: ZodError,\n public readonly componentProps: Record<string, unknown>,\n ) {\n super(zodError.message);\n this.name = 'InvalidPropsError';\n }\n}\n\nexport type ErrorDisplayProps = {\n error: Error;\n resetError?: () => void;\n layout?: 'horizontal' | 'vertical';\n};\n\nexport const ErrorDisplay: FunctionComponent<ErrorDisplayProps> = ({ error, resetError, layout }) => {\n // eslint-disable-next-line no-console -- Currently we use the following statement for our error handling\n console.error(error);\n\n const containerRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n containerRef.current?.dispatchEvent(new ErrorEvent(error));\n });\n\n const { headline, details } = getDisplayedErrorMessage(error);\n\n return (\n <div\n ref={containerRef}\n className={`h-full w-full rounded-md border-2 border-gray-100 p-2 flex items-center justify-center ${layout === 'horizontal' ? 'flex-row' : 'flex-col'}`}\n >\n <div>\n <div className='text-red-700 font-bold'>{headline}</div>\n <div>\n Oops! Something went wrong.\n {details !== undefined && (\n <>\n {' '}\n <Modal\n buttonClassName='underline hover:text-gray-400'\n modalContent={\n <>\n <InfoHeadline1>{details.headline}</InfoHeadline1>\n <InfoParagraph>{details.message}</InfoParagraph>\n </>\n }\n >\n Show details.\n </Modal>\n </>\n )}\n </div>\n </div>\n {resetError !== undefined && (\n <button onClick={resetError} className='btn btn-sm flex items-center m-4'>\n <span className='iconify mdi--reload text-lg' />\n Try again\n </button>\n )}\n </div>\n );\n};\n\nfunction getDisplayedErrorMessage(error: Error) {\n if (error instanceof UserFacingError) {\n return {\n headline: `Error - ${error.headline}`,\n details: {\n headline: error.headline,\n message: error.message,\n },\n };\n }\n\n if (error instanceof LapisError) {\n return {\n headline: `Error - Failed fetching ${error.requestedData} from LAPIS`,\n details: {\n headline: `LAPIS request failed: ${error.requestedData} - ${error.problemDetail.status} ${error.problemDetail.title}`,\n message: error.problemDetail.detail ?? error.message,\n },\n };\n }\n\n if (error instanceof UnknownLapisError) {\n return {\n headline: `Error - Failed fetching ${error.requestedData} from LAPIS`,\n details: {\n headline: `LAPIS request failed: An unexpected error occurred while fetching ${error.requestedData}`,\n message: error.message,\n },\n };\n }\n\n if (error instanceof InvalidPropsError) {\n return {\n headline: 'Error - Invalid component attributes',\n details: { headline: 'Invalid component attributes', message: <ZodErrorDetails error={error} /> },\n };\n }\n\n return { headline: 'Error', details: undefined };\n}\n\nfunction ZodErrorDetails({ error }: { error: InvalidPropsError }) {\n const firstError = error.zodError.errors[0];\n return (\n <>\n <p>\n <span className='font-bold'>You are a regular user?</span> Unfortunately, there is nothing you can do at\n the moment. This component is misconfigured. Please contact the administrator of this page.\n </p>\n <p>\n <span className='font-bold'>You are the administrator of this page?</span> You supplied invalid\n attributes to this component. Please check the browser console for more detailed error messages.\n </p>\n {firstError.code === 'invalid_type' && firstError.received === 'null' && (\n <p>\n Is the \"{firstError.path[0]}\" attribute in the HTML of the correct type? The attribute is expected\n to be of type \"{firstError.expected}\".\n </p>\n )}\n <p>This is a summary of the unexpected attribute values:</p>\n <ul className='m-4 list-outside list-disc '>\n {error.zodError.issues.map((issue, index) => {\n const actual =\n issue.path[0] in error.componentProps\n ? `'${JSON.stringify(error.componentProps[issue.path[0]])}'`\n : '';\n return (\n <li key={index}>\n Unexpected value {actual} for \"{issue.path.join('.')}\": {issue.message}\n </li>\n );\n })}\n </ul>\n </>\n );\n}\n","export interface Map2d<Key1, Key2, Value> {\n get(keyFirstAxis: Key1, keySecondAxis: Key2): Value | undefined;\n\n set(keyFirstAxis: Key1, keySecondAxis: Key2, value: Value): void;\n\n getRow(key: Key1): (Value | undefined)[];\n\n deleteRow(key: Key1): void;\n\n getFirstAxisKeys(): Key1[];\n\n getSecondAxisKeys(): Key2[];\n\n getAsArray(): (Value | undefined)[][];\n\n serializeFirstAxis(key: Key1): string;\n\n serializeSecondAxis(key: Key2): string;\n\n getContents(): Map2DContents<Key1, Key2, Value>;\n\n readonly keysFirstAxis: Map<string, Key1>;\n readonly keysSecondAxis: Map<string, Key2>;\n}\n\nexport type Map2DContents<Key1, Key2, Value> = {\n keysFirstAxis: Map<string, Key1>;\n keysSecondAxis: Map<string, Key2>;\n data: Map<string, Map<string, Value>>;\n};\n\nexport class Map2dBase<Key1 extends object | string, Key2 extends object | string, Value>\n implements Map2d<Key1, Key2, Value>\n{\n readonly data: Map<string, Map<string, Value>> = new Map<string, Map<string, Value>>();\n readonly keysFirstAxis = new Map<string, Key1>();\n readonly keysSecondAxis = new Map<string, Key2>();\n\n constructor(\n readonly serializeFirstAxis: (key: Key1) => string,\n readonly serializeSecondAxis: (key: Key2) => string,\n initialContent?: Map2DContents<Key1, Key2, Value>,\n ) {\n if (initialContent) {\n this.keysFirstAxis = new Map(initialContent.keysFirstAxis);\n this.keysSecondAxis = new Map(initialContent.keysSecondAxis);\n this.data = new Map(initialContent.data);\n }\n }\n\n get(keyFirstAxis: Key1, keySecondAxis: Key2) {\n const serializedKeyFirstAxis = this.serializeFirstAxis(keyFirstAxis);\n const serializedKeySecondAxis = this.serializeSecondAxis(keySecondAxis);\n return this.data.get(serializedKeyFirstAxis)?.get(serializedKeySecondAxis);\n }\n\n getRow(key: Key1) {\n const serializedKeyFirstAxis = this.serializeFirstAxis(key);\n const row = this.data.get(serializedKeyFirstAxis);\n if (row === undefined) {\n return [];\n }\n return Array.from(this.keysSecondAxis.keys()).map((key) => row.get(key));\n }\n\n set(keyFirstAxis: Key1, keySecondAxis: Key2, value: Value) {\n const serializedKeyFirstAxis = this.serializeFirstAxis(keyFirstAxis);\n const serializedKeySecondAxis = this.serializeSecondAxis(keySecondAxis);\n\n if (!this.data.has(serializedKeyFirstAxis)) {\n this.data.set(serializedKeyFirstAxis, new Map<string, Value>());\n }\n\n this.data.get(serializedKeyFirstAxis)!.set(serializedKeySecondAxis, value);\n\n this.keysFirstAxis.set(serializedKeyFirstAxis, keyFirstAxis);\n this.keysSecondAxis.set(serializedKeySecondAxis, keySecondAxis);\n }\n\n deleteRow(key: Key1) {\n const serializedKeyFirstAxis = this.serializeFirstAxis(key);\n this.data.delete(serializedKeyFirstAxis);\n this.keysFirstAxis.delete(serializedKeyFirstAxis);\n }\n\n getFirstAxisKeys() {\n return Array.from(this.keysFirstAxis.values());\n }\n\n getSecondAxisKeys() {\n return Array.from(this.keysSecondAxis.values());\n }\n\n getAsArray() {\n return this.getFirstAxisKeys().map((firstAxisKey) => {\n return this.getSecondAxisKeys().map((secondAxisKey) => {\n return this.get(firstAxisKey, secondAxisKey);\n });\n });\n }\n\n getContents(): Map2DContents<Key1, Key2, Value> {\n return {\n keysFirstAxis: this.keysFirstAxis,\n keysSecondAxis: this.keysSecondAxis,\n data: this.data,\n };\n }\n}\n\nexport class SortedMap2d<Key1 extends object | string, Key2 extends object | string, Value> extends Map2dBase<\n Key1,\n Key2,\n Value\n> {\n constructor(\n delegate: Map2d<Key1, Key2, Value>,\n sortFirstAxis: (a: Key1, b: Key1) => number,\n sortSecondAxis: (a: Key2, b: Key2) => number,\n ) {\n const contents = delegate.getContents();\n const sortedFirstAxisKeys = new Map(\n [...contents.keysFirstAxis.entries()].sort((a, b) => sortFirstAxis(a[1], b[1])),\n );\n const sortedSecondAxisKeys = new Map(\n [...contents.keysSecondAxis.entries()].sort((a, b) => sortSecondAxis(a[1], b[1])),\n );\n super(\n (key: Key1) => delegate.serializeFirstAxis(key),\n (key: Key2) => delegate.serializeSecondAxis(key),\n {\n keysFirstAxis: sortedFirstAxisKeys,\n keysSecondAxis: sortedSecondAxisKeys,\n data: contents.data,\n },\n );\n }\n}\n\nexport class Map2dView<Key1 extends object | string, Key2 extends object | string, Value>\n implements Map2d<Key1, Key2, Value>\n{\n readonly keysFirstAxis;\n readonly keysSecondAxis;\n\n readonly baseMap: Map2d<Key1, Key2, Value>;\n\n constructor(map: Map2d<Key1, Key2, Value>) {\n this.keysFirstAxis = new Map(map.keysFirstAxis);\n this.keysSecondAxis = new Map(map.keysSecondAxis);\n\n if (map instanceof Map2dView) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- the generics match, we know that.\n this.baseMap = map.baseMap;\n }\n this.baseMap = map;\n }\n\n serializeFirstAxis(key: Key1) {\n return this.baseMap.serializeFirstAxis(key);\n }\n\n serializeSecondAxis(key: Key2) {\n return this.baseMap.serializeSecondAxis(key);\n }\n\n deleteRow(key: Key1) {\n this.keysFirstAxis.delete(this.serializeFirstAxis(key));\n }\n\n deleteColumn(key: Key2) {\n this.keysSecondAxis.delete(this.serializeSecondAxis(key));\n }\n\n get(keyFirstAxis: Key1, keySecondAxis: Key2) {\n const firstAxisKey = this.serializeFirstAxis(keyFirstAxis);\n const secondAxisKey = this.serializeSecondAxis(keySecondAxis);\n\n if (!this.keysFirstAxis.has(firstAxisKey) || !this.keysSecondAxis.has(secondAxisKey)) {\n return undefined;\n }\n\n return this.baseMap.get(keyFirstAxis, keySecondAxis);\n }\n\n set() {\n throw new Error('Cannot set value on a Map2dView');\n }\n\n getFirstAxisKeys() {\n return Array.from(this.keysFirstAxis.values());\n }\n\n getSecondAxisKeys() {\n return Array.from(this.keysSecondAxis.values());\n }\n\n getAsArray() {\n return this.getFirstAxisKeys().map((firstAxisKey) => {\n return this.getSecondAxisKeys().map((secondAxisKey) => {\n return this.baseMap.get(firstAxisKey, secondAxisKey);\n });\n });\n }\n\n getRow(key: Key1) {\n const serializedKeyFirstAxis = this.serializeFirstAxis(key);\n if (!this.keysFirstAxis.has(serializedKeyFirstAxis)) {\n return [];\n }\n\n return this.getSecondAxisKeys().map((k2) => this.baseMap.get(key, k2));\n }\n\n getColumn(key: Key2) {\n const serializedKeySecondAxis = this.serializeSecondAxis(key);\n if (!this.keysSecondAxis.has(serializedKeySecondAxis)) {\n return [];\n }\n\n return this.getFirstAxisKeys().map((k1) => this.baseMap.get(k1, key));\n }\n\n getContents() {\n return {\n keysFirstAxis: this.keysFirstAxis,\n keysSecondAxis: this.keysSecondAxis,\n data: this.baseMap.getContents().data,\n };\n }\n}\n","import {\n type MutationOverTimeMutationValue,\n serializeSubstitutionOrDeletion,\n serializeTemporal,\n} from '../../query/queryMutationsOverTime';\nimport { type Map2d, Map2dBase, type Map2DContents } from '../../utils/map2d';\nimport type { Deletion, Substitution } from '../../utils/mutations';\nimport type { Temporal, TemporalClass } from '../../utils/temporalClass';\n\nexport type MutationOverTimeDataMap<T extends Temporal | TemporalClass = Temporal> = Map2d<\n Substitution | Deletion,\n T,\n MutationOverTimeMutationValue\n>;\n\nexport class BaseMutationOverTimeDataMap<T extends Temporal | TemporalClass = Temporal> extends Map2dBase<\n Substitution | Deletion,\n T,\n MutationOverTimeMutationValue\n> {\n constructor(initialContent?: Map2DContents<Substitution | Deletion, T, MutationOverTimeMutationValue>) {\n super(serializeSubstitutionOrDeletion, serializeTemporal, initialContent);\n }\n}\n","import type { Deletion, Substitution } from '../../../utils/mutations';\n\nexport const sortSubstitutionsAndDeletions = (a: Substitution | Deletion, b: Substitution | Deletion) => {\n if (a.segment !== b.segment) {\n return compareSegments(a.segment, b.segment);\n }\n\n if (a.position !== b.position) {\n return comparePositions(a.position, b.position);\n }\n\n const aIsDeletion = a.type === 'deletion';\n const bIsDeletion = b.type === 'deletion';\n\n if (aIsDeletion !== bIsDeletion) {\n return aIsDeletion ? 1 : -1;\n }\n\n if (!aIsDeletion && !bIsDeletion) {\n if (a.substitutionValue !== b.substitutionValue) {\n return compareSubstitutionValues(a.substitutionValue, b.substitutionValue);\n }\n }\n\n return 0;\n};\n\nexport const compareSegments = (a: string | undefined, b: string | undefined) => {\n if (a === undefined) {\n return -1;\n }\n if (b === undefined) {\n return 1;\n }\n return a.localeCompare(b);\n};\n\nexport const comparePositions = (a: number, b: number) => {\n return a - b;\n};\n\nconst compareSubstitutionValues = (a: string | undefined, b: string | undefined) => {\n if (a === undefined) {\n return -1;\n }\n if (b === undefined) {\n return 1;\n }\n return a.localeCompare(b);\n};\n","import { mapDateToGranularityRange } from './queryAggregatedDataOverTime';\nimport { fetchMutationsOverTime } from '../lapisApi/lapisApi';\nimport { FetchAggregatedOperator } from '../operator/FetchAggregatedOperator';\nimport { FetchSubstitutionsOrDeletionsOperator } from '../operator/FetchSubstitutionsOrDeletionsOperator';\nimport { GroupByAndSumOperator } from '../operator/GroupByAndSumOperator';\nimport { MapOperator } from '../operator/MapOperator';\nimport { RenameFieldOperator } from '../operator/RenameFieldOperator';\nimport { SortOperator } from '../operator/SortOperator';\nimport { UserFacingError } from '../preact/components/error-display';\nimport { BaseMutationOverTimeDataMap } from '../preact/mutationsOverTime/MutationOverTimeData';\nimport { sortSubstitutionsAndDeletions } from '../preact/shared/sort/sortSubstitutionsAndDeletions';\nimport {\n type DeletionEntry,\n type LapisFilter,\n type SequenceType,\n type SubstitutionEntry,\n type SubstitutionOrDeletionEntry,\n type TemporalGranularity,\n} from '../types';\nimport { type Map2DContents } from '../utils/map2d';\nimport {\n type Deletion,\n type Substitution,\n toSubstitutionOrDeletion,\n DeletionClass,\n SubstitutionClass,\n} from '../utils/mutations';\nimport {\n compareTemporal,\n dateRangeCompare,\n generateAllInRange,\n getMinMaxTemporal,\n parseDateStringToTemporal,\n type Temporal,\n type TemporalClass,\n toTemporal,\n} from '../utils/temporalClass';\n\nexport type MutationOverTimeData = {\n date: TemporalClass;\n mutations: SubstitutionOrDeletionEntry[];\n totalCount: number;\n};\n\nexport type MutationOverTimeMutationValue =\n | {\n type: 'value';\n proportion: number;\n count: number;\n totalCount: number;\n }\n | {\n type: 'valueWithCoverage';\n count: number;\n coverage: number;\n totalCount: number;\n }\n | {\n type: 'wastewaterValue';\n proportion: number;\n }\n | {\n type: 'belowThreshold';\n totalCount: number | null;\n }\n | null;\n\nexport function getProportion(value: MutationOverTimeMutationValue) {\n switch (value?.type) {\n case 'value':\n case 'wastewaterValue':\n return value.proportion;\n case 'valueWithCoverage':\n return value.count / value.coverage;\n case 'belowThreshold':\n return undefined;\n }\n return undefined;\n}\n\nconst MAX_NUMBER_OF_GRID_COLUMNS = 200;\nexport const MUTATIONS_OVER_TIME_MIN_PROPORTION = 0.001;\n\n/**\n * Create SubstitutionOrDeletionEntry for given code with count and proportion 0.\n * @param code a mutation code like G44T or A23-\n */\nfunction codeToEmptyEntry(code: string): SubstitutionOrDeletionEntry | null {\n const maybeDeletion = DeletionClass.parse(code);\n if (maybeDeletion) {\n return {\n type: 'deletion',\n mutation: maybeDeletion,\n count: 0,\n proportion: 0,\n };\n }\n const maybeSubstitution = SubstitutionClass.parse(code);\n if (maybeSubstitution) {\n return {\n type: 'substitution',\n mutation: maybeSubstitution,\n count: 0,\n proportion: 0,\n };\n }\n return null;\n}\n\n/**\n * Return counts and proportions for all mutations that match the lapisFilter.\n * If `includeMutations` are given, the result will also be filtered for those.\n * Any mutation that isn't in the result, but is in the `includeMutations` will\n * be in the result with count and proportion as 0.\n */\nasync function queryOverallMutationData({\n lapisFilter,\n sequenceType,\n lapis,\n granularity,\n lapisDateField,\n includeMutations,\n signal,\n}: {\n lapisFilter: LapisFilter;\n sequenceType: SequenceType;\n lapis: string;\n granularity: TemporalGranularity;\n lapisDateField: string;\n includeMutations?: string[];\n signal?: AbortSignal;\n}) {\n const requestedDateRanges = await getDatesInDataset(lapisFilter, lapis, granularity, lapisDateField, signal);\n\n if (requestedDateRanges.length === 0) {\n if (includeMutations) {\n return {\n content: includeMutations\n .map(codeToEmptyEntry)\n .filter((e): e is SubstitutionOrDeletionEntry => e !== null),\n };\n } else {\n return {\n content: [],\n };\n }\n }\n\n const filter = {\n ...lapisFilter,\n [`${lapisDateField}From`]: requestedDateRanges[0].firstDay.toString(),\n [`${lapisDateField}To`]: requestedDateRanges[requestedDateRanges.length - 1].lastDay.toString(),\n };\n\n let dataPromise = fetchAndPrepareSubstitutionsOrDeletions(filter, sequenceType).evaluate(lapis, signal);\n\n if (includeMutations) {\n dataPromise = dataPromise.then((data) => {\n return {\n content: includeMutations\n .map((code) => {\n const found = data.content.find((m) => m.mutation.code === code);\n return found ?? codeToEmptyEntry(code);\n })\n .filter((e): e is SubstitutionOrDeletionEntry => e !== null),\n };\n });\n }\n\n return dataPromise;\n}\n\nexport type MutationOverTimeQuery = {\n lapisFilter: LapisFilter;\n displayMutations?: string[];\n sequenceType: SequenceType;\n lapis: string;\n lapisDateField: string;\n granularity: TemporalGranularity;\n useNewEndpoint?: boolean;\n signal?: AbortSignal;\n};\n\nexport async function queryMutationsOverTimeData(query: MutationOverTimeQuery) {\n const { lapisFilter, displayMutations, sequenceType, lapis, lapisDateField, granularity, useNewEndpoint, signal } =\n query;\n\n const requestedDateRanges = await getDatesInDataset(lapisFilter, lapis, granularity, lapisDateField, signal);\n\n if (requestedDateRanges.length > MAX_NUMBER_OF_GRID_COLUMNS) {\n throw new UserFacingError(\n 'Too many dates',\n `The dataset would contain ${requestedDateRanges.length} date intervals. ` +\n `Please reduce the number to below ${MAX_NUMBER_OF_GRID_COLUMNS} to display the data. ` +\n 'You can achieve this by either narrowing the date range in the provided LAPIS filter or by selecting a larger granularity.',\n );\n }\n\n const overallMutationData = queryOverallMutationData({\n lapisFilter,\n sequenceType,\n lapis,\n lapisDateField,\n includeMutations: displayMutations,\n granularity,\n }).then((r) => r.content);\n\n return useNewEndpoint === true\n ? queryMutationsOverTimeDataDirectEndpoint(requestedDateRanges, overallMutationData, query)\n : queryMutationsOverTimeDataMultiQuery(requestedDateRanges, overallMutationData, query);\n}\n\nasync function queryMutationsOverTimeDataMultiQuery(\n allDates: TemporalClass[],\n overallMutationDataPromise: Promise<SubstitutionOrDeletionEntry[]>,\n { lapisFilter, sequenceType, lapis, lapisDateField, signal }: MutationOverTimeQuery,\n) {\n const subQueries = allDates.map(async (date) => {\n const dateFrom = date.firstDay.toString();\n const dateTo = date.lastDay.toString();\n\n const filter = {\n ...lapisFilter,\n [`${lapisDateField}From`]: dateFrom,\n [`${lapisDateField}To`]: dateTo,\n };\n\n const [data, totalCountQuery] = await Promise.all([\n fetchAndPrepareSubstitutionsOrDeletions(filter, sequenceType).evaluate(lapis, signal),\n getTotalNumberOfSequencesInDateRange(filter).evaluate(lapis, signal),\n ]);\n\n return {\n date,\n mutations: data.content,\n totalCount: totalCountQuery.content[0].count,\n };\n });\n\n const data = await Promise.all(subQueries);\n const overallMutationData = await overallMutationDataPromise;\n\n return {\n mutationOverTimeData: groupByMutation(data, overallMutationData),\n overallMutationData,\n };\n}\n\nasync function queryMutationsOverTimeDataDirectEndpoint(\n allDates: TemporalClass[],\n overallMutationDataPromise: Promise<SubstitutionOrDeletionEntry[]>,\n { lapisFilter, sequenceType, lapis, lapisDateField, signal }: MutationOverTimeQuery,\n): Promise<{\n mutationOverTimeData: BaseMutationOverTimeDataMap;\n overallMutationData: SubstitutionOrDeletionEntry[];\n}> {\n const overallMutationData = await overallMutationDataPromise;\n overallMutationData.sort((a, b) => sortSubstitutionsAndDeletions(a.mutation, b.mutation));\n const totalCounts = await Promise.all(\n allDates.map(async (date) => {\n const filter = {\n ...lapisFilter,\n [`${lapisDateField}From`]: date.firstDay.toString(),\n [`${lapisDateField}To`]: date.lastDay.toString(),\n };\n\n const totalCountQuery = await getTotalNumberOfSequencesInDateRange(filter).evaluate(lapis, signal);\n\n return totalCountQuery.content[0].count;\n }),\n );\n\n const includeMutations = overallMutationData.map((value) => value.mutation.code);\n const apiResult = await fetchMutationsOverTime(\n lapis,\n {\n filters: lapisFilter,\n dateRanges: allDates.map((date) => ({\n dateFrom: date.firstDay.toString(),\n dateTo: date.lastDay.toString(),\n })),\n includeMutations,\n dateField: lapisDateField,\n },\n sequenceType,\n signal,\n );\n\n const responseMutations = apiResult.data.mutations.map(parseMutationCode);\n const mutationEntries: SubstitutionOrDeletionEntry[] = responseMutations.map((mutation, i) => {\n const numbers = {\n count: overallMutationData[i].count,\n proportion: overallMutationData[i].proportion,\n };\n if (mutation.type === 'deletion') {\n return {\n type: 'deletion',\n mutation,\n ...numbers,\n };\n } else {\n return {\n type: 'substitution',\n mutation,\n ...numbers,\n };\n }\n });\n\n const mutationOverTimeData: Map2DContents<Substitution | Deletion, Temporal, MutationOverTimeMutationValue> = {\n keysFirstAxis: new Map(responseMutations.map((mutation) => [mutation.code, mutation])),\n keysSecondAxis: new Map(allDates.map((date) => [date.dateString, date])),\n data: new Map(\n responseMutations.map((mutation, i) => [\n mutation.code,\n new Map(\n allDates.map((date, j): [string, MutationOverTimeMutationValue] => {\n if (totalCounts[j] === 0) {\n return [date.dateString, null];\n }\n // 'count' in the API resp. is the number of seqs with the mutation\n const count = apiResult.data.data[i][j].count;\n // 'coverage' in the API resp. is the number of seqs. that have a non-ambiguous symbol at position\n const coverage = apiResult.data.data[i][j].coverage;\n const totalCount = totalCounts[j];\n if (coverage === 0) {\n return [\n date.dateString,\n {\n type: 'belowThreshold',\n totalCount,\n },\n ];\n }\n return [\n date.dateString,\n {\n type: 'valueWithCoverage',\n count,\n coverage,\n totalCount,\n },\n ];\n }),\n ),\n ]),\n ),\n };\n\n return {\n mutationOverTimeData: new BaseMutationOverTimeDataMap(mutationOverTimeData),\n overallMutationData: mutationEntries,\n };\n}\n\nfunction parseMutationCode(code: string): SubstitutionClass | DeletionClass {\n const maybeDeletion = DeletionClass.parse(code);\n if (maybeDeletion) {\n return maybeDeletion;\n }\n const maybeSubstitution = SubstitutionClass.parse(code);\n if (maybeSubstitution) {\n return maybeSubstitution;\n }\n throw Error(`Given code is not valid: ${code}`);\n}\n\n/**\n * Returns a list of date ranges as TemporalClass.\n * Respects date range filters given in the lapisFilter as <lapisDateField>From and <lapisDateField>To.\n * If either side (or both sides) of the range are not given, the min and max are determined from\n * the available data.\n */\nasync function getDatesInDataset(\n lapisFilter: LapisFilter,\n lapis: string,\n granularity: TemporalGranularity,\n lapisDateField: string,\n signal: AbortSignal | undefined,\n) {\n const { dateFrom, dateTo } = getDateRangeFromFilter(lapisFilter, lapisDateField, granularity);\n if (dateFrom !== null && dateTo !== null) {\n return generateAllInRange(dateFrom, dateTo);\n }\n\n const { content: availableDates } = await queryAvailableDates(\n lapisFilter,\n lapis,\n granularity,\n lapisDateField,\n signal,\n );\n\n const { min, max } = getMinMaxTemporal(availableDates);\n\n return generateAllInRange(dateFrom ?? min, dateTo ?? max);\n}\n\nfunction getDateRangeFromFilter(lapisFilter: LapisFilter, lapisDateField: string, granularity: TemporalGranularity) {\n const valueFromFilter = lapisFilter[lapisDateField] as string | null;\n\n if (valueFromFilter) {\n return {\n dateFrom: parseDateStringToTemporal(valueFromFilter, granularity),\n dateTo: parseDateStringToTemporal(valueFromFilter, granularity),\n };\n }\n\n const minFromFilter = lapisFilter[`${lapisDateField}From`] as string | null;\n const maxFromFilter = lapisFilter[`${lapisDateField}To`] as string | null;\n\n return {\n dateFrom: minFromFilter ? parseDateStringToTemporal(minFromFilter, granularity) : null,\n dateTo: maxFromFilter ? parseDateStringToTemporal(maxFromFilter, granularity) : null,\n };\n}\n\nfunction queryAvailableDates(\n lapisFilter: LapisFilter,\n lapis: string,\n granularity: TemporalGranularity,\n lapisDateField: string,\n signal?: AbortSignal,\n) {\n return fetchAndPrepareDates(lapisFilter, granularity, lapisDateField).evaluate(lapis, signal);\n}\n\nfunction fetchAndPrepareDates(filter: LapisFilter, granularity: TemporalGranularity, lapisDateField: string) {\n const fetchData = new FetchAggregatedOperator<Record<string, string | null>>(filter, [lapisDateField]);\n const dataWithFixedDateKey = new RenameFieldOperator(fetchData, lapisDateField, 'date');\n const mapData = new MapOperator(dataWithFixedDateKey, (data) => mapDateToGranularityRange(data, granularity));\n const groupByData = new GroupByAndSumOperator(mapData, 'dateRange', 'count');\n const sortData = new SortOperator(groupByData, dateRangeCompare);\n return new MapOperator(sortData, (data) => data.dateRange);\n}\n\nfunction fetchAndPrepareSubstitutionsOrDeletions(filter: LapisFilter, sequenceType: SequenceType) {\n return new FetchSubstitutionsOrDeletionsOperator(filter, sequenceType, MUTATIONS_OVER_TIME_MIN_PROPORTION);\n}\n\nexport function serializeSubstitutionOrDeletion(mutation: Substitution | Deletion) {\n return mutation.code;\n}\n\nexport function serializeTemporal(date: Temporal) {\n return date.dateString;\n}\n\nexport function groupByMutation(\n data: MutationOverTimeData[],\n overallMutationData: (SubstitutionEntry | DeletionEntry)[],\n): BaseMutationOverTimeDataMap {\n const dataArray = new BaseMutationOverTimeDataMap();\n\n const allDates = data.map((mutationData) => mutationData.date);\n\n const sortedOverallMutationData = overallMutationData\n .sort((a, b) => sortSubstitutionsAndDeletions(a.mutation, b.mutation))\n .map((entry) => {\n return toSubstitutionOrDeletion(entry.mutation);\n });\n const sortedDates = allDates.sort((a, b) => compareTemporal(a, b)).map((date) => toTemporal(date));\n\n sortedOverallMutationData.forEach((mutationData) => {\n sortedDates.forEach((date) => {\n dataArray.set(mutationData, date, null);\n });\n });\n\n data.forEach((mutationData) => {\n if (mutationData.totalCount == 0) {\n return;\n }\n\n const date = toTemporal(mutationData.date);\n\n mutationData.mutations.forEach((mutationEntry) => {\n const mutation = toSubstitutionOrDeletion(mutationEntry.mutation);\n\n if (dataArray.get(mutation, date) !== undefined) {\n dataArray.set(mutation, date, {\n type: 'value',\n count: mutationEntry.count,\n proportion: mutationEntry.proportion,\n totalCount: mutationData.totalCount,\n });\n }\n });\n\n for (const firstAxisKey of dataArray.getFirstAxisKeys()) {\n if (dataArray.get(firstAxisKey, date) === null) {\n dataArray.set(firstAxisKey, date, {\n type: 'belowThreshold',\n totalCount: mutationData.totalCount,\n });\n }\n }\n });\n\n return dataArray;\n}\n\nfunction getTotalNumberOfSequencesInDateRange(filter: LapisFilter) {\n return new FetchAggregatedOperator<{ count: number }>(filter);\n}\n","import { type ErrorWorkerStatus, type LoadingWorkerStatus, type SuccessWorkerStatus } from './useWebWorker';\nimport { UserFacingError } from '../components/error-display';\n\nexport async function workerFunction(queryFunction: () => unknown) {\n try {\n postMessage({ status: 'loading' } satisfies LoadingWorkerStatus);\n\n const workerResponse = await queryFunction();\n\n postMessage({\n status: 'success',\n data: workerResponse,\n } satisfies SuccessWorkerStatus<unknown>);\n } catch (error) {\n postMessage(\n (error instanceof UserFacingError\n ? {\n status: 'error',\n userFacing: true,\n headline: error.headline,\n error,\n }\n : {\n status: 'error',\n userFacing: false,\n error: error instanceof Error ? error : new Error(`${error}`),\n }) satisfies ErrorWorkerStatus,\n );\n }\n}\n","import {\n type MutationOverTimeMutationValue,\n type MutationOverTimeQuery,\n queryMutationsOverTimeData,\n} from '../../query/queryMutationsOverTime';\nimport type { SubstitutionOrDeletionEntry } from '../../types';\nimport { type Map2DContents } from '../../utils/map2d';\nimport type { Deletion, Substitution } from '../../utils/mutations';\nimport type { Temporal } from '../../utils/temporalClass';\nimport { workerFunction } from '../webWorkers/workerFunction';\n\nexport type MutationOverTimeWorkerResponse = {\n overallMutationData: SubstitutionOrDeletionEntry<Substitution, Deletion>[];\n mutationOverTimeSerialized: Map2DContents<Substitution | Deletion, Temporal, MutationOverTimeMutationValue>;\n};\n\nexport async function getMutationOverTimeWorkerFunction(event: MessageEvent<MutationOverTimeQuery>) {\n const mutationOverTimeData = await queryMutationsOverTimeData(event.data);\n\n const workerResponse: MutationOverTimeWorkerResponse = {\n overallMutationData: mutationOverTimeData.overallMutationData,\n mutationOverTimeSerialized: mutationOverTimeData.mutationOverTimeData.getContents(),\n };\n return workerResponse;\n}\n\nself.onmessage = async function (event: MessageEvent<MutationOverTimeQuery>) {\n await workerFunction(() => getMutationOverTimeWorkerFunction(event));\n};\n"],"names":["util","k","e","objectUtil","i","defaultErrorMap","m","s","errorUtil","errorMap","ctx","result","issues","a","elements","processed","r","ZodFirstPartyTypeKind","z","problemDetail","aggregatedResponse","v","padStart","padZoneStr","monthDiff","C.M","c","absFloor","prettyUnit","u","C.Y","C.W","C.D","C.DATE","C.H","C.MIN","C.S","C.MS","isUndefined","isDayjs","parseLocale","l","dayjs","wrapper","parseDate","C.REGEX_PARSE","Dayjs","isValid","C.INVALID_DATE_STRING","instanceFactory","instanceFactorySet","C.MILLISECONDS_A_MINUTE","C.MILLISECONDS_A_HOUR","C.MILLISECONDS_A_SECOND","C.FORMAT_DEFAULT","getShort","get$H","matches","C.REGEX_FORMAT","diff","getMonth","C.Q","C.MILLISECONDS_A_WEEK","C.MILLISECONDS_A_DAY","proto","getYearFirstThursday","getCurrentWeekThursday","segmentPart","n","key","data","j"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,17,18,19,20,21,22,27,28]}
|