@proofkit/cli 1.2.0-beta.1 → 2.0.0-beta.11
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/CHANGELOG.md +39 -0
- package/dist/index-BitR4XBZ.d.ts +2 -0
- package/dist/index.js +109 -98
- package/dist/index.js.map +1 -0
- package/package.json +46 -48
- package/template/extras/emailTemplates/auth-code.tsx +7 -26
- package/template/extras/emailTemplates/generic.tsx +8 -31
- package/template/extras/fmaddon-auth/emails/auth-code.tsx +7 -26
- package/template/extras/src/app/api/auth/[...nextauth]/route.ts +1 -1
- package/template/extras/src/server/next-auth/base.ts +3 -3
- package/template/nextjs-mantine/package.json +5 -4
- package/template/nextjs-shadcn/biome.json +18 -13
- package/template/nextjs-shadcn/package.json +10 -7
- package/template/nextjs-shadcn/src/app/layout.tsx +11 -11
- package/template/nextjs-shadcn/src/components/mode-toggle.tsx +39 -0
- package/template/nextjs-shadcn/src/components/ui/button.tsx +61 -0
- package/template/nextjs-shadcn/src/components/ui/dropdown-menu.tsx +267 -0
- package/template/nextjs-shadcn/src/components/ui/sonner.tsx +31 -0
- package/template/nextjs-shadcn/src/lib/env.ts +1 -1
- package/template/pages/nextjs/table-infinite/actions.ts +1 -1
- package/template/pages/nextjs/table-infinite-edit/actions.ts +1 -1
- package/template/vite-wv/package.json +5 -2
- package/template/vite-wv/src/routeTree.gen.ts +1 -1
- package/template/vite-wv/src/routes/index.tsx +8 -20
- package/template/vite-wv/src/routes/secondary.tsx +4 -6
- package/dist/external-DCpQkgKf.js +0 -1
- package/template/extras/config/_eslint.js +0 -27
- package/template/extras/config/_prettier.config.js +0 -6
- package/template/nextjs-mantine/.prettierrc +0 -3
- package/template/nextjs-shadcn/.prettierrc +0 -3
- package/template/nextjs-shadcn/next-env.d.ts +0 -6
- package/template/vite-wv/.prettierrc +0 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_a","config","array","nullish","floatSafeRemainder","object","schema","path","isObject","getParsedType","Class","_a","config","base64","base64url","hex","initializer","util.jsonStringifyReplacer","issue","error","_a","path","schema","core.$ZodAsyncError","util.finalizeIssue","core.config","parse","errors.$ZodRealError","parseAsync","errors.$ZodError","safeParse","safeParseAsync","encode","decode","encodeAsync","decodeAsync","safeEncode","safeDecode","safeEncodeAsync","safeDecodeAsync","cuid","cuid2","ulid","xid","ksuid","nanoid","duration","guid","uuid","version","email","_emoji","emoji","ipv4","ipv6","mac","util.escapeRegex","cidrv4","cidrv6","base64","base64url","hostname","e164","date","time","datetime","timeRegex","string","bigint","number","boolean","_null","_undefined","hex","_a","inst","util.floatSafeRemainder","util.NUMBER_FORMAT_RANGES","regexes.integer","util.BIGINT_FORMAT_RANGES","util.nullish","util.getSizableOrigin","util.getLengthableOrigin","regexes.lowercase","regexes.uppercase","util.escapeRegex","util.prefixIssues","result","version","_a","version","isAborted","util.aborted","checks","core.$ZodAsyncError","checkResult","canary","result","safeParse","safeParseAsync","regexes.string","_","regexes.guid","regexes.uuid","regexes.email","url","regexes.emoji","regexes.nanoid","regexes.cuid","regexes.cuid2","regexes.ulid","regexes.xid","regexes.ksuid","regexes.datetime","regexes.date","regexes.time","regexes.duration","regexes.ipv4","regexes.ipv6","regexes.mac","regexes.cidrv4","regexes.cidrv6","regexes.base64","base64","regexes.base64url","regexes.e164","isValidJWT","regexes.number","regexes.boolean","regexes.bigint","regexes.undefined","regexes.null","util.prefixIssues","util.optionalKeys","r","util.cached","isObject","util.isObject","util.esc","allowsEval","util.allowsEval","util.finalizeIssue","core.config","util.cleanRegex","p","results","map","left","right","mergeValues","util.isPlainObject","keyResult","valueResult","util.getEnumValues","util.escapeRegex","core.$ZodEncodeError","parse","parseAsync","util.issue","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","km","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","text","number","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","uk","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","error","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","issue","util.parsedType","util.stringifyPrimitive","util.joinValues","meta","schema","p","Class","util.normalizeParams","_undefined","_null","_void","checks.$ZodCheckLessThan","checks.$ZodCheckGreaterThan","checks.$ZodCheckMultipleOf","checks.$ZodCheckMaxSize","checks.$ZodCheckMinSize","checks.$ZodCheckSizeEquals","checks.$ZodCheckMaxLength","checks.$ZodCheckMinLength","checks.$ZodCheckLengthEquals","checks.$ZodCheckRegex","checks.$ZodCheckLowerCase","checks.$ZodCheckUpperCase","checks.$ZodCheckIncludes","checks.$ZodCheckStartsWith","checks.$ZodCheckEndsWith","checks.$ZodCheckProperty","checks.$ZodCheckMimeType","checks.$ZodCheckOverwrite","util.slugify","schemas.$ZodType","_enum","_default","util.shallowClone","_catch","issue","util.issue","checks.$ZodCheck","describe","meta","schemas.$ZodCodec","schemas.$ZodBoolean","codec","schemas.$ZodString","process","_a","schema","meta","id","json","schema","file","process","registry","ctx","process","schema","core._isoDateTime","date","core._isoDate","core._isoTime","core._isoDuration","core.formatError","core.flattenError","issue","util.jsonStringifyReplacer","issues","ZodError","core.$constructor","parse","ZodType","util.mergeDefs","core.clone","def","meta","parse.parse","parse.safeParse","parse.parseAsync","parse.safeParseAsync","parse.encode","parse.decode","parse.encodeAsync","parse.decodeAsync","parse.safeEncode","parse.safeDecode","parse.safeEncodeAsync","parse.safeDecodeAsync","check","checks.overwrite","processors.stringProcessor","json","checks.regex","checks.includes","checks.startsWith","checks.endsWith","checks.minLength","checks.maxLength","checks.length","checks.lowercase","checks.uppercase","checks.trim","checks.normalize","checks.toLowerCase","checks.toUpperCase","checks.slugify","ZodString","core._email","core._url","core._jwt","core._emoji","core._guid","core._uuid","core._uuidv4","core._uuidv6","core._uuidv7","core._nanoid","core._cuid","core._cuid2","core._ulid","core._base64","core._base64url","core._xid","core._ksuid","core._ipv4","core._ipv6","core._cidrv4","core._cidrv6","core._e164","iso.datetime","iso.date","iso.time","iso.duration","string","core._string","core.regexes.domain","util.normalizeParams","core._mac","core._stringFormat","core.regexes.hostname","core.regexes.hex","core.regexes","ZodNumber","processors.numberProcessor","checks.gt","checks.gte","checks.lt","checks.lte","checks.multipleOf","number","core._number","core._int","core._float32","core._float64","core._int32","core._uint32","ZodBoolean","processors.booleanProcessor","boolean","core._boolean","ZodBigInt","processors.bigintProcessor","bigint","core._bigint","core._int64","core._uint64","ZodSymbol","processors.symbolProcessor","core._symbol","ZodUndefined","processors.undefinedProcessor","core._undefined","ZodNull","processors.nullProcessor","core._null","ZodAny","processors.anyProcessor","core._any","ZodUnknown","processors.unknownProcessor","core._unknown","ZodNever","processors.neverProcessor","core._never","ZodVoid","processors.voidProcessor","core._void","ZodDate","processors.dateProcessor","date","core._date","ZodArray","processors.arrayProcessor","core._array","schema","ZodObject","processors.objectProcessor","util.extend","util.safeExtend","util.merge","util.pick","util.omit","util.partial","ZodOptional","util.required","ZodUnion","processors.unionProcessor","ZodDiscriminatedUnion","ZodIntersection","processors.intersectionProcessor","ZodTuple","processors.tupleProcessor","core.$ZodType","ZodRecord","processors.recordProcessor","ZodMap","processors.mapProcessor","core._minSize","core._maxSize","core._size","ZodSet","processors.setProcessor","ZodEnum","processors.enumProcessor","ZodLiteral","processors.literalProcessor","processors.fileProcessor","core._mime","core._file","processors.transformProcessor","core.$ZodEncodeError","issue","util.issue","output","processors.optionalProcessor","ZodNullable","processors.nullableProcessor","ZodDefault","processors.defaultProcessor","util.shallowClone","processors.prefaultProcessor","processors.nonoptionalProcessor","processors.successProcessor","ZodCatch","processors.catchProcessor","ZodNaN","processors.nanProcessor","core._nan","processors.pipeProcessor","ZodReadonly","processors.readonlyProcessor","processors.templateLiteralProcessor","ZodLazy","processors.lazyProcessor","ZodPromise","processors.promiseProcessor","ZodFunction","processors.functionProcessor","processors.customProcessor","core.$ZodCheck","core._custom","core._refine","core._superRefine","core.describe","core.meta","core._stringbool","ZodIssueCode","map","getErrorMap","core.config","ZodFirstPartyTypeKind","_schemas","_checks","_iso","schema","path","zodSchema","objectSchema","core._coercedString","schemas.ZodString","core._coercedNumber","schemas.ZodNumber","core._coercedBoolean","schemas.ZodBoolean","core._coercedBigint","schemas.ZodBigInt","core._coercedDate","schemas.ZodDate","config","en","z","z4","schema","z\n .object","z.boolean","z.enum","z.string","text","version","error","addToSafeActionClient","z\n .discriminatedUnion","z.object","z.literal","z.string","z.discriminatedUnion","z.enum","z.array","z.boolean","z.url","settings","error","ZodError","z","config","parseJsonc","error","schema","settings","settings","settings","settings","settings","file","fs","file","settings","pathModule","p","path","p","hash","url","clack","filename","error","z.object","z.boolean","z.number","z.array","z.string","schema","z.enum","z.coerce.boolean","path","parse","meta","path","record","config","config","url","z","error","settings","z.string","z.enum","settings","file","url","settings","z.enum","z.enum","settings","settings","file","filterOutCommonFieldNames","commonFieldNamesToExclude","settings","dataSource","promptForSchemaFromDataSource","assertIs","assertNever","util","object","joinValues","array","issue","error","issue","defaultErrorMap","path","map","issue","defaultErrorMap","path","errorMap","check","version","jwt","base64","ctx","result","schema","issue","issues","elements","defaultErrorMap","error","processed","preprocess","z.enum","z.discriminatedUnion","z.object","z.string","z.array","z.record","z.any","z.boolean","z.literal","meta","handlebars","string","error","url","fs","array","file","fs","error","meta","settings","url","file","error","error","settings","error","error","settings","settings","upgrade","error","settings","z.object","z.string","error","settings","z.string","schema","settings","settings","error","settings","upgrade","semver","settings"],"sources":["../src/utils/getProofKitVersion.ts","../src/consts.ts","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/core/core.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/core/util.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/core/errors.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/core/parse.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/core/regexes.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/core/checks.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/core/doc.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/core/versions.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/core/schemas.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/ar.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/az.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/be.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/bg.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/ca.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/cs.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/da.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/de.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/en.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/eo.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/es.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/fa.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/fi.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/fr.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/fr-CA.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/he.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/hu.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/hy.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/id.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/is.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/it.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/ja.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/ka.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/km.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/kh.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/ko.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/lt.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/mk.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/ms.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/nl.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/no.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/ota.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/ps.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/pl.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/pt.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/ru.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/sl.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/sv.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/ta.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/th.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/tr.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/uk.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/ua.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/ur.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/uz.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/vi.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/zh-CN.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/zh-TW.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/yo.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/locales/index.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/core/registries.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/core/api.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/core/to-json-schema.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/core/json-schema-processors.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/core/json-schema-generator.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/core/json-schema.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/core/index.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/classic/checks.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/classic/iso.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/classic/errors.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/classic/parse.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/classic/schemas.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/classic/compat.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/classic/from-json-schema.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/classic/coerce.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/classic/external.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/classic/index.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/index.js","../src/state.ts","../src/utils/getUserPkgManager.ts","../src/utils/logger.ts","../src/helpers/installDependencies.ts","../src/installers/dependencyVersionMap.ts","../src/utils/addPackageDependency.ts","../src/installers/envVars.ts","../src/utils/formatting.ts","../src/utils/ts-morph.ts","../src/utils/addToEnvs.ts","../src/installers/auth-shared.ts","../src/installers/clerk.ts","../src/cli/fmdapi.ts","../src/utils/parseSettings.ts","../src/cli/utils.ts","../src/generators/fmdapi.ts","../src/generators/tanstack-query.ts","../src/installers/install-fm-addon.ts","../src/installers/react-email.ts","../src/installers/proofkit-auth.ts","../src/generators/auth.ts","../src/globalOptions.ts","../src/helpers/installPackages.ts","../src/upgrades/cursorRules.ts","../src/helpers/scaffoldProject.ts","../src/helpers/replaceText.ts","../src/helpers/createProject.ts","../src/helpers/git.ts","../src/helpers/logNextSteps.ts","../src/helpers/setImportAlias.ts","../src/installers/index.ts","../src/installers/proofkit-webviewer.ts","../src/utils/removeTrailingSlash.ts","../src/utils/parseNameAndPath.ts","../src/utils/validateAppName.ts","../src/cli/ottofms.ts","../../../node_modules/.pnpm/@trpc+server@11.0.0-rc.441/node_modules/@trpc/server/dist/unstable-core-do-not-import/createProxy.mjs","../../../node_modules/.pnpm/@trpc+server@11.0.0-rc.441/node_modules/@trpc/server/dist/unstable-core-do-not-import/utils.mjs","../../../node_modules/.pnpm/@trpc+server@11.0.0-rc.441/node_modules/@trpc/server/dist/unstable-core-do-not-import/error/TRPCError.mjs","../../../node_modules/.pnpm/@trpc+server@11.0.0-rc.441/node_modules/@trpc/server/dist/unstable-core-do-not-import/transformer.mjs","../../../node_modules/.pnpm/@trpc+server@11.0.0-rc.441/node_modules/@trpc/server/dist/unstable-core-do-not-import/error/formatter.mjs","../../../node_modules/.pnpm/@trpc+server@11.0.0-rc.441/node_modules/@trpc/server/dist/unstable-core-do-not-import/middleware.mjs","../../../node_modules/.pnpm/@trpc+server@11.0.0-rc.441/node_modules/@trpc/server/dist/unstable-core-do-not-import/parser.mjs","../../../node_modules/.pnpm/@trpc+server@11.0.0-rc.441/node_modules/@trpc/server/dist/unstable-core-do-not-import/procedureBuilder.mjs","../../../node_modules/.pnpm/@trpc+server@11.0.0-rc.441/node_modules/@trpc/server/dist/unstable-core-do-not-import/rootConfig.mjs","../../../node_modules/.pnpm/@trpc+server@11.0.0-rc.441/node_modules/@trpc/server/dist/unstable-core-do-not-import/router.mjs","../../../node_modules/.pnpm/@trpc+server@11.0.0-rc.441/node_modules/@trpc/server/dist/unstable-core-do-not-import/initTRPC.mjs","../src/helpers/version-fetcher.ts","../src/cli/add/fmschema.ts","../src/cli/add/data-source/deploy-demo-file.ts","../src/cli/add/data-source/filemaker.ts","../src/cli/init.ts","../src/utils/renderTitle.ts","../src/cli/react-email.ts","../src/cli/tanstack-query.ts","../src/cli/add/auth.ts","../src/cli/add/data-source/index.ts","../src/cli/add/page/post-install/table.ts","../src/cli/add/page/post-install/table-infinite.ts","../src/cli/add/page/templates.ts","../src/generators/route.ts","../src/cli/add/page/index.ts","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v3/helpers/util.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v3/ZodError.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v3/locales/en.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v3/errors.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v3/helpers/parseUtil.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v3/helpers/errorUtil.js","../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v3/types.js","../../registry/dist/lib/index.js","../src/helpers/shadcn-cli.ts","../src/cli/add/registry/http.ts","../src/cli/add/registry/getOptions.ts","../src/cli/add/registry/postInstall/handlebars.ts","../src/cli/add/registry/postInstall/package-script.ts","../src/cli/add/registry/postInstall/wrap-provider.ts","../src/cli/add/registry/postInstall/index.ts","../src/helpers/stealth-init.ts","../src/cli/add/registry/preflight.ts","../src/cli/add/registry/install.ts","../src/cli/add/registry/listItems.ts","../src/cli/add/index.ts","../src/cli/deploy/index.ts","../src/upgrades/shadcn.ts","../src/upgrades/index.ts","../src/cli/remove/data-source.ts","../src/cli/remove/page.ts","../src/cli/remove/schema.ts","../src/cli/remove/index.ts","../src/cli/typegen/index.ts","../src/cli/update/index.ts","../src/cli/menu.ts","../src/cli/update/makeUpgradeCommand.ts","../src/utils/renderVersionWarning.ts","../src/index.ts"],"sourcesContent":["import path from \"node:path\";\nimport fs from \"fs-extra\";\nimport type { PackageJson } from \"type-fest\";\n\nimport { PKG_ROOT } from \"~/consts.js\";\n\nexport const getVersion = () => {\n const packageJsonPath = path.join(PKG_ROOT, \"package.json\");\n\n const packageJsonContent = fs.readJSONSync(packageJsonPath) as PackageJson;\n\n return packageJsonContent.version ?? \"1.0.0\";\n};\n\nexport const getFmdapiVersion = () => {\n return __FMDAPI_VERSION__;\n};\n\nexport const getNodeMajorVersion = () => {\n const defaultVersion = \"22\";\n try {\n return process.versions.node.split(\".\")[0] ?? defaultVersion;\n } catch {\n return defaultVersion;\n }\n};\n\nexport const getProofkitBetterAuthVersion = () => {\n return __BETTER_AUTH_VERSION__;\n};\n","import path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nimport { getVersion } from \"./utils/getProofKitVersion.js\";\n\n// Path is in relation to a single index.js file inside ./dist\nconst __filename = fileURLToPath(import.meta.url);\nconst distPath = path.dirname(__filename);\nexport const PKG_ROOT = path.join(distPath, \"../\");\nexport const cliName = \"proofkit\";\nexport const npmName = \"@proofkit/cli\";\nexport const DOCS_URL = \"https://proofkit.dev\";\n\nconst version = getVersion();\nconst versionCharLength = version.length;\n//export const PKG_ROOT = path.dirname(require.main.filename);\n\nexport const TITLE_TEXT = `\n _______ ___ ___ ____ _ _ \n|_ __ \\\\ .' ..]|_ ||_ _| (_) / |_ \n | |__) |_ .--. .--. .--. _| |_ | |_/ / __ \\`| |-'\n | ___/[ \\`/'\\`\\\\]/ .'\\`\\\\ \\\\/ .'\\`\\\\ \\\\'-| |-' | __'. [ | | | \n _| |_ | | | \\\\__. || \\\\__. | | | _| | \\\\ \\\\_ | | | |, \n|_____| [___] '.__.' '.__.' [___] |____||____|[___]\\\\__/ \n${\" \".repeat(61 - versionCharLength)}v${version}\n`;\nexport const DEFAULT_APP_NAME = \"my-proofkit-app\";\nexport const CREATE_FM_APP = cliName;\n\n// Registry URL is injected at build time via tsdown define\ndeclare const __REGISTRY_URL__: string;\n// Provide a safe fallback when running from source (not built)\nexport const DEFAULT_REGISTRY_URL =\n // typeof check avoids ReferenceError if not defined at runtime\n typeof __REGISTRY_URL__ !== \"undefined\" && __REGISTRY_URL__ ? __REGISTRY_URL__ : \"https://proofkit.dev\";\n","/** A special constant with type `never` */\nexport const NEVER = Object.freeze({\n status: \"aborted\",\n});\nexport /*@__NO_SIDE_EFFECTS__*/ function $constructor(name, initializer, params) {\n function init(inst, def) {\n if (!inst._zod) {\n Object.defineProperty(inst, \"_zod\", {\n value: {\n def,\n constr: _,\n traits: new Set(),\n },\n enumerable: false,\n });\n }\n if (inst._zod.traits.has(name)) {\n return;\n }\n inst._zod.traits.add(name);\n initializer(inst, def);\n // support prototype modifications\n const proto = _.prototype;\n const keys = Object.keys(proto);\n for (let i = 0; i < keys.length; i++) {\n const k = keys[i];\n if (!(k in inst)) {\n inst[k] = proto[k].bind(inst);\n }\n }\n }\n // doesn't work if Parent has a constructor with arguments\n const Parent = params?.Parent ?? Object;\n class Definition extends Parent {\n }\n Object.defineProperty(Definition, \"name\", { value: name });\n function _(def) {\n var _a;\n const inst = params?.Parent ? new Definition() : this;\n init(inst, def);\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n for (const fn of inst._zod.deferred) {\n fn();\n }\n return inst;\n }\n Object.defineProperty(_, \"init\", { value: init });\n Object.defineProperty(_, Symbol.hasInstance, {\n value: (inst) => {\n if (params?.Parent && inst instanceof params.Parent)\n return true;\n return inst?._zod?.traits?.has(name);\n },\n });\n Object.defineProperty(_, \"name\", { value: name });\n return _;\n}\n////////////////////////////// UTILITIES ///////////////////////////////////////\nexport const $brand = Symbol(\"zod_brand\");\nexport class $ZodAsyncError extends Error {\n constructor() {\n super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);\n }\n}\nexport class $ZodEncodeError extends Error {\n constructor(name) {\n super(`Encountered unidirectional transform during encode: ${name}`);\n this.name = \"ZodEncodeError\";\n }\n}\nexport const globalConfig = {};\nexport function config(newConfig) {\n if (newConfig)\n Object.assign(globalConfig, newConfig);\n return globalConfig;\n}\n","// functions\nexport function assertEqual(val) {\n return val;\n}\nexport function assertNotEqual(val) {\n return val;\n}\nexport function assertIs(_arg) { }\nexport function assertNever(_x) {\n throw new Error(\"Unexpected value in exhaustive check\");\n}\nexport function assert(_) { }\nexport function getEnumValues(entries) {\n const numericValues = Object.values(entries).filter((v) => typeof v === \"number\");\n const values = Object.entries(entries)\n .filter(([k, _]) => numericValues.indexOf(+k) === -1)\n .map(([_, v]) => v);\n return values;\n}\nexport function joinValues(array, separator = \"|\") {\n return array.map((val) => stringifyPrimitive(val)).join(separator);\n}\nexport function jsonStringifyReplacer(_, value) {\n if (typeof value === \"bigint\")\n return value.toString();\n return value;\n}\nexport function cached(getter) {\n const set = false;\n return {\n get value() {\n if (!set) {\n const value = getter();\n Object.defineProperty(this, \"value\", { value });\n return value;\n }\n throw new Error(\"cached value already set\");\n },\n };\n}\nexport function nullish(input) {\n return input === null || input === undefined;\n}\nexport function cleanRegex(source) {\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n return source.slice(start, end);\n}\nexport function floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepString = step.toString();\n let stepDecCount = (stepString.split(\".\")[1] || \"\").length;\n if (stepDecCount === 0 && /\\d?e-\\d?/.test(stepString)) {\n const match = stepString.match(/\\d?e-(\\d?)/);\n if (match?.[1]) {\n stepDecCount = Number.parseInt(match[1]);\n }\n }\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}\nconst EVALUATING = Symbol(\"evaluating\");\nexport function defineLazy(object, key, getter) {\n let value = undefined;\n Object.defineProperty(object, key, {\n get() {\n if (value === EVALUATING) {\n // Circular reference detected, return undefined to break the cycle\n return undefined;\n }\n if (value === undefined) {\n value = EVALUATING;\n value = getter();\n }\n return value;\n },\n set(v) {\n Object.defineProperty(object, key, {\n value: v,\n // configurable: true,\n });\n // object[key] = v;\n },\n configurable: true,\n });\n}\nexport function objectClone(obj) {\n return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));\n}\nexport function assignProp(target, prop, value) {\n Object.defineProperty(target, prop, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n}\nexport function mergeDefs(...defs) {\n const mergedDescriptors = {};\n for (const def of defs) {\n const descriptors = Object.getOwnPropertyDescriptors(def);\n Object.assign(mergedDescriptors, descriptors);\n }\n return Object.defineProperties({}, mergedDescriptors);\n}\nexport function cloneDef(schema) {\n return mergeDefs(schema._zod.def);\n}\nexport function getElementAtPath(obj, path) {\n if (!path)\n return obj;\n return path.reduce((acc, key) => acc?.[key], obj);\n}\nexport function promiseAllObject(promisesObj) {\n const keys = Object.keys(promisesObj);\n const promises = keys.map((key) => promisesObj[key]);\n return Promise.all(promises).then((results) => {\n const resolvedObj = {};\n for (let i = 0; i < keys.length; i++) {\n resolvedObj[keys[i]] = results[i];\n }\n return resolvedObj;\n });\n}\nexport function randomString(length = 10) {\n const chars = \"abcdefghijklmnopqrstuvwxyz\";\n let str = \"\";\n for (let i = 0; i < length; i++) {\n str += chars[Math.floor(Math.random() * chars.length)];\n }\n return str;\n}\nexport function esc(str) {\n return JSON.stringify(str);\n}\nexport function slugify(input) {\n return input\n .toLowerCase()\n .trim()\n .replace(/[^\\w\\s-]/g, \"\")\n .replace(/[\\s_-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\nexport const captureStackTrace = (\"captureStackTrace\" in Error ? Error.captureStackTrace : (..._args) => { });\nexport function isObject(data) {\n return typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nexport const allowsEval = cached(() => {\n // @ts-ignore\n if (typeof navigator !== \"undefined\" && navigator?.userAgent?.includes(\"Cloudflare\")) {\n return false;\n }\n try {\n const F = Function;\n new F(\"\");\n return true;\n }\n catch (_) {\n return false;\n }\n});\nexport function isPlainObject(o) {\n if (isObject(o) === false)\n return false;\n // modified constructor\n const ctor = o.constructor;\n if (ctor === undefined)\n return true;\n if (typeof ctor !== \"function\")\n return true;\n // modified prototype\n const prot = ctor.prototype;\n if (isObject(prot) === false)\n return false;\n // ctor doesn't have static `isPrototypeOf`\n if (Object.prototype.hasOwnProperty.call(prot, \"isPrototypeOf\") === false) {\n return false;\n }\n return true;\n}\nexport function shallowClone(o) {\n if (isPlainObject(o))\n return { ...o };\n if (Array.isArray(o))\n return [...o];\n return o;\n}\nexport function numKeys(data) {\n let keyCount = 0;\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n keyCount++;\n }\n }\n return keyCount;\n}\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return \"undefined\";\n case \"string\":\n return \"string\";\n case \"number\":\n return Number.isNaN(data) ? \"nan\" : \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"function\":\n return \"function\";\n case \"bigint\":\n return \"bigint\";\n case \"symbol\":\n return \"symbol\";\n case \"object\":\n if (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return \"promise\";\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return \"map\";\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return \"set\";\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return \"date\";\n }\n // @ts-ignore\n if (typeof File !== \"undefined\" && data instanceof File) {\n return \"file\";\n }\n return \"object\";\n default:\n throw new Error(`Unknown data type: ${t}`);\n }\n};\nexport const propertyKeyTypes = new Set([\"string\", \"number\", \"symbol\"]);\nexport const primitiveTypes = new Set([\"string\", \"number\", \"bigint\", \"boolean\", \"symbol\", \"undefined\"]);\nexport function escapeRegex(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n// zod-specific utils\nexport function clone(inst, def, params) {\n const cl = new inst._zod.constr(def ?? inst._zod.def);\n if (!def || params?.parent)\n cl._zod.parent = inst;\n return cl;\n}\nexport function normalizeParams(_params) {\n const params = _params;\n if (!params)\n return {};\n if (typeof params === \"string\")\n return { error: () => params };\n if (params?.message !== undefined) {\n if (params?.error !== undefined)\n throw new Error(\"Cannot specify both `message` and `error` params\");\n params.error = params.message;\n }\n delete params.message;\n if (typeof params.error === \"string\")\n return { ...params, error: () => params.error };\n return params;\n}\nexport function createTransparentProxy(getter) {\n let target;\n return new Proxy({}, {\n get(_, prop, receiver) {\n target ?? (target = getter());\n return Reflect.get(target, prop, receiver);\n },\n set(_, prop, value, receiver) {\n target ?? (target = getter());\n return Reflect.set(target, prop, value, receiver);\n },\n has(_, prop) {\n target ?? (target = getter());\n return Reflect.has(target, prop);\n },\n deleteProperty(_, prop) {\n target ?? (target = getter());\n return Reflect.deleteProperty(target, prop);\n },\n ownKeys(_) {\n target ?? (target = getter());\n return Reflect.ownKeys(target);\n },\n getOwnPropertyDescriptor(_, prop) {\n target ?? (target = getter());\n return Reflect.getOwnPropertyDescriptor(target, prop);\n },\n defineProperty(_, prop, descriptor) {\n target ?? (target = getter());\n return Reflect.defineProperty(target, prop, descriptor);\n },\n });\n}\nexport function stringifyPrimitive(value) {\n if (typeof value === \"bigint\")\n return value.toString() + \"n\";\n if (typeof value === \"string\")\n return `\"${value}\"`;\n return `${value}`;\n}\nexport function optionalKeys(shape) {\n return Object.keys(shape).filter((k) => {\n return shape[k]._zod.optin === \"optional\" && shape[k]._zod.optout === \"optional\";\n });\n}\nexport const NUMBER_FORMAT_RANGES = {\n safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n int32: [-2147483648, 2147483647],\n uint32: [0, 4294967295],\n float32: [-3.4028234663852886e38, 3.4028234663852886e38],\n float64: [-Number.MAX_VALUE, Number.MAX_VALUE],\n};\nexport const BIGINT_FORMAT_RANGES = {\n int64: [/* @__PURE__*/ BigInt(\"-9223372036854775808\"), /* @__PURE__*/ BigInt(\"9223372036854775807\")],\n uint64: [/* @__PURE__*/ BigInt(0), /* @__PURE__*/ BigInt(\"18446744073709551615\")],\n};\nexport function pick(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".pick() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = {};\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n newShape[key] = currDef.shape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function omit(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".omit() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = { ...schema._zod.def.shape };\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n delete newShape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function extend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to extend: expected a plain object\");\n }\n const checks = schema._zod.def.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n // Only throw if new shape overlaps with existing shape\n // Use getOwnPropertyDescriptor to check key existence without accessing values\n const existingShape = schema._zod.def.shape;\n for (const key in shape) {\n if (Object.getOwnPropertyDescriptor(existingShape, key) !== undefined) {\n throw new Error(\"Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.\");\n }\n }\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function safeExtend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to safeExtend: expected a plain object\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function merge(a, b) {\n const def = mergeDefs(a._zod.def, {\n get shape() {\n const _shape = { ...a._zod.def.shape, ...b._zod.def.shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n get catchall() {\n return b._zod.def.catchall;\n },\n checks: [], // delete existing checks\n });\n return clone(a, def);\n}\nexport function partial(Class, schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".partial() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in oldShape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n else {\n for (const key in oldShape) {\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function required(Class, schema, mask) {\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n else {\n for (const key in oldShape) {\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n });\n return clone(schema, def);\n}\n// invalid_type | too_big | too_small | invalid_format | not_multiple_of | unrecognized_keys | invalid_union | invalid_key | invalid_element | invalid_value | custom\nexport function aborted(x, startIndex = 0) {\n if (x.aborted === true)\n return true;\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue !== true) {\n return true;\n }\n }\n return false;\n}\nexport function prefixIssues(path, issues) {\n return issues.map((iss) => {\n var _a;\n (_a = iss).path ?? (_a.path = []);\n iss.path.unshift(path);\n return iss;\n });\n}\nexport function unwrapMessage(message) {\n return typeof message === \"string\" ? message : message?.message;\n}\nexport function finalizeIssue(iss, ctx, config) {\n const full = { ...iss, path: iss.path ?? [] };\n // for backwards compatibility\n if (!iss.message) {\n const message = unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ??\n unwrapMessage(ctx?.error?.(iss)) ??\n unwrapMessage(config.customError?.(iss)) ??\n unwrapMessage(config.localeError?.(iss)) ??\n \"Invalid input\";\n full.message = message;\n }\n // delete (full as any).def;\n delete full.inst;\n delete full.continue;\n if (!ctx?.reportInput) {\n delete full.input;\n }\n return full;\n}\nexport function getSizableOrigin(input) {\n if (input instanceof Set)\n return \"set\";\n if (input instanceof Map)\n return \"map\";\n // @ts-ignore\n if (input instanceof File)\n return \"file\";\n return \"unknown\";\n}\nexport function getLengthableOrigin(input) {\n if (Array.isArray(input))\n return \"array\";\n if (typeof input === \"string\")\n return \"string\";\n return \"unknown\";\n}\nexport function parsedType(data) {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"nan\" : \"number\";\n }\n case \"object\": {\n if (data === null) {\n return \"null\";\n }\n if (Array.isArray(data)) {\n return \"array\";\n }\n const obj = data;\n if (obj && Object.getPrototypeOf(obj) !== Object.prototype && \"constructor\" in obj && obj.constructor) {\n return obj.constructor.name;\n }\n }\n }\n return t;\n}\nexport function issue(...args) {\n const [iss, input, inst] = args;\n if (typeof iss === \"string\") {\n return {\n message: iss,\n code: \"custom\",\n input,\n inst,\n };\n }\n return { ...iss };\n}\nexport function cleanEnum(obj) {\n return Object.entries(obj)\n .filter(([k, _]) => {\n // return true if NaN, meaning it's not a number, thus a string key\n return Number.isNaN(Number.parseInt(k, 10));\n })\n .map((el) => el[1]);\n}\n// Codec utility functions\nexport function base64ToUint8Array(base64) {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n}\nexport function uint8ArrayToBase64(bytes) {\n let binaryString = \"\";\n for (let i = 0; i < bytes.length; i++) {\n binaryString += String.fromCharCode(bytes[i]);\n }\n return btoa(binaryString);\n}\nexport function base64urlToUint8Array(base64url) {\n const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = \"=\".repeat((4 - (base64.length % 4)) % 4);\n return base64ToUint8Array(base64 + padding);\n}\nexport function uint8ArrayToBase64url(bytes) {\n return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\nexport function hexToUint8Array(hex) {\n const cleanHex = hex.replace(/^0x/, \"\");\n if (cleanHex.length % 2 !== 0) {\n throw new Error(\"Invalid hex string length\");\n }\n const bytes = new Uint8Array(cleanHex.length / 2);\n for (let i = 0; i < cleanHex.length; i += 2) {\n bytes[i / 2] = Number.parseInt(cleanHex.slice(i, i + 2), 16);\n }\n return bytes;\n}\nexport function uint8ArrayToHex(bytes) {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n// instanceof\nexport class Class {\n constructor(..._args) { }\n}\n","import { $constructor } from \"./core.js\";\nimport * as util from \"./util.js\";\nconst initializer = (inst, def) => {\n inst.name = \"$ZodError\";\n Object.defineProperty(inst, \"_zod\", {\n value: inst._zod,\n enumerable: false,\n });\n Object.defineProperty(inst, \"issues\", {\n value: def,\n enumerable: false,\n });\n inst.message = JSON.stringify(def, util.jsonStringifyReplacer, 2);\n Object.defineProperty(inst, \"toString\", {\n value: () => inst.message,\n enumerable: false,\n });\n};\nexport const $ZodError = $constructor(\"$ZodError\", initializer);\nexport const $ZodRealError = $constructor(\"$ZodError\", initializer, { Parent: Error });\nexport function flattenError(error, mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of error.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n}\nexport function formatError(error, mapper = (issue) => issue.message) {\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n issue.errors.map((issues) => processError({ issues }));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues });\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues });\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 }\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(error);\n return fieldErrors;\n}\nexport function treeifyError(error, mapper = (issue) => issue.message) {\n const result = { errors: [] };\n const processError = (error, path = []) => {\n var _a, _b;\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n // regular union error\n issue.errors.map((issues) => processError({ issues }, issue.path));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues }, issue.path);\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues }, issue.path);\n }\n else {\n const fullpath = [...path, ...issue.path];\n if (fullpath.length === 0) {\n result.errors.push(mapper(issue));\n continue;\n }\n let curr = result;\n let i = 0;\n while (i < fullpath.length) {\n const el = fullpath[i];\n const terminal = i === fullpath.length - 1;\n if (typeof el === \"string\") {\n curr.properties ?? (curr.properties = {});\n (_a = curr.properties)[el] ?? (_a[el] = { errors: [] });\n curr = curr.properties[el];\n }\n else {\n curr.items ?? (curr.items = []);\n (_b = curr.items)[el] ?? (_b[el] = { errors: [] });\n curr = curr.items[el];\n }\n if (terminal) {\n curr.errors.push(mapper(issue));\n }\n i++;\n }\n }\n }\n };\n processError(error);\n return result;\n}\n/** Format a ZodError as a human-readable string in the following form.\n *\n * From\n *\n * ```ts\n * ZodError {\n * issues: [\n * {\n * expected: 'string',\n * code: 'invalid_type',\n * path: [ 'username' ],\n * message: 'Invalid input: expected string'\n * },\n * {\n * expected: 'number',\n * code: 'invalid_type',\n * path: [ 'favoriteNumbers', 1 ],\n * message: 'Invalid input: expected number'\n * }\n * ];\n * }\n * ```\n *\n * to\n *\n * ```\n * username\n * ✖ Expected number, received string at \"username\n * favoriteNumbers[0]\n * ✖ Invalid input: expected number\n * ```\n */\nexport function toDotPath(_path) {\n const segs = [];\n const path = _path.map((seg) => (typeof seg === \"object\" ? seg.key : seg));\n for (const seg of path) {\n if (typeof seg === \"number\")\n segs.push(`[${seg}]`);\n else if (typeof seg === \"symbol\")\n segs.push(`[${JSON.stringify(String(seg))}]`);\n else if (/[^\\w$]/.test(seg))\n segs.push(`[${JSON.stringify(seg)}]`);\n else {\n if (segs.length)\n segs.push(\".\");\n segs.push(seg);\n }\n }\n return segs.join(\"\");\n}\nexport function prettifyError(error) {\n const lines = [];\n // sort by path length\n const issues = [...error.issues].sort((a, b) => (a.path ?? []).length - (b.path ?? []).length);\n // Process each issue\n for (const issue of issues) {\n lines.push(`✖ ${issue.message}`);\n if (issue.path?.length)\n lines.push(` → at ${toDotPath(issue.path)}`);\n }\n // Convert Map to formatted string\n return lines.join(\"\\n\");\n}\n","import * as core from \"./core.js\";\nimport * as errors from \"./errors.js\";\nimport * as util from \"./util.js\";\nexport const _parse = (_Err) => (schema, value, _ctx, _params) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n if (result.issues.length) {\n const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, _params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parse = /* @__PURE__*/ _parse(errors.$ZodRealError);\nexport const _parseAsync = (_Err) => async (schema, value, _ctx, params) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n if (result.issues.length) {\n const e = new (params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parseAsync = /* @__PURE__*/ _parseAsync(errors.$ZodRealError);\nexport const _safeParse = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n return result.issues.length\n ? {\n success: false,\n error: new (_Err ?? errors.$ZodError)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParse = /* @__PURE__*/ _safeParse(errors.$ZodRealError);\nexport const _safeParseAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n return result.issues.length\n ? {\n success: false,\n error: new _Err(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParseAsync = /* @__PURE__*/ _safeParseAsync(errors.$ZodRealError);\nexport const _encode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _parse(_Err)(schema, value, ctx);\n};\nexport const encode = /* @__PURE__*/ _encode(errors.$ZodRealError);\nexport const _decode = (_Err) => (schema, value, _ctx) => {\n return _parse(_Err)(schema, value, _ctx);\n};\nexport const decode = /* @__PURE__*/ _decode(errors.$ZodRealError);\nexport const _encodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _parseAsync(_Err)(schema, value, ctx);\n};\nexport const encodeAsync = /* @__PURE__*/ _encodeAsync(errors.$ZodRealError);\nexport const _decodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _parseAsync(_Err)(schema, value, _ctx);\n};\nexport const decodeAsync = /* @__PURE__*/ _decodeAsync(errors.$ZodRealError);\nexport const _safeEncode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _safeParse(_Err)(schema, value, ctx);\n};\nexport const safeEncode = /* @__PURE__*/ _safeEncode(errors.$ZodRealError);\nexport const _safeDecode = (_Err) => (schema, value, _ctx) => {\n return _safeParse(_Err)(schema, value, _ctx);\n};\nexport const safeDecode = /* @__PURE__*/ _safeDecode(errors.$ZodRealError);\nexport const _safeEncodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _safeParseAsync(_Err)(schema, value, ctx);\n};\nexport const safeEncodeAsync = /* @__PURE__*/ _safeEncodeAsync(errors.$ZodRealError);\nexport const _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _safeParseAsync(_Err)(schema, value, _ctx);\n};\nexport const safeDecodeAsync = /* @__PURE__*/ _safeDecodeAsync(errors.$ZodRealError);\n","import * as util from \"./util.js\";\nexport const cuid = /^[cC][^\\s-]{8,}$/;\nexport const cuid2 = /^[0-9a-z]+$/;\nexport const ulid = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/;\nexport const xid = /^[0-9a-vA-V]{20}$/;\nexport const ksuid = /^[A-Za-z0-9]{27}$/;\nexport const nanoid = /^[a-zA-Z0-9_-]{21}$/;\n/** ISO 8601-1 duration regex. Does not support the 8601-2 extensions like negative durations or fractional/negative components. */\nexport const duration = /^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$/;\n/** Implements ISO 8601-2 extensions like explicit +- prefixes, mixing weeks with other units, and fractional/negative components. */\nexport const extendedDuration = /^[-+]?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/** A regex for any UUID-like identifier: 8-4-4-4-12 hex pattern */\nexport const guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/;\n/** Returns a regex for validating an RFC 9562/4122 UUID.\n *\n * @param version Optionally specify a version 1-8. If no version is specified, all versions are supported. */\nexport const uuid = (version) => {\n if (!version)\n return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;\n return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`);\n};\nexport const uuid4 = /*@__PURE__*/ uuid(4);\nexport const uuid6 = /*@__PURE__*/ uuid(6);\nexport const uuid7 = /*@__PURE__*/ uuid(7);\n/** Practical email validation */\nexport const email = /^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$/;\n/** Equivalent to the HTML5 input[type=email] validation implemented by browsers. Source: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email */\nexport const html5Email = /^[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/** The classic emailregex.com regex for RFC 5322-compliant emails */\nexport const rfc5322Email = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n/** A loose regex that allows Unicode characters, enforces length limits, and that's about it. */\nexport const unicodeEmail = /^[^\\s@\"]{1,64}@[^\\s@]{1,255}$/u;\nexport const idnEmail = unicodeEmail;\nexport const browserEmail = /^[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// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emoji = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nexport function emoji() {\n return new RegExp(_emoji, \"u\");\n}\nexport const ipv4 = /^(?:(?: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])$/;\nexport const ipv6 = /^(([0-9a-fA-F]{1,4}:){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}|:))$/;\nexport const mac = (delimiter) => {\n const escapedDelim = util.escapeRegex(delimiter ?? \":\");\n return new RegExp(`^(?:[0-9A-F]{2}${escapedDelim}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${escapedDelim}){5}[0-9a-f]{2}$`);\n};\nexport const cidrv4 = /^((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])\\/([0-9]|[1-2][0-9]|3[0-2])$/;\nexport const cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\\/(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\nexport const base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;\nexport const base64url = /^[A-Za-z0-9_-]*$/;\n// based on https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address\n// export const hostname: RegExp = /^([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+$/;\nexport const hostname = /^(?=.{1,253}\\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\\.?$/;\nexport const domain = /^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$/;\n// https://blog.stevenlevithan.com/archives/validate-phone-number#r4-3 (regex sans spaces)\n// E.164: leading digit must be 1-9; total digits (excluding '+') between 7-15\nexport const e164 = /^\\+[1-9]\\d{6,14}$/;\n// const dateSource = `((\\\\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 dateSource = `(?:(?:\\\\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])))`;\nexport const date = /*@__PURE__*/ new RegExp(`^${dateSource}$`);\nfunction timeSource(args) {\n const hhmm = `(?:[01]\\\\d|2[0-3]):[0-5]\\\\d`;\n const regex = typeof args.precision === \"number\"\n ? args.precision === -1\n ? `${hhmm}`\n : args.precision === 0\n ? `${hhmm}:[0-5]\\\\d`\n : `${hhmm}:[0-5]\\\\d\\\\.\\\\d{${args.precision}}`\n : `${hhmm}(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?`;\n return regex;\n}\nexport function time(args) {\n return new RegExp(`^${timeSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetime(args) {\n const time = timeSource({ precision: args.precision });\n const opts = [\"Z\"];\n if (args.local)\n opts.push(\"\");\n // if (args.offset) opts.push(`([+-]\\\\d{2}:\\\\d{2})`);\n if (args.offset)\n opts.push(`([+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)`);\n const timeRegex = `${time}(?:${opts.join(\"|\")})`;\n return new RegExp(`^${dateSource}T(?:${timeRegex})$`);\n}\nexport const string = (params) => {\n const regex = params ? `[\\\\s\\\\S]{${params?.minimum ?? 0},${params?.maximum ?? \"\"}}` : `[\\\\s\\\\S]*`;\n return new RegExp(`^${regex}$`);\n};\nexport const bigint = /^-?\\d+n?$/;\nexport const integer = /^-?\\d+$/;\nexport const number = /^-?\\d+(?:\\.\\d+)?$/;\nexport const boolean = /^(?:true|false)$/i;\nconst _null = /^null$/i;\nexport { _null as null };\nconst _undefined = /^undefined$/i;\nexport { _undefined as undefined };\n// regex for string with no uppercase letters\nexport const lowercase = /^[^A-Z]*$/;\n// regex for string with no lowercase letters\nexport const uppercase = /^[^a-z]*$/;\n// regex for hexadecimal strings (any length)\nexport const hex = /^[0-9a-fA-F]*$/;\n// Hash regexes for different algorithms and encodings\n// Helper function to create base64 regex with exact length and padding\nfunction fixedBase64(bodyLength, padding) {\n return new RegExp(`^[A-Za-z0-9+/]{${bodyLength}}${padding}$`);\n}\n// Helper function to create base64url regex with exact length (no padding)\nfunction fixedBase64url(length) {\n return new RegExp(`^[A-Za-z0-9_-]{${length}}$`);\n}\n// MD5 (16 bytes): base64 = 24 chars total (22 + \"==\")\nexport const md5_hex = /^[0-9a-fA-F]{32}$/;\nexport const md5_base64 = /*@__PURE__*/ fixedBase64(22, \"==\");\nexport const md5_base64url = /*@__PURE__*/ fixedBase64url(22);\n// SHA1 (20 bytes): base64 = 28 chars total (27 + \"=\")\nexport const sha1_hex = /^[0-9a-fA-F]{40}$/;\nexport const sha1_base64 = /*@__PURE__*/ fixedBase64(27, \"=\");\nexport const sha1_base64url = /*@__PURE__*/ fixedBase64url(27);\n// SHA256 (32 bytes): base64 = 44 chars total (43 + \"=\")\nexport const sha256_hex = /^[0-9a-fA-F]{64}$/;\nexport const sha256_base64 = /*@__PURE__*/ fixedBase64(43, \"=\");\nexport const sha256_base64url = /*@__PURE__*/ fixedBase64url(43);\n// SHA384 (48 bytes): base64 = 64 chars total (no padding)\nexport const sha384_hex = /^[0-9a-fA-F]{96}$/;\nexport const sha384_base64 = /*@__PURE__*/ fixedBase64(64, \"\");\nexport const sha384_base64url = /*@__PURE__*/ fixedBase64url(64);\n// SHA512 (64 bytes): base64 = 88 chars total (86 + \"==\")\nexport const sha512_hex = /^[0-9a-fA-F]{128}$/;\nexport const sha512_base64 = /*@__PURE__*/ fixedBase64(86, \"==\");\nexport const sha512_base64url = /*@__PURE__*/ fixedBase64url(86);\n","// import { $ZodType } from \"./schemas.js\";\nimport * as core from \"./core.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nexport const $ZodCheck = /*@__PURE__*/ core.$constructor(\"$ZodCheck\", (inst, def) => {\n var _a;\n inst._zod ?? (inst._zod = {});\n inst._zod.def = def;\n (_a = inst._zod).onattach ?? (_a.onattach = []);\n});\nconst numericOriginMap = {\n number: \"number\",\n bigint: \"bigint\",\n object: \"date\",\n};\nexport const $ZodCheckLessThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckLessThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.maximum : bag.exclusiveMaximum) ?? Number.POSITIVE_INFINITY;\n if (def.value < curr) {\n if (def.inclusive)\n bag.maximum = def.value;\n else\n bag.exclusiveMaximum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value <= def.value : payload.value < def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckGreaterThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckGreaterThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.minimum : bag.exclusiveMinimum) ?? Number.NEGATIVE_INFINITY;\n if (def.value > curr) {\n if (def.inclusive)\n bag.minimum = def.value;\n else\n bag.exclusiveMinimum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value >= def.value : payload.value > def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMultipleOf = \n/*@__PURE__*/ core.$constructor(\"$ZodCheckMultipleOf\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n var _a;\n (_a = inst._zod.bag).multipleOf ?? (_a.multipleOf = def.value);\n });\n inst._zod.check = (payload) => {\n if (typeof payload.value !== typeof def.value)\n throw new Error(\"Cannot mix number and bigint in multiple_of check.\");\n const isMultiple = typeof payload.value === \"bigint\"\n ? payload.value % def.value === BigInt(0)\n : util.floatSafeRemainder(payload.value, def.value) === 0;\n if (isMultiple)\n return;\n payload.issues.push({\n origin: typeof payload.value,\n code: \"not_multiple_of\",\n divisor: def.value,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckNumberFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n def.format = def.format || \"float64\";\n const isInt = def.format?.includes(\"int\");\n const origin = isInt ? \"int\" : \"number\";\n const [minimum, maximum] = util.NUMBER_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n if (isInt)\n bag.pattern = regexes.integer;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (isInt) {\n if (!Number.isInteger(input)) {\n // invalid_format issue\n // payload.issues.push({\n // expected: def.format,\n // format: def.format,\n // code: \"invalid_format\",\n // input,\n // inst,\n // });\n // invalid_type issue\n payload.issues.push({\n expected: origin,\n format: def.format,\n code: \"invalid_type\",\n continue: false,\n input,\n inst,\n });\n return;\n // not_multiple_of issue\n // payload.issues.push({\n // code: \"not_multiple_of\",\n // origin: \"number\",\n // input,\n // inst,\n // divisor: 1,\n // });\n }\n if (!Number.isSafeInteger(input)) {\n if (input > 0) {\n // too_big\n payload.issues.push({\n input,\n code: \"too_big\",\n maximum: Number.MAX_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n inclusive: true,\n continue: !def.abort,\n });\n }\n else {\n // too_small\n payload.issues.push({\n input,\n code: \"too_small\",\n minimum: Number.MIN_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n inclusive: true,\n continue: !def.abort,\n });\n }\n return;\n }\n }\n if (input < minimum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_small\",\n minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_big\",\n maximum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCheckBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckBigIntFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n const [minimum, maximum] = util.BIGINT_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (input < minimum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_small\",\n minimum: minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_big\",\n maximum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCheckMaxSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size <= def.maximum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size >= def.minimum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckSizeEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckSizeEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.size;\n bag.maximum = def.size;\n bag.size = def.size;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size === def.size)\n return;\n const tooBig = size > def.size;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n ...(tooBig ? { code: \"too_big\", maximum: def.size } : { code: \"too_small\", minimum: def.size }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMaxLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length <= def.maximum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length >= def.minimum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLengthEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckLengthEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.length;\n bag.maximum = def.length;\n bag.length = def.length;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length === def.length)\n return;\n const origin = util.getLengthableOrigin(input);\n const tooBig = length > def.length;\n payload.issues.push({\n origin,\n ...(tooBig ? { code: \"too_big\", maximum: def.length } : { code: \"too_small\", minimum: def.length }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckStringFormat\", (inst, def) => {\n var _a, _b;\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n if (def.pattern) {\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(def.pattern);\n }\n });\n if (def.pattern)\n (_a = inst._zod).check ?? (_a.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n ...(def.pattern ? { pattern: def.pattern.toString() } : {}),\n inst,\n continue: !def.abort,\n });\n });\n else\n (_b = inst._zod).check ?? (_b.check = () => { });\n});\nexport const $ZodCheckRegex = /*@__PURE__*/ core.$constructor(\"$ZodCheckRegex\", (inst, def) => {\n $ZodCheckStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"regex\",\n input: payload.value,\n pattern: def.pattern.toString(),\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLowerCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckLowerCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.lowercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckUpperCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckUpperCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.uppercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckIncludes = /*@__PURE__*/ core.$constructor(\"$ZodCheckIncludes\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const escapedRegex = util.escapeRegex(def.includes);\n const pattern = new RegExp(typeof def.position === \"number\" ? `^.{${def.position}}${escapedRegex}` : escapedRegex);\n def.pattern = pattern;\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.includes(def.includes, def.position))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"includes\",\n includes: def.includes,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStartsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckStartsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`^${util.escapeRegex(def.prefix)}.*`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.startsWith(def.prefix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"starts_with\",\n prefix: def.prefix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckEndsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckEndsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`.*${util.escapeRegex(def.suffix)}$`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.endsWith(def.suffix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"ends_with\",\n suffix: def.suffix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n///////////////////////////////////\n///// $ZodCheckProperty /////\n///////////////////////////////////\nfunction handleCheckPropertyResult(result, payload, property) {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(property, result.issues));\n }\n}\nexport const $ZodCheckProperty = /*@__PURE__*/ core.$constructor(\"$ZodCheckProperty\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n const result = def.schema._zod.run({\n value: payload.value[def.property],\n issues: [],\n }, {});\n if (result instanceof Promise) {\n return result.then((result) => handleCheckPropertyResult(result, payload, def.property));\n }\n handleCheckPropertyResult(result, payload, def.property);\n return;\n };\n});\nexport const $ZodCheckMimeType = /*@__PURE__*/ core.$constructor(\"$ZodCheckMimeType\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const mimeSet = new Set(def.mime);\n inst._zod.onattach.push((inst) => {\n inst._zod.bag.mime = def.mime;\n });\n inst._zod.check = (payload) => {\n if (mimeSet.has(payload.value.type))\n return;\n payload.issues.push({\n code: \"invalid_value\",\n values: def.mime,\n input: payload.value.type,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckOverwrite = /*@__PURE__*/ core.$constructor(\"$ZodCheckOverwrite\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n payload.value = def.tx(payload.value);\n };\n});\n","export class Doc {\n constructor(args = []) {\n this.content = [];\n this.indent = 0;\n if (this)\n this.args = args;\n }\n indented(fn) {\n this.indent += 1;\n fn(this);\n this.indent -= 1;\n }\n write(arg) {\n if (typeof arg === \"function\") {\n arg(this, { execution: \"sync\" });\n arg(this, { execution: \"async\" });\n return;\n }\n const content = arg;\n const lines = content.split(\"\\n\").filter((x) => x);\n const minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length));\n const dedented = lines.map((x) => x.slice(minIndent)).map((x) => \" \".repeat(this.indent * 2) + x);\n for (const line of dedented) {\n this.content.push(line);\n }\n }\n compile() {\n const F = Function;\n const args = this?.args;\n const content = this?.content ?? [``];\n const lines = [...content.map((x) => ` ${x}`)];\n // console.log(lines.join(\"\\n\"));\n return new F(...args, lines.join(\"\\n\"));\n }\n}\n","export const version = {\n major: 4,\n minor: 3,\n patch: 5,\n};\n","import * as checks from \"./checks.js\";\nimport * as core from \"./core.js\";\nimport { Doc } from \"./doc.js\";\nimport { parse, parseAsync, safeParse, safeParseAsync } from \"./parse.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nimport { version } from \"./versions.js\";\nexport const $ZodType = /*@__PURE__*/ core.$constructor(\"$ZodType\", (inst, def) => {\n var _a;\n inst ?? (inst = {});\n inst._zod.def = def; // set _def property\n inst._zod.bag = inst._zod.bag || {}; // initialize _bag object\n inst._zod.version = version;\n const checks = [...(inst._zod.def.checks ?? [])];\n // if inst is itself a checks.$ZodCheck, run it as a check\n if (inst._zod.traits.has(\"$ZodCheck\")) {\n checks.unshift(inst);\n }\n for (const ch of checks) {\n for (const fn of ch._zod.onattach) {\n fn(inst);\n }\n }\n if (checks.length === 0) {\n // deferred initializer\n // inst._zod.parse is not yet defined\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n inst._zod.deferred?.push(() => {\n inst._zod.run = inst._zod.parse;\n });\n }\n else {\n const runChecks = (payload, checks, ctx) => {\n let isAborted = util.aborted(payload);\n let asyncResult;\n for (const ch of checks) {\n if (ch._zod.def.when) {\n const shouldRun = ch._zod.def.when(payload);\n if (!shouldRun)\n continue;\n }\n else if (isAborted) {\n continue;\n }\n const currLen = payload.issues.length;\n const _ = ch._zod.check(payload);\n if (_ instanceof Promise && ctx?.async === false) {\n throw new core.$ZodAsyncError();\n }\n if (asyncResult || _ instanceof Promise) {\n asyncResult = (asyncResult ?? Promise.resolve()).then(async () => {\n await _;\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n return;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n });\n }\n else {\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n continue;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n }\n }\n if (asyncResult) {\n return asyncResult.then(() => {\n return payload;\n });\n }\n return payload;\n };\n const handleCanaryResult = (canary, payload, ctx) => {\n // abort if the canary is aborted\n if (util.aborted(canary)) {\n canary.aborted = true;\n return canary;\n }\n // run checks first, then\n const checkResult = runChecks(payload, checks, ctx);\n if (checkResult instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return checkResult.then((checkResult) => inst._zod.parse(checkResult, ctx));\n }\n return inst._zod.parse(checkResult, ctx);\n };\n inst._zod.run = (payload, ctx) => {\n if (ctx.skipChecks) {\n return inst._zod.parse(payload, ctx);\n }\n if (ctx.direction === \"backward\") {\n // run canary\n // initial pass (no checks)\n const canary = inst._zod.parse({ value: payload.value, issues: [] }, { ...ctx, skipChecks: true });\n if (canary instanceof Promise) {\n return canary.then((canary) => {\n return handleCanaryResult(canary, payload, ctx);\n });\n }\n return handleCanaryResult(canary, payload, ctx);\n }\n // forward\n const result = inst._zod.parse(payload, ctx);\n if (result instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return result.then((result) => runChecks(result, checks, ctx));\n }\n return runChecks(result, checks, ctx);\n };\n }\n // Lazy initialize ~standard to avoid creating objects for every schema\n util.defineLazy(inst, \"~standard\", () => ({\n validate: (value) => {\n try {\n const r = safeParse(inst, value);\n return r.success ? { value: r.data } : { issues: r.error?.issues };\n }\n catch (_) {\n return safeParseAsync(inst, value).then((r) => (r.success ? { value: r.data } : { issues: r.error?.issues }));\n }\n },\n vendor: \"zod\",\n version: 1,\n }));\n});\nexport { clone } from \"./util.js\";\nexport const $ZodString = /*@__PURE__*/ core.$constructor(\"$ZodString\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = [...(inst?._zod.bag?.patterns ?? [])].pop() ?? regexes.string(inst._zod.bag);\n inst._zod.parse = (payload, _) => {\n if (def.coerce)\n try {\n payload.value = String(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"string\")\n return payload;\n payload.issues.push({\n expected: \"string\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodStringFormat\", (inst, def) => {\n // check initialization must come first\n checks.$ZodCheckStringFormat.init(inst, def);\n $ZodString.init(inst, def);\n});\nexport const $ZodGUID = /*@__PURE__*/ core.$constructor(\"$ZodGUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.guid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodUUID = /*@__PURE__*/ core.$constructor(\"$ZodUUID\", (inst, def) => {\n if (def.version) {\n const versionMap = {\n v1: 1,\n v2: 2,\n v3: 3,\n v4: 4,\n v5: 5,\n v6: 6,\n v7: 7,\n v8: 8,\n };\n const v = versionMap[def.version];\n if (v === undefined)\n throw new Error(`Invalid UUID version: \"${def.version}\"`);\n def.pattern ?? (def.pattern = regexes.uuid(v));\n }\n else\n def.pattern ?? (def.pattern = regexes.uuid());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodEmail = /*@__PURE__*/ core.$constructor(\"$ZodEmail\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.email);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodURL = /*@__PURE__*/ core.$constructor(\"$ZodURL\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n try {\n // Trim whitespace from input\n const trimmed = payload.value.trim();\n // @ts-ignore\n const url = new URL(trimmed);\n if (def.hostname) {\n def.hostname.lastIndex = 0;\n if (!def.hostname.test(url.hostname)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid hostname\",\n pattern: def.hostname.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n if (def.protocol) {\n def.protocol.lastIndex = 0;\n if (!def.protocol.test(url.protocol.endsWith(\":\") ? url.protocol.slice(0, -1) : url.protocol)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid protocol\",\n pattern: def.protocol.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n // Set the output value based on normalize flag\n if (def.normalize) {\n // Use normalized URL\n payload.value = url.href;\n }\n else {\n // Preserve the original input (trimmed)\n payload.value = trimmed;\n }\n return;\n }\n catch (_) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodEmoji = /*@__PURE__*/ core.$constructor(\"$ZodEmoji\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.emoji());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodNanoID = /*@__PURE__*/ core.$constructor(\"$ZodNanoID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.nanoid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID = /*@__PURE__*/ core.$constructor(\"$ZodCUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID2 = /*@__PURE__*/ core.$constructor(\"$ZodCUID2\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid2);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodULID = /*@__PURE__*/ core.$constructor(\"$ZodULID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ulid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodXID = /*@__PURE__*/ core.$constructor(\"$ZodXID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.xid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodKSUID = /*@__PURE__*/ core.$constructor(\"$ZodKSUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ksuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODateTime = /*@__PURE__*/ core.$constructor(\"$ZodISODateTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.datetime(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODate = /*@__PURE__*/ core.$constructor(\"$ZodISODate\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.date);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISOTime = /*@__PURE__*/ core.$constructor(\"$ZodISOTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.time(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODuration = /*@__PURE__*/ core.$constructor(\"$ZodISODuration\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.duration);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodIPv4 = /*@__PURE__*/ core.$constructor(\"$ZodIPv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv4);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `ipv4`;\n});\nexport const $ZodIPv6 = /*@__PURE__*/ core.$constructor(\"$ZodIPv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv6);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `ipv6`;\n inst._zod.check = (payload) => {\n try {\n // @ts-ignore\n new URL(`http://[${payload.value}]`);\n // return;\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"ipv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodMAC = /*@__PURE__*/ core.$constructor(\"$ZodMAC\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.mac(def.delimiter));\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `mac`;\n});\nexport const $ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv4);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv6); // not used for validation\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n const parts = payload.value.split(\"/\");\n try {\n if (parts.length !== 2)\n throw new Error();\n const [address, prefix] = parts;\n if (!prefix)\n throw new Error();\n const prefixNum = Number(prefix);\n if (`${prefixNum}` !== prefix)\n throw new Error();\n if (prefixNum < 0 || prefixNum > 128)\n throw new Error();\n // @ts-ignore\n new URL(`http://[${address}]`);\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"cidrv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64(data) {\n if (data === \"\")\n return true;\n if (data.length % 4 !== 0)\n return false;\n try {\n // @ts-ignore\n atob(data);\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodBase64 = /*@__PURE__*/ core.$constructor(\"$ZodBase64\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.contentEncoding = \"base64\";\n inst._zod.check = (payload) => {\n if (isValidBase64(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64URL(data) {\n if (!regexes.base64url.test(data))\n return false;\n const base64 = data.replace(/[-_]/g, (c) => (c === \"-\" ? \"+\" : \"/\"));\n const padded = base64.padEnd(Math.ceil(base64.length / 4) * 4, \"=\");\n return isValidBase64(padded);\n}\nexport const $ZodBase64URL = /*@__PURE__*/ core.$constructor(\"$ZodBase64URL\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64url);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.contentEncoding = \"base64url\";\n inst._zod.check = (payload) => {\n if (isValidBase64URL(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodE164 = /*@__PURE__*/ core.$constructor(\"$ZodE164\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.e164);\n $ZodStringFormat.init(inst, def);\n});\n////////////////////////////// ZodJWT //////////////////////////////\nexport function isValidJWT(token, algorithm = null) {\n try {\n const tokensParts = token.split(\".\");\n if (tokensParts.length !== 3)\n return false;\n const [header] = tokensParts;\n if (!header)\n return false;\n // @ts-ignore\n const parsedHeader = JSON.parse(atob(header));\n if (\"typ\" in parsedHeader && parsedHeader?.typ !== \"JWT\")\n return false;\n if (!parsedHeader.alg)\n return false;\n if (algorithm && (!(\"alg\" in parsedHeader) || parsedHeader.alg !== algorithm))\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodJWT = /*@__PURE__*/ core.$constructor(\"$ZodJWT\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (isValidJWT(payload.value, def.alg))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"jwt\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCustomStringFormat\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (def.fn(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodNumber = /*@__PURE__*/ core.$constructor(\"$ZodNumber\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = inst._zod.bag.pattern ?? regexes.number;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Number(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"number\" && !Number.isNaN(input) && Number.isFinite(input)) {\n return payload;\n }\n const received = typeof input === \"number\"\n ? Number.isNaN(input)\n ? \"NaN\"\n : !Number.isFinite(input)\n ? \"Infinity\"\n : undefined\n : undefined;\n payload.issues.push({\n expected: \"number\",\n code: \"invalid_type\",\n input,\n inst,\n ...(received ? { received } : {}),\n });\n return payload;\n };\n});\nexport const $ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodNumberFormat\", (inst, def) => {\n checks.$ZodCheckNumberFormat.init(inst, def);\n $ZodNumber.init(inst, def); // no format checks\n});\nexport const $ZodBoolean = /*@__PURE__*/ core.$constructor(\"$ZodBoolean\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.boolean;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Boolean(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"boolean\")\n return payload;\n payload.issues.push({\n expected: \"boolean\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigInt = /*@__PURE__*/ core.$constructor(\"$ZodBigInt\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.bigint;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = BigInt(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"bigint\")\n return payload;\n payload.issues.push({\n expected: \"bigint\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodBigIntFormat\", (inst, def) => {\n checks.$ZodCheckBigIntFormat.init(inst, def);\n $ZodBigInt.init(inst, def); // no format checks\n});\nexport const $ZodSymbol = /*@__PURE__*/ core.$constructor(\"$ZodSymbol\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"symbol\")\n return payload;\n payload.issues.push({\n expected: \"symbol\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodUndefined = /*@__PURE__*/ core.$constructor(\"$ZodUndefined\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.undefined;\n inst._zod.values = new Set([undefined]);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"undefined\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodNull = /*@__PURE__*/ core.$constructor(\"$ZodNull\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.null;\n inst._zod.values = new Set([null]);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (input === null)\n return payload;\n payload.issues.push({\n expected: \"null\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodAny = /*@__PURE__*/ core.$constructor(\"$ZodAny\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodUnknown = /*@__PURE__*/ core.$constructor(\"$ZodUnknown\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodNever = /*@__PURE__*/ core.$constructor(\"$ZodNever\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n payload.issues.push({\n expected: \"never\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodVoid = /*@__PURE__*/ core.$constructor(\"$ZodVoid\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"void\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodDate = /*@__PURE__*/ core.$constructor(\"$ZodDate\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce) {\n try {\n payload.value = new Date(payload.value);\n }\n catch (_err) { }\n }\n const input = payload.value;\n const isDate = input instanceof Date;\n const isValidDate = isDate && !Number.isNaN(input.getTime());\n if (isValidDate)\n return payload;\n payload.issues.push({\n expected: \"date\",\n code: \"invalid_type\",\n input,\n ...(isDate ? { received: \"Invalid Date\" } : {}),\n inst,\n });\n return payload;\n };\n});\nfunction handleArrayResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodArray = /*@__PURE__*/ core.$constructor(\"$ZodArray\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n expected: \"array\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = Array(input.length);\n const proms = [];\n for (let i = 0; i < input.length; i++) {\n const item = input[i];\n const result = def.element._zod.run({\n value: item,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleArrayResult(result, payload, i)));\n }\n else {\n handleArrayResult(result, payload, i);\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload; //handleArrayResultsAsync(parseResults, final);\n };\n});\nfunction handlePropertyResult(result, final, key, input, isOptionalOut) {\n if (result.issues.length) {\n // For optional-out schemas, ignore errors on absent keys\n if (isOptionalOut && !(key in input)) {\n return;\n }\n final.issues.push(...util.prefixIssues(key, result.issues));\n }\n if (result.value === undefined) {\n if (key in input) {\n final.value[key] = undefined;\n }\n }\n else {\n final.value[key] = result.value;\n }\n}\nfunction normalizeDef(def) {\n const keys = Object.keys(def.shape);\n for (const k of keys) {\n if (!def.shape?.[k]?._zod?.traits?.has(\"$ZodType\")) {\n throw new Error(`Invalid element at key \"${k}\": expected a Zod schema`);\n }\n }\n const okeys = util.optionalKeys(def.shape);\n return {\n ...def,\n keys,\n keySet: new Set(keys),\n numKeys: keys.length,\n optionalKeys: new Set(okeys),\n };\n}\nfunction handleCatchall(proms, input, payload, ctx, def, inst) {\n const unrecognized = [];\n // iterate over input keys\n const keySet = def.keySet;\n const _catchall = def.catchall._zod;\n const t = _catchall.def.type;\n const isOptionalOut = _catchall.optout === \"optional\";\n for (const key in input) {\n if (keySet.has(key))\n continue;\n if (t === \"never\") {\n unrecognized.push(key);\n continue;\n }\n const r = _catchall.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalOut)));\n }\n else {\n handlePropertyResult(r, payload, key, input, isOptionalOut);\n }\n }\n if (unrecognized.length) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n keys: unrecognized,\n input,\n inst,\n });\n }\n if (!proms.length)\n return payload;\n return Promise.all(proms).then(() => {\n return payload;\n });\n}\nexport const $ZodObject = /*@__PURE__*/ core.$constructor(\"$ZodObject\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodType.init(inst, def);\n // const sh = def.shape;\n const desc = Object.getOwnPropertyDescriptor(def, \"shape\");\n if (!desc?.get) {\n const sh = def.shape;\n Object.defineProperty(def, \"shape\", {\n get: () => {\n const newSh = { ...sh };\n Object.defineProperty(def, \"shape\", {\n value: newSh,\n });\n return newSh;\n },\n });\n }\n const _normalized = util.cached(() => normalizeDef(def));\n util.defineLazy(inst._zod, \"propValues\", () => {\n const shape = def.shape;\n const propValues = {};\n for (const key in shape) {\n const field = shape[key]._zod;\n if (field.values) {\n propValues[key] ?? (propValues[key] = new Set());\n for (const v of field.values)\n propValues[key].add(v);\n }\n }\n return propValues;\n });\n const isObject = util.isObject;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = {};\n const proms = [];\n const shape = value.shape;\n for (const key of value.keys) {\n const el = shape[key];\n const isOptionalOut = el._zod.optout === \"optional\";\n const r = el._zod.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalOut)));\n }\n else {\n handlePropertyResult(r, payload, key, input, isOptionalOut);\n }\n }\n if (!catchall) {\n return proms.length ? Promise.all(proms).then(() => payload) : payload;\n }\n return handleCatchall(proms, input, payload, ctx, _normalized.value, inst);\n };\n});\nexport const $ZodObjectJIT = /*@__PURE__*/ core.$constructor(\"$ZodObjectJIT\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodObject.init(inst, def);\n const superParse = inst._zod.parse;\n const _normalized = util.cached(() => normalizeDef(def));\n const generateFastpass = (shape) => {\n const doc = new Doc([\"shape\", \"payload\", \"ctx\"]);\n const normalized = _normalized.value;\n const parseStr = (key) => {\n const k = util.esc(key);\n return `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`;\n };\n doc.write(`const input = payload.value;`);\n const ids = Object.create(null);\n let counter = 0;\n for (const key of normalized.keys) {\n ids[key] = `key_${counter++}`;\n }\n // A: preserve key order {\n doc.write(`const newResult = {};`);\n for (const key of normalized.keys) {\n const id = ids[key];\n const k = util.esc(key);\n const schema = shape[key];\n const isOptionalOut = schema?._zod?.optout === \"optional\";\n doc.write(`const ${id} = ${parseStr(key)};`);\n if (isOptionalOut) {\n // For optional-out schemas, ignore errors on absent keys\n doc.write(`\n if (${id}.issues.length) {\n if (${k} in input) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n else {\n doc.write(`\n if (${id}.issues.length) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n }\n doc.write(`payload.value = newResult;`);\n doc.write(`return payload;`);\n const fn = doc.compile();\n return (payload, ctx) => fn(shape, payload, ctx);\n };\n let fastpass;\n const isObject = util.isObject;\n const jit = !core.globalConfig.jitless;\n const allowsEval = util.allowsEval;\n const fastEnabled = jit && allowsEval.value; // && !def.catchall;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n if (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) {\n // always synchronous\n if (!fastpass)\n fastpass = generateFastpass(def.shape);\n payload = fastpass(payload, ctx);\n if (!catchall)\n return payload;\n return handleCatchall([], input, payload, ctx, value, inst);\n }\n return superParse(payload, ctx);\n };\n});\nfunction handleUnionResults(results, final, inst, ctx) {\n for (const result of results) {\n if (result.issues.length === 0) {\n final.value = result.value;\n return final;\n }\n }\n const nonaborted = results.filter((r) => !util.aborted(r));\n if (nonaborted.length === 1) {\n final.value = nonaborted[0].value;\n return nonaborted[0];\n }\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n return final;\n}\nexport const $ZodUnion = /*@__PURE__*/ core.$constructor(\"$ZodUnion\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.options.some((o) => o._zod.optin === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"optout\", () => def.options.some((o) => o._zod.optout === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"values\", () => {\n if (def.options.every((o) => o._zod.values)) {\n return new Set(def.options.flatMap((option) => Array.from(option._zod.values)));\n }\n return undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n if (def.options.every((o) => o._zod.pattern)) {\n const patterns = def.options.map((o) => o._zod.pattern);\n return new RegExp(`^(${patterns.map((p) => util.cleanRegex(p.source)).join(\"|\")})$`);\n }\n return undefined;\n });\n const single = def.options.length === 1;\n const first = def.options[0]._zod.run;\n inst._zod.parse = (payload, ctx) => {\n if (single) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n if (result.issues.length === 0)\n return result;\n results.push(result);\n }\n }\n if (!async)\n return handleUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleUnionResults(results, payload, inst, ctx);\n });\n };\n});\nfunction handleExclusiveUnionResults(results, final, inst, ctx) {\n const successes = results.filter((r) => r.issues.length === 0);\n if (successes.length === 1) {\n final.value = successes[0].value;\n return final;\n }\n if (successes.length === 0) {\n // No matches - same as regular union\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n }\n else {\n // Multiple matches - exclusive union failure\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: [],\n inclusive: false,\n });\n }\n return final;\n}\nexport const $ZodXor = /*@__PURE__*/ core.$constructor(\"$ZodXor\", (inst, def) => {\n $ZodUnion.init(inst, def);\n def.inclusive = false;\n const single = def.options.length === 1;\n const first = def.options[0]._zod.run;\n inst._zod.parse = (payload, ctx) => {\n if (single) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n results.push(result);\n }\n }\n if (!async)\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n });\n };\n});\nexport const $ZodDiscriminatedUnion = \n/*@__PURE__*/\ncore.$constructor(\"$ZodDiscriminatedUnion\", (inst, def) => {\n def.inclusive = false;\n $ZodUnion.init(inst, def);\n const _super = inst._zod.parse;\n util.defineLazy(inst._zod, \"propValues\", () => {\n const propValues = {};\n for (const option of def.options) {\n const pv = option._zod.propValues;\n if (!pv || Object.keys(pv).length === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(option)}\"`);\n for (const [k, v] of Object.entries(pv)) {\n if (!propValues[k])\n propValues[k] = new Set();\n for (const val of v) {\n propValues[k].add(val);\n }\n }\n }\n return propValues;\n });\n const disc = util.cached(() => {\n const opts = def.options;\n const map = new Map();\n for (const o of opts) {\n const values = o._zod.propValues?.[def.discriminator];\n if (!values || values.size === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(o)}\"`);\n for (const v of values) {\n if (map.has(v)) {\n throw new Error(`Duplicate discriminator value \"${String(v)}\"`);\n }\n map.set(v, o);\n }\n }\n return map;\n });\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isObject(input)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"object\",\n input,\n inst,\n });\n return payload;\n }\n const opt = disc.value.get(input?.[def.discriminator]);\n if (opt) {\n return opt._zod.run(payload, ctx);\n }\n if (def.unionFallback) {\n return _super(payload, ctx);\n }\n // no matching discriminator\n payload.issues.push({\n code: \"invalid_union\",\n errors: [],\n note: \"No matching discriminator\",\n discriminator: def.discriminator,\n input,\n path: [def.discriminator],\n inst,\n });\n return payload;\n };\n});\nexport const $ZodIntersection = /*@__PURE__*/ core.$constructor(\"$ZodIntersection\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n const left = def.left._zod.run({ value: input, issues: [] }, ctx);\n const right = def.right._zod.run({ value: input, issues: [] }, ctx);\n const async = left instanceof Promise || right instanceof Promise;\n if (async) {\n return Promise.all([left, right]).then(([left, right]) => {\n return handleIntersectionResults(payload, left, right);\n });\n }\n return handleIntersectionResults(payload, left, right);\n };\n});\nfunction mergeValues(a, b) {\n // const aType = parse.t(a);\n // const bType = parse.t(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n if (a instanceof Date && b instanceof Date && +a === +b) {\n return { valid: true, data: a };\n }\n if (util.isPlainObject(a) && util.isPlainObject(b)) {\n const bKeys = Object.keys(b);\n const sharedKeys = Object.keys(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 {\n valid: false,\n mergeErrorPath: [key, ...sharedValue.mergeErrorPath],\n };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return { valid: false, mergeErrorPath: [] };\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 {\n valid: false,\n mergeErrorPath: [index, ...sharedValue.mergeErrorPath],\n };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n return { valid: false, mergeErrorPath: [] };\n}\nfunction handleIntersectionResults(result, left, right) {\n // Track which side(s) report each key as unrecognized\n const unrecKeys = new Map();\n let unrecIssue;\n for (const iss of left.issues) {\n if (iss.code === \"unrecognized_keys\") {\n unrecIssue ?? (unrecIssue = iss);\n for (const k of iss.keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k).l = true;\n }\n }\n else {\n result.issues.push(iss);\n }\n }\n for (const iss of right.issues) {\n if (iss.code === \"unrecognized_keys\") {\n for (const k of iss.keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k).r = true;\n }\n }\n else {\n result.issues.push(iss);\n }\n }\n // Report only keys unrecognized by BOTH sides\n const bothKeys = [...unrecKeys].filter(([, f]) => f.l && f.r).map(([k]) => k);\n if (bothKeys.length && unrecIssue) {\n result.issues.push({ ...unrecIssue, keys: bothKeys });\n }\n if (util.aborted(result))\n return result;\n const merged = mergeValues(left.value, right.value);\n if (!merged.valid) {\n throw new Error(`Unmergable intersection. Error path: ` + `${JSON.stringify(merged.mergeErrorPath)}`);\n }\n result.value = merged.data;\n return result;\n}\nexport const $ZodTuple = /*@__PURE__*/ core.$constructor(\"$ZodTuple\", (inst, def) => {\n $ZodType.init(inst, def);\n const items = def.items;\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n input,\n inst,\n expected: \"tuple\",\n code: \"invalid_type\",\n });\n return payload;\n }\n payload.value = [];\n const proms = [];\n const reversedIndex = [...items].reverse().findIndex((item) => item._zod.optin !== \"optional\");\n const optStart = reversedIndex === -1 ? 0 : items.length - reversedIndex;\n if (!def.rest) {\n const tooBig = input.length > items.length;\n const tooSmall = input.length < optStart - 1;\n if (tooBig || tooSmall) {\n payload.issues.push({\n ...(tooBig\n ? { code: \"too_big\", maximum: items.length, inclusive: true }\n : { code: \"too_small\", minimum: items.length }),\n input,\n inst,\n origin: \"array\",\n });\n return payload;\n }\n }\n let i = -1;\n for (const item of items) {\n i++;\n if (i >= input.length)\n if (i >= optStart)\n continue;\n const result = item._zod.run({\n value: input[i],\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n if (def.rest) {\n const rest = input.slice(items.length);\n for (const el of rest) {\n i++;\n const result = def.rest._zod.run({\n value: el,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleTupleResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodRecord = /*@__PURE__*/ core.$constructor(\"$ZodRecord\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isPlainObject(input)) {\n payload.issues.push({\n expected: \"record\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n const values = def.keyType._zod.values;\n if (values) {\n payload.value = {};\n const recordKeys = new Set();\n for (const key of values) {\n if (typeof key === \"string\" || typeof key === \"number\" || typeof key === \"symbol\") {\n recordKeys.add(typeof key === \"number\" ? key.toString() : key);\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[key] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[key] = result.value;\n }\n }\n }\n let unrecognized;\n for (const key in input) {\n if (!recordKeys.has(key)) {\n unrecognized = unrecognized ?? [];\n unrecognized.push(key);\n }\n }\n if (unrecognized && unrecognized.length > 0) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n input,\n inst,\n keys: unrecognized,\n });\n }\n }\n else {\n payload.value = {};\n for (const key of Reflect.ownKeys(input)) {\n if (key === \"__proto__\")\n continue;\n let keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n if (keyResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n // Numeric string fallback: if key failed with \"expected number\", retry with Number(key)\n const checkNumericKey = typeof key === \"string\" &&\n regexes.number.test(key) &&\n keyResult.issues.length &&\n keyResult.issues.some((iss) => iss.code === \"invalid_type\" && iss.expected === \"number\");\n if (checkNumericKey) {\n const retryResult = def.keyType._zod.run({ value: Number(key), issues: [] }, ctx);\n if (retryResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n if (retryResult.issues.length === 0) {\n keyResult = retryResult;\n }\n }\n if (keyResult.issues.length) {\n if (def.mode === \"loose\") {\n // Pass through unchanged\n payload.value[key] = input[key];\n }\n else {\n // Default \"strict\" behavior: error on invalid key\n payload.issues.push({\n code: \"invalid_key\",\n origin: \"record\",\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n input: key,\n path: [key],\n inst,\n });\n }\n continue;\n }\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload;\n };\n});\nexport const $ZodMap = /*@__PURE__*/ core.$constructor(\"$ZodMap\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Map)) {\n payload.issues.push({\n expected: \"map\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n payload.value = new Map();\n for (const [key, value] of input) {\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n const valueResult = def.valueType._zod.run({ value: value, issues: [] }, ctx);\n if (keyResult instanceof Promise || valueResult instanceof Promise) {\n proms.push(Promise.all([keyResult, valueResult]).then(([keyResult, valueResult]) => {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }));\n }\n else {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleMapResult(keyResult, valueResult, final, key, input, inst, ctx) {\n if (keyResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, keyResult.issues));\n }\n else {\n final.issues.push({\n code: \"invalid_key\",\n origin: \"map\",\n input,\n inst,\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n if (valueResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, valueResult.issues));\n }\n else {\n final.issues.push({\n origin: \"map\",\n code: \"invalid_element\",\n input,\n inst,\n key: key,\n issues: valueResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n final.value.set(keyResult.value, valueResult.value);\n}\nexport const $ZodSet = /*@__PURE__*/ core.$constructor(\"$ZodSet\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Set)) {\n payload.issues.push({\n input,\n inst,\n expected: \"set\",\n code: \"invalid_type\",\n });\n return payload;\n }\n const proms = [];\n payload.value = new Set();\n for (const item of input) {\n const result = def.valueType._zod.run({ value: item, issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleSetResult(result, payload)));\n }\n else\n handleSetResult(result, payload);\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleSetResult(result, final) {\n if (result.issues.length) {\n final.issues.push(...result.issues);\n }\n final.value.add(result.value);\n}\nexport const $ZodEnum = /*@__PURE__*/ core.$constructor(\"$ZodEnum\", (inst, def) => {\n $ZodType.init(inst, def);\n const values = util.getEnumValues(def.entries);\n const valuesSet = new Set(values);\n inst._zod.values = valuesSet;\n inst._zod.pattern = new RegExp(`^(${values\n .filter((k) => util.propertyKeyTypes.has(typeof k))\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o.toString()))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (valuesSet.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodLiteral = /*@__PURE__*/ core.$constructor(\"$ZodLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n if (def.values.length === 0) {\n throw new Error(\"Cannot create literal schema with no valid values\");\n }\n const values = new Set(def.values);\n inst._zod.values = values;\n inst._zod.pattern = new RegExp(`^(${def.values\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o ? util.escapeRegex(o.toString()) : String(o)))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (values.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values: def.values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodFile = /*@__PURE__*/ core.$constructor(\"$ZodFile\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n // @ts-ignore\n if (input instanceof File)\n return payload;\n payload.issues.push({\n expected: \"file\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodTransform = /*@__PURE__*/ core.$constructor(\"$ZodTransform\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n const _out = def.transform(payload.value, payload);\n if (ctx.async) {\n const output = _out instanceof Promise ? _out : Promise.resolve(_out);\n return output.then((output) => {\n payload.value = output;\n return payload;\n });\n }\n if (_out instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n payload.value = _out;\n return payload;\n };\n});\nfunction handleOptionalResult(result, input) {\n if (result.issues.length && input === undefined) {\n return { issues: [], value: undefined };\n }\n return result;\n}\nexport const $ZodOptional = /*@__PURE__*/ core.$constructor(\"$ZodOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, undefined]) : undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)})?$`) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n if (def.innerType._zod.optin === \"optional\") {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise)\n return result.then((r) => handleOptionalResult(r, payload.value));\n return handleOptionalResult(result, payload.value);\n }\n if (payload.value === undefined) {\n return payload;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodExactOptional = /*@__PURE__*/ core.$constructor(\"$ZodExactOptional\", (inst, def) => {\n // Call parent init - inherits optin/optout = \"optional\"\n $ZodOptional.init(inst, def);\n // Override values/pattern to NOT add undefined\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"pattern\", () => def.innerType._zod.pattern);\n // Override parse to just delegate (no undefined handling)\n inst._zod.parse = (payload, ctx) => {\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNullable = /*@__PURE__*/ core.$constructor(\"$ZodNullable\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)}|null)$`) : undefined;\n });\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, null]) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n // Forward direction (decode): allow null to pass through\n if (payload.value === null)\n return payload;\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodDefault = /*@__PURE__*/ core.$constructor(\"$ZodDefault\", (inst, def) => {\n $ZodType.init(inst, def);\n // inst._zod.qin = \"true\";\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply defaults for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n /**\n * $ZodDefault returns the default value immediately in forward direction.\n * It doesn't pass the default value into the validator (\"prefault\"). There's no reason to pass the default value through validation. The validity of the default is enforced by TypeScript statically. Otherwise, it's the responsibility of the user to ensure the default is valid. In the case of pipes with divergent in/out types, you can specify the default on the `in` schema of your ZodPipe to set a \"prefault\" for the pipe. */\n return payload;\n }\n // Forward direction: continue with default handling\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleDefaultResult(result, def));\n }\n return handleDefaultResult(result, def);\n };\n});\nfunction handleDefaultResult(payload, def) {\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return payload;\n}\nexport const $ZodPrefault = /*@__PURE__*/ core.$constructor(\"$ZodPrefault\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply prefault for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNonOptional = /*@__PURE__*/ core.$constructor(\"$ZodNonOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => {\n const v = def.innerType._zod.values;\n return v ? new Set([...v].filter((x) => x !== undefined)) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleNonOptionalResult(result, inst));\n }\n return handleNonOptionalResult(result, inst);\n };\n});\nfunction handleNonOptionalResult(payload, inst) {\n if (!payload.issues.length && payload.value === undefined) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: payload.value,\n inst,\n });\n }\n return payload;\n}\nexport const $ZodSuccess = /*@__PURE__*/ core.$constructor(\"$ZodSuccess\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(\"ZodSuccess\");\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.issues.length === 0;\n return payload;\n });\n }\n payload.value = result.issues.length === 0;\n return payload;\n };\n});\nexport const $ZodCatch = /*@__PURE__*/ core.$constructor(\"$ZodCatch\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply catch logic\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n }\n return payload;\n });\n }\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n }\n return payload;\n };\n});\nexport const $ZodNaN = /*@__PURE__*/ core.$constructor(\"$ZodNaN\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"number\" || !Number.isNaN(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"nan\",\n code: \"invalid_type\",\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodPipe = /*@__PURE__*/ core.$constructor(\"$ZodPipe\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handlePipeResult(right, def.in, ctx));\n }\n return handlePipeResult(right, def.in, ctx);\n }\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handlePipeResult(left, def.out, ctx));\n }\n return handlePipeResult(left, def.out, ctx);\n };\n});\nfunction handlePipeResult(left, next, ctx) {\n if (left.issues.length) {\n // prevent further checks\n left.aborted = true;\n return left;\n }\n return next._zod.run({ value: left.value, issues: left.issues }, ctx);\n}\nexport const $ZodCodec = /*@__PURE__*/ core.$constructor(\"$ZodCodec\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handleCodecAResult(left, def, ctx));\n }\n return handleCodecAResult(left, def, ctx);\n }\n else {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handleCodecAResult(right, def, ctx));\n }\n return handleCodecAResult(right, def, ctx);\n }\n };\n});\nfunction handleCodecAResult(result, def, ctx) {\n if (result.issues.length) {\n // prevent further checks\n result.aborted = true;\n return result;\n }\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const transformed = def.transform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.out, ctx));\n }\n return handleCodecTxResult(result, transformed, def.out, ctx);\n }\n else {\n const transformed = def.reverseTransform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.in, ctx));\n }\n return handleCodecTxResult(result, transformed, def.in, ctx);\n }\n}\nfunction handleCodecTxResult(left, value, nextSchema, ctx) {\n // Check if transform added any issues\n if (left.issues.length) {\n left.aborted = true;\n return left;\n }\n return nextSchema._zod.run({ value, issues: left.issues }, ctx);\n}\nexport const $ZodReadonly = /*@__PURE__*/ core.$constructor(\"$ZodReadonly\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"propValues\", () => def.innerType._zod.propValues);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType?._zod?.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType?._zod?.optout);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then(handleReadonlyResult);\n }\n return handleReadonlyResult(result);\n };\n});\nfunction handleReadonlyResult(payload) {\n payload.value = Object.freeze(payload.value);\n return payload;\n}\nexport const $ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"$ZodTemplateLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n const regexParts = [];\n for (const part of def.parts) {\n if (typeof part === \"object\" && part !== null) {\n // is Zod schema\n if (!part._zod.pattern) {\n // if (!source)\n throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`);\n }\n const source = part._zod.pattern instanceof RegExp ? part._zod.pattern.source : part._zod.pattern;\n if (!source)\n throw new Error(`Invalid template literal part: ${part._zod.traits}`);\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n regexParts.push(source.slice(start, end));\n }\n else if (part === null || util.primitiveTypes.has(typeof part)) {\n regexParts.push(util.escapeRegex(`${part}`));\n }\n else {\n throw new Error(`Invalid template literal part: ${part}`);\n }\n }\n inst._zod.pattern = new RegExp(`^${regexParts.join(\"\")}$`);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"string\") {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"string\",\n code: \"invalid_type\",\n });\n return payload;\n }\n inst._zod.pattern.lastIndex = 0;\n if (!inst._zod.pattern.test(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n code: \"invalid_format\",\n format: def.format ?? \"template_literal\",\n pattern: inst._zod.pattern.source,\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodFunction = /*@__PURE__*/ core.$constructor(\"$ZodFunction\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._def = def;\n inst._zod.def = def;\n inst.implement = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implement() must be called with a function\");\n }\n return function (...args) {\n const parsedArgs = inst._def.input ? parse(inst._def.input, args) : args;\n const result = Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return parse(inst._def.output, result);\n }\n return result;\n };\n };\n inst.implementAsync = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implementAsync() must be called with a function\");\n }\n return async function (...args) {\n const parsedArgs = inst._def.input ? await parseAsync(inst._def.input, args) : args;\n const result = await Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return await parseAsync(inst._def.output, result);\n }\n return result;\n };\n };\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"function\") {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"function\",\n input: payload.value,\n inst,\n });\n return payload;\n }\n // Check if output is a promise type to determine if we should use async implementation\n const hasPromiseOutput = inst._def.output && inst._def.output._zod.def.type === \"promise\";\n if (hasPromiseOutput) {\n payload.value = inst.implementAsync(payload.value);\n }\n else {\n payload.value = inst.implement(payload.value);\n }\n return payload;\n };\n inst.input = (...args) => {\n const F = inst.constructor;\n if (Array.isArray(args[0])) {\n return new F({\n type: \"function\",\n input: new $ZodTuple({\n type: \"tuple\",\n items: args[0],\n rest: args[1],\n }),\n output: inst._def.output,\n });\n }\n return new F({\n type: \"function\",\n input: args[0],\n output: inst._def.output,\n });\n };\n inst.output = (output) => {\n const F = inst.constructor;\n return new F({\n type: \"function\",\n input: inst._def.input,\n output,\n });\n };\n return inst;\n});\nexport const $ZodPromise = /*@__PURE__*/ core.$constructor(\"$ZodPromise\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n return Promise.resolve(payload.value).then((inner) => def.innerType._zod.run({ value: inner, issues: [] }, ctx));\n };\n});\nexport const $ZodLazy = /*@__PURE__*/ core.$constructor(\"$ZodLazy\", (inst, def) => {\n $ZodType.init(inst, def);\n // let _innerType!: any;\n // util.defineLazy(def, \"getter\", () => {\n // if (!_innerType) {\n // _innerType = def.getter();\n // }\n // return () => _innerType;\n // });\n util.defineLazy(inst._zod, \"innerType\", () => def.getter());\n util.defineLazy(inst._zod, \"pattern\", () => inst._zod.innerType?._zod?.pattern);\n util.defineLazy(inst._zod, \"propValues\", () => inst._zod.innerType?._zod?.propValues);\n util.defineLazy(inst._zod, \"optin\", () => inst._zod.innerType?._zod?.optin ?? undefined);\n util.defineLazy(inst._zod, \"optout\", () => inst._zod.innerType?._zod?.optout ?? undefined);\n inst._zod.parse = (payload, ctx) => {\n const inner = inst._zod.innerType;\n return inner._zod.run(payload, ctx);\n };\n});\nexport const $ZodCustom = /*@__PURE__*/ core.$constructor(\"$ZodCustom\", (inst, def) => {\n checks.$ZodCheck.init(inst, def);\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _) => {\n return payload;\n };\n inst._zod.check = (payload) => {\n const input = payload.value;\n const r = def.fn(input);\n if (r instanceof Promise) {\n return r.then((r) => handleRefineResult(r, payload, input, inst));\n }\n handleRefineResult(r, payload, input, inst);\n return;\n };\n});\nfunction handleRefineResult(result, payload, input, inst) {\n if (!result) {\n const _iss = {\n code: \"custom\",\n input,\n inst, // incorporates params.error into issue reporting\n path: [...(inst._zod.def.path ?? [])], // incorporates params.error into issue reporting\n continue: !inst._zod.def.abort,\n // params: inst._zod.def.params,\n };\n if (inst._zod.def.params)\n _iss.params = inst._zod.def.params;\n payload.issues.push(util.issue(_iss));\n }\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"حرف\", verb: \"أن يحوي\" },\n file: { unit: \"بايت\", verb: \"أن يحوي\" },\n array: { unit: \"عنصر\", verb: \"أن يحوي\" },\n set: { unit: \"عنصر\", verb: \"أن يحوي\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"مدخل\",\n email: \"بريد إلكتروني\",\n url: \"رابط\",\n emoji: \"إيموجي\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"تاريخ ووقت بمعيار ISO\",\n date: \"تاريخ بمعيار ISO\",\n time: \"وقت بمعيار ISO\",\n duration: \"مدة بمعيار ISO\",\n ipv4: \"عنوان IPv4\",\n ipv6: \"عنوان IPv6\",\n cidrv4: \"مدى عناوين بصيغة IPv4\",\n cidrv6: \"مدى عناوين بصيغة IPv6\",\n base64: \"نَص بترميز base64-encoded\",\n base64url: \"نَص بترميز base64url-encoded\",\n json_string: \"نَص على هيئة JSON\",\n e164: \"رقم هاتف بمعيار E.164\",\n jwt: \"JWT\",\n template_literal: \"مدخل\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `مدخلات غير مقبولة: يفترض إدخال instanceof ${issue.expected}، ولكن تم إدخال ${received}`;\n }\n return `مدخلات غير مقبولة: يفترض إدخال ${expected}، ولكن تم إدخال ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `مدخلات غير مقبولة: يفترض إدخال ${util.stringifyPrimitive(issue.values[0])}`;\n return `اختيار غير مقبول: يتوقع انتقاء أحد هذه الخيارات: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return ` أكبر من اللازم: يفترض أن تكون ${issue.origin ?? \"القيمة\"} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"عنصر\"}`;\n return `أكبر من اللازم: يفترض أن تكون ${issue.origin ?? \"القيمة\"} ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `أصغر من اللازم: يفترض لـ ${issue.origin} أن يكون ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `أصغر من اللازم: يفترض لـ ${issue.origin} أن يكون ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `نَص غير مقبول: يجب أن يبدأ بـ \"${issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `نَص غير مقبول: يجب أن ينتهي بـ \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `نَص غير مقبول: يجب أن يتضمَّن \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `نَص غير مقبول: يجب أن يطابق النمط ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} غير مقبول`;\n }\n case \"not_multiple_of\":\n return `رقم غير مقبول: يجب أن يكون من مضاعفات ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `معرف${issue.keys.length > 1 ? \"ات\" : \"\"} غريب${issue.keys.length > 1 ? \"ة\" : \"\"}: ${util.joinValues(issue.keys, \"، \")}`;\n case \"invalid_key\":\n return `معرف غير مقبول في ${issue.origin}`;\n case \"invalid_union\":\n return \"مدخل غير مقبول\";\n case \"invalid_element\":\n return `مدخل غير مقبول في ${issue.origin}`;\n default:\n return \"مدخل غير مقبول\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"simvol\", verb: \"olmalıdır\" },\n file: { unit: \"bayt\", verb: \"olmalıdır\" },\n array: { unit: \"element\", verb: \"olmalıdır\" },\n set: { unit: \"element\", verb: \"olmalıdır\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"email address\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datetime\",\n date: \"ISO date\",\n time: \"ISO time\",\n duration: \"ISO duration\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded string\",\n base64url: \"base64url-encoded string\",\n json_string: \"JSON string\",\n e164: \"E.164 number\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Yanlış dəyər: gözlənilən instanceof ${issue.expected}, daxil olan ${received}`;\n }\n return `Yanlış dəyər: gözlənilən ${expected}, daxil olan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Yanlış dəyər: gözlənilən ${util.stringifyPrimitive(issue.values[0])}`;\n return `Yanlış seçim: aşağıdakılardan biri olmalıdır: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çox böyük: gözlənilən ${issue.origin ?? \"dəyər\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\"}`;\n return `Çox böyük: gözlənilən ${issue.origin ?? \"dəyər\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çox kiçik: gözlənilən ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n return `Çox kiçik: gözlənilən ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Yanlış mətn: \"${_issue.prefix}\" ilə başlamalıdır`;\n if (_issue.format === \"ends_with\")\n return `Yanlış mətn: \"${_issue.suffix}\" ilə bitməlidir`;\n if (_issue.format === \"includes\")\n return `Yanlış mətn: \"${_issue.includes}\" daxil olmalıdır`;\n if (_issue.format === \"regex\")\n return `Yanlış mətn: ${_issue.pattern} şablonuna uyğun olmalıdır`;\n return `Yanlış ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Yanlış ədəd: ${issue.divisor} ilə bölünə bilən olmalıdır`;\n case \"unrecognized_keys\":\n return `Tanınmayan açar${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} daxilində yanlış açar`;\n case \"invalid_union\":\n return \"Yanlış dəyər\";\n case \"invalid_element\":\n return `${issue.origin} daxilində yanlış dəyər`;\n default:\n return `Yanlış dəyər`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nfunction getBelarusianPlural(count, one, few, many) {\n const absCount = Math.abs(count);\n const lastDigit = absCount % 10;\n const lastTwoDigits = absCount % 100;\n if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {\n return many;\n }\n if (lastDigit === 1) {\n return one;\n }\n if (lastDigit >= 2 && lastDigit <= 4) {\n return few;\n }\n return many;\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"сімвал\",\n few: \"сімвалы\",\n many: \"сімвалаў\",\n },\n verb: \"мець\",\n },\n array: {\n unit: {\n one: \"элемент\",\n few: \"элементы\",\n many: \"элементаў\",\n },\n verb: \"мець\",\n },\n set: {\n unit: {\n one: \"элемент\",\n few: \"элементы\",\n many: \"элементаў\",\n },\n verb: \"мець\",\n },\n file: {\n unit: {\n one: \"байт\",\n few: \"байты\",\n many: \"байтаў\",\n },\n verb: \"мець\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"увод\",\n email: \"email адрас\",\n url: \"URL\",\n emoji: \"эмодзі\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO дата і час\",\n date: \"ISO дата\",\n time: \"ISO час\",\n duration: \"ISO працягласць\",\n ipv4: \"IPv4 адрас\",\n ipv6: \"IPv6 адрас\",\n cidrv4: \"IPv4 дыяпазон\",\n cidrv6: \"IPv6 дыяпазон\",\n base64: \"радок у фармаце base64\",\n base64url: \"радок у фармаце base64url\",\n json_string: \"JSON радок\",\n e164: \"нумар E.164\",\n jwt: \"JWT\",\n template_literal: \"увод\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"лік\",\n array: \"масіў\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Няправільны ўвод: чакаўся instanceof ${issue.expected}, атрымана ${received}`;\n }\n return `Няправільны ўвод: чакаўся ${expected}, атрымана ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Няправільны ўвод: чакалася ${util.stringifyPrimitive(issue.values[0])}`;\n return `Няправільны варыянт: чакаўся адзін з ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getBelarusianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Занадта вялікі: чакалася, што ${issue.origin ?? \"значэнне\"} павінна ${sizing.verb} ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `Занадта вялікі: чакалася, што ${issue.origin ?? \"значэнне\"} павінна быць ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getBelarusianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Занадта малы: чакалася, што ${issue.origin} павінна ${sizing.verb} ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `Занадта малы: чакалася, што ${issue.origin} павінна быць ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Няправільны радок: павінен пачынацца з \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Няправільны радок: павінен заканчвацца на \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Няправільны радок: павінен змяшчаць \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Няправільны радок: павінен адпавядаць шаблону ${_issue.pattern}`;\n return `Няправільны ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Няправільны лік: павінен быць кратным ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Нераспазнаны ${issue.keys.length > 1 ? \"ключы\" : \"ключ\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Няправільны ключ у ${issue.origin}`;\n case \"invalid_union\":\n return \"Няправільны ўвод\";\n case \"invalid_element\":\n return `Няправільнае значэнне ў ${issue.origin}`;\n default:\n return `Няправільны ўвод`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"символа\", verb: \"да съдържа\" },\n file: { unit: \"байта\", verb: \"да съдържа\" },\n array: { unit: \"елемента\", verb: \"да съдържа\" },\n set: { unit: \"елемента\", verb: \"да съдържа\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"вход\",\n email: \"имейл адрес\",\n url: \"URL\",\n emoji: \"емоджи\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO време\",\n date: \"ISO дата\",\n time: \"ISO време\",\n duration: \"ISO продължителност\",\n ipv4: \"IPv4 адрес\",\n ipv6: \"IPv6 адрес\",\n cidrv4: \"IPv4 диапазон\",\n cidrv6: \"IPv6 диапазон\",\n base64: \"base64-кодиран низ\",\n base64url: \"base64url-кодиран низ\",\n json_string: \"JSON низ\",\n e164: \"E.164 номер\",\n jwt: \"JWT\",\n template_literal: \"вход\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"число\",\n array: \"масив\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Невалиден вход: очакван instanceof ${issue.expected}, получен ${received}`;\n }\n return `Невалиден вход: очакван ${expected}, получен ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Невалиден вход: очакван ${util.stringifyPrimitive(issue.values[0])}`;\n return `Невалидна опция: очаквано едно от ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Твърде голямо: очаква се ${issue.origin ?? \"стойност\"} да съдържа ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"елемента\"}`;\n return `Твърде голямо: очаква се ${issue.origin ?? \"стойност\"} да бъде ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Твърде малко: очаква се ${issue.origin} да съдържа ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Твърде малко: очаква се ${issue.origin} да бъде ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Невалиден низ: трябва да започва с \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Невалиден низ: трябва да завършва с \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Невалиден низ: трябва да включва \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Невалиден низ: трябва да съвпада с ${_issue.pattern}`;\n let invalid_adj = \"Невалиден\";\n if (_issue.format === \"emoji\")\n invalid_adj = \"Невалидно\";\n if (_issue.format === \"datetime\")\n invalid_adj = \"Невалидно\";\n if (_issue.format === \"date\")\n invalid_adj = \"Невалидна\";\n if (_issue.format === \"time\")\n invalid_adj = \"Невалидно\";\n if (_issue.format === \"duration\")\n invalid_adj = \"Невалидна\";\n return `${invalid_adj} ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Невалидно число: трябва да бъде кратно на ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Неразпознат${issue.keys.length > 1 ? \"и\" : \"\"} ключ${issue.keys.length > 1 ? \"ове\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Невалиден ключ в ${issue.origin}`;\n case \"invalid_union\":\n return \"Невалиден вход\";\n case \"invalid_element\":\n return `Невалидна стойност в ${issue.origin}`;\n default:\n return `Невалиден вход`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caràcters\", verb: \"contenir\" },\n file: { unit: \"bytes\", verb: \"contenir\" },\n array: { unit: \"elements\", verb: \"contenir\" },\n set: { unit: \"elements\", verb: \"contenir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrada\",\n email: \"adreça electrònica\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data i hora ISO\",\n date: \"data ISO\",\n time: \"hora ISO\",\n duration: \"durada ISO\",\n ipv4: \"adreça IPv4\",\n ipv6: \"adreça IPv6\",\n cidrv4: \"rang IPv4\",\n cidrv6: \"rang IPv6\",\n base64: \"cadena codificada en base64\",\n base64url: \"cadena codificada en base64url\",\n json_string: \"cadena JSON\",\n e164: \"número E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Tipus invàlid: s'esperava instanceof ${issue.expected}, s'ha rebut ${received}`;\n }\n return `Tipus invàlid: s'esperava ${expected}, s'ha rebut ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Valor invàlid: s'esperava ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opció invàlida: s'esperava una de ${util.joinValues(issue.values, \" o \")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"com a màxim\" : \"menys de\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Massa gran: s'esperava que ${issue.origin ?? \"el valor\"} contingués ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n return `Massa gran: s'esperava que ${issue.origin ?? \"el valor\"} fos ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"com a mínim\" : \"més de\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Massa petit: s'esperava que ${issue.origin} contingués ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Massa petit: s'esperava que ${issue.origin} fos ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Format invàlid: ha de començar amb \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Format invàlid: ha d'acabar amb \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Format invàlid: ha d'incloure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Format invàlid: ha de coincidir amb el patró ${_issue.pattern}`;\n return `Format invàlid per a ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Número invàlid: ha de ser múltiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Clau${issue.keys.length > 1 ? \"s\" : \"\"} no reconeguda${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Clau invàlida a ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrada invàlida\"; // Could also be \"Tipus d'unió invàlid\" but \"Entrada invàlida\" is more general\n case \"invalid_element\":\n return `Element invàlid a ${issue.origin}`;\n default:\n return `Entrada invàlida`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"znaků\", verb: \"mít\" },\n file: { unit: \"bajtů\", verb: \"mít\" },\n array: { unit: \"prvků\", verb: \"mít\" },\n set: { unit: \"prvků\", verb: \"mít\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"regulární výraz\",\n email: \"e-mailová adresa\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"datum a čas ve formátu ISO\",\n date: \"datum ve formátu ISO\",\n time: \"čas ve formátu ISO\",\n duration: \"doba trvání ISO\",\n ipv4: \"IPv4 adresa\",\n ipv6: \"IPv6 adresa\",\n cidrv4: \"rozsah IPv4\",\n cidrv6: \"rozsah IPv6\",\n base64: \"řetězec zakódovaný ve formátu base64\",\n base64url: \"řetězec zakódovaný ve formátu base64url\",\n json_string: \"řetězec ve formátu JSON\",\n e164: \"číslo E.164\",\n jwt: \"JWT\",\n template_literal: \"vstup\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"číslo\",\n string: \"řetězec\",\n function: \"funkce\",\n array: \"pole\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Neplatný vstup: očekáváno instanceof ${issue.expected}, obdrženo ${received}`;\n }\n return `Neplatný vstup: očekáváno ${expected}, obdrženo ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Neplatný vstup: očekáváno ${util.stringifyPrimitive(issue.values[0])}`;\n return `Neplatná možnost: očekávána jedna z hodnot ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Hodnota je příliš velká: ${issue.origin ?? \"hodnota\"} musí mít ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"prvků\"}`;\n }\n return `Hodnota je příliš velká: ${issue.origin ?? \"hodnota\"} musí být ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Hodnota je příliš malá: ${issue.origin ?? \"hodnota\"} musí mít ${adj}${issue.minimum.toString()} ${sizing.unit ?? \"prvků\"}`;\n }\n return `Hodnota je příliš malá: ${issue.origin ?? \"hodnota\"} musí být ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Neplatný řetězec: musí začínat na \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Neplatný řetězec: musí končit na \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Neplatný řetězec: musí obsahovat \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Neplatný řetězec: musí odpovídat vzoru ${_issue.pattern}`;\n return `Neplatný formát ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Neplatné číslo: musí být násobkem ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Neznámé klíče: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Neplatný klíč v ${issue.origin}`;\n case \"invalid_union\":\n return \"Neplatný vstup\";\n case \"invalid_element\":\n return `Neplatná hodnota v ${issue.origin}`;\n default:\n return `Neplatný vstup`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tegn\", verb: \"havde\" },\n file: { unit: \"bytes\", verb: \"havde\" },\n array: { unit: \"elementer\", verb: \"indeholdt\" },\n set: { unit: \"elementer\", verb: \"indeholdt\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"e-mailadresse\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO dato- og klokkeslæt\",\n date: \"ISO-dato\",\n time: \"ISO-klokkeslæt\",\n duration: \"ISO-varighed\",\n ipv4: \"IPv4-område\",\n ipv6: \"IPv6-område\",\n cidrv4: \"IPv4-spektrum\",\n cidrv6: \"IPv6-spektrum\",\n base64: \"base64-kodet streng\",\n base64url: \"base64url-kodet streng\",\n json_string: \"JSON-streng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n string: \"streng\",\n number: \"tal\",\n boolean: \"boolean\",\n array: \"liste\",\n object: \"objekt\",\n set: \"sæt\",\n file: \"fil\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ugyldigt input: forventede instanceof ${issue.expected}, fik ${received}`;\n }\n return `Ugyldigt input: forventede ${expected}, fik ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ugyldig værdi: forventede ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ugyldigt valg: forventede en af følgende ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing)\n return `For stor: forventede ${origin ?? \"value\"} ${sizing.verb} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"elementer\"}`;\n return `For stor: forventede ${origin ?? \"value\"} havde ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing) {\n return `For lille: forventede ${origin} ${sizing.verb} ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `For lille: forventede ${origin} havde ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ugyldig streng: skal starte med \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Ugyldig streng: skal ende med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ugyldig streng: skal indeholde \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ugyldig streng: skal matche mønsteret ${_issue.pattern}`;\n return `Ugyldig ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ugyldigt tal: skal være deleligt med ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Ukendte nøgler\" : \"Ukendt nøgle\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ugyldig nøgle i ${issue.origin}`;\n case \"invalid_union\":\n return \"Ugyldigt input: matcher ingen af de tilladte typer\";\n case \"invalid_element\":\n return `Ugyldig værdi i ${issue.origin}`;\n default:\n return `Ugyldigt input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"Zeichen\", verb: \"zu haben\" },\n file: { unit: \"Bytes\", verb: \"zu haben\" },\n array: { unit: \"Elemente\", verb: \"zu haben\" },\n set: { unit: \"Elemente\", verb: \"zu haben\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"Eingabe\",\n email: \"E-Mail-Adresse\",\n url: \"URL\",\n emoji: \"Emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-Datum und -Uhrzeit\",\n date: \"ISO-Datum\",\n time: \"ISO-Uhrzeit\",\n duration: \"ISO-Dauer\",\n ipv4: \"IPv4-Adresse\",\n ipv6: \"IPv6-Adresse\",\n cidrv4: \"IPv4-Bereich\",\n cidrv6: \"IPv6-Bereich\",\n base64: \"Base64-codierter String\",\n base64url: \"Base64-URL-codierter String\",\n json_string: \"JSON-String\",\n e164: \"E.164-Nummer\",\n jwt: \"JWT\",\n template_literal: \"Eingabe\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"Zahl\",\n array: \"Array\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ungültige Eingabe: erwartet instanceof ${issue.expected}, erhalten ${received}`;\n }\n return `Ungültige Eingabe: erwartet ${expected}, erhalten ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ungültige Eingabe: erwartet ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ungültige Option: erwartet eine von ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Zu groß: erwartet, dass ${issue.origin ?? \"Wert\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"Elemente\"} hat`;\n return `Zu groß: erwartet, dass ${issue.origin ?? \"Wert\"} ${adj}${issue.maximum.toString()} ist`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Zu klein: erwartet, dass ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} hat`;\n }\n return `Zu klein: erwartet, dass ${issue.origin} ${adj}${issue.minimum.toString()} ist`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ungültiger String: muss mit \"${_issue.prefix}\" beginnen`;\n if (_issue.format === \"ends_with\")\n return `Ungültiger String: muss mit \"${_issue.suffix}\" enden`;\n if (_issue.format === \"includes\")\n return `Ungültiger String: muss \"${_issue.includes}\" enthalten`;\n if (_issue.format === \"regex\")\n return `Ungültiger String: muss dem Muster ${_issue.pattern} entsprechen`;\n return `Ungültig: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ungültige Zahl: muss ein Vielfaches von ${issue.divisor} sein`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Unbekannte Schlüssel\" : \"Unbekannter Schlüssel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ungültiger Schlüssel in ${issue.origin}`;\n case \"invalid_union\":\n return \"Ungültige Eingabe\";\n case \"invalid_element\":\n return `Ungültiger Wert in ${issue.origin}`;\n default:\n return `Ungültige Eingabe`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"characters\", verb: \"to have\" },\n file: { unit: \"bytes\", verb: \"to have\" },\n array: { unit: \"items\", verb: \"to have\" },\n set: { unit: \"items\", verb: \"to have\" },\n map: { unit: \"entries\", verb: \"to have\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"email address\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datetime\",\n date: \"ISO date\",\n time: \"ISO time\",\n duration: \"ISO duration\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n mac: \"MAC address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded string\",\n base64url: \"base64url-encoded string\",\n json_string: \"JSON string\",\n e164: \"E.164 number\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n // type names: missing keys = do not translate (use raw value via ?? fallback)\n const TypeDictionary = {\n // Compatibility: \"nan\" -> \"NaN\" for display\n nan: \"NaN\",\n // All other type names omitted - they fall back to raw values via ?? operator\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n return `Invalid input: expected ${expected}, received ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n return `Invalid option: expected one of ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Too big: expected ${issue.origin ?? \"value\"} to have ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n return `Too big: expected ${issue.origin ?? \"value\"} to be ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Too small: expected ${issue.origin} to have ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Too small: expected ${issue.origin} to be ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Invalid string: must start with \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Invalid string: must end with \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Invalid string: must include \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Invalid string: must match pattern ${_issue.pattern}`;\n return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Invalid number: must be a multiple of ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Unrecognized key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Invalid key in ${issue.origin}`;\n case \"invalid_union\":\n return \"Invalid input\";\n case \"invalid_element\":\n return `Invalid value in ${issue.origin}`;\n default:\n return `Invalid input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karaktrojn\", verb: \"havi\" },\n file: { unit: \"bajtojn\", verb: \"havi\" },\n array: { unit: \"elementojn\", verb: \"havi\" },\n set: { unit: \"elementojn\", verb: \"havi\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"enigo\",\n email: \"retadreso\",\n url: \"URL\",\n emoji: \"emoĝio\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-datotempo\",\n date: \"ISO-dato\",\n time: \"ISO-tempo\",\n duration: \"ISO-daŭro\",\n ipv4: \"IPv4-adreso\",\n ipv6: \"IPv6-adreso\",\n cidrv4: \"IPv4-rango\",\n cidrv6: \"IPv6-rango\",\n base64: \"64-ume kodita karaktraro\",\n base64url: \"URL-64-ume kodita karaktraro\",\n json_string: \"JSON-karaktraro\",\n e164: \"E.164-nombro\",\n jwt: \"JWT\",\n template_literal: \"enigo\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nombro\",\n array: \"tabelo\",\n null: \"senvalora\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Nevalida enigo: atendiĝis instanceof ${issue.expected}, riceviĝis ${received}`;\n }\n return `Nevalida enigo: atendiĝis ${expected}, riceviĝis ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Nevalida enigo: atendiĝis ${util.stringifyPrimitive(issue.values[0])}`;\n return `Nevalida opcio: atendiĝis unu el ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Tro granda: atendiĝis ke ${issue.origin ?? \"valoro\"} havu ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementojn\"}`;\n return `Tro granda: atendiĝis ke ${issue.origin ?? \"valoro\"} havu ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Tro malgranda: atendiĝis ke ${issue.origin} havu ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Tro malgranda: atendiĝis ke ${issue.origin} estu ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Nevalida karaktraro: devas komenciĝi per \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Nevalida karaktraro: devas finiĝi per \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Nevalida karaktraro: devas inkluzivi \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Nevalida karaktraro: devas kongrui kun la modelo ${_issue.pattern}`;\n return `Nevalida ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Nevalida nombro: devas esti oblo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Nekonata${issue.keys.length > 1 ? \"j\" : \"\"} ŝlosilo${issue.keys.length > 1 ? \"j\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Nevalida ŝlosilo en ${issue.origin}`;\n case \"invalid_union\":\n return \"Nevalida enigo\";\n case \"invalid_element\":\n return `Nevalida valoro en ${issue.origin}`;\n default:\n return `Nevalida enigo`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caracteres\", verb: \"tener\" },\n file: { unit: \"bytes\", verb: \"tener\" },\n array: { unit: \"elementos\", verb: \"tener\" },\n set: { unit: \"elementos\", verb: \"tener\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrada\",\n email: \"dirección de correo electrónico\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"fecha y hora ISO\",\n date: \"fecha ISO\",\n time: \"hora ISO\",\n duration: \"duración ISO\",\n ipv4: \"dirección IPv4\",\n ipv6: \"dirección IPv6\",\n cidrv4: \"rango IPv4\",\n cidrv6: \"rango IPv6\",\n base64: \"cadena codificada en base64\",\n base64url: \"URL codificada en base64\",\n json_string: \"cadena JSON\",\n e164: \"número E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n string: \"texto\",\n number: \"número\",\n boolean: \"booleano\",\n array: \"arreglo\",\n object: \"objeto\",\n set: \"conjunto\",\n file: \"archivo\",\n date: \"fecha\",\n bigint: \"número grande\",\n symbol: \"símbolo\",\n undefined: \"indefinido\",\n null: \"nulo\",\n function: \"función\",\n map: \"mapa\",\n record: \"registro\",\n tuple: \"tupla\",\n enum: \"enumeración\",\n union: \"unión\",\n literal: \"literal\",\n promise: \"promesa\",\n void: \"vacío\",\n never: \"nunca\",\n unknown: \"desconocido\",\n any: \"cualquiera\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Entrada inválida: se esperaba instanceof ${issue.expected}, recibido ${received}`;\n }\n return `Entrada inválida: se esperaba ${expected}, recibido ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrada inválida: se esperaba ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opción inválida: se esperaba una de ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing)\n return `Demasiado grande: se esperaba que ${origin ?? \"valor\"} tuviera ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementos\"}`;\n return `Demasiado grande: se esperaba que ${origin ?? \"valor\"} fuera ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing) {\n return `Demasiado pequeño: se esperaba que ${origin} tuviera ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Demasiado pequeño: se esperaba que ${origin} fuera ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Cadena inválida: debe comenzar con \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Cadena inválida: debe terminar en \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Cadena inválida: debe incluir \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Cadena inválida: debe coincidir con el patrón ${_issue.pattern}`;\n return `Inválido ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Número inválido: debe ser múltiplo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Llave${issue.keys.length > 1 ? \"s\" : \"\"} desconocida${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Llave inválida en ${TypeDictionary[issue.origin] ?? issue.origin}`;\n case \"invalid_union\":\n return \"Entrada inválida\";\n case \"invalid_element\":\n return `Valor inválido en ${TypeDictionary[issue.origin] ?? issue.origin}`;\n default:\n return `Entrada inválida`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"کاراکتر\", verb: \"داشته باشد\" },\n file: { unit: \"بایت\", verb: \"داشته باشد\" },\n array: { unit: \"آیتم\", verb: \"داشته باشد\" },\n set: { unit: \"آیتم\", verb: \"داشته باشد\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ورودی\",\n email: \"آدرس ایمیل\",\n url: \"URL\",\n emoji: \"ایموجی\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"تاریخ و زمان ایزو\",\n date: \"تاریخ ایزو\",\n time: \"زمان ایزو\",\n duration: \"مدت زمان ایزو\",\n ipv4: \"IPv4 آدرس\",\n ipv6: \"IPv6 آدرس\",\n cidrv4: \"IPv4 دامنه\",\n cidrv6: \"IPv6 دامنه\",\n base64: \"base64-encoded رشته\",\n base64url: \"base64url-encoded رشته\",\n json_string: \"JSON رشته\",\n e164: \"E.164 عدد\",\n jwt: \"JWT\",\n template_literal: \"ورودی\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"عدد\",\n array: \"آرایه\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ورودی نامعتبر: میبایست instanceof ${issue.expected} میبود، ${received} دریافت شد`;\n }\n return `ورودی نامعتبر: میبایست ${expected} میبود، ${received} دریافت شد`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1) {\n return `ورودی نامعتبر: میبایست ${util.stringifyPrimitive(issue.values[0])} میبود`;\n }\n return `گزینه نامعتبر: میبایست یکی از ${util.joinValues(issue.values, \"|\")} میبود`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `خیلی بزرگ: ${issue.origin ?? \"مقدار\"} باید ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"عنصر\"} باشد`;\n }\n return `خیلی بزرگ: ${issue.origin ?? \"مقدار\"} باید ${adj}${issue.maximum.toString()} باشد`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `خیلی کوچک: ${issue.origin} باید ${adj}${issue.minimum.toString()} ${sizing.unit} باشد`;\n }\n return `خیلی کوچک: ${issue.origin} باید ${adj}${issue.minimum.toString()} باشد`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `رشته نامعتبر: باید با \"${_issue.prefix}\" شروع شود`;\n }\n if (_issue.format === \"ends_with\") {\n return `رشته نامعتبر: باید با \"${_issue.suffix}\" تمام شود`;\n }\n if (_issue.format === \"includes\") {\n return `رشته نامعتبر: باید شامل \"${_issue.includes}\" باشد`;\n }\n if (_issue.format === \"regex\") {\n return `رشته نامعتبر: باید با الگوی ${_issue.pattern} مطابقت داشته باشد`;\n }\n return `${FormatDictionary[_issue.format] ?? issue.format} نامعتبر`;\n }\n case \"not_multiple_of\":\n return `عدد نامعتبر: باید مضرب ${issue.divisor} باشد`;\n case \"unrecognized_keys\":\n return `کلید${issue.keys.length > 1 ? \"های\" : \"\"} ناشناس: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `کلید ناشناس در ${issue.origin}`;\n case \"invalid_union\":\n return `ورودی نامعتبر`;\n case \"invalid_element\":\n return `مقدار نامعتبر در ${issue.origin}`;\n default:\n return `ورودی نامعتبر`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"merkkiä\", subject: \"merkkijonon\" },\n file: { unit: \"tavua\", subject: \"tiedoston\" },\n array: { unit: \"alkiota\", subject: \"listan\" },\n set: { unit: \"alkiota\", subject: \"joukon\" },\n number: { unit: \"\", subject: \"luvun\" },\n bigint: { unit: \"\", subject: \"suuren kokonaisluvun\" },\n int: { unit: \"\", subject: \"kokonaisluvun\" },\n date: { unit: \"\", subject: \"päivämäärän\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"säännöllinen lauseke\",\n email: \"sähköpostiosoite\",\n url: \"URL-osoite\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-aikaleima\",\n date: \"ISO-päivämäärä\",\n time: \"ISO-aika\",\n duration: \"ISO-kesto\",\n ipv4: \"IPv4-osoite\",\n ipv6: \"IPv6-osoite\",\n cidrv4: \"IPv4-alue\",\n cidrv6: \"IPv6-alue\",\n base64: \"base64-koodattu merkkijono\",\n base64url: \"base64url-koodattu merkkijono\",\n json_string: \"JSON-merkkijono\",\n e164: \"E.164-luku\",\n jwt: \"JWT\",\n template_literal: \"templaattimerkkijono\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Virheellinen tyyppi: odotettiin instanceof ${issue.expected}, oli ${received}`;\n }\n return `Virheellinen tyyppi: odotettiin ${expected}, oli ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Virheellinen syöte: täytyy olla ${util.stringifyPrimitive(issue.values[0])}`;\n return `Virheellinen valinta: täytyy olla yksi seuraavista: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Liian suuri: ${sizing.subject} täytyy olla ${adj}${issue.maximum.toString()} ${sizing.unit}`.trim();\n }\n return `Liian suuri: arvon täytyy olla ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Liian pieni: ${sizing.subject} täytyy olla ${adj}${issue.minimum.toString()} ${sizing.unit}`.trim();\n }\n return `Liian pieni: arvon täytyy olla ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Virheellinen syöte: täytyy alkaa \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Virheellinen syöte: täytyy loppua \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Virheellinen syöte: täytyy sisältää \"${_issue.includes}\"`;\n if (_issue.format === \"regex\") {\n return `Virheellinen syöte: täytyy vastata säännöllistä lauseketta ${_issue.pattern}`;\n }\n return `Virheellinen ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Virheellinen luku: täytyy olla luvun ${issue.divisor} monikerta`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Tuntemattomat avaimet\" : \"Tuntematon avain\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return \"Virheellinen avain tietueessa\";\n case \"invalid_union\":\n return \"Virheellinen unioni\";\n case \"invalid_element\":\n return \"Virheellinen arvo joukossa\";\n default:\n return `Virheellinen syöte`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caractères\", verb: \"avoir\" },\n file: { unit: \"octets\", verb: \"avoir\" },\n array: { unit: \"éléments\", verb: \"avoir\" },\n set: { unit: \"éléments\", verb: \"avoir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrée\",\n email: \"adresse e-mail\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"date et heure ISO\",\n date: \"date ISO\",\n time: \"heure ISO\",\n duration: \"durée ISO\",\n ipv4: \"adresse IPv4\",\n ipv6: \"adresse IPv6\",\n cidrv4: \"plage IPv4\",\n cidrv6: \"plage IPv6\",\n base64: \"chaîne encodée en base64\",\n base64url: \"chaîne encodée en base64url\",\n json_string: \"chaîne JSON\",\n e164: \"numéro E.164\",\n jwt: \"JWT\",\n template_literal: \"entrée\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nombre\",\n array: \"tableau\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Entrée invalide : instanceof ${issue.expected} attendu, ${received} reçu`;\n }\n return `Entrée invalide : ${expected} attendu, ${received} reçu`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrée invalide : ${util.stringifyPrimitive(issue.values[0])} attendu`;\n return `Option invalide : une valeur parmi ${util.joinValues(issue.values, \"|\")} attendue`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Trop grand : ${issue.origin ?? \"valeur\"} doit ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"élément(s)\"}`;\n return `Trop grand : ${issue.origin ?? \"valeur\"} doit être ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Trop petit : ${issue.origin} doit ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Trop petit : ${issue.origin} doit être ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Chaîne invalide : doit commencer par \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Chaîne invalide : doit se terminer par \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Chaîne invalide : doit inclure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Chaîne invalide : doit correspondre au modèle ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} invalide`;\n }\n case \"not_multiple_of\":\n return `Nombre invalide : doit être un multiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Clé${issue.keys.length > 1 ? \"s\" : \"\"} non reconnue${issue.keys.length > 1 ? \"s\" : \"\"} : ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Clé invalide dans ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrée invalide\";\n case \"invalid_element\":\n return `Valeur invalide dans ${issue.origin}`;\n default:\n return `Entrée invalide`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caractères\", verb: \"avoir\" },\n file: { unit: \"octets\", verb: \"avoir\" },\n array: { unit: \"éléments\", verb: \"avoir\" },\n set: { unit: \"éléments\", verb: \"avoir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrée\",\n email: \"adresse courriel\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"date-heure ISO\",\n date: \"date ISO\",\n time: \"heure ISO\",\n duration: \"durée ISO\",\n ipv4: \"adresse IPv4\",\n ipv6: \"adresse IPv6\",\n cidrv4: \"plage IPv4\",\n cidrv6: \"plage IPv6\",\n base64: \"chaîne encodée en base64\",\n base64url: \"chaîne encodée en base64url\",\n json_string: \"chaîne JSON\",\n e164: \"numéro E.164\",\n jwt: \"JWT\",\n template_literal: \"entrée\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Entrée invalide : attendu instanceof ${issue.expected}, reçu ${received}`;\n }\n return `Entrée invalide : attendu ${expected}, reçu ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrée invalide : attendu ${util.stringifyPrimitive(issue.values[0])}`;\n return `Option invalide : attendu l'une des valeurs suivantes ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"≤\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Trop grand : attendu que ${issue.origin ?? \"la valeur\"} ait ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n return `Trop grand : attendu que ${issue.origin ?? \"la valeur\"} soit ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"≥\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Trop petit : attendu que ${issue.origin} ait ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Trop petit : attendu que ${issue.origin} soit ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Chaîne invalide : doit commencer par \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Chaîne invalide : doit se terminer par \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Chaîne invalide : doit inclure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Chaîne invalide : doit correspondre au motif ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} invalide`;\n }\n case \"not_multiple_of\":\n return `Nombre invalide : doit être un multiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Clé${issue.keys.length > 1 ? \"s\" : \"\"} non reconnue${issue.keys.length > 1 ? \"s\" : \"\"} : ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Clé invalide dans ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrée invalide\";\n case \"invalid_element\":\n return `Valeur invalide dans ${issue.origin}`;\n default:\n return `Entrée invalide`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n // Hebrew labels + grammatical gender\n const TypeNames = {\n string: { label: \"מחרוזת\", gender: \"f\" },\n number: { label: \"מספר\", gender: \"m\" },\n boolean: { label: \"ערך בוליאני\", gender: \"m\" },\n bigint: { label: \"BigInt\", gender: \"m\" },\n date: { label: \"תאריך\", gender: \"m\" },\n array: { label: \"מערך\", gender: \"m\" },\n object: { label: \"אובייקט\", gender: \"m\" },\n null: { label: \"ערך ריק (null)\", gender: \"m\" },\n undefined: { label: \"ערך לא מוגדר (undefined)\", gender: \"m\" },\n symbol: { label: \"סימבול (Symbol)\", gender: \"m\" },\n function: { label: \"פונקציה\", gender: \"f\" },\n map: { label: \"מפה (Map)\", gender: \"f\" },\n set: { label: \"קבוצה (Set)\", gender: \"f\" },\n file: { label: \"קובץ\", gender: \"m\" },\n promise: { label: \"Promise\", gender: \"m\" },\n NaN: { label: \"NaN\", gender: \"m\" },\n unknown: { label: \"ערך לא ידוע\", gender: \"m\" },\n value: { label: \"ערך\", gender: \"m\" },\n };\n // Sizing units for size-related messages + localized origin labels\n const Sizable = {\n string: { unit: \"תווים\", shortLabel: \"קצר\", longLabel: \"ארוך\" },\n file: { unit: \"בייטים\", shortLabel: \"קטן\", longLabel: \"גדול\" },\n array: { unit: \"פריטים\", shortLabel: \"קטן\", longLabel: \"גדול\" },\n set: { unit: \"פריטים\", shortLabel: \"קטן\", longLabel: \"גדול\" },\n number: { unit: \"\", shortLabel: \"קטן\", longLabel: \"גדול\" }, // no unit\n };\n // Helpers — labels, articles, and verbs\n const typeEntry = (t) => (t ? TypeNames[t] : undefined);\n const typeLabel = (t) => {\n const e = typeEntry(t);\n if (e)\n return e.label;\n // fallback: show raw string if unknown\n return t ?? TypeNames.unknown.label;\n };\n const withDefinite = (t) => `ה${typeLabel(t)}`;\n const verbFor = (t) => {\n const e = typeEntry(t);\n const gender = e?.gender ?? \"m\";\n return gender === \"f\" ? \"צריכה להיות\" : \"צריך להיות\";\n };\n const getSizing = (origin) => {\n if (!origin)\n return null;\n return Sizable[origin] ?? null;\n };\n const FormatDictionary = {\n regex: { label: \"קלט\", gender: \"m\" },\n email: { label: \"כתובת אימייל\", gender: \"f\" },\n url: { label: \"כתובת רשת\", gender: \"f\" },\n emoji: { label: \"אימוג'י\", gender: \"m\" },\n uuid: { label: \"UUID\", gender: \"m\" },\n nanoid: { label: \"nanoid\", gender: \"m\" },\n guid: { label: \"GUID\", gender: \"m\" },\n cuid: { label: \"cuid\", gender: \"m\" },\n cuid2: { label: \"cuid2\", gender: \"m\" },\n ulid: { label: \"ULID\", gender: \"m\" },\n xid: { label: \"XID\", gender: \"m\" },\n ksuid: { label: \"KSUID\", gender: \"m\" },\n datetime: { label: \"תאריך וזמן ISO\", gender: \"m\" },\n date: { label: \"תאריך ISO\", gender: \"m\" },\n time: { label: \"זמן ISO\", gender: \"m\" },\n duration: { label: \"משך זמן ISO\", gender: \"m\" },\n ipv4: { label: \"כתובת IPv4\", gender: \"f\" },\n ipv6: { label: \"כתובת IPv6\", gender: \"f\" },\n cidrv4: { label: \"טווח IPv4\", gender: \"m\" },\n cidrv6: { label: \"טווח IPv6\", gender: \"m\" },\n base64: { label: \"מחרוזת בבסיס 64\", gender: \"f\" },\n base64url: { label: \"מחרוזת בבסיס 64 לכתובות רשת\", gender: \"f\" },\n json_string: { label: \"מחרוזת JSON\", gender: \"f\" },\n e164: { label: \"מספר E.164\", gender: \"m\" },\n jwt: { label: \"JWT\", gender: \"m\" },\n ends_with: { label: \"קלט\", gender: \"m\" },\n includes: { label: \"קלט\", gender: \"m\" },\n lowercase: { label: \"קלט\", gender: \"m\" },\n starts_with: { label: \"קלט\", gender: \"m\" },\n uppercase: { label: \"קלט\", gender: \"m\" },\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n // Expected type: show without definite article for clearer Hebrew\n const expectedKey = issue.expected;\n const expected = TypeDictionary[expectedKey ?? \"\"] ?? typeLabel(expectedKey);\n // Received: show localized label if known, otherwise constructor/raw\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? TypeNames[receivedType]?.label ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `קלט לא תקין: צריך להיות instanceof ${issue.expected}, התקבל ${received}`;\n }\n return `קלט לא תקין: צריך להיות ${expected}, התקבל ${received}`;\n }\n case \"invalid_value\": {\n if (issue.values.length === 1) {\n return `ערך לא תקין: הערך חייב להיות ${util.stringifyPrimitive(issue.values[0])}`;\n }\n // Join values with proper Hebrew formatting\n const stringified = issue.values.map((v) => util.stringifyPrimitive(v));\n if (issue.values.length === 2) {\n return `ערך לא תקין: האפשרויות המתאימות הן ${stringified[0]} או ${stringified[1]}`;\n }\n // For 3+ values: \"a\", \"b\" או \"c\"\n const lastValue = stringified[stringified.length - 1];\n const restValues = stringified.slice(0, -1).join(\", \");\n return `ערך לא תקין: האפשרויות המתאימות הן ${restValues} או ${lastValue}`;\n }\n case \"too_big\": {\n const sizing = getSizing(issue.origin);\n const subject = withDefinite(issue.origin ?? \"value\");\n if (issue.origin === \"string\") {\n // Special handling for strings - more natural Hebrew\n return `${sizing?.longLabel ?? \"ארוך\"} מדי: ${subject} צריכה להכיל ${issue.maximum.toString()} ${sizing?.unit ?? \"\"} ${issue.inclusive ? \"או פחות\" : \"לכל היותר\"}`.trim();\n }\n if (issue.origin === \"number\") {\n // Natural Hebrew for numbers\n const comparison = issue.inclusive ? `קטן או שווה ל-${issue.maximum}` : `קטן מ-${issue.maximum}`;\n return `גדול מדי: ${subject} צריך להיות ${comparison}`;\n }\n if (issue.origin === \"array\" || issue.origin === \"set\") {\n // Natural Hebrew for arrays and sets\n const verb = issue.origin === \"set\" ? \"צריכה\" : \"צריך\";\n const comparison = issue.inclusive\n ? `${issue.maximum} ${sizing?.unit ?? \"\"} או פחות`\n : `פחות מ-${issue.maximum} ${sizing?.unit ?? \"\"}`;\n return `גדול מדי: ${subject} ${verb} להכיל ${comparison}`.trim();\n }\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const be = verbFor(issue.origin ?? \"value\");\n if (sizing?.unit) {\n return `${sizing.longLabel} מדי: ${subject} ${be} ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n }\n return `${sizing?.longLabel ?? \"גדול\"} מדי: ${subject} ${be} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const sizing = getSizing(issue.origin);\n const subject = withDefinite(issue.origin ?? \"value\");\n if (issue.origin === \"string\") {\n // Special handling for strings - more natural Hebrew\n return `${sizing?.shortLabel ?? \"קצר\"} מדי: ${subject} צריכה להכיל ${issue.minimum.toString()} ${sizing?.unit ?? \"\"} ${issue.inclusive ? \"או יותר\" : \"לפחות\"}`.trim();\n }\n if (issue.origin === \"number\") {\n // Natural Hebrew for numbers\n const comparison = issue.inclusive ? `גדול או שווה ל-${issue.minimum}` : `גדול מ-${issue.minimum}`;\n return `קטן מדי: ${subject} צריך להיות ${comparison}`;\n }\n if (issue.origin === \"array\" || issue.origin === \"set\") {\n // Natural Hebrew for arrays and sets\n const verb = issue.origin === \"set\" ? \"צריכה\" : \"צריך\";\n // Special case for singular (minimum === 1)\n if (issue.minimum === 1 && issue.inclusive) {\n const singularPhrase = issue.origin === \"set\" ? \"לפחות פריט אחד\" : \"לפחות פריט אחד\";\n return `קטן מדי: ${subject} ${verb} להכיל ${singularPhrase}`;\n }\n const comparison = issue.inclusive\n ? `${issue.minimum} ${sizing?.unit ?? \"\"} או יותר`\n : `יותר מ-${issue.minimum} ${sizing?.unit ?? \"\"}`;\n return `קטן מדי: ${subject} ${verb} להכיל ${comparison}`.trim();\n }\n const adj = issue.inclusive ? \">=\" : \">\";\n const be = verbFor(issue.origin ?? \"value\");\n if (sizing?.unit) {\n return `${sizing.shortLabel} מדי: ${subject} ${be} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `${sizing?.shortLabel ?? \"קטן\"} מדי: ${subject} ${be} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n // These apply to strings — use feminine grammar + ה׳ הידיעה\n if (_issue.format === \"starts_with\")\n return `המחרוזת חייבת להתחיל ב \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `המחרוזת חייבת להסתיים ב \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `המחרוזת חייבת לכלול \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `המחרוזת חייבת להתאים לתבנית ${_issue.pattern}`;\n // Handle gender agreement for formats\n const nounEntry = FormatDictionary[_issue.format];\n const noun = nounEntry?.label ?? _issue.format;\n const gender = nounEntry?.gender ?? \"m\";\n const adjective = gender === \"f\" ? \"תקינה\" : \"תקין\";\n return `${noun} לא ${adjective}`;\n }\n case \"not_multiple_of\":\n return `מספר לא תקין: חייב להיות מכפלה של ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `מפתח${issue.keys.length > 1 ? \"ות\" : \"\"} לא מזוה${issue.keys.length > 1 ? \"ים\" : \"ה\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\": {\n return `שדה לא תקין באובייקט`;\n }\n case \"invalid_union\":\n return \"קלט לא תקין\";\n case \"invalid_element\": {\n const place = withDefinite(issue.origin ?? \"array\");\n return `ערך לא תקין ב${place}`;\n }\n default:\n return `קלט לא תקין`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"legyen\" },\n file: { unit: \"byte\", verb: \"legyen\" },\n array: { unit: \"elem\", verb: \"legyen\" },\n set: { unit: \"elem\", verb: \"legyen\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"bemenet\",\n email: \"email cím\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO időbélyeg\",\n date: \"ISO dátum\",\n time: \"ISO idő\",\n duration: \"ISO időintervallum\",\n ipv4: \"IPv4 cím\",\n ipv6: \"IPv6 cím\",\n cidrv4: \"IPv4 tartomány\",\n cidrv6: \"IPv6 tartomány\",\n base64: \"base64-kódolt string\",\n base64url: \"base64url-kódolt string\",\n json_string: \"JSON string\",\n e164: \"E.164 szám\",\n jwt: \"JWT\",\n template_literal: \"bemenet\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"szám\",\n array: \"tömb\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Érvénytelen bemenet: a várt érték instanceof ${issue.expected}, a kapott érték ${received}`;\n }\n return `Érvénytelen bemenet: a várt érték ${expected}, a kapott érték ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Érvénytelen bemenet: a várt érték ${util.stringifyPrimitive(issue.values[0])}`;\n return `Érvénytelen opció: valamelyik érték várt ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Túl nagy: ${issue.origin ?? \"érték\"} mérete túl nagy ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elem\"}`;\n return `Túl nagy: a bemeneti érték ${issue.origin ?? \"érték\"} túl nagy: ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Túl kicsi: a bemeneti érték ${issue.origin} mérete túl kicsi ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Túl kicsi: a bemeneti érték ${issue.origin} túl kicsi ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Érvénytelen string: \"${_issue.prefix}\" értékkel kell kezdődnie`;\n if (_issue.format === \"ends_with\")\n return `Érvénytelen string: \"${_issue.suffix}\" értékkel kell végződnie`;\n if (_issue.format === \"includes\")\n return `Érvénytelen string: \"${_issue.includes}\" értéket kell tartalmaznia`;\n if (_issue.format === \"regex\")\n return `Érvénytelen string: ${_issue.pattern} mintának kell megfelelnie`;\n return `Érvénytelen ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Érvénytelen szám: ${issue.divisor} többszörösének kell lennie`;\n case \"unrecognized_keys\":\n return `Ismeretlen kulcs${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Érvénytelen kulcs ${issue.origin}`;\n case \"invalid_union\":\n return \"Érvénytelen bemenet\";\n case \"invalid_element\":\n return `Érvénytelen érték: ${issue.origin}`;\n default:\n return `Érvénytelen bemenet`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nfunction getArmenianPlural(count, one, many) {\n return Math.abs(count) === 1 ? one : many;\n}\nfunction withDefiniteArticle(word) {\n if (!word)\n return \"\";\n const vowels = [\"ա\", \"ե\", \"ը\", \"ի\", \"ո\", \"ու\", \"օ\"];\n const lastChar = word[word.length - 1];\n return word + (vowels.includes(lastChar) ? \"ն\" : \"ը\");\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"նշան\",\n many: \"նշաններ\",\n },\n verb: \"ունենալ\",\n },\n file: {\n unit: {\n one: \"բայթ\",\n many: \"բայթեր\",\n },\n verb: \"ունենալ\",\n },\n array: {\n unit: {\n one: \"տարր\",\n many: \"տարրեր\",\n },\n verb: \"ունենալ\",\n },\n set: {\n unit: {\n one: \"տարր\",\n many: \"տարրեր\",\n },\n verb: \"ունենալ\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"մուտք\",\n email: \"էլ. հասցե\",\n url: \"URL\",\n emoji: \"էմոջի\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO ամսաթիվ և ժամ\",\n date: \"ISO ամսաթիվ\",\n time: \"ISO ժամ\",\n duration: \"ISO տևողություն\",\n ipv4: \"IPv4 հասցե\",\n ipv6: \"IPv6 հասցե\",\n cidrv4: \"IPv4 միջակայք\",\n cidrv6: \"IPv6 միջակայք\",\n base64: \"base64 ձևաչափով տող\",\n base64url: \"base64url ձևաչափով տող\",\n json_string: \"JSON տող\",\n e164: \"E.164 համար\",\n jwt: \"JWT\",\n template_literal: \"մուտք\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"թիվ\",\n array: \"զանգված\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Սխալ մուտքագրում․ սպասվում էր instanceof ${issue.expected}, ստացվել է ${received}`;\n }\n return `Սխալ մուտքագրում․ սպասվում էր ${expected}, ստացվել է ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Սխալ մուտքագրում․ սպասվում էր ${util.stringifyPrimitive(issue.values[1])}`;\n return `Սխալ տարբերակ․ սպասվում էր հետևյալներից մեկը՝ ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getArmenianPlural(maxValue, sizing.unit.one, sizing.unit.many);\n return `Չափազանց մեծ արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin ?? \"արժեք\")} կունենա ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `Չափազանց մեծ արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin ?? \"արժեք\")} լինի ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getArmenianPlural(minValue, sizing.unit.one, sizing.unit.many);\n return `Չափազանց փոքր արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin)} կունենա ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `Չափազանց փոքր արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin)} լինի ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Սխալ տող․ պետք է սկսվի \"${_issue.prefix}\"-ով`;\n if (_issue.format === \"ends_with\")\n return `Սխալ տող․ պետք է ավարտվի \"${_issue.suffix}\"-ով`;\n if (_issue.format === \"includes\")\n return `Սխալ տող․ պետք է պարունակի \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Սխալ տող․ պետք է համապատասխանի ${_issue.pattern} ձևաչափին`;\n return `Սխալ ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Սխալ թիվ․ պետք է բազմապատիկ լինի ${issue.divisor}-ի`;\n case \"unrecognized_keys\":\n return `Չճանաչված բանալի${issue.keys.length > 1 ? \"ներ\" : \"\"}. ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Սխալ բանալի ${withDefiniteArticle(issue.origin)}-ում`;\n case \"invalid_union\":\n return \"Սխալ մուտքագրում\";\n case \"invalid_element\":\n return `Սխալ արժեք ${withDefiniteArticle(issue.origin)}-ում`;\n default:\n return `Սխալ մուտքագրում`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"memiliki\" },\n file: { unit: \"byte\", verb: \"memiliki\" },\n array: { unit: \"item\", verb: \"memiliki\" },\n set: { unit: \"item\", verb: \"memiliki\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"alamat email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"tanggal dan waktu format ISO\",\n date: \"tanggal format ISO\",\n time: \"jam format ISO\",\n duration: \"durasi format ISO\",\n ipv4: \"alamat IPv4\",\n ipv6: \"alamat IPv6\",\n cidrv4: \"rentang alamat IPv4\",\n cidrv6: \"rentang alamat IPv6\",\n base64: \"string dengan enkode base64\",\n base64url: \"string dengan enkode base64url\",\n json_string: \"string JSON\",\n e164: \"angka E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Input tidak valid: diharapkan instanceof ${issue.expected}, diterima ${received}`;\n }\n return `Input tidak valid: diharapkan ${expected}, diterima ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input tidak valid: diharapkan ${util.stringifyPrimitive(issue.values[0])}`;\n return `Pilihan tidak valid: diharapkan salah satu dari ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Terlalu besar: diharapkan ${issue.origin ?? \"value\"} memiliki ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemen\"}`;\n return `Terlalu besar: diharapkan ${issue.origin ?? \"value\"} menjadi ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Terlalu kecil: diharapkan ${issue.origin} memiliki ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Terlalu kecil: diharapkan ${issue.origin} menjadi ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `String tidak valid: harus dimulai dengan \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `String tidak valid: harus berakhir dengan \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `String tidak valid: harus menyertakan \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `String tidak valid: harus sesuai pola ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} tidak valid`;\n }\n case \"not_multiple_of\":\n return `Angka tidak valid: harus kelipatan dari ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Kunci tidak dikenali ${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Kunci tidak valid di ${issue.origin}`;\n case \"invalid_union\":\n return \"Input tidak valid\";\n case \"invalid_element\":\n return `Nilai tidak valid di ${issue.origin}`;\n default:\n return `Input tidak valid`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"stafi\", verb: \"að hafa\" },\n file: { unit: \"bæti\", verb: \"að hafa\" },\n array: { unit: \"hluti\", verb: \"að hafa\" },\n set: { unit: \"hluti\", verb: \"að hafa\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"gildi\",\n email: \"netfang\",\n url: \"vefslóð\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO dagsetning og tími\",\n date: \"ISO dagsetning\",\n time: \"ISO tími\",\n duration: \"ISO tímalengd\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded strengur\",\n base64url: \"base64url-encoded strengur\",\n json_string: \"JSON strengur\",\n e164: \"E.164 tölugildi\",\n jwt: \"JWT\",\n template_literal: \"gildi\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"númer\",\n array: \"fylki\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Rangt gildi: Þú slóst inn ${received} þar sem á að vera instanceof ${issue.expected}`;\n }\n return `Rangt gildi: Þú slóst inn ${received} þar sem á að vera ${expected}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Rangt gildi: gert ráð fyrir ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ógilt val: má vera eitt af eftirfarandi ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Of stórt: gert er ráð fyrir að ${issue.origin ?? \"gildi\"} hafi ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"hluti\"}`;\n return `Of stórt: gert er ráð fyrir að ${issue.origin ?? \"gildi\"} sé ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Of lítið: gert er ráð fyrir að ${issue.origin} hafi ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Of lítið: gert er ráð fyrir að ${issue.origin} sé ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Ógildur strengur: verður að byrja á \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Ógildur strengur: verður að enda á \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ógildur strengur: verður að innihalda \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ógildur strengur: verður að fylgja mynstri ${_issue.pattern}`;\n return `Rangt ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Röng tala: verður að vera margfeldi af ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Óþekkt ${issue.keys.length > 1 ? \"ir lyklar\" : \"ur lykill\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Rangur lykill í ${issue.origin}`;\n case \"invalid_union\":\n return \"Rangt gildi\";\n case \"invalid_element\":\n return `Rangt gildi í ${issue.origin}`;\n default:\n return `Rangt gildi`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caratteri\", verb: \"avere\" },\n file: { unit: \"byte\", verb: \"avere\" },\n array: { unit: \"elementi\", verb: \"avere\" },\n set: { unit: \"elementi\", verb: \"avere\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"indirizzo email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data e ora ISO\",\n date: \"data ISO\",\n time: \"ora ISO\",\n duration: \"durata ISO\",\n ipv4: \"indirizzo IPv4\",\n ipv6: \"indirizzo IPv6\",\n cidrv4: \"intervallo IPv4\",\n cidrv6: \"intervallo IPv6\",\n base64: \"stringa codificata in base64\",\n base64url: \"URL codificata in base64\",\n json_string: \"stringa JSON\",\n e164: \"numero E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"numero\",\n array: \"vettore\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Input non valido: atteso instanceof ${issue.expected}, ricevuto ${received}`;\n }\n return `Input non valido: atteso ${expected}, ricevuto ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input non valido: atteso ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opzione non valida: atteso uno tra ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Troppo grande: ${issue.origin ?? \"valore\"} deve avere ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementi\"}`;\n return `Troppo grande: ${issue.origin ?? \"valore\"} deve essere ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Troppo piccolo: ${issue.origin} deve avere ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Troppo piccolo: ${issue.origin} deve essere ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Stringa non valida: deve iniziare con \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Stringa non valida: deve terminare con \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Stringa non valida: deve includere \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Stringa non valida: deve corrispondere al pattern ${_issue.pattern}`;\n return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Numero non valido: deve essere un multiplo di ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Chiav${issue.keys.length > 1 ? \"i\" : \"e\"} non riconosciut${issue.keys.length > 1 ? \"e\" : \"a\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Chiave non valida in ${issue.origin}`;\n case \"invalid_union\":\n return \"Input non valido\";\n case \"invalid_element\":\n return `Valore non valido in ${issue.origin}`;\n default:\n return `Input non valido`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"文字\", verb: \"である\" },\n file: { unit: \"バイト\", verb: \"である\" },\n array: { unit: \"要素\", verb: \"である\" },\n set: { unit: \"要素\", verb: \"である\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"入力値\",\n email: \"メールアドレス\",\n url: \"URL\",\n emoji: \"絵文字\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO日時\",\n date: \"ISO日付\",\n time: \"ISO時刻\",\n duration: \"ISO期間\",\n ipv4: \"IPv4アドレス\",\n ipv6: \"IPv6アドレス\",\n cidrv4: \"IPv4範囲\",\n cidrv6: \"IPv6範囲\",\n base64: \"base64エンコード文字列\",\n base64url: \"base64urlエンコード文字列\",\n json_string: \"JSON文字列\",\n e164: \"E.164番号\",\n jwt: \"JWT\",\n template_literal: \"入力値\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"数値\",\n array: \"配列\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `無効な入力: instanceof ${issue.expected}が期待されましたが、${received}が入力されました`;\n }\n return `無効な入力: ${expected}が期待されましたが、${received}が入力されました`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `無効な入力: ${util.stringifyPrimitive(issue.values[0])}が期待されました`;\n return `無効な選択: ${util.joinValues(issue.values, \"、\")}のいずれかである必要があります`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"以下である\" : \"より小さい\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `大きすぎる値: ${issue.origin ?? \"値\"}は${issue.maximum.toString()}${sizing.unit ?? \"要素\"}${adj}必要があります`;\n return `大きすぎる値: ${issue.origin ?? \"値\"}は${issue.maximum.toString()}${adj}必要があります`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"以上である\" : \"より大きい\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `小さすぎる値: ${issue.origin}は${issue.minimum.toString()}${sizing.unit}${adj}必要があります`;\n return `小さすぎる値: ${issue.origin}は${issue.minimum.toString()}${adj}必要があります`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `無効な文字列: \"${_issue.prefix}\"で始まる必要があります`;\n if (_issue.format === \"ends_with\")\n return `無効な文字列: \"${_issue.suffix}\"で終わる必要があります`;\n if (_issue.format === \"includes\")\n return `無効な文字列: \"${_issue.includes}\"を含む必要があります`;\n if (_issue.format === \"regex\")\n return `無効な文字列: パターン${_issue.pattern}に一致する必要があります`;\n return `無効な${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `無効な数値: ${issue.divisor}の倍数である必要があります`;\n case \"unrecognized_keys\":\n return `認識されていないキー${issue.keys.length > 1 ? \"群\" : \"\"}: ${util.joinValues(issue.keys, \"、\")}`;\n case \"invalid_key\":\n return `${issue.origin}内の無効なキー`;\n case \"invalid_union\":\n return \"無効な入力\";\n case \"invalid_element\":\n return `${issue.origin}内の無効な値`;\n default:\n return `無効な入力`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"სიმბოლო\", verb: \"უნდა შეიცავდეს\" },\n file: { unit: \"ბაიტი\", verb: \"უნდა შეიცავდეს\" },\n array: { unit: \"ელემენტი\", verb: \"უნდა შეიცავდეს\" },\n set: { unit: \"ელემენტი\", verb: \"უნდა შეიცავდეს\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"შეყვანა\",\n email: \"ელ-ფოსტის მისამართი\",\n url: \"URL\",\n emoji: \"ემოჯი\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"თარიღი-დრო\",\n date: \"თარიღი\",\n time: \"დრო\",\n duration: \"ხანგრძლივობა\",\n ipv4: \"IPv4 მისამართი\",\n ipv6: \"IPv6 მისამართი\",\n cidrv4: \"IPv4 დიაპაზონი\",\n cidrv6: \"IPv6 დიაპაზონი\",\n base64: \"base64-კოდირებული სტრინგი\",\n base64url: \"base64url-კოდირებული სტრინგი\",\n json_string: \"JSON სტრინგი\",\n e164: \"E.164 ნომერი\",\n jwt: \"JWT\",\n template_literal: \"შეყვანა\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"რიცხვი\",\n string: \"სტრინგი\",\n boolean: \"ბულეანი\",\n function: \"ფუნქცია\",\n array: \"მასივი\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `არასწორი შეყვანა: მოსალოდნელი instanceof ${issue.expected}, მიღებული ${received}`;\n }\n return `არასწორი შეყვანა: მოსალოდნელი ${expected}, მიღებული ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `არასწორი შეყვანა: მოსალოდნელი ${util.stringifyPrimitive(issue.values[0])}`;\n return `არასწორი ვარიანტი: მოსალოდნელია ერთ-ერთი ${util.joinValues(issue.values, \"|\")}-დან`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `ზედმეტად დიდი: მოსალოდნელი ${issue.origin ?? \"მნიშვნელობა\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n return `ზედმეტად დიდი: მოსალოდნელი ${issue.origin ?? \"მნიშვნელობა\"} იყოს ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `ზედმეტად პატარა: მოსალოდნელი ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `ზედმეტად პატარა: მოსალოდნელი ${issue.origin} იყოს ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `არასწორი სტრინგი: უნდა იწყებოდეს \"${_issue.prefix}\"-ით`;\n }\n if (_issue.format === \"ends_with\")\n return `არასწორი სტრინგი: უნდა მთავრდებოდეს \"${_issue.suffix}\"-ით`;\n if (_issue.format === \"includes\")\n return `არასწორი სტრინგი: უნდა შეიცავდეს \"${_issue.includes}\"-ს`;\n if (_issue.format === \"regex\")\n return `არასწორი სტრინგი: უნდა შეესაბამებოდეს შაბლონს ${_issue.pattern}`;\n return `არასწორი ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `არასწორი რიცხვი: უნდა იყოს ${issue.divisor}-ის ჯერადი`;\n case \"unrecognized_keys\":\n return `უცნობი გასაღებ${issue.keys.length > 1 ? \"ები\" : \"ი\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `არასწორი გასაღები ${issue.origin}-ში`;\n case \"invalid_union\":\n return \"არასწორი შეყვანა\";\n case \"invalid_element\":\n return `არასწორი მნიშვნელობა ${issue.origin}-ში`;\n default:\n return `არასწორი შეყვანა`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"តួអក្សរ\", verb: \"គួរមាន\" },\n file: { unit: \"បៃ\", verb: \"គួរមាន\" },\n array: { unit: \"ធាតុ\", verb: \"គួរមាន\" },\n set: { unit: \"ធាតុ\", verb: \"គួរមាន\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ទិន្នន័យបញ្ចូល\",\n email: \"អាសយដ្ឋានអ៊ីមែល\",\n url: \"URL\",\n emoji: \"សញ្ញាអារម្មណ៍\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"កាលបរិច្ឆេទ និងម៉ោង ISO\",\n date: \"កាលបរិច្ឆេទ ISO\",\n time: \"ម៉ោង ISO\",\n duration: \"រយៈពេល ISO\",\n ipv4: \"អាសយដ្ឋាន IPv4\",\n ipv6: \"អាសយដ្ឋាន IPv6\",\n cidrv4: \"ដែនអាសយដ្ឋាន IPv4\",\n cidrv6: \"ដែនអាសយដ្ឋាន IPv6\",\n base64: \"ខ្សែអក្សរអ៊ិកូដ base64\",\n base64url: \"ខ្សែអក្សរអ៊ិកូដ base64url\",\n json_string: \"ខ្សែអក្សរ JSON\",\n e164: \"លេខ E.164\",\n jwt: \"JWT\",\n template_literal: \"ទិន្នន័យបញ្ចូល\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"លេខ\",\n array: \"អារេ (Array)\",\n null: \"គ្មានតម្លៃ (null)\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ instanceof ${issue.expected} ប៉ុន្តែទទួលបាន ${received}`;\n }\n return `ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ ${expected} ប៉ុន្តែទទួលបាន ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ ${util.stringifyPrimitive(issue.values[0])}`;\n return `ជម្រើសមិនត្រឹមត្រូវ៖ ត្រូវជាមួយក្នុងចំណោម ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `ធំពេក៖ ត្រូវការ ${issue.origin ?? \"តម្លៃ\"} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"ធាតុ\"}`;\n return `ធំពេក៖ ត្រូវការ ${issue.origin ?? \"តម្លៃ\"} ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `តូចពេក៖ ត្រូវការ ${issue.origin} ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `តូចពេក៖ ត្រូវការ ${issue.origin} ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវចាប់ផ្តើមដោយ \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវបញ្ចប់ដោយ \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវមាន \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវតែផ្គូផ្គងនឹងទម្រង់ដែលបានកំណត់ ${_issue.pattern}`;\n return `មិនត្រឹមត្រូវ៖ ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `លេខមិនត្រឹមត្រូវ៖ ត្រូវតែជាពហុគុណនៃ ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `រកឃើញសោមិនស្គាល់៖ ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `សោមិនត្រឹមត្រូវនៅក្នុង ${issue.origin}`;\n case \"invalid_union\":\n return `ទិន្នន័យមិនត្រឹមត្រូវ`;\n case \"invalid_element\":\n return `ទិន្នន័យមិនត្រឹមត្រូវនៅក្នុង ${issue.origin}`;\n default:\n return `ទិន្នន័យមិនត្រឹមត្រូវ`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import km from \"./km.js\";\n/** @deprecated Use `km` instead. */\nexport default function () {\n return km();\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"문자\", verb: \"to have\" },\n file: { unit: \"바이트\", verb: \"to have\" },\n array: { unit: \"개\", verb: \"to have\" },\n set: { unit: \"개\", verb: \"to have\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"입력\",\n email: \"이메일 주소\",\n url: \"URL\",\n emoji: \"이모지\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO 날짜시간\",\n date: \"ISO 날짜\",\n time: \"ISO 시간\",\n duration: \"ISO 기간\",\n ipv4: \"IPv4 주소\",\n ipv6: \"IPv6 주소\",\n cidrv4: \"IPv4 범위\",\n cidrv6: \"IPv6 범위\",\n base64: \"base64 인코딩 문자열\",\n base64url: \"base64url 인코딩 문자열\",\n json_string: \"JSON 문자열\",\n e164: \"E.164 번호\",\n jwt: \"JWT\",\n template_literal: \"입력\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `잘못된 입력: 예상 타입은 instanceof ${issue.expected}, 받은 타입은 ${received}입니다`;\n }\n return `잘못된 입력: 예상 타입은 ${expected}, 받은 타입은 ${received}입니다`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `잘못된 입력: 값은 ${util.stringifyPrimitive(issue.values[0])} 이어야 합니다`;\n return `잘못된 옵션: ${util.joinValues(issue.values, \"또는 \")} 중 하나여야 합니다`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"이하\" : \"미만\";\n const suffix = adj === \"미만\" ? \"이어야 합니다\" : \"여야 합니다\";\n const sizing = getSizing(issue.origin);\n const unit = sizing?.unit ?? \"요소\";\n if (sizing)\n return `${issue.origin ?? \"값\"}이 너무 큽니다: ${issue.maximum.toString()}${unit} ${adj}${suffix}`;\n return `${issue.origin ?? \"값\"}이 너무 큽니다: ${issue.maximum.toString()} ${adj}${suffix}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"이상\" : \"초과\";\n const suffix = adj === \"이상\" ? \"이어야 합니다\" : \"여야 합니다\";\n const sizing = getSizing(issue.origin);\n const unit = sizing?.unit ?? \"요소\";\n if (sizing) {\n return `${issue.origin ?? \"값\"}이 너무 작습니다: ${issue.minimum.toString()}${unit} ${adj}${suffix}`;\n }\n return `${issue.origin ?? \"값\"}이 너무 작습니다: ${issue.minimum.toString()} ${adj}${suffix}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `잘못된 문자열: \"${_issue.prefix}\"(으)로 시작해야 합니다`;\n }\n if (_issue.format === \"ends_with\")\n return `잘못된 문자열: \"${_issue.suffix}\"(으)로 끝나야 합니다`;\n if (_issue.format === \"includes\")\n return `잘못된 문자열: \"${_issue.includes}\"을(를) 포함해야 합니다`;\n if (_issue.format === \"regex\")\n return `잘못된 문자열: 정규식 ${_issue.pattern} 패턴과 일치해야 합니다`;\n return `잘못된 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `잘못된 숫자: ${issue.divisor}의 배수여야 합니다`;\n case \"unrecognized_keys\":\n return `인식할 수 없는 키: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `잘못된 키: ${issue.origin}`;\n case \"invalid_union\":\n return `잘못된 입력`;\n case \"invalid_element\":\n return `잘못된 값: ${issue.origin}`;\n default:\n return `잘못된 입력`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst capitalizeFirstCharacter = (text) => {\n return text.charAt(0).toUpperCase() + text.slice(1);\n};\nfunction getUnitTypeFromNumber(number) {\n const abs = Math.abs(number);\n const last = abs % 10;\n const last2 = abs % 100;\n if ((last2 >= 11 && last2 <= 19) || last === 0)\n return \"many\";\n if (last === 1)\n return \"one\";\n return \"few\";\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"simbolis\",\n few: \"simboliai\",\n many: \"simbolių\",\n },\n verb: {\n smaller: {\n inclusive: \"turi būti ne ilgesnė kaip\",\n notInclusive: \"turi būti trumpesnė kaip\",\n },\n bigger: {\n inclusive: \"turi būti ne trumpesnė kaip\",\n notInclusive: \"turi būti ilgesnė kaip\",\n },\n },\n },\n file: {\n unit: {\n one: \"baitas\",\n few: \"baitai\",\n many: \"baitų\",\n },\n verb: {\n smaller: {\n inclusive: \"turi būti ne didesnis kaip\",\n notInclusive: \"turi būti mažesnis kaip\",\n },\n bigger: {\n inclusive: \"turi būti ne mažesnis kaip\",\n notInclusive: \"turi būti didesnis kaip\",\n },\n },\n },\n array: {\n unit: {\n one: \"elementą\",\n few: \"elementus\",\n many: \"elementų\",\n },\n verb: {\n smaller: {\n inclusive: \"turi turėti ne daugiau kaip\",\n notInclusive: \"turi turėti mažiau kaip\",\n },\n bigger: {\n inclusive: \"turi turėti ne mažiau kaip\",\n notInclusive: \"turi turėti daugiau kaip\",\n },\n },\n },\n set: {\n unit: {\n one: \"elementą\",\n few: \"elementus\",\n many: \"elementų\",\n },\n verb: {\n smaller: {\n inclusive: \"turi turėti ne daugiau kaip\",\n notInclusive: \"turi turėti mažiau kaip\",\n },\n bigger: {\n inclusive: \"turi turėti ne mažiau kaip\",\n notInclusive: \"turi turėti daugiau kaip\",\n },\n },\n },\n };\n function getSizing(origin, unitType, inclusive, targetShouldBe) {\n const result = Sizable[origin] ?? null;\n if (result === null)\n return result;\n return {\n unit: result.unit[unitType],\n verb: result.verb[targetShouldBe][inclusive ? \"inclusive\" : \"notInclusive\"],\n };\n }\n const FormatDictionary = {\n regex: \"įvestis\",\n email: \"el. pašto adresas\",\n url: \"URL\",\n emoji: \"jaustukas\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO data ir laikas\",\n date: \"ISO data\",\n time: \"ISO laikas\",\n duration: \"ISO trukmė\",\n ipv4: \"IPv4 adresas\",\n ipv6: \"IPv6 adresas\",\n cidrv4: \"IPv4 tinklo prefiksas (CIDR)\",\n cidrv6: \"IPv6 tinklo prefiksas (CIDR)\",\n base64: \"base64 užkoduota eilutė\",\n base64url: \"base64url užkoduota eilutė\",\n json_string: \"JSON eilutė\",\n e164: \"E.164 numeris\",\n jwt: \"JWT\",\n template_literal: \"įvestis\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"skaičius\",\n bigint: \"sveikasis skaičius\",\n string: \"eilutė\",\n boolean: \"loginė reikšmė\",\n undefined: \"neapibrėžta reikšmė\",\n function: \"funkcija\",\n symbol: \"simbolis\",\n array: \"masyvas\",\n object: \"objektas\",\n null: \"nulinė reikšmė\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Gautas tipas ${received}, o tikėtasi - instanceof ${issue.expected}`;\n }\n return `Gautas tipas ${received}, o tikėtasi - ${expected}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Privalo būti ${util.stringifyPrimitive(issue.values[0])}`;\n return `Privalo būti vienas iš ${util.joinValues(issue.values, \"|\")} pasirinkimų`;\n case \"too_big\": {\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n const sizing = getSizing(issue.origin, getUnitTypeFromNumber(Number(issue.maximum)), issue.inclusive ?? false, \"smaller\");\n if (sizing?.verb)\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} ${sizing.verb} ${issue.maximum.toString()} ${sizing.unit ?? \"elementų\"}`;\n const adj = issue.inclusive ? \"ne didesnis kaip\" : \"mažesnis kaip\";\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} turi būti ${adj} ${issue.maximum.toString()} ${sizing?.unit}`;\n }\n case \"too_small\": {\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n const sizing = getSizing(issue.origin, getUnitTypeFromNumber(Number(issue.minimum)), issue.inclusive ?? false, \"bigger\");\n if (sizing?.verb)\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} ${sizing.verb} ${issue.minimum.toString()} ${sizing.unit ?? \"elementų\"}`;\n const adj = issue.inclusive ? \"ne mažesnis kaip\" : \"didesnis kaip\";\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} turi būti ${adj} ${issue.minimum.toString()} ${sizing?.unit}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Eilutė privalo prasidėti \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Eilutė privalo pasibaigti \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Eilutė privalo įtraukti \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Eilutė privalo atitikti ${_issue.pattern}`;\n return `Neteisingas ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Skaičius privalo būti ${issue.divisor} kartotinis.`;\n case \"unrecognized_keys\":\n return `Neatpažint${issue.keys.length > 1 ? \"i\" : \"as\"} rakt${issue.keys.length > 1 ? \"ai\" : \"as\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return \"Rastas klaidingas raktas\";\n case \"invalid_union\":\n return \"Klaidinga įvestis\";\n case \"invalid_element\": {\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} turi klaidingą įvestį`;\n }\n default:\n return \"Klaidinga įvestis\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"знаци\", verb: \"да имаат\" },\n file: { unit: \"бајти\", verb: \"да имаат\" },\n array: { unit: \"ставки\", verb: \"да имаат\" },\n set: { unit: \"ставки\", verb: \"да имаат\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"внес\",\n email: \"адреса на е-пошта\",\n url: \"URL\",\n emoji: \"емоџи\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO датум и време\",\n date: \"ISO датум\",\n time: \"ISO време\",\n duration: \"ISO времетраење\",\n ipv4: \"IPv4 адреса\",\n ipv6: \"IPv6 адреса\",\n cidrv4: \"IPv4 опсег\",\n cidrv6: \"IPv6 опсег\",\n base64: \"base64-енкодирана низа\",\n base64url: \"base64url-енкодирана низа\",\n json_string: \"JSON низа\",\n e164: \"E.164 број\",\n jwt: \"JWT\",\n template_literal: \"внес\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"број\",\n array: \"низа\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Грешен внес: се очекува instanceof ${issue.expected}, примено ${received}`;\n }\n return `Грешен внес: се очекува ${expected}, примено ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n return `Грешана опција: се очекува една ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Премногу голем: се очекува ${issue.origin ?? \"вредноста\"} да има ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"елементи\"}`;\n return `Премногу голем: се очекува ${issue.origin ?? \"вредноста\"} да биде ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Премногу мал: се очекува ${issue.origin} да има ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Премногу мал: се очекува ${issue.origin} да биде ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Неважечка низа: мора да започнува со \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Неважечка низа: мора да завршува со \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Неважечка низа: мора да вклучува \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Неважечка низа: мора да одгоара на патернот ${_issue.pattern}`;\n return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Грешен број: мора да биде делив со ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Непрепознаени клучеви\" : \"Непрепознаен клуч\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Грешен клуч во ${issue.origin}`;\n case \"invalid_union\":\n return \"Грешен внес\";\n case \"invalid_element\":\n return `Грешна вредност во ${issue.origin}`;\n default:\n return `Грешен внес`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"aksara\", verb: \"mempunyai\" },\n file: { unit: \"bait\", verb: \"mempunyai\" },\n array: { unit: \"elemen\", verb: \"mempunyai\" },\n set: { unit: \"elemen\", verb: \"mempunyai\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"alamat e-mel\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"tarikh masa ISO\",\n date: \"tarikh ISO\",\n time: \"masa ISO\",\n duration: \"tempoh ISO\",\n ipv4: \"alamat IPv4\",\n ipv6: \"alamat IPv6\",\n cidrv4: \"julat IPv4\",\n cidrv6: \"julat IPv6\",\n base64: \"string dikodkan base64\",\n base64url: \"string dikodkan base64url\",\n json_string: \"string JSON\",\n e164: \"nombor E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nombor\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Input tidak sah: dijangka instanceof ${issue.expected}, diterima ${received}`;\n }\n return `Input tidak sah: dijangka ${expected}, diterima ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input tidak sah: dijangka ${util.stringifyPrimitive(issue.values[0])}`;\n return `Pilihan tidak sah: dijangka salah satu daripada ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Terlalu besar: dijangka ${issue.origin ?? \"nilai\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemen\"}`;\n return `Terlalu besar: dijangka ${issue.origin ?? \"nilai\"} adalah ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Terlalu kecil: dijangka ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Terlalu kecil: dijangka ${issue.origin} adalah ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `String tidak sah: mesti bermula dengan \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `String tidak sah: mesti berakhir dengan \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `String tidak sah: mesti mengandungi \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `String tidak sah: mesti sepadan dengan corak ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} tidak sah`;\n }\n case \"not_multiple_of\":\n return `Nombor tidak sah: perlu gandaan ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Kunci tidak dikenali: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Kunci tidak sah dalam ${issue.origin}`;\n case \"invalid_union\":\n return \"Input tidak sah\";\n case \"invalid_element\":\n return `Nilai tidak sah dalam ${issue.origin}`;\n default:\n return `Input tidak sah`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tekens\", verb: \"heeft\" },\n file: { unit: \"bytes\", verb: \"heeft\" },\n array: { unit: \"elementen\", verb: \"heeft\" },\n set: { unit: \"elementen\", verb: \"heeft\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"invoer\",\n email: \"emailadres\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datum en tijd\",\n date: \"ISO datum\",\n time: \"ISO tijd\",\n duration: \"ISO duur\",\n ipv4: \"IPv4-adres\",\n ipv6: \"IPv6-adres\",\n cidrv4: \"IPv4-bereik\",\n cidrv6: \"IPv6-bereik\",\n base64: \"base64-gecodeerde tekst\",\n base64url: \"base64 URL-gecodeerde tekst\",\n json_string: \"JSON string\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"invoer\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"getal\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ongeldige invoer: verwacht instanceof ${issue.expected}, ontving ${received}`;\n }\n return `Ongeldige invoer: verwacht ${expected}, ontving ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ongeldige invoer: verwacht ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ongeldige optie: verwacht één van ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const longName = issue.origin === \"date\" ? \"laat\" : issue.origin === \"string\" ? \"lang\" : \"groot\";\n if (sizing)\n return `Te ${longName}: verwacht dat ${issue.origin ?? \"waarde\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementen\"} ${sizing.verb}`;\n return `Te ${longName}: verwacht dat ${issue.origin ?? \"waarde\"} ${adj}${issue.maximum.toString()} is`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const shortName = issue.origin === \"date\" ? \"vroeg\" : issue.origin === \"string\" ? \"kort\" : \"klein\";\n if (sizing) {\n return `Te ${shortName}: verwacht dat ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ${sizing.verb}`;\n }\n return `Te ${shortName}: verwacht dat ${issue.origin} ${adj}${issue.minimum.toString()} is`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Ongeldige tekst: moet met \"${_issue.prefix}\" beginnen`;\n }\n if (_issue.format === \"ends_with\")\n return `Ongeldige tekst: moet op \"${_issue.suffix}\" eindigen`;\n if (_issue.format === \"includes\")\n return `Ongeldige tekst: moet \"${_issue.includes}\" bevatten`;\n if (_issue.format === \"regex\")\n return `Ongeldige tekst: moet overeenkomen met patroon ${_issue.pattern}`;\n return `Ongeldig: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ongeldig getal: moet een veelvoud van ${issue.divisor} zijn`;\n case \"unrecognized_keys\":\n return `Onbekende key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ongeldige key in ${issue.origin}`;\n case \"invalid_union\":\n return \"Ongeldige invoer\";\n case \"invalid_element\":\n return `Ongeldige waarde in ${issue.origin}`;\n default:\n return `Ongeldige invoer`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tegn\", verb: \"å ha\" },\n file: { unit: \"bytes\", verb: \"å ha\" },\n array: { unit: \"elementer\", verb: \"å inneholde\" },\n set: { unit: \"elementer\", verb: \"å inneholde\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"e-postadresse\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO dato- og klokkeslett\",\n date: \"ISO-dato\",\n time: \"ISO-klokkeslett\",\n duration: \"ISO-varighet\",\n ipv4: \"IPv4-område\",\n ipv6: \"IPv6-område\",\n cidrv4: \"IPv4-spekter\",\n cidrv6: \"IPv6-spekter\",\n base64: \"base64-enkodet streng\",\n base64url: \"base64url-enkodet streng\",\n json_string: \"JSON-streng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"tall\",\n array: \"liste\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ugyldig input: forventet instanceof ${issue.expected}, fikk ${received}`;\n }\n return `Ugyldig input: forventet ${expected}, fikk ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ugyldig verdi: forventet ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ugyldig valg: forventet en av ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `For stor(t): forventet ${issue.origin ?? \"value\"} til å ha ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementer\"}`;\n return `For stor(t): forventet ${issue.origin ?? \"value\"} til å ha ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `For lite(n): forventet ${issue.origin} til å ha ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `For lite(n): forventet ${issue.origin} til å ha ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ugyldig streng: må starte med \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Ugyldig streng: må ende med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ugyldig streng: må inneholde \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ugyldig streng: må matche mønsteret ${_issue.pattern}`;\n return `Ugyldig ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ugyldig tall: må være et multiplum av ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Ukjente nøkler\" : \"Ukjent nøkkel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ugyldig nøkkel i ${issue.origin}`;\n case \"invalid_union\":\n return \"Ugyldig input\";\n case \"invalid_element\":\n return `Ugyldig verdi i ${issue.origin}`;\n default:\n return `Ugyldig input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"harf\", verb: \"olmalıdır\" },\n file: { unit: \"bayt\", verb: \"olmalıdır\" },\n array: { unit: \"unsur\", verb: \"olmalıdır\" },\n set: { unit: \"unsur\", verb: \"olmalıdır\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"giren\",\n email: \"epostagâh\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO hengâmı\",\n date: \"ISO tarihi\",\n time: \"ISO zamanı\",\n duration: \"ISO müddeti\",\n ipv4: \"IPv4 nişânı\",\n ipv6: \"IPv6 nişânı\",\n cidrv4: \"IPv4 menzili\",\n cidrv6: \"IPv6 menzili\",\n base64: \"base64-şifreli metin\",\n base64url: \"base64url-şifreli metin\",\n json_string: \"JSON metin\",\n e164: \"E.164 sayısı\",\n jwt: \"JWT\",\n template_literal: \"giren\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"numara\",\n array: \"saf\",\n null: \"gayb\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Fâsit giren: umulan instanceof ${issue.expected}, alınan ${received}`;\n }\n return `Fâsit giren: umulan ${expected}, alınan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Fâsit giren: umulan ${util.stringifyPrimitive(issue.values[0])}`;\n return `Fâsit tercih: mûteberler ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Fazla büyük: ${issue.origin ?? \"value\"}, ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"} sahip olmalıydı.`;\n return `Fazla büyük: ${issue.origin ?? \"value\"}, ${adj}${issue.maximum.toString()} olmalıydı.`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Fazla küçük: ${issue.origin}, ${adj}${issue.minimum.toString()} ${sizing.unit} sahip olmalıydı.`;\n }\n return `Fazla küçük: ${issue.origin}, ${adj}${issue.minimum.toString()} olmalıydı.`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Fâsit metin: \"${_issue.prefix}\" ile başlamalı.`;\n if (_issue.format === \"ends_with\")\n return `Fâsit metin: \"${_issue.suffix}\" ile bitmeli.`;\n if (_issue.format === \"includes\")\n return `Fâsit metin: \"${_issue.includes}\" ihtivâ etmeli.`;\n if (_issue.format === \"regex\")\n return `Fâsit metin: ${_issue.pattern} nakşına uymalı.`;\n return `Fâsit ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Fâsit sayı: ${issue.divisor} katı olmalıydı.`;\n case \"unrecognized_keys\":\n return `Tanınmayan anahtar ${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} için tanınmayan anahtar var.`;\n case \"invalid_union\":\n return \"Giren tanınamadı.\";\n case \"invalid_element\":\n return `${issue.origin} için tanınmayan kıymet var.`;\n default:\n return `Kıymet tanınamadı.`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"توکي\", verb: \"ولري\" },\n file: { unit: \"بایټس\", verb: \"ولري\" },\n array: { unit: \"توکي\", verb: \"ولري\" },\n set: { unit: \"توکي\", verb: \"ولري\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ورودي\",\n email: \"بریښنالیک\",\n url: \"یو آر ال\",\n emoji: \"ایموجي\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"نیټه او وخت\",\n date: \"نېټه\",\n time: \"وخت\",\n duration: \"موده\",\n ipv4: \"د IPv4 پته\",\n ipv6: \"د IPv6 پته\",\n cidrv4: \"د IPv4 ساحه\",\n cidrv6: \"د IPv6 ساحه\",\n base64: \"base64-encoded متن\",\n base64url: \"base64url-encoded متن\",\n json_string: \"JSON متن\",\n e164: \"د E.164 شمېره\",\n jwt: \"JWT\",\n template_literal: \"ورودي\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"عدد\",\n array: \"ارې\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ناسم ورودي: باید instanceof ${issue.expected} وای, مګر ${received} ترلاسه شو`;\n }\n return `ناسم ورودي: باید ${expected} وای, مګر ${received} ترلاسه شو`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1) {\n return `ناسم ورودي: باید ${util.stringifyPrimitive(issue.values[0])} وای`;\n }\n return `ناسم انتخاب: باید یو له ${util.joinValues(issue.values, \"|\")} څخه وای`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `ډیر لوی: ${issue.origin ?? \"ارزښت\"} باید ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"عنصرونه\"} ولري`;\n }\n return `ډیر لوی: ${issue.origin ?? \"ارزښت\"} باید ${adj}${issue.maximum.toString()} وي`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `ډیر کوچنی: ${issue.origin} باید ${adj}${issue.minimum.toString()} ${sizing.unit} ولري`;\n }\n return `ډیر کوچنی: ${issue.origin} باید ${adj}${issue.minimum.toString()} وي`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `ناسم متن: باید د \"${_issue.prefix}\" سره پیل شي`;\n }\n if (_issue.format === \"ends_with\") {\n return `ناسم متن: باید د \"${_issue.suffix}\" سره پای ته ورسيږي`;\n }\n if (_issue.format === \"includes\") {\n return `ناسم متن: باید \"${_issue.includes}\" ولري`;\n }\n if (_issue.format === \"regex\") {\n return `ناسم متن: باید د ${_issue.pattern} سره مطابقت ولري`;\n }\n return `${FormatDictionary[_issue.format] ?? issue.format} ناسم دی`;\n }\n case \"not_multiple_of\":\n return `ناسم عدد: باید د ${issue.divisor} مضرب وي`;\n case \"unrecognized_keys\":\n return `ناسم ${issue.keys.length > 1 ? \"کلیډونه\" : \"کلیډ\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `ناسم کلیډ په ${issue.origin} کې`;\n case \"invalid_union\":\n return `ناسمه ورودي`;\n case \"invalid_element\":\n return `ناسم عنصر په ${issue.origin} کې`;\n default:\n return `ناسمه ورودي`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"znaków\", verb: \"mieć\" },\n file: { unit: \"bajtów\", verb: \"mieć\" },\n array: { unit: \"elementów\", verb: \"mieć\" },\n set: { unit: \"elementów\", verb: \"mieć\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"wyrażenie\",\n email: \"adres email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data i godzina w formacie ISO\",\n date: \"data w formacie ISO\",\n time: \"godzina w formacie ISO\",\n duration: \"czas trwania ISO\",\n ipv4: \"adres IPv4\",\n ipv6: \"adres IPv6\",\n cidrv4: \"zakres IPv4\",\n cidrv6: \"zakres IPv6\",\n base64: \"ciąg znaków zakodowany w formacie base64\",\n base64url: \"ciąg znaków zakodowany w formacie base64url\",\n json_string: \"ciąg znaków w formacie JSON\",\n e164: \"liczba E.164\",\n jwt: \"JWT\",\n template_literal: \"wejście\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"liczba\",\n array: \"tablica\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Nieprawidłowe dane wejściowe: oczekiwano instanceof ${issue.expected}, otrzymano ${received}`;\n }\n return `Nieprawidłowe dane wejściowe: oczekiwano ${expected}, otrzymano ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Nieprawidłowe dane wejściowe: oczekiwano ${util.stringifyPrimitive(issue.values[0])}`;\n return `Nieprawidłowa opcja: oczekiwano jednej z wartości ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Za duża wartość: oczekiwano, że ${issue.origin ?? \"wartość\"} będzie mieć ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementów\"}`;\n }\n return `Zbyt duż(y/a/e): oczekiwano, że ${issue.origin ?? \"wartość\"} będzie wynosić ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Za mała wartość: oczekiwano, że ${issue.origin ?? \"wartość\"} będzie mieć ${adj}${issue.minimum.toString()} ${sizing.unit ?? \"elementów\"}`;\n }\n return `Zbyt mał(y/a/e): oczekiwano, że ${issue.origin ?? \"wartość\"} będzie wynosić ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Nieprawidłowy ciąg znaków: musi zaczynać się od \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Nieprawidłowy ciąg znaków: musi kończyć się na \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Nieprawidłowy ciąg znaków: musi zawierać \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Nieprawidłowy ciąg znaków: musi odpowiadać wzorcowi ${_issue.pattern}`;\n return `Nieprawidłow(y/a/e) ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Nieprawidłowa liczba: musi być wielokrotnością ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Nierozpoznane klucze${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Nieprawidłowy klucz w ${issue.origin}`;\n case \"invalid_union\":\n return \"Nieprawidłowe dane wejściowe\";\n case \"invalid_element\":\n return `Nieprawidłowa wartość w ${issue.origin}`;\n default:\n return `Nieprawidłowe dane wejściowe`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caracteres\", verb: \"ter\" },\n file: { unit: \"bytes\", verb: \"ter\" },\n array: { unit: \"itens\", verb: \"ter\" },\n set: { unit: \"itens\", verb: \"ter\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"padrão\",\n email: \"endereço de e-mail\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data e hora ISO\",\n date: \"data ISO\",\n time: \"hora ISO\",\n duration: \"duração ISO\",\n ipv4: \"endereço IPv4\",\n ipv6: \"endereço IPv6\",\n cidrv4: \"faixa de IPv4\",\n cidrv6: \"faixa de IPv6\",\n base64: \"texto codificado em base64\",\n base64url: \"URL codificada em base64\",\n json_string: \"texto JSON\",\n e164: \"número E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"número\",\n null: \"nulo\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Tipo inválido: esperado instanceof ${issue.expected}, recebido ${received}`;\n }\n return `Tipo inválido: esperado ${expected}, recebido ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrada inválida: esperado ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opção inválida: esperada uma das ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Muito grande: esperado que ${issue.origin ?? \"valor\"} tivesse ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementos\"}`;\n return `Muito grande: esperado que ${issue.origin ?? \"valor\"} fosse ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Muito pequeno: esperado que ${issue.origin} tivesse ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Muito pequeno: esperado que ${issue.origin} fosse ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Texto inválido: deve começar com \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Texto inválido: deve terminar com \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Texto inválido: deve incluir \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Texto inválido: deve corresponder ao padrão ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} inválido`;\n }\n case \"not_multiple_of\":\n return `Número inválido: deve ser múltiplo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Chave${issue.keys.length > 1 ? \"s\" : \"\"} desconhecida${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Chave inválida em ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrada inválida\";\n case \"invalid_element\":\n return `Valor inválido em ${issue.origin}`;\n default:\n return `Campo inválido`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nfunction getRussianPlural(count, one, few, many) {\n const absCount = Math.abs(count);\n const lastDigit = absCount % 10;\n const lastTwoDigits = absCount % 100;\n if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {\n return many;\n }\n if (lastDigit === 1) {\n return one;\n }\n if (lastDigit >= 2 && lastDigit <= 4) {\n return few;\n }\n return many;\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"символ\",\n few: \"символа\",\n many: \"символов\",\n },\n verb: \"иметь\",\n },\n file: {\n unit: {\n one: \"байт\",\n few: \"байта\",\n many: \"байт\",\n },\n verb: \"иметь\",\n },\n array: {\n unit: {\n one: \"элемент\",\n few: \"элемента\",\n many: \"элементов\",\n },\n verb: \"иметь\",\n },\n set: {\n unit: {\n one: \"элемент\",\n few: \"элемента\",\n many: \"элементов\",\n },\n verb: \"иметь\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ввод\",\n email: \"email адрес\",\n url: \"URL\",\n emoji: \"эмодзи\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO дата и время\",\n date: \"ISO дата\",\n time: \"ISO время\",\n duration: \"ISO длительность\",\n ipv4: \"IPv4 адрес\",\n ipv6: \"IPv6 адрес\",\n cidrv4: \"IPv4 диапазон\",\n cidrv6: \"IPv6 диапазон\",\n base64: \"строка в формате base64\",\n base64url: \"строка в формате base64url\",\n json_string: \"JSON строка\",\n e164: \"номер E.164\",\n jwt: \"JWT\",\n template_literal: \"ввод\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"число\",\n array: \"массив\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Неверный ввод: ожидалось instanceof ${issue.expected}, получено ${received}`;\n }\n return `Неверный ввод: ожидалось ${expected}, получено ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Неверный ввод: ожидалось ${util.stringifyPrimitive(issue.values[0])}`;\n return `Неверный вариант: ожидалось одно из ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getRussianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Слишком большое значение: ожидалось, что ${issue.origin ?? \"значение\"} будет иметь ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `Слишком большое значение: ожидалось, что ${issue.origin ?? \"значение\"} будет ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getRussianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Слишком маленькое значение: ожидалось, что ${issue.origin} будет иметь ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `Слишком маленькое значение: ожидалось, что ${issue.origin} будет ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Неверная строка: должна начинаться с \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Неверная строка: должна заканчиваться на \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Неверная строка: должна содержать \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Неверная строка: должна соответствовать шаблону ${_issue.pattern}`;\n return `Неверный ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Неверное число: должно быть кратным ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Нераспознанн${issue.keys.length > 1 ? \"ые\" : \"ый\"} ключ${issue.keys.length > 1 ? \"и\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Неверный ключ в ${issue.origin}`;\n case \"invalid_union\":\n return \"Неверные входные данные\";\n case \"invalid_element\":\n return `Неверное значение в ${issue.origin}`;\n default:\n return `Неверные входные данные`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"znakov\", verb: \"imeti\" },\n file: { unit: \"bajtov\", verb: \"imeti\" },\n array: { unit: \"elementov\", verb: \"imeti\" },\n set: { unit: \"elementov\", verb: \"imeti\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"vnos\",\n email: \"e-poštni naslov\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datum in čas\",\n date: \"ISO datum\",\n time: \"ISO čas\",\n duration: \"ISO trajanje\",\n ipv4: \"IPv4 naslov\",\n ipv6: \"IPv6 naslov\",\n cidrv4: \"obseg IPv4\",\n cidrv6: \"obseg IPv6\",\n base64: \"base64 kodiran niz\",\n base64url: \"base64url kodiran niz\",\n json_string: \"JSON niz\",\n e164: \"E.164 številka\",\n jwt: \"JWT\",\n template_literal: \"vnos\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"število\",\n array: \"tabela\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Neveljaven vnos: pričakovano instanceof ${issue.expected}, prejeto ${received}`;\n }\n return `Neveljaven vnos: pričakovano ${expected}, prejeto ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Neveljaven vnos: pričakovano ${util.stringifyPrimitive(issue.values[0])}`;\n return `Neveljavna možnost: pričakovano eno izmed ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Preveliko: pričakovano, da bo ${issue.origin ?? \"vrednost\"} imelo ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementov\"}`;\n return `Preveliko: pričakovano, da bo ${issue.origin ?? \"vrednost\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Premajhno: pričakovano, da bo ${issue.origin} imelo ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Premajhno: pričakovano, da bo ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Neveljaven niz: mora se začeti z \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Neveljaven niz: mora se končati z \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Neveljaven niz: mora vsebovati \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Neveljaven niz: mora ustrezati vzorcu ${_issue.pattern}`;\n return `Neveljaven ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Neveljavno število: mora biti večkratnik ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Neprepoznan${issue.keys.length > 1 ? \"i ključi\" : \" ključ\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Neveljaven ključ v ${issue.origin}`;\n case \"invalid_union\":\n return \"Neveljaven vnos\";\n case \"invalid_element\":\n return `Neveljavna vrednost v ${issue.origin}`;\n default:\n return \"Neveljaven vnos\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tecken\", verb: \"att ha\" },\n file: { unit: \"bytes\", verb: \"att ha\" },\n array: { unit: \"objekt\", verb: \"att innehålla\" },\n set: { unit: \"objekt\", verb: \"att innehålla\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"reguljärt uttryck\",\n email: \"e-postadress\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-datum och tid\",\n date: \"ISO-datum\",\n time: \"ISO-tid\",\n duration: \"ISO-varaktighet\",\n ipv4: \"IPv4-intervall\",\n ipv6: \"IPv6-intervall\",\n cidrv4: \"IPv4-spektrum\",\n cidrv6: \"IPv6-spektrum\",\n base64: \"base64-kodad sträng\",\n base64url: \"base64url-kodad sträng\",\n json_string: \"JSON-sträng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"mall-literal\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"antal\",\n array: \"lista\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ogiltig inmatning: förväntat instanceof ${issue.expected}, fick ${received}`;\n }\n return `Ogiltig inmatning: förväntat ${expected}, fick ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ogiltig inmatning: förväntat ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ogiltigt val: förväntade en av ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `För stor(t): förväntade ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\"}`;\n }\n return `För stor(t): förväntat ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `För lite(t): förväntade ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `För lite(t): förväntade ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Ogiltig sträng: måste börja med \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Ogiltig sträng: måste sluta med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ogiltig sträng: måste innehålla \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ogiltig sträng: måste matcha mönstret \"${_issue.pattern}\"`;\n return `Ogiltig(t) ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ogiltigt tal: måste vara en multipel av ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Okända nycklar\" : \"Okänd nyckel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ogiltig nyckel i ${issue.origin ?? \"värdet\"}`;\n case \"invalid_union\":\n return \"Ogiltig input\";\n case \"invalid_element\":\n return `Ogiltigt värde i ${issue.origin ?? \"värdet\"}`;\n default:\n return `Ogiltig input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"எழுத்துக்கள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n file: { unit: \"பைட்டுகள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n array: { unit: \"உறுப்புகள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n set: { unit: \"உறுப்புகள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"உள்ளீடு\",\n email: \"மின்னஞ்சல் முகவரி\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO தேதி நேரம்\",\n date: \"ISO தேதி\",\n time: \"ISO நேரம்\",\n duration: \"ISO கால அளவு\",\n ipv4: \"IPv4 முகவரி\",\n ipv6: \"IPv6 முகவரி\",\n cidrv4: \"IPv4 வரம்பு\",\n cidrv6: \"IPv6 வரம்பு\",\n base64: \"base64-encoded சரம்\",\n base64url: \"base64url-encoded சரம்\",\n json_string: \"JSON சரம்\",\n e164: \"E.164 எண்\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"எண்\",\n array: \"அணி\",\n null: \"வெறுமை\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது instanceof ${issue.expected}, பெறப்பட்டது ${received}`;\n }\n return `தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது ${expected}, பெறப்பட்டது ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது ${util.stringifyPrimitive(issue.values[0])}`;\n return `தவறான விருப்பம்: எதிர்பார்க்கப்பட்டது ${util.joinValues(issue.values, \"|\")} இல் ஒன்று`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `மிக பெரியது: எதிர்பார்க்கப்பட்டது ${issue.origin ?? \"மதிப்பு\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"உறுப்புகள்\"} ஆக இருக்க வேண்டும்`;\n }\n return `மிக பெரியது: எதிர்பார்க்கப்பட்டது ${issue.origin ?? \"மதிப்பு\"} ${adj}${issue.maximum.toString()} ஆக இருக்க வேண்டும்`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `மிகச் சிறியது: எதிர்பார்க்கப்பட்டது ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ஆக இருக்க வேண்டும்`; //\n }\n return `மிகச் சிறியது: எதிர்பார்க்கப்பட்டது ${issue.origin} ${adj}${issue.minimum.toString()} ஆக இருக்க வேண்டும்`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `தவறான சரம்: \"${_issue.prefix}\" இல் தொடங்க வேண்டும்`;\n if (_issue.format === \"ends_with\")\n return `தவறான சரம்: \"${_issue.suffix}\" இல் முடிவடைய வேண்டும்`;\n if (_issue.format === \"includes\")\n return `தவறான சரம்: \"${_issue.includes}\" ஐ உள்ளடக்க வேண்டும்`;\n if (_issue.format === \"regex\")\n return `தவறான சரம்: ${_issue.pattern} முறைபாட்டுடன் பொருந்த வேண்டும்`;\n return `தவறான ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `தவறான எண்: ${issue.divisor} இன் பலமாக இருக்க வேண்டும்`;\n case \"unrecognized_keys\":\n return `அடையாளம் தெரியாத விசை${issue.keys.length > 1 ? \"கள்\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} இல் தவறான விசை`;\n case \"invalid_union\":\n return \"தவறான உள்ளீடு\";\n case \"invalid_element\":\n return `${issue.origin} இல் தவறான மதிப்பு`;\n default:\n return `தவறான உள்ளீடு`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"ตัวอักษร\", verb: \"ควรมี\" },\n file: { unit: \"ไบต์\", verb: \"ควรมี\" },\n array: { unit: \"รายการ\", verb: \"ควรมี\" },\n set: { unit: \"รายการ\", verb: \"ควรมี\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ข้อมูลที่ป้อน\",\n email: \"ที่อยู่อีเมล\",\n url: \"URL\",\n emoji: \"อิโมจิ\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"วันที่เวลาแบบ ISO\",\n date: \"วันที่แบบ ISO\",\n time: \"เวลาแบบ ISO\",\n duration: \"ช่วงเวลาแบบ ISO\",\n ipv4: \"ที่อยู่ IPv4\",\n ipv6: \"ที่อยู่ IPv6\",\n cidrv4: \"ช่วง IP แบบ IPv4\",\n cidrv6: \"ช่วง IP แบบ IPv6\",\n base64: \"ข้อความแบบ Base64\",\n base64url: \"ข้อความแบบ Base64 สำหรับ URL\",\n json_string: \"ข้อความแบบ JSON\",\n e164: \"เบอร์โทรศัพท์ระหว่างประเทศ (E.164)\",\n jwt: \"โทเคน JWT\",\n template_literal: \"ข้อมูลที่ป้อน\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"ตัวเลข\",\n array: \"อาร์เรย์ (Array)\",\n null: \"ไม่มีค่า (null)\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ประเภทข้อมูลไม่ถูกต้อง: ควรเป็น instanceof ${issue.expected} แต่ได้รับ ${received}`;\n }\n return `ประเภทข้อมูลไม่ถูกต้อง: ควรเป็น ${expected} แต่ได้รับ ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `ค่าไม่ถูกต้อง: ควรเป็น ${util.stringifyPrimitive(issue.values[0])}`;\n return `ตัวเลือกไม่ถูกต้อง: ควรเป็นหนึ่งใน ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"ไม่เกิน\" : \"น้อยกว่า\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `เกินกำหนด: ${issue.origin ?? \"ค่า\"} ควรมี${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"รายการ\"}`;\n return `เกินกำหนด: ${issue.origin ?? \"ค่า\"} ควรมี${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"อย่างน้อย\" : \"มากกว่า\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `น้อยกว่ากำหนด: ${issue.origin} ควรมี${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `น้อยกว่ากำหนด: ${issue.origin} ควรมี${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `รูปแบบไม่ถูกต้อง: ข้อความต้องขึ้นต้นด้วย \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `รูปแบบไม่ถูกต้อง: ข้อความต้องลงท้ายด้วย \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `รูปแบบไม่ถูกต้อง: ข้อความต้องมี \"${_issue.includes}\" อยู่ในข้อความ`;\n if (_issue.format === \"regex\")\n return `รูปแบบไม่ถูกต้อง: ต้องตรงกับรูปแบบที่กำหนด ${_issue.pattern}`;\n return `รูปแบบไม่ถูกต้อง: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `ตัวเลขไม่ถูกต้อง: ต้องเป็นจำนวนที่หารด้วย ${issue.divisor} ได้ลงตัว`;\n case \"unrecognized_keys\":\n return `พบคีย์ที่ไม่รู้จัก: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `คีย์ไม่ถูกต้องใน ${issue.origin}`;\n case \"invalid_union\":\n return \"ข้อมูลไม่ถูกต้อง: ไม่ตรงกับรูปแบบยูเนียนที่กำหนดไว้\";\n case \"invalid_element\":\n return `ข้อมูลไม่ถูกต้องใน ${issue.origin}`;\n default:\n return `ข้อมูลไม่ถูกต้อง`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"olmalı\" },\n file: { unit: \"bayt\", verb: \"olmalı\" },\n array: { unit: \"öğe\", verb: \"olmalı\" },\n set: { unit: \"öğe\", verb: \"olmalı\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"girdi\",\n email: \"e-posta adresi\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO tarih ve saat\",\n date: \"ISO tarih\",\n time: \"ISO saat\",\n duration: \"ISO süre\",\n ipv4: \"IPv4 adresi\",\n ipv6: \"IPv6 adresi\",\n cidrv4: \"IPv4 aralığı\",\n cidrv6: \"IPv6 aralığı\",\n base64: \"base64 ile şifrelenmiş metin\",\n base64url: \"base64url ile şifrelenmiş metin\",\n json_string: \"JSON dizesi\",\n e164: \"E.164 sayısı\",\n jwt: \"JWT\",\n template_literal: \"Şablon dizesi\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Geçersiz değer: beklenen instanceof ${issue.expected}, alınan ${received}`;\n }\n return `Geçersiz değer: beklenen ${expected}, alınan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Geçersiz değer: beklenen ${util.stringifyPrimitive(issue.values[0])}`;\n return `Geçersiz seçenek: aşağıdakilerden biri olmalı: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çok büyük: beklenen ${issue.origin ?? \"değer\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"öğe\"}`;\n return `Çok büyük: beklenen ${issue.origin ?? \"değer\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çok küçük: beklenen ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n return `Çok küçük: beklenen ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Geçersiz metin: \"${_issue.prefix}\" ile başlamalı`;\n if (_issue.format === \"ends_with\")\n return `Geçersiz metin: \"${_issue.suffix}\" ile bitmeli`;\n if (_issue.format === \"includes\")\n return `Geçersiz metin: \"${_issue.includes}\" içermeli`;\n if (_issue.format === \"regex\")\n return `Geçersiz metin: ${_issue.pattern} desenine uymalı`;\n return `Geçersiz ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Geçersiz sayı: ${issue.divisor} ile tam bölünebilmeli`;\n case \"unrecognized_keys\":\n return `Tanınmayan anahtar${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} içinde geçersiz anahtar`;\n case \"invalid_union\":\n return \"Geçersiz değer\";\n case \"invalid_element\":\n return `${issue.origin} içinde geçersiz değer`;\n default:\n return `Geçersiz değer`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"символів\", verb: \"матиме\" },\n file: { unit: \"байтів\", verb: \"матиме\" },\n array: { unit: \"елементів\", verb: \"матиме\" },\n set: { unit: \"елементів\", verb: \"матиме\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"вхідні дані\",\n email: \"адреса електронної пошти\",\n url: \"URL\",\n emoji: \"емодзі\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"дата та час ISO\",\n date: \"дата ISO\",\n time: \"час ISO\",\n duration: \"тривалість ISO\",\n ipv4: \"адреса IPv4\",\n ipv6: \"адреса IPv6\",\n cidrv4: \"діапазон IPv4\",\n cidrv6: \"діапазон IPv6\",\n base64: \"рядок у кодуванні base64\",\n base64url: \"рядок у кодуванні base64url\",\n json_string: \"рядок JSON\",\n e164: \"номер E.164\",\n jwt: \"JWT\",\n template_literal: \"вхідні дані\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"число\",\n array: \"масив\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Неправильні вхідні дані: очікується instanceof ${issue.expected}, отримано ${received}`;\n }\n return `Неправильні вхідні дані: очікується ${expected}, отримано ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Неправильні вхідні дані: очікується ${util.stringifyPrimitive(issue.values[0])}`;\n return `Неправильна опція: очікується одне з ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Занадто велике: очікується, що ${issue.origin ?? \"значення\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"елементів\"}`;\n return `Занадто велике: очікується, що ${issue.origin ?? \"значення\"} буде ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Занадто мале: очікується, що ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Занадто мале: очікується, що ${issue.origin} буде ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Неправильний рядок: повинен починатися з \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Неправильний рядок: повинен закінчуватися на \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Неправильний рядок: повинен містити \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Неправильний рядок: повинен відповідати шаблону ${_issue.pattern}`;\n return `Неправильний ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Неправильне число: повинно бути кратним ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Нерозпізнаний ключ${issue.keys.length > 1 ? \"і\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Неправильний ключ у ${issue.origin}`;\n case \"invalid_union\":\n return \"Неправильні вхідні дані\";\n case \"invalid_element\":\n return `Неправильне значення у ${issue.origin}`;\n default:\n return `Неправильні вхідні дані`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import uk from \"./uk.js\";\n/** @deprecated Use `uk` instead. */\nexport default function () {\n return uk();\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"حروف\", verb: \"ہونا\" },\n file: { unit: \"بائٹس\", verb: \"ہونا\" },\n array: { unit: \"آئٹمز\", verb: \"ہونا\" },\n set: { unit: \"آئٹمز\", verb: \"ہونا\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ان پٹ\",\n email: \"ای میل ایڈریس\",\n url: \"یو آر ایل\",\n emoji: \"ایموجی\",\n uuid: \"یو یو آئی ڈی\",\n uuidv4: \"یو یو آئی ڈی وی 4\",\n uuidv6: \"یو یو آئی ڈی وی 6\",\n nanoid: \"نینو آئی ڈی\",\n guid: \"جی یو آئی ڈی\",\n cuid: \"سی یو آئی ڈی\",\n cuid2: \"سی یو آئی ڈی 2\",\n ulid: \"یو ایل آئی ڈی\",\n xid: \"ایکس آئی ڈی\",\n ksuid: \"کے ایس یو آئی ڈی\",\n datetime: \"آئی ایس او ڈیٹ ٹائم\",\n date: \"آئی ایس او تاریخ\",\n time: \"آئی ایس او وقت\",\n duration: \"آئی ایس او مدت\",\n ipv4: \"آئی پی وی 4 ایڈریس\",\n ipv6: \"آئی پی وی 6 ایڈریس\",\n cidrv4: \"آئی پی وی 4 رینج\",\n cidrv6: \"آئی پی وی 6 رینج\",\n base64: \"بیس 64 ان کوڈڈ سٹرنگ\",\n base64url: \"بیس 64 یو آر ایل ان کوڈڈ سٹرنگ\",\n json_string: \"جے ایس او این سٹرنگ\",\n e164: \"ای 164 نمبر\",\n jwt: \"جے ڈبلیو ٹی\",\n template_literal: \"ان پٹ\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"نمبر\",\n array: \"آرے\",\n null: \"نل\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `غلط ان پٹ: instanceof ${issue.expected} متوقع تھا، ${received} موصول ہوا`;\n }\n return `غلط ان پٹ: ${expected} متوقع تھا، ${received} موصول ہوا`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `غلط ان پٹ: ${util.stringifyPrimitive(issue.values[0])} متوقع تھا`;\n return `غلط آپشن: ${util.joinValues(issue.values, \"|\")} میں سے ایک متوقع تھا`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `بہت بڑا: ${issue.origin ?? \"ویلیو\"} کے ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"عناصر\"} ہونے متوقع تھے`;\n return `بہت بڑا: ${issue.origin ?? \"ویلیو\"} کا ${adj}${issue.maximum.toString()} ہونا متوقع تھا`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `بہت چھوٹا: ${issue.origin} کے ${adj}${issue.minimum.toString()} ${sizing.unit} ہونے متوقع تھے`;\n }\n return `بہت چھوٹا: ${issue.origin} کا ${adj}${issue.minimum.toString()} ہونا متوقع تھا`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `غلط سٹرنگ: \"${_issue.prefix}\" سے شروع ہونا چاہیے`;\n }\n if (_issue.format === \"ends_with\")\n return `غلط سٹرنگ: \"${_issue.suffix}\" پر ختم ہونا چاہیے`;\n if (_issue.format === \"includes\")\n return `غلط سٹرنگ: \"${_issue.includes}\" شامل ہونا چاہیے`;\n if (_issue.format === \"regex\")\n return `غلط سٹرنگ: پیٹرن ${_issue.pattern} سے میچ ہونا چاہیے`;\n return `غلط ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `غلط نمبر: ${issue.divisor} کا مضاعف ہونا چاہیے`;\n case \"unrecognized_keys\":\n return `غیر تسلیم شدہ کی${issue.keys.length > 1 ? \"ز\" : \"\"}: ${util.joinValues(issue.keys, \"، \")}`;\n case \"invalid_key\":\n return `${issue.origin} میں غلط کی`;\n case \"invalid_union\":\n return \"غلط ان پٹ\";\n case \"invalid_element\":\n return `${issue.origin} میں غلط ویلیو`;\n default:\n return `غلط ان پٹ`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"belgi\", verb: \"bo‘lishi kerak\" },\n file: { unit: \"bayt\", verb: \"bo‘lishi kerak\" },\n array: { unit: \"element\", verb: \"bo‘lishi kerak\" },\n set: { unit: \"element\", verb: \"bo‘lishi kerak\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"kirish\",\n email: \"elektron pochta manzili\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO sana va vaqti\",\n date: \"ISO sana\",\n time: \"ISO vaqt\",\n duration: \"ISO davomiylik\",\n ipv4: \"IPv4 manzil\",\n ipv6: \"IPv6 manzil\",\n mac: \"MAC manzil\",\n cidrv4: \"IPv4 diapazon\",\n cidrv6: \"IPv6 diapazon\",\n base64: \"base64 kodlangan satr\",\n base64url: \"base64url kodlangan satr\",\n json_string: \"JSON satr\",\n e164: \"E.164 raqam\",\n jwt: \"JWT\",\n template_literal: \"kirish\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"raqam\",\n array: \"massiv\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Noto‘g‘ri kirish: kutilgan instanceof ${issue.expected}, qabul qilingan ${received}`;\n }\n return `Noto‘g‘ri kirish: kutilgan ${expected}, qabul qilingan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Noto‘g‘ri kirish: kutilgan ${util.stringifyPrimitive(issue.values[0])}`;\n return `Noto‘g‘ri variant: quyidagilardan biri kutilgan ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Juda katta: kutilgan ${issue.origin ?? \"qiymat\"} ${adj}${issue.maximum.toString()} ${sizing.unit} ${sizing.verb}`;\n return `Juda katta: kutilgan ${issue.origin ?? \"qiymat\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Juda kichik: kutilgan ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ${sizing.verb}`;\n }\n return `Juda kichik: kutilgan ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Noto‘g‘ri satr: \"${_issue.prefix}\" bilan boshlanishi kerak`;\n if (_issue.format === \"ends_with\")\n return `Noto‘g‘ri satr: \"${_issue.suffix}\" bilan tugashi kerak`;\n if (_issue.format === \"includes\")\n return `Noto‘g‘ri satr: \"${_issue.includes}\" ni o‘z ichiga olishi kerak`;\n if (_issue.format === \"regex\")\n return `Noto‘g‘ri satr: ${_issue.pattern} shabloniga mos kelishi kerak`;\n return `Noto‘g‘ri ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Noto‘g‘ri raqam: ${issue.divisor} ning karralisi bo‘lishi kerak`;\n case \"unrecognized_keys\":\n return `Noma’lum kalit${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} dagi kalit noto‘g‘ri`;\n case \"invalid_union\":\n return \"Noto‘g‘ri kirish\";\n case \"invalid_element\":\n return `${issue.origin} da noto‘g‘ri qiymat`;\n default:\n return `Noto‘g‘ri kirish`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"ký tự\", verb: \"có\" },\n file: { unit: \"byte\", verb: \"có\" },\n array: { unit: \"phần tử\", verb: \"có\" },\n set: { unit: \"phần tử\", verb: \"có\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"đầu vào\",\n email: \"địa chỉ email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ngày giờ ISO\",\n date: \"ngày ISO\",\n time: \"giờ ISO\",\n duration: \"khoảng thời gian ISO\",\n ipv4: \"địa chỉ IPv4\",\n ipv6: \"địa chỉ IPv6\",\n cidrv4: \"dải IPv4\",\n cidrv6: \"dải IPv6\",\n base64: \"chuỗi mã hóa base64\",\n base64url: \"chuỗi mã hóa base64url\",\n json_string: \"chuỗi JSON\",\n e164: \"số E.164\",\n jwt: \"JWT\",\n template_literal: \"đầu vào\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"số\",\n array: \"mảng\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Đầu vào không hợp lệ: mong đợi instanceof ${issue.expected}, nhận được ${received}`;\n }\n return `Đầu vào không hợp lệ: mong đợi ${expected}, nhận được ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Đầu vào không hợp lệ: mong đợi ${util.stringifyPrimitive(issue.values[0])}`;\n return `Tùy chọn không hợp lệ: mong đợi một trong các giá trị ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Quá lớn: mong đợi ${issue.origin ?? \"giá trị\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"phần tử\"}`;\n return `Quá lớn: mong đợi ${issue.origin ?? \"giá trị\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Quá nhỏ: mong đợi ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Quá nhỏ: mong đợi ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Chuỗi không hợp lệ: phải bắt đầu bằng \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Chuỗi không hợp lệ: phải kết thúc bằng \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Chuỗi không hợp lệ: phải bao gồm \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Chuỗi không hợp lệ: phải khớp với mẫu ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} không hợp lệ`;\n }\n case \"not_multiple_of\":\n return `Số không hợp lệ: phải là bội số của ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Khóa không được nhận dạng: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Khóa không hợp lệ trong ${issue.origin}`;\n case \"invalid_union\":\n return \"Đầu vào không hợp lệ\";\n case \"invalid_element\":\n return `Giá trị không hợp lệ trong ${issue.origin}`;\n default:\n return `Đầu vào không hợp lệ`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"字符\", verb: \"包含\" },\n file: { unit: \"字节\", verb: \"包含\" },\n array: { unit: \"项\", verb: \"包含\" },\n set: { unit: \"项\", verb: \"包含\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"输入\",\n email: \"电子邮件\",\n url: \"URL\",\n emoji: \"表情符号\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO日期时间\",\n date: \"ISO日期\",\n time: \"ISO时间\",\n duration: \"ISO时长\",\n ipv4: \"IPv4地址\",\n ipv6: \"IPv6地址\",\n cidrv4: \"IPv4网段\",\n cidrv6: \"IPv6网段\",\n base64: \"base64编码字符串\",\n base64url: \"base64url编码字符串\",\n json_string: \"JSON字符串\",\n e164: \"E.164号码\",\n jwt: \"JWT\",\n template_literal: \"输入\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"数字\",\n array: \"数组\",\n null: \"空值(null)\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `无效输入:期望 instanceof ${issue.expected},实际接收 ${received}`;\n }\n return `无效输入:期望 ${expected},实际接收 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `无效输入:期望 ${util.stringifyPrimitive(issue.values[0])}`;\n return `无效选项:期望以下之一 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `数值过大:期望 ${issue.origin ?? \"值\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"个元素\"}`;\n return `数值过大:期望 ${issue.origin ?? \"值\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `数值过小:期望 ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `数值过小:期望 ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `无效字符串:必须以 \"${_issue.prefix}\" 开头`;\n if (_issue.format === \"ends_with\")\n return `无效字符串:必须以 \"${_issue.suffix}\" 结尾`;\n if (_issue.format === \"includes\")\n return `无效字符串:必须包含 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `无效字符串:必须满足正则表达式 ${_issue.pattern}`;\n return `无效${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `无效数字:必须是 ${issue.divisor} 的倍数`;\n case \"unrecognized_keys\":\n return `出现未知的键(key): ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} 中的键(key)无效`;\n case \"invalid_union\":\n return \"无效输入\";\n case \"invalid_element\":\n return `${issue.origin} 中包含无效值(value)`;\n default:\n return `无效输入`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"字元\", verb: \"擁有\" },\n file: { unit: \"位元組\", verb: \"擁有\" },\n array: { unit: \"項目\", verb: \"擁有\" },\n set: { unit: \"項目\", verb: \"擁有\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"輸入\",\n email: \"郵件地址\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO 日期時間\",\n date: \"ISO 日期\",\n time: \"ISO 時間\",\n duration: \"ISO 期間\",\n ipv4: \"IPv4 位址\",\n ipv6: \"IPv6 位址\",\n cidrv4: \"IPv4 範圍\",\n cidrv6: \"IPv6 範圍\",\n base64: \"base64 編碼字串\",\n base64url: \"base64url 編碼字串\",\n json_string: \"JSON 字串\",\n e164: \"E.164 數值\",\n jwt: \"JWT\",\n template_literal: \"輸入\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `無效的輸入值:預期為 instanceof ${issue.expected},但收到 ${received}`;\n }\n return `無效的輸入值:預期為 ${expected},但收到 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `無效的輸入值:預期為 ${util.stringifyPrimitive(issue.values[0])}`;\n return `無效的選項:預期為以下其中之一 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `數值過大:預期 ${issue.origin ?? \"值\"} 應為 ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"個元素\"}`;\n return `數值過大:預期 ${issue.origin ?? \"值\"} 應為 ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `數值過小:預期 ${issue.origin} 應為 ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `數值過小:預期 ${issue.origin} 應為 ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `無效的字串:必須以 \"${_issue.prefix}\" 開頭`;\n }\n if (_issue.format === \"ends_with\")\n return `無效的字串:必須以 \"${_issue.suffix}\" 結尾`;\n if (_issue.format === \"includes\")\n return `無效的字串:必須包含 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `無效的字串:必須符合格式 ${_issue.pattern}`;\n return `無效的 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `無效的數字:必須為 ${issue.divisor} 的倍數`;\n case \"unrecognized_keys\":\n return `無法識別的鍵值${issue.keys.length > 1 ? \"們\" : \"\"}:${util.joinValues(issue.keys, \"、\")}`;\n case \"invalid_key\":\n return `${issue.origin} 中有無效的鍵值`;\n case \"invalid_union\":\n return \"無效的輸入值\";\n case \"invalid_element\":\n return `${issue.origin} 中有無效的值`;\n default:\n return `無效的輸入值`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"àmi\", verb: \"ní\" },\n file: { unit: \"bytes\", verb: \"ní\" },\n array: { unit: \"nkan\", verb: \"ní\" },\n set: { unit: \"nkan\", verb: \"ní\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ẹ̀rọ ìbáwọlé\",\n email: \"àdírẹ́sì ìmẹ́lì\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"àkókò ISO\",\n date: \"ọjọ́ ISO\",\n time: \"àkókò ISO\",\n duration: \"àkókò tó pé ISO\",\n ipv4: \"àdírẹ́sì IPv4\",\n ipv6: \"àdírẹ́sì IPv6\",\n cidrv4: \"àgbègbè IPv4\",\n cidrv6: \"àgbègbè IPv6\",\n base64: \"ọ̀rọ̀ tí a kọ́ ní base64\",\n base64url: \"ọ̀rọ̀ base64url\",\n json_string: \"ọ̀rọ̀ JSON\",\n e164: \"nọ́mbà E.164\",\n jwt: \"JWT\",\n template_literal: \"ẹ̀rọ ìbáwọlé\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nọ́mbà\",\n array: \"akopọ\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ìbáwọlé aṣìṣe: a ní láti fi instanceof ${issue.expected}, àmọ̀ a rí ${received}`;\n }\n return `Ìbáwọlé aṣìṣe: a ní láti fi ${expected}, àmọ̀ a rí ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ìbáwọlé aṣìṣe: a ní láti fi ${util.stringifyPrimitive(issue.values[0])}`;\n return `Àṣàyàn aṣìṣe: yan ọ̀kan lára ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Tó pọ̀ jù: a ní láti jẹ́ pé ${issue.origin ?? \"iye\"} ${sizing.verb} ${adj}${issue.maximum} ${sizing.unit}`;\n return `Tó pọ̀ jù: a ní láti jẹ́ ${adj}${issue.maximum}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Kéré ju: a ní láti jẹ́ pé ${issue.origin} ${sizing.verb} ${adj}${issue.minimum} ${sizing.unit}`;\n return `Kéré ju: a ní láti jẹ́ ${adj}${issue.minimum}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ bẹ̀rẹ̀ pẹ̀lú \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ parí pẹ̀lú \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ ní \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ bá àpẹẹrẹ mu ${_issue.pattern}`;\n return `Aṣìṣe: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Nọ́mbà aṣìṣe: gbọ́dọ̀ jẹ́ èyà pípín ti ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Bọtìnì àìmọ̀: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Bọtìnì aṣìṣe nínú ${issue.origin}`;\n case \"invalid_union\":\n return \"Ìbáwọlé aṣìṣe\";\n case \"invalid_element\":\n return `Iye aṣìṣe nínú ${issue.origin}`;\n default:\n return \"Ìbáwọlé aṣìṣe\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","export { default as ar } from \"./ar.js\";\nexport { default as az } from \"./az.js\";\nexport { default as be } from \"./be.js\";\nexport { default as bg } from \"./bg.js\";\nexport { default as ca } from \"./ca.js\";\nexport { default as cs } from \"./cs.js\";\nexport { default as da } from \"./da.js\";\nexport { default as de } from \"./de.js\";\nexport { default as en } from \"./en.js\";\nexport { default as eo } from \"./eo.js\";\nexport { default as es } from \"./es.js\";\nexport { default as fa } from \"./fa.js\";\nexport { default as fi } from \"./fi.js\";\nexport { default as fr } from \"./fr.js\";\nexport { default as frCA } from \"./fr-CA.js\";\nexport { default as he } from \"./he.js\";\nexport { default as hu } from \"./hu.js\";\nexport { default as hy } from \"./hy.js\";\nexport { default as id } from \"./id.js\";\nexport { default as is } from \"./is.js\";\nexport { default as it } from \"./it.js\";\nexport { default as ja } from \"./ja.js\";\nexport { default as ka } from \"./ka.js\";\nexport { default as kh } from \"./kh.js\";\nexport { default as km } from \"./km.js\";\nexport { default as ko } from \"./ko.js\";\nexport { default as lt } from \"./lt.js\";\nexport { default as mk } from \"./mk.js\";\nexport { default as ms } from \"./ms.js\";\nexport { default as nl } from \"./nl.js\";\nexport { default as no } from \"./no.js\";\nexport { default as ota } from \"./ota.js\";\nexport { default as ps } from \"./ps.js\";\nexport { default as pl } from \"./pl.js\";\nexport { default as pt } from \"./pt.js\";\nexport { default as ru } from \"./ru.js\";\nexport { default as sl } from \"./sl.js\";\nexport { default as sv } from \"./sv.js\";\nexport { default as ta } from \"./ta.js\";\nexport { default as th } from \"./th.js\";\nexport { default as tr } from \"./tr.js\";\nexport { default as ua } from \"./ua.js\";\nexport { default as uk } from \"./uk.js\";\nexport { default as ur } from \"./ur.js\";\nexport { default as uz } from \"./uz.js\";\nexport { default as vi } from \"./vi.js\";\nexport { default as zhCN } from \"./zh-CN.js\";\nexport { default as zhTW } from \"./zh-TW.js\";\nexport { default as yo } from \"./yo.js\";\n","var _a;\nexport const $output = Symbol(\"ZodOutput\");\nexport const $input = Symbol(\"ZodInput\");\nexport class $ZodRegistry {\n constructor() {\n this._map = new WeakMap();\n this._idmap = new Map();\n }\n add(schema, ..._meta) {\n const meta = _meta[0];\n this._map.set(schema, meta);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.set(meta.id, schema);\n }\n return this;\n }\n clear() {\n this._map = new WeakMap();\n this._idmap = new Map();\n return this;\n }\n remove(schema) {\n const meta = this._map.get(schema);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.delete(meta.id);\n }\n this._map.delete(schema);\n return this;\n }\n get(schema) {\n // return this._map.get(schema) as any;\n // inherit metadata\n const p = schema._zod.parent;\n if (p) {\n const pm = { ...(this.get(p) ?? {}) };\n delete pm.id; // do not inherit id\n const f = { ...pm, ...this._map.get(schema) };\n return Object.keys(f).length ? f : undefined;\n }\n return this._map.get(schema);\n }\n has(schema) {\n return this._map.has(schema);\n }\n}\n// registries\nexport function registry() {\n return new $ZodRegistry();\n}\n(_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());\nexport const globalRegistry = globalThis.__zod_globalRegistry;\n","import * as checks from \"./checks.js\";\nimport * as registries from \"./registries.js\";\nimport * as schemas from \"./schemas.js\";\nimport * as util from \"./util.js\";\n// @__NO_SIDE_EFFECTS__\nexport function _string(Class, params) {\n return new Class({\n type: \"string\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedString(Class, params) {\n return new Class({\n type: \"string\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _email(Class, params) {\n return new Class({\n type: \"string\",\n format: \"email\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _guid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"guid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v4\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v6\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv7(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v7\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _emoji(Class, params) {\n return new Class({\n type: \"string\",\n format: \"emoji\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nanoid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"nanoid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cuid2(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid2\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ulid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ulid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _xid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"xid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ksuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ksuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mac(Class, params) {\n return new Class({\n type: \"string\",\n format: \"mac\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _e164(Class, params) {\n return new Class({\n type: \"string\",\n format: \"e164\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _jwt(Class, params) {\n return new Class({\n type: \"string\",\n format: \"jwt\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport const TimePrecision = {\n Any: null,\n Minute: -1,\n Second: 0,\n Millisecond: 3,\n Microsecond: 6,\n};\n// @__NO_SIDE_EFFECTS__\nexport function _isoDateTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"datetime\",\n check: \"string_format\",\n offset: false,\n local: false,\n precision: null,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDate(Class, params) {\n return new Class({\n type: \"string\",\n format: \"date\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"time\",\n check: \"string_format\",\n precision: null,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDuration(Class, params) {\n return new Class({\n type: \"string\",\n format: \"duration\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _number(Class, params) {\n return new Class({\n type: \"number\",\n checks: [],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedNumber(Class, params) {\n return new Class({\n type: \"number\",\n coerce: true,\n checks: [],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"safeint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float64(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"int32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"uint32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _boolean(Class, params) {\n return new Class({\n type: \"boolean\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBoolean(Class, params) {\n return new Class({\n type: \"boolean\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _bigint(Class, params) {\n return new Class({\n type: \"bigint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBigint(Class, params) {\n return new Class({\n type: \"bigint\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"int64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"uint64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _symbol(Class, params) {\n return new Class({\n type: \"symbol\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _undefined(Class, params) {\n return new Class({\n type: \"undefined\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _null(Class, params) {\n return new Class({\n type: \"null\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _any(Class) {\n return new Class({\n type: \"any\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _unknown(Class) {\n return new Class({\n type: \"unknown\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _never(Class, params) {\n return new Class({\n type: \"never\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _void(Class, params) {\n return new Class({\n type: \"void\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _date(Class, params) {\n return new Class({\n type: \"date\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedDate(Class, params) {\n return new Class({\n type: \"date\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nan(Class, params) {\n return new Class({\n type: \"nan\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lt(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lte(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.lte()` instead. */\n_lte as _max, };\n// @__NO_SIDE_EFFECTS__\nexport function _gt(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _gte(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.gte()` instead. */\n_gte as _min, };\n// @__NO_SIDE_EFFECTS__\nexport function _positive(params) {\n return _gt(0, params);\n}\n// negative\n// @__NO_SIDE_EFFECTS__\nexport function _negative(params) {\n return _lt(0, params);\n}\n// nonpositive\n// @__NO_SIDE_EFFECTS__\nexport function _nonpositive(params) {\n return _lte(0, params);\n}\n// nonnegative\n// @__NO_SIDE_EFFECTS__\nexport function _nonnegative(params) {\n return _gte(0, params);\n}\n// @__NO_SIDE_EFFECTS__\nexport function _multipleOf(value, params) {\n return new checks.$ZodCheckMultipleOf({\n check: \"multiple_of\",\n ...util.normalizeParams(params),\n value,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxSize(maximum, params) {\n return new checks.$ZodCheckMaxSize({\n check: \"max_size\",\n ...util.normalizeParams(params),\n maximum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minSize(minimum, params) {\n return new checks.$ZodCheckMinSize({\n check: \"min_size\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _size(size, params) {\n return new checks.$ZodCheckSizeEquals({\n check: \"size_equals\",\n ...util.normalizeParams(params),\n size,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxLength(maximum, params) {\n const ch = new checks.$ZodCheckMaxLength({\n check: \"max_length\",\n ...util.normalizeParams(params),\n maximum,\n });\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minLength(minimum, params) {\n return new checks.$ZodCheckMinLength({\n check: \"min_length\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _length(length, params) {\n return new checks.$ZodCheckLengthEquals({\n check: \"length_equals\",\n ...util.normalizeParams(params),\n length,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _regex(pattern, params) {\n return new checks.$ZodCheckRegex({\n check: \"string_format\",\n format: \"regex\",\n ...util.normalizeParams(params),\n pattern,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lowercase(params) {\n return new checks.$ZodCheckLowerCase({\n check: \"string_format\",\n format: \"lowercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uppercase(params) {\n return new checks.$ZodCheckUpperCase({\n check: \"string_format\",\n format: \"uppercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _includes(includes, params) {\n return new checks.$ZodCheckIncludes({\n check: \"string_format\",\n format: \"includes\",\n ...util.normalizeParams(params),\n includes,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _startsWith(prefix, params) {\n return new checks.$ZodCheckStartsWith({\n check: \"string_format\",\n format: \"starts_with\",\n ...util.normalizeParams(params),\n prefix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _endsWith(suffix, params) {\n return new checks.$ZodCheckEndsWith({\n check: \"string_format\",\n format: \"ends_with\",\n ...util.normalizeParams(params),\n suffix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _property(property, schema, params) {\n return new checks.$ZodCheckProperty({\n check: \"property\",\n property,\n schema,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mime(types, params) {\n return new checks.$ZodCheckMimeType({\n check: \"mime_type\",\n mime: types,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _overwrite(tx) {\n return new checks.$ZodCheckOverwrite({\n check: \"overwrite\",\n tx,\n });\n}\n// normalize\n// @__NO_SIDE_EFFECTS__\nexport function _normalize(form) {\n return _overwrite((input) => input.normalize(form));\n}\n// trim\n// @__NO_SIDE_EFFECTS__\nexport function _trim() {\n return _overwrite((input) => input.trim());\n}\n// toLowerCase\n// @__NO_SIDE_EFFECTS__\nexport function _toLowerCase() {\n return _overwrite((input) => input.toLowerCase());\n}\n// toUpperCase\n// @__NO_SIDE_EFFECTS__\nexport function _toUpperCase() {\n return _overwrite((input) => input.toUpperCase());\n}\n// slugify\n// @__NO_SIDE_EFFECTS__\nexport function _slugify() {\n return _overwrite((input) => util.slugify(input));\n}\n// @__NO_SIDE_EFFECTS__\nexport function _array(Class, element, params) {\n return new Class({\n type: \"array\",\n element,\n // get element() {\n // return element;\n // },\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _union(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n ...util.normalizeParams(params),\n });\n}\nexport function _xor(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n inclusive: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _discriminatedUnion(Class, discriminator, options, params) {\n return new Class({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _intersection(Class, left, right) {\n return new Class({\n type: \"intersection\",\n left,\n right,\n });\n}\n// export function _tuple(\n// Class: util.SchemaClass<schemas.$ZodTuple>,\n// items: [],\n// params?: string | $ZodTupleParams\n// ): schemas.$ZodTuple<[], null>;\n// @__NO_SIDE_EFFECTS__\nexport function _tuple(Class, items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof schemas.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new Class({\n type: \"tuple\",\n items,\n rest,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _record(Class, keyType, valueType, params) {\n return new Class({\n type: \"record\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _map(Class, keyType, valueType, params) {\n return new Class({\n type: \"map\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _set(Class, valueType, params) {\n return new Class({\n type: \"set\",\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _enum(Class, values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n // if (Array.isArray(values)) {\n // for (const value of values) {\n // entries[value] = value;\n // }\n // } else {\n // Object.assign(entries, values);\n // }\n // const entries: util.EnumLike = {};\n // for (const val of values) {\n // entries[val] = val;\n // }\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function _nativeEnum(Class, entries, params) {\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _literal(Class, value, params) {\n return new Class({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _file(Class, params) {\n return new Class({\n type: \"file\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _transform(Class, fn) {\n return new Class({\n type: \"transform\",\n transform: fn,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _optional(Class, innerType) {\n return new Class({\n type: \"optional\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nullable(Class, innerType) {\n return new Class({\n type: \"nullable\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _default(Class, innerType, defaultValue) {\n return new Class({\n type: \"default\",\n innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nonoptional(Class, innerType, params) {\n return new Class({\n type: \"nonoptional\",\n innerType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _success(Class, innerType) {\n return new Class({\n type: \"success\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _catch(Class, innerType, catchValue) {\n return new Class({\n type: \"catch\",\n innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _pipe(Class, in_, out) {\n return new Class({\n type: \"pipe\",\n in: in_,\n out,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _readonly(Class, innerType) {\n return new Class({\n type: \"readonly\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _templateLiteral(Class, parts, params) {\n return new Class({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lazy(Class, getter) {\n return new Class({\n type: \"lazy\",\n getter,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _promise(Class, innerType) {\n return new Class({\n type: \"promise\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _custom(Class, fn, _params) {\n const norm = util.normalizeParams(_params);\n norm.abort ?? (norm.abort = true); // default to abort:false\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...norm,\n });\n return schema;\n}\n// same as _custom but defaults to abort:false\n// @__NO_SIDE_EFFECTS__\nexport function _refine(Class, fn, _params) {\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...util.normalizeParams(_params),\n });\n return schema;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _superRefine(fn) {\n const ch = _check((payload) => {\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, ch._zod.def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = ch);\n _issue.continue ?? (_issue.continue = !ch._zod.def.abort); // abort is always undefined, so this is always true...\n payload.issues.push(util.issue(_issue));\n }\n };\n return fn(payload.value, payload);\n });\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _check(fn, params) {\n const ch = new checks.$ZodCheck({\n check: \"custom\",\n ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function describe(description) {\n const ch = new checks.$ZodCheck({ check: \"describe\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, description });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function meta(metadata) {\n const ch = new checks.$ZodCheck({ check: \"meta\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, ...metadata });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringbool(Classes, _params) {\n const params = util.normalizeParams(_params);\n let truthyArray = params.truthy ?? [\"true\", \"1\", \"yes\", \"on\", \"y\", \"enabled\"];\n let falsyArray = params.falsy ?? [\"false\", \"0\", \"no\", \"off\", \"n\", \"disabled\"];\n if (params.case !== \"sensitive\") {\n truthyArray = truthyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n falsyArray = falsyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n }\n const truthySet = new Set(truthyArray);\n const falsySet = new Set(falsyArray);\n const _Codec = Classes.Codec ?? schemas.$ZodCodec;\n const _Boolean = Classes.Boolean ?? schemas.$ZodBoolean;\n const _String = Classes.String ?? schemas.$ZodString;\n const stringSchema = new _String({ type: \"string\", error: params.error });\n const booleanSchema = new _Boolean({ type: \"boolean\", error: params.error });\n const codec = new _Codec({\n type: \"pipe\",\n in: stringSchema,\n out: booleanSchema,\n transform: ((input, payload) => {\n let data = input;\n if (params.case !== \"sensitive\")\n data = data.toLowerCase();\n if (truthySet.has(data)) {\n return true;\n }\n else if (falsySet.has(data)) {\n return false;\n }\n else {\n payload.issues.push({\n code: \"invalid_value\",\n expected: \"stringbool\",\n values: [...truthySet, ...falsySet],\n input: payload.value,\n inst: codec,\n continue: false,\n });\n return {};\n }\n }),\n reverseTransform: ((input, _payload) => {\n if (input === true) {\n return truthyArray[0] || \"true\";\n }\n else {\n return falsyArray[0] || \"false\";\n }\n }),\n error: params.error,\n });\n return codec;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringFormat(Class, format, fnOrRegex, _params = {}) {\n const params = util.normalizeParams(_params);\n const def = {\n ...util.normalizeParams(_params),\n check: \"string_format\",\n type: \"string\",\n format,\n fn: typeof fnOrRegex === \"function\" ? fnOrRegex : (val) => fnOrRegex.test(val),\n ...params,\n };\n if (fnOrRegex instanceof RegExp) {\n def.pattern = fnOrRegex;\n }\n const inst = new Class(def);\n return inst;\n}\n","import { globalRegistry } from \"./registries.js\";\n// function initializeContext<T extends schemas.$ZodType>(inputs: JSONSchemaGeneratorParams<T>): ToJSONSchemaContext<T> {\n// return {\n// processor: inputs.processor,\n// metadataRegistry: inputs.metadata ?? globalRegistry,\n// target: inputs.target ?? \"draft-2020-12\",\n// unrepresentable: inputs.unrepresentable ?? \"throw\",\n// };\n// }\nexport function initializeContext(params) {\n // Normalize target: convert old non-hyphenated versions to hyphenated versions\n let target = params?.target ?? \"draft-2020-12\";\n if (target === \"draft-4\")\n target = \"draft-04\";\n if (target === \"draft-7\")\n target = \"draft-07\";\n return {\n processors: params.processors ?? {},\n metadataRegistry: params?.metadata ?? globalRegistry,\n target,\n unrepresentable: params?.unrepresentable ?? \"throw\",\n override: params?.override ?? (() => { }),\n io: params?.io ?? \"output\",\n counter: 0,\n seen: new Map(),\n cycles: params?.cycles ?? \"ref\",\n reused: params?.reused ?? \"inline\",\n external: params?.external ?? undefined,\n };\n}\nexport function process(schema, ctx, _params = { path: [], schemaPath: [] }) {\n var _a;\n const def = schema._zod.def;\n // check for schema in seens\n const seen = ctx.seen.get(schema);\n if (seen) {\n seen.count++;\n // check if cycle\n const isCycle = _params.schemaPath.includes(schema);\n if (isCycle) {\n seen.cycle = _params.path;\n }\n return seen.schema;\n }\n // initialize\n const result = { schema: {}, count: 1, cycle: undefined, path: _params.path };\n ctx.seen.set(schema, result);\n // custom method overrides default behavior\n const overrideSchema = schema._zod.toJSONSchema?.();\n if (overrideSchema) {\n result.schema = overrideSchema;\n }\n else {\n const params = {\n ..._params,\n schemaPath: [..._params.schemaPath, schema],\n path: _params.path,\n };\n if (schema._zod.processJSONSchema) {\n schema._zod.processJSONSchema(ctx, result.schema, params);\n }\n else {\n const _json = result.schema;\n const processor = ctx.processors[def.type];\n if (!processor) {\n throw new Error(`[toJSONSchema]: Non-representable type encountered: ${def.type}`);\n }\n processor(schema, ctx, _json, params);\n }\n const parent = schema._zod.parent;\n if (parent) {\n // Also set ref if processor didn't (for inheritance)\n if (!result.ref)\n result.ref = parent;\n process(parent, ctx, params);\n ctx.seen.get(parent).isParent = true;\n }\n }\n // metadata\n const meta = ctx.metadataRegistry.get(schema);\n if (meta)\n Object.assign(result.schema, meta);\n if (ctx.io === \"input\" && isTransforming(schema)) {\n // examples/defaults only apply to output type of pipe\n delete result.schema.examples;\n delete result.schema.default;\n }\n // set prefault as default\n if (ctx.io === \"input\" && result.schema._prefault)\n (_a = result.schema).default ?? (_a.default = result.schema._prefault);\n delete result.schema._prefault;\n // pulling fresh from ctx.seen in case it was overwritten\n const _result = ctx.seen.get(schema);\n return _result.schema;\n}\nexport function extractDefs(ctx, schema\n// params: EmitParams\n) {\n // iterate over seen map;\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // Track ids to detect duplicates across different schemas\n const idToSchema = new Map();\n for (const entry of ctx.seen.entries()) {\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n const existing = idToSchema.get(id);\n if (existing && existing !== entry[0]) {\n throw new Error(`Duplicate schema id \"${id}\" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);\n }\n idToSchema.set(id, entry[0]);\n }\n }\n // returns a ref to the schema\n // defId will be empty if the ref points to an external schema (or #)\n const makeURI = (entry) => {\n // comparing the seen objects because sometimes\n // multiple schemas map to the same seen object.\n // e.g. lazy\n // external is configured\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n if (ctx.external) {\n const externalId = ctx.external.registry.get(entry[0])?.id; // ?? \"__shared\";// `__schema${ctx.counter++}`;\n // check if schema is in the external registry\n const uriGenerator = ctx.external.uri ?? ((id) => id);\n if (externalId) {\n return { ref: uriGenerator(externalId) };\n }\n // otherwise, add to __shared\n const id = entry[1].defId ?? entry[1].schema.id ?? `schema${ctx.counter++}`;\n entry[1].defId = id; // set defId so it will be reused if needed\n return { defId: id, ref: `${uriGenerator(\"__shared\")}#/${defsSegment}/${id}` };\n }\n if (entry[1] === root) {\n return { ref: \"#\" };\n }\n // self-contained schema\n const uriPrefix = `#`;\n const defUriPrefix = `${uriPrefix}/${defsSegment}/`;\n const defId = entry[1].schema.id ?? `__schema${ctx.counter++}`;\n return { defId, ref: defUriPrefix + defId };\n };\n // stored cached version in `def` property\n // remove all properties, set $ref\n const extractToDef = (entry) => {\n // if the schema is already a reference, do not extract it\n if (entry[1].schema.$ref) {\n return;\n }\n const seen = entry[1];\n const { ref, defId } = makeURI(entry);\n seen.def = { ...seen.schema };\n // defId won't be set if the schema is a reference to an external schema\n // or if the schema is the root schema\n if (defId)\n seen.defId = defId;\n // wipe away all properties except $ref\n const schema = seen.schema;\n for (const key in schema) {\n delete schema[key];\n }\n schema.$ref = ref;\n };\n // throw on cycles\n // break cycles\n if (ctx.cycles === \"throw\") {\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.cycle) {\n throw new Error(\"Cycle detected: \" +\n `#/${seen.cycle?.join(\"/\")}/<root>` +\n '\\n\\nSet the `cycles` parameter to `\"ref\"` to resolve cyclical schemas with defs.');\n }\n }\n }\n // extract schemas into $defs\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n // convert root schema to # $ref\n if (schema === entry[0]) {\n extractToDef(entry); // this has special handling for the root schema\n continue;\n }\n // extract schemas that are in the external registry\n if (ctx.external) {\n const ext = ctx.external.registry.get(entry[0])?.id;\n if (schema !== entry[0] && ext) {\n extractToDef(entry);\n continue;\n }\n }\n // extract schemas with `id` meta\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n extractToDef(entry);\n continue;\n }\n // break cycles\n if (seen.cycle) {\n // any\n extractToDef(entry);\n continue;\n }\n // extract reused schemas\n if (seen.count > 1) {\n if (ctx.reused === \"ref\") {\n extractToDef(entry);\n // biome-ignore lint:\n continue;\n }\n }\n }\n}\nexport function finalize(ctx, schema) {\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // flatten refs - inherit properties from parent schemas\n const flattenRef = (zodSchema) => {\n const seen = ctx.seen.get(zodSchema);\n // already processed\n if (seen.ref === null)\n return;\n const schema = seen.def ?? seen.schema;\n const _cached = { ...schema };\n const ref = seen.ref;\n seen.ref = null; // prevent infinite recursion\n if (ref) {\n flattenRef(ref);\n const refSeen = ctx.seen.get(ref);\n const refSchema = refSeen.schema;\n // merge referenced schema into current\n if (refSchema.$ref && (ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\")) {\n // older drafts can't combine $ref with other properties\n schema.allOf = schema.allOf ?? [];\n schema.allOf.push(refSchema);\n }\n else {\n Object.assign(schema, refSchema);\n }\n // restore child's own properties (child wins)\n Object.assign(schema, _cached);\n const isParentRef = zodSchema._zod.parent === ref;\n // For parent chain, child is a refinement - remove parent-only properties\n if (isParentRef) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (!(key in _cached)) {\n delete schema[key];\n }\n }\n }\n // When ref was extracted to $defs, remove properties that match the definition\n if (refSchema.$ref) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in refSeen.def && JSON.stringify(schema[key]) === JSON.stringify(refSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n // If parent was extracted (has $ref), propagate $ref to this schema\n // This handles cases like: readonly().meta({id}).describe()\n // where processor sets ref to innerType but parent should be referenced\n const parent = zodSchema._zod.parent;\n if (parent && parent !== ref) {\n // Ensure parent is processed first so its def has inherited properties\n flattenRef(parent);\n const parentSeen = ctx.seen.get(parent);\n if (parentSeen?.schema.$ref) {\n schema.$ref = parentSeen.schema.$ref;\n // De-duplicate with parent's definition\n if (parentSeen.def) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in parentSeen.def && JSON.stringify(schema[key]) === JSON.stringify(parentSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n }\n // execute overrides\n ctx.override({\n zodSchema: zodSchema,\n jsonSchema: schema,\n path: seen.path ?? [],\n });\n };\n for (const entry of [...ctx.seen.entries()].reverse()) {\n flattenRef(entry[0]);\n }\n const result = {};\n if (ctx.target === \"draft-2020-12\") {\n result.$schema = \"https://json-schema.org/draft/2020-12/schema\";\n }\n else if (ctx.target === \"draft-07\") {\n result.$schema = \"http://json-schema.org/draft-07/schema#\";\n }\n else if (ctx.target === \"draft-04\") {\n result.$schema = \"http://json-schema.org/draft-04/schema#\";\n }\n else if (ctx.target === \"openapi-3.0\") {\n // OpenAPI 3.0 schema objects should not include a $schema property\n }\n else {\n // Arbitrary string values are allowed but won't have a $schema property set\n }\n if (ctx.external?.uri) {\n const id = ctx.external.registry.get(schema)?.id;\n if (!id)\n throw new Error(\"Schema is missing an `id` property\");\n result.$id = ctx.external.uri(id);\n }\n Object.assign(result, root.def ?? root.schema);\n // build defs object\n const defs = ctx.external?.defs ?? {};\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.def && seen.defId) {\n defs[seen.defId] = seen.def;\n }\n }\n // set definitions in result\n if (ctx.external) {\n }\n else {\n if (Object.keys(defs).length > 0) {\n if (ctx.target === \"draft-2020-12\") {\n result.$defs = defs;\n }\n else {\n result.definitions = defs;\n }\n }\n }\n try {\n // this \"finalizes\" this schema and ensures all cycles are removed\n // each call to finalize() is functionally independent\n // though the seen map is shared\n const finalized = JSON.parse(JSON.stringify(result));\n Object.defineProperty(finalized, \"~standard\", {\n value: {\n ...schema[\"~standard\"],\n jsonSchema: {\n input: createStandardJSONSchemaMethod(schema, \"input\", ctx.processors),\n output: createStandardJSONSchemaMethod(schema, \"output\", ctx.processors),\n },\n },\n enumerable: false,\n writable: false,\n });\n return finalized;\n }\n catch (_err) {\n throw new Error(\"Error converting schema to JSON.\");\n }\n}\nfunction isTransforming(_schema, _ctx) {\n const ctx = _ctx ?? { seen: new Set() };\n if (ctx.seen.has(_schema))\n return false;\n ctx.seen.add(_schema);\n const def = _schema._zod.def;\n if (def.type === \"transform\")\n return true;\n if (def.type === \"array\")\n return isTransforming(def.element, ctx);\n if (def.type === \"set\")\n return isTransforming(def.valueType, ctx);\n if (def.type === \"lazy\")\n return isTransforming(def.getter(), ctx);\n if (def.type === \"promise\" ||\n def.type === \"optional\" ||\n def.type === \"nonoptional\" ||\n def.type === \"nullable\" ||\n def.type === \"readonly\" ||\n def.type === \"default\" ||\n def.type === \"prefault\") {\n return isTransforming(def.innerType, ctx);\n }\n if (def.type === \"intersection\") {\n return isTransforming(def.left, ctx) || isTransforming(def.right, ctx);\n }\n if (def.type === \"record\" || def.type === \"map\") {\n return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx);\n }\n if (def.type === \"pipe\") {\n return isTransforming(def.in, ctx) || isTransforming(def.out, ctx);\n }\n if (def.type === \"object\") {\n for (const key in def.shape) {\n if (isTransforming(def.shape[key], ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"union\") {\n for (const option of def.options) {\n if (isTransforming(option, ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"tuple\") {\n for (const item of def.items) {\n if (isTransforming(item, ctx))\n return true;\n }\n if (def.rest && isTransforming(def.rest, ctx))\n return true;\n return false;\n }\n return false;\n}\n/**\n * Creates a toJSONSchema method for a schema instance.\n * This encapsulates the logic of initializing context, processing, extracting defs, and finalizing.\n */\nexport const createToJSONSchemaMethod = (schema, processors = {}) => (params) => {\n const ctx = initializeContext({ ...params, processors });\n process(schema, ctx);\n extractDefs(ctx, schema);\n return finalize(ctx, schema);\n};\nexport const createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) => {\n const { libraryOptions, target } = params ?? {};\n const ctx = initializeContext({ ...(libraryOptions ?? {}), target, io, processors });\n process(schema, ctx);\n extractDefs(ctx, schema);\n return finalize(ctx, schema);\n};\n","import { extractDefs, finalize, initializeContext, process, } from \"./to-json-schema.js\";\nimport { getEnumValues } from \"./util.js\";\nconst formatMap = {\n guid: \"uuid\",\n url: \"uri\",\n datetime: \"date-time\",\n json_string: \"json-string\",\n regex: \"\", // do not set\n};\n// ==================== SIMPLE TYPE PROCESSORS ====================\nexport const stringProcessor = (schema, ctx, _json, _params) => {\n const json = _json;\n json.type = \"string\";\n const { minimum, maximum, format, patterns, contentEncoding } = schema._zod\n .bag;\n if (typeof minimum === \"number\")\n json.minLength = minimum;\n if (typeof maximum === \"number\")\n json.maxLength = maximum;\n // custom pattern overrides format\n if (format) {\n json.format = formatMap[format] ?? format;\n if (json.format === \"\")\n delete json.format; // empty format is not valid\n // JSON Schema format: \"time\" requires a full time with offset or Z\n // z.iso.time() does not include timezone information, so format: \"time\" should never be used\n if (format === \"time\") {\n delete json.format;\n }\n }\n if (contentEncoding)\n json.contentEncoding = contentEncoding;\n if (patterns && patterns.size > 0) {\n const regexes = [...patterns];\n if (regexes.length === 1)\n json.pattern = regexes[0].source;\n else if (regexes.length > 1) {\n json.allOf = [\n ...regexes.map((regex) => ({\n ...(ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\"\n ? { type: \"string\" }\n : {}),\n pattern: regex.source,\n })),\n ];\n }\n }\n};\nexport const numberProcessor = (schema, ctx, _json, _params) => {\n const json = _json;\n const { minimum, maximum, format, multipleOf, exclusiveMaximum, exclusiveMinimum } = schema._zod.bag;\n if (typeof format === \"string\" && format.includes(\"int\"))\n json.type = \"integer\";\n else\n json.type = \"number\";\n if (typeof exclusiveMinimum === \"number\") {\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.minimum = exclusiveMinimum;\n json.exclusiveMinimum = true;\n }\n else {\n json.exclusiveMinimum = exclusiveMinimum;\n }\n }\n if (typeof minimum === \"number\") {\n json.minimum = minimum;\n if (typeof exclusiveMinimum === \"number\" && ctx.target !== \"draft-04\") {\n if (exclusiveMinimum >= minimum)\n delete json.minimum;\n else\n delete json.exclusiveMinimum;\n }\n }\n if (typeof exclusiveMaximum === \"number\") {\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.maximum = exclusiveMaximum;\n json.exclusiveMaximum = true;\n }\n else {\n json.exclusiveMaximum = exclusiveMaximum;\n }\n }\n if (typeof maximum === \"number\") {\n json.maximum = maximum;\n if (typeof exclusiveMaximum === \"number\" && ctx.target !== \"draft-04\") {\n if (exclusiveMaximum <= maximum)\n delete json.maximum;\n else\n delete json.exclusiveMaximum;\n }\n }\n if (typeof multipleOf === \"number\")\n json.multipleOf = multipleOf;\n};\nexport const booleanProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nexport const bigintProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"BigInt cannot be represented in JSON Schema\");\n }\n};\nexport const symbolProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Symbols cannot be represented in JSON Schema\");\n }\n};\nexport const nullProcessor = (_schema, ctx, json, _params) => {\n if (ctx.target === \"openapi-3.0\") {\n json.type = \"string\";\n json.nullable = true;\n json.enum = [null];\n }\n else {\n json.type = \"null\";\n }\n};\nexport const undefinedProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Undefined cannot be represented in JSON Schema\");\n }\n};\nexport const voidProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Void cannot be represented in JSON Schema\");\n }\n};\nexport const neverProcessor = (_schema, _ctx, json, _params) => {\n json.not = {};\n};\nexport const anyProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nexport const unknownProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nexport const dateProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Date cannot be represented in JSON Schema\");\n }\n};\nexport const enumProcessor = (schema, _ctx, json, _params) => {\n const def = schema._zod.def;\n const values = getEnumValues(def.entries);\n // Number enums can have both string and number values\n if (values.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (values.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n json.enum = values;\n};\nexport const literalProcessor = (schema, ctx, json, _params) => {\n const def = schema._zod.def;\n const vals = [];\n for (const val of def.values) {\n if (val === undefined) {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Literal `undefined` cannot be represented in JSON Schema\");\n }\n else {\n // do not add to vals\n }\n }\n else if (typeof val === \"bigint\") {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"BigInt literals cannot be represented in JSON Schema\");\n }\n else {\n vals.push(Number(val));\n }\n }\n else {\n vals.push(val);\n }\n }\n if (vals.length === 0) {\n // do nothing (an undefined literal was stripped)\n }\n else if (vals.length === 1) {\n const val = vals[0];\n json.type = val === null ? \"null\" : typeof val;\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.enum = [val];\n }\n else {\n json.const = val;\n }\n }\n else {\n if (vals.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (vals.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n if (vals.every((v) => typeof v === \"boolean\"))\n json.type = \"boolean\";\n if (vals.every((v) => v === null))\n json.type = \"null\";\n json.enum = vals;\n }\n};\nexport const nanProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"NaN cannot be represented in JSON Schema\");\n }\n};\nexport const templateLiteralProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n const pattern = schema._zod.pattern;\n if (!pattern)\n throw new Error(\"Pattern not found in template literal\");\n _json.type = \"string\";\n _json.pattern = pattern.source;\n};\nexport const fileProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n const file = {\n type: \"string\",\n format: \"binary\",\n contentEncoding: \"binary\",\n };\n const { minimum, maximum, mime } = schema._zod.bag;\n if (minimum !== undefined)\n file.minLength = minimum;\n if (maximum !== undefined)\n file.maxLength = maximum;\n if (mime) {\n if (mime.length === 1) {\n file.contentMediaType = mime[0];\n Object.assign(_json, file);\n }\n else {\n Object.assign(_json, file); // shared props at root\n _json.anyOf = mime.map((m) => ({ contentMediaType: m })); // only contentMediaType differs\n }\n }\n else {\n Object.assign(_json, file);\n }\n};\nexport const successProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nexport const customProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Custom types cannot be represented in JSON Schema\");\n }\n};\nexport const functionProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Function types cannot be represented in JSON Schema\");\n }\n};\nexport const transformProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Transforms cannot be represented in JSON Schema\");\n }\n};\nexport const mapProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Map cannot be represented in JSON Schema\");\n }\n};\nexport const setProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Set cannot be represented in JSON Schema\");\n }\n};\n// ==================== COMPOSITE TYPE PROCESSORS ====================\nexport const arrayProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n json.type = \"array\";\n json.items = process(def.element, ctx, { ...params, path: [...params.path, \"items\"] });\n};\nexport const objectProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"object\";\n json.properties = {};\n const shape = def.shape;\n for (const key in shape) {\n json.properties[key] = process(shape[key], ctx, {\n ...params,\n path: [...params.path, \"properties\", key],\n });\n }\n // required keys\n const allKeys = new Set(Object.keys(shape));\n const requiredKeys = new Set([...allKeys].filter((key) => {\n const v = def.shape[key]._zod;\n if (ctx.io === \"input\") {\n return v.optin === undefined;\n }\n else {\n return v.optout === undefined;\n }\n }));\n if (requiredKeys.size > 0) {\n json.required = Array.from(requiredKeys);\n }\n // catchall\n if (def.catchall?._zod.def.type === \"never\") {\n // strict\n json.additionalProperties = false;\n }\n else if (!def.catchall) {\n // regular\n if (ctx.io === \"output\")\n json.additionalProperties = false;\n }\n else if (def.catchall) {\n json.additionalProperties = process(def.catchall, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n};\nexport const unionProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n // Exclusive unions (inclusive === false) use oneOf (exactly one match) instead of anyOf (one or more matches)\n // This includes both z.xor() and discriminated unions\n const isExclusive = def.inclusive === false;\n const options = def.options.map((x, i) => process(x, ctx, {\n ...params,\n path: [...params.path, isExclusive ? \"oneOf\" : \"anyOf\", i],\n }));\n if (isExclusive) {\n json.oneOf = options;\n }\n else {\n json.anyOf = options;\n }\n};\nexport const intersectionProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n const a = process(def.left, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 0],\n });\n const b = process(def.right, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 1],\n });\n const isSimpleIntersection = (val) => \"allOf\" in val && Object.keys(val).length === 1;\n const allOf = [\n ...(isSimpleIntersection(a) ? a.allOf : [a]),\n ...(isSimpleIntersection(b) ? b.allOf : [b]),\n ];\n json.allOf = allOf;\n};\nexport const tupleProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"array\";\n const prefixPath = ctx.target === \"draft-2020-12\" ? \"prefixItems\" : \"items\";\n const restPath = ctx.target === \"draft-2020-12\" ? \"items\" : ctx.target === \"openapi-3.0\" ? \"items\" : \"additionalItems\";\n const prefixItems = def.items.map((x, i) => process(x, ctx, {\n ...params,\n path: [...params.path, prefixPath, i],\n }));\n const rest = def.rest\n ? process(def.rest, ctx, {\n ...params,\n path: [...params.path, restPath, ...(ctx.target === \"openapi-3.0\" ? [def.items.length] : [])],\n })\n : null;\n if (ctx.target === \"draft-2020-12\") {\n json.prefixItems = prefixItems;\n if (rest) {\n json.items = rest;\n }\n }\n else if (ctx.target === \"openapi-3.0\") {\n json.items = {\n anyOf: prefixItems,\n };\n if (rest) {\n json.items.anyOf.push(rest);\n }\n json.minItems = prefixItems.length;\n if (!rest) {\n json.maxItems = prefixItems.length;\n }\n }\n else {\n json.items = prefixItems;\n if (rest) {\n json.additionalItems = rest;\n }\n }\n // length\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n};\nexport const recordProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"object\";\n // For looseRecord with regex patterns, use patternProperties\n // This correctly represents \"only validate keys matching the pattern\" semantics\n // and composes well with allOf (intersections)\n const keyType = def.keyType;\n const keyBag = keyType._zod.bag;\n const patterns = keyBag?.patterns;\n if (def.mode === \"loose\" && patterns && patterns.size > 0) {\n // Use patternProperties for looseRecord with regex patterns\n const valueSchema = process(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"patternProperties\", \"*\"],\n });\n json.patternProperties = {};\n for (const pattern of patterns) {\n json.patternProperties[pattern.source] = valueSchema;\n }\n }\n else {\n // Default behavior: use propertyNames + additionalProperties\n if (ctx.target === \"draft-07\" || ctx.target === \"draft-2020-12\") {\n json.propertyNames = process(def.keyType, ctx, {\n ...params,\n path: [...params.path, \"propertyNames\"],\n });\n }\n json.additionalProperties = process(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n // Add required for keys with discrete values (enum, literal, etc.)\n const keyValues = keyType._zod.values;\n if (keyValues) {\n const validKeyValues = [...keyValues].filter((v) => typeof v === \"string\" || typeof v === \"number\");\n if (validKeyValues.length > 0) {\n json.required = validKeyValues;\n }\n }\n};\nexport const nullableProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n const inner = process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n if (ctx.target === \"openapi-3.0\") {\n seen.ref = def.innerType;\n json.nullable = true;\n }\n else {\n json.anyOf = [inner, { type: \"null\" }];\n }\n};\nexport const nonoptionalProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const defaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n json.default = JSON.parse(JSON.stringify(def.defaultValue));\n};\nexport const prefaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n if (ctx.io === \"input\")\n json._prefault = JSON.parse(JSON.stringify(def.defaultValue));\n};\nexport const catchProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n let catchValue;\n try {\n catchValue = def.catchValue(undefined);\n }\n catch {\n throw new Error(\"Dynamic catch values are not supported in JSON Schema\");\n }\n json.default = catchValue;\n};\nexport const pipeProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n const innerType = ctx.io === \"input\" ? (def.in._zod.def.type === \"transform\" ? def.out : def.in) : def.out;\n process(innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = innerType;\n};\nexport const readonlyProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n json.readOnly = true;\n};\nexport const promiseProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const optionalProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const lazyProcessor = (schema, ctx, _json, params) => {\n const innerType = schema._zod.innerType;\n process(innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = innerType;\n};\n// ==================== ALL PROCESSORS ====================\nexport const allProcessors = {\n string: stringProcessor,\n number: numberProcessor,\n boolean: booleanProcessor,\n bigint: bigintProcessor,\n symbol: symbolProcessor,\n null: nullProcessor,\n undefined: undefinedProcessor,\n void: voidProcessor,\n never: neverProcessor,\n any: anyProcessor,\n unknown: unknownProcessor,\n date: dateProcessor,\n enum: enumProcessor,\n literal: literalProcessor,\n nan: nanProcessor,\n template_literal: templateLiteralProcessor,\n file: fileProcessor,\n success: successProcessor,\n custom: customProcessor,\n function: functionProcessor,\n transform: transformProcessor,\n map: mapProcessor,\n set: setProcessor,\n array: arrayProcessor,\n object: objectProcessor,\n union: unionProcessor,\n intersection: intersectionProcessor,\n tuple: tupleProcessor,\n record: recordProcessor,\n nullable: nullableProcessor,\n nonoptional: nonoptionalProcessor,\n default: defaultProcessor,\n prefault: prefaultProcessor,\n catch: catchProcessor,\n pipe: pipeProcessor,\n readonly: readonlyProcessor,\n promise: promiseProcessor,\n optional: optionalProcessor,\n lazy: lazyProcessor,\n};\nexport function toJSONSchema(input, params) {\n if (\"_idmap\" in input) {\n // Registry case\n const registry = input;\n const ctx = initializeContext({ ...params, processors: allProcessors });\n const defs = {};\n // First pass: process all schemas to build the seen map\n for (const entry of registry._idmap.entries()) {\n const [_, schema] = entry;\n process(schema, ctx);\n }\n const schemas = {};\n const external = {\n registry,\n uri: params?.uri,\n defs,\n };\n // Update the context with external configuration\n ctx.external = external;\n // Second pass: emit each schema\n for (const entry of registry._idmap.entries()) {\n const [key, schema] = entry;\n extractDefs(ctx, schema);\n schemas[key] = finalize(ctx, schema);\n }\n if (Object.keys(defs).length > 0) {\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n schemas.__shared = {\n [defsSegment]: defs,\n };\n }\n return { schemas };\n }\n // Single schema case\n const ctx = initializeContext({ ...params, processors: allProcessors });\n process(input, ctx);\n extractDefs(ctx, input);\n return finalize(ctx, input);\n}\n","import { allProcessors } from \"./json-schema-processors.js\";\nimport { extractDefs, finalize, initializeContext, process, } from \"./to-json-schema.js\";\n/**\n * Legacy class-based interface for JSON Schema generation.\n * This class wraps the new functional implementation to provide backward compatibility.\n *\n * @deprecated Use the `toJSONSchema` function instead for new code.\n *\n * @example\n * ```typescript\n * // Legacy usage (still supported)\n * const gen = new JSONSchemaGenerator({ target: \"draft-07\" });\n * gen.process(schema);\n * const result = gen.emit(schema);\n *\n * // Preferred modern usage\n * const result = toJSONSchema(schema, { target: \"draft-07\" });\n * ```\n */\nexport class JSONSchemaGenerator {\n /** @deprecated Access via ctx instead */\n get metadataRegistry() {\n return this.ctx.metadataRegistry;\n }\n /** @deprecated Access via ctx instead */\n get target() {\n return this.ctx.target;\n }\n /** @deprecated Access via ctx instead */\n get unrepresentable() {\n return this.ctx.unrepresentable;\n }\n /** @deprecated Access via ctx instead */\n get override() {\n return this.ctx.override;\n }\n /** @deprecated Access via ctx instead */\n get io() {\n return this.ctx.io;\n }\n /** @deprecated Access via ctx instead */\n get counter() {\n return this.ctx.counter;\n }\n set counter(value) {\n this.ctx.counter = value;\n }\n /** @deprecated Access via ctx instead */\n get seen() {\n return this.ctx.seen;\n }\n constructor(params) {\n // Normalize target for internal context\n let normalizedTarget = params?.target ?? \"draft-2020-12\";\n if (normalizedTarget === \"draft-4\")\n normalizedTarget = \"draft-04\";\n if (normalizedTarget === \"draft-7\")\n normalizedTarget = \"draft-07\";\n this.ctx = initializeContext({\n processors: allProcessors,\n target: normalizedTarget,\n ...(params?.metadata && { metadata: params.metadata }),\n ...(params?.unrepresentable && { unrepresentable: params.unrepresentable }),\n ...(params?.override && { override: params.override }),\n ...(params?.io && { io: params.io }),\n });\n }\n /**\n * Process a schema to prepare it for JSON Schema generation.\n * This must be called before emit().\n */\n process(schema, _params = { path: [], schemaPath: [] }) {\n return process(schema, this.ctx, _params);\n }\n /**\n * Emit the final JSON Schema after processing.\n * Must call process() first.\n */\n emit(schema, _params) {\n // Apply emit params to the context\n if (_params) {\n if (_params.cycles)\n this.ctx.cycles = _params.cycles;\n if (_params.reused)\n this.ctx.reused = _params.reused;\n if (_params.external)\n this.ctx.external = _params.external;\n }\n extractDefs(this.ctx, schema);\n const result = finalize(this.ctx, schema);\n // Strip ~standard property to match old implementation's return type\n const { \"~standard\": _, ...plainResult } = result;\n return plainResult;\n }\n}\n","export {};\n","export * from \"./core.js\";\nexport * from \"./parse.js\";\nexport * from \"./errors.js\";\nexport * from \"./schemas.js\";\nexport * from \"./checks.js\";\nexport * from \"./versions.js\";\nexport * as util from \"./util.js\";\nexport * as regexes from \"./regexes.js\";\nexport * as locales from \"../locales/index.js\";\nexport * from \"./registries.js\";\nexport * from \"./doc.js\";\nexport * from \"./api.js\";\nexport * from \"./to-json-schema.js\";\nexport { toJSONSchema } from \"./json-schema-processors.js\";\nexport { JSONSchemaGenerator } from \"./json-schema-generator.js\";\nexport * as JSONSchema from \"./json-schema.js\";\n","export { _lt as lt, _lte as lte, _gt as gt, _gte as gte, _positive as positive, _negative as negative, _nonpositive as nonpositive, _nonnegative as nonnegative, _multipleOf as multipleOf, _maxSize as maxSize, _minSize as minSize, _size as size, _maxLength as maxLength, _minLength as minLength, _length as length, _regex as regex, _lowercase as lowercase, _uppercase as uppercase, _includes as includes, _startsWith as startsWith, _endsWith as endsWith, _property as property, _mime as mime, _overwrite as overwrite, _normalize as normalize, _trim as trim, _toLowerCase as toLowerCase, _toUpperCase as toUpperCase, _slugify as slugify, } from \"../core/index.js\";\n","import * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport const ZodISODateTime = /*@__PURE__*/ core.$constructor(\"ZodISODateTime\", (inst, def) => {\n core.$ZodISODateTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function datetime(params) {\n return core._isoDateTime(ZodISODateTime, params);\n}\nexport const ZodISODate = /*@__PURE__*/ core.$constructor(\"ZodISODate\", (inst, def) => {\n core.$ZodISODate.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function date(params) {\n return core._isoDate(ZodISODate, params);\n}\nexport const ZodISOTime = /*@__PURE__*/ core.$constructor(\"ZodISOTime\", (inst, def) => {\n core.$ZodISOTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function time(params) {\n return core._isoTime(ZodISOTime, params);\n}\nexport const ZodISODuration = /*@__PURE__*/ core.$constructor(\"ZodISODuration\", (inst, def) => {\n core.$ZodISODuration.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function duration(params) {\n return core._isoDuration(ZodISODuration, params);\n}\n","import * as core from \"../core/index.js\";\nimport { $ZodError } from \"../core/index.js\";\nimport * as util from \"../core/util.js\";\nconst initializer = (inst, issues) => {\n $ZodError.init(inst, issues);\n inst.name = \"ZodError\";\n Object.defineProperties(inst, {\n format: {\n value: (mapper) => core.formatError(inst, mapper),\n // enumerable: false,\n },\n flatten: {\n value: (mapper) => core.flattenError(inst, mapper),\n // enumerable: false,\n },\n addIssue: {\n value: (issue) => {\n inst.issues.push(issue);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n addIssues: {\n value: (issues) => {\n inst.issues.push(...issues);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n isEmpty: {\n get() {\n return inst.issues.length === 0;\n },\n // enumerable: false,\n },\n });\n // Object.defineProperty(inst, \"isEmpty\", {\n // get() {\n // return inst.issues.length === 0;\n // },\n // });\n};\nexport const ZodError = core.$constructor(\"ZodError\", initializer);\nexport const ZodRealError = core.$constructor(\"ZodError\", initializer, {\n Parent: Error,\n});\n// /** @deprecated Use `z.core.$ZodErrorMapCtx` instead. */\n// export type ErrorMapCtx = core.$ZodErrorMapCtx;\n","import * as core from \"../core/index.js\";\nimport { ZodRealError } from \"./errors.js\";\nexport const parse = /* @__PURE__ */ core._parse(ZodRealError);\nexport const parseAsync = /* @__PURE__ */ core._parseAsync(ZodRealError);\nexport const safeParse = /* @__PURE__ */ core._safeParse(ZodRealError);\nexport const safeParseAsync = /* @__PURE__ */ core._safeParseAsync(ZodRealError);\n// Codec functions\nexport const encode = /* @__PURE__ */ core._encode(ZodRealError);\nexport const decode = /* @__PURE__ */ core._decode(ZodRealError);\nexport const encodeAsync = /* @__PURE__ */ core._encodeAsync(ZodRealError);\nexport const decodeAsync = /* @__PURE__ */ core._decodeAsync(ZodRealError);\nexport const safeEncode = /* @__PURE__ */ core._safeEncode(ZodRealError);\nexport const safeDecode = /* @__PURE__ */ core._safeDecode(ZodRealError);\nexport const safeEncodeAsync = /* @__PURE__ */ core._safeEncodeAsync(ZodRealError);\nexport const safeDecodeAsync = /* @__PURE__ */ core._safeDecodeAsync(ZodRealError);\n","import * as core from \"../core/index.js\";\nimport { util } from \"../core/index.js\";\nimport * as processors from \"../core/json-schema-processors.js\";\nimport { createStandardJSONSchemaMethod, createToJSONSchemaMethod } from \"../core/to-json-schema.js\";\nimport * as checks from \"./checks.js\";\nimport * as iso from \"./iso.js\";\nimport * as parse from \"./parse.js\";\nexport const ZodType = /*@__PURE__*/ core.$constructor(\"ZodType\", (inst, def) => {\n core.$ZodType.init(inst, def);\n Object.assign(inst[\"~standard\"], {\n jsonSchema: {\n input: createStandardJSONSchemaMethod(inst, \"input\"),\n output: createStandardJSONSchemaMethod(inst, \"output\"),\n },\n });\n inst.toJSONSchema = createToJSONSchemaMethod(inst, {});\n inst.def = def;\n inst.type = def.type;\n Object.defineProperty(inst, \"_def\", { value: def });\n // base methods\n inst.check = (...checks) => {\n return inst.clone(util.mergeDefs(def, {\n checks: [\n ...(def.checks ?? []),\n ...checks.map((ch) => typeof ch === \"function\" ? { _zod: { check: ch, def: { check: \"custom\" }, onattach: [] } } : ch),\n ],\n }), {\n parent: true,\n });\n };\n inst.with = inst.check;\n inst.clone = (def, params) => core.clone(inst, def, params);\n inst.brand = () => inst;\n inst.register = ((reg, meta) => {\n reg.add(inst, meta);\n return inst;\n });\n // parsing\n inst.parse = (data, params) => parse.parse(inst, data, params, { callee: inst.parse });\n inst.safeParse = (data, params) => parse.safeParse(inst, data, params);\n inst.parseAsync = async (data, params) => parse.parseAsync(inst, data, params, { callee: inst.parseAsync });\n inst.safeParseAsync = async (data, params) => parse.safeParseAsync(inst, data, params);\n inst.spa = inst.safeParseAsync;\n // encoding/decoding\n inst.encode = (data, params) => parse.encode(inst, data, params);\n inst.decode = (data, params) => parse.decode(inst, data, params);\n inst.encodeAsync = async (data, params) => parse.encodeAsync(inst, data, params);\n inst.decodeAsync = async (data, params) => parse.decodeAsync(inst, data, params);\n inst.safeEncode = (data, params) => parse.safeEncode(inst, data, params);\n inst.safeDecode = (data, params) => parse.safeDecode(inst, data, params);\n inst.safeEncodeAsync = async (data, params) => parse.safeEncodeAsync(inst, data, params);\n inst.safeDecodeAsync = async (data, params) => parse.safeDecodeAsync(inst, data, params);\n // refinements\n inst.refine = (check, params) => inst.check(refine(check, params));\n inst.superRefine = (refinement) => inst.check(superRefine(refinement));\n inst.overwrite = (fn) => inst.check(checks.overwrite(fn));\n // wrappers\n inst.optional = () => optional(inst);\n inst.exactOptional = () => exactOptional(inst);\n inst.nullable = () => nullable(inst);\n inst.nullish = () => optional(nullable(inst));\n inst.nonoptional = (params) => nonoptional(inst, params);\n inst.array = () => array(inst);\n inst.or = (arg) => union([inst, arg]);\n inst.and = (arg) => intersection(inst, arg);\n inst.transform = (tx) => pipe(inst, transform(tx));\n inst.default = (def) => _default(inst, def);\n inst.prefault = (def) => prefault(inst, def);\n // inst.coalesce = (def, params) => coalesce(inst, def, params);\n inst.catch = (params) => _catch(inst, params);\n inst.pipe = (target) => pipe(inst, target);\n inst.readonly = () => readonly(inst);\n // meta\n inst.describe = (description) => {\n const cl = inst.clone();\n core.globalRegistry.add(cl, { description });\n return cl;\n };\n Object.defineProperty(inst, \"description\", {\n get() {\n return core.globalRegistry.get(inst)?.description;\n },\n configurable: true,\n });\n inst.meta = (...args) => {\n if (args.length === 0) {\n return core.globalRegistry.get(inst);\n }\n const cl = inst.clone();\n core.globalRegistry.add(cl, args[0]);\n return cl;\n };\n // helpers\n inst.isOptional = () => inst.safeParse(undefined).success;\n inst.isNullable = () => inst.safeParse(null).success;\n inst.apply = (fn) => fn(inst);\n return inst;\n});\n/** @internal */\nexport const _ZodString = /*@__PURE__*/ core.$constructor(\"_ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.stringProcessor(inst, ctx, json, params);\n const bag = inst._zod.bag;\n inst.format = bag.format ?? null;\n inst.minLength = bag.minimum ?? null;\n inst.maxLength = bag.maximum ?? null;\n // validations\n inst.regex = (...args) => inst.check(checks.regex(...args));\n inst.includes = (...args) => inst.check(checks.includes(...args));\n inst.startsWith = (...args) => inst.check(checks.startsWith(...args));\n inst.endsWith = (...args) => inst.check(checks.endsWith(...args));\n inst.min = (...args) => inst.check(checks.minLength(...args));\n inst.max = (...args) => inst.check(checks.maxLength(...args));\n inst.length = (...args) => inst.check(checks.length(...args));\n inst.nonempty = (...args) => inst.check(checks.minLength(1, ...args));\n inst.lowercase = (params) => inst.check(checks.lowercase(params));\n inst.uppercase = (params) => inst.check(checks.uppercase(params));\n // transforms\n inst.trim = () => inst.check(checks.trim());\n inst.normalize = (...args) => inst.check(checks.normalize(...args));\n inst.toLowerCase = () => inst.check(checks.toLowerCase());\n inst.toUpperCase = () => inst.check(checks.toUpperCase());\n inst.slugify = () => inst.check(checks.slugify());\n});\nexport const ZodString = /*@__PURE__*/ core.$constructor(\"ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n _ZodString.init(inst, def);\n inst.email = (params) => inst.check(core._email(ZodEmail, params));\n inst.url = (params) => inst.check(core._url(ZodURL, params));\n inst.jwt = (params) => inst.check(core._jwt(ZodJWT, params));\n inst.emoji = (params) => inst.check(core._emoji(ZodEmoji, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.uuid = (params) => inst.check(core._uuid(ZodUUID, params));\n inst.uuidv4 = (params) => inst.check(core._uuidv4(ZodUUID, params));\n inst.uuidv6 = (params) => inst.check(core._uuidv6(ZodUUID, params));\n inst.uuidv7 = (params) => inst.check(core._uuidv7(ZodUUID, params));\n inst.nanoid = (params) => inst.check(core._nanoid(ZodNanoID, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.cuid = (params) => inst.check(core._cuid(ZodCUID, params));\n inst.cuid2 = (params) => inst.check(core._cuid2(ZodCUID2, params));\n inst.ulid = (params) => inst.check(core._ulid(ZodULID, params));\n inst.base64 = (params) => inst.check(core._base64(ZodBase64, params));\n inst.base64url = (params) => inst.check(core._base64url(ZodBase64URL, params));\n inst.xid = (params) => inst.check(core._xid(ZodXID, params));\n inst.ksuid = (params) => inst.check(core._ksuid(ZodKSUID, params));\n inst.ipv4 = (params) => inst.check(core._ipv4(ZodIPv4, params));\n inst.ipv6 = (params) => inst.check(core._ipv6(ZodIPv6, params));\n inst.cidrv4 = (params) => inst.check(core._cidrv4(ZodCIDRv4, params));\n inst.cidrv6 = (params) => inst.check(core._cidrv6(ZodCIDRv6, params));\n inst.e164 = (params) => inst.check(core._e164(ZodE164, params));\n // iso\n inst.datetime = (params) => inst.check(iso.datetime(params));\n inst.date = (params) => inst.check(iso.date(params));\n inst.time = (params) => inst.check(iso.time(params));\n inst.duration = (params) => inst.check(iso.duration(params));\n});\nexport function string(params) {\n return core._string(ZodString, params);\n}\nexport const ZodStringFormat = /*@__PURE__*/ core.$constructor(\"ZodStringFormat\", (inst, def) => {\n core.$ZodStringFormat.init(inst, def);\n _ZodString.init(inst, def);\n});\nexport const ZodEmail = /*@__PURE__*/ core.$constructor(\"ZodEmail\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmail.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function email(params) {\n return core._email(ZodEmail, params);\n}\nexport const ZodGUID = /*@__PURE__*/ core.$constructor(\"ZodGUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodGUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function guid(params) {\n return core._guid(ZodGUID, params);\n}\nexport const ZodUUID = /*@__PURE__*/ core.$constructor(\"ZodUUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodUUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function uuid(params) {\n return core._uuid(ZodUUID, params);\n}\nexport function uuidv4(params) {\n return core._uuidv4(ZodUUID, params);\n}\n// ZodUUIDv6\nexport function uuidv6(params) {\n return core._uuidv6(ZodUUID, params);\n}\n// ZodUUIDv7\nexport function uuidv7(params) {\n return core._uuidv7(ZodUUID, params);\n}\nexport const ZodURL = /*@__PURE__*/ core.$constructor(\"ZodURL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodURL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function url(params) {\n return core._url(ZodURL, params);\n}\nexport function httpUrl(params) {\n return core._url(ZodURL, {\n protocol: /^https?$/,\n hostname: core.regexes.domain,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEmoji = /*@__PURE__*/ core.$constructor(\"ZodEmoji\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmoji.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function emoji(params) {\n return core._emoji(ZodEmoji, params);\n}\nexport const ZodNanoID = /*@__PURE__*/ core.$constructor(\"ZodNanoID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodNanoID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function nanoid(params) {\n return core._nanoid(ZodNanoID, params);\n}\nexport const ZodCUID = /*@__PURE__*/ core.$constructor(\"ZodCUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cuid(params) {\n return core._cuid(ZodCUID, params);\n}\nexport const ZodCUID2 = /*@__PURE__*/ core.$constructor(\"ZodCUID2\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID2.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cuid2(params) {\n return core._cuid2(ZodCUID2, params);\n}\nexport const ZodULID = /*@__PURE__*/ core.$constructor(\"ZodULID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodULID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ulid(params) {\n return core._ulid(ZodULID, params);\n}\nexport const ZodXID = /*@__PURE__*/ core.$constructor(\"ZodXID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodXID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function xid(params) {\n return core._xid(ZodXID, params);\n}\nexport const ZodKSUID = /*@__PURE__*/ core.$constructor(\"ZodKSUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodKSUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ksuid(params) {\n return core._ksuid(ZodKSUID, params);\n}\nexport const ZodIPv4 = /*@__PURE__*/ core.$constructor(\"ZodIPv4\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv4(params) {\n return core._ipv4(ZodIPv4, params);\n}\nexport const ZodMAC = /*@__PURE__*/ core.$constructor(\"ZodMAC\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodMAC.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function mac(params) {\n return core._mac(ZodMAC, params);\n}\nexport const ZodIPv6 = /*@__PURE__*/ core.$constructor(\"ZodIPv6\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv6(params) {\n return core._ipv6(ZodIPv6, params);\n}\nexport const ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv4\", (inst, def) => {\n core.$ZodCIDRv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv4(params) {\n return core._cidrv4(ZodCIDRv4, params);\n}\nexport const ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv6\", (inst, def) => {\n core.$ZodCIDRv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv6(params) {\n return core._cidrv6(ZodCIDRv6, params);\n}\nexport const ZodBase64 = /*@__PURE__*/ core.$constructor(\"ZodBase64\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64(params) {\n return core._base64(ZodBase64, params);\n}\nexport const ZodBase64URL = /*@__PURE__*/ core.$constructor(\"ZodBase64URL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64URL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64url(params) {\n return core._base64url(ZodBase64URL, params);\n}\nexport const ZodE164 = /*@__PURE__*/ core.$constructor(\"ZodE164\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodE164.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function e164(params) {\n return core._e164(ZodE164, params);\n}\nexport const ZodJWT = /*@__PURE__*/ core.$constructor(\"ZodJWT\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodJWT.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function jwt(params) {\n return core._jwt(ZodJWT, params);\n}\nexport const ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"ZodCustomStringFormat\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCustomStringFormat.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function stringFormat(format, fnOrRegex, _params = {}) {\n return core._stringFormat(ZodCustomStringFormat, format, fnOrRegex, _params);\n}\nexport function hostname(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hostname\", core.regexes.hostname, _params);\n}\nexport function hex(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hex\", core.regexes.hex, _params);\n}\nexport function hash(alg, params) {\n const enc = params?.enc ?? \"hex\";\n const format = `${alg}_${enc}`;\n const regex = core.regexes[format];\n if (!regex)\n throw new Error(`Unrecognized hash format: ${format}`);\n return core._stringFormat(ZodCustomStringFormat, format, regex, params);\n}\nexport const ZodNumber = /*@__PURE__*/ core.$constructor(\"ZodNumber\", (inst, def) => {\n core.$ZodNumber.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.numberProcessor(inst, ctx, json, params);\n inst.gt = (value, params) => inst.check(checks.gt(value, params));\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.lt = (value, params) => inst.check(checks.lt(value, params));\n inst.lte = (value, params) => inst.check(checks.lte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n inst.int = (params) => inst.check(int(params));\n inst.safe = (params) => inst.check(int(params));\n inst.positive = (params) => inst.check(checks.gt(0, params));\n inst.nonnegative = (params) => inst.check(checks.gte(0, params));\n inst.negative = (params) => inst.check(checks.lt(0, params));\n inst.nonpositive = (params) => inst.check(checks.lte(0, params));\n inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n inst.step = (value, params) => inst.check(checks.multipleOf(value, params));\n // inst.finite = (params) => inst.check(core.finite(params));\n inst.finite = () => inst;\n const bag = inst._zod.bag;\n inst.minValue =\n Math.max(bag.minimum ?? Number.NEGATIVE_INFINITY, bag.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null;\n inst.maxValue =\n Math.min(bag.maximum ?? Number.POSITIVE_INFINITY, bag.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null;\n inst.isInt = (bag.format ?? \"\").includes(\"int\") || Number.isSafeInteger(bag.multipleOf ?? 0.5);\n inst.isFinite = true;\n inst.format = bag.format ?? null;\n});\nexport function number(params) {\n return core._number(ZodNumber, params);\n}\nexport const ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"ZodNumberFormat\", (inst, def) => {\n core.$ZodNumberFormat.init(inst, def);\n ZodNumber.init(inst, def);\n});\nexport function int(params) {\n return core._int(ZodNumberFormat, params);\n}\nexport function float32(params) {\n return core._float32(ZodNumberFormat, params);\n}\nexport function float64(params) {\n return core._float64(ZodNumberFormat, params);\n}\nexport function int32(params) {\n return core._int32(ZodNumberFormat, params);\n}\nexport function uint32(params) {\n return core._uint32(ZodNumberFormat, params);\n}\nexport const ZodBoolean = /*@__PURE__*/ core.$constructor(\"ZodBoolean\", (inst, def) => {\n core.$ZodBoolean.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.booleanProcessor(inst, ctx, json, params);\n});\nexport function boolean(params) {\n return core._boolean(ZodBoolean, params);\n}\nexport const ZodBigInt = /*@__PURE__*/ core.$constructor(\"ZodBigInt\", (inst, def) => {\n core.$ZodBigInt.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.bigintProcessor(inst, ctx, json, params);\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.gt = (value, params) => inst.check(checks.gt(value, params));\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.lt = (value, params) => inst.check(checks.lt(value, params));\n inst.lte = (value, params) => inst.check(checks.lte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n inst.positive = (params) => inst.check(checks.gt(BigInt(0), params));\n inst.negative = (params) => inst.check(checks.lt(BigInt(0), params));\n inst.nonpositive = (params) => inst.check(checks.lte(BigInt(0), params));\n inst.nonnegative = (params) => inst.check(checks.gte(BigInt(0), params));\n inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n const bag = inst._zod.bag;\n inst.minValue = bag.minimum ?? null;\n inst.maxValue = bag.maximum ?? null;\n inst.format = bag.format ?? null;\n});\nexport function bigint(params) {\n return core._bigint(ZodBigInt, params);\n}\nexport const ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"ZodBigIntFormat\", (inst, def) => {\n core.$ZodBigIntFormat.init(inst, def);\n ZodBigInt.init(inst, def);\n});\n// int64\nexport function int64(params) {\n return core._int64(ZodBigIntFormat, params);\n}\n// uint64\nexport function uint64(params) {\n return core._uint64(ZodBigIntFormat, params);\n}\nexport const ZodSymbol = /*@__PURE__*/ core.$constructor(\"ZodSymbol\", (inst, def) => {\n core.$ZodSymbol.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.symbolProcessor(inst, ctx, json, params);\n});\nexport function symbol(params) {\n return core._symbol(ZodSymbol, params);\n}\nexport const ZodUndefined = /*@__PURE__*/ core.$constructor(\"ZodUndefined\", (inst, def) => {\n core.$ZodUndefined.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.undefinedProcessor(inst, ctx, json, params);\n});\nfunction _undefined(params) {\n return core._undefined(ZodUndefined, params);\n}\nexport { _undefined as undefined };\nexport const ZodNull = /*@__PURE__*/ core.$constructor(\"ZodNull\", (inst, def) => {\n core.$ZodNull.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nullProcessor(inst, ctx, json, params);\n});\nfunction _null(params) {\n return core._null(ZodNull, params);\n}\nexport { _null as null };\nexport const ZodAny = /*@__PURE__*/ core.$constructor(\"ZodAny\", (inst, def) => {\n core.$ZodAny.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.anyProcessor(inst, ctx, json, params);\n});\nexport function any() {\n return core._any(ZodAny);\n}\nexport const ZodUnknown = /*@__PURE__*/ core.$constructor(\"ZodUnknown\", (inst, def) => {\n core.$ZodUnknown.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unknownProcessor(inst, ctx, json, params);\n});\nexport function unknown() {\n return core._unknown(ZodUnknown);\n}\nexport const ZodNever = /*@__PURE__*/ core.$constructor(\"ZodNever\", (inst, def) => {\n core.$ZodNever.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.neverProcessor(inst, ctx, json, params);\n});\nexport function never(params) {\n return core._never(ZodNever, params);\n}\nexport const ZodVoid = /*@__PURE__*/ core.$constructor(\"ZodVoid\", (inst, def) => {\n core.$ZodVoid.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.voidProcessor(inst, ctx, json, params);\n});\nfunction _void(params) {\n return core._void(ZodVoid, params);\n}\nexport { _void as void };\nexport const ZodDate = /*@__PURE__*/ core.$constructor(\"ZodDate\", (inst, def) => {\n core.$ZodDate.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.dateProcessor(inst, ctx, json, params);\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n const c = inst._zod.bag;\n inst.minDate = c.minimum ? new Date(c.minimum) : null;\n inst.maxDate = c.maximum ? new Date(c.maximum) : null;\n});\nexport function date(params) {\n return core._date(ZodDate, params);\n}\nexport const ZodArray = /*@__PURE__*/ core.$constructor(\"ZodArray\", (inst, def) => {\n core.$ZodArray.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.arrayProcessor(inst, ctx, json, params);\n inst.element = def.element;\n inst.min = (minLength, params) => inst.check(checks.minLength(minLength, params));\n inst.nonempty = (params) => inst.check(checks.minLength(1, params));\n inst.max = (maxLength, params) => inst.check(checks.maxLength(maxLength, params));\n inst.length = (len, params) => inst.check(checks.length(len, params));\n inst.unwrap = () => inst.element;\n});\nexport function array(element, params) {\n return core._array(ZodArray, element, params);\n}\n// .keyof\nexport function keyof(schema) {\n const shape = schema._zod.def.shape;\n return _enum(Object.keys(shape));\n}\nexport const ZodObject = /*@__PURE__*/ core.$constructor(\"ZodObject\", (inst, def) => {\n core.$ZodObjectJIT.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.objectProcessor(inst, ctx, json, params);\n util.defineLazy(inst, \"shape\", () => {\n return def.shape;\n });\n inst.keyof = () => _enum(Object.keys(inst._zod.def.shape));\n inst.catchall = (catchall) => inst.clone({ ...inst._zod.def, catchall: catchall });\n inst.passthrough = () => inst.clone({ ...inst._zod.def, catchall: unknown() });\n inst.loose = () => inst.clone({ ...inst._zod.def, catchall: unknown() });\n inst.strict = () => inst.clone({ ...inst._zod.def, catchall: never() });\n inst.strip = () => inst.clone({ ...inst._zod.def, catchall: undefined });\n inst.extend = (incoming) => {\n return util.extend(inst, incoming);\n };\n inst.safeExtend = (incoming) => {\n return util.safeExtend(inst, incoming);\n };\n inst.merge = (other) => util.merge(inst, other);\n inst.pick = (mask) => util.pick(inst, mask);\n inst.omit = (mask) => util.omit(inst, mask);\n inst.partial = (...args) => util.partial(ZodOptional, inst, args[0]);\n inst.required = (...args) => util.required(ZodNonOptional, inst, args[0]);\n});\nexport function object(shape, params) {\n const def = {\n type: \"object\",\n shape: shape ?? {},\n ...util.normalizeParams(params),\n };\n return new ZodObject(def);\n}\n// strictObject\nexport function strictObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: never(),\n ...util.normalizeParams(params),\n });\n}\n// looseObject\nexport function looseObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: unknown(),\n ...util.normalizeParams(params),\n });\n}\nexport const ZodUnion = /*@__PURE__*/ core.$constructor(\"ZodUnion\", (inst, def) => {\n core.$ZodUnion.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n inst.options = def.options;\n});\nexport function union(options, params) {\n return new ZodUnion({\n type: \"union\",\n options: options,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodXor = /*@__PURE__*/ core.$constructor(\"ZodXor\", (inst, def) => {\n ZodUnion.init(inst, def);\n core.$ZodXor.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n inst.options = def.options;\n});\n/** Creates an exclusive union (XOR) where exactly one option must match.\n * Unlike regular unions that succeed when any option matches, xor fails if\n * zero or more than one option matches the input. */\nexport function xor(options, params) {\n return new ZodXor({\n type: \"union\",\n options: options,\n inclusive: false,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodDiscriminatedUnion = /*@__PURE__*/ core.$constructor(\"ZodDiscriminatedUnion\", (inst, def) => {\n ZodUnion.init(inst, def);\n core.$ZodDiscriminatedUnion.init(inst, def);\n});\nexport function discriminatedUnion(discriminator, options, params) {\n // const [options, params] = args;\n return new ZodDiscriminatedUnion({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodIntersection = /*@__PURE__*/ core.$constructor(\"ZodIntersection\", (inst, def) => {\n core.$ZodIntersection.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.intersectionProcessor(inst, ctx, json, params);\n});\nexport function intersection(left, right) {\n return new ZodIntersection({\n type: \"intersection\",\n left: left,\n right: right,\n });\n}\nexport const ZodTuple = /*@__PURE__*/ core.$constructor(\"ZodTuple\", (inst, def) => {\n core.$ZodTuple.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.tupleProcessor(inst, ctx, json, params);\n inst.rest = (rest) => inst.clone({\n ...inst._zod.def,\n rest: rest,\n });\n});\nexport function tuple(items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof core.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new ZodTuple({\n type: \"tuple\",\n items: items,\n rest,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodRecord = /*@__PURE__*/ core.$constructor(\"ZodRecord\", (inst, def) => {\n core.$ZodRecord.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.recordProcessor(inst, ctx, json, params);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n});\nexport function record(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\n// type alksjf = core.output<core.$ZodRecordKey>;\nexport function partialRecord(keyType, valueType, params) {\n const k = core.clone(keyType);\n k._zod.values = undefined;\n return new ZodRecord({\n type: \"record\",\n keyType: k,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport function looseRecord(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n mode: \"loose\",\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMap = /*@__PURE__*/ core.$constructor(\"ZodMap\", (inst, def) => {\n core.$ZodMap.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.mapProcessor(inst, ctx, json, params);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function map(keyType, valueType, params) {\n return new ZodMap({\n type: \"map\",\n keyType: keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSet = /*@__PURE__*/ core.$constructor(\"ZodSet\", (inst, def) => {\n core.$ZodSet.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.setProcessor(inst, ctx, json, params);\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function set(valueType, params) {\n return new ZodSet({\n type: \"set\",\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEnum = /*@__PURE__*/ core.$constructor(\"ZodEnum\", (inst, def) => {\n core.$ZodEnum.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.enumProcessor(inst, ctx, json, params);\n inst.enum = def.entries;\n inst.options = Object.values(def.entries);\n const keys = new Set(Object.keys(def.entries));\n inst.extract = (values, params) => {\n const newEntries = {};\n for (const value of values) {\n if (keys.has(value)) {\n newEntries[value] = def.entries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n inst.exclude = (values, params) => {\n const newEntries = { ...def.entries };\n for (const value of values) {\n if (keys.has(value)) {\n delete newEntries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n});\nfunction _enum(values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport { _enum as enum };\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function nativeEnum(entries, params) {\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLiteral = /*@__PURE__*/ core.$constructor(\"ZodLiteral\", (inst, def) => {\n core.$ZodLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.literalProcessor(inst, ctx, json, params);\n inst.values = new Set(def.values);\n Object.defineProperty(inst, \"value\", {\n get() {\n if (def.values.length > 1) {\n throw new Error(\"This schema contains multiple valid literal values. Use `.values` instead.\");\n }\n return def.values[0];\n },\n });\n});\nexport function literal(value, params) {\n return new ZodLiteral({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\nexport const ZodFile = /*@__PURE__*/ core.$constructor(\"ZodFile\", (inst, def) => {\n core.$ZodFile.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.fileProcessor(inst, ctx, json, params);\n inst.min = (size, params) => inst.check(core._minSize(size, params));\n inst.max = (size, params) => inst.check(core._maxSize(size, params));\n inst.mime = (types, params) => inst.check(core._mime(Array.isArray(types) ? types : [types], params));\n});\nexport function file(params) {\n return core._file(ZodFile, params);\n}\nexport const ZodTransform = /*@__PURE__*/ core.$constructor(\"ZodTransform\", (inst, def) => {\n core.$ZodTransform.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.transformProcessor(inst, ctx, json, params);\n inst._zod.parse = (payload, _ctx) => {\n if (_ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = inst);\n // _issue.continue ??= true;\n payload.issues.push(util.issue(_issue));\n }\n };\n const output = def.transform(payload.value, payload);\n if (output instanceof Promise) {\n return output.then((output) => {\n payload.value = output;\n return payload;\n });\n }\n payload.value = output;\n return payload;\n };\n});\nexport function transform(fn) {\n return new ZodTransform({\n type: \"transform\",\n transform: fn,\n });\n}\nexport const ZodOptional = /*@__PURE__*/ core.$constructor(\"ZodOptional\", (inst, def) => {\n core.$ZodOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function optional(innerType) {\n return new ZodOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodExactOptional = /*@__PURE__*/ core.$constructor(\"ZodExactOptional\", (inst, def) => {\n core.$ZodExactOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function exactOptional(innerType) {\n return new ZodExactOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodNullable = /*@__PURE__*/ core.$constructor(\"ZodNullable\", (inst, def) => {\n core.$ZodNullable.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nullableProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nullable(innerType) {\n return new ZodNullable({\n type: \"nullable\",\n innerType: innerType,\n });\n}\n// nullish\nexport function nullish(innerType) {\n return optional(nullable(innerType));\n}\nexport const ZodDefault = /*@__PURE__*/ core.$constructor(\"ZodDefault\", (inst, def) => {\n core.$ZodDefault.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.defaultProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeDefault = inst.unwrap;\n});\nexport function _default(innerType, defaultValue) {\n return new ZodDefault({\n type: \"default\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodPrefault = /*@__PURE__*/ core.$constructor(\"ZodPrefault\", (inst, def) => {\n core.$ZodPrefault.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.prefaultProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function prefault(innerType, defaultValue) {\n return new ZodPrefault({\n type: \"prefault\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodNonOptional = /*@__PURE__*/ core.$constructor(\"ZodNonOptional\", (inst, def) => {\n core.$ZodNonOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nonoptionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nonoptional(innerType, params) {\n return new ZodNonOptional({\n type: \"nonoptional\",\n innerType: innerType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSuccess = /*@__PURE__*/ core.$constructor(\"ZodSuccess\", (inst, def) => {\n core.$ZodSuccess.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.successProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function success(innerType) {\n return new ZodSuccess({\n type: \"success\",\n innerType: innerType,\n });\n}\nexport const ZodCatch = /*@__PURE__*/ core.$constructor(\"ZodCatch\", (inst, def) => {\n core.$ZodCatch.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.catchProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeCatch = inst.unwrap;\n});\nfunction _catch(innerType, catchValue) {\n return new ZodCatch({\n type: \"catch\",\n innerType: innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\nexport { _catch as catch };\nexport const ZodNaN = /*@__PURE__*/ core.$constructor(\"ZodNaN\", (inst, def) => {\n core.$ZodNaN.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nanProcessor(inst, ctx, json, params);\n});\nexport function nan(params) {\n return core._nan(ZodNaN, params);\n}\nexport const ZodPipe = /*@__PURE__*/ core.$constructor(\"ZodPipe\", (inst, def) => {\n core.$ZodPipe.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.pipeProcessor(inst, ctx, json, params);\n inst.in = def.in;\n inst.out = def.out;\n});\nexport function pipe(in_, out) {\n return new ZodPipe({\n type: \"pipe\",\n in: in_,\n out: out,\n // ...util.normalizeParams(params),\n });\n}\nexport const ZodCodec = /*@__PURE__*/ core.$constructor(\"ZodCodec\", (inst, def) => {\n ZodPipe.init(inst, def);\n core.$ZodCodec.init(inst, def);\n});\nexport function codec(in_, out, params) {\n return new ZodCodec({\n type: \"pipe\",\n in: in_,\n out: out,\n transform: params.decode,\n reverseTransform: params.encode,\n });\n}\nexport const ZodReadonly = /*@__PURE__*/ core.$constructor(\"ZodReadonly\", (inst, def) => {\n core.$ZodReadonly.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.readonlyProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function readonly(innerType) {\n return new ZodReadonly({\n type: \"readonly\",\n innerType: innerType,\n });\n}\nexport const ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"ZodTemplateLiteral\", (inst, def) => {\n core.$ZodTemplateLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.templateLiteralProcessor(inst, ctx, json, params);\n});\nexport function templateLiteral(parts, params) {\n return new ZodTemplateLiteral({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLazy = /*@__PURE__*/ core.$constructor(\"ZodLazy\", (inst, def) => {\n core.$ZodLazy.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.lazyProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.getter();\n});\nexport function lazy(getter) {\n return new ZodLazy({\n type: \"lazy\",\n getter: getter,\n });\n}\nexport const ZodPromise = /*@__PURE__*/ core.$constructor(\"ZodPromise\", (inst, def) => {\n core.$ZodPromise.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.promiseProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function promise(innerType) {\n return new ZodPromise({\n type: \"promise\",\n innerType: innerType,\n });\n}\nexport const ZodFunction = /*@__PURE__*/ core.$constructor(\"ZodFunction\", (inst, def) => {\n core.$ZodFunction.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.functionProcessor(inst, ctx, json, params);\n});\nexport function _function(params) {\n return new ZodFunction({\n type: \"function\",\n input: Array.isArray(params?.input) ? tuple(params?.input) : (params?.input ?? array(unknown())),\n output: params?.output ?? unknown(),\n });\n}\nexport { _function as function };\nexport const ZodCustom = /*@__PURE__*/ core.$constructor(\"ZodCustom\", (inst, def) => {\n core.$ZodCustom.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.customProcessor(inst, ctx, json, params);\n});\n// custom checks\nexport function check(fn) {\n const ch = new core.$ZodCheck({\n check: \"custom\",\n // ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\nexport function custom(fn, _params) {\n return core._custom(ZodCustom, fn ?? (() => true), _params);\n}\nexport function refine(fn, _params = {}) {\n return core._refine(ZodCustom, fn, _params);\n}\n// superRefine\nexport function superRefine(fn) {\n return core._superRefine(fn);\n}\n// Re-export describe and meta from core\nexport const describe = core.describe;\nexport const meta = core.meta;\nfunction _instanceof(cls, params = {}) {\n const inst = new ZodCustom({\n type: \"custom\",\n check: \"custom\",\n fn: (data) => data instanceof cls,\n abort: true,\n ...util.normalizeParams(params),\n });\n inst._zod.bag.Class = cls;\n // Override check to emit invalid_type instead of custom\n inst._zod.check = (payload) => {\n if (!(payload.value instanceof cls)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: cls.name,\n input: payload.value,\n inst,\n path: [...(inst._zod.def.path ?? [])],\n });\n }\n };\n return inst;\n}\nexport { _instanceof as instanceof };\n// stringbool\nexport const stringbool = (...args) => core._stringbool({\n Codec: ZodCodec,\n Boolean: ZodBoolean,\n String: ZodString,\n}, ...args);\nexport function json(params) {\n const jsonSchema = lazy(() => {\n return union([string(params), number(), boolean(), _null(), array(jsonSchema), record(string(), jsonSchema)]);\n });\n return jsonSchema;\n}\n// preprocess\n// /** @deprecated Use `z.pipe()` and `z.transform()` instead. */\nexport function preprocess(fn, schema) {\n return pipe(transform(fn), schema);\n}\n","// Zod 3 compat layer\nimport * as core from \"../core/index.js\";\n/** @deprecated Use the raw string literal codes instead, e.g. \"invalid_type\". */\nexport const ZodIssueCode = {\n invalid_type: \"invalid_type\",\n too_big: \"too_big\",\n too_small: \"too_small\",\n invalid_format: \"invalid_format\",\n not_multiple_of: \"not_multiple_of\",\n unrecognized_keys: \"unrecognized_keys\",\n invalid_union: \"invalid_union\",\n invalid_key: \"invalid_key\",\n invalid_element: \"invalid_element\",\n invalid_value: \"invalid_value\",\n custom: \"custom\",\n};\nexport { $brand, config } from \"../core/index.js\";\n/** @deprecated Use `z.config(params)` instead. */\nexport function setErrorMap(map) {\n core.config({\n customError: map,\n });\n}\n/** @deprecated Use `z.config()` instead. */\nexport function getErrorMap() {\n return core.config().customError;\n}\n/** @deprecated Do not use. Stub definition, only included for zod-to-json-schema compatibility. */\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n","import { globalRegistry } from \"../core/registries.js\";\nimport * as _checks from \"./checks.js\";\nimport * as _iso from \"./iso.js\";\nimport * as _schemas from \"./schemas.js\";\n// Local z object to avoid circular dependency with ../index.js\nconst z = {\n ..._schemas,\n ..._checks,\n iso: _iso,\n};\n// Keys that are recognized and handled by the conversion logic\nconst RECOGNIZED_KEYS = new Set([\n // Schema identification\n \"$schema\",\n \"$ref\",\n \"$defs\",\n \"definitions\",\n // Core schema keywords\n \"$id\",\n \"id\",\n \"$comment\",\n \"$anchor\",\n \"$vocabulary\",\n \"$dynamicRef\",\n \"$dynamicAnchor\",\n // Type\n \"type\",\n \"enum\",\n \"const\",\n // Composition\n \"anyOf\",\n \"oneOf\",\n \"allOf\",\n \"not\",\n // Object\n \"properties\",\n \"required\",\n \"additionalProperties\",\n \"patternProperties\",\n \"propertyNames\",\n \"minProperties\",\n \"maxProperties\",\n // Array\n \"items\",\n \"prefixItems\",\n \"additionalItems\",\n \"minItems\",\n \"maxItems\",\n \"uniqueItems\",\n \"contains\",\n \"minContains\",\n \"maxContains\",\n // String\n \"minLength\",\n \"maxLength\",\n \"pattern\",\n \"format\",\n // Number\n \"minimum\",\n \"maximum\",\n \"exclusiveMinimum\",\n \"exclusiveMaximum\",\n \"multipleOf\",\n // Already handled metadata\n \"description\",\n \"default\",\n // Content\n \"contentEncoding\",\n \"contentMediaType\",\n \"contentSchema\",\n // Unsupported (error-throwing)\n \"unevaluatedItems\",\n \"unevaluatedProperties\",\n \"if\",\n \"then\",\n \"else\",\n \"dependentSchemas\",\n \"dependentRequired\",\n // OpenAPI\n \"nullable\",\n \"readOnly\",\n]);\nfunction detectVersion(schema, defaultTarget) {\n const $schema = schema.$schema;\n if ($schema === \"https://json-schema.org/draft/2020-12/schema\") {\n return \"draft-2020-12\";\n }\n if ($schema === \"http://json-schema.org/draft-07/schema#\") {\n return \"draft-7\";\n }\n if ($schema === \"http://json-schema.org/draft-04/schema#\") {\n return \"draft-4\";\n }\n // Use defaultTarget if provided, otherwise default to draft-2020-12\n return defaultTarget ?? \"draft-2020-12\";\n}\nfunction resolveRef(ref, ctx) {\n if (!ref.startsWith(\"#\")) {\n throw new Error(\"External $ref is not supported, only local refs (#/...) are allowed\");\n }\n const path = ref.slice(1).split(\"/\").filter(Boolean);\n // Handle root reference \"#\"\n if (path.length === 0) {\n return ctx.rootSchema;\n }\n const defsKey = ctx.version === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n if (path[0] === defsKey) {\n const key = path[1];\n if (!key || !ctx.defs[key]) {\n throw new Error(`Reference not found: ${ref}`);\n }\n return ctx.defs[key];\n }\n throw new Error(`Reference not found: ${ref}`);\n}\nfunction convertBaseSchema(schema, ctx) {\n // Handle unsupported features\n if (schema.not !== undefined) {\n // Special case: { not: {} } represents never\n if (typeof schema.not === \"object\" && Object.keys(schema.not).length === 0) {\n return z.never();\n }\n throw new Error(\"not is not supported in Zod (except { not: {} } for never)\");\n }\n if (schema.unevaluatedItems !== undefined) {\n throw new Error(\"unevaluatedItems is not supported\");\n }\n if (schema.unevaluatedProperties !== undefined) {\n throw new Error(\"unevaluatedProperties is not supported\");\n }\n if (schema.if !== undefined || schema.then !== undefined || schema.else !== undefined) {\n throw new Error(\"Conditional schemas (if/then/else) are not supported\");\n }\n if (schema.dependentSchemas !== undefined || schema.dependentRequired !== undefined) {\n throw new Error(\"dependentSchemas and dependentRequired are not supported\");\n }\n // Handle $ref\n if (schema.$ref) {\n const refPath = schema.$ref;\n if (ctx.refs.has(refPath)) {\n return ctx.refs.get(refPath);\n }\n if (ctx.processing.has(refPath)) {\n // Circular reference - use lazy\n return z.lazy(() => {\n if (!ctx.refs.has(refPath)) {\n throw new Error(`Circular reference not resolved: ${refPath}`);\n }\n return ctx.refs.get(refPath);\n });\n }\n ctx.processing.add(refPath);\n const resolved = resolveRef(refPath, ctx);\n const zodSchema = convertSchema(resolved, ctx);\n ctx.refs.set(refPath, zodSchema);\n ctx.processing.delete(refPath);\n return zodSchema;\n }\n // Handle enum\n if (schema.enum !== undefined) {\n const enumValues = schema.enum;\n // Special case: OpenAPI 3.0 null representation { type: \"string\", nullable: true, enum: [null] }\n if (ctx.version === \"openapi-3.0\" &&\n schema.nullable === true &&\n enumValues.length === 1 &&\n enumValues[0] === null) {\n return z.null();\n }\n if (enumValues.length === 0) {\n return z.never();\n }\n if (enumValues.length === 1) {\n return z.literal(enumValues[0]);\n }\n // Check if all values are strings\n if (enumValues.every((v) => typeof v === \"string\")) {\n return z.enum(enumValues);\n }\n // Mixed types - use union of literals\n const literalSchemas = enumValues.map((v) => z.literal(v));\n if (literalSchemas.length < 2) {\n return literalSchemas[0];\n }\n return z.union([literalSchemas[0], literalSchemas[1], ...literalSchemas.slice(2)]);\n }\n // Handle const\n if (schema.const !== undefined) {\n return z.literal(schema.const);\n }\n // Handle type\n const type = schema.type;\n if (Array.isArray(type)) {\n // Expand type array into anyOf union\n const typeSchemas = type.map((t) => {\n const typeSchema = { ...schema, type: t };\n return convertBaseSchema(typeSchema, ctx);\n });\n if (typeSchemas.length === 0) {\n return z.never();\n }\n if (typeSchemas.length === 1) {\n return typeSchemas[0];\n }\n return z.union(typeSchemas);\n }\n if (!type) {\n // No type specified - empty schema (any)\n return z.any();\n }\n let zodSchema;\n switch (type) {\n case \"string\": {\n let stringSchema = z.string();\n // Apply format using .check() with Zod format functions\n if (schema.format) {\n const format = schema.format;\n // Map common formats to Zod check functions\n if (format === \"email\") {\n stringSchema = stringSchema.check(z.email());\n }\n else if (format === \"uri\" || format === \"uri-reference\") {\n stringSchema = stringSchema.check(z.url());\n }\n else if (format === \"uuid\" || format === \"guid\") {\n stringSchema = stringSchema.check(z.uuid());\n }\n else if (format === \"date-time\") {\n stringSchema = stringSchema.check(z.iso.datetime());\n }\n else if (format === \"date\") {\n stringSchema = stringSchema.check(z.iso.date());\n }\n else if (format === \"time\") {\n stringSchema = stringSchema.check(z.iso.time());\n }\n else if (format === \"duration\") {\n stringSchema = stringSchema.check(z.iso.duration());\n }\n else if (format === \"ipv4\") {\n stringSchema = stringSchema.check(z.ipv4());\n }\n else if (format === \"ipv6\") {\n stringSchema = stringSchema.check(z.ipv6());\n }\n else if (format === \"mac\") {\n stringSchema = stringSchema.check(z.mac());\n }\n else if (format === \"cidr\") {\n stringSchema = stringSchema.check(z.cidrv4());\n }\n else if (format === \"cidr-v6\") {\n stringSchema = stringSchema.check(z.cidrv6());\n }\n else if (format === \"base64\") {\n stringSchema = stringSchema.check(z.base64());\n }\n else if (format === \"base64url\") {\n stringSchema = stringSchema.check(z.base64url());\n }\n else if (format === \"e164\") {\n stringSchema = stringSchema.check(z.e164());\n }\n else if (format === \"jwt\") {\n stringSchema = stringSchema.check(z.jwt());\n }\n else if (format === \"emoji\") {\n stringSchema = stringSchema.check(z.emoji());\n }\n else if (format === \"nanoid\") {\n stringSchema = stringSchema.check(z.nanoid());\n }\n else if (format === \"cuid\") {\n stringSchema = stringSchema.check(z.cuid());\n }\n else if (format === \"cuid2\") {\n stringSchema = stringSchema.check(z.cuid2());\n }\n else if (format === \"ulid\") {\n stringSchema = stringSchema.check(z.ulid());\n }\n else if (format === \"xid\") {\n stringSchema = stringSchema.check(z.xid());\n }\n else if (format === \"ksuid\") {\n stringSchema = stringSchema.check(z.ksuid());\n }\n // Note: json-string format is not currently supported by Zod\n // Custom formats are ignored - keep as plain string\n }\n // Apply constraints\n if (typeof schema.minLength === \"number\") {\n stringSchema = stringSchema.min(schema.minLength);\n }\n if (typeof schema.maxLength === \"number\") {\n stringSchema = stringSchema.max(schema.maxLength);\n }\n if (schema.pattern) {\n // JSON Schema patterns are not implicitly anchored (match anywhere in string)\n stringSchema = stringSchema.regex(new RegExp(schema.pattern));\n }\n zodSchema = stringSchema;\n break;\n }\n case \"number\":\n case \"integer\": {\n let numberSchema = type === \"integer\" ? z.number().int() : z.number();\n // Apply constraints\n if (typeof schema.minimum === \"number\") {\n numberSchema = numberSchema.min(schema.minimum);\n }\n if (typeof schema.maximum === \"number\") {\n numberSchema = numberSchema.max(schema.maximum);\n }\n if (typeof schema.exclusiveMinimum === \"number\") {\n numberSchema = numberSchema.gt(schema.exclusiveMinimum);\n }\n else if (schema.exclusiveMinimum === true && typeof schema.minimum === \"number\") {\n numberSchema = numberSchema.gt(schema.minimum);\n }\n if (typeof schema.exclusiveMaximum === \"number\") {\n numberSchema = numberSchema.lt(schema.exclusiveMaximum);\n }\n else if (schema.exclusiveMaximum === true && typeof schema.maximum === \"number\") {\n numberSchema = numberSchema.lt(schema.maximum);\n }\n if (typeof schema.multipleOf === \"number\") {\n numberSchema = numberSchema.multipleOf(schema.multipleOf);\n }\n zodSchema = numberSchema;\n break;\n }\n case \"boolean\": {\n zodSchema = z.boolean();\n break;\n }\n case \"null\": {\n zodSchema = z.null();\n break;\n }\n case \"object\": {\n const shape = {};\n const properties = schema.properties || {};\n const requiredSet = new Set(schema.required || []);\n // Convert properties - mark optional ones\n for (const [key, propSchema] of Object.entries(properties)) {\n const propZodSchema = convertSchema(propSchema, ctx);\n // If not in required array, make it optional\n shape[key] = requiredSet.has(key) ? propZodSchema : propZodSchema.optional();\n }\n // Handle propertyNames\n if (schema.propertyNames) {\n const keySchema = convertSchema(schema.propertyNames, ctx);\n const valueSchema = schema.additionalProperties && typeof schema.additionalProperties === \"object\"\n ? convertSchema(schema.additionalProperties, ctx)\n : z.any();\n // Case A: No properties (pure record)\n if (Object.keys(shape).length === 0) {\n zodSchema = z.record(keySchema, valueSchema);\n break;\n }\n // Case B: With properties (intersection of object and looseRecord)\n const objectSchema = z.object(shape).passthrough();\n const recordSchema = z.looseRecord(keySchema, valueSchema);\n zodSchema = z.intersection(objectSchema, recordSchema);\n break;\n }\n // Handle patternProperties\n if (schema.patternProperties) {\n // patternProperties: keys matching pattern must satisfy corresponding schema\n // Use loose records so non-matching keys pass through\n const patternProps = schema.patternProperties;\n const patternKeys = Object.keys(patternProps);\n const looseRecords = [];\n for (const pattern of patternKeys) {\n const patternValue = convertSchema(patternProps[pattern], ctx);\n const keySchema = z.string().regex(new RegExp(pattern));\n looseRecords.push(z.looseRecord(keySchema, patternValue));\n }\n // Build intersection: object schema + all pattern property records\n const schemasToIntersect = [];\n if (Object.keys(shape).length > 0) {\n // Use passthrough so patternProperties can validate additional keys\n schemasToIntersect.push(z.object(shape).passthrough());\n }\n schemasToIntersect.push(...looseRecords);\n if (schemasToIntersect.length === 0) {\n zodSchema = z.object({}).passthrough();\n }\n else if (schemasToIntersect.length === 1) {\n zodSchema = schemasToIntersect[0];\n }\n else {\n // Chain intersections: (A & B) & C & D ...\n let result = z.intersection(schemasToIntersect[0], schemasToIntersect[1]);\n for (let i = 2; i < schemasToIntersect.length; i++) {\n result = z.intersection(result, schemasToIntersect[i]);\n }\n zodSchema = result;\n }\n break;\n }\n // Handle additionalProperties\n // In JSON Schema, additionalProperties defaults to true (allow any extra properties)\n // In Zod, objects strip unknown keys by default, so we need to handle this explicitly\n const objectSchema = z.object(shape);\n if (schema.additionalProperties === false) {\n // Strict mode - no extra properties allowed\n zodSchema = objectSchema.strict();\n }\n else if (typeof schema.additionalProperties === \"object\") {\n // Extra properties must match the specified schema\n zodSchema = objectSchema.catchall(convertSchema(schema.additionalProperties, ctx));\n }\n else {\n // additionalProperties is true or undefined - allow any extra properties (passthrough)\n zodSchema = objectSchema.passthrough();\n }\n break;\n }\n case \"array\": {\n // TODO: uniqueItems is not supported\n // TODO: contains/minContains/maxContains are not supported\n // Check if this is a tuple (prefixItems or items as array)\n const prefixItems = schema.prefixItems;\n const items = schema.items;\n if (prefixItems && Array.isArray(prefixItems)) {\n // Tuple with prefixItems (draft-2020-12)\n const tupleItems = prefixItems.map((item) => convertSchema(item, ctx));\n const rest = items && typeof items === \"object\" && !Array.isArray(items)\n ? convertSchema(items, ctx)\n : undefined;\n if (rest) {\n zodSchema = z.tuple(tupleItems).rest(rest);\n }\n else {\n zodSchema = z.tuple(tupleItems);\n }\n // Apply minItems/maxItems constraints to tuples\n if (typeof schema.minItems === \"number\") {\n zodSchema = zodSchema.check(z.minLength(schema.minItems));\n }\n if (typeof schema.maxItems === \"number\") {\n zodSchema = zodSchema.check(z.maxLength(schema.maxItems));\n }\n }\n else if (Array.isArray(items)) {\n // Tuple with items array (draft-7)\n const tupleItems = items.map((item) => convertSchema(item, ctx));\n const rest = schema.additionalItems && typeof schema.additionalItems === \"object\"\n ? convertSchema(schema.additionalItems, ctx)\n : undefined; // additionalItems: false means no rest, handled by default tuple behavior\n if (rest) {\n zodSchema = z.tuple(tupleItems).rest(rest);\n }\n else {\n zodSchema = z.tuple(tupleItems);\n }\n // Apply minItems/maxItems constraints to tuples\n if (typeof schema.minItems === \"number\") {\n zodSchema = zodSchema.check(z.minLength(schema.minItems));\n }\n if (typeof schema.maxItems === \"number\") {\n zodSchema = zodSchema.check(z.maxLength(schema.maxItems));\n }\n }\n else if (items !== undefined) {\n // Regular array\n const element = convertSchema(items, ctx);\n let arraySchema = z.array(element);\n // Apply constraints\n if (typeof schema.minItems === \"number\") {\n arraySchema = arraySchema.min(schema.minItems);\n }\n if (typeof schema.maxItems === \"number\") {\n arraySchema = arraySchema.max(schema.maxItems);\n }\n zodSchema = arraySchema;\n }\n else {\n // No items specified - array of any\n zodSchema = z.array(z.any());\n }\n break;\n }\n default:\n throw new Error(`Unsupported type: ${type}`);\n }\n // Apply metadata\n if (schema.description) {\n zodSchema = zodSchema.describe(schema.description);\n }\n if (schema.default !== undefined) {\n zodSchema = zodSchema.default(schema.default);\n }\n return zodSchema;\n}\nfunction convertSchema(schema, ctx) {\n if (typeof schema === \"boolean\") {\n return schema ? z.any() : z.never();\n }\n // Convert base schema first (ignoring composition keywords)\n let baseSchema = convertBaseSchema(schema, ctx);\n const hasExplicitType = schema.type || schema.enum !== undefined || schema.const !== undefined;\n // Process composition keywords LAST (they can appear together)\n // Handle anyOf - wrap base schema with union\n if (schema.anyOf && Array.isArray(schema.anyOf)) {\n const options = schema.anyOf.map((s) => convertSchema(s, ctx));\n const anyOfUnion = z.union(options);\n baseSchema = hasExplicitType ? z.intersection(baseSchema, anyOfUnion) : anyOfUnion;\n }\n // Handle oneOf - exclusive union (exactly one must match)\n if (schema.oneOf && Array.isArray(schema.oneOf)) {\n const options = schema.oneOf.map((s) => convertSchema(s, ctx));\n const oneOfUnion = z.xor(options);\n baseSchema = hasExplicitType ? z.intersection(baseSchema, oneOfUnion) : oneOfUnion;\n }\n // Handle allOf - wrap base schema with intersection\n if (schema.allOf && Array.isArray(schema.allOf)) {\n if (schema.allOf.length === 0) {\n baseSchema = hasExplicitType ? baseSchema : z.any();\n }\n else {\n let result = hasExplicitType ? baseSchema : convertSchema(schema.allOf[0], ctx);\n const startIdx = hasExplicitType ? 0 : 1;\n for (let i = startIdx; i < schema.allOf.length; i++) {\n result = z.intersection(result, convertSchema(schema.allOf[i], ctx));\n }\n baseSchema = result;\n }\n }\n // Handle nullable (OpenAPI 3.0)\n if (schema.nullable === true && ctx.version === \"openapi-3.0\") {\n baseSchema = z.nullable(baseSchema);\n }\n // Handle readOnly\n if (schema.readOnly === true) {\n baseSchema = z.readonly(baseSchema);\n }\n // Collect metadata: core schema keywords and unrecognized keys\n const extraMeta = {};\n // Core schema keywords that should be captured as metadata\n const coreMetadataKeys = [\"$id\", \"id\", \"$comment\", \"$anchor\", \"$vocabulary\", \"$dynamicRef\", \"$dynamicAnchor\"];\n for (const key of coreMetadataKeys) {\n if (key in schema) {\n extraMeta[key] = schema[key];\n }\n }\n // Content keywords - store as metadata\n const contentMetadataKeys = [\"contentEncoding\", \"contentMediaType\", \"contentSchema\"];\n for (const key of contentMetadataKeys) {\n if (key in schema) {\n extraMeta[key] = schema[key];\n }\n }\n // Unrecognized keys (custom metadata)\n for (const key of Object.keys(schema)) {\n if (!RECOGNIZED_KEYS.has(key)) {\n extraMeta[key] = schema[key];\n }\n }\n if (Object.keys(extraMeta).length > 0) {\n ctx.registry.add(baseSchema, extraMeta);\n }\n return baseSchema;\n}\n/**\n * Converts a JSON Schema to a Zod schema. This function should be considered semi-experimental. It's behavior is liable to change. */\nexport function fromJSONSchema(schema, params) {\n // Handle boolean schemas\n if (typeof schema === \"boolean\") {\n return schema ? z.any() : z.never();\n }\n const version = detectVersion(schema, params?.defaultTarget);\n const defs = (schema.$defs || schema.definitions || {});\n const ctx = {\n version,\n defs,\n refs: new Map(),\n processing: new Set(),\n rootSchema: schema,\n registry: params?.registry ?? globalRegistry,\n };\n return convertSchema(schema, ctx);\n}\n","import * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport function string(params) {\n return core._coercedString(schemas.ZodString, params);\n}\nexport function number(params) {\n return core._coercedNumber(schemas.ZodNumber, params);\n}\nexport function boolean(params) {\n return core._coercedBoolean(schemas.ZodBoolean, params);\n}\nexport function bigint(params) {\n return core._coercedBigint(schemas.ZodBigInt, params);\n}\nexport function date(params) {\n return core._coercedDate(schemas.ZodDate, params);\n}\n","export * as core from \"../core/index.js\";\nexport * from \"./schemas.js\";\nexport * from \"./checks.js\";\nexport * from \"./errors.js\";\nexport * from \"./parse.js\";\nexport * from \"./compat.js\";\n// zod-specified\nimport { config } from \"../core/index.js\";\nimport en from \"../locales/en.js\";\nconfig(en());\nexport { globalRegistry, registry, config, $output, $input, $brand, clone, regexes, treeifyError, prettifyError, formatError, flattenError, TimePrecision, util, NEVER, } from \"../core/index.js\";\nexport { toJSONSchema } from \"../core/json-schema-processors.js\";\nexport { fromJSONSchema } from \"./from-json-schema.js\";\nexport * as locales from \"../locales/index.js\";\n// iso\n// must be exported from top-level\n// https://github.com/colinhacks/zod/issues/4491\nexport { ZodISODateTime, ZodISODate, ZodISOTime, ZodISODuration } from \"./iso.js\";\nexport * as iso from \"./iso.js\";\nexport * as coerce from \"./coerce.js\";\n","import * as z from \"./external.js\";\nexport { z };\nexport * from \"./external.js\";\nexport default z;\n","import z4 from \"./classic/index.js\";\nexport * from \"./classic/index.js\";\nexport default z4;\n","import { z } from \"zod/v4\";\n\nconst schema = z\n .object({\n ci: z.boolean().default(false),\n debug: z.boolean().default(false),\n localBuild: z.boolean().default(false),\n baseCommand: z.enum([\"add\", \"init\", \"deploy\", \"upgrade\", \"remove\"]).optional().catch(undefined),\n appType: z.enum([\"browser\", \"webviewer\"]).optional().catch(undefined),\n ui: z.enum([\"shadcn\", \"mantine\"]).optional().catch(\"mantine\"),\n projectDir: z.string().default(process.cwd()),\n authType: z.enum([\"clerk\", \"fmaddon\"]).optional(),\n emailProvider: z.enum([\"plunk\", \"resend\", \"none\"]).optional(),\n dataSource: z.enum([\"filemaker\", \"none\"]).optional(),\n })\n .passthrough();\n\ntype ProgramState = z.infer<typeof schema>;\nexport let state: ProgramState = schema.parse({});\n\nexport function initProgramState(args: unknown) {\n const parsed = schema.safeParse(args);\n if (parsed.success) {\n state = { ...state, ...parsed.data };\n }\n}\n","export type PackageManager = \"npm\" | \"pnpm\" | \"yarn\" | \"bun\";\n\nexport const getUserPkgManager: () => PackageManager = () => {\n // This environment variable is set by npm and yarn but pnpm seems less consistent\n const userAgent = process.env.npm_config_user_agent;\n\n if (userAgent) {\n if (userAgent.startsWith(\"yarn\")) {\n return \"yarn\";\n }\n if (userAgent.startsWith(\"pnpm\")) {\n return \"pnpm\";\n }\n if (userAgent.startsWith(\"bun\")) {\n return \"bun\";\n }\n return \"npm\";\n }\n // If no user agent is set, assume pnpm\n return \"pnpm\";\n};\n","import chalk from \"chalk\";\n\nexport const logger = {\n error(...args: unknown[]) {\n console.log(chalk.red(...args));\n },\n warn(...args: unknown[]) {\n console.log(chalk.yellow(...args));\n },\n info(...args: unknown[]) {\n console.log(chalk.cyan(...args));\n },\n success(...args: unknown[]) {\n console.log(chalk.green(...args));\n },\n dim(...args: unknown[]) {\n console.log(chalk.dim(...args));\n },\n};\n","import chalk from \"chalk\";\nimport { execa, type StdoutStderrOption } from \"execa\";\nimport ora, { type Ora } from \"ora\";\n\nimport { state } from \"~/state.js\";\nimport { getUserPkgManager, type PackageManager } from \"~/utils/getUserPkgManager.js\";\nimport { logger } from \"~/utils/logger.js\";\n\nconst execWithSpinner = async (\n projectDir: string,\n pkgManager: PackageManager | \"pnpx\" | \"bunx\",\n options: {\n args?: string[];\n stdout?: StdoutStderrOption;\n onDataHandle?: (spinner: Ora) => (data: Buffer) => void;\n loadingMessage?: string;\n },\n) => {\n const { onDataHandle, args = [\"install\"], stdout = \"pipe\" } = options;\n\n if (process.env.PROOFKIT_ENV === \"development\") {\n args.push(\"--prefer-offline\");\n }\n\n const spinner = ora(options.loadingMessage ?? `Running ${pkgManager} ${args.join(\" \")} ...`).start();\n const subprocess = execa(pkgManager, args, {\n cwd: projectDir,\n stdout,\n stderr: \"pipe\", // Capture stderr to get error messages\n });\n\n await new Promise<void>((res, rej) => {\n let stdoutOutput = \"\";\n let stderrOutput = \"\";\n\n if (onDataHandle) {\n subprocess.stdout?.on(\"data\", onDataHandle(spinner));\n } else {\n // If no custom handler, capture stdout for error reporting\n subprocess.stdout?.on(\"data\", (data) => {\n stdoutOutput += data.toString();\n });\n }\n\n // Capture stderr output for error reporting\n subprocess.stderr?.on(\"data\", (data) => {\n stderrOutput += data.toString();\n });\n\n subprocess.on(\"error\", (e) => rej(e));\n subprocess.on(\"close\", (code) => {\n if (code === 0) {\n res();\n } else {\n // Combine stdout and stderr for complete error message\n const combinedOutput = [stdoutOutput, stderrOutput]\n .filter((output) => output.trim())\n .join(\"\\n\")\n .trim()\n // Remove spinner-related lines that aren't useful in error output\n .replace(/^- Checking registry\\.$/gm, \"\")\n .replace(/^\\s*$/gm, \"\") // Remove empty lines\n .trim();\n\n const errorMessage = combinedOutput || `Command failed with exit code ${code}: ${pkgManager} ${args.join(\" \")}`;\n rej(new Error(errorMessage));\n }\n });\n });\n\n return spinner;\n};\n\nconst runInstallCommand = async (pkgManager: PackageManager, projectDir: string): Promise<Ora | null> => {\n switch (pkgManager) {\n // When using npm, inherit the stderr stream so that the progress bar is shown\n case \"npm\":\n await execa(pkgManager, [\"install\"], {\n cwd: projectDir,\n stderr: \"inherit\",\n });\n\n return null;\n // When using yarn or pnpm, use the stdout stream and ora spinner to show the progress\n case \"pnpm\":\n return execWithSpinner(projectDir, pkgManager, {\n onDataHandle: (spinner) => (data) => {\n const text = data.toString();\n\n if (text.includes(\"Progress\")) {\n spinner.text = text.includes(\"|\") ? (text.split(\" | \")[1] ?? \"\") : text;\n }\n },\n });\n case \"yarn\":\n return execWithSpinner(projectDir, pkgManager, {\n onDataHandle: (spinner) => (data) => {\n spinner.text = data.toString();\n },\n });\n // When using bun, the stdout stream is ignored and the spinner is shown\n case \"bun\":\n return execWithSpinner(projectDir, pkgManager, { stdout: \"ignore\" });\n default:\n throw new Error(`Unknown package manager: ${pkgManager}`);\n }\n};\n\nexport const installDependencies = async (args?: { projectDir?: string }) => {\n const { projectDir = state.projectDir } = args ?? {};\n logger.info(\"Installing dependencies...\");\n const pkgManager = getUserPkgManager();\n\n const installSpinner = await runInstallCommand(pkgManager, projectDir);\n\n // If the spinner was used to show the progress, use succeed method on it\n // If not, use the succeed on a new spinner\n (installSpinner ?? ora()).succeed(chalk.green(\"Successfully installed dependencies!\\n\"));\n};\n\nexport const runExecCommand = async ({\n command,\n projectDir = state.projectDir,\n successMessage,\n errorMessage,\n loadingMessage,\n}: {\n command: string[];\n projectDir?: string;\n successMessage?: string;\n errorMessage?: string;\n loadingMessage?: string;\n}) => {\n let spinner: Ora | null = null;\n\n try {\n spinner = await _runExecCommand({\n projectDir,\n command,\n loadingMessage,\n });\n\n // If the spinner was used to show the progress, use succeed method on it\n // If not, use the succeed on a new spinner\n (spinner ?? ora()).succeed(\n chalk.green(successMessage ? `${successMessage}\\n` : `Successfully ran ${command.join(\" \")}!\\n`),\n );\n } catch (error) {\n // If we have a spinner, fail it, otherwise just throw the error\n if (spinner) {\n const failMessage = errorMessage || `Failed to run ${command.join(\" \")}`;\n spinner.fail(chalk.red(failMessage));\n }\n throw error;\n }\n};\n\nexport const _runExecCommand = async ({\n projectDir,\n command,\n loadingMessage,\n}: {\n projectDir: string;\n exec?: boolean;\n command: string[];\n loadingMessage?: string;\n}): Promise<Ora | null> => {\n const pkgManager = getUserPkgManager();\n switch (pkgManager) {\n // When using npm, capture both stdout and stderr to show error messages\n case \"npm\": {\n const result = await execa(\"npx\", [...command], {\n cwd: projectDir,\n stdout: \"pipe\",\n stderr: \"pipe\",\n reject: false,\n });\n\n if (result.exitCode !== 0) {\n // Combine stdout and stderr for complete error message\n const combinedOutput = [result.stdout, result.stderr]\n .filter((output) => output?.trim())\n .join(\"\\n\")\n .trim()\n // Remove spinner-related lines that aren't useful in error output\n .replace(/^- Checking registry\\.$/gm, \"\")\n .replace(/^\\s*$/gm, \"\") // Remove empty lines\n .trim();\n\n const errorMessage =\n combinedOutput || `Command failed with exit code ${result.exitCode}: npx ${command.join(\" \")}`;\n throw new Error(errorMessage);\n }\n\n return null;\n }\n // When using yarn or pnpm, use the stdout stream and ora spinner to show the progress\n case \"pnpm\": {\n // For shadcn commands, don't use progress handler to capture full output\n const isInstallCommand = command.includes(\"install\");\n return execWithSpinner(projectDir, \"pnpm\", {\n args: [\"dlx\", ...command],\n loadingMessage,\n onDataHandle: isInstallCommand\n ? (spinner) => (data) => {\n const text = data.toString();\n\n if (text.includes(\"Progress\")) {\n spinner.text = text.includes(\"|\") ? (text.split(\" | \")[1] ?? \"\") : text;\n }\n }\n : undefined,\n });\n }\n case \"yarn\": {\n // For shadcn commands, don't use progress handler to capture full output\n const isYarnInstallCommand = command.includes(\"install\");\n return execWithSpinner(projectDir, pkgManager, {\n args: [...command],\n loadingMessage,\n onDataHandle: isYarnInstallCommand\n ? (spinner) => (data) => {\n spinner.text = data.toString();\n }\n : undefined,\n });\n }\n // When using bun, the stdout stream is ignored and the spinner is shown\n case \"bun\":\n return execWithSpinner(projectDir, \"bunx\", {\n stdout: \"ignore\",\n args: [...command],\n loadingMessage,\n });\n default:\n throw new Error(`Unknown package manager: ${pkgManager}`);\n }\n};\n\nexport function generateRandomSecret(): string {\n return crypto.randomUUID().replace(/-/g, \"\");\n}\n","import {\n getFmdapiVersion,\n getNodeMajorVersion,\n getProofkitBetterAuthVersion,\n getVersion,\n} from \"~/utils/getProofKitVersion.js\";\n\n/*\n * This maps the necessary packages to a version.\n * This improves performance significantly over fetching it from the npm registry.\n */\nexport const dependencyVersionMap = {\n // NextAuth.js\n \"next-auth\": \"beta\",\n \"next-auth-adapter-filemaker\": \"beta\",\n\n \"@auth/prisma-adapter\": \"^1.6.0\",\n \"@auth/drizzle-adapter\": \"^1.1.0\",\n\n // Prisma\n prisma: \"^5.14.0\",\n \"@prisma/client\": \"^5.14.0\",\n \"@prisma/adapter-planetscale\": \"^5.14.0\",\n\n // Drizzle\n \"drizzle-orm\": \"^0.30.10\",\n \"drizzle-kit\": \"^0.21.4\",\n mysql2: \"^3.9.7\",\n \"@planetscale/database\": \"^1.18.0\",\n postgres: \"^3.4.4\",\n \"@libsql/client\": \"^0.6.0\",\n\n // TailwindCSS\n tailwindcss: \"^4.1.10\",\n postcss: \"^8.4.41\",\n \"@tailwindcss/postcss\": \"^4.1.10\",\n \"class-variance-authority\": \"^0.7.1\",\n clsx: \"^2.1.1\",\n \"tailwind-merge\": \"^3.3.1\",\n \"tw-animate-css\": \"^1.3.4\",\n\n // tRPC\n \"@trpc/client\": \"^11.0.0-rc.446\",\n \"@trpc/server\": \"^11.0.0-rc.446\",\n \"@trpc/react-query\": \"^11.0.0-rc.446\",\n \"@trpc/next\": \"^11.0.0-rc.446\",\n superjson: \"^2.2.1\",\n \"server-only\": \"^0.0.1\",\n\n // Clerk\n \"@clerk/nextjs\": \"^6.3.1\",\n \"@clerk/themes\": \"^2.1.33\",\n\n // FileMaker Data API\n \"@proofkit/fmdapi\": `^${getFmdapiVersion()}`,\n\n // ProofKit\n \"@proofkit/cli\": `^${getVersion()}`,\n\n // Tanstack Query\n \"@tanstack/react-query\": \"^5.59.0\",\n \"@tanstack/react-query-devtools\": \"^5.59.0\",\n\n // ProofKit Auth\n \"@node-rs/argon2\": \"^2.0.2\",\n \"@oslojs/binary\": \"^1.0.0\",\n \"@oslojs/crypto\": \"^1.0.1\",\n \"@oslojs/encoding\": \"^1.1.0\",\n \"js-cookie\": \"^3.0.5\",\n \"@types/js-cookie\": \"^3.0.6\",\n\n // React Email\n \"@react-email/components\": \"^0.5.0\",\n \"@react-email/render\": \"1.2.0\",\n \"@react-email/preview-server\": \"^4.2.8\",\n \"@plunk/node\": \"^3.0.3\",\n \"react-email\": \"^4.2.8\",\n resend: \"^4.0.0\",\n \"@sendgrid/mail\": \"^8.1.4\",\n\n // Node\n \"@types/node\": `^${getNodeMajorVersion()}`,\n\n // Radix (for shadcn/ui)\n \"@radix-ui/react-slot\": \"^1.2.3\",\n\n // Icons (for shadcn/ui)\n \"lucide-react\": \"^0.518.0\",\n\n // better-auth\n \"better-auth\": \"^1.3.4\",\n \"@proofkit/better-auth\": `${getProofkitBetterAuthVersion()}`,\n \"@daveyplate/better-auth-ui\": \"^2.1.3\",\n\n // Mantine UI\n \"@mantine/core\": \"^7.15.0\",\n \"@mantine/dates\": \"^7.15.0\",\n \"@mantine/hooks\": \"^7.15.0\",\n \"@mantine/modals\": \"^7.15.0\",\n \"@mantine/notifications\": \"^7.15.0\",\n \"mantine-react-table\": \"^2.0.0\",\n\n // Theme utilities\n \"next-themes\": \"^0.4.6\",\n\n // Zod\n zod: \"^4\",\n} as const;\nexport type AvailableDependencies = keyof typeof dependencyVersionMap;\n","import path from \"node:path\";\nimport fs from \"fs-extra\";\nimport sortPackageJson from \"sort-package-json\";\nimport type { PackageJson } from \"type-fest\";\n\nimport { type AvailableDependencies, dependencyVersionMap } from \"~/installers/dependencyVersionMap.js\";\nimport { state } from \"~/state.js\";\n\nexport const addPackageDependency = (opts: {\n dependencies: AvailableDependencies[];\n devMode: boolean;\n projectDir?: string;\n}) => {\n const { dependencies, devMode, projectDir = state.projectDir } = opts;\n\n const pkgJson = fs.readJSONSync(path.join(projectDir, \"package.json\")) as PackageJson;\n\n for (const pkgName of dependencies) {\n const version = dependencyVersionMap[pkgName];\n\n if (devMode && pkgJson.devDependencies) {\n pkgJson.devDependencies[pkgName] = version;\n } else if (pkgJson.dependencies) {\n pkgJson.dependencies[pkgName] = version;\n }\n }\n const sortedPkgJson = sortPackageJson(pkgJson);\n\n fs.writeJSONSync(path.join(projectDir, \"package.json\"), sortedPkgJson, {\n spaces: 2,\n });\n};\n","import path from \"node:path\";\nimport fs from \"fs-extra\";\n\nimport type { Installer } from \"~/installers/index.js\";\nimport { state } from \"~/state.js\";\nimport { logger } from \"~/utils/logger.js\";\n\nexport type FMAuthKeys = { username: string; password: string } | { ottoApiKey: string };\n\nexport const initEnvFile: Installer = () => {\n const envFilePath = findT3EnvFile(false) ?? \"./src/config/env.ts\";\n\n const envContent = `\n# When adding additional environment variables, the schema in \"${envFilePath}\"\n# should be updated accordingly.\n\n`\n .trim()\n .concat(\"\\n\");\n\n const envDest = path.join(state.projectDir, \".env\");\n\n fs.writeFileSync(envDest, envContent, \"utf-8\");\n};\nexport function findT3EnvFile(throwIfNotFound: false): string | null;\nexport function findT3EnvFile(throwIfNotFound?: true): string;\nexport function findT3EnvFile(throwIfNotFound?: boolean): string | null {\n const possiblePaths = [\"src/config/env.ts\", \"src/lib/env.ts\", \"src/env.ts\", \"lib/env.ts\", \"env.ts\", \"config/env.ts\"];\n\n for (const testPath of possiblePaths) {\n const fullPath = path.join(state.projectDir, testPath);\n if (fs.existsSync(fullPath)) {\n return fullPath;\n }\n }\n\n if (throwIfNotFound === false) {\n return null;\n }\n\n logger.warn(`Could not find T3 env files. Run \"proofkit add utils/t3-env\" to initialize them.`);\n throw new Error(\"T3 env file not found\");\n}\n","import { execa } from \"execa\";\nimport type { Project } from \"ts-morph\";\n\nimport { state } from \"~/state.js\";\n\n/**\n * Formats all source files in a ts-morph Project using biome and saves the changes.\n * @param project The ts-morph Project containing the files to format\n */\nexport async function formatAndSaveSourceFiles(project: Project) {\n await project.save(); // save files first\n try {\n // Run biome format on the project directory\n await execa(\"npx\", [\"@biomejs/biome\", \"format\", \"--write\", state.projectDir], {\n cwd: state.projectDir,\n });\n } catch (error) {\n if (state.debug) {\n console.log(\"Error formatting files with biome\");\n console.error(error);\n }\n // Continue even if formatting fails\n }\n}\n","import path from \"node:path\";\nimport { Project, type ReturnStatement, SyntaxKind } from \"ts-morph\";\n\nexport { formatAndSaveSourceFiles } from \"./formatting.js\";\n\nexport function ensureReturnStatementIsWrappedInFragment(returnStatement: ReturnStatement | undefined) {\n const expression =\n returnStatement?.getExpressionIfKind(SyntaxKind.ParenthesizedExpression)?.getExpression() ??\n returnStatement?.getExpression();\n\n if (expression?.isKind(SyntaxKind.JsxFragment)) {\n return returnStatement;\n }\n\n returnStatement?.replaceWithText(`return <>${expression}</>;`);\n return returnStatement;\n}\n\nexport function getNewProject(projectDir?: string) {\n const project = new Project({\n tsConfigFilePath: path.join(projectDir ?? process.cwd(), \"tsconfig.json\"),\n });\n\n return project;\n}\n","import { execSync } from \"node:child_process\";\nimport path from \"node:path\";\nimport fs from \"fs-extra\";\nimport { type Project, SyntaxKind } from \"ts-morph\";\n\nimport { findT3EnvFile } from \"~/installers/envVars.js\";\nimport { state } from \"~/state.js\";\nimport { formatAndSaveSourceFiles, getNewProject } from \"./ts-morph.js\";\n\ninterface EnvSchema {\n name: string;\n zodValue: string;\n /** This value will be added to the .env file, unless `addToRuntimeEnv` is set to `false`. */\n defaultValue?: string;\n type: \"server\" | \"client\";\n addToRuntimeEnv?: boolean;\n}\n\nexport async function addToEnv({\n projectDir = state.projectDir,\n envs,\n envFileDescription,\n ...args\n}: {\n projectDir?: string;\n project?: Project;\n envs: EnvSchema[];\n envFileDescription?: string;\n}) {\n const envSchemaFile = findT3EnvFile();\n\n const project = args.project ?? getNewProject(projectDir);\n const schemaFile = project.addSourceFileAtPath(envSchemaFile);\n\n if (!schemaFile) {\n throw new Error(\"Schema file not found\");\n }\n\n // Find the createEnv call expression\n const createEnvCall = schemaFile\n .getDescendantsOfKind(SyntaxKind.CallExpression)\n .find((callExpr) => callExpr.getExpression().getText() === \"createEnv\");\n\n if (!createEnvCall) {\n throw new Error(\n \"Could not find createEnv call in schema file. Make sure you have a valid env.ts file with createEnv setup.\",\n );\n }\n\n // Get the server object property\n const opts = createEnvCall.getArguments()[0];\n if (!opts) {\n throw new Error(\"createEnv call is missing options argument\");\n }\n\n const serverProperty = opts\n .getDescendantsOfKind(SyntaxKind.PropertyAssignment)\n .find((prop) => prop.getName() === \"server\")\n ?.getFirstDescendantByKind(SyntaxKind.ObjectLiteralExpression);\n\n const clientProperty = opts\n .getDescendantsOfKind(SyntaxKind.PropertyAssignment)\n .find((prop) => prop.getName() === \"client\")\n ?.getFirstDescendantByKind(SyntaxKind.ObjectLiteralExpression);\n\n const runtimeEnvProperty = opts\n .getDescendantsOfKind(SyntaxKind.PropertyAssignment)\n .find((prop) => prop.getName() === \"experimental__runtimeEnv\")\n ?.getFirstDescendantByKind(SyntaxKind.ObjectLiteralExpression);\n\n const serverEnvs = envs.filter((env) => env.type === \"server\");\n const clientEnvs = envs.filter((env) => env.type === \"client\");\n\n for (const env of serverEnvs) {\n serverProperty?.addPropertyAssignment({\n name: env.name,\n initializer: env.zodValue,\n });\n }\n\n for (const env of clientEnvs) {\n clientProperty?.addPropertyAssignment({\n name: env.name,\n initializer: env.zodValue,\n });\n\n runtimeEnvProperty?.addPropertyAssignment({\n name: env.name,\n initializer: `process.env.${env.name}`,\n });\n }\n\n const envsString = envs\n .filter((env) => env.addToRuntimeEnv ?? true)\n .map((env) => `${env.name}=${env.defaultValue ?? \"\"}`)\n .join(\"\\n\");\n\n const dotEnvFile = path.join(projectDir, \".env\");\n\n // Only handle .env file if it already exists\n if (fs.existsSync(dotEnvFile)) {\n const currentFile = fs.readFileSync(dotEnvFile, \"utf-8\");\n\n // Ensure .env is in .gitignore using command line\n const gitIgnoreFile = path.join(projectDir, \".gitignore\");\n try {\n let gitIgnoreContent = \"\";\n if (fs.existsSync(gitIgnoreFile)) {\n gitIgnoreContent = fs.readFileSync(gitIgnoreFile, \"utf-8\");\n }\n\n if (!gitIgnoreContent.includes(\".env\")) {\n execSync(`echo \".env\" >> \"${gitIgnoreFile}\"`, { cwd: projectDir });\n }\n } catch (_error) {\n // Silently ignore gitignore errors\n }\n\n const newContent = `${currentFile}\n${envFileDescription ? `# ${envFileDescription}\\n${envsString}` : envsString}\n `;\n\n fs.writeFileSync(dotEnvFile, newContent);\n }\n\n if (!args.project) {\n await formatAndSaveSourceFiles(project);\n }\n\n return schemaFile;\n}\n","import { type SourceFile, SyntaxKind } from \"ts-morph\";\n\nimport { ensureReturnStatementIsWrappedInFragment } from \"~/utils/ts-morph.js\";\n\nexport function addToHeaderSlot(slotSourceFile: SourceFile, importFrom: string) {\n slotSourceFile.addImportDeclaration({\n defaultImport: \"UserMenu\",\n moduleSpecifier: importFrom,\n });\n\n // ensure Group from @mantine/core is imported\n const mantineCoreImport = slotSourceFile.getImportDeclaration(\n (dec) => dec.getModuleSpecifierValue() === \"@mantine/core\",\n );\n if (mantineCoreImport) {\n const groupImport = mantineCoreImport.getNamedImports().find((imp) => imp.getName() === \"Group\");\n\n if (!groupImport) {\n mantineCoreImport.addNamedImport({ name: \"Group\" });\n }\n } else {\n slotSourceFile.addImportDeclaration({\n namedImports: [{ name: \"Group\" }],\n moduleSpecifier: \"@mantine/core\",\n });\n }\n\n const returnStatement = ensureReturnStatementIsWrappedInFragment(\n slotSourceFile\n .getFunction((dec) => dec.isDefaultExport())\n ?.getBody()\n ?.getFirstDescendantByKind(SyntaxKind.ReturnStatement),\n );\n\n const existingElements = returnStatement\n ?.getFirstDescendantByKind(SyntaxKind.JsxOpeningFragment)\n ?.getParentIfKind(SyntaxKind.JsxFragment)\n ?.getFirstDescendantByKind(SyntaxKind.SyntaxList)\n ?.getText();\n\n if (!existingElements) {\n console.log(`Failed to inject into header slot at ${slotSourceFile.getFilePath()}`);\n return;\n }\n\n returnStatement?.replaceWithText(`return (<><Group>${existingElements}<UserMenu /></Group></>)`);\n returnStatement?.formatText();\n slotSourceFile.saveSync();\n}\n","import path from \"node:path\";\nimport chalk from \"chalk\";\nimport fs from \"fs-extra\";\nimport { type SourceFile, SyntaxKind } from \"ts-morph\";\n\nimport { PKG_ROOT } from \"~/consts.js\";\nimport { addPackageDependency } from \"~/utils/addPackageDependency.js\";\nimport { addToEnv } from \"~/utils/addToEnvs.js\";\nimport { formatAndSaveSourceFiles, getNewProject } from \"~/utils/ts-morph.js\";\nimport { addToHeaderSlot } from \"./auth-shared.js\";\n\nexport const clerkInstaller = async ({ projectDir }: { projectDir: string }) => {\n addPackageDependency({\n projectDir,\n dependencies: [\"@clerk/nextjs\", \"@clerk/themes\"],\n devMode: false,\n });\n\n // add clerk middleware\n // check if middleware already exists, if not add it\n const extrasDir = path.join(PKG_ROOT, \"template/extras\");\n\n const middlewareDest = path.join(projectDir, \"src/middleware.ts\");\n if (fs.existsSync(middlewareDest)) {\n // throw new Error(\"Middleware already exists\");\n console.log(\n chalk.yellow(\n \"Middleware already exists. To require auth for your app, be sure to follow the guide to setup Clerk middleware. https://clerk.com/docs/references/nextjs/clerk-middleware#clerk-middleware-next-js\",\n ),\n );\n } else {\n const middlewareSrc = path.join(extrasDir, \"src/middleware/clerk.ts\");\n fs.copySync(middlewareSrc, middlewareDest);\n }\n\n // copy auth pages\n fs.copySync(path.join(extrasDir, \"src/app/clerk-auth\"), path.join(projectDir, \"src/app/auth\"));\n\n // copy auth components\n fs.copySync(path.join(extrasDir, \"src/components/clerk-auth\"), path.join(projectDir, \"src/components/clerk-auth\"));\n\n // add ClerkProvider to app layout\n const layoutFile = path.join(projectDir, \"src/app/layout.tsx\");\n const project = getNewProject(projectDir);\n addClerkProvider(project.addSourceFileAtPath(layoutFile));\n\n // inject signin/signout components to header slots\n addToHeaderSlot(\n project.addSourceFileAtPath(path.join(projectDir, \"src/components/AppShell/slot-header-right.tsx\")),\n \"@/components/clerk-auth/user-menu\",\n );\n addToHeaderSlot(\n project.addSourceFileAtPath(path.join(projectDir, \"src/components/AppShell/slot-header-mobile-content.tsx\")),\n \"@/components/clerk-auth/user-menu-mobile\",\n );\n\n addToSafeActionClient(project.addSourceFileAtPathIfExists(path.join(projectDir, \"src/server/safe-action.ts\")));\n\n // add envs to .env and .env.schema\n await addToEnv({\n projectDir,\n project,\n envs: [\n {\n name: \"NEXT_PUBLIC_CLERK_SIGN_IN_URL\",\n zodValue: \"z.string()\",\n defaultValue: \"/auth/signin\",\n type: \"client\",\n },\n {\n name: \"NEXT_PUBLIC_CLERK_SIGN_UP_URL\",\n zodValue: \"z.string()\",\n defaultValue: \"/auth/signup\",\n type: \"client\",\n },\n {\n name: \"CLERK_SECRET_KEY\",\n zodValue: `z.string().startsWith('sk_').min(1, {\n message:\n \"No Clerk Secret Key found. Did you create your Clerk app and copy the environment variables to you .env file?\",\n })`,\n type: \"server\",\n },\n {\n name: \"NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY\",\n zodValue: `z.string().startsWith('pk_').min(1, {\n message:\n \"No Clerk Public Key found. Did you create your Clerk app and copy the environment variables to you .env file?\",\n })`,\n type: \"client\",\n },\n ],\n envFileDescription:\n \"Hosted auth with Clerk. Set up a new app at https://dashboard.clerk.com/apps/new to get these values.\",\n });\n\n await formatAndSaveSourceFiles(project);\n};\n\nexport function addClerkProvider(sourceFile: SourceFile) {\n sourceFile.addImportDeclaration({\n namedImports: [{ name: \"ClerkAuthProvider\" }],\n moduleSpecifier: \"@/components/clerk-auth/clerk-provider\",\n });\n\n // Step 2: Wrap default exported function's return statement with ClerkProvider\n const exportDefault = sourceFile.getFunction((dec) => dec.isDefaultExport());\n\n // find the mantine provider in this export\n const mantineProvider = exportDefault\n ?.getBody()\n ?.getFirstDescendantByKind(SyntaxKind.ReturnStatement)\n ?.getDescendantsOfKind(SyntaxKind.JsxOpeningElement)\n .find((openingElement) => openingElement.getTagNameNode().getText() === \"MantineProvider\")\n ?.getParentIfKind(SyntaxKind.JsxElement);\n\n const childrenText = mantineProvider\n ?.getJsxChildren()\n .map((child) => child.getText())\n .filter(Boolean)\n .join(\"\\n\");\n\n mantineProvider?.getChildSyntaxList()?.replaceWithText(\n `<ClerkAuthProvider>\n ${childrenText}\n </ClerkAuthProvider>`,\n );\n}\n\nfunction addToSafeActionClient(sourceFile?: SourceFile) {\n if (!sourceFile) {\n console.log(chalk.yellow(\"Failed to inject into safe-action-client. Did you move the safe-action.ts file?\"));\n return;\n }\n\n sourceFile.addImportDeclaration({\n namedImports: [{ name: \"auth\", alias: \"getAuth\" }],\n moduleSpecifier: \"@clerk/nextjs/server\",\n });\n\n // add to end of file\n sourceFile.addStatements((writer) =>\n writer.writeLine(`export const authedActionClient = actionClient.use(async ({ next, ctx }) => {\n const auth = getAuth();\n if (!auth.userId) {\n throw new Error(\"Unauthorized\");\n }\n return next({ ctx: { ...ctx, auth } });\n});\n\n`),\n );\n}\n","import DataApi, { type clientTypes, OttoAdapter, type OttoAPIKey } from \"@proofkit/fmdapi\";\n\nexport async function getLayouts({\n dataApiKey,\n fmFile,\n server,\n}: {\n dataApiKey: OttoAPIKey;\n fmFile: string;\n server: string;\n}) {\n const DapiClient = DataApi({\n adapter: new OttoAdapter({\n auth: { apiKey: dataApiKey },\n db: fmFile,\n server,\n }),\n layout: \"\",\n });\n\n const layoutsResp = await DapiClient.layouts();\n\n const layouts = transformLayoutList(layoutsResp.layouts);\n\n return layouts;\n}\n\nfunction getAllLayoutNames(layout: clientTypes.LayoutOrFolder): string[] {\n if (\"isFolder\" in layout) {\n return (layout.folderLayoutNames ?? []).flatMap(getAllLayoutNames);\n }\n return [layout.name];\n}\n\nexport const commonFileMakerLayoutPrefixes = [\"API_\", \"API \", \"dapi_\", \"dapi\"];\n\nexport function transformLayoutList(layouts: clientTypes.LayoutOrFolder[]): string[] {\n const flatList = layouts.flatMap(getAllLayoutNames);\n\n // sort the list so that any values that begin with one of the prefixes are at the top\n\n const sortedList = flatList.sort((a, b) => {\n const aPrefix = commonFileMakerLayoutPrefixes.find((prefix) => a.startsWith(prefix));\n const bPrefix = commonFileMakerLayoutPrefixes.find((prefix) => b.startsWith(prefix));\n if (aPrefix && bPrefix) {\n return a.localeCompare(b);\n }\n if (aPrefix) {\n return -1;\n }\n if (bPrefix) {\n return 1;\n }\n return a.localeCompare(b);\n });\n return sortedList;\n}\n","import path from \"node:path\";\nimport fs from \"fs-extra\";\nimport { z } from \"zod/v4\";\n\nimport { state } from \"~/state.js\";\n\nconst authSchema = z\n .discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"clerk\"),\n }),\n z.object({\n type: z.literal(\"next-auth\"),\n }),\n z.object({\n type: z.literal(\"proofkit\").transform(() => \"fmaddon\"),\n }),\n z.object({\n type: z.literal(\"fmaddon\"),\n }),\n z.object({\n type: z.literal(\"better-auth\"),\n }),\n z.object({\n type: z.literal(\"none\"),\n }),\n ])\n .default({ type: \"none\" });\n\nexport const envNamesSchema = z.object({\n database: z.string().default(\"FM_DATABASE\"),\n server: z.string().default(\"FM_SERVER\"),\n apiKey: z.string().default(\"OTTO_API_KEY\"),\n});\nexport const dataSourceSchema = z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"fm\"),\n name: z.string(),\n envNames: envNamesSchema,\n }),\n z.object({\n type: z.literal(\"supabase\"),\n name: z.string(),\n }),\n]);\nexport type DataSource = z.infer<typeof dataSourceSchema>;\n\nexport const appTypes = [\"browser\", \"webviewer\"] as const;\n\nexport const uiTypes = [\"shadcn\", \"mantine\"] as const;\nexport type Ui = (typeof uiTypes)[number];\n\nconst settingsSchema = z.discriminatedUnion(\"ui\", [\n z.object({\n ui: z.literal(\"mantine\"),\n appType: z.enum(appTypes).default(\"browser\"),\n auth: authSchema,\n envFile: z.string().optional(),\n dataSources: z.array(dataSourceSchema).default([]),\n tanstackQuery: z.boolean().catch(false),\n replacedMainPage: z.boolean().catch(false),\n // Whether React Email scaffolding has been installed\n reactEmail: z.boolean().catch(false),\n // Whether provider-specific server email sender files have been installed\n reactEmailServer: z.boolean().catch(false),\n appliedUpgrades: z.array(z.string()).default([]),\n registryUrl: z.url().optional(),\n registryTemplates: z.array(z.string()).default([]),\n }),\n z.object({\n ui: z.literal(\"shadcn\"),\n appType: z.enum(appTypes).default(\"browser\"),\n envFile: z.string().optional(),\n dataSources: z.array(dataSourceSchema).default([]),\n replacedMainPage: z.boolean().catch(false),\n registryUrl: z.url().optional(),\n registryTemplates: z.array(z.string()).default([]),\n }),\n]);\n\nexport const defaultSettings = settingsSchema.parse({\n auth: { type: \"none\" },\n ui: \"shadcn\",\n appType: \"browser\",\n dataSources: [],\n replacedMainPage: false,\n registryTemplates: [],\n});\n\nlet settings: Settings | undefined;\nexport const getSettings = () => {\n if (settings) {\n return settings;\n }\n\n const settingsPath = path.join(state.projectDir, \"proofkit.json\");\n\n // Check if the settings file exists before trying to read it\n if (!fs.existsSync(settingsPath)) {\n throw new Error(`ProofKit settings file not found at: ${settingsPath}`);\n }\n\n let settingsFile: unknown = fs.readJSONSync(settingsPath);\n\n if (typeof settingsFile === \"object\" && settingsFile !== null && !(\"ui\" in settingsFile)) {\n settingsFile = { ...settingsFile, ui: \"mantine\" };\n }\n\n const parsed = settingsSchema.parse(settingsFile);\n\n state.appType = parsed.appType;\n return parsed;\n};\n\nexport type Settings = z.infer<typeof settingsSchema>;\n\nexport function mergeSettings(_settings: Partial<Settings>) {\n const settings = getSettings();\n const merged = { ...settings, ..._settings };\n const validated = settingsSchema.parse(merged);\n setSettings(validated);\n}\n\nexport function setSettings(_settings: Settings) {\n fs.writeJSONSync(path.join(state.projectDir, \"proofkit.json\"), _settings, {\n spaces: 2,\n });\n settings = _settings;\n return settings;\n}\n\n/**\n * Validates and sets the envFile in settings only if the file exists.\n * Used during stealth initialization to avoid setting non-existent env files.\n */\nexport function validateAndSetEnvFile(envFileName = \".env\") {\n const settings = getSettings();\n const envFilePath = path.join(state.projectDir, envFileName);\n\n if (fs.existsSync(envFilePath)) {\n const updatedSettings = { ...settings, envFile: envFileName };\n setSettings(updatedSettings);\n return envFileName;\n }\n\n // If no env file exists, ensure envFile is undefined in settings\n if (settings.envFile) {\n const { envFile, ...settingsWithoutEnvFile } = settings;\n setSettings(settingsWithoutEnvFile as Settings);\n }\n\n return undefined;\n}\n","// import { isCancel } from \"@clack/core\";\n\nimport path from \"node:path\";\nimport { cancel, isCancel } from \"@clack/prompts\";\nimport chalk from \"chalk\";\nimport fs from \"fs-extra\";\nimport z, { ZodError } from \"zod/v4\";\n\nimport { npmName } from \"~/consts.js\";\nimport { getSettings } from \"~/utils/parseSettings.js\";\n\n/**\n * Runs before any add command is run. Checks if the user is in a ProofKit project and if the\n * proofkit.json file is valid.\n */\nexport const ensureProofKitProject = ({ commandName }: { commandName: string }) => {\n const settingsExists = fs.existsSync(path.join(process.cwd(), \"proofkit.json\"));\n if (!settingsExists) {\n console.log(\n chalk.yellow(\n `The \"${commandName}\" command requires an existing ProofKit project.\nPlease run \" ${npmName} init\" first, or try this command again when inside a ProofKit project.`,\n ),\n );\n process.exit(1);\n }\n\n try {\n return getSettings();\n } catch (error) {\n console.log(chalk.red(\"Error parsing ProofKit settings file:\"));\n if (error instanceof ZodError) {\n console.log(z.prettifyError(error));\n } else {\n console.log(error);\n }\n\n process.exit(1);\n }\n};\n\nexport class UserAbortedError extends Error {}\nexport function abortIfCancel(value: symbol | string): string;\nexport function abortIfCancel<T extends boolean>(value: symbol | T): T;\nexport function abortIfCancel<T extends string | boolean>(value: T | symbol): T {\n if (isCancel(value)) {\n cancel();\n throw new UserAbortedError();\n }\n return value;\n}\n","import path from \"node:path\";\nimport { generateTypedClients } from \"@proofkit/typegen\";\nimport type { typegenConfigSingle } from \"@proofkit/typegen/config\";\nimport { config as dotenvConfig } from \"dotenv\";\nimport fs from \"fs-extra\";\nimport { applyEdits, modify, parse as parseJsonc } from \"jsonc-parser\";\nimport { SyntaxKind } from \"ts-morph\";\nimport type { z } from \"zod/v4\";\n\nimport { state } from \"~/state.js\";\nimport { type envNamesSchema, getSettings } from \"~/utils/parseSettings.js\";\nimport { getNewProject } from \"~/utils/ts-morph.js\";\n\n// Input schema for functions like addLayout\n// This might be different from the layout config stored in the file\ninterface Schema {\n layoutName: string;\n schemaName: string;\n valueLists?: \"strict\" | \"allowEmpty\" | \"ignore\";\n generateClient?: boolean;\n strictNumbers?: boolean;\n}\n\n// For any data source configuration object (fmdapi or fmodata)\ntype AnyDataSourceConfig = z.infer<typeof typegenConfigSingle>;\n// For a single fmdapi data source configuration object\ntype FmdapiDataSourceConfig = Extract<AnyDataSourceConfig, { type: \"fmdapi\" }>;\n// For a single layout configuration object within a data source\ntype ImportedLayoutConfig = FmdapiDataSourceConfig[\"layouts\"][number];\n\n// This type represents the actual structure of the JSONC file, including $schema\ninterface FullProofkitTypegenJsonFile {\n $schema?: string;\n config: AnyDataSourceConfig | AnyDataSourceConfig[];\n}\n\n// Helper function to normalize data sources by adding default type for backwards compatibility\n// This mirrors the zod preprocess in @proofkit/typegen that defaults type to \"fmdapi\"\nfunction normalizeDataSource(ds: AnyDataSourceConfig): AnyDataSourceConfig {\n if (!(\"type\" in ds) || ds.type === undefined) {\n return { ...(ds as object), type: \"fmdapi\" } as AnyDataSourceConfig;\n }\n return ds;\n}\n\nfunction normalizeConfig(\n config: AnyDataSourceConfig | AnyDataSourceConfig[],\n): AnyDataSourceConfig | AnyDataSourceConfig[] {\n if (Array.isArray(config)) {\n return config.map(normalizeDataSource);\n }\n return normalizeDataSource(config);\n}\n\n// Helper functions for JSON config\nasync function readJsonConfigFile(configPath: string): Promise<FullProofkitTypegenJsonFile | null> {\n if (!fs.existsSync(configPath)) {\n return null;\n }\n try {\n const fileContent = await fs.readFile(configPath, \"utf8\");\n const parsed = parseJsonc(fileContent) as FullProofkitTypegenJsonFile;\n // Normalize config to add default type for backwards compatibility\n if (parsed.config) {\n parsed.config = normalizeConfig(parsed.config);\n }\n return parsed;\n } catch (error) {\n console.error(`Error reading or parsing JSONC config at ${configPath}:`, error);\n // Return a default structure for the *file* if parsing fails but file exists\n return {\n $schema: \"https://proofkit.dev/typegen-config-schema.json\",\n config: [],\n };\n }\n}\n\nasync function writeJsonConfigFile(configPath: string, fileContent: FullProofkitTypegenJsonFile) {\n // Check if file exists to preserve comments\n if (fs.existsSync(configPath)) {\n const originalText = await fs.readFile(configPath, \"utf8\");\n // Use jsonc-parser's modify function to preserve comments\n const edits = modify(originalText, [\"config\"], fileContent.config, {\n formattingOptions: {\n tabSize: 2,\n insertSpaces: true,\n eol: \"\\n\",\n },\n });\n const modifiedText = applyEdits(originalText, edits);\n await fs.writeFile(configPath, modifiedText, \"utf8\");\n } else {\n // If file doesn't exist, create it with proper formatting\n await fs.writeJson(configPath, fileContent, { spaces: 2 });\n }\n}\n\nexport async function addLayout({\n projectDir = process.cwd(),\n schemas,\n runCodegen = true,\n dataSourceName,\n}: {\n projectDir?: string;\n schemas: Schema[];\n runCodegen?: boolean;\n dataSourceName: string;\n}) {\n const jsonConfigPath = path.join(projectDir, \"proofkit-typegen.config.jsonc\");\n let fileContent = await readJsonConfigFile(jsonConfigPath);\n\n if (!fileContent) {\n fileContent = {\n $schema: \"https://proofkit.dev/typegen-config-schema.json\",\n config: [],\n };\n }\n\n // Work with the 'config' property which is TypegenConfig['config']\n const configProperty = fileContent.config;\n\n let configArray: AnyDataSourceConfig[];\n if (Array.isArray(configProperty)) {\n configArray = configProperty;\n } else {\n configArray = [configProperty];\n fileContent.config = configArray; // Update fileContent to ensure it's an array for later ops\n }\n\n const layoutsToAdd: ImportedLayoutConfig[] = schemas.map((schema) => ({\n layoutName: schema.layoutName,\n schemaName: schema.schemaName,\n valueLists: schema.valueLists,\n generateClient: schema.generateClient,\n strictNumbers: schema.strictNumbers,\n }));\n\n let targetDataSource: FmdapiDataSourceConfig | undefined = configArray.find(\n (ds): ds is FmdapiDataSourceConfig =>\n ds.type === \"fmdapi\" &&\n (ds.path?.endsWith(dataSourceName) || ds.path?.endsWith(`${dataSourceName}/`) || ds.path === dataSourceName),\n );\n\n if (targetDataSource) {\n targetDataSource.layouts = targetDataSource.layouts || [];\n } else {\n targetDataSource = {\n type: \"fmdapi\",\n layouts: [],\n path: `./src/config/schemas/${dataSourceName}`,\n // other default properties for a new DataSourceConfig can be added here if needed\n envNames: undefined,\n };\n configArray.push(targetDataSource);\n }\n\n targetDataSource.layouts.push(...layoutsToAdd);\n // fileContent.config is already pointing to configArray if it was modified\n\n await writeJsonConfigFile(jsonConfigPath, fileContent);\n\n if (runCodegen) {\n await runCodegenCommand();\n }\n}\n\nexport async function addConfig({\n config,\n projectDir,\n runCodegen = true,\n}: {\n config: FmdapiDataSourceConfig | FmdapiDataSourceConfig[];\n projectDir: string;\n runCodegen?: boolean;\n}) {\n const jsonConfigPath = path.join(projectDir, \"proofkit-typegen.config.jsonc\");\n let fileContent = await readJsonConfigFile(jsonConfigPath);\n\n const configsToAdd = Array.isArray(config) ? config : [config];\n\n if (fileContent) {\n if (Array.isArray(fileContent.config)) {\n fileContent.config.push(...configsToAdd);\n } else {\n fileContent.config = [fileContent.config, ...configsToAdd];\n }\n } else {\n fileContent = {\n $schema: \"https://proofkit.dev/typegen-config-schema.json\",\n config: configsToAdd,\n };\n }\n\n await writeJsonConfigFile(jsonConfigPath, fileContent);\n\n if (runCodegen) {\n await runCodegenCommand();\n }\n}\n\nexport async function runCodegenCommand() {\n const projectDir = state.projectDir;\n const settings = getSettings();\n if (settings.dataSources.length === 0) {\n console.log(\"no data sources found, skipping typegen\");\n return;\n }\n\n const hasFileMakerDataSources = settings.dataSources.some((ds) => ds.type === \"fm\");\n\n if (hasFileMakerDataSources) {\n const config = await readJsonConfigFile(path.join(projectDir, \"proofkit-typegen.config.jsonc\"));\n if (!config) {\n throw new Error(\"proofkit-typegen.config.jsonc not found\");\n }\n\n // make sure to load the .env file\n dotenvConfig({ path: path.join(projectDir, \".env\") });\n await generateTypedClients(config.config, { cwd: projectDir });\n }\n}\n\nexport function getClientSuffix({\n projectDir = process.cwd(),\n dataSourceName,\n}: {\n projectDir?: string;\n dataSourceName: string;\n}): string {\n const jsonConfigPath = path.join(projectDir, \"proofkit-typegen.config.jsonc\");\n if (!fs.existsSync(jsonConfigPath)) {\n return \"Client\";\n }\n try {\n const fileContent = fs.readFileSync(jsonConfigPath, \"utf8\");\n const parsed = parseJsonc(fileContent) as FullProofkitTypegenJsonFile;\n\n // Normalize config to add default type for backwards compatibility\n const normalizedConfig = normalizeConfig(parsed.config);\n const configToSearch = Array.isArray(normalizedConfig) ? normalizedConfig : [normalizedConfig];\n\n const targetDataSource = configToSearch.find(\n (ds): ds is FmdapiDataSourceConfig =>\n ds.type === \"fmdapi\" &&\n (ds.path?.endsWith(dataSourceName) || ds.path?.endsWith(`${dataSourceName}/`) || ds.path === dataSourceName),\n );\n return targetDataSource?.clientSuffix ?? \"Client\";\n } catch (error) {\n console.error(`Error reading or parsing JSONC config for getClientSuffix: ${jsonConfigPath}`, error);\n return \"Client\";\n }\n}\n\nexport function getExistingSchemas({\n projectDir = process.cwd(),\n dataSourceName,\n}: {\n projectDir?: string;\n dataSourceName: string;\n}): { layout?: string; schemaName?: string }[] {\n const jsonConfigPath = path.join(projectDir, \"proofkit-typegen.config.jsonc\");\n if (!fs.existsSync(jsonConfigPath)) {\n return [];\n }\n try {\n const fileContent = fs.readFileSync(jsonConfigPath, \"utf8\");\n const parsed = parseJsonc(fileContent) as FullProofkitTypegenJsonFile;\n\n // Normalize config to add default type for backwards compatibility\n const normalizedConfig = normalizeConfig(parsed.config);\n const configToSearch = Array.isArray(normalizedConfig) ? normalizedConfig : [normalizedConfig];\n\n const targetDataSource = configToSearch.find(\n (ds): ds is FmdapiDataSourceConfig =>\n ds.type === \"fmdapi\" &&\n (ds.path?.endsWith(dataSourceName) || ds.path?.endsWith(`${dataSourceName}/`) || ds.path === dataSourceName),\n );\n\n if (targetDataSource?.layouts) {\n return targetDataSource.layouts.map((layout) => ({\n layout: layout.layoutName,\n schemaName: layout.schemaName,\n }));\n }\n return [];\n } catch (error) {\n console.error(`Error reading or parsing JSONC config for getExistingSchemas: ${jsonConfigPath}`, error);\n return [];\n }\n}\n\nexport async function addToFmschemaConfig({\n dataSourceName,\n envNames,\n}: {\n dataSourceName: string;\n envNames?: z.infer<typeof envNamesSchema>;\n}) {\n const projectDir = state.projectDir;\n const jsonConfigPath = path.join(projectDir, \"proofkit-typegen.config.jsonc\");\n let fileContent = await readJsonConfigFile(jsonConfigPath);\n\n const newDataSource: FmdapiDataSourceConfig = {\n type: \"fmdapi\",\n layouts: [],\n path: `./src/config/schemas/${dataSourceName}`,\n envNames: undefined,\n clearOldFiles: true,\n clientSuffix: \"Layout\",\n };\n\n if (envNames) {\n newDataSource.envNames = {\n server: envNames.server,\n db: envNames.database,\n auth: { apiKey: envNames.apiKey },\n };\n }\n if (state.appType === \"webviewer\") {\n newDataSource.webviewerScriptName = \"ExecuteDataApi\";\n }\n\n if (fileContent) {\n let configArray: AnyDataSourceConfig[];\n if (Array.isArray(fileContent.config)) {\n configArray = fileContent.config;\n } else {\n configArray = [fileContent.config];\n fileContent.config = configArray;\n }\n\n const existingDsIndex = configArray.findIndex((ds) => ds.type === \"fmdapi\" && ds.path === newDataSource.path);\n if (existingDsIndex === -1) {\n configArray.push(newDataSource);\n } else {\n const existingConfig = configArray[existingDsIndex] as FmdapiDataSourceConfig;\n configArray[existingDsIndex] = {\n ...existingConfig,\n ...newDataSource,\n layouts: newDataSource.layouts.length > 0 ? newDataSource.layouts : existingConfig.layouts || [],\n };\n }\n } else {\n fileContent = {\n $schema: \"https://proofkit.dev/typegen-config-schema.json\",\n config: [newDataSource],\n };\n }\n await writeJsonConfigFile(jsonConfigPath, fileContent);\n}\n\nexport function getFieldNamesForSchema({ schemaName, dataSourceName }: { schemaName: string; dataSourceName: string }) {\n const projectDir = state.projectDir;\n const project = getNewProject(projectDir);\n const sourceFilePath = path.join(projectDir, `src/config/schemas/${dataSourceName}/generated/${schemaName}.ts`);\n\n const sourceFilePathAlternative = path.join(projectDir, `src/config/schemas/${dataSourceName}/${schemaName}.ts`);\n\n let fileToUse = sourceFilePath;\n if (!fs.existsSync(sourceFilePath)) {\n if (fs.existsSync(sourceFilePathAlternative)) {\n fileToUse = sourceFilePathAlternative;\n } else {\n return [];\n }\n }\n const sourceFile = project.addSourceFileAtPath(fileToUse);\n\n const zodSchema = sourceFile.getVariableDeclaration(`Z${schemaName}`);\n if (zodSchema) {\n const properties = zodSchema\n .getInitializer()\n ?.getFirstDescendantByKind(SyntaxKind.ObjectLiteralExpression)\n ?.getProperties();\n return (\n properties?.map((pr) => pr.asKind(SyntaxKind.PropertyAssignment)?.getName()?.replace(/\"/g, \"\")).filter(Boolean) ??\n []\n );\n }\n const typeAlias = sourceFile.getTypeAlias(`T${schemaName}`);\n const properties = typeAlias?.getFirstDescendantByKind(SyntaxKind.TypeLiteral)?.getProperties();\n return (\n properties?.map((pr) => pr.asKind(SyntaxKind.PropertySignature)?.getName()?.replace(/\"/g, \"\")).filter(Boolean) ?? []\n );\n}\n\nexport async function removeFromFmschemaConfig({ dataSourceName }: { dataSourceName: string }) {\n const projectDir = state.projectDir;\n const jsonConfigPath = path.join(projectDir, \"proofkit-typegen.config.jsonc\");\n const fileContent = await readJsonConfigFile(jsonConfigPath);\n\n if (!fileContent) {\n return;\n }\n\n const pathToRemove = `./src/config/schemas/${dataSourceName}`;\n\n if (Array.isArray(fileContent.config)) {\n fileContent.config = fileContent.config.filter((ds) => !(ds.type === \"fmdapi\" && ds.path === pathToRemove));\n } else {\n const currentConfig = fileContent.config;\n if (currentConfig.type === \"fmdapi\" && currentConfig.path === pathToRemove) {\n fileContent.config = [];\n }\n }\n await writeJsonConfigFile(jsonConfigPath, fileContent);\n}\n\nexport async function removeLayout({\n projectDir = state.projectDir,\n schemaName,\n dataSourceName,\n runCodegen = true,\n}: {\n projectDir?: string;\n schemaName: string;\n dataSourceName: string;\n runCodegen?: boolean;\n}) {\n const jsonConfigPath = path.join(projectDir, \"proofkit-typegen.config.jsonc\");\n const fileContent = await readJsonConfigFile(jsonConfigPath);\n\n if (!fileContent) {\n throw new Error(\"proofkit-typegen.config.jsonc not found, cannot remove layout.\");\n }\n\n let dataSourceModified = false;\n const targetDsPath = `./src/config/schemas/${dataSourceName}`;\n\n let configArray: AnyDataSourceConfig[];\n if (Array.isArray(fileContent.config)) {\n configArray = fileContent.config;\n } else {\n configArray = [fileContent.config];\n fileContent.config = configArray;\n }\n\n const targetDataSource = configArray.find(\n (ds): ds is FmdapiDataSourceConfig => ds.type === \"fmdapi\" && ds.path === targetDsPath,\n );\n\n if (targetDataSource?.layouts) {\n const initialCount = targetDataSource.layouts.length;\n targetDataSource.layouts = targetDataSource.layouts.filter((layout) => layout.schemaName !== schemaName);\n if (targetDataSource.layouts.length < initialCount) {\n dataSourceModified = true;\n }\n }\n\n if (dataSourceModified) {\n await writeJsonConfigFile(jsonConfigPath, fileContent);\n }\n\n const schemaFilePath = path.join(projectDir, \"src\", \"config\", \"schemas\", dataSourceName, `${schemaName}.ts`);\n if (fs.existsSync(schemaFilePath)) {\n fs.removeSync(schemaFilePath);\n }\n\n if (runCodegen && dataSourceModified) {\n await runCodegenCommand();\n }\n}\n\n// Make sure to remove unused imports like Project, SyntaxKind, etc. if they are no longer used anywhere.\n// Also remove getNewProject and formatAndSaveSourceFiles from imports if they were only for config.\n","import path from \"node:path\";\nimport fs from \"fs-extra\";\nimport { type Project, SyntaxKind } from \"ts-morph\";\n\nimport { PKG_ROOT } from \"~/consts.js\";\nimport { state } from \"~/state.js\";\nimport { addPackageDependency } from \"~/utils/addPackageDependency.js\";\nimport { getSettings, setSettings } from \"~/utils/parseSettings.js\";\nimport { formatAndSaveSourceFiles, getNewProject } from \"~/utils/ts-morph.js\";\n\nexport async function injectTanstackQuery(args?: { project?: Project }) {\n const projectDir = state.projectDir;\n const settings = getSettings();\n if (settings.ui === \"shadcn\") {\n return false;\n }\n if (settings.tanstackQuery) {\n return false;\n }\n\n addPackageDependency({\n projectDir,\n dependencies: [\"@tanstack/react-query\"],\n devMode: false,\n });\n addPackageDependency({\n projectDir,\n dependencies: [\"@tanstack/react-query-devtools\"],\n devMode: true,\n });\n const extrasDir = path.join(PKG_ROOT, \"template\", \"extras\");\n\n if (state.appType === \"browser\") {\n fs.copySync(\n path.join(extrasDir, \"config\", \"get-query-client.ts\"),\n path.join(projectDir, \"src/config/get-query-client.ts\"),\n );\n fs.copySync(\n path.join(extrasDir, \"config\", \"query-provider.tsx\"),\n path.join(projectDir, \"src/config/query-provider.tsx\"),\n );\n } else if (state.appType === \"webviewer\") {\n fs.copySync(\n path.join(extrasDir, \"config\", \"query-provider-vite.tsx\"),\n path.join(projectDir, \"src/config/query-provider.tsx\"),\n );\n }\n\n // inject query provider into the root layout\n const project = args?.project ?? getNewProject(projectDir);\n const rootLayout = project.addSourceFileAtPath(\n path.join(projectDir, state.appType === \"browser\" ? \"src/app/layout.tsx\" : \"src/main.tsx\"),\n );\n rootLayout.addImportDeclaration({\n moduleSpecifier: \"@/config/query-provider\",\n defaultImport: \"QueryProvider\",\n });\n\n if (state.appType === \"browser\") {\n const exportDefault = rootLayout.getFunction((dec) => dec.isDefaultExport());\n const bodyElement = exportDefault\n ?.getBody()\n ?.getFirstDescendantByKind(SyntaxKind.ReturnStatement)\n ?.getDescendantsOfKind(SyntaxKind.JsxOpeningElement)\n .find((openingElement) => openingElement.getTagNameNode().getText() === \"body\")\n ?.getParentIfKind(SyntaxKind.JsxElement);\n\n const childrenText = bodyElement\n ?.getJsxChildren()\n .map((child) => child.getText())\n .filter(Boolean)\n .join(\"\\n\");\n\n bodyElement?.getChildSyntaxList()?.replaceWithText(\n `<QueryProvider>\n ${childrenText}\n </QueryProvider>`,\n );\n } else if (state.appType === \"webviewer\") {\n const mantineProvider = rootLayout\n .getDescendantsOfKind(SyntaxKind.JsxElement)\n .find((element) => element.getOpeningElement().getTagNameNode().getText() === \"MantineProvider\");\n\n mantineProvider?.replaceWithText(\n `<QueryProvider>\n ${mantineProvider.getText()}\n </QueryProvider>`,\n );\n }\n\n if (!args?.project) {\n await formatAndSaveSourceFiles(project);\n }\n\n setSettings({ ...settings, tanstackQuery: true });\n return true;\n}\n","import os from \"node:os\";\nimport path from \"node:path\";\nimport chalk from \"chalk\";\nimport fs from \"fs-extra\";\n\nimport { PKG_ROOT } from \"~/consts.js\";\nimport { logger } from \"~/utils/logger.js\";\n\nexport async function installFmAddon({ addonName }: { addonName: \"auth\" | \"wv\" }) {\n const addonDisplayName = addonName === \"auth\" ? \"FM Auth Add-on\" : \"ProofKit WebViewer\";\n\n let targetDir: string | null = null;\n if (process.platform === \"win32\") {\n targetDir = path.join(os.homedir(), \"AppData\", \"Local\", \"FileMaker\", \"Extensions\", \"AddonModules\");\n } else if (process.platform === \"darwin\") {\n targetDir = path.join(os.homedir(), \"Library\", \"Application Support\", \"FileMaker\", \"Extensions\", \"AddonModules\");\n }\n\n if (!targetDir) {\n logger.warn(`Could not install the ${addonDisplayName} addon. You will need to do this manually.`);\n return;\n }\n\n const addonDir = addonName === \"auth\" ? \"ProofKitAuth\" : \"ProofKitWV\";\n\n await fs.copy(path.join(PKG_ROOT, `template/fm-addon/${addonDir}`), path.join(targetDir, addonDir), {\n overwrite: true,\n });\n\n console.log(\"\");\n console.log(chalk.bgYellow(\" ACTION REQUIRED: \"));\n if (addonName === \"auth\") {\n console.log(\n `${chalk.yellowBright(\n \"You must install the FM Auth addon in your FileMaker file to continue.\",\n )} ${chalk.dim(\"(Learn more: https://proofkit.dev/auth/fm-addon)\")}`,\n );\n } else {\n console.log(\n `${chalk.yellowBright(\n \"You must install the ProofKit WebViewer addon in your FileMaker file to continue.\",\n )} ${chalk.dim(\"(Learn more: https://proofkit.dev/webviewer)\")}`,\n );\n }\n const steps = [\n \"Restart FileMaker Pro (if it's currently running)\",\n `Open your FileMaker file, go to layout mode, and install the ${addonDisplayName} addon to the file`,\n \"Come back here to continue the installation\",\n ];\n steps.forEach((step, index) => {\n console.log(`${index + 1}. ${step}`);\n });\n}\n","import path from \"node:path\";\nimport * as p from \"@clack/prompts\";\nimport chalk from \"chalk\";\nimport fs from \"fs-extra\";\nimport type { Project } from \"ts-morph\";\nimport type { PackageJson } from \"type-fest\";\n\nimport { abortIfCancel } from \"~/cli/utils.js\";\nimport { PKG_ROOT } from \"~/consts.js\";\nimport { installDependencies } from \"~/helpers/installDependencies.js\";\nimport { state } from \"~/state.js\";\nimport { addPackageDependency } from \"~/utils/addPackageDependency.js\";\nimport { addToEnv } from \"~/utils/addToEnvs.js\";\nimport { logger } from \"~/utils/logger.js\";\nimport { getSettings, setSettings } from \"~/utils/parseSettings.js\";\nimport { formatAndSaveSourceFiles, getNewProject } from \"~/utils/ts-morph.js\";\n\nexport async function installReactEmail({\n ...args\n}: {\n project?: Project;\n noInstall?: boolean;\n installServerFiles?: boolean;\n}) {\n const projectDir = state.projectDir;\n\n // Exit early if already installed\n const settings = getSettings();\n if (settings.ui === \"shadcn\") {\n return false;\n }\n if (settings.reactEmail) {\n return false;\n }\n\n // Ensure emails directory exists\n fs.ensureDirSync(path.join(projectDir, \"src/emails\"));\n addPackageDependency({\n dependencies: [\"@react-email/components\", \"@react-email/render\"],\n devMode: false,\n projectDir,\n });\n addPackageDependency({\n dependencies: [\"react-email\", \"@react-email/preview-server\"],\n devMode: true,\n projectDir,\n });\n\n // add a script to package.json\n const pkgJson = fs.readJSONSync(path.join(projectDir, \"package.json\")) as PackageJson;\n if (!pkgJson.scripts) {\n pkgJson.scripts = {};\n }\n pkgJson.scripts[\"email:preview\"] = \"email dev --port 3010 --dir=src/emails\";\n fs.writeJSONSync(path.join(projectDir, \"package.json\"), pkgJson, {\n spaces: 2,\n });\n\n const project = args.project ?? getNewProject(projectDir);\n\n if (args.installServerFiles) {\n const emailProvider = state.emailProvider;\n if (emailProvider === \"plunk\") {\n await installPlunk({ project });\n } else if (emailProvider === \"resend\") {\n await installResend({ project });\n } else {\n await fs.copy(\n path.join(PKG_ROOT, \"template/extras/emailProviders/none/email.tsx\"),\n path.join(projectDir, \"src/server/auth/email.tsx\"),\n );\n }\n }\n\n // Copy base email template(s) into src/emails for preview and reuse\n await fs.copy(\n path.join(PKG_ROOT, \"template/extras/emailTemplates/generic.tsx\"),\n path.join(projectDir, \"src/emails/generic.tsx\"),\n );\n if (args.installServerFiles) {\n await fs.copy(\n path.join(PKG_ROOT, \"template/extras/emailTemplates/auth-code.tsx\"),\n path.join(projectDir, \"src/emails/auth-code.tsx\"),\n );\n }\n\n if (!args.project) {\n await formatAndSaveSourceFiles(project);\n }\n\n // Mark as installed\n setSettings({\n ...settings,\n reactEmail: true,\n reactEmailServer: Boolean(args.installServerFiles) || settings.reactEmailServer,\n });\n\n // Install dependencies unless explicitly skipped\n if (!args.noInstall) {\n await installDependencies({ projectDir });\n }\n return true;\n}\n\nexport async function installPlunk({ project }: { project?: Project }) {\n const projectDir = state.projectDir;\n addPackageDependency({\n dependencies: [\"@plunk/node\"],\n devMode: false,\n projectDir,\n });\n\n let apiKey: string;\n if (typeof state.apiKey === \"string\") {\n apiKey = state.apiKey;\n } else if (state.ci) {\n apiKey = \"\";\n } else {\n apiKey = abortIfCancel(\n await p.text({\n message: `Enter your Plunk API key\\n${chalk.dim(\n \"Enter your Secret API Key from https://app.useplunk.com/settings/api\",\n )}`,\n placeholder: \"...or leave blank to do this later\",\n }),\n );\n }\n\n if (!apiKey) {\n logger.warn(\"You will need to add your Plunk API key to the .env file manually for your app to run.\");\n }\n\n console.log(\"\");\n\n await addToEnv({\n projectDir,\n project,\n envs: [\n {\n name: \"PLUNK_API_KEY\",\n zodValue: `z.string().startsWith(\"sk_\")`,\n type: \"server\",\n defaultValue: apiKey,\n },\n ],\n });\n\n await fs.copy(\n path.join(PKG_ROOT, \"template/extras/emailProviders/plunk/service.ts\"),\n path.join(projectDir, \"src/server/services/plunk.ts\"),\n );\n\n await fs.copy(\n path.join(PKG_ROOT, \"template/extras/emailProviders/plunk/email.tsx\"),\n path.join(projectDir, \"src/server/auth/email.tsx\"),\n );\n}\n\nexport async function installResend({ project }: { project?: Project }) {\n const projectDir = state.projectDir;\n addPackageDependency({\n dependencies: [\"resend\"],\n devMode: false,\n projectDir,\n });\n\n let apiKey: string;\n if (typeof state.apiKey === \"string\") {\n apiKey = state.apiKey;\n } else if (state.ci) {\n apiKey = \"\";\n } else {\n apiKey = abortIfCancel(\n await p.text({\n message: `Enter your Resend API key\\n${chalk.dim(\n `Only \"Sending Access\" permission required: https://resend.com/api-keys`,\n )}`,\n placeholder: \"...or leave blank to do this later\",\n }),\n );\n }\n\n if (!apiKey) {\n logger.warn(\"You will need to add your Resend API key to the .env file manually for your app to run.\");\n }\n\n console.log(\"\");\n\n await addToEnv({\n projectDir,\n project,\n envs: [\n {\n name: \"RESEND_API_KEY\",\n zodValue: `z.string().startsWith(\"re_\")`,\n type: \"server\",\n defaultValue: apiKey,\n },\n ],\n });\n\n await fs.copy(\n path.join(PKG_ROOT, \"template/extras/emailProviders/resend/service.ts\"),\n path.join(projectDir, \"src/server/services/resend.ts\"),\n );\n\n await fs.copy(\n path.join(PKG_ROOT, \"template/extras/emailProviders/resend/email.tsx\"),\n path.join(projectDir, \"src/server/auth/email.tsx\"),\n );\n}\n","import path from \"node:path\";\nimport * as p from \"@clack/prompts\";\nimport type { OttoAPIKey } from \"@proofkit/fmdapi\";\nimport chalk from \"chalk\";\nimport dotenv from \"dotenv\";\nimport fs from \"fs-extra\";\nimport ora, { type Ora } from \"ora\";\nimport { type SourceFile, SyntaxKind } from \"ts-morph\";\nimport { getLayouts } from \"~/cli/fmdapi.js\";\nimport { abortIfCancel, UserAbortedError } from \"~/cli/utils.js\";\nimport { PKG_ROOT } from \"~/consts.js\";\nimport { addConfig, runCodegenCommand } from \"~/generators/fmdapi.js\";\nimport { injectTanstackQuery } from \"~/generators/tanstack-query.js\";\nimport { state } from \"~/state.js\";\nimport { addPackageDependency } from \"~/utils/addPackageDependency.js\";\nimport { getSettings } from \"~/utils/parseSettings.js\";\nimport { formatAndSaveSourceFiles, getNewProject } from \"~/utils/ts-morph.js\";\nimport { addToHeaderSlot } from \"./auth-shared.js\";\nimport { installFmAddon } from \"./install-fm-addon.js\";\nimport { installReactEmail } from \"./react-email.js\";\n\nexport const proofkitAuthInstaller = async () => {\n const spinner = ora(\"Installing files for auth...\").start();\n\n const projectDir = state.projectDir;\n addPackageDependency({\n projectDir,\n dependencies: [\"@node-rs/argon2\", \"@oslojs/binary\", \"@oslojs/crypto\", \"@oslojs/encoding\", \"js-cookie\"],\n devMode: false,\n });\n\n addPackageDependency({\n projectDir,\n dependencies: [\"@types/js-cookie\"],\n devMode: true,\n });\n\n // copy all files from template/extras/fmaddon-auth to projectDir/src\n await fs.copy(path.join(PKG_ROOT, \"template/extras/fmaddon-auth\"), path.join(projectDir, \"src\"));\n\n const project = getNewProject(projectDir);\n\n // ensure tanstack query is installed\n await injectTanstackQuery({ project });\n\n // inject signin/signout components to header slots\n addToHeaderSlot(\n project.addSourceFileAtPath(path.join(projectDir, \"src/components/AppShell/slot-header-right.tsx\")),\n \"@/components/auth/user-menu\",\n );\n // addToHeaderSlot(\n // project.addSourceFileAtPath(\n // path.join(\n // projectDir,\n // \"src/components/AppShell/slot-header-mobile-content.tsx\"\n // )\n // ),\n // \"@/components/clerk-auth/user-menu-mobile\"\n // );\n\n addToSafeActionClient(project.addSourceFileAtPathIfExists(path.join(projectDir, \"src/server/safe-action.ts\")));\n\n await addConfig({\n config: {\n type: \"fmdapi\",\n envNames: undefined,\n clientSuffix: \"Layout\",\n layouts: [\n {\n layoutName: \"proofkit_auth_sessions\",\n schemaName: \"sessions\",\n strictNumbers: true,\n },\n {\n layoutName: \"proofkit_auth_users\",\n schemaName: \"users\",\n strictNumbers: true,\n },\n {\n layoutName: \"proofkit_auth_email_verification\",\n schemaName: \"emailVerification\",\n strictNumbers: true,\n },\n {\n layoutName: \"proofkit_auth_password_reset\",\n schemaName: \"passwordReset\",\n strictNumbers: true,\n },\n ],\n clearOldFiles: true,\n validator: false,\n path: \"./src/server/auth/db\",\n },\n projectDir,\n runCodegen: false,\n });\n\n // install email files based on the email provider in state\n await installReactEmail({ project, installServerFiles: true });\n\n protectMainLayout(project.addSourceFileAtPath(path.join(projectDir, \"src/app/(main)/layout.tsx\")));\n\n await formatAndSaveSourceFiles(project);\n\n let hasProofKitLayouts = false;\n while (!hasProofKitLayouts) {\n hasProofKitLayouts = await checkForProofKitLayouts(projectDir, spinner);\n\n if (hasProofKitLayouts) {\n spinner.text = \"Successfully detected all required layouts in your FileMaker file.\";\n } else {\n const shouldContinue = abortIfCancel<boolean>(\n await p.confirm({\n message: \"I have followed the above instructions, continue installing\",\n initialValue: true,\n active: \"Continue\",\n inactive: \"Abort\",\n }),\n );\n\n if (!shouldContinue) {\n throw new UserAbortedError();\n }\n }\n }\n await runCodegenCommand();\n\n spinner.succeed(\"Auth installed successfully\");\n};\n\nfunction addToSafeActionClient(sourceFile?: SourceFile) {\n if (!sourceFile) {\n console.log(chalk.yellow(\"Failed to inject into safe-action-client. Did you move the safe-action.ts file?\"));\n return;\n }\n\n sourceFile.addImportDeclaration({\n namedImports: [{ name: \"getCurrentSession\" }],\n moduleSpecifier: \"./auth/utils/session\",\n });\n\n // add to end of file\n sourceFile.addStatements((writer) =>\n writer.writeLine(`export const authedActionClient = actionClient.use(async ({ next, ctx }) => {\n const { session, user } = await getCurrentSession();\n if (session === null) {\n throw new Error(\"Unauthorized\");\n }\n\n return next({ ctx: { ...ctx, session, user } });\n});\n`),\n );\n}\n\nfunction protectMainLayout(sourceFile: SourceFile) {\n sourceFile.addImportDeclaration({\n defaultImport: \"Protect\",\n moduleSpecifier: \"@/components/auth/protect\",\n });\n\n // inject query provider into the root layout\n\n const exportDefault = sourceFile.getFunction((dec) => dec.isDefaultExport());\n const bodyElement = exportDefault\n ?.getBody()\n ?.getFirstDescendantByKind(SyntaxKind.ReturnStatement)\n ?.getFirstDescendantByKind(SyntaxKind.JsxElement);\n\n bodyElement?.replaceWithText(\n `<Protect>\n ${bodyElement?.getText()}\n </Protect>`,\n );\n}\n\nasync function checkForProofKitLayouts(projectDir: string, spinner: Ora): Promise<boolean> {\n const settings = getSettings();\n\n const dataSource = settings.dataSources.filter((s) => s.type === \"fm\").find((s) => s.name === \"filemaker\");\n\n if (!dataSource) {\n return false;\n }\n if (settings.envFile) {\n dotenv.config({\n path: path.join(projectDir, settings.envFile),\n });\n }\n const dataApiKey = process.env[dataSource.envNames.apiKey];\n const fmFile = process.env[dataSource.envNames.database];\n const server = process.env[dataSource.envNames.server];\n\n if (!(dataApiKey && fmFile && server)) {\n return false;\n }\n\n const existingLayouts = await getLayouts({\n dataApiKey: dataApiKey as OttoAPIKey,\n fmFile,\n server,\n });\n const proofkitAuthLayouts = [\n \"proofkit_auth_sessions\",\n \"proofkit_auth_users\",\n \"proofkit_auth_email_verification\",\n \"proofkit_auth_password_reset\",\n ];\n\n const allProofkitAuthLayoutsExist = proofkitAuthLayouts.every((layout) => existingLayouts.some((l) => l === layout));\n\n if (allProofkitAuthLayoutsExist) {\n return true;\n }\n\n spinner.warn(\"Required layouts not found\");\n await installFmAddon({ addonName: \"auth\" });\n\n return false;\n}\n","import { readFileSync, writeFileSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { glob } from \"glob\";\n\nimport { installDependencies } from \"~/helpers/installDependencies.js\";\nimport { betterAuthInstaller } from \"~/installers/better-auth.js\";\nimport { clerkInstaller } from \"~/installers/clerk.js\";\nimport { proofkitAuthInstaller } from \"~/installers/proofkit-auth.js\";\nimport { state } from \"~/state.js\";\nimport { getSettings, mergeSettings } from \"~/utils/parseSettings.js\";\n\nexport async function addAuth({\n options,\n noInstall = false,\n projectDir = process.cwd(),\n}: {\n options:\n | { type: \"clerk\" }\n | {\n type: \"fmaddon\";\n emailProvider?: \"plunk\" | \"resend\";\n apiKey?: string;\n }\n | { type: \"better-auth\" };\n projectDir?: string;\n noInstall?: boolean;\n}) {\n const settings = getSettings();\n if (settings.ui === \"shadcn\") {\n throw new Error(\"Shadcn projects should add auth using the template registry\");\n }\n if (settings.auth.type !== \"none\") {\n throw new Error(\"Auth already exists\");\n }\n if (!settings.dataSources.some((o) => o.type === \"fm\") && options.type === \"fmaddon\") {\n throw new Error(\"A FileMaker data source is required to use the FM Add-on Auth\");\n }\n if (!settings.dataSources.some((o) => o.type === \"fm\") && options.type === \"better-auth\") {\n throw new Error(\"A FileMaker data source is required to use the Better-Auth\");\n }\n\n if (options.type === \"clerk\") {\n await addClerkAuth({ projectDir });\n } else if (options.type === \"fmaddon\") {\n await addFmaddonAuth();\n }\n\n // Replace actionClient with authedActionClient in all action files\n await replaceActionClientWithAuthed();\n\n if (!noInstall) {\n await installDependencies({ projectDir });\n }\n}\n\nasync function addClerkAuth({ projectDir = process.cwd() }: { projectDir?: string }) {\n await clerkInstaller({ projectDir });\n mergeSettings({ auth: { type: \"clerk\" } });\n}\n\nasync function addFmaddonAuth() {\n await proofkitAuthInstaller();\n mergeSettings({ auth: { type: \"fmaddon\" } });\n}\n\nasync function replaceActionClientWithAuthed() {\n const projectDir = state.projectDir;\n const actionFiles = await glob(\"src/app/(main)/**/actions.ts\", {\n cwd: projectDir,\n });\n\n for (const file of actionFiles) {\n const fullPath = path.join(projectDir, file);\n const content = readFileSync(fullPath, \"utf-8\");\n const updatedContent = content.replace(/actionClient/g, \"authedActionClient\");\n writeFileSync(fullPath, updatedContent);\n }\n}\n\nasync function _addBetterAuth() {\n await betterAuthInstaller();\n mergeSettings({ auth: { type: \"better-auth\" } });\n}\n","import { Option } from \"commander\";\n\nexport const ciOption = new Option(\"--ci\", \"Run in CI mode\").default(false);\nexport const debugOption = new Option(\"--debug\", \"Run in debug mode\").default(false);\n","import type { InstallerOptions, PkgInstallerMap } from \"~/installers/index.js\";\nimport { logger } from \"~/utils/logger.js\";\n\ntype InstallPackagesOptions = InstallerOptions & {\n packages: PkgInstallerMap;\n};\n// This runs the installer for all the packages that the user has selected\nexport const installPackages = (options: InstallPackagesOptions) => {\n const { packages } = options;\n logger.info(\"Adding boilerplate...\");\n\n for (const [_name, pkgOpts] of Object.entries(packages)) {\n if (pkgOpts.inUse) {\n // const spinner = ora(`Boilerplating ${name}...`).start();\n pkgOpts.installer(options);\n // spinner.succeed(\n // chalk.green(\n // `Successfully setup boilerplate for ${chalk.green.bold(name)}`\n // )\n // );\n }\n }\n\n logger.info(\"\");\n};\n","import path from \"node:path\";\nimport fs from \"fs-extra\";\n\nimport { PKG_ROOT } from \"~/consts.js\";\nimport { state } from \"~/state.js\";\nimport { getUserPkgManager } from \"~/utils/getUserPkgManager.js\";\n\nexport async function copyCursorRules() {\n const projectDir = state.projectDir;\n const extrasDir = path.join(PKG_ROOT, \"template/extras\");\n const cursorRulesSrcDir = path.join(extrasDir, \"_cursor/rules\");\n const cursorRulesDestDir = path.join(projectDir, \".cursor/rules\");\n\n if (!fs.existsSync(cursorRulesSrcDir)) {\n return;\n }\n\n const pkgManager = getUserPkgManager();\n await fs.ensureDir(cursorRulesDestDir);\n await fs.copy(cursorRulesSrcDir, cursorRulesDestDir);\n\n // Copy package manager specific rules\n const conditionalRulesDir = path.join(extrasDir, \"_cursor/conditional-rules\");\n\n const packageManagerRules = {\n pnpm: \"pnpm.mdc\",\n npm: \"npm.mdc\",\n yarn: \"yarn.mdc\",\n };\n\n const selectedRule = packageManagerRules[pkgManager as keyof typeof packageManagerRules];\n\n if (selectedRule) {\n const ruleSrc = path.join(conditionalRulesDir, selectedRule);\n const ruleDest = path.join(cursorRulesDestDir, \"package-manager.mdc\");\n\n if (fs.existsSync(ruleSrc)) {\n await fs.copy(ruleSrc, ruleDest, { overwrite: true });\n }\n }\n}\n","import path from \"node:path\";\nimport * as p from \"@clack/prompts\";\nimport chalk from \"chalk\";\nimport fs from \"fs-extra\";\nimport ora from \"ora\";\n\nimport { PKG_ROOT } from \"~/consts.js\";\nimport type { InstallerOptions } from \"~/installers/index.js\";\nimport { state } from \"~/state.js\";\nimport { copyCursorRules } from \"~/upgrades/cursorRules.js\";\nimport { logger } from \"~/utils/logger.js\";\n\n// This bootstraps the base Next.js application\nexport const scaffoldProject = async ({ projectName, pkgManager, noInstall }: InstallerOptions) => {\n const projectDir = state.projectDir;\n\n const srcDir = path.join(\n PKG_ROOT,\n state.appType === \"browser\"\n ? `template/${state.ui === \"mantine\" ? \"nextjs-mantine\" : \"nextjs-shadcn\"}`\n : \"template/vite-wv\",\n );\n\n if (noInstall) {\n logger.info(\"\");\n } else {\n logger.info(`\\nUsing: ${chalk.cyan.bold(pkgManager)}\\n`);\n }\n\n const spinner = ora(`Scaffolding in: ${projectDir}...\\n`).start();\n\n if (fs.existsSync(projectDir)) {\n if (fs.readdirSync(projectDir).length === 0) {\n if (projectName !== \".\") {\n spinner.info(`${chalk.cyan.bold(projectName)} exists but is empty, continuing...\\n`);\n }\n } else {\n spinner.stopAndPersist();\n const overwriteDir = await p.select({\n message: `${chalk.redBright.bold(\"Warning:\")} ${chalk.cyan.bold(\n projectName,\n )} already exists and isn't empty. How would you like to proceed?`,\n options: [\n {\n label: \"Abort installation (recommended)\",\n value: \"abort\",\n },\n {\n label: \"Clear the directory and continue installation\",\n value: \"clear\",\n },\n {\n label: \"Continue installation and overwrite conflicting files\",\n value: \"overwrite\",\n },\n ],\n initialValue: \"abort\",\n });\n if (overwriteDir === \"abort\") {\n spinner.fail(\"Aborting installation...\");\n process.exit(1);\n }\n\n const overwriteAction = overwriteDir === \"clear\" ? \"clear the directory\" : \"overwrite conflicting files\";\n\n const confirmOverwriteDir = await p.confirm({\n message: `Are you sure you want to ${overwriteAction}?`,\n initialValue: false,\n });\n\n if (!confirmOverwriteDir) {\n spinner.fail(\"Aborting installation...\");\n process.exit(1);\n }\n\n if (overwriteDir === \"clear\") {\n spinner.info(`Emptying ${chalk.cyan.bold(projectName)} and creating new ProofKit app..\\n`);\n fs.emptyDirSync(projectDir);\n }\n }\n }\n\n spinner.start();\n\n // Copy the main template\n fs.copySync(srcDir, projectDir);\n\n // Copy cursor rules\n copyCursorRules();\n\n // Rename gitignore\n fs.renameSync(path.join(projectDir, \"_gitignore\"), path.join(projectDir, \".gitignore\"));\n\n const scaffoldedName = projectName === \".\" ? \"App\" : chalk.cyan.bold(projectName);\n\n spinner.succeed(`${scaffoldedName} ${chalk.green(\"scaffolded successfully!\")}\\n`);\n};\n","import fs from \"node:fs\";\nimport path from \"node:path\";\n\nexport function replaceTextInFiles(directoryPath: string, search: string, replacement: string): void {\n const files = fs.readdirSync(directoryPath);\n\n for (const file of files) {\n const filePath = path.join(directoryPath, file);\n if (fs.statSync(filePath).isDirectory()) {\n replaceTextInFiles(filePath, search, replacement);\n } else {\n const data = fs.readFileSync(filePath, \"utf8\");\n const updatedData = data.replace(new RegExp(search, \"g\"), replacement);\n fs.writeFileSync(filePath, updatedData, \"utf8\");\n }\n }\n}\n","import path from \"node:path\";\n\nimport { installPackages } from \"~/helpers/installPackages.js\";\nimport { scaffoldProject } from \"~/helpers/scaffoldProject.js\";\nimport type { AvailableDependencies } from \"~/installers/dependencyVersionMap.js\";\nimport type { PkgInstallerMap } from \"~/installers/index.js\";\nimport { state } from \"~/state.js\";\nimport { addPackageDependency } from \"~/utils/addPackageDependency.js\";\nimport { getUserPkgManager } from \"~/utils/getUserPkgManager.js\";\nimport { replaceTextInFiles } from \"./replaceText.js\";\n\ninterface CreateProjectOptions {\n projectName: string;\n packages: PkgInstallerMap;\n scopedAppName: string;\n noInstall: boolean;\n appRouter: boolean;\n}\n\nexport const createBareProject = async ({ projectName, scopedAppName, packages, noInstall }: CreateProjectOptions) => {\n const pkgManager = getUserPkgManager();\n state.projectDir = path.resolve(process.cwd(), projectName);\n\n // Bootstraps the base Next.js application\n await scaffoldProject({\n projectName,\n pkgManager,\n scopedAppName,\n noInstall,\n });\n\n addPackageDependency({\n dependencies: [\"@proofkit/cli\", \"@types/node\"],\n devMode: true,\n });\n\n // Add new base dependencies for Tailwind v4 and shadcn/ui or legacy Mantine\n // These should match the plan and dependencyVersionMap\n const SHADCN_BASE_DEPS = [\n \"@radix-ui/react-slot\",\n \"@tailwindcss/postcss\",\n \"class-variance-authority\",\n \"clsx\",\n \"lucide-react\",\n \"tailwind-merge\",\n \"tailwindcss\",\n \"tw-animate-css\",\n \"next-themes\",\n ] as AvailableDependencies[];\n const SHADCN_BASE_DEV_DEPS = [] as AvailableDependencies[];\n\n const MANTINE_DEPS = [\n \"@mantine/core\",\n \"@mantine/dates\",\n \"@mantine/hooks\",\n \"@mantine/modals\",\n \"@mantine/notifications\",\n \"mantine-react-table\",\n ] as AvailableDependencies[];\n const MANTINE_DEV_DEPS = [\"postcss\", \"postcss-preset-mantine\", \"postcss-simple-vars\"] as AvailableDependencies[];\n\n if (state.ui === \"mantine\") {\n addPackageDependency({\n dependencies: MANTINE_DEPS,\n devMode: false,\n });\n addPackageDependency({\n dependencies: MANTINE_DEV_DEPS,\n devMode: true,\n });\n } else if (state.ui === \"shadcn\") {\n addPackageDependency({\n dependencies: SHADCN_BASE_DEPS,\n devMode: false,\n });\n addPackageDependency({\n dependencies: SHADCN_BASE_DEV_DEPS,\n devMode: true,\n });\n addPackageDependency({\n dependencies: [\"zod\"],\n devMode: false,\n });\n } else {\n throw new Error(`Unsupported UI library: ${state.ui}`);\n }\n\n // Install the selected packages\n installPackages({\n projectName,\n scopedAppName,\n pkgManager,\n packages,\n noInstall,\n });\n\n let pkgManagerCommand: string;\n if (pkgManager === \"pnpm\") {\n pkgManagerCommand = \"pnpm\";\n } else if (pkgManager === \"bun\") {\n pkgManagerCommand = \"bun\";\n } else if (pkgManager === \"yarn\") {\n pkgManagerCommand = \"yarn\";\n } else {\n pkgManagerCommand = \"npm run\";\n }\n\n replaceTextInFiles(state.projectDir, \"__PNPM_COMMAND__\", pkgManagerCommand);\n\n return state.projectDir;\n};\n","import { execSync } from \"node:child_process\";\nimport path from \"node:path\";\nimport * as p from \"@clack/prompts\";\nimport chalk from \"chalk\";\nimport { execa } from \"execa\";\nimport fs from \"fs-extra\";\nimport ora from \"ora\";\n\nimport { logger } from \"~/utils/logger.js\";\n\nconst isGitInstalled = (dir: string): boolean => {\n try {\n execSync(\"git --version\", { cwd: dir });\n return true;\n } catch (_e) {\n return false;\n }\n};\n\n/** @returns Whether or not the provided directory has a `.git` subdirectory in it. */\nexport const isRootGitRepo = (dir: string): boolean => {\n return fs.existsSync(path.join(dir, \".git\"));\n};\n\n/** @returns Whether or not this directory or a parent directory has a `.git` directory. */\nexport const isInsideGitRepo = async (dir: string): Promise<boolean> => {\n try {\n // If this command succeeds, we're inside a git repo\n await execa(\"git\", [\"rev-parse\", \"--is-inside-work-tree\"], {\n cwd: dir,\n stdout: \"ignore\",\n });\n return true;\n } catch (_e) {\n // Else, it will throw a git-error and we return false\n return false;\n }\n};\n\nconst getGitVersion = () => {\n const stdout = execSync(\"git --version\").toString().trim();\n const gitVersionTag = stdout.split(\" \")[2];\n const major = gitVersionTag?.split(\".\")[0];\n const minor = gitVersionTag?.split(\".\")[1];\n return { major: Number(major), minor: Number(minor) };\n};\n\n/** @returns The git config value of \"init.defaultBranch\". If it is not set, returns \"main\". */\nconst getDefaultBranch = () => {\n const stdout = execSync(\"git config --global init.defaultBranch || echo main\").toString().trim();\n\n return stdout;\n};\n\n// This initializes the Git-repository for the project\nexport const initializeGit = async (projectDir: string) => {\n logger.info(\"Initializing Git...\");\n\n if (!isGitInstalled(projectDir)) {\n logger.warn(\"Git is not installed. Skipping Git initialization.\");\n return;\n }\n\n const spinner = ora(\"Creating a new git repo...\\n\").start();\n\n const isRoot = isRootGitRepo(projectDir);\n const isInside = await isInsideGitRepo(projectDir);\n const dirName = path.parse(projectDir).name; // skip full path for logging\n\n if (isInside && isRoot) {\n // Dir is a root git repo\n spinner.stop();\n const overwriteGit = await p.confirm({\n message: `${chalk.redBright.bold(\n \"Warning:\",\n )} Git is already initialized in \"${dirName}\". Initializing a new git repository would delete the previous history. Would you like to continue anyways?`,\n initialValue: false,\n });\n\n if (!overwriteGit) {\n spinner.info(\"Skipping Git initialization.\");\n return;\n }\n // Deleting the .git folder\n fs.removeSync(path.join(projectDir, \".git\"));\n } else if (isInside && !isRoot) {\n // Dir is inside a git worktree\n spinner.stop();\n const initializeChildGitRepo = await p.confirm({\n message: `${chalk.redBright.bold(\n \"Warning:\",\n )} \"${dirName}\" is already in a git worktree. Would you still like to initialize a new git repository in this directory?`,\n initialValue: false,\n });\n if (!initializeChildGitRepo) {\n spinner.info(\"Skipping Git initialization.\");\n return;\n }\n }\n\n // We're good to go, initializing the git repo\n try {\n const branchName = getDefaultBranch();\n\n // --initial-branch flag was added in git v2.28.0\n const { major, minor } = getGitVersion();\n if (major < 2 || (major === 2 && minor < 28)) {\n await execa(\"git\", [\"init\"], { cwd: projectDir });\n // symbolic-ref is used here due to refs/heads/master not existing\n // It is only created after the first commit\n // https://superuser.com/a/1419674\n await execa(\"git\", [\"symbolic-ref\", \"HEAD\", `refs/heads/${branchName}`], {\n cwd: projectDir,\n });\n } else {\n await execa(\"git\", [\"init\", `--initial-branch=${branchName}`], {\n cwd: projectDir,\n });\n }\n await execa(\"git\", [\"add\", \".\"], { cwd: projectDir });\n await execa(\"git\", [\"commit\", \"-m\", \"Initial commit\"], {\n cwd: projectDir,\n });\n spinner.succeed(`${chalk.green(\"Successfully initialized and staged\")} ${chalk.green.bold(\"git\")}\\n`);\n } catch (_error) {\n // Safeguard, should be unreachable\n spinner.fail(`${chalk.bold.red(\"Failed:\")} could not initialize git. Update git to the latest version!\\n`);\n }\n};\n","import chalk from \"chalk\";\n\nimport { DEFAULT_APP_NAME } from \"~/consts.js\";\nimport type { InstallerOptions } from \"~/installers/index.js\";\nimport { getUserPkgManager } from \"~/utils/getUserPkgManager.js\";\nimport { logger } from \"~/utils/logger.js\";\n\n// This logs the next steps that the user should take in order to advance the project\nexport const logNextSteps = ({\n projectName = DEFAULT_APP_NAME,\n noInstall,\n}: Pick<InstallerOptions, \"projectName\" | \"noInstall\">) => {\n const pkgManager = getUserPkgManager();\n\n logger.info(chalk.bold(\"Next steps:\"));\n logger.dim(\"\\nNavigate to the project directory:\");\n projectName !== \".\" && logger.info(` cd ${projectName}`);\n logger.dim(\"(or open in your code editor, and run the rest of these commands from there)\");\n\n if (noInstall) {\n logger.dim(\"\\nInstall dependencies:\");\n // To reflect yarn's default behavior of installing packages when no additional args provided\n if (pkgManager === \"yarn\") {\n logger.info(` ${pkgManager}`);\n } else {\n logger.info(` ${pkgManager} install`);\n }\n }\n\n logger.dim(\"\\nStart the dev server to view your app in a browser:\");\n if ([\"npm\", \"bun\"].includes(pkgManager)) {\n logger.info(` ${pkgManager} run dev`);\n } else {\n logger.info(` ${pkgManager} dev`);\n }\n\n logger.dim(\"\\nOr, run the ProofKit command again to add more to your project:\");\n if ([\"npm\", \"bun\"].includes(pkgManager)) {\n logger.info(` ${pkgManager} run proofkit`);\n } else {\n logger.info(` ${pkgManager} proofkit`);\n }\n logger.dim(\"(Must be inside the project directory)\");\n};\n","import { replaceTextInFiles } from \"./replaceText.js\";\n\nconst TRAILING_SLASH_REGEX = /[^/]$/;\n\nexport const setImportAlias = (projectDir: string, importAlias: string) => {\n const normalizedImportAlias = importAlias\n .replace(/\\*/g, \"\") // remove any wildcards (~/* -> ~/)\n .replace(TRAILING_SLASH_REGEX, \"$&/\"); // ensure trailing slash (@ -> ~/)\n\n // update import alias in any files if not using the default\n replaceTextInFiles(projectDir, \"~/\", normalizedImportAlias);\n};\n","import { initEnvFile } from \"~/installers/envVars.js\";\nimport type { PackageManager } from \"~/utils/getUserPkgManager.js\";\n\n// Turning this into a const allows the list to be iterated over for programmatically creating prompt options\n// Should increase extensibility in the future\nexport const availablePackages = [\"nextAuth\", \"trpc\", \"envVariables\", \"fmdapi\", \"webViewerFetch\", \"clerk\"] as const;\nexport type AvailablePackages = (typeof availablePackages)[number];\n\nexport interface InstallerOptions {\n pkgManager: PackageManager;\n noInstall: boolean;\n packages?: PkgInstallerMap;\n projectName: string;\n scopedAppName: string;\n}\n\nexport type Installer = (opts: InstallerOptions) => void;\n\nexport type PkgInstallerMap = {\n [pkg in AvailablePackages]?: {\n inUse: boolean;\n installer: Installer;\n };\n};\n\nexport const buildPkgInstallerMap = (): PkgInstallerMap => ({\n envVariables: {\n inUse: true,\n installer: initEnvFile,\n },\n});\n","import path from \"node:path\";\nimport * as p from \"@clack/prompts\";\nimport type { OttoAPIKey } from \"@proofkit/fmdapi\";\nimport chalk from \"chalk\";\nimport dotenv from \"dotenv\";\n\nimport { getLayouts } from \"~/cli/fmdapi.js\";\nimport { abortIfCancel, UserAbortedError } from \"~/cli/utils.js\";\nimport { state } from \"~/state.js\";\nimport { getSettings } from \"~/utils/parseSettings.js\";\nimport { installFmAddon } from \"./install-fm-addon.js\";\n\nexport async function checkForWebViewerLayouts(): Promise<boolean> {\n const settings = getSettings();\n\n const dataSource = settings.dataSources\n .filter((s: { type: string }) => s.type === \"fm\")\n .find((s: { name: string; type: string }) => s.name === \"filemaker\") as\n | {\n type: \"fm\";\n name: string;\n envNames: { database: string; server: string; apiKey: string };\n }\n | undefined;\n\n if (!dataSource) {\n return false;\n }\n if (settings.envFile) {\n dotenv.config({\n path: path.join(state.projectDir, settings.envFile),\n });\n }\n const dataApiKey = process.env[dataSource.envNames.apiKey] as OttoAPIKey | undefined;\n const fmFile = process.env[dataSource.envNames.database];\n const server = process.env[dataSource.envNames.server];\n\n if (!(dataApiKey && fmFile && server)) {\n return false;\n }\n\n const existingLayouts = await getLayouts({\n dataApiKey,\n fmFile,\n server,\n });\n const webviewerLayouts = [\"ProofKitWV\"];\n\n const allWebViewerLayoutsExist = webviewerLayouts.every((layout) =>\n existingLayouts.some((l: string) => l === layout),\n );\n\n if (allWebViewerLayoutsExist) {\n console.log(\n chalk.green(\"Successfully detected all required layouts for ProofKit WebViewer in your FileMaker file.\"),\n );\n return true;\n }\n\n await installFmAddon({ addonName: \"wv\" });\n\n return false;\n}\n\nexport async function ensureWebViewerAddonInstalled() {\n let hasWebViewerLayouts = false;\n while (!hasWebViewerLayouts) {\n hasWebViewerLayouts = await checkForWebViewerLayouts();\n\n if (!hasWebViewerLayouts) {\n const shouldContinue = abortIfCancel<boolean>(\n await p.confirm({\n message: \"I have followed the above instructions, continue installing\",\n initialValue: true,\n active: \"Continue\",\n inactive: \"Abort\",\n }),\n );\n\n if (!shouldContinue) {\n throw new UserAbortedError();\n }\n }\n }\n}\n","export const removeTrailingSlash = (input: string) => {\n if (input.length > 1 && input.endsWith(\"/\")) {\n return input.slice(0, -1);\n }\n return input;\n};\n","import pathModule from \"node:path\";\n\nimport { removeTrailingSlash } from \"./removeTrailingSlash.js\";\n\n/**\n * Parses the appName and its path from the user input.\n *\n * Returns a tuple of of `[appName, path]`, where `appName` is the name put in the \"package.json\"\n * file and `path` is the path to the directory where the app will be created.\n *\n * If `appName` is \".\", the name of the directory will be used instead. Handles the case where the\n * input includes a scoped package name in which case that is being parsed as the name, but not\n * included as the path.\n *\n * For example:\n *\n * - dir/@mono/app => [\"@mono/app\", \"dir/app\"]\n * - dir/app => [\"app\", \"dir/app\"]\n */\nexport const parseNameAndPath = (rawInput: string) => {\n const input = removeTrailingSlash(rawInput);\n\n const paths = input.split(\"/\");\n\n let appName = paths.at(-1) ?? \"\";\n\n // If the user ran `npx proofkit .` or similar, the appName should be the current directory\n if (appName === \".\") {\n const parsedCwd = pathModule.resolve(process.cwd());\n appName = pathModule.basename(parsedCwd);\n }\n\n // If the first part is a @, it's a scoped package\n const indexOfDelimiter = paths.findIndex((p) => p.startsWith(\"@\"));\n if (paths.findIndex((p) => p.startsWith(\"@\")) !== -1) {\n appName = paths.slice(indexOfDelimiter).join(\"/\");\n }\n\n const path = paths.filter((p) => !p.startsWith(\"@\")).join(\"/\");\n\n return [appName, path] as const;\n};\n","import { removeTrailingSlash } from \"./removeTrailingSlash.js\";\n\nconst validationRegExp = /^(?:@[a-z0-9-*~][a-z0-9-*._~]*\\/)?[a-z0-9-~][a-z0-9-._~]*$/;\n\n//Validate a string against allowed package.json names\nexport const validateAppName = (rawInput: string) => {\n const input = removeTrailingSlash(rawInput);\n const paths = input.split(\"/\");\n\n // If the first part is a @, it's a scoped package\n const indexOfDelimiter = paths.findIndex((p) => p.startsWith(\"@\"));\n\n let appName = paths.at(-1);\n if (paths.findIndex((p) => p.startsWith(\"@\")) !== -1) {\n appName = paths.slice(indexOfDelimiter).join(\"/\");\n }\n\n if (input === \".\" || validationRegExp.test(appName ?? \"\")) {\n return;\n }\n return \"Name must consist of only lowercase alphanumeric characters, '-', and '_'\";\n};\n","import * as clack from \"@clack/prompts\";\nimport axios, { AxiosError } from \"axios\";\nimport chalk from \"chalk\";\nimport open from \"open\";\nimport randomstring from \"randomstring\";\nimport { z } from \"zod/v4\";\n\nimport { abortIfCancel } from \"./utils.js\";\n\ninterface WizardResponse {\n token: string;\n}\nexport async function getOttoFMSToken({ url }: { url: URL }): Promise<{ token: string }> {\n // generate a random string\n const hash = randomstring.generate({ length: 18, charset: \"alphanumeric\" });\n\n const loginUrl = new URL(`/otto/wizard/${hash}`, url.origin);\n\n const urlToOpen = loginUrl.toString();\n clack.log.info(\n `${chalk.bold(\n `If the browser window didn't open automatically, please open the following link to login into your OttoFMS server:`,\n )}\\n\\n${chalk.cyan(urlToOpen)}`,\n );\n\n open(loginUrl.toString()).catch(() => {\n // Ignore errors from open() - the user can manually open the URL\n });\n\n const loginSpinner = clack.spinner();\n\n loginSpinner.start(\"Waiting for you to log in using the link above\");\n\n const data = await new Promise<WizardResponse>((resolve) => {\n const pollingInterval = setInterval(() => {\n axios\n .get<{ response: WizardResponse }>(`${url.origin}/otto/api/cli/checkHash/${hash}`, {\n headers: {\n \"Accept-Encoding\": \"deflate\",\n },\n })\n .then((result) => {\n resolve(result.data.response);\n clearTimeout(timeout);\n clearInterval(pollingInterval);\n axios\n .delete(`${url.origin}/otto/api/cli/checkHash/${hash}`, {\n headers: {\n \"Accept-Encoding\": \"deflate\",\n },\n })\n .catch(() => {\n // Ignore cleanup errors\n });\n })\n .catch(() => {\n // noop - just try again\n });\n }, 500);\n\n const timeout = setTimeout(() => {\n clearInterval(pollingInterval);\n loginSpinner.stop(\"Login timed out. No worries - it happens to the best of us.\");\n }, 180_000); // 3 minutes\n });\n // clack.log.info(`Token: ${JSON.stringify(data)}`);\n\n loginSpinner.stop(\"Login complete.\");\n\n return data;\n}\n\ninterface ListFilesResponse {\n response: {\n databases: {\n clients: number;\n decryptHint: string;\n enabledExtPrivileges: string[];\n filename: string;\n folder: string;\n hasSavedDecryptKey: boolean;\n id: string;\n isEncrypted: boolean;\n size: number;\n status: string;\n }[];\n };\n}\n\nexport async function listFiles({ url, token }: { url: URL; token: string }) {\n const response = await axios.get<ListFilesResponse>(`${url.origin}/otto/fmi/admin/api/v2/databases`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n\n return response.data.response.databases;\n}\n\ninterface ListAPIKeysResponse {\n response: {\n \"api-keys\": {\n id: number;\n key: string;\n token: string;\n user: string;\n database: string;\n label: string;\n created_at: string;\n updated_at: string;\n }[];\n };\n}\n\nexport async function listAPIKeys({ url, token }: { url: URL; token: string }) {\n const response = await axios.get<ListAPIKeysResponse>(`${url.origin}/otto/api/api-key`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n\n return response.data.response[\"api-keys\"];\n}\n\ninterface CreateAPIKeyResponse {\n response: {\n key: string;\n token: string;\n };\n}\nexport async function createDataAPIKey({ url, filename }: { url: URL; filename: string }) {\n clack.log.info(\n `${chalk.cyan(\"Creating a Data API Key\")}\\nEnter FileMaker credentials for ${chalk.bold(filename)}.\\n${chalk.dim(\"The account must have the fmrest extended privilege enabled.\")}`,\n );\n\n while (true) {\n const username = abortIfCancel(\n await clack.text({\n message: `Enter the account name for ${chalk.bold(filename)}`,\n }),\n );\n\n const password = abortIfCancel(\n await clack.password({\n message: `Enter the password for ${chalk.bold(username)}`,\n }),\n );\n\n try {\n const response = await createDataAPIKeyWithCredentials({\n url,\n filename,\n username,\n password,\n });\n\n return response;\n } catch (error) {\n if (error instanceof AxiosError) {\n const respMsg =\n error.response?.data && \"messages\" in error.response.data\n ? (error.response.data as { messages?: { text?: string }[] }).messages?.[0]?.text\n : undefined;\n\n clack.log.error(\n `${chalk.red(\"Error creating Data API key:\")} ${respMsg ?? `Error code ${error.response?.status}`}\n${chalk.dim(\n error.response?.status === 400 &&\n `Common reasons this might happen:\n- The provided credentials are incorrect.\n- The account does not have the fmrest extended privilege enabled.\n\nYou may also want to try to create an API directly in the OttoFMS dashboard:\n${url.origin}/otto/app/api-keys`,\n)}\n `,\n );\n } else {\n clack.log.error(`${chalk.red(\"Error creating Data API key:\")} Unknown error`);\n }\n const tryAgain = abortIfCancel(\n await clack.confirm({\n message: \"Do you want to try and enter credentials again?\",\n active: \"Yes, try again\",\n inactive: \"No, abort\",\n }),\n );\n if (!tryAgain) {\n throw new Error(\"User cancelled\");\n }\n }\n }\n}\n\nexport async function createDataAPIKeyWithCredentials({\n url,\n filename,\n username,\n password,\n}: {\n url: URL;\n filename: string;\n username: string;\n password: string;\n}) {\n const response = await axios.post<CreateAPIKeyResponse>(`${url.origin}/otto/api/api-key/create-only`, {\n database: filename,\n label: \"For FM Web App\",\n user: username,\n pass: password,\n });\n\n return { apiKey: response.data.response.key };\n}\n\nexport async function startDeployment({ payload, url, token }: { payload: unknown; url: URL; token: string }) {\n const responseSchema = z.object({\n response: z.object({\n started: z.boolean(),\n batchId: z.number(),\n subDeploymentIds: z.array(z.number()),\n }),\n messages: z.array(z.object({ code: z.number(), text: z.string() })),\n });\n\n const response = await axios\n .post(`${url.origin}/otto/api/deployment`, payload, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n })\n .catch((error) => {\n console.error(error.response.data);\n throw error;\n });\n\n return responseSchema.parse(response.data);\n}\n\nexport async function getDeploymentStatus({\n url,\n token,\n deploymentId,\n}: {\n url: URL;\n token: string;\n deploymentId: number;\n}) {\n const schema = z.object({\n response: z.object({\n id: z.number(),\n status: z.enum([\"queued\", \"running\", \"scheduled\", \"complete\", \"aborted\", \"unknown\"]),\n running: z.coerce.boolean(),\n created_at: z.string(),\n started_at: z.string(),\n updated_at: z.string(),\n }),\n messages: z.array(z.object({ code: z.number(), text: z.string() })),\n });\n\n const response = await axios.get(`${url.origin}/otto/api/deployment/${deploymentId}`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n\n return schema.parse(response.data);\n}\n","const noop = ()=>{\n// noop\n};\nfunction createInnerProxy(callback, path, cache) {\n return new Proxy(noop, {\n get (_obj, key) {\n if (typeof key !== 'string' || key === 'then') {\n // special case for if the proxy is accidentally treated\n // like a PromiseLike (like in `Promise.resolve(proxy)`)\n return undefined;\n }\n return createInnerProxy(callback, [\n ...path,\n key\n ]);\n },\n apply (_1, _2, args) {\n const lastOfPath = path[path.length - 1];\n let opts = {\n args,\n path\n };\n // special handling for e.g. `trpc.hello.call(this, 'there')` and `trpc.hello.apply(this, ['there'])\n if (lastOfPath === 'call') {\n opts = {\n args: args.length >= 2 ? [\n args[1]\n ] : [],\n path: path.slice(0, -1)\n };\n } else if (lastOfPath === 'apply') {\n opts = {\n args: args.length >= 2 ? args[1] : [],\n path: path.slice(0, -1)\n };\n }\n return callback(opts);\n }\n });\n}\n/**\n * Creates a proxy that calls the callback with the path and arguments\n *\n * @internal\n */ const createRecursiveProxy = (callback)=>createInnerProxy(callback, []);\n/**\n * Used in place of `new Proxy` where each handler will map 1 level deep to another value.\n *\n * @internal\n */ const createFlatProxy = (callback)=>{\n return new Proxy(noop, {\n get (_obj, name) {\n if (typeof name !== 'string' || name === 'then') {\n // special case for if the proxy is accidentally treated\n // like a PromiseLike (like in `Promise.resolve(proxy)`)\n return undefined;\n }\n return callback(name);\n }\n });\n};\n\nexport { createFlatProxy, createRecursiveProxy };\n","/** @internal */ const unsetMarker = Symbol('unsetMarker');\n/**\n * Ensures there are no duplicate keys when building a procedure.\n * @internal\n */ function mergeWithoutOverrides(obj1, ...objs) {\n const newObj = Object.assign(Object.create(null), obj1);\n for (const overrides of objs){\n for(const key in overrides){\n if (key in newObj && newObj[key] !== overrides[key]) {\n throw new Error(`Duplicate key ${key}`);\n }\n newObj[key] = overrides[key];\n }\n }\n return newObj;\n}\n/**\n * Check that value is object\n * @internal\n */ function isObject(value) {\n return !!value && !Array.isArray(value) && typeof value === 'object';\n}\nfunction isFunction(fn) {\n return typeof fn === 'function';\n}\n/**\n * Create an object without inheriting anything from `Object.prototype`\n * @internal\n */ function omitPrototype(obj) {\n return Object.assign(Object.create(null), obj);\n}\nconst asyncIteratorsSupported = typeof Symbol === 'function' && !!Symbol.asyncIterator;\nfunction isAsyncIterable(value) {\n return asyncIteratorsSupported && isObject(value) && Symbol.asyncIterator in value;\n}\n/**\n * Run an IIFE\n */ const run = (fn)=>fn();\n\nexport { isAsyncIterable, isFunction, isObject, mergeWithoutOverrides, omitPrototype, run, unsetMarker };\n","import { isObject } from '../utils.mjs';\n\nclass UnknownCauseError extends Error {\n}\nfunction getCauseFromUnknown(cause) {\n if (cause instanceof Error) {\n return cause;\n }\n const type = typeof cause;\n if (type === 'undefined' || type === 'function' || cause === null) {\n return undefined;\n }\n // Primitive types just get wrapped in an error\n if (type !== 'object') {\n return new Error(String(cause));\n }\n // If it's an object, we'll create a synthetic error\n if (isObject(cause)) {\n const err = new UnknownCauseError();\n for(const key in cause){\n err[key] = cause[key];\n }\n return err;\n }\n return undefined;\n}\nfunction getTRPCErrorFromUnknown(cause) {\n if (cause instanceof TRPCError) {\n return cause;\n }\n if (cause instanceof Error && cause.name === 'TRPCError') {\n // https://github.com/trpc/trpc/pull/4848\n return cause;\n }\n const trpcError = new TRPCError({\n code: 'INTERNAL_SERVER_ERROR',\n cause\n });\n // Inherit stack from error\n if (cause instanceof Error && cause.stack) {\n trpcError.stack = cause.stack;\n }\n return trpcError;\n}\nclass TRPCError extends Error {\n constructor(opts){\n const cause = getCauseFromUnknown(opts.cause);\n const message = opts.message ?? cause?.message ?? opts.code;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore https://github.com/tc39/proposal-error-cause\n super(message, {\n cause\n });\n this.code = opts.code;\n this.name = 'TRPCError';\n if (!this.cause) {\n // < ES2022 / < Node 16.9.0 compatability\n this.cause = cause;\n }\n }\n}\n\nexport { TRPCError, getCauseFromUnknown, getTRPCErrorFromUnknown };\n","import { isObject } from './utils.mjs';\n\n/**\n * @internal\n */ function getDataTransformer(transformer) {\n if ('input' in transformer) {\n return transformer;\n }\n return {\n input: transformer,\n output: transformer\n };\n}\n/**\n * @internal\n */ const defaultTransformer = {\n input: {\n serialize: (obj)=>obj,\n deserialize: (obj)=>obj\n },\n output: {\n serialize: (obj)=>obj,\n deserialize: (obj)=>obj\n }\n};\nfunction transformTRPCResponseItem(config, item) {\n if ('error' in item) {\n return {\n ...item,\n error: config.transformer.output.serialize(item.error)\n };\n }\n if ('data' in item.result) {\n return {\n ...item,\n result: {\n ...item.result,\n data: config.transformer.output.serialize(item.result.data)\n }\n };\n }\n return item;\n}\n/**\n * Takes a unserialized `TRPCResponse` and serializes it with the router's transformers\n **/ function transformTRPCResponse(config, itemOrItems) {\n return Array.isArray(itemOrItems) ? itemOrItems.map((item)=>transformTRPCResponseItem(config, item)) : transformTRPCResponseItem(config, itemOrItems);\n}\n// FIXME:\n// - the generics here are probably unnecessary\n// - the RPC-spec could probably be simplified to combine HTTP + WS\n/** @internal */ function transformResultInner(response, transformer) {\n if ('error' in response) {\n const error = transformer.deserialize(response.error);\n return {\n ok: false,\n error: {\n ...response,\n error\n }\n };\n }\n const result = {\n ...response.result,\n ...(!response.result.type || response.result.type === 'data') && {\n type: 'data',\n data: transformer.deserialize(response.result.data)\n }\n };\n return {\n ok: true,\n result\n };\n}\nclass TransformResultError extends Error {\n constructor(){\n super('Unable to transform response from server');\n }\n}\n/**\n * Transforms and validates that the result is a valid TRPCResponse\n * @internal\n */ function transformResult(response, transformer) {\n let result;\n try {\n // Use the data transformers on the JSON-response\n result = transformResultInner(response, transformer);\n } catch (err) {\n throw new TransformResultError();\n }\n // check that output of the transformers is a valid TRPCResponse\n if (!result.ok && (!isObject(result.error.error) || typeof result.error.error['code'] !== 'number')) {\n throw new TransformResultError();\n }\n if (result.ok && !isObject(result.result)) {\n throw new TransformResultError();\n }\n return result;\n}\n\nexport { defaultTransformer, getDataTransformer, transformResult, transformTRPCResponse };\n","const defaultFormatter = ({ shape })=>{\n return shape;\n};\n\nexport { defaultFormatter };\n","import { TRPCError } from './error/TRPCError.mjs';\nimport { isObject } from './utils.mjs';\n\n/** @internal */ const middlewareMarker = 'middlewareMarker';\n/**\n * @internal\n */ function createMiddlewareFactory() {\n function createMiddlewareInner(middlewares) {\n return {\n _middlewares: middlewares,\n unstable_pipe (middlewareBuilderOrFn) {\n const pipedMiddleware = '_middlewares' in middlewareBuilderOrFn ? middlewareBuilderOrFn._middlewares : [\n middlewareBuilderOrFn\n ];\n return createMiddlewareInner([\n ...middlewares,\n ...pipedMiddleware\n ]);\n }\n };\n }\n function createMiddleware(fn) {\n return createMiddlewareInner([\n fn\n ]);\n }\n return createMiddleware;\n}\n/**\n * Create a standalone middleware\n * @link https://trpc.io/docs/v11/server/middlewares#experimental-standalone-middlewares\n * @deprecated use `.unstable_concat()` instead\n */ const experimental_standaloneMiddleware = ()=>({\n create: createMiddlewareFactory()\n });\n/**\n * @internal\n * Please note, `trpc-openapi` uses this function.\n */ function createInputMiddleware(parse) {\n const inputMiddleware = async function inputValidatorMiddleware(opts) {\n let parsedInput;\n const rawInput = await opts.getRawInput();\n try {\n parsedInput = await parse(rawInput);\n } catch (cause) {\n throw new TRPCError({\n code: 'BAD_REQUEST',\n cause\n });\n }\n // Multiple input parsers\n const combinedInput = isObject(opts.input) && isObject(parsedInput) ? {\n ...opts.input,\n ...parsedInput\n } : parsedInput;\n return opts.next({\n input: combinedInput\n });\n };\n inputMiddleware._type = 'input';\n return inputMiddleware;\n}\n/**\n * @internal\n */ function createOutputMiddleware(parse) {\n const outputMiddleware = async function outputValidatorMiddleware({ next }) {\n const result = await next();\n if (!result.ok) {\n // pass through failures without validating\n return result;\n }\n try {\n const data = await parse(result.data);\n return {\n ...result,\n data\n };\n } catch (cause) {\n throw new TRPCError({\n message: 'Output validation failed',\n code: 'INTERNAL_SERVER_ERROR',\n cause\n });\n }\n };\n outputMiddleware._type = 'output';\n return outputMiddleware;\n}\n\nexport { createInputMiddleware, createMiddlewareFactory, createOutputMiddleware, experimental_standaloneMiddleware, middlewareMarker };\n","// zod / typeschema\nfunction getParseFn(procedureParser) {\n const parser = procedureParser;\n if (typeof parser === 'function') {\n // ParserValibotEsque (>= v0.31.0)\n // ParserCustomValidatorEsque\n return parser;\n }\n if (typeof parser.parseAsync === 'function') {\n // ParserZodEsque\n return parser.parseAsync.bind(parser);\n }\n if (typeof parser.parse === 'function') {\n // ParserZodEsque\n // ParserValibotEsque (< v0.13.0)\n return parser.parse.bind(parser);\n }\n if (typeof parser.validateSync === 'function') {\n // ParserYupEsque\n return parser.validateSync.bind(parser);\n }\n if (typeof parser.create === 'function') {\n // ParserSuperstructEsque\n return parser.create.bind(parser);\n }\n if (typeof parser.assert === 'function') {\n // ParserScaleEsque\n return (value)=>{\n parser.assert(value);\n return value;\n };\n }\n throw new Error('Could not find a validator fn');\n}\n\nexport { getParseFn };\n","import { TRPCError, getTRPCErrorFromUnknown } from './error/TRPCError.mjs';\nimport { createInputMiddleware, createOutputMiddleware, middlewareMarker } from './middleware.mjs';\nimport { getParseFn } from './parser.mjs';\nimport { mergeWithoutOverrides } from './utils.mjs';\n\nfunction createNewBuilder(def1, def2) {\n const { middlewares =[] , inputs , meta , ...rest } = def2;\n // TODO: maybe have a fn here to warn about calls\n return createBuilder({\n ...mergeWithoutOverrides(def1, rest),\n inputs: [\n ...def1.inputs,\n ...inputs ?? []\n ],\n middlewares: [\n ...def1.middlewares,\n ...middlewares\n ],\n meta: def1.meta && meta ? {\n ...def1.meta,\n ...meta\n } : meta ?? def1.meta\n });\n}\nfunction createBuilder(initDef = {}) {\n const _def = {\n procedure: true,\n inputs: [],\n middlewares: [],\n ...initDef\n };\n const builder = {\n _def,\n input (input) {\n const parser = getParseFn(input);\n return createNewBuilder(_def, {\n inputs: [\n input\n ],\n middlewares: [\n createInputMiddleware(parser)\n ]\n });\n },\n output (output) {\n const parser = getParseFn(output);\n return createNewBuilder(_def, {\n output,\n middlewares: [\n createOutputMiddleware(parser)\n ]\n });\n },\n meta (meta) {\n return createNewBuilder(_def, {\n meta\n });\n },\n use (middlewareBuilderOrFn) {\n // Distinguish between a middleware builder and a middleware function\n const middlewares = '_middlewares' in middlewareBuilderOrFn ? middlewareBuilderOrFn._middlewares : [\n middlewareBuilderOrFn\n ];\n return createNewBuilder(_def, {\n middlewares: middlewares\n });\n },\n unstable_concat (builder) {\n return createNewBuilder(_def, builder._def);\n },\n query (resolver) {\n return createResolver({\n ..._def,\n type: 'query'\n }, resolver);\n },\n mutation (resolver) {\n return createResolver({\n ..._def,\n type: 'mutation'\n }, resolver);\n },\n subscription (resolver) {\n return createResolver({\n ..._def,\n type: 'subscription'\n }, resolver);\n },\n experimental_caller (caller) {\n return createNewBuilder(_def, {\n caller\n });\n }\n };\n return builder;\n}\nfunction createResolver(_defIn, resolver) {\n const finalBuilder = createNewBuilder(_defIn, {\n resolver,\n middlewares: [\n async function resolveMiddleware(opts) {\n const data = await resolver(opts);\n return {\n marker: middlewareMarker,\n ok: true,\n data,\n ctx: opts.ctx\n };\n }\n ]\n });\n const _def = {\n ...finalBuilder._def,\n type: _defIn.type,\n experimental_caller: Boolean(finalBuilder._def.caller),\n meta: finalBuilder._def.meta,\n $types: null\n };\n const invoke = createProcedureCaller(finalBuilder._def);\n const callerOverride = finalBuilder._def.caller;\n if (!callerOverride) {\n return invoke;\n }\n const callerWrapper = async (...args)=>{\n return await callerOverride({\n args,\n invoke,\n _def: _def\n });\n };\n callerWrapper._def = _def;\n return callerWrapper;\n}\nconst codeblock = `\nThis is a client-only function.\nIf you want to call this function on the server, see https://trpc.io/docs/v11/server/server-side-calls\n`.trim();\nfunction createProcedureCaller(_def) {\n async function procedure(opts) {\n // is direct server-side call\n if (!opts || !('getRawInput' in opts)) {\n throw new Error(codeblock);\n }\n // run the middlewares recursively with the resolver as the last one\n async function callRecursive(callOpts = {\n index: 0,\n ctx: opts.ctx\n }) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const middleware = _def.middlewares[callOpts.index];\n const result = await middleware({\n ctx: callOpts.ctx,\n type: opts.type,\n path: opts.path,\n getRawInput: callOpts.getRawInput ?? opts.getRawInput,\n meta: _def.meta,\n input: callOpts.input,\n next (_nextOpts) {\n const nextOpts = _nextOpts;\n return callRecursive({\n index: callOpts.index + 1,\n ctx: nextOpts && 'ctx' in nextOpts ? {\n ...callOpts.ctx,\n ...nextOpts.ctx\n } : callOpts.ctx,\n input: nextOpts && 'input' in nextOpts ? nextOpts.input : callOpts.input,\n getRawInput: nextOpts && 'getRawInput' in nextOpts ? nextOpts.getRawInput : callOpts.getRawInput\n });\n }\n });\n return result;\n } catch (cause) {\n return {\n ok: false,\n error: getTRPCErrorFromUnknown(cause),\n marker: middlewareMarker\n };\n }\n }\n // there's always at least one \"next\" since we wrap this.resolver in a middleware\n const result = await callRecursive();\n if (!result) {\n throw new TRPCError({\n code: 'INTERNAL_SERVER_ERROR',\n message: 'No result from middlewares - did you forget to `return next()`?'\n });\n }\n if (!result.ok) {\n // re-throw original error\n throw result.error;\n }\n return result.data;\n }\n procedure._def = _def;\n // FIXME typecast shouldn't be needed - fixittt\n return procedure;\n}\n\nexport { createBuilder };\n","/**\n * The default check to see if we're in a server\n */ const isServerDefault = typeof window === 'undefined' || 'Deno' in window || // eslint-disable-next-line @typescript-eslint/dot-notation\nglobalThis.process?.env?.['NODE_ENV'] === 'test' || !!globalThis.process?.env?.['JEST_WORKER_ID'] || !!globalThis.process?.env?.['VITEST_WORKER_ID'];\n\nexport { isServerDefault };\n","import { createRecursiveProxy } from './createProxy.mjs';\nimport { defaultFormatter } from './error/formatter.mjs';\nimport { TRPCError, getTRPCErrorFromUnknown } from './error/TRPCError.mjs';\nimport { defaultTransformer } from './transformer.mjs';\nimport { mergeWithoutOverrides, omitPrototype, isFunction } from './utils.mjs';\n\nfunction isRouter(procedureOrRouter) {\n return procedureOrRouter._def && 'router' in procedureOrRouter._def;\n}\nconst emptyRouter = {\n _ctx: null,\n _errorShape: null,\n _meta: null,\n queries: {},\n mutations: {},\n subscriptions: {},\n errorFormatter: defaultFormatter,\n transformer: defaultTransformer\n};\n/**\n * Reserved words that can't be used as router or procedure names\n */ const reservedWords = [\n /**\n * Then is a reserved word because otherwise we can't return a promise that returns a Proxy\n * since JS will think that `.then` is something that exists\n */ 'then',\n /**\n * `fn.call()` and `fn.apply()` are reserved words because otherwise we can't call a function using `.call` or `.apply`\n */ 'call',\n 'apply'\n];\n/**\n * @internal\n */ function createRouterFactory(config) {\n function createRouterInner(input) {\n const reservedWordsUsed = new Set(Object.keys(input).filter((v)=>reservedWords.includes(v)));\n if (reservedWordsUsed.size > 0) {\n throw new Error('Reserved words used in `router({})` call: ' + Array.from(reservedWordsUsed).join(', '));\n }\n const procedures = omitPrototype({});\n function step(from, path = []) {\n const aggregate = omitPrototype({});\n for (const [key, item] of Object.entries(from ?? {})){\n if (isRouter(item)) {\n aggregate[key] = step(item._def.record, [\n ...path,\n key\n ]);\n continue;\n }\n if (!isProcedure(item)) {\n // RouterRecord\n aggregate[key] = step(item, [\n ...path,\n key\n ]);\n continue;\n }\n const newPath = [\n ...path,\n key\n ].join('.');\n if (procedures[newPath]) {\n throw new Error(`Duplicate key: ${newPath}`);\n }\n procedures[newPath] = item;\n aggregate[key] = item;\n }\n return aggregate;\n }\n const record = step(input);\n const _def = {\n _config: config,\n router: true,\n procedures,\n ...emptyRouter,\n record\n };\n return {\n ...record,\n _def,\n createCaller: createCallerFactory()({\n _def\n })\n };\n }\n return createRouterInner;\n}\nfunction isProcedure(procedureOrRouter) {\n return typeof procedureOrRouter === 'function';\n}\n/**\n * @internal\n */ function callProcedure(opts) {\n const { type , path } = opts;\n const proc = opts.procedures[path];\n if (!proc || !isProcedure(proc) || proc._def.type !== type && !opts.allowMethodOverride) {\n throw new TRPCError({\n code: 'NOT_FOUND',\n message: `No \"${type}\"-procedure on path \"${path}\"`\n });\n }\n /* istanbul ignore if -- @preserve */ if (proc._def.type !== type && opts.allowMethodOverride && proc._def.type === 'subscription') {\n throw new TRPCError({\n code: 'METHOD_NOT_SUPPORTED',\n message: `Method override is not supported for subscriptions`\n });\n }\n return proc(opts);\n}\nfunction createCallerFactory() {\n return function createCallerInner(router) {\n const _def = router._def;\n return function createCaller(ctxOrCallback, options) {\n return createRecursiveProxy(async ({ path , args })=>{\n const fullPath = path.join('.');\n if (path.length === 1 && path[0] === '_def') {\n return _def;\n }\n const procedure = _def.procedures[fullPath];\n let ctx = undefined;\n try {\n ctx = isFunction(ctxOrCallback) ? await Promise.resolve(ctxOrCallback()) : ctxOrCallback;\n return await procedure({\n path: fullPath,\n getRawInput: async ()=>args[0],\n ctx,\n type: procedure._def.type\n });\n } catch (cause) {\n options?.onError?.({\n ctx,\n error: getTRPCErrorFromUnknown(cause),\n input: args[0],\n path: fullPath,\n type: procedure._def.type\n });\n throw cause;\n }\n });\n };\n };\n}\nfunction mergeRouters(...routerList) {\n const record = mergeWithoutOverrides({}, ...routerList.map((r)=>r._def.record));\n const errorFormatter = routerList.reduce((currentErrorFormatter, nextRouter)=>{\n if (nextRouter._def._config.errorFormatter && nextRouter._def._config.errorFormatter !== defaultFormatter) {\n if (currentErrorFormatter !== defaultFormatter && currentErrorFormatter !== nextRouter._def._config.errorFormatter) {\n throw new Error('You seem to have several error formatters');\n }\n return nextRouter._def._config.errorFormatter;\n }\n return currentErrorFormatter;\n }, defaultFormatter);\n const transformer = routerList.reduce((prev, current)=>{\n if (current._def._config.transformer && current._def._config.transformer !== defaultTransformer) {\n if (prev !== defaultTransformer && prev !== current._def._config.transformer) {\n throw new Error('You seem to have several transformers');\n }\n return current._def._config.transformer;\n }\n return prev;\n }, defaultTransformer);\n const router = createRouterFactory({\n errorFormatter,\n transformer,\n isDev: routerList.every((r)=>r._def._config.isDev),\n allowOutsideOfServer: routerList.every((r)=>r._def._config.allowOutsideOfServer),\n isServer: routerList.every((r)=>r._def._config.isServer),\n $types: routerList[0]?._def._config.$types\n })(record);\n return router;\n}\n\nexport { callProcedure, createCallerFactory, createRouterFactory, mergeRouters };\n","import { defaultFormatter } from './error/formatter.mjs';\nimport { createMiddlewareFactory } from './middleware.mjs';\nimport { createBuilder } from './procedureBuilder.mjs';\nimport { isServerDefault } from './rootConfig.mjs';\nimport { createRouterFactory, mergeRouters, createCallerFactory } from './router.mjs';\nimport { getDataTransformer, defaultTransformer } from './transformer.mjs';\n\nclass TRPCBuilder {\n /**\n * Add a context shape as a generic to the root object\n * @link https://trpc.io/docs/v11/server/context\n */ context() {\n return new TRPCBuilder();\n }\n /**\n * Add a meta shape as a generic to the root object\n * @link https://trpc.io/docs/v11/quickstart\n */ meta() {\n return new TRPCBuilder();\n }\n /**\n * Create the root object\n * @link https://trpc.io/docs/v11/server/routers#initialize-trpc\n */ create(opts) {\n const config = {\n transformer: getDataTransformer(opts?.transformer ?? defaultTransformer),\n isDev: opts?.isDev ?? // eslint-disable-next-line @typescript-eslint/dot-notation\n globalThis.process?.env['NODE_ENV'] !== 'production',\n allowOutsideOfServer: opts?.allowOutsideOfServer ?? false,\n errorFormatter: opts?.errorFormatter ?? defaultFormatter,\n isServer: opts?.isServer ?? isServerDefault,\n /**\n * These are just types, they can't be used at runtime\n * @internal\n */ $types: null,\n experimental: opts?.experimental ?? {}\n };\n {\n // Server check\n const isServer = opts?.isServer ?? isServerDefault;\n if (!isServer && opts?.allowOutsideOfServer !== true) {\n throw new Error(`You're trying to use @trpc/server in a non-server environment. This is not supported by default.`);\n }\n }\n return {\n /**\n * Your router config\n * @internal\n */ _config: config,\n /**\n * Builder object for creating procedures\n * @link https://trpc.io/docs/v11/server/procedures\n */ procedure: createBuilder({\n meta: opts?.defaultMeta\n }),\n /**\n * Create reusable middlewares\n * @link https://trpc.io/docs/v11/server/middlewares\n */ middleware: createMiddlewareFactory(),\n /**\n * Create a router\n * @link https://trpc.io/docs/v11/server/routers\n */ router: createRouterFactory(config),\n /**\n * Merge Routers\n * @link https://trpc.io/docs/v11/server/merging-routers\n */ mergeRouters,\n /**\n * Create a server-side caller for a router\n * @link https://trpc.io/docs/v11/server/server-side-calls\n */ createCallerFactory: createCallerFactory()\n };\n }\n}\n/**\n * Builder to initialize the tRPC root object - use this exactly once per backend\n * @link https://trpc.io/docs/v11/quickstart\n */ const initTRPC = new TRPCBuilder();\n\nexport { initTRPC };\n","import https from \"node:https\";\nimport { TRPCError } from \"@trpc/server\";\nimport axios from \"axios\";\nimport z from \"zod/v4\";\n\nexport async function fetchServerVersions({ url, ottoPort = 3030 }: { url: string; ottoPort?: number }) {\n const fmsInfo = await fetchFMSVersionInfo(url);\n const ottoInfo = await fetchOttoVersion({ url, ottoPort });\n return { fmsInfo, ottoInfo };\n}\n\nconst fmsInfoSchema = z.object({\n data: z.object({\n APIVersion: z.number().optional(),\n AcceptEARPassword: z.boolean().optional(),\n AcceptEncrypted: z.boolean().optional(),\n AcceptUnencrypted: z.boolean().optional(),\n AdminLocalAuth: z.string().optional(),\n AllowChangeUploadDBFolder: z.boolean().optional(),\n AutoOpenForUpload: z.boolean().optional(),\n DenyGuestAndAutoLogin: z.string().optional(),\n Hostname: z.string().optional(),\n IsAppleInternal: z.boolean().optional(),\n IsETS: z.boolean().optional(),\n PremisesType: z.string().optional(),\n ProductVersion: z.string().optional(),\n PublicKey: z.string().optional(),\n RequiresDBPasswords: z.boolean().optional(),\n ServerID: z.string().optional(),\n ServerVersion: z.string(),\n }),\n result: z.number(),\n});\n\nexport async function fetchFMSVersionInfo(url: string) {\n const fmsUrl = new URL(url);\n fmsUrl.pathname = \"/fmws/serverinfo\";\n\n const fmsInfoResult = await fetchWithoutSSL(fmsUrl.toString()).then((r) => fmsInfoSchema.safeParse(r.data));\n if (!fmsInfoResult.success) {\n console.error(\"fmsInfoResult.error\", fmsInfoResult.error.issues);\n throw new TRPCError({\n code: \"BAD_REQUEST\",\n message: \"Invalid FileMaker Server URL\",\n });\n }\n return fmsInfoResult.data.data;\n}\n\nconst ottoInfoSchema = z.object({\n Otto: z.object({\n version: z.string(),\n serverNickname: z.string().default(\"\"),\n isLicenseValid: z.boolean().optional(),\n }),\n migratorVersion: z.string().optional(),\n FileMakerServer: z.object({\n version: z.object({\n long: z.string(),\n short: z.string(),\n }),\n running: z.boolean().optional(),\n }),\n isMac: z.boolean().optional(),\n platform: z.string().optional(),\n host: z.string().optional(),\n});\n\nconst ottoInfoResponseSchema = z.object({\n response: ottoInfoSchema,\n});\n\nexport async function fetchOttoVersion({\n url,\n ottoPort = 3030,\n}: {\n url: string;\n ottoPort?: number | null;\n}): Promise<z.infer<typeof ottoInfoSchema> | null> {\n let ottoInfo = await fetchOtto4Version(url);\n if (!ottoInfo) {\n ottoInfo = await fetchOtto3Version(url, ottoPort);\n }\n return ottoInfo;\n}\n\nasync function fetchOtto4Version(url: string) {\n try {\n const otto4Url = new URL(url);\n otto4Url.pathname = \"/otto/api/info\";\n const otto4Info = await fetchWithoutSSL(otto4Url.toString()).then((r) => {\n return ottoInfoResponseSchema.parse(r.data).response;\n });\n return otto4Info;\n } catch (_error) {\n console.log(\"unable to fetch otto4 info, trying otto3\");\n return null;\n }\n}\n\nasync function fetchOtto3Version(url: string, ottoPort: number | null) {\n try {\n const otto3Url = new URL(url);\n otto3Url.port = ottoPort ? ottoPort.toString() : \"3030\";\n otto3Url.pathname = \"/api/otto/info\";\n const ottoInfo = await fetchWithoutSSL(otto3Url.toString()).then((res) => {\n return ottoInfoSchema.parse(res.data);\n });\n return ottoInfo;\n } catch (error) {\n if (error instanceof Error) {\n console.error(\"otto3 fetch error\", error.message);\n }\n return null;\n }\n}\n\nasync function fetchWithoutSSL(url: string) {\n const agent = new https.Agent({\n rejectUnauthorized: false,\n });\n\n const result = await axios.get(url, {\n validateStatus: null,\n headers: { Connection: \"close\" },\n httpsAgent: agent,\n timeout: 10_000,\n });\n\n return result;\n}\n","import path from \"node:path\";\nimport * as p from \"@clack/prompts\";\nimport type { OttoAPIKey } from \"@proofkit/fmdapi\";\nimport type { ValueListsOptions } from \"@proofkit/typegen/config\";\nimport chalk from \"chalk\";\nimport { Command } from \"commander\";\nimport dotenv from \"dotenv\";\nimport { z } from \"zod/v4\";\nimport { addLayout, getExistingSchemas } from \"~/generators/fmdapi.js\";\nimport { state } from \"~/state.js\";\nimport { getSettings, type Settings } from \"~/utils/parseSettings.js\";\nimport { commonFileMakerLayoutPrefixes, getLayouts } from \"../fmdapi.js\";\nimport { abortIfCancel } from \"../utils.js\";\n\n// Regex to validate JavaScript variable names\nconst VALID_JS_VARIABLE_NAME = /^[a-zA-Z_$][a-zA-Z_$0-9]*$/;\n\nexport const runAddSchemaAction = async (opts?: {\n projectDir?: string;\n settings: Settings;\n sourceName?: string;\n layoutName?: string;\n schemaName?: string;\n valueLists?: ValueListsOptions;\n}) => {\n const settings = getSettings();\n const projectDir = state.projectDir;\n let sourceName = opts?.sourceName;\n if (sourceName) {\n sourceName = opts?.sourceName;\n } else if (settings.dataSources.filter((s) => s.type === \"fm\").length > 1) {\n // if there is more than one fm data source, we need to prompt for which one to add the layout to\n const dataSourceName = await p.select({\n message: \"Which FileMaker data source do you want to add a layout to?\",\n options: settings.dataSources.filter((s) => s.type === \"fm\").map((s) => ({ label: s.name, value: s.name })),\n });\n if (p.isCancel(dataSourceName)) {\n p.cancel();\n process.exit(0);\n }\n sourceName = z.string().parse(dataSourceName);\n }\n\n if (!sourceName) {\n sourceName = \"filemaker\";\n }\n\n const dataSource = settings.dataSources.filter((s) => s.type === \"fm\").find((s) => s.name === sourceName);\n if (!dataSource) {\n throw new Error(`FileMaker data source ${sourceName} not found in your ProofKit config`);\n }\n\n const spinner = p.spinner();\n spinner.start(\"Loading layouts from your FileMaker file...\");\n if (settings.envFile) {\n dotenv.config({\n path: path.join(projectDir, settings.envFile),\n });\n }\n\n const dataApiKey = process.env[dataSource.envNames.apiKey];\n const fmFile = process.env[dataSource.envNames.database];\n const server = process.env[dataSource.envNames.server];\n\n if (!(dataApiKey && fmFile && server)) {\n spinner.stop(\"Failed to load layouts\");\n p.cancel(\"Missing required environment variables. Please check your .env file.\");\n process.exit(1);\n }\n\n // Validate API key format\n if (!(dataApiKey.startsWith(\"KEY_\") || dataApiKey.startsWith(\"dk_\"))) {\n spinner.stop(\"Failed to load layouts\");\n p.cancel(\"Invalid API key format. API key must start with 'KEY_' or 'dk_'.\");\n process.exit(1);\n }\n\n // Type assertion after validation\n const validatedApiKey: OttoAPIKey = dataApiKey as OttoAPIKey;\n\n const layouts = await getLayouts({\n dataApiKey: validatedApiKey,\n fmFile,\n server,\n });\n\n const existingConfigResults = getExistingSchemas({\n projectDir,\n dataSourceName: sourceName,\n });\n\n const existingLayouts = existingConfigResults.map((s) => s.layout).filter(Boolean);\n\n const existingSchemas = existingConfigResults.map((s) => s.schemaName).filter(Boolean);\n\n spinner.stop(\"Loaded layouts from your FileMaker file\");\n\n if (existingLayouts.length > 0) {\n p.note(existingLayouts.join(\"\\n\"), \"Detected existing layouts in your project\");\n }\n\n // list other common layout names to exclude\n existingLayouts.push(\"-\");\n\n let passedInLayoutName: string | undefined = opts?.layoutName;\n if (passedInLayoutName === \"\" || !layouts.includes(passedInLayoutName ?? \"\")) {\n passedInLayoutName = undefined;\n }\n\n const selectedLayout =\n passedInLayoutName ??\n abortIfCancel(\n await p.select({\n message: \"Select a new layout to read data from\",\n maxItems: 10,\n options: layouts\n .filter((layout) => !existingLayouts.includes(layout))\n .map((layout) => ({\n label: layout,\n value: layout,\n })),\n }),\n );\n\n const defaultSchemaName = getDefaultSchemaName(selectedLayout);\n const schemaName =\n opts?.schemaName ||\n abortIfCancel(\n await p.text({\n message: `Enter a friendly name for the new schema.\\n${chalk.dim(\"This will the name by which you refer to this layout in your codebase\")}`,\n // initialValue: selectedLayout,\n defaultValue: defaultSchemaName,\n placeholder: defaultSchemaName,\n validate: (input) => {\n if (input === \"\") {\n return; // allow empty input for the default value\n }\n // ensure the input is a valid JS variable name\n if (!VALID_JS_VARIABLE_NAME.test(input)) {\n return \"Name must consist of only alphanumeric characters, '_', and must not start with a number\";\n }\n if (existingSchemas.includes(input)) {\n return \"Schema name must be unique\";\n }\n return;\n },\n }),\n ).toString();\n\n const valueLists =\n opts?.valueLists ??\n ((await p.select({\n message: `Should we use value lists on this layout?\\n${chalk.dim(\n \"This will allow fields that contain a value list to be auto-completed in typescript and also validated to prevent incorrect values\",\n )}`,\n options: [\n {\n label: \"Yes, but allow empty fields\",\n value: \"allowEmpty\",\n hint: \"Empty fields or values that don't match the value list will be converted to an empty string\",\n },\n {\n label: \"Yes; empty values should fail validation\",\n value: \"strict\",\n hint: \"Empty fields or values that don't match the value list will cause validation to fail\",\n },\n {\n label: \"No, ignore value lists\",\n value: \"ignore\",\n hint: \"Fields will just be typed as strings\",\n },\n ],\n })) as ValueListsOptions);\n\n const valueListsValidated = z.enum([\"ignore\", \"allowEmpty\", \"strict\"]).catch(\"ignore\").parse(valueLists);\n\n await addLayout({\n runCodegen: true,\n projectDir,\n dataSourceName: sourceName,\n schemas: [\n {\n layoutName: selectedLayout,\n schemaName,\n valueLists: valueListsValidated,\n },\n ],\n });\n\n p.outro(`Layout \"${selectedLayout}\" added to your project as \"${schemaName}\"`);\n};\n\nexport const makeAddSchemaCommand = () => {\n const addSchemaCommand = new Command(\"layout\")\n .alias(\"schema\")\n .description(\"Add a new layout to your fmschema file\")\n .action(async (opts: { settings: Settings }) => {\n const settings = opts.settings;\n\n await runAddSchemaAction({ settings });\n });\n\n return addSchemaCommand;\n};\n\nfunction getDefaultSchemaName(layout: string) {\n let schemaName = layout.replace(/[-\\s]/g, \"_\");\n for (const prefix of commonFileMakerLayoutPrefixes) {\n if (schemaName.startsWith(prefix)) {\n schemaName = schemaName.replace(prefix, \"\");\n }\n }\n return schemaName;\n}\n","import * as p from \"@clack/prompts\";\n\nimport { createDataAPIKeyWithCredentials, getDeploymentStatus, startDeployment } from \"~/cli/ottofms.js\";\n\nexport const filename = \"ProofKitDemo.fmp12\";\n\nexport async function deployDemoFile({\n url,\n token,\n operation,\n}: {\n url: URL;\n token: string;\n operation: \"install\" | \"replace\";\n}): Promise<{ apiKey: string }> {\n const deploymentJSON = {\n scheduled: false,\n label: \"Install ProofKit Demo\",\n deployments: [\n {\n name: \"Install ProofKit Demo\",\n source: {\n type: \"url\",\n url: \"https://proofkit.dev/proofkit-demo/manifest.json\",\n },\n fileOperations: [\n {\n target: {\n fileName: filename,\n },\n operation,\n source: {\n fileName: \"ProofKitDemo.fmp12\",\n },\n location: {\n folder: \"default\",\n subFolder: \"\",\n },\n },\n ],\n concurrency: 1,\n options: {\n closeFilesAfterBuild: false,\n keepFilesClosedAfterComplete: false,\n transferContainerData: false,\n },\n },\n ],\n abortRemaining: false,\n };\n\n const spinner = p.spinner();\n spinner.start(\"Deploying ProofKit Demo file...\");\n\n const {\n response: { subDeploymentIds },\n } = await startDeployment({\n payload: deploymentJSON,\n url,\n token,\n });\n\n const deploymentId = subDeploymentIds[0];\n if (!deploymentId) {\n throw new Error(\"No deployment ID returned from the server\");\n }\n\n while (true) {\n // wait 2.5 seconds, then poll the status again\n await new Promise((resolve) => setTimeout(resolve, 2500));\n\n const {\n response: { status, running },\n } = await getDeploymentStatus({\n url,\n token,\n deploymentId,\n });\n if (!running) {\n if (status !== \"complete\") {\n throw new Error(\"Deployment didn't complete\");\n }\n break;\n }\n }\n\n const { apiKey } = await createDataAPIKeyWithCredentials({\n filename,\n username: \"admin\",\n password: \"admin\",\n url,\n });\n\n spinner.stop();\n\n return { apiKey };\n}\n","import * as p from \"@clack/prompts\";\nimport chalk from \"chalk\";\nimport { SemVer } from \"semver\";\nimport type { z } from \"zod/v4\";\n\nimport { createDataAPIKey, getOttoFMSToken, listAPIKeys, listFiles } from \"~/cli/ottofms.js\";\nimport { abortIfCancel } from \"~/cli/utils.js\";\nimport { addToFmschemaConfig } from \"~/generators/fmdapi.js\";\nimport { fetchServerVersions } from \"~/helpers/version-fetcher.js\";\nimport { addPackageDependency } from \"~/utils/addPackageDependency.js\";\nimport { addToEnv } from \"~/utils/addToEnvs.js\";\nimport { type dataSourceSchema, getSettings, setSettings } from \"~/utils/parseSettings.js\";\nimport { formatAndSaveSourceFiles, getNewProject } from \"~/utils/ts-morph.js\";\nimport { validateAppName } from \"~/utils/validateAppName.js\";\nimport { runAddSchemaAction } from \"../fmschema.js\";\nimport { deployDemoFile, filename } from \"./deploy-demo-file.js\";\n\nexport async function promptForFileMakerDataSource({\n projectDir,\n ...opts\n}: {\n projectDir: string;\n name?: string;\n server?: string;\n adminApiKey?: string;\n fileName?: string;\n dataApiKey?: string;\n layoutName?: string;\n schemaName?: string;\n}) {\n const settings = getSettings();\n\n const existingFmDataSourceNames = settings.dataSources.filter((ds) => ds.type === \"fm\").map((ds) => ds.name);\n\n const server = await getValidFileMakerServerUrl(opts.server);\n\n const canDoBrowserLogin = server.ottoVersion && server.ottoVersion.compare(new SemVer(\"4.7.0\")) > 0;\n\n if (!(canDoBrowserLogin || opts.adminApiKey)) {\n return p.cancel(\n \"OttoFMS 4.7.0 or later is required to auto-login with this CLI. Please install/upgrade OttoFMS on your server, or pass an Admin API key with the --adminApiKey flag then try again\",\n );\n }\n\n const token = opts.adminApiKey || (await getOttoFMSToken({ url: server.url })).token;\n\n const fileList = await listFiles({ url: server.url, token });\n const demoFileExists = fileList.map((f) => f.filename.replace(\".fmp12\", \"\")).includes(filename.replace(\".fmp12\", \"\"));\n let fmFile = opts.fileName;\n while (true) {\n fmFile =\n opts.fileName ||\n abortIfCancel(\n await p.select({\n message: `Which file would you like to connect to? ${chalk.dim(\"(TIP: Select the file where your data is stored)\")}`,\n maxItems: 10,\n options: [\n {\n value: \"$deployDemoFile\",\n label: \"Deploy NEW ProofKit Demo File\",\n hint: \"Use OttoFMS to deploy a new file for testing\",\n },\n ...fileList\n .sort((a, b) => a.filename.localeCompare(b.filename))\n .map((file) => ({\n value: file.filename,\n label: file.filename,\n })),\n ],\n }),\n );\n\n if (fmFile !== \"$deployDemoFile\") {\n break;\n }\n\n if (demoFileExists) {\n const replace = abortIfCancel(\n await p.confirm({\n message: \"The demo file already exists, do you want to replace it with a fresh copy?\",\n active: \"Yes, replace\",\n inactive: \"No, select another file\",\n initialValue: false,\n }),\n );\n if (replace) {\n break;\n }\n } else {\n break;\n }\n }\n\n if (!fmFile) {\n throw new Error(\"No file selected\");\n }\n\n let dataApiKey = opts.dataApiKey;\n if (fmFile === \"$deployDemoFile\") {\n const { apiKey } = await deployDemoFile({\n url: server.url,\n token,\n operation: demoFileExists ? \"replace\" : \"install\",\n });\n dataApiKey = apiKey;\n fmFile = filename;\n opts.layoutName = opts.layoutName ?? \"API_Contacts\";\n opts.schemaName = opts.schemaName ?? \"Contacts\";\n } else {\n const allApiKeys = await listAPIKeys({ url: server.url, token });\n const thisFileApiKeys = allApiKeys.filter((key) => key.database === fmFile);\n\n if (!dataApiKey && thisFileApiKeys.length > 0) {\n const selectedKey = abortIfCancel(\n await p.select({\n message: `Which OttoFMS Data API key would you like to use? ${chalk.dim(`(This determines the access that you'll have to the data in this file)`)}`,\n options: [\n ...thisFileApiKeys.map((key) => ({\n value: key.key,\n label: `${chalk.bold(key.label)} - ${key.user}`,\n hint: `${key.key.slice(0, 5)}...${key.key.slice(-4)}`,\n })),\n {\n value: \"create\",\n label: \"Create a new API key\",\n hint: \"Requires FileMaker credentials for this file\",\n },\n ],\n }),\n );\n if (typeof selectedKey !== \"string\") {\n throw new Error(\"Invalid key\");\n }\n if (selectedKey !== \"create\") {\n dataApiKey = selectedKey;\n }\n }\n\n if (!dataApiKey) {\n // data api was not provided, prompt to create a new one\n const resp = await createDataAPIKey({\n filename: fmFile,\n url: server.url,\n });\n dataApiKey = resp.apiKey;\n }\n }\n if (!dataApiKey) {\n throw new Error(\"No API key\");\n }\n\n const name =\n existingFmDataSourceNames.length === 0\n ? \"filemaker\"\n : (opts.name ??\n abortIfCancel(\n await p.text({\n message: \"What do you want to call this data source?\",\n validate: (value) => {\n if (value === \"filemaker\") {\n return \"That name is reserved\";\n }\n\n // require name to be unique\n if (existingFmDataSourceNames?.includes(value)) {\n return \"That name is already in use in this project, pick something unique\";\n }\n\n // require name to be alphanumeric, lowercase, etc\n return validateAppName(value);\n },\n }),\n ));\n\n const newDataSource: z.infer<typeof dataSourceSchema> = {\n type: \"fm\",\n name,\n envNames:\n name === \"filemaker\"\n ? {\n database: \"FM_DATABASE\",\n server: \"FM_SERVER\",\n apiKey: \"OTTO_API_KEY\",\n }\n : {\n database: `${name.toUpperCase()}_FM_DATABASE`,\n server: `${name.toUpperCase()}_FM_SERVER`,\n apiKey: `${name.toUpperCase()}_OTTO_API_KEY`,\n },\n };\n\n const project = getNewProject(projectDir);\n\n const schemaFile = await addToEnv({\n projectDir,\n project,\n envs: [\n {\n name: newDataSource.envNames.database,\n zodValue: `z.string().endsWith(\".fmp12\")`,\n defaultValue: fmFile,\n type: \"server\",\n },\n {\n name: newDataSource.envNames.server,\n zodValue: \"z.string().url()\",\n type: \"server\",\n defaultValue: server.url.origin,\n },\n {\n name: newDataSource.envNames.apiKey,\n zodValue: `z.string().startsWith(\"dk_\") as z.ZodType<OttoAPIKey>`,\n type: \"server\",\n defaultValue: dataApiKey,\n },\n ],\n });\n\n const fmdapiImport = schemaFile.getImportDeclaration((imp) => imp.getModuleSpecifierValue() === \"@proofkit/fmdapi\");\n if (fmdapiImport) {\n fmdapiImport\n .getNamedImports()\n .find((imp) => imp.getName() === \"OttoAPIKey\")\n ?.remove();\n fmdapiImport.addNamedImport({ name: \"OttoAPIKey\", isTypeOnly: true });\n } else {\n schemaFile.addImportDeclaration({\n namedImports: [{ name: \"OttoAPIKey\", isTypeOnly: true }],\n moduleSpecifier: \"@proofkit/fmdapi\",\n });\n }\n\n addPackageDependency({\n projectDir,\n dependencies: [\"@proofkit/fmdapi\"],\n devMode: false,\n });\n\n settings.dataSources.push(newDataSource);\n setSettings(settings);\n\n addToFmschemaConfig({\n dataSourceName: name,\n envNames: name === \"filemaker\" ? undefined : newDataSource.envNames,\n });\n\n await formatAndSaveSourceFiles(project);\n\n // now prompt for layout\n await runAddSchemaAction({\n settings,\n sourceName: name,\n projectDir,\n layoutName: opts.layoutName,\n schemaName: opts.schemaName,\n valueLists: \"allowEmpty\",\n });\n}\n\nasync function getValidFileMakerServerUrl(defaultServerUrl?: string | undefined): Promise<{\n url: URL;\n fmsVersion: SemVer;\n ottoVersion: SemVer | null;\n}> {\n const spinner = p.spinner();\n let url: URL | null = null;\n let fmsVersion: SemVer | null = null;\n let ottoVersion: SemVer | null = null;\n let serverUrlToUse = defaultServerUrl;\n\n while (fmsVersion === null) {\n const serverUrl =\n serverUrlToUse ??\n abortIfCancel(\n await p.text({\n message: `What is the URL of your FileMaker Server?\\n${chalk.cyan(\"TIP: You can copy any valid path on the server and paste it here.\")}`,\n validate: (value) => {\n try {\n // try to make sure the url is https\n let normalizedValue = value;\n if (!normalizedValue.startsWith(\"https://\")) {\n if (normalizedValue.startsWith(\"http://\")) {\n normalizedValue = normalizedValue.replace(\"http://\", \"https://\");\n } else {\n normalizedValue = `https://${normalizedValue}`;\n }\n }\n\n // try to make sure the url is valid\n new URL(normalizedValue);\n return;\n } catch {\n return \"Please enter a valid URL\";\n }\n },\n }),\n );\n\n try {\n url = new URL(serverUrl);\n } catch {\n p.log.error(`Invalid URL: ${serverUrl.toString()}`);\n continue;\n }\n\n spinner.start(\"Validating Server URL...\");\n\n // check for FileMaker and Otto versions\n const { fmsInfo, ottoInfo } = await fetchServerVersions({\n url: url.origin,\n });\n\n spinner.stop();\n\n const fmsVersionString = fmsInfo.ServerVersion.split(\" \")[0];\n if (!fmsVersionString) {\n p.log.error(\"Unable to parse FileMaker Server version\");\n serverUrlToUse = undefined;\n continue;\n }\n fmsVersion = new SemVer(fmsVersionString);\n ottoVersion = ottoInfo?.Otto.version ? new SemVer(ottoInfo.Otto.version) : null;\n serverUrlToUse = undefined;\n }\n\n if (url === null) {\n throw new Error(\"Unable to get FileMaker Server URL\");\n }\n\n p.note(`🎉 FileMaker Server version ${fmsVersion} detected \\n\n ${ottoVersion ? `🎉 OttoFMS version ${ottoVersion} detected` : \"❌ OttoFMS not detected\"}`);\n\n return { url, ottoVersion, fmsVersion };\n}\n","import path from \"node:path\";\nimport { select, text } from \"@clack/prompts\";\nimport { Command } from \"commander\";\nimport { execa } from \"execa\";\nimport fs from \"fs-extra\";\nimport type { PackageJson } from \"type-fest\";\n\nimport { DEFAULT_APP_NAME } from \"~/consts.js\";\nimport { addAuth } from \"~/generators/auth.js\";\nimport { runCodegenCommand } from \"~/generators/fmdapi.js\";\nimport { ciOption, debugOption } from \"~/globalOptions.js\";\nimport { createBareProject } from \"~/helpers/createProject.js\";\nimport { initializeGit } from \"~/helpers/git.js\";\nimport { installDependencies } from \"~/helpers/installDependencies.js\";\nimport { logNextSteps } from \"~/helpers/logNextSteps.js\";\nimport { setImportAlias } from \"~/helpers/setImportAlias.js\";\nimport { buildPkgInstallerMap } from \"~/installers/index.js\";\nimport { ensureWebViewerAddonInstalled } from \"~/installers/proofkit-webviewer.js\";\nimport { initProgramState, state } from \"~/state.js\";\nimport { getVersion } from \"~/utils/getProofKitVersion.js\";\nimport { getUserPkgManager } from \"~/utils/getUserPkgManager.js\";\nimport { parseNameAndPath } from \"~/utils/parseNameAndPath.js\";\nimport { type Settings, setSettings } from \"~/utils/parseSettings.js\";\nimport { validateAppName } from \"~/utils/validateAppName.js\";\nimport { promptForFileMakerDataSource } from \"./add/data-source/filemaker.js\";\nimport { abortIfCancel } from \"./utils.js\";\n\ninterface CliFlags {\n noGit: boolean;\n noInstall: boolean;\n default: boolean;\n importAlias: string;\n server?: string;\n adminApiKey?: string;\n fileName: string;\n layoutName: string;\n schemaName: string;\n dataApiKey: string;\n fmServerURL: string;\n auth: \"none\" | \"next-auth\" | \"clerk\";\n dataSource?: \"filemaker\" | \"none\" | \"supabase\";\n /** @internal UI library selection; hidden flag */\n ui?: \"shadcn\" | \"mantine\";\n /** @internal Used in CI. */\n CI: boolean;\n /** @internal Used in CI. */\n tailwind: boolean;\n /** @internal Used in CI. */\n trpc: boolean;\n /** @internal Used in CI. */\n prisma: boolean;\n /** @internal Used in CI. */\n drizzle: boolean;\n /** @internal Used in CI. */\n appRouter: boolean;\n}\n\nconst defaultOptions: CliFlags = {\n noGit: false,\n noInstall: false,\n default: false,\n CI: false,\n tailwind: false,\n trpc: false,\n prisma: false,\n drizzle: false,\n importAlias: \"~/\",\n appRouter: false,\n auth: \"none\",\n server: undefined,\n fileName: \"\",\n layoutName: \"\",\n schemaName: \"\",\n dataApiKey: \"\",\n fmServerURL: \"\",\n dataSource: undefined,\n ui: \"shadcn\",\n};\n\nexport const makeInitCommand = () => {\n const initCommand = new Command(\"init\")\n .description(\"Create a new project with ProofKit\")\n .argument(\"[dir]\", \"The name of the application, as well as the name of the directory to create\")\n .option(\"--appType [type]\", \"The type of app to create\", undefined)\n // hidden UI selector; default is shadcn; pass --ui mantine to opt-in legacy Mantine templates\n .option(\"--ui [ui]\", undefined, undefined)\n .option(\"--server [url]\", \"The URL of your FileMaker Server\", undefined)\n .option(\"--adminApiKey [key]\", \"Admin API key for OttoFMS. If provided, will skip login prompt\", undefined)\n .option(\"--fileName [name]\", \"The name of the FileMaker file to use for the web app\", undefined)\n .option(\"--layoutName [name]\", \"The name of the FileMaker layout to use for the web app\", undefined)\n .option(\"--schemaName [name]\", \"The name for the generated layout client in your schemas\", undefined)\n .option(\"--dataApiKey [key]\", \"The API key to use for the FileMaker Data API\", undefined)\n .option(\"--auth [type]\", \"The authentication provider to use for the web app\", undefined)\n .option(\"--dataSource [type]\", \"The data source to use for the web app (filemaker or none)\", undefined)\n .option(\"--noGit\", \"Explicitly tell the CLI to not initialize a new git repo in the project\", false)\n .option(\"--noInstall\", \"Explicitly tell the CLI to not run the package manager's install command\", false)\n .addOption(ciOption)\n .addOption(debugOption)\n .action(runInit);\n\n initCommand.hook(\"preAction\", (cmd) => {\n initProgramState(cmd.opts());\n state.baseCommand = \"init\";\n });\n\n return initCommand;\n};\n\nasync function askForAuth({ projectDir }: { projectDir: string }) {\n const authType = \"none\" as \"none\" | \"clerk\" | \"fmaddon\";\n if (authType === \"clerk\") {\n await addAuth({\n options: { type: \"clerk\" },\n projectDir,\n noInstall: true,\n });\n } else if (authType === \"fmaddon\") {\n await addAuth({\n options: { type: \"fmaddon\" },\n projectDir,\n noInstall: true,\n });\n }\n}\n\ntype ProofKitPackageJSON = PackageJson & {\n proofkitMetadata?: {\n initVersion: string;\n };\n};\n\nexport const runInit = async (name?: string, opts?: CliFlags) => {\n const pkgManager = getUserPkgManager();\n const cliOptions = opts ?? defaultOptions;\n // capture ui choice early into state\n state.ui = (cliOptions.ui ?? \"shadcn\") as \"shadcn\" | \"mantine\";\n\n const projectName =\n name ||\n abortIfCancel(\n await text({\n message: \"What will your project be called?\",\n defaultValue: DEFAULT_APP_NAME,\n validate: validateAppName,\n }),\n ).toString();\n\n if (!state.appType) {\n state.appType = state.ci\n ? \"browser\"\n : (abortIfCancel(\n await select({\n message: \"What kind of app do you want to build?\",\n options: [\n {\n value: \"browser\",\n label: \"Web App for Browsers\",\n hint: \"Uses Next.js, will require hosting\",\n },\n {\n value: \"webviewer\",\n label: \"FileMaker Web Viewer (beta)\",\n hint: \"Uses Vite, can be embedded in FileMaker or hosted\",\n },\n ],\n }),\n ) as \"browser\" | \"webviewer\");\n }\n\n const usePackages = buildPkgInstallerMap();\n\n // e.g. dir/@mono/app returns [\"@mono/app\", \"dir/app\"]\n const [scopedAppName, appDir] = parseNameAndPath(projectName);\n\n const projectDir = await createBareProject({\n projectName: appDir,\n scopedAppName,\n packages: usePackages,\n noInstall: cliOptions.noInstall,\n appRouter: cliOptions.appRouter,\n });\n setImportAlias(projectDir, \"@/\");\n\n // Write name to package.json\n const pkgJson = fs.readJSONSync(path.join(projectDir, \"package.json\")) as ProofKitPackageJSON;\n pkgJson.name = scopedAppName;\n pkgJson.proofkitMetadata = { initVersion: getVersion() };\n\n // ? Bun doesn't support this field (yet)\n if (pkgManager !== \"bun\") {\n const { stdout } = await execa(pkgManager, [\"-v\"], {\n cwd: projectDir,\n });\n pkgJson.packageManager = `${pkgManager}@${stdout.trim()}`;\n }\n\n fs.writeJSONSync(path.join(projectDir, \"package.json\"), pkgJson, {\n spaces: 2,\n });\n\n // Ensure proofkit.json exists with initial settings including ui\n const initialSettings: Settings =\n state.ui === \"mantine\"\n ? {\n appType: state.appType ?? \"browser\",\n ui: \"mantine\",\n auth: { type: \"none\" },\n envFile: \".env\",\n dataSources: [],\n tanstackQuery: false,\n replacedMainPage: false,\n appliedUpgrades: [\"cursorRules\"],\n reactEmail: false,\n reactEmailServer: false,\n registryTemplates: [],\n }\n : {\n appType: state.appType ?? \"browser\",\n ui: \"shadcn\",\n envFile: \".env\",\n dataSources: [],\n replacedMainPage: false,\n registryTemplates: [],\n };\n setSettings(initialSettings);\n\n // for webviewer apps FM is required, so don't ask\n let dataSource = state.appType === \"webviewer\" ? \"filemaker\" : cliOptions.dataSource;\n if (!dataSource) {\n dataSource = abortIfCancel(\n await select({\n message: \"Do you want to connect to a FileMaker Database now?\",\n options: [\n {\n value: \"filemaker\",\n label: \"Yes\",\n hint: \"Requires OttoFMS and Admin Server credentials\",\n },\n // { value: \"supabase\", label: \"Supabase\" },\n {\n value: \"none\",\n label: \"No\",\n hint: \"You'll be able to add a new data source later\",\n },\n ],\n }),\n ) as \"filemaker\" | \"none\" | \"supabase\";\n }\n\n if (dataSource === \"filemaker\") {\n // later will split this flow to ask for which kind of data souce, but for now it's just FM\n await promptForFileMakerDataSource({\n projectDir,\n name: \"filemaker\",\n adminApiKey: cliOptions.adminApiKey,\n dataApiKey: cliOptions.dataApiKey,\n server: cliOptions.server,\n fileName: cliOptions.fileName,\n layoutName: cliOptions.layoutName,\n schemaName: cliOptions.schemaName,\n });\n\n // Now that we have the data source set up, check for webviewer layouts if needed\n if (state.appType === \"webviewer\") {\n await ensureWebViewerAddonInstalled();\n }\n } else if (dataSource === \"supabase\") {\n // TODO: add supabase\n }\n\n await askForAuth({ projectDir });\n\n await installDependencies({ projectDir });\n\n await runCodegenCommand();\n\n if (!cliOptions.noGit) {\n await initializeGit(projectDir);\n }\n\n logNextSteps({\n projectName: appDir,\n noInstall: cliOptions.noInstall,\n });\n};\n","import gradient from \"gradient-string\";\n\nimport { TITLE_TEXT } from \"~/consts.js\";\nimport { getUserPkgManager } from \"~/utils/getUserPkgManager.js\";\n\nconst proofTheme = {\n purple: \"#89216B\",\n lightPurple: \"#D15ABB\",\n orange: \"#FF595E\",\n};\n\nexport const proofGradient = gradient(Object.values(proofTheme));\nexport const renderTitle = () => {\n // resolves weird behavior where the ascii is offset\n const pkgManager = getUserPkgManager();\n if (pkgManager === \"yarn\" || pkgManager === \"pnpm\") {\n console.log(\"\");\n }\n console.log(proofGradient.multiline(TITLE_TEXT));\n};\n","import * as p from \"@clack/prompts\";\nimport { Command, Option } from \"commander\";\n\nimport { installReactEmail } from \"~/installers/react-email.js\";\n\nexport const runAddReactEmailCommand = async ({\n noInstall,\n installServerFiles,\n}: {\n noInstall?: boolean;\n installServerFiles?: boolean;\n} = {}) => {\n const spinner = p.spinner();\n spinner.start(\"Adding React Email\");\n await installReactEmail({ noInstall, installServerFiles });\n spinner.stop(\"React Email added\");\n};\n\nexport const makeAddReactEmailCommand = () => {\n const addReactEmailCommand = new Command(\"react-email\")\n .description(\"Add React Email scaffolding to your project\")\n .addOption(new Option(\"--noInstall\", \"Do not run your package manager install command\").default(false))\n .option(\"--installServerFiles\", \"Also scaffold provider-specific server email files\", false)\n .action((args: { noInstall?: boolean; installServerFiles?: boolean }) => runAddReactEmailCommand(args));\n\n return addReactEmailCommand;\n};\n","import * as p from \"@clack/prompts\";\nimport { Command } from \"commander\";\n\nimport { injectTanstackQuery } from \"~/generators/tanstack-query.js\";\n\nexport const runAddTanstackQueryCommand = async () => {\n const spinner = p.spinner();\n spinner.start(\"Adding Tanstack Query\");\n await injectTanstackQuery();\n spinner.stop(\"Tanstack Query added\");\n};\n\nexport const makeAddTanstackQueryCommand = () => {\n const addTanstackQueryCommand = new Command(\"tanstack-query\")\n .description(\"Add Tanstack Query to your project\")\n .action(runAddTanstackQueryCommand);\n\n return addTanstackQueryCommand;\n};\n","import { cancel, select } from \"@clack/prompts\";\nimport chalk from \"chalk\";\nimport { Command } from \"commander\";\nimport { z } from \"zod/v4\";\n\nimport { addAuth } from \"~/generators/auth.js\";\nimport { ciOption, debugOption } from \"~/globalOptions.js\";\nimport { initProgramState, state } from \"~/state.js\";\nimport { getSettings } from \"~/utils/parseSettings.js\";\nimport { abortIfCancel } from \"../utils.js\";\n\nexport async function runAddAuthAction() {\n const settings = getSettings();\n if (settings.appType !== \"browser\") {\n return cancel(\"Auth is not supported for your app type.\");\n }\n if (settings.ui === \"shadcn\") {\n return cancel(\"Adding auth is not yet supported for shadcn-based projects.\");\n }\n\n const authType =\n state.authType ??\n abortIfCancel(\n await select({\n message: \"What auth provider do you want to use?\",\n options: [\n {\n value: \"fmaddon\",\n label: \"FM Add-on Auth\",\n hint: \"Self-hosted auth with email/password\",\n },\n {\n value: \"clerk\",\n label: \"Clerk\",\n hint: \"Hosted auth service with many providers\",\n },\n ],\n }),\n );\n\n const type = z.enum([\"clerk\", \"fmaddon\"]).parse(authType);\n state.authType = type;\n\n if (type === \"fmaddon\") {\n const emailProviderAnswer =\n state.emailProvider ??\n (state.ci ? \"none\" : undefined) ??\n abortIfCancel(\n await select({\n message: `What email provider do you want to use?\\n${chalk.dim(\n \"Used to send email verification codes. If you skip this, the codes will be displayed here in your terminal.\",\n )}`,\n options: [\n {\n label: \"Resend\",\n value: \"resend\",\n hint: \"Great dev experience\",\n },\n {\n label: \"Plunk\",\n value: \"plunk\",\n hint: \"Cheapest for <20k emails/mo, self-hostable\",\n },\n { label: \"Other / I'll do it myself later\", value: \"none\" },\n ],\n }),\n );\n\n const emailProvider = z.enum([\"plunk\", \"resend\", \"none\"]).parse(emailProviderAnswer);\n\n state.emailProvider = emailProvider;\n\n await addAuth({\n options: {\n type,\n emailProvider: emailProvider === \"none\" ? undefined : emailProvider,\n },\n });\n } else {\n await addAuth({ options: { type } });\n }\n}\n\nexport const makeAddAuthCommand = () => {\n const addAuthCommand = new Command(\"auth\")\n .description(\"Add authentication to your project\")\n .option(\"--authType <authType>\", \"Type of auth provider to use\")\n .option(\"--emailProvider <emailProvider>\", \"Email provider to use (only for FM Add-on Auth)\")\n .option(\"--apiKey <apiKey>\", \"API key to use for the email provider (only for FM Add-on Auth)\")\n .addOption(ciOption)\n .addOption(debugOption)\n\n .action(async () => {\n const settings = getSettings();\n if (settings.ui === \"shadcn\") {\n throw new Error(\"Shadcn projects should add auth using the template registry\");\n }\n if (settings.auth.type !== \"none\") {\n throw new Error(\"Auth already exists\");\n }\n await runAddAuthAction();\n });\n\n addAuthCommand.hook(\"preAction\", (thisCommand) => {\n initProgramState(thisCommand.opts());\n });\n\n return addAuthCommand;\n};\n","import * as p from \"@clack/prompts\";\nimport { Command } from \"commander\";\nimport { z } from \"zod/v4\";\n\nimport { ensureProofKitProject } from \"~/cli/utils.js\";\nimport { promptForFileMakerDataSource } from \"./filemaker.js\";\n\nconst dataSourceType = z.enum([\"fm\", \"supabase\"]);\nexport const runAddDataSourceCommand = async () => {\n const dataSource = dataSourceType.parse(\n await p.select({\n message: \"Which data souce do you want to add?\",\n options: [\n { label: \"FileMaker\", value: \"fm\" },\n { label: \"Supabase\", value: \"supabase\" },\n ],\n }),\n );\n\n if (dataSource === \"supabase\") {\n throw new Error(\"Not implemented\");\n }\n if (dataSource === \"fm\") {\n await promptForFileMakerDataSource({ projectDir: process.cwd() });\n } else {\n throw new Error(\"Invalid data source\");\n }\n};\n\nexport const makeAddDataSourceCommand = () => {\n const addDataSourceCommand = new Command(\"data\");\n addDataSourceCommand.description(\"Add a new data source to your project\");\n\n addDataSourceCommand.hook(\"preAction\", (_thisCommand, actionCommand) => {\n const settings = ensureProofKitProject({ commandName: \"add\" });\n actionCommand.setOptionValue(\"settings\", settings);\n });\n\n // addDataSourceCommand.action();\n return addDataSourceCommand;\n};\n","import path from \"node:path\";\nimport fs from \"fs-extra\";\nimport { SyntaxKind } from \"ts-morph\";\n\nimport { getClientSuffix, getFieldNamesForSchema } from \"~/generators/fmdapi.js\";\nimport { injectTanstackQuery } from \"~/generators/tanstack-query.js\";\nimport { installDependencies } from \"~/helpers/installDependencies.js\";\nimport { state } from \"~/state.js\";\nimport { getSettings } from \"~/utils/parseSettings.js\";\nimport { formatAndSaveSourceFiles, getNewProject } from \"~/utils/ts-morph.js\";\nimport type { TPostInstallFn } from \"../types.js\";\n\n// Regex to validate JavaScript identifiers\nconst VALID_JS_IDENTIFIER = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/;\n\nexport const postInstallTable: TPostInstallFn = async ({ projectDir, pageDir, dataSource, schemaName }) => {\n if (!dataSource) {\n throw new Error(\"DataSource is required for table page\");\n }\n if (!schemaName) {\n throw new Error(\"SchemaName is required for table page\");\n }\n if (dataSource.type !== \"fm\") {\n throw new Error(\"FileMaker DataSource is required for table page\");\n }\n\n const clientSuffix = getClientSuffix({\n projectDir,\n dataSourceName: dataSource.name,\n });\n\n const allFieldNames = getFieldNamesForSchema({\n schemaName,\n dataSourceName: dataSource.name,\n });\n\n const settings = getSettings();\n if (settings.ui === \"shadcn\") {\n return;\n }\n const auth = settings.auth;\n\n const substitutions = {\n __SOURCE_NAME__: dataSource.name,\n __TYPE_NAME__: `T${schemaName}`,\n __ZOD_TYPE_NAME__: `Z${schemaName}`,\n __CLIENT_NAME__: `${schemaName}${clientSuffix}`,\n __SCHEMA_NAME__: schemaName,\n __ACTION_CLIENT__: auth.type === \"none\" ? \"actionClient\" : \"authedActionClient\",\n __FIRST_FIELD_NAME__: allFieldNames[0] ?? \"NO_FIELDS_ON_YOUR_LAYOUT\",\n };\n\n // read all files in pageDir and loop over them\n const files = await fs.readdir(pageDir);\n for await (const file of files) {\n const filePath = path.join(pageDir, file);\n let fileContent = await fs.readFile(filePath, \"utf8\");\n\n for (const [key, value] of Object.entries(substitutions)) {\n fileContent = fileContent.replace(new RegExp(key, \"g\"), value);\n }\n\n await fs.writeFile(filePath, fileContent, \"utf8\");\n }\n\n // add the schemas to the columns array\n const project = getNewProject(projectDir);\n const sourceFile = project.addSourceFileAtPath(\n path.join(pageDir, state.appType === \"browser\" ? \"table.tsx\" : \"index.tsx\"),\n );\n const columns = sourceFile.getVariableDeclaration(\"columns\")?.getInitializerIfKind(SyntaxKind.ArrayLiteralExpression);\n\n const fieldNames = filterOutCommonFieldNames(allFieldNames.filter(Boolean) as string[]);\n\n for await (const fieldName of fieldNames) {\n columns?.addElement((writer) =>\n writer\n .inlineBlock(() => {\n if (needsBracketNotation(fieldName)) {\n writer.write(`accessorFn: (row) => row[\"${fieldName}\"],`);\n } else {\n writer.write(`accessorFn: (row) => row.${fieldName},`);\n }\n writer.write(`header: \"${fieldName}\",`);\n })\n .write(\",\")\n .newLine(),\n );\n }\n\n if (state.appType === \"webviewer\") {\n const didInject = await injectTanstackQuery({ project });\n if (didInject) {\n await installDependencies();\n }\n }\n\n await formatAndSaveSourceFiles(project);\n};\n\n// Function to check if a field name needs bracket notation\nfunction needsBracketNotation(fieldName: string): boolean {\n // Check if it's a valid JavaScript identifier\n return !VALID_JS_IDENTIFIER.test(fieldName);\n}\n\nconst commonFieldNamesToExclude = [\n \"id\",\n \"pk\",\n \"createdat\",\n \"updatedat\",\n \"primarykey\",\n \"createdby\",\n \"modifiedby\",\n \"creationtimestamp\",\n \"modificationtimestamp\",\n];\n\nfunction filterOutCommonFieldNames(fieldNames: string[]): string[] {\n return fieldNames.filter(\n (fieldName) => !commonFieldNamesToExclude.includes(fieldName.toLowerCase()) || fieldName.startsWith(\"_\"),\n );\n}\n","import { injectTanstackQuery } from \"~/generators/tanstack-query.js\";\nimport { installDependencies } from \"~/helpers/installDependencies.js\";\nimport type { TPostInstallFn } from \"../types.js\";\nimport { postInstallTable } from \"./table.js\";\n\nexport const postInstallTableInfinite: TPostInstallFn = async (args) => {\n await postInstallTable(args);\n const didInject = await injectTanstackQuery();\n if (didInject) {\n await installDependencies();\n }\n};\n","import { postInstallTable } from \"./post-install/table.js\";\nimport { postInstallTableInfinite } from \"./post-install/table-infinite.js\";\nimport type { TPostInstallFn } from \"./types.js\";\n\nexport interface Template {\n requireData: boolean;\n label: string;\n hint?: string;\n templatePath: string;\n screenshot?: string;\n tags?: string[];\n postIntallFn?: TPostInstallFn;\n}\n\nexport const nextjsTemplates: Record<string, Template> = {\n blank: {\n requireData: false,\n label: \"Blank\",\n templatePath: \"nextjs/blank\",\n },\n table: {\n requireData: true,\n label: \"Basic Table\",\n hint: \"Use to load and show multiple records\",\n templatePath: \"nextjs/table\",\n postIntallFn: postInstallTable,\n },\n tableEdit: {\n requireData: true,\n label: \"Basic Table (editable)\",\n hint: \"Use to load and show multiple records with inline edit functionality\",\n templatePath: \"nextjs/table-edit\",\n postIntallFn: postInstallTable,\n },\n tableInfinite: {\n requireData: true,\n label: \"Infinite Table\",\n hint: \"Automatically load more records when the user scrolls to the bottom\",\n templatePath: \"nextjs/table-infinite\",\n postIntallFn: postInstallTableInfinite,\n },\n tableInfiniteEdit: {\n requireData: true,\n label: \"Infinite Table (editable)\",\n hint: \"Automatically load more records when the user scrolls to the bottom with inline edit functionality\",\n templatePath: \"nextjs/table-infinite-edit\",\n postIntallFn: postInstallTableInfinite,\n },\n};\n\nexport const wvTemplates: Record<string, Template> = {\n blank: {\n requireData: false,\n label: \"Blank\",\n templatePath: \"vite-wv/blank\",\n },\n table: {\n requireData: true,\n label: \"Basic Table\",\n hint: \"Use to load and show multiple records\",\n templatePath: \"vite-wv/table\",\n postIntallFn: postInstallTable,\n },\n tableEdit: {\n requireData: true,\n label: \"Basic Table (editable)\",\n hint: \"Use to load and show multiple records with inline edit functionality\",\n templatePath: \"vite-wv/table-edit\",\n postIntallFn: postInstallTable,\n },\n // tableInfinite: {\n // requireData: true,\n // label: \"Infinite Table\",\n // hint: \"Automatically load more records when the user scrolls to the bottom\",\n // templatePath: \"vite-wv/table-infinite\",\n // postIntallFn: postInstallTableInfinite,\n // },\n // tableInfiniteEdit: {\n // requireData: true,\n // label: \"Infinite Table (editable)\",\n // hint: \"Automatically load more records when the user scrolls to the bottom with inline edit functionality\",\n // templatePath: \"vite-wv/table-infinite-edit\",\n // postIntallFn: postInstallTableInfinite,\n // },\n};\n","import path from \"node:path\";\nimport fs from \"fs-extra\";\nimport type { RouteLink } from \"index.js\";\nimport { SyntaxKind } from \"ts-morph\";\n\nimport { formatAndSaveSourceFiles, getNewProject } from \"~/utils/ts-morph.js\";\n\nexport async function addRouteToNav({\n projectDir,\n navType,\n ...route\n}: Omit<RouteLink, \"type\"> & {\n projectDir: string;\n navType: \"primary\" | \"secondary\";\n}) {\n const navFilePath = path.join(projectDir, \"src/app/navigation.tsx\");\n\n // If the navigation file doesn't exist (e.g., WebViewer apps), skip adding to nav\n if (!fs.existsSync(navFilePath)) {\n return;\n }\n\n const project = getNewProject(projectDir);\n const sourceFile = project.addSourceFileAtPath(navFilePath);\n sourceFile\n .getVariableDeclaration(navType === \"primary\" ? \"primaryRoutes\" : \"secondaryRoutes\")\n ?.getInitializerIfKind(SyntaxKind.ArrayLiteralExpression)\n ?.addElement((writer) =>\n writer\n .block(() => {\n writer.write(`\n label: \"${route.label}\",\n type: \"link\",\n href: \"${route.href}\",`);\n })\n .write(\",\"),\n );\n\n await formatAndSaveSourceFiles(project);\n}\n","import path from \"node:path\";\nimport * as p from \"@clack/prompts\";\nimport chalk from \"chalk\";\nimport { Command } from \"commander\";\nimport { capitalize } from \"es-toolkit\";\nimport fs from \"fs-extra\";\n\nimport { nextjsTemplates, wvTemplates } from \"~/cli/add/page/templates.js\";\nimport { PKG_ROOT } from \"~/consts.js\";\nimport { getExistingSchemas } from \"~/generators/fmdapi.js\";\nimport { addRouteToNav } from \"~/generators/route.js\";\nimport { ciOption, debugOption } from \"~/globalOptions.js\";\nimport { initProgramState, state } from \"~/state.js\";\nimport { getUserPkgManager } from \"~/utils/getUserPkgManager.js\";\nimport { type DataSource, getSettings, mergeSettings } from \"~/utils/parseSettings.js\";\nimport { abortIfCancel, ensureProofKitProject } from \"../../utils.js\";\n\nexport const runAddPageAction = async (opts?: {\n routeName?: string;\n pageName?: string;\n dataSourceName?: string;\n schemaName?: string;\n template?: string;\n}) => {\n const projectDir = state.projectDir;\n\n const settings = getSettings();\n if (settings.ui === \"shadcn\") {\n return p.cancel(\"Adding pages is not yet supported for shadcn-based projects.\");\n }\n\n const templates = state.appType === \"browser\" ? Object.entries(nextjsTemplates) : Object.entries(wvTemplates);\n\n if (templates.length === 0) {\n return p.cancel(\"No templates found for your app type. Check back soon!\");\n }\n\n let routeName = opts?.routeName;\n let replacedMainPage = settings.replacedMainPage;\n\n if (state.appType === \"webviewer\" && !replacedMainPage && !state.ci && !routeName) {\n const replaceMainPage = abortIfCancel(\n await p.select({\n message: \"Do you want to replace the default page?\",\n options: [\n { label: \"Yes\", value: \"yes\" },\n { label: \"No, maybe later\", value: \"no\" },\n { label: \"No, don't ask again\", value: \"never\" },\n ],\n }),\n );\n if (replaceMainPage === \"never\" || replaceMainPage === \"yes\") {\n replacedMainPage = true;\n }\n\n if (replaceMainPage === \"yes\") {\n routeName = \"/\";\n }\n }\n\n if (!routeName) {\n routeName = abortIfCancel(\n await p.text({\n message: \"Enter the URL PATH for your new page\",\n placeholder: \"/my-page\",\n validate: (value) => {\n if (value.length === 0) {\n return \"URL path is required\";\n }\n return;\n },\n }),\n );\n }\n\n if (!routeName.startsWith(\"/\")) {\n routeName = `/${routeName}`;\n }\n\n const pageName = capitalize(routeName.replace(\"/\", \"\").trim());\n\n const template =\n opts?.template ??\n abortIfCancel(\n await p.select({\n message: \"What template should be used for this page?\",\n options: templates.map(([key, value]) => ({\n value: key,\n label: `${value.label}`,\n hint: value.hint,\n })),\n }),\n );\n\n const pageTemplate = templates.find(([key]) => key === template)?.[1];\n if (!pageTemplate) {\n return p.cancel(`Page template ${template} not found`);\n }\n\n let dataSource: DataSource | undefined;\n let schemaName: string | undefined;\n if (pageTemplate.requireData) {\n if (settings.dataSources.length === 0) {\n return p.cancel(\n \"This template requires a data source, but you don't have any. Add a data source first, or choose another page template\",\n );\n }\n\n const dataSourceName =\n opts?.dataSourceName ??\n (settings.dataSources.length > 1\n ? abortIfCancel(\n await p.select({\n message: \"Which data source should be used for this page?\",\n options: settings.dataSources.map((dataSource) => ({\n value: dataSource.name,\n label: dataSource.name,\n })),\n }),\n )\n : settings.dataSources[0]?.name);\n\n dataSource = settings.dataSources.find((dataSource) => dataSource.name === dataSourceName);\n if (!dataSource) {\n return p.cancel(`Data source ${dataSourceName} not found`);\n }\n\n schemaName = await promptForSchemaFromDataSource({\n projectDir,\n dataSource,\n });\n }\n\n const spinner = p.spinner();\n spinner.start(\"Adding page from template\");\n\n // copy template files\n const templatePath = path.join(PKG_ROOT, \"template/pages\", pageTemplate.templatePath);\n\n const destPath =\n state.appType === \"browser\"\n ? path.join(projectDir, \"src/app/(main)\", routeName)\n : path.join(projectDir, \"src/routes\", routeName);\n\n await fs.copy(templatePath, destPath);\n\n if (state.appType === \"browser\") {\n if (pageName && pageName !== \"\") {\n await addRouteToNav({\n projectDir: process.cwd(),\n navType: \"primary\",\n label: pageName,\n href: routeName,\n });\n }\n } else if (state.appType === \"webviewer\") {\n // TODO: implement\n }\n // call post-install function\n await pageTemplate.postIntallFn?.({\n projectDir,\n pageDir: destPath,\n dataSource,\n schemaName,\n });\n\n if (replacedMainPage !== settings.replacedMainPage) {\n // avoid changing this until the end since the user could cancel early\n mergeSettings({ replacedMainPage });\n }\n\n spinner.stop(\"Added page!\");\n const pkgManager = getUserPkgManager();\n\n console.log(\n `\\n${chalk.green(\"Next steps:\")}\\nTo preview this page, restart your dev server using the ${chalk.cyan(`${pkgManager === \"npm\" ? \"npm run\" : pkgManager} dev`)} command\\n`,\n );\n};\n\nexport const makeAddPageCommand = () => {\n const addPageCommand = new Command(\"page\").description(\"Add a new page to your project\").action(async () => {\n await runAddPageAction();\n });\n\n addPageCommand.addOption(ciOption);\n addPageCommand.addOption(debugOption);\n\n addPageCommand.hook(\"preAction\", () => {\n initProgramState(addPageCommand.opts());\n state.baseCommand = \"add\";\n ensureProofKitProject({ commandName: \"add\" });\n });\n\n return addPageCommand;\n};\n\nasync function promptForSchemaFromDataSource({\n projectDir = process.cwd(),\n dataSource,\n}: {\n projectDir?: string;\n dataSource: DataSource;\n}) {\n if (dataSource.type === \"supabase\") {\n throw new Error(\"Not implemented\");\n }\n const schemas = getExistingSchemas({\n projectDir,\n dataSourceName: dataSource.name,\n })\n .map((s) => s.schemaName)\n .filter(Boolean);\n\n if (schemas.length === 0) {\n p.cancel(\"This data source doesn't have any schemas to load data from\");\n return undefined;\n }\n\n if (schemas.length === 1) {\n return schemas[0];\n }\n\n const schemaName = abortIfCancel(\n await p.select({\n message: \"Which schema should this page load data from?\",\n options: schemas.map((o) => ({ label: o, value: o ?? \"\" })),\n }),\n );\n return schemaName;\n}\n","export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = Object.create(null);\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 // @ts-ignore\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 // @ts-ignore\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/v3\";\nimport fsSync, { promises } from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport createJiti from \"jiti\";\n\n//#region lib/types.ts\nconst registryTypeSchema = z.enum([\n\t\"registry:lib\",\n\t\"registry:block\",\n\t\"registry:component\",\n\t\"registry:ui\",\n\t\"registry:hook\",\n\t\"registry:page\",\n\t\"registry:file\",\n\t\"registry:theme\",\n\t\"registry:style\",\n\t\"registry:item\",\n\t\"registry:example\",\n\t\"registry:internal\"\n]).describe(\"The type property is used to specify the type of your registry item. This is used to determine the type and target path of the item when resolved for a project.\");\nz.discriminatedUnion(\"type\", [z.object({\n\tpath: z.string(),\n\tcontent: z.string().optional(),\n\ttype: registryTypeSchema.extract([\"registry:file\", \"registry:page\"]),\n\ttarget: z.string()\n}), z.object({\n\tpath: z.string(),\n\tcontent: z.string().optional(),\n\ttype: registryTypeSchema.exclude([\"registry:file\", \"registry:page\"]),\n\ttarget: z.string().optional()\n})]);\n/**\n* Base schema with common fields from shadcn's registryItemSchema.\n* We define our own to avoid importing the heavy shadcn types.\n*/\nconst baseRegistryItemSchema = z.object({\n\t$schema: z.string().optional(),\n\textends: z.string().optional(),\n\ttitle: z.string().optional(),\n\tauthor: z.string().optional(),\n\tdescription: z.string().optional(),\n\tdependencies: z.array(z.string()).optional(),\n\tdevDependencies: z.array(z.string()).optional(),\n\tregistryDependencies: z.array(z.string()).optional(),\n\ttailwind: z.object({ config: z.object({\n\t\tcontent: z.array(z.string()).optional(),\n\t\ttheme: z.record(z.string(), z.any()).optional(),\n\t\tplugins: z.array(z.string()).optional()\n\t}).optional() }).optional(),\n\tcssVars: z.object({\n\t\ttheme: z.record(z.string(), z.string()).optional(),\n\t\tlight: z.record(z.string(), z.string()).optional(),\n\t\tdark: z.record(z.string(), z.string()).optional()\n\t}).optional(),\n\tcss: z.record(z.string(), z.any()).optional(),\n\tenvVars: z.record(z.string(), z.string()).optional(),\n\tmeta: z.record(z.string(), z.any()).optional(),\n\tcategories: z.array(z.string()).optional()\n});\nconst templateFileSchema = z.discriminatedUnion(\"type\", [z.object({\n\tsourceFileName: z.string(),\n\tdestinationPath: z.string().optional(),\n\ttype: registryTypeSchema.extract([\"registry:file\", \"registry:page\"]),\n\thandlebars: z.boolean().optional()\n}), z.object({\n\tsourceFileName: z.string(),\n\tdestinationPath: z.string().optional(),\n\ttype: registryTypeSchema.exclude([\"registry:file\", \"registry:page\"]),\n\thandlebars: z.boolean().optional()\n})]);\nconst buildPostInstallStepsSchema = (action, dataSchema) => {\n\treturn z.object({\n\t\taction: z.literal(action),\n\t\tdata: dataSchema,\n\t\t_from: z.string().optional()\n\t});\n};\nconst postInstallStepsSchema = z.discriminatedUnion(\"action\", [\n\tbuildPostInstallStepsSchema(\"next-steps\", z.object({ message: z.string() })),\n\tbuildPostInstallStepsSchema(\"package.json script\", z.object({\n\t\tscriptName: z.string(),\n\t\tscriptCommand: z.string()\n\t})),\n\tbuildPostInstallStepsSchema(\"env\", z.object({ envs: z.object({\n\t\tname: z.string(),\n\t\tzodValue: z.string(),\n\t\tdefaultValue: z.string().optional().describe(\"This value will be added to the .env file, unless `addToRuntimeEnv` is set to `false`.\"),\n\t\ttype: z.enum([\"server\", \"client\"]),\n\t\taddToRuntimeEnv: z.boolean().optional().describe(\"Whether to add the env to the runtime env.\")\n\t}).array() })),\n\tbuildPostInstallStepsSchema(\"wrap provider\", z.object({\n\t\tproviderOpenTag: z.string().describe(\"The opening tag to use for the provider. This is used to wrap the provider in the correct location.\"),\n\t\tproviderCloseTag: z.string().describe(\"The closing tag to use for the provider.\"),\n\t\timports: z.array(z.object({\n\t\t\tmoduleSpecifier: z.string().describe(\"The module to import from (e.g., '@/config/query-provider')\"),\n\t\t\tdefaultImport: z.string().optional().describe(\"The default import name (e.g., 'QueryProvider')\"),\n\t\t\tnamedImports: z.array(z.string()).optional().describe(\"Array of named imports (e.g., ['QueryProvider', 'useQuery'])\")\n\t\t})).describe(\"Array of import configurations for the provider. Each import should have either defaultImport or namedImports.\"),\n\t\tparentTag: z.array(z.string()).optional().describe(\"If set, the provider will attempt to go inside of the parent tag. The first found tag will be used as the parent. If not set or none of the tags are found, the provider will be wrapped at the very top level.\")\n\t}))\n]);\nconst categorySchema = z.enum([\n\t\"component\",\n\t\"page\",\n\t\"utility\",\n\t\"hook\",\n\t\"email\"\n]);\nconst frameworkSchema = z.enum([\n\t\"next-pages\",\n\t\"next-app\",\n\t\"manual\"\n]);\nconst templateMetadataSchema = baseRegistryItemSchema.extend({\n\ttitle: z.string(),\n\tdescription: z.string().optional(),\n\tcategory: categorySchema,\n\tfiles: z.array(templateFileSchema),\n\tregistryType: registryTypeSchema,\n\tpostInstall: z.array(postInstallStepsSchema).optional().describe(\"Steps that should be run by the ProofKit CLI after shadcn CLI is done\"),\n\tminimumProofKitVersion: z.string().describe(\"The minimum version of ProofKit required to use this template\").optional(),\n\tallowedFrameworks: z.array(frameworkSchema).optional(),\n\tschemaRequired: z.boolean().optional().describe(\"Whether this template requires a database schema to be selected\")\n});\nconst registryIndexSchema = z.object({\n\tname: z.string(),\n\ttitle: z.string(),\n\tcategory: categorySchema,\n\tdescription: z.string().optional()\n}).array();\n\n//#endregion\n//#region lib/utils.ts\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\nconst defaultTemplatesPath = path.resolve(__dirname, \"../templates\");\nconst FILE_EXTENSION_REGEX$1 = /\\.[^/.]+$/;\n/**\n* Scans the templates directory and returns all template directories with _meta.ts files\n*/\nfunction getTemplateDirs$1(root, prefix = \"\") {\n\tconst entries = fsSync.readdirSync(root, { withFileTypes: true });\n\tconst result = [];\n\tfor (const entry of entries) {\n\t\tif (!entry.isDirectory()) continue;\n\t\tconst dirPath = path.join(root, entry.name);\n\t\tconst rel = prefix ? `${prefix}/${entry.name}` : entry.name;\n\t\tconst files = fsSync.readdirSync(dirPath);\n\t\tif (files.includes(\"_meta.ts\") || files.includes(\"_meta.js\")) result.push(rel);\n\t\tconst nested = getTemplateDirs$1(dirPath, rel);\n\t\tresult.push(...nested);\n\t}\n\treturn result;\n}\n/**\n* Loads template metadata using jiti\n*/\nfunction loadTemplateMeta(templatePath, templatesPath = defaultTemplatesPath) {\n\tconst jiti = createJiti(__filename, {\n\t\tinteropDefault: true,\n\t\trequireCache: false\n\t});\n\tconst templateDir = path.join(templatesPath, templatePath);\n\tconst metaFile = fsSync.readdirSync(templateDir).includes(\"_meta.ts\") ? \"_meta.ts\" : \"_meta.js\";\n\tconst metaModule = jiti(path.join(templateDir, metaFile));\n\tconst meta = metaModule.meta || metaModule.default?.meta || metaModule.default;\n\tif (!meta) throw new Error(`Template ${templatePath}: ${metaFile} must export a 'meta' object`);\n\treturn {\n\t\t...meta,\n\t\tregistryPath: templatePath\n\t};\n}\nfunction getRegistryIndex(templatesPath = defaultTemplatesPath) {\n\treturn getTemplateDirs$1(templatesPath).map((templatePath) => {\n\t\tconst meta = loadTemplateMeta(templatePath, templatesPath);\n\t\treturn {\n\t\t\tname: templatePath,\n\t\t\tcategory: meta.category,\n\t\t\ttitle: meta.title,\n\t\t\tdescription: meta.description\n\t\t};\n\t});\n}\nfunction getNormalizedPath(namePath) {\n\treturn namePath.replace(/^\\/+|\\/+$/g, \"\");\n}\nfunction getOtherProofKitDependencies(meta) {\n\treturn (meta.registryDependencies ?? []).filter((x) => x.startsWith(\"{proofkit}/r/\")).map((x) => x.replace(\"{proofkit}/r/\", \"\")).map(getNormalizedPath);\n}\nasync function getComponentMetaInternal(namePath, visited = /* @__PURE__ */ new Set(), templatesPath = defaultTemplatesPath) {\n\tconst normalized = getNormalizedPath(namePath);\n\tif (visited.has(normalized)) {\n\t\tconst meta$1 = loadTemplateMeta(normalized, templatesPath);\n\t\treturn {\n\t\t\t...meta$1,\n\t\t\tpostInstall: meta$1.postInstall ?? []\n\t\t};\n\t}\n\tif (!getTemplateDirs$1(templatesPath).includes(normalized)) throw new Error(`Template \"${normalized}\" not found`);\n\tvisited.add(normalized);\n\tconst meta = loadTemplateMeta(normalized, templatesPath);\n\tconst otherProofKitDependencies = getOtherProofKitDependencies(meta).filter((name) => !visited.has(name));\n\tconst otherProofKitDependenciesMeta = await Promise.all(otherProofKitDependencies.map(async (name) => {\n\t\treturn {\n\t\t\t...await getComponentMetaInternal(name, visited, templatesPath),\n\t\t\tname\n\t\t};\n\t}));\n\treturn {\n\t\t...meta,\n\t\tpostInstall: [...meta.postInstall ?? [], ...otherProofKitDependenciesMeta.flatMap((x) => (x.postInstall ?? []).map((step) => ({\n\t\t\t...step,\n\t\t\t_from: x.name\n\t\t})))]\n\t};\n}\nfunction getComponentMeta(namePath, templatesPath = defaultTemplatesPath) {\n\treturn getComponentMetaInternal(namePath, /* @__PURE__ */ new Set(), templatesPath);\n}\nasync function getStaticComponent(namePath, options) {\n\tconst normalized = getNormalizedPath(namePath);\n\tconst templatesPath = options?.templatesPath ?? defaultTemplatesPath;\n\tconst meta = await getComponentMeta(namePath, templatesPath);\n\tconst files = await Promise.all(meta.files.map(async (file) => {\n\t\tconst sourceFile = file.handlebars ? file.sourceFileName.replace(FILE_EXTENSION_REGEX$1, \".hbs\") : file.sourceFileName;\n\t\tconst contentPath = path.join(templatesPath, normalized, sourceFile);\n\t\tconst content = await promises.readFile(contentPath, \"utf-8\");\n\t\tconst routeName = options?.routeName ?? namePath;\n\t\tconst destinationPath = file.destinationPath ? file.destinationPath?.replace(\"__PATH__\", routeName) : void 0;\n\t\treturn file.type === \"registry:file\" || file.type === \"registry:page\" ? {\n\t\t\tpath: file.sourceFileName,\n\t\t\ttype: file.type,\n\t\t\tcontent,\n\t\t\ttarget: destinationPath ?? file.sourceFileName\n\t\t} : {\n\t\t\tpath: file.sourceFileName,\n\t\t\ttype: file.type,\n\t\t\tcontent,\n\t\t\t...destinationPath ? { target: destinationPath } : {}\n\t\t};\n\t}));\n\treturn {\n\t\t...meta,\n\t\tname: normalized,\n\t\ttype: meta.registryType,\n\t\tfiles\n\t};\n}\n/**\n* Template transformation utilities for handling handlebars syntax in shadcn CLI\n*/\n/**\n* Mapping of handlebars expressions to TypeScript-safe placeholder tokens\n*/\nconst HANDLEBARS_PLACEHOLDERS = {\n\t\"{{schema.schemaName}}\": \"__HB_SCHEMA_NAME__\",\n\t\"{{schema.sourceName}}\": \"__HB_SOURCE_NAME__\",\n\t\"{{schema.clientSuffix}}\": \"__HB_CLIENT_SUFFIX__\"\n};\n/**\n* Converts handlebars expressions in template content to TypeScript-safe placeholder tokens\n* This allows the shadcn CLI to process the templates without TypeScript parsing errors\n*/\nfunction encodeHandlebarsForShadcn(content) {\n\tlet result = content;\n\tfor (const [handlebars, placeholder] of Object.entries(HANDLEBARS_PLACEHOLDERS)) result = result.replace(new RegExp(escapeRegExp(handlebars), \"g\"), placeholder);\n\treturn result;\n}\n/**\n* Converts placeholder tokens back to handlebars expressions\n* This is used by the CLI after shadcn has processed the templates\n*/\nfunction decodeHandlebarsFromShadcn(content) {\n\tlet result = content;\n\tfor (const [handlebars, placeholder] of Object.entries(HANDLEBARS_PLACEHOLDERS)) result = result.replace(new RegExp(escapeRegExp(placeholder), \"g\"), handlebars);\n\treturn result;\n}\n/**\n* Escapes special regex characters in a string\n*/\nfunction escapeRegExp(string) {\n\treturn string.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n/**\n* Enhanced version of getStaticComponent that applies handlebars encoding for shadcn compatibility\n*/\nasync function getStaticComponentForShadcn(namePath, options) {\n\tconst component = await getStaticComponent(namePath, options);\n\tconst encodedFiles = component.files?.map((file) => {\n\t\tif (file.path.endsWith(\".hbs\") || file.path.endsWith(\".tsx\") || file.path.endsWith(\".ts\")) return {\n\t\t\t...file,\n\t\t\tcontent: encodeHandlebarsForShadcn(file.content ?? \"\")\n\t\t};\n\t\treturn file;\n\t});\n\treturn {\n\t\t...component,\n\t\tfiles: encodedFiles\n\t};\n}\n\n//#endregion\n//#region lib/validator.ts\nconst FILE_EXTENSION_REGEX = /\\.[^/.]+$/;\n/**\n* Check if a registry template path is valid\n*/\nfunction isValidRegistryTemplate(templatePath, templatesPath) {\n\tconst fullTemplatePath = path.join(templatesPath, templatePath);\n\tconst metaPath = path.join(fullTemplatePath, \"_meta.ts\");\n\treturn fsSync.existsSync(metaPath);\n}\n/**\n* Validate a single template metadata object\n*/\nfunction validateTemplateMetadata(meta, context) {\n\tconst validationResult = templateMetadataSchema.safeParse(meta);\n\tif (!validationResult.success) throw new Error(`Template ${context.templateName}: Invalid metadata structure:\\n${validationResult.error.issues.map((issue) => ` - ${issue.path.join(\".\")}: ${issue.message}`).join(\"\\n\")}`);\n\tconst validatedMeta = validationResult.data;\n\tconst declaredFiles = validatedMeta.files.map((f) => {\n\t\tif (f.handlebars) return f.sourceFileName.replace(FILE_EXTENSION_REGEX, \".hbs\");\n\t\treturn f.sourceFileName;\n\t});\n\tfor (const declaredFile of declaredFiles) {\n\t\tconst filePath = path.resolve(context.templateDir, declaredFile);\n\t\tif (!fsSync.existsSync(filePath)) throw new Error(`Template ${context.templateName}: Declared file '${declaredFile}' does not exist at path '${filePath}'`);\n\t}\n\tconst actualFiles = fsSync.readdirSync(context.templateDir).filter((f) => f !== \"_meta.ts\");\n\tif (declaredFiles.length > 0 && actualFiles.length === 0) throw new Error(`Template ${context.templateName} declares files but has no content files`);\n\tif (validatedMeta.registryDependencies) {\n\t\tfor (const registryRef of validatedMeta.registryDependencies) if (registryRef.startsWith(\"{proofkit}/r/\")) {\n\t\t\tif (!isValidRegistryTemplate(registryRef.replace(\"{proofkit}/r/\", \"\"), context.templatesPath)) throw new Error(`Template ${context.templateName}: Invalid registryDependencies reference '${registryRef}' - template does not exist in the registry`);\n\t\t}\n\t}\n}\nfunction getTemplateDirs(root, prefix = \"\") {\n\tconst entries = fsSync.readdirSync(root, { withFileTypes: true });\n\tconst result = [];\n\tfor (const entry of entries) {\n\t\tif (!entry.isDirectory()) continue;\n\t\tconst dirPath = path.join(root, entry.name);\n\t\tconst rel = prefix ? `${prefix}/${entry.name}` : entry.name;\n\t\tif (fsSync.readdirSync(dirPath).includes(\"_meta.ts\")) result.push(rel);\n\t\tconst nested = getTemplateDirs(dirPath, rel);\n\t\tresult.push(...nested);\n\t}\n\treturn result;\n}\nfunction validateRegistry() {\n\tconst __filename$1 = fileURLToPath(import.meta.url);\n\tconst __dirname$1 = path.dirname(__filename$1);\n\tconst templatesPath = path.resolve(__dirname$1, \"../templates\");\n\tconst jiti = createJiti(__filename$1, {\n\t\tinteropDefault: true,\n\t\trequireCache: false\n\t});\n\ttry {\n\t\tconst templateDirs = getTemplateDirs(templatesPath);\n\t\tfor (const rel of templateDirs) {\n\t\t\tconst metaPath = path.join(templatesPath, rel, \"_meta.ts\");\n\t\t\tif (!fsSync.existsSync(metaPath)) throw new Error(`Template ${rel} is missing _meta.ts file`);\n\t\t\ttry {\n\t\t\t\tconst metaModule = jiti(metaPath);\n\t\t\t\tconst meta = metaModule.meta || metaModule.default?.meta || metaModule.default;\n\t\t\t\tif (!meta) throw new Error(`Template ${rel}: _meta.ts must export a 'meta' object`);\n\t\t\t\tvalidateTemplateMetadata(meta, {\n\t\t\t\t\ttemplatesPath,\n\t\t\t\t\ttemplateName: rel,\n\t\t\t\t\ttemplateDir: path.join(templatesPath, rel)\n\t\t\t\t});\n\t\t\t} catch (loadError) {\n\t\t\t\tif (loadError instanceof Error && loadError.message.includes(\"Template\")) throw loadError;\n\t\t\t\tthrow new Error(`Template ${rel}: Failed to load _meta.ts - ${loadError}`);\n\t\t\t}\n\t\t}\n\t\tconsole.log(`✅ Registry validation passed for ${templateDirs.length} templates`);\n\t} catch (err) {\n\t\tconsole.error(\"Registry validation failed:\", err);\n\t\tthrow err;\n\t}\n}\n\n//#endregion\nexport { decodeHandlebarsFromShadcn, encodeHandlebarsForShadcn, frameworkSchema, getComponentMeta, getOtherProofKitDependencies, getRegistryIndex, getStaticComponent, getStaticComponentForShadcn, isValidRegistryTemplate, postInstallStepsSchema, registryIndexSchema, templateFileSchema, templateMetadataSchema, validateRegistry, validateTemplateMetadata };\n//# sourceMappingURL=index.js.map","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { execa } from \"execa\";\n\nimport { DEFAULT_REGISTRY_URL } from \"~/consts.js\";\nimport { state } from \"~/state.js\";\nimport { logger } from \"~/utils/logger.js\";\nimport { getSettings } from \"~/utils/parseSettings.js\";\n\nexport async function shadcnInstall(components: string | string[], _friendlyComponentName?: string) {\n const componentsArray = Array.isArray(components) ? components : [components];\n const command = [\"shadcn@latest\", \"add\", ...componentsArray];\n // Use execa to run the shadcn add command directly\n\n try {\n await execa(\"pnpm\", [\"dlx\", ...command], {\n stdio: \"inherit\",\n cwd: state.projectDir ?? process.cwd(),\n });\n } catch (error) {\n logger.error(`Failed to run shadcn add: ${error}`);\n throw error;\n }\n}\n\nexport function getRegistryUrl(): string {\n let url: string;\n try {\n url = getSettings().registryUrl ?? DEFAULT_REGISTRY_URL;\n } catch {\n // If we can't get settings (e.g., during development or outside a ProofKit project),\n // fall back to the default registry URL\n url = DEFAULT_REGISTRY_URL;\n }\n return url.endsWith(\"/\") ? url.slice(0, -1) : url;\n}\n\nexport interface ShadcnConfig {\n style: \"default\" | \"new-york\";\n tailwind: {\n config: string;\n css: string;\n baseColor: string;\n cssVariables: boolean;\n prefix?: string;\n [k: string]: unknown;\n };\n rsc: boolean;\n tsx?: boolean;\n iconLibrary?: string;\n aliases: {\n utils: string;\n components: string;\n ui?: string;\n lib?: string;\n hooks?: string;\n [k: string]: unknown;\n };\n registries?: {\n [k: string]:\n | string\n | {\n url: string;\n params?: {\n [k: string]: string;\n };\n headers?: {\n [k: string]: string;\n };\n [k: string]: unknown;\n };\n };\n [k: string]: unknown;\n}\n\nexport function getShadcnConfig() {\n const componentsJsonPath = path.join(state.projectDir, \"components.json\");\n const componentsJson = JSON.parse(fs.readFileSync(componentsJsonPath, \"utf8\"));\n return componentsJson as ShadcnConfig;\n}\n","import { createFetch, createSchema } from \"@better-fetch/fetch\";\nimport { registryIndexSchema, templateMetadataSchema } from \"@proofkit/registry\";\n\nimport { getRegistryUrl } from \"~/helpers/shadcn-cli.js\";\n\nconst schema = createSchema({\n \"@get/meta/:name\": {\n output: templateMetadataSchema,\n },\n \"@get/\": {\n output: registryIndexSchema,\n },\n});\n\nexport const registryFetch = createFetch({\n baseURL: `${getRegistryUrl()}/r`,\n schema,\n});\n","import path from \"node:path\";\nimport fg from \"fast-glob\";\nimport fs from \"fs-extra\";\n\nimport { state } from \"~/state.js\";\nimport { registryFetch } from \"./http.js\";\n\nexport async function getMetaFromRegistry(name: string) {\n const result = await registryFetch(\"@get/meta/:name\", {\n params: { name },\n });\n\n if (result.error) {\n if (result.error.status === 404) {\n return null;\n }\n throw new Error(result.error.message);\n }\n\n return result.data;\n}\n\nconst PROJECT_SHARED_IGNORE = [\"**/node_modules/**\", \".next\", \"public\", \"dist\", \"build\"];\n\nexport async function getProjectInfo() {\n const cwd = state.projectDir || process.cwd();\n const [configFiles, isSrcDir] = await Promise.all([\n fg.glob(\"**/{next,vite,astro,app}.config.*|gatsby-config.*|composer.json|react-router.config.*\", {\n cwd,\n deep: 3,\n ignore: PROJECT_SHARED_IGNORE,\n }),\n fs.pathExists(path.resolve(cwd, \"src\")),\n ]);\n\n const isUsingAppDir = await fs.pathExists(path.resolve(cwd, `${isSrcDir ? \"src/\" : \"\"}app`));\n\n // Next.js.\n if (configFiles.find((file) => file.startsWith(\"next.config.\"))?.length) {\n return isUsingAppDir ? \"next-app\" : \"next-pages\";\n }\n\n return \"manual\";\n}\n","import path from \"node:path\";\nimport { decodeHandlebarsFromShadcn, type TemplateFile } from \"@proofkit/registry\";\nimport fs from \"fs-extra\";\nimport handlebars from \"handlebars\";\nimport { getClientSuffix, getFieldNamesForSchema } from \"~/generators/fmdapi.js\";\nimport { getShadcnConfig } from \"~/helpers/shadcn-cli.js\";\nimport { state } from \"~/state.js\";\nimport { type DataSource, getSettings } from \"~/utils/parseSettings.js\";\n\n// Register handlebars helpers\nhandlebars.registerHelper(\"eq\", (a, b) => a === b);\n\ninterface HandlebarsContext {\n [key: string]: unknown;\n}\n\nhandlebars.registerHelper(\"findFirst\", function (this: HandlebarsContext, array, predicate, options) {\n if (!(array && Array.isArray(array))) {\n return options.inverse(this);\n }\n\n for (const item of array) {\n if (predicate === \"fm\" && item.type === \"fm\") {\n return options.fn(item);\n }\n }\n return options.inverse(this);\n});\n\ninterface DataSourceForTemplate {\n dataSource: DataSource;\n schemaName: string;\n}\n\nconst commonFieldNamesToExclude = [\n \"id\",\n \"pk\",\n \"createdat\",\n \"updatedat\",\n \"primarykey\",\n \"createdby\",\n \"modifiedby\",\n \"creationtimestamp\",\n \"modificationtimestamp\",\n];\n\nfunction filterOutCommonFieldNames(fieldNames: string[]): string[] {\n return fieldNames.filter(\n (fieldName) => !commonFieldNamesToExclude.includes(fieldName.toLowerCase()) || fieldName.startsWith(\"_\"),\n );\n}\n\nfunction buildDataSourceData(args: DataSourceForTemplate) {\n const { dataSource, schemaName } = args;\n\n const clientSuffix = getClientSuffix({\n projectDir: state.projectDir ?? process.cwd(),\n dataSourceName: dataSource.name,\n });\n\n const allFieldNames = getFieldNamesForSchema({\n schemaName,\n dataSourceName: dataSource.name,\n }).filter(Boolean) as string[];\n\n return {\n sourceName: dataSource.name,\n schemaName,\n clientSuffix,\n allFieldNames,\n fieldNames: filterOutCommonFieldNames(allFieldNames),\n };\n}\n\nexport function buildHandlebarsData(args?: DataSourceForTemplate) {\n const proofkit = getSettings();\n const shadcn = getShadcnConfig();\n\n return {\n proofkit,\n shadcn,\n schema: args\n ? buildDataSourceData(args)\n : {\n sourceName: \"UnknownDataSource\",\n schemaName: \"UnknownSchema\",\n clientSuffix: \"UnknownClientSuffix\",\n allFieldNames: [\"UnknownFieldName\"],\n fieldNames: [\"UnknownFieldName\"],\n },\n };\n}\n\nexport async function randerHandlebarsToFile(file: TemplateFile, data: ReturnType<typeof buildHandlebarsData>) {\n const inputPath = getFilePath(file, data);\n let rawTemplate = await fs.readFile(inputPath, \"utf8\");\n\n // Decode placeholder tokens back to handlebars syntax\n // This uses the centralized decoding function from the registry package\n rawTemplate = decodeHandlebarsFromShadcn(rawTemplate);\n\n const template = handlebars.compile(rawTemplate);\n const rendered = template(data);\n await fs.writeFile(inputPath, rendered);\n}\n\nexport function getFilePath(file: TemplateFile, data: ReturnType<typeof buildHandlebarsData>): string {\n const thePath = file.sourceFileName;\n\n if (file.destinationPath) {\n return file.destinationPath;\n }\n\n const cwd = state.projectDir ?? process.cwd();\n const { shadcn } = data;\n\n // Create a mapping between registry types and their corresponding shadcn config aliases\n let blockAlias = \"src/components/blocks\";\n if (shadcn?.aliases?.components) {\n if (shadcn.aliases.components.startsWith(\"@/\")) {\n blockAlias = `${shadcn.aliases.components.replace(\"@/\", \"src/\")}/blocks`;\n } else {\n blockAlias = `src/${shadcn.aliases.components}/blocks`;\n }\n }\n\n const typeToAliasMap: Record<string, string | undefined> = {\n \"registry:lib\": shadcn?.aliases?.lib || shadcn?.aliases?.utils,\n \"registry:component\": shadcn?.aliases?.components,\n \"registry:ui\": shadcn?.aliases?.ui || shadcn?.aliases?.components,\n \"registry:hook\": shadcn?.aliases?.hooks,\n // These types don't have direct aliases, so we use fallback paths\n \"registry:file\": \"src\",\n \"registry:page\": \"src/app\",\n \"registry:block\": blockAlias,\n \"registry:theme\": \"src/theme\",\n \"registry:style\": \"src/styles\",\n };\n\n const aliasPath = typeToAliasMap[file.type];\n\n if (aliasPath) {\n // Handle @/ prefix which represents the src directory\n if (aliasPath.startsWith(\"@/\")) {\n const resolvedPath = aliasPath.replace(\"@/\", \"src/\");\n return path.join(cwd, resolvedPath, thePath);\n }\n // If the alias starts with a path separator or contains src/, treat it as a relative path from cwd\n if (aliasPath.startsWith(\"/\") || aliasPath.includes(\"src/\")) {\n return path.join(cwd, aliasPath, thePath);\n }\n // Otherwise, treat it as an alias that should be resolved relative to src/\n\n return path.join(cwd, \"src\", aliasPath, thePath);\n }\n\n // Fallback to hardcoded paths for unsupported types\n switch (file.type) {\n case \"registry:lib\":\n return path.join(cwd, \"src\", \"lib\", thePath);\n case \"registry:file\":\n return path.join(cwd, \"src\", thePath);\n case \"registry:page\": {\n // For page templates, use the route name if available in template data\n const routeName = \"routeName\" in data ? (data.routeName as string) : undefined;\n if (routeName) {\n // Add /(main) prefix for Next.js app router structure\n const pageRoute = routeName === \"/\" ? \"\" : routeName;\n return path.join(cwd, \"src\", \"app\", \"(main)\", pageRoute, thePath);\n }\n return path.join(cwd, \"src\", \"app\", thePath);\n }\n case \"registry:block\":\n return path.join(cwd, \"src\", \"components\", \"blocks\", thePath);\n case \"registry:component\":\n return path.join(cwd, \"src\", \"components\", thePath);\n case \"registry:ui\":\n return path.join(cwd, \"src\", \"components\", thePath);\n case \"registry:hook\":\n return path.join(cwd, \"src\", \"hooks\", thePath);\n case \"registry:theme\":\n return path.join(cwd, \"src\", \"theme\", thePath);\n case \"registry:style\":\n return path.join(cwd, \"src\", \"styles\", thePath);\n default:\n // default to source file name\n return thePath;\n }\n}\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport type { PostInstallStep } from \"@proofkit/registry\";\n\nimport { state } from \"~/state.js\";\n\nexport function addScriptToPackageJson(step: Extract<PostInstallStep, { action: \"package.json script\" }>) {\n const packageJsonPath = path.join(state.projectDir, \"package.json\");\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, \"utf8\"));\n packageJson.scripts[step.data.scriptName] = step.data.scriptCommand;\n fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));\n}\n","import path from \"node:path\";\nimport type { PostInstallStep } from \"@proofkit/registry\";\nimport { type ImportDeclarationStructure, type JsxChild, type JsxElement, StructureKind, SyntaxKind } from \"ts-morph\";\n\nimport { getShadcnConfig } from \"~/helpers/shadcn-cli.js\";\nimport { state } from \"~/state.js\";\nimport { logger } from \"~/utils/logger.js\";\nimport { formatAndSaveSourceFiles, getNewProject } from \"~/utils/ts-morph.js\";\n\nexport async function wrapProvider(step: Extract<PostInstallStep, { action: \"wrap provider\" }>) {\n const { parentTag, imports: importConfigs, providerCloseTag, providerOpenTag } = step.data;\n\n try {\n const projectDir = state.projectDir;\n const project = getNewProject(projectDir);\n const shadcnConfig = getShadcnConfig();\n\n // Resolve the components alias to a filesystem path\n // @/components -> src/components, ./components -> components, etc.\n const resolveAlias = (alias: string): string => {\n if (alias.startsWith(\"@/\")) {\n return alias.replace(\"@/\", \"src/\");\n }\n if (alias.startsWith(\"./\")) {\n return alias.substring(2);\n }\n return alias;\n };\n\n // Look for providers.tsx in the components directory\n const componentsDir = resolveAlias(shadcnConfig.aliases.components);\n const providersPath = path.join(projectDir, componentsDir, \"providers.tsx\");\n\n const providersFile = project.addSourceFileAtPath(providersPath);\n\n // Add all import statements\n for (const importConfig of importConfigs) {\n const importDeclaration: ImportDeclarationStructure = {\n moduleSpecifier: importConfig.moduleSpecifier,\n kind: StructureKind.ImportDeclaration,\n };\n\n if (importConfig.defaultImport) {\n importDeclaration.defaultImport = importConfig.defaultImport;\n }\n\n if (importConfig.namedImports && importConfig.namedImports.length > 0) {\n importDeclaration.namedImports = importConfig.namedImports;\n }\n\n providersFile.addImportDeclaration(importDeclaration);\n }\n\n // Handle providers.tsx file - look for the default export function\n const exportDefault = providersFile.getFunction((dec) => dec.isDefaultExport());\n\n if (!exportDefault) {\n logger.warn(`No default export function found in ${providersPath}`);\n return;\n }\n\n const returnStatement = exportDefault?.getBody()?.getFirstDescendantByKind(SyntaxKind.ReturnStatement);\n\n if (!returnStatement) {\n logger.warn(\"No return statement found in default export function\");\n return;\n }\n\n let targetElement: JsxElement | undefined;\n\n // Try to find the parent tag if specified\n if (parentTag && parentTag.length > 0) {\n for (const tag of parentTag) {\n targetElement = returnStatement\n ?.getDescendantsOfKind(SyntaxKind.JsxOpeningElement)\n .find((openingElement) => openingElement.getTagNameNode().getText() === tag)\n ?.getParentIfKind(SyntaxKind.JsxElement);\n\n if (targetElement) {\n break;\n }\n }\n }\n\n if (targetElement) {\n // If we found a parent tag, wrap its children\n const childrenText = targetElement\n ?.getJsxChildren()\n .map((child: JsxChild) => child.getText())\n .filter(Boolean)\n .join(\"\\n\");\n\n const newContent = `${providerOpenTag}\n ${childrenText}\n ${providerCloseTag}`;\n\n targetElement.getChildSyntaxList()?.replaceWithText(newContent);\n } else {\n // If no parent tag found or specified, wrap the entire return statement\n const returnExpression = returnStatement?.getExpression();\n if (returnExpression) {\n // Check if the expression is a ParenthesizedExpression\n const isParenthesized = returnExpression.getKind() === SyntaxKind.ParenthesizedExpression;\n\n let innerExpressionText: string;\n if (isParenthesized) {\n // Get the inner expression from the parenthesized expression\n const parenthesizedExpr = returnExpression.asKindOrThrow(SyntaxKind.ParenthesizedExpression);\n innerExpressionText = parenthesizedExpr.getExpression().getText();\n } else {\n innerExpressionText = returnExpression.getText();\n }\n\n const newReturnContent = `return (\n ${providerOpenTag}\n ${innerExpressionText}\n ${providerCloseTag}\n );`;\n\n returnStatement?.replaceWithText(newReturnContent);\n } else {\n logger.warn(\"No return expression found to wrap\");\n }\n }\n\n await formatAndSaveSourceFiles(project);\n logger.success(`Successfully wrapped provider in ${providersPath}`);\n } catch (error) {\n logger.error(`Failed to wrap provider: ${error}`);\n throw error;\n }\n}\n","import type { PostInstallStep } from \"@proofkit/registry\";\n\nimport { addToEnv } from \"~/utils/addToEnvs.js\";\nimport { logger } from \"~/utils/logger.js\";\nimport { addScriptToPackageJson } from \"./package-script.js\";\nimport { wrapProvider } from \"./wrap-provider.js\";\n\nexport async function processPostInstallStep(step: PostInstallStep) {\n if (step.action === \"package.json script\") {\n addScriptToPackageJson(step);\n } else if (step.action === \"wrap provider\") {\n await wrapProvider(step);\n } else if (step.action === \"next-steps\") {\n logger.info(step.data.message);\n } else if (step.action === \"env\") {\n await addToEnv({\n envs: step.data.envs,\n });\n } else {\n logger.error(`Unknown post-install step: ${step}`);\n }\n}\n","import fs from \"fs-extra\";\n\nimport { defaultSettings, setSettings, validateAndSetEnvFile } from \"~/utils/parseSettings.js\";\n\n/**\n * Used to add a proofkit.json file to an existing project\n */\nexport async function stealthInit() {\n // check if proofkit.json exists\n const proofkitJson = await fs.pathExists(\"proofkit.json\");\n if (proofkitJson) {\n return;\n }\n\n // create proofkit.json with default settings\n setSettings(defaultSettings);\n\n // validate and set envFile only if it exists\n validateAndSetEnvFile();\n}\n","import path from \"node:path\";\nimport fs from \"fs-extra\";\n\nimport { stealthInit } from \"~/helpers/stealth-init.js\";\nimport { state } from \"~/state.js\";\n\nexport async function preflightAddCommand() {\n const cwd = state.projectDir ?? process.cwd();\n // make sure shadcn is installed, throw if not\n const shadcnInstalled = await fs.pathExists(path.join(cwd, \"components.json\"));\n if (!shadcnInstalled) {\n throw new Error(\"Shadcn is not installed. Please run `pnpm dlx shadcn@latest init` to install it.\");\n }\n\n // if proofkit is not inited, try to stealth init\n await stealthInit();\n}\n","import * as p from \"@clack/prompts\";\nimport { getOtherProofKitDependencies } from \"@proofkit/registry\";\nimport { capitalize, uniq } from \"es-toolkit\";\nimport ora from \"ora\";\nimport semver from \"semver\";\n\nimport { abortIfCancel } from \"~/cli/utils.js\";\nimport { getExistingSchemas } from \"~/generators/fmdapi.js\";\nimport { addRouteToNav } from \"~/generators/route.js\";\nimport { getRegistryUrl, shadcnInstall } from \"~/helpers/shadcn-cli.js\";\nimport { state } from \"~/state.js\";\nimport { getVersion } from \"~/utils/getProofKitVersion.js\";\nimport { logger } from \"~/utils/logger.js\";\nimport { type DataSource, getSettings, mergeSettings } from \"~/utils/parseSettings.js\";\nimport { getMetaFromRegistry } from \"./getOptions.js\";\nimport { buildHandlebarsData, randerHandlebarsToFile } from \"./postInstall/handlebars.js\";\nimport { processPostInstallStep } from \"./postInstall/index.js\";\nimport { preflightAddCommand } from \"./preflight.js\";\n\nasync function promptForSchemaFromDataSource({\n projectDir = process.cwd(),\n dataSource,\n}: {\n projectDir?: string;\n dataSource: DataSource;\n}) {\n if (dataSource.type === \"supabase\") {\n throw new Error(\"Not implemented\");\n }\n const schemas = getExistingSchemas({\n projectDir,\n dataSourceName: dataSource.name,\n })\n .map((s) => s.schemaName)\n .filter(Boolean);\n\n if (schemas.length === 0) {\n p.cancel(\"This data source doesn't have any schemas to load data from\");\n return undefined;\n }\n\n if (schemas.length === 1) {\n return schemas[0];\n }\n\n const schemaName = abortIfCancel(\n await p.select({\n message: \"Which schema should this template use?\",\n options: schemas.map((o) => ({ label: o, value: o ?? \"\" })),\n }),\n );\n return schemaName;\n}\n\nexport async function installFromRegistry(name: string) {\n const spinner = ora(\"Validating template\").start();\n\n try {\n await preflightAddCommand();\n const meta = await getMetaFromRegistry(name);\n if (!meta) {\n spinner.fail(`Template ${name} not found in the ProofKit registry`);\n return;\n }\n\n if (meta.minimumProofKitVersion && semver.gt(meta.minimumProofKitVersion, getVersion())) {\n logger.error(\n `Template ${name} requires ProofKit version ${meta.minimumProofKitVersion}, but you are using version ${getVersion()}`,\n );\n spinner.fail(\"Template is not compatible with your ProofKit version\");\n return;\n }\n spinner.succeed();\n\n const otherProofKitDependencies = getOtherProofKitDependencies(meta);\n let previouslyInstalledTemplates = getSettings().registryTemplates;\n\n // Handle schema requirement if template needs it\n let dataSource: DataSource | undefined;\n let schemaName: string | undefined;\n let routeName: string | undefined;\n let pageName: string | undefined;\n\n if (meta.schemaRequired) {\n const settings = getSettings();\n\n if (settings.dataSources.length === 0) {\n spinner.fail(\"This template requires a data source, but you don't have any. Add a data source first.\");\n return;\n }\n\n const dataSourceName =\n settings.dataSources.length > 1\n ? abortIfCancel(\n await p.select({\n message: \"Which data source should be used for this template?\",\n options: settings.dataSources.map((ds) => ({\n value: ds.name,\n label: ds.name,\n })),\n }),\n )\n : settings.dataSources[0]?.name;\n\n dataSource = settings.dataSources.find((ds) => ds.name === dataSourceName);\n\n if (!dataSource) {\n spinner.fail(`Data source ${dataSourceName} not found`);\n return;\n }\n\n schemaName = await promptForSchemaFromDataSource({\n projectDir: state.projectDir,\n dataSource,\n });\n\n if (!schemaName) {\n spinner.fail(\"Schema selection was cancelled\");\n return;\n }\n }\n\n if (meta.category === \"page\") {\n // Prompt user for the URL path of the page\n routeName = abortIfCancel(\n await p.text({\n message: \"Enter the URL PATH for your new page\",\n placeholder: \"/my-page\",\n validate: (value) => {\n if (value.length === 0) {\n return \"URL path is required\";\n }\n return;\n },\n }),\n );\n\n if (routeName.startsWith(\"/\")) {\n routeName = routeName.slice(1);\n }\n\n pageName = capitalize(routeName.replace(\"/\", \"\").trim());\n }\n\n const url = new URL(`${getRegistryUrl()}/r/${name}`);\n if (meta.category === \"page\") {\n url.searchParams.set(\"routeName\", `/(main)/${routeName ?? name}`);\n }\n\n // a (hopefully) temporary workaround because the shadcn command installs the env file in the wrong place if it's a dependency\n if (\n name === \"fmdapi\" &&\n !previouslyInstalledTemplates.includes(\"utils/t3-env\") &&\n // this last guard will allow this workaroudn to be bypassed if the registry server updates to start serving the dependency again\n meta.registryDependencies?.find((d) => d.includes(\"utils/t3-env\")) === undefined\n ) {\n // install the t3-env template manually first\n await installFromRegistry(\"utils/t3-env\");\n previouslyInstalledTemplates = getSettings().registryTemplates;\n }\n\n // now install the template using shadcn-install\n await shadcnInstall([url.toString()], meta.title);\n\n const handlebarsFiles = meta.files.filter((file) => file.handlebars);\n\n if (handlebarsFiles.length > 0) {\n // Build template data with schema information if available\n const baseTemplateData =\n dataSource && schemaName\n ? buildHandlebarsData({\n dataSource,\n schemaName,\n })\n : buildHandlebarsData();\n\n // Add page information to template data if available\n const templateData = {\n ...baseTemplateData,\n ...(routeName && { routeName }),\n ...(pageName && { pageName }),\n };\n\n // Resolve __PATH__ placeholders in file paths before handlebars processing\n const resolvedFiles = handlebarsFiles.map((file) => ({\n ...file,\n destinationPath: file.destinationPath?.replace(\"__PATH__\", `/(main)/${routeName ?? name}`),\n }));\n\n for (const file of resolvedFiles) {\n await randerHandlebarsToFile(file, templateData);\n }\n }\n\n // Add route to navigation if this is a page template\n if (meta.category === \"page\" && routeName && pageName) {\n await addRouteToNav({\n projectDir: state.projectDir,\n navType: \"primary\",\n label: pageName,\n href: `/${routeName}`,\n });\n }\n\n // if post-install steps, process those\n if (meta.postInstall) {\n for (const step of meta.postInstall) {\n if (step._from && previouslyInstalledTemplates.includes(step._from)) {\n // don't re-run post-install steps for templates that have already been installed\n continue;\n }\n await processPostInstallStep(step);\n }\n }\n\n // update the settings\n mergeSettings({\n registryTemplates: uniq([...previouslyInstalledTemplates, name, ...otherProofKitDependencies]),\n });\n } catch (error) {\n spinner.fail(\"Failed to fetch template metadata.\");\n logger.error(error);\n }\n}\n","import { registryFetch } from \"./http.js\";\n\nexport async function listItems() {\n const { data: items, error } = await registryFetch(\"@get/\");\n if (error) {\n throw new Error(`Failed to fetch items from registry: ${error.message}`);\n }\n return items;\n}\n","import { select } from \"@clack/prompts\";\nimport type { RegistryIndex } from \"@proofkit/registry\";\nimport { Command } from \"commander\";\nimport { capitalize, groupBy, uniq } from \"es-toolkit\";\nimport ora from \"ora\";\nimport { ciOption, debugOption } from \"~/globalOptions.js\";\nimport { initProgramState, state } from \"~/state.js\";\nimport { logger } from \"~/utils/logger.js\";\nimport { getSettings, type Settings } from \"~/utils/parseSettings.js\";\nimport { runAddReactEmailCommand } from \"../react-email.js\";\nimport { runAddTanstackQueryCommand } from \"../tanstack-query.js\";\nimport { abortIfCancel, ensureProofKitProject } from \"../utils.js\";\nimport { makeAddAuthCommand, runAddAuthAction } from \"./auth.js\";\nimport { makeAddDataSourceCommand, runAddDataSourceCommand } from \"./data-source/index.js\";\nimport { makeAddSchemaCommand, runAddSchemaAction } from \"./fmschema.js\";\nimport { makeAddPageCommand, runAddPageAction } from \"./page/index.js\";\nimport { installFromRegistry } from \"./registry/install.js\";\nimport { listItems } from \"./registry/listItems.js\";\nimport { preflightAddCommand } from \"./registry/preflight.js\";\n\nconst runAddFromRegistry = async (_options?: { noInstall?: boolean }) => {\n const settings = getSettings();\n\n const spinner = ora(\"Loading available components...\").start();\n let items: RegistryIndex;\n try {\n items = await listItems();\n } catch (error) {\n spinner.fail(\"Failed to load registry components\");\n logger.error(error);\n return;\n }\n\n const itemsNotInstalled = items.filter((item) => !settings.registryTemplates.includes(item.name));\n\n const groupedByCategory = groupBy(itemsNotInstalled, (item) => item.category);\n const categories = uniq(itemsNotInstalled.map((item) => item.category));\n\n spinner.succeed();\n\n const addType = abortIfCancel(\n await select({\n message: \"What do you want to add to your project?\",\n options: [\n // if there are pages available to install, show them first\n ...(categories.includes(\"page\") ? [{ label: \"Page\", value: \"page\" }] : []),\n\n // only show schema option if there is at least one data source\n ...(settings.dataSources.length > 0\n ? [\n {\n label: \"Schema\",\n value: \"schema\",\n hint: \"load data from a new table or layout from an existing data source\",\n },\n ]\n : []),\n\n {\n label: \"Data Source\",\n value: \"data\",\n hint: \"to connect to a new database or FileMaker file\",\n },\n\n // show the rest of the categories\n ...categories\n .filter((category) => category !== \"page\")\n .map((category) => ({\n label: capitalize(category),\n value: category,\n })),\n ],\n }),\n );\n\n if (addType === \"schema\") {\n await runAddSchemaAction();\n } else if (addType === \"data\") {\n await runAddDataSourceCommand();\n } else if ((categories as string[]).includes(addType)) {\n // one of the categories\n const itemsFromCategory = groupedByCategory[addType as keyof typeof groupedByCategory];\n\n const itemName = abortIfCancel(\n await select({\n message: `Select a ${addType} to add to your project`,\n options: itemsFromCategory.map((item) => ({\n label: item.title,\n hint: item.description,\n value: item.name,\n })),\n }),\n );\n\n await installFromRegistry(itemName);\n } else {\n logger.error(`Could not find any available components in the category \"${addType}\"`);\n }\n};\n\nexport const runAdd = async (name: string | undefined, options?: { noInstall?: boolean }) => {\n if (name === \"tanstack-query\") {\n return await runAddTanstackQueryCommand();\n }\n if (name !== undefined) {\n // an arbitrary name was provided, so we'll try to install from the registry\n return await installFromRegistry(name);\n }\n\n let settings: Settings;\n try {\n settings = getSettings();\n } catch {\n await preflightAddCommand();\n return await runAddFromRegistry(options);\n }\n\n if (settings.ui === \"shadcn\") {\n return await runAddFromRegistry(options);\n }\n ensureProofKitProject({ commandName: \"add\" });\n\n const addType = abortIfCancel(\n await select({\n message: \"What do you want to add to your project?\",\n options: [\n { label: \"Page\", value: \"page\" },\n // only show schema option if there is at least one data source\n ...(settings.dataSources.length > 0\n ? [\n {\n label: \"Schema\",\n value: \"schema\",\n hint: \"load data from a new table or layout from an existing data source\",\n },\n ]\n : []),\n { label: \"React Email\", value: \"react-email\" },\n {\n label: \"Data Source\",\n value: \"data\",\n hint: \"to connect to a new database or FileMaker file\",\n },\n ...(settings.auth.type === \"none\" && settings.appType === \"browser\" ? [{ label: \"Auth\", value: \"auth\" }] : []),\n ],\n }),\n );\n\n if (addType === \"auth\") {\n await runAddAuthAction();\n } else if (addType === \"data\") {\n await runAddDataSourceCommand();\n } else if (addType === \"page\") {\n await runAddPageAction();\n } else if (addType === \"schema\") {\n await runAddSchemaAction();\n } else if (addType === \"react-email\") {\n await runAddReactEmailCommand({ noInstall: options?.noInstall });\n }\n};\n\nexport const makeAddCommand = () => {\n const addCommand = new Command(\"add\")\n .description(\"Add a new component to your project\")\n .argument(\"[name]\", \"Type of component to add\")\n .addOption(ciOption)\n .addOption(debugOption)\n .option(\"--noInstall\", \"Do not run your package manager install command\", false)\n .action(async (name, options) => {\n await runAdd(name, options);\n });\n\n addCommand.hook(\"preAction\", (_thisCommand, _actionCommand) => {\n // console.log(\"preAction\", _actionCommand.opts());\n initProgramState(_actionCommand.opts());\n state.baseCommand = \"add\";\n });\n addCommand.hook(\"preSubcommand\", (_thisCommand, _subCommand) => {\n // console.log(\"preSubcommand\", _subCommand.opts());\n initProgramState(_subCommand.opts());\n state.baseCommand = \"add\";\n });\n\n addCommand.addCommand(makeAddAuthCommand());\n addCommand.addCommand(makeAddPageCommand());\n addCommand.addCommand(makeAddSchemaCommand());\n addCommand.addCommand(makeAddDataSourceCommand());\n return addCommand;\n};\n","import path from \"node:path\";\nimport * as p from \"@clack/prompts\";\nimport chalk from \"chalk\";\nimport { Command, Option } from \"commander\";\nimport { execa } from \"execa\";\nimport fs from \"fs-extra\";\nimport type { PackageJson } from \"type-fest\";\n\nimport { ciOption, debugOption } from \"~/globalOptions.js\";\n\n// Regex patterns defined at top level for performance\nconst LEADING_SYMBOLS_REGEX = /^[✔\\s]+/;\nconst MULTI_SPACE_REGEX = /\\s{2,}/;\nconst VERSION_PREFIX_REGEX = /^v/;\n\nimport { initProgramState, state } from \"~/state.js\";\nimport { getUserPkgManager } from \"~/utils/getUserPkgManager.js\";\nimport { getSettings } from \"~/utils/parseSettings.js\";\nimport { ensureProofKitProject } from \"../utils.js\";\n\nasync function checkVercelCLI(): Promise<boolean> {\n try {\n await execa(\"vercel\", [\"--version\"]);\n return true;\n } catch (_error) {\n return false;\n }\n}\n\nasync function installVercelCLI() {\n const pkgManager = getUserPkgManager();\n const spinner = p.spinner();\n spinner.start(\"Installing Vercel CLI...\");\n\n try {\n const installCmd = pkgManager === \"npm\" ? \"install\" : \"add\";\n await execa(pkgManager, [installCmd, \"-g\", \"vercel\"]);\n spinner.stop(\"Vercel CLI installed successfully\");\n return true;\n } catch (error) {\n spinner.stop(\"Failed to install Vercel CLI\");\n console.error(chalk.red(\"Error installing Vercel CLI:\"), error);\n return false;\n }\n}\n\nasync function checkVercelProject(): Promise<boolean> {\n try {\n // Try to read the .vercel/project.json file which exists when a project is linked\n const projectConfig = (await fs.readJSON(\".vercel/project.json\")) as VercelProjectConfig;\n return Boolean(projectConfig.projectId);\n } catch (_error) {\n if (state.debug) {\n console.log(\"\\nDebug: No Vercel project configuration found\");\n }\n return false;\n }\n}\n\nasync function getVercelTeams(): Promise<{ slug: string; name: string }[]> {\n try {\n if (state.debug) {\n console.log(\"\\nDebug: Running vercel teams list command...\");\n }\n\n const result = await execa(\"vercel\", [\"teams\", \"list\"], {\n all: true,\n });\n\n if (state.debug) {\n console.log(\"\\nDebug: Command output:\", result.all);\n }\n\n const lines = (result.all ?? \"\").split(\"\\n\").filter(Boolean);\n\n // Find the index of the header line\n const headerIndex = lines.findIndex((line) => line.includes(\"id\"));\n if (headerIndex === -1) {\n return [];\n }\n\n // Get only the lines after the header\n const teamLines = lines.slice(headerIndex + 1);\n\n if (state.debug) {\n console.log(\"\\nDebug: Team lines:\");\n for (const line of teamLines) {\n console.log(`\"${line}\"`);\n }\n }\n\n const teams = teamLines\n .map((line) => {\n // Remove any leading symbols (✔ or spaces) and trim\n const cleanLine = line.replace(LEADING_SYMBOLS_REGEX, \"\").trim();\n // Split on multiple spaces and take the first part as slug, rest as name\n const [slug, ...nameParts] = cleanLine.split(MULTI_SPACE_REGEX);\n if (!slug || nameParts.length === 0) {\n return null;\n }\n\n return {\n slug,\n name: nameParts.join(\" \").trim(),\n };\n })\n .filter((team): team is { slug: string; name: string } => team !== null);\n\n if (state.debug) {\n console.log(\"\\nDebug: Parsed teams:\", teams);\n }\n\n return teams;\n } catch (error) {\n if (state.debug) {\n console.error(\"Error getting Vercel teams:\", error);\n }\n return [];\n }\n}\n\nasync function setupVercelProject() {\n const spinner = p.spinner();\n\n try {\n // Get project name from package.json\n const pkgJson = (await fs.readJSON(\"package.json\")) as PackageJson;\n const projectName = pkgJson.name;\n\n // Get available teams\n const teams = await getVercelTeams();\n\n let teamFlag = \"\";\n if (teams.length > 1) {\n const teamChoice = await p.select({\n message: \"Select a team to deploy under:\",\n options: [\n ...teams.map((team) => ({\n value: team.slug,\n label: team.name,\n })),\n ],\n });\n\n if (p.isCancel(teamChoice)) {\n console.log(chalk.yellow(\"\\nOperation cancelled\"));\n return false;\n }\n\n if (teamChoice && typeof teamChoice === \"string\") {\n teamFlag = `--scope=${teamChoice}`;\n }\n }\n\n spinner.start(\"Creating Vercel project...\");\n\n // Create project with default settings\n await execa(\"vercel\", [\"link\", \"--yes\", ...(teamFlag ? [teamFlag] : [])], {\n env: {\n VERCEL_PROJECT_NAME: projectName,\n },\n });\n\n // Pull project settings\n spinner.message(\"Pulling project settings...\");\n await execa(\"vercel\", [\"pull\", \"--yes\"], {\n stdio: \"inherit\",\n });\n\n spinner.stop(\"Vercel project created successfully\");\n return true;\n } catch (error) {\n spinner.stop(\"Failed to set up Vercel project\");\n console.error(chalk.red(\"Error setting up Vercel project:\"), error);\n return false;\n }\n}\n\nasync function pushEnvironmentVariables() {\n const spinner = p.spinner();\n spinner.start(\"Pushing environment variables to Vercel...\");\n\n try {\n const settings = getSettings();\n const envFile = path.join(process.cwd(), settings.envFile ?? \".env\");\n\n if (!fs.existsSync(envFile)) {\n spinner.stop(\"No environment file found\");\n return true;\n }\n\n const envContent = await fs.readFile(envFile, \"utf-8\");\n const envVars = envContent\n .split(\"\\n\")\n .filter((line) => line.trim() && !line.startsWith(\"#\"))\n .map((line) => {\n const [key, ...valueParts] = line.split(\"=\");\n if (!key) {\n return null;\n }\n const value = valueParts.join(\"=\"); // Rejoin in case value contains =\n return { key: key.trim(), value: value.trim() };\n })\n .filter((item): item is { key: string; value: string } => item !== null);\n\n if (state.debug) {\n spinner.stop();\n console.log(\"\\nDebug: Parsed environment variables:\");\n for (const { key, value } of envVars) {\n console.log(` ${key}=${value.substring(0, 3)}...`);\n }\n spinner.start(\"Pushing environment variables to Vercel...\");\n }\n\n let failed = 0;\n const total = envVars.length;\n\n for (let i = 0; i < total; i++) {\n const envVar = envVars[i];\n if (!envVar) {\n continue;\n }\n const { key, value } = envVar;\n spinner.message(`Pushing environment variables to Vercel... (${i + 1}/${total})`);\n\n try {\n if (state.debug) {\n console.log(`\\nDebug: Attempting to add ${key} to Vercel...`);\n }\n\n const result = await execa(\"vercel\", [\"env\", \"add\", key, \"production\"], {\n input: value,\n stdio: \"pipe\",\n reject: false,\n });\n\n if (state.debug) {\n console.log(`Debug: Command exit code: ${result.exitCode}`);\n if (result.stdout) {\n console.log(\"Debug: stdout:\", result.stdout);\n }\n if (result.stderr) {\n console.log(\"Debug: stderr:\", result.stderr);\n }\n }\n\n if (result.exitCode !== 0) {\n throw new Error(`Command failed with exit code ${result.exitCode}`);\n }\n } catch (error) {\n failed++;\n if (state.debug) {\n console.error(chalk.yellow(`\\nDebug: Failed to add ${key}`));\n console.error(\"Debug: Full error:\", error);\n }\n }\n }\n\n if (failed > 0) {\n spinner.stop(chalk.yellow(`Environment variables pushed with ${failed} failures`));\n } else {\n spinner.stop(\"Environment variables pushed successfully\");\n }\n return failed < total;\n } catch (error) {\n spinner.stop(\"Failed to push environment variables\");\n if (state.debug) {\n console.error(\"\\nDebug: Top-level error in pushEnvironmentVariables:\");\n console.error(error);\n }\n return false;\n }\n}\n\ninterface VercelProjectConfig {\n projectId: string;\n settings?: {\n nodeVersion?: string;\n };\n [key: string]: unknown;\n}\n\nasync function ensureCorrectNodeVersion() {\n const nodeVersion = process.version.replace(VERSION_PREFIX_REGEX, \"\");\n const majorVersion = nodeVersion.split(\".\")[0];\n\n try {\n const projectJsonPath = \".vercel/project.json\";\n if (!fs.existsSync(projectJsonPath)) {\n if (state.debug) {\n console.log(\"Debug: No project.json found\");\n }\n return false;\n }\n\n const projectConfig = (await fs.readJSON(projectJsonPath)) as VercelProjectConfig;\n if (state.debug) {\n console.log(\"Debug: Current project config:\", projectConfig);\n }\n\n // Update the Node.js version\n projectConfig.settings = {\n ...projectConfig.settings,\n nodeVersion: `${majorVersion}.x`,\n };\n\n await fs.writeJSON(projectJsonPath, projectConfig, { spaces: 2 });\n if (state.debug) {\n console.log(`Debug: Updated Node.js version to ${majorVersion}.x`);\n }\n return true;\n } catch (error) {\n if (state.debug) {\n console.error(\"Debug: Failed to update Node.js version:\", error);\n }\n return false;\n }\n}\n\nasync function checkVercelLogin(): Promise<boolean> {\n try {\n const result = await execa(\"vercel\", [\"whoami\"], {\n stdio: \"pipe\",\n reject: false,\n });\n\n if (state.debug) {\n console.log(\"\\nDebug: Vercel whoami result:\", result);\n }\n\n return result.exitCode === 0;\n } catch (error) {\n if (state.debug) {\n console.error(\"Debug: Error checking Vercel login status:\", error);\n }\n return false;\n }\n}\n\nasync function loginToVercel(): Promise<boolean> {\n console.log(chalk.blue(\"\\nYou need to log in to Vercel first.\"));\n\n try {\n await execa(\"vercel\", [\"login\"], {\n stdio: \"inherit\",\n });\n return true;\n } catch (error) {\n console.error(chalk.red(\"\\nFailed to log in to Vercel:\"), error);\n return false;\n }\n}\n\nexport async function runDeploy() {\n if (state.debug) {\n console.log(\"Running deploy...\");\n }\n\n // Check if Vercel CLI is installed\n const hasVercelCLI = await checkVercelCLI();\n\n if (!hasVercelCLI) {\n const installed = await installVercelCLI();\n if (!installed) {\n console.log(chalk.red(\"\\nFailed to install Vercel CLI. Please install it manually using:\"));\n console.log(chalk.blue(\"\\n npm install -g vercel\"));\n return;\n }\n }\n\n // Check if user is logged in\n const isLoggedIn = await checkVercelLogin();\n if (!isLoggedIn) {\n const loginSuccessful = await loginToVercel();\n if (!loginSuccessful) {\n console.log(chalk.red(\"\\nFailed to log in to Vercel. Please try again.\"));\n return;\n }\n }\n\n // Check if project is set up with Vercel\n const hasVercelProject = await checkVercelProject();\n\n if (!hasVercelProject) {\n console.log(chalk.blue(\"\\nSetting up new Vercel project...\"));\n const setup = await setupVercelProject();\n if (!setup) {\n console.log(chalk.red(\"\\nFailed to set up Vercel project automatically.\"));\n return;\n }\n\n const envPushed = await pushEnvironmentVariables();\n if (!envPushed) {\n console.log(chalk.red(\"\\nFailed to push environment variables. Aborting deployment.\"));\n return;\n }\n }\n\n // Pull latest project settings\n console.log(chalk.blue(\"\\nPulling latest project settings...\"));\n try {\n await execa(\"vercel\", [\"pull\", \"--yes\"], {\n stdio: \"inherit\",\n });\n } catch (error) {\n console.error(chalk.red(\"\\nFailed to pull project settings:\"), error);\n return;\n }\n\n // Ensure correct Node.js version is set\n if (!(await ensureCorrectNodeVersion())) {\n console.error(chalk.red(\"\\nFailed to set Node.js version. Continuing anyway...\"));\n }\n\n if (state.localBuild) {\n // Build locally for Vercel\n console.log(chalk.blue(\"\\nPreparing local build for Vercel...\"));\n try {\n const result = await execa(\"vercel\", [\"build\"], {\n stdio: \"inherit\",\n reject: false,\n });\n if (result.exitCode === 0) {\n console.log(chalk.green(\"\\n✓ Local build successful!\"));\n } else {\n console.error(chalk.red(\"\\n✖ Local build failed\"));\n console.log(chalk.yellow(\"Fix the errors above and then try again.\"));\n return;\n }\n } catch (error) {\n console.error(chalk.red(\"\\nVercel build failed:\"), error);\n return;\n }\n\n // Deploy the pre-built project\n console.log(chalk.blue(\"\\nDeploying to Vercel...\"));\n\n const result = await execa(\"vercel\", [\"deploy\", \"--prebuilt\", \"--yes\"], {\n stdio: \"inherit\",\n reject: false,\n });\n if (result.exitCode === 0) {\n console.log(chalk.green(\"\\n✓ Deployment successful!\"));\n }\n } else {\n // Deploy and build on Vercel\n console.log(chalk.blue(\"\\nDeploying to Vercel...\"));\n try {\n const result = await execa(\"vercel\", [\"deploy\", \"--yes\"], {\n stdio: \"inherit\",\n reject: false,\n });\n if (result.exitCode === 0) {\n console.log(chalk.green(\"\\n✓ Deployment successful!\"));\n } else {\n const pkgManager = getUserPkgManager();\n const runCmd = pkgManager === \"npm\" ? \"npm run\" : pkgManager;\n console.error(chalk.red(\"\\n✖ Deployment failed\"));\n\n console.log(chalk.yellow(\"\\nTroubleshooting Tips:\"));\n console.log(chalk.dim(\"You can check for most errors before deploying for a faster iteration cycle\"));\n console.log(\n `${chalk.dim(\"Run\")} ${runCmd} tsc ${chalk.dim(\"to check for TypeScript errors (most common build errors)\")}`,\n );\n console.log(`${chalk.dim(\"Run\")} ${runCmd} build ${chalk.dim(\"to run the full production build locally\")}`);\n }\n } catch {\n // This catch block should rarely be hit since we're using reject: false\n return;\n }\n }\n}\n\nexport const makeDeployCommand = () => {\n const deployCommand = new Command(\"deploy\")\n .description(\"Deploy your ProofKit application to Vercel\")\n .addOption(ciOption)\n .addOption(debugOption)\n .addOption(new Option(\"--local-build\", \"Build locally before deploying\"))\n .action(runDeploy);\n\n deployCommand.hook(\"preAction\", (thisCommand) => {\n initProgramState(thisCommand.opts());\n state.baseCommand = \"deploy\";\n ensureProofKitProject({ commandName: \"deploy\" });\n });\n\n return deployCommand;\n};\n","import path from \"node:path\";\nimport fs from \"fs-extra\";\n\nimport { PKG_ROOT } from \"~/consts.js\";\nimport { installDependencies } from \"~/helpers/installDependencies.js\";\nimport type { AvailableDependencies } from \"~/installers/dependencyVersionMap.js\";\nimport { state } from \"~/state.js\";\nimport { addPackageDependency } from \"~/utils/addPackageDependency.js\";\n\nconst BASE_DEPS = [\n \"@radix-ui/react-slot\",\n \"@tailwindcss/postcss\",\n \"class-variance-authority\",\n \"clsx\",\n \"lucide-react\",\n \"tailwind-merge\",\n \"tailwindcss\",\n \"tw-animate-css\",\n] as AvailableDependencies[];\nconst BASE_DEV_DEPS = [] as AvailableDependencies[];\n\nexport async function addShadcn() {\n const projectDir = state.projectDir;\n\n const TEMPLATE_ROOT = path.join(PKG_ROOT, \"template/nextjs\");\n\n // 1. Add dependencies\n addPackageDependency({\n dependencies: BASE_DEPS,\n devMode: false,\n projectDir,\n });\n addPackageDependency({\n dependencies: BASE_DEV_DEPS,\n devMode: true,\n projectDir,\n });\n\n // 2. Copy config and utility files\n fs.copySync(path.join(TEMPLATE_ROOT, \"components.json\"), path.join(projectDir, \"components.json\"));\n fs.copySync(path.join(TEMPLATE_ROOT, \"postcss.config.cjs\"), path.join(projectDir, \"postcss.config.cjs\"));\n fs.copySync(path.join(TEMPLATE_ROOT, \"src/utils/styles.ts\"), path.join(projectDir, \"src/utils/styles.ts\"));\n fs.copySync(\n path.join(TEMPLATE_ROOT, \"src/config/theme/globals.css\"),\n path.join(projectDir, \"src/config/theme/globals.css\"),\n );\n\n // 3. Install dependencies\n await installDependencies();\n\n // 4. Success message\n console.log(\"\\n✅ shadcn/ui + Tailwind v4 upgrade complete!\\n\");\n}\n","import { type appTypes, getSettings, mergeSettings } from \"~/utils/parseSettings.js\";\nimport { copyCursorRules } from \"./cursorRules.js\";\nimport { addShadcn } from \"./shadcn.js\";\n\ninterface Upgrade {\n key: string;\n title: string;\n description: string;\n appType: (typeof appTypes)[number][];\n function: () => Promise<void>;\n}\n\nconst availableUpgrades: Upgrade[] = [\n {\n key: \"cursorRules\",\n title: \"Upgrade Cursor Rules\",\n description: \"Upgrade the .cursor rules in your project to the latest version.\",\n appType: [\"browser\"],\n function: copyCursorRules,\n },\n {\n key: \"shadcn\",\n title: \"Add Shadcn\",\n description:\n \"Add Shadcn to your project, to support easily adding new components from a variety of component registries.\",\n appType: [\"browser\", \"webviewer\"],\n function: addShadcn,\n },\n];\n\nexport type UpgradeKeys = (typeof availableUpgrades)[number][\"key\"];\n\nexport function checkForAvailableUpgrades() {\n const settings = getSettings();\n if (settings.ui === \"shadcn\") {\n return [];\n }\n\n const appliedUpgrades = settings.appliedUpgrades;\n\n const neededUpgrades = availableUpgrades.filter(\n (upgrade) => !appliedUpgrades.includes(upgrade.key) && upgrade.appType.includes(settings.appType),\n );\n\n return neededUpgrades.map(({ key, title, description }) => ({\n key,\n title,\n description,\n }));\n}\n\nexport async function runAllAvailableUpgrades() {\n const upgrades = checkForAvailableUpgrades();\n const settings = getSettings();\n if (settings.ui === \"shadcn\") {\n return;\n }\n\n for (const upgrade of upgrades) {\n const upgradeFunction = availableUpgrades.find((u) => u.key === upgrade.key)?.function;\n if (upgradeFunction) {\n await upgradeFunction();\n const appliedUpgrades = settings.appliedUpgrades;\n mergeSettings({\n appliedUpgrades: [...appliedUpgrades, upgrade.key],\n });\n }\n }\n}\n","import path from \"node:path\";\nimport * as p from \"@clack/prompts\";\nimport { Command } from \"commander\";\nimport dotenv from \"dotenv\";\nimport fs from \"fs-extra\";\nimport { z } from \"zod/v4\";\n\nimport { removeFromFmschemaConfig, runCodegenCommand } from \"~/generators/fmdapi.js\";\nimport { ciOption, debugOption } from \"~/globalOptions.js\";\nimport { initProgramState, state } from \"~/state.js\";\nimport { type DataSource, getSettings, setSettings } from \"~/utils/parseSettings.js\";\nimport { abortIfCancel, ensureProofKitProject, UserAbortedError } from \"../utils.js\";\n\nfunction getDataSourceInfo(source: DataSource) {\n if (source.type !== \"fm\") {\n return source.type;\n }\n\n const envFile = path.join(state.projectDir, \".env\");\n if (fs.existsSync(envFile)) {\n dotenv.config({ path: envFile });\n }\n\n const server = process.env[source.envNames.server] || \"unknown server\";\n const database = process.env[source.envNames.database] || \"unknown database\";\n\n try {\n // Format the server URL to be more readable\n const serverUrl = new URL(server);\n const formattedServer = serverUrl.hostname;\n return `${formattedServer}/${database}`;\n } catch (error) {\n if (state.debug) {\n console.error(\"Error parsing server URL:\", error);\n }\n return `${server}/${database}`;\n }\n}\n\nexport const runRemoveDataSourceCommand = async (name?: string) => {\n const settings = getSettings();\n\n if (settings.dataSources.length === 0) {\n p.note(\"No data sources found in your project.\");\n return;\n }\n\n let dataSourceName = name;\n\n // If no name provided, prompt for selection\n if (dataSourceName) {\n // Validate that the provided name exists\n const dataSourceExists = settings.dataSources.some((source) => source.name === dataSourceName);\n if (!dataSourceExists) {\n throw new Error(`Data source \"${dataSourceName}\" not found in your project.`);\n }\n } else {\n dataSourceName = abortIfCancel(\n await p.select({\n message: \"Which data source do you want to remove?\",\n options: settings.dataSources.map((source) => {\n let info = \"\";\n try {\n info = getDataSourceInfo(source);\n } catch (error) {\n if (state.debug) {\n console.error(\"Error getting data source info:\", error);\n }\n info = \"unknown connection\";\n }\n return {\n label: `${source.name} (${info})`,\n value: source.name,\n };\n }),\n }),\n );\n }\n\n let confirmed = true;\n if (!state.ci) {\n confirmed = abortIfCancel(\n await p.confirm({\n message: `Are you sure you want to remove the data source \"${dataSourceName}\"? This will only remove it from your configuration, not replace any possible usage, which may cause TypeScript errors.`,\n }),\n );\n\n if (!confirmed) {\n throw new UserAbortedError();\n }\n }\n\n // Get the data source before removing it\n const dataSource = settings.dataSources.find((source) => source.name === dataSourceName);\n\n // Remove the data source from settings\n settings.dataSources = settings.dataSources.filter((source) => source.name !== dataSourceName);\n\n // Save the updated settings\n setSettings(settings);\n\n if (dataSource?.type === \"fm\") {\n // For FileMaker data sources, remove from fmschema.config.mjs\n removeFromFmschemaConfig({\n dataSourceName,\n });\n\n if (state.debug) {\n p.note(\"Removed schemas from fmschema.config.mjs\");\n }\n\n // Remove the schema folder for this data source\n const schemaFolderPath = path.join(state.projectDir, \"src\", \"config\", \"schemas\", dataSourceName);\n if (fs.existsSync(schemaFolderPath)) {\n fs.removeSync(schemaFolderPath);\n if (state.debug) {\n p.note(`Removed schema folder at ${schemaFolderPath}`);\n }\n }\n\n // Run typegen to regenerate types\n await runCodegenCommand();\n if (state.debug) {\n p.note(\"Successfully regenerated types\");\n }\n }\n\n p.note(`Successfully removed data source \"${dataSourceName}\"`);\n};\n\nexport const makeRemoveDataSourceCommand = () => {\n const removeDataSourceCommand = new Command(\"data\")\n .description(\"Remove a data source from your project\")\n .option(\"--name <name>\", \"Name of the data source to remove\")\n .addOption(ciOption)\n .addOption(debugOption)\n .action(async (options) => {\n const schema = z.object({\n name: z.string().optional(),\n });\n const validated = schema.parse(options);\n await runRemoveDataSourceCommand(validated.name);\n });\n\n removeDataSourceCommand.hook(\"preAction\", (_thisCommand, actionCommand) => {\n initProgramState(actionCommand.opts());\n state.baseCommand = \"remove\";\n ensureProofKitProject({ commandName: \"remove\" });\n });\n\n return removeDataSourceCommand;\n};\n","import path from \"node:path\";\nimport * as p from \"@clack/prompts\";\nimport { Command } from \"commander\";\nimport fs from \"fs-extra\";\nimport { Node, type Project, type PropertyAssignment, SyntaxKind } from \"ts-morph\";\n\nimport { ciOption, debugOption } from \"~/globalOptions.js\";\nimport { initProgramState, state } from \"~/state.js\";\nimport { getSettings } from \"~/utils/parseSettings.js\";\nimport { formatAndSaveSourceFiles, getNewProject } from \"~/utils/ts-morph.js\";\nimport { abortIfCancel, ensureProofKitProject } from \"../utils.js\";\n\nconst getExistingRoutes = (project: Project): { label: string; href: string }[] => {\n const navFilePath = path.join(state.projectDir, \"src/app/navigation.tsx\");\n\n // If navigation file doesn't exist (e.g., webviewer apps), there are no nav routes to remove\n if (!fs.existsSync(navFilePath)) {\n return [];\n }\n\n const sourceFile = project.addSourceFileAtPath(navFilePath);\n\n const routes: { label: string; href: string }[] = [];\n\n // Get primary routes\n const primaryRoutes = sourceFile\n .getVariableDeclaration(\"primaryRoutes\")\n ?.getInitializerIfKind(SyntaxKind.ArrayLiteralExpression)\n ?.getElements();\n\n if (primaryRoutes) {\n for (const element of primaryRoutes) {\n if (Node.isObjectLiteralExpression(element)) {\n const labelProp = element\n .getProperties()\n .find((prop): prop is PropertyAssignment => Node.isPropertyAssignment(prop) && prop.getName() === \"label\");\n const hrefProp = element\n .getProperties()\n .find((prop): prop is PropertyAssignment => Node.isPropertyAssignment(prop) && prop.getName() === \"href\");\n\n const label = labelProp?.getInitializer()?.getText().replace(/['\"]/g, \"\");\n const href = hrefProp?.getInitializer()?.getText().replace(/['\"]/g, \"\");\n\n if (label && href) {\n routes.push({ label, href });\n }\n }\n }\n }\n\n // Get secondary routes\n const secondaryRoutes = sourceFile\n .getVariableDeclaration(\"secondaryRoutes\")\n ?.getInitializerIfKind(SyntaxKind.ArrayLiteralExpression)\n ?.getElements();\n\n if (secondaryRoutes) {\n for (const element of secondaryRoutes) {\n if (Node.isObjectLiteralExpression(element)) {\n const labelProp = element\n .getProperties()\n .find((prop): prop is PropertyAssignment => Node.isPropertyAssignment(prop) && prop.getName() === \"label\");\n const hrefProp = element\n .getProperties()\n .find((prop): prop is PropertyAssignment => Node.isPropertyAssignment(prop) && prop.getName() === \"href\");\n\n const label = labelProp?.getInitializer()?.getText().replace(/['\"]/g, \"\");\n const href = hrefProp?.getInitializer()?.getText().replace(/['\"]/g, \"\");\n\n if (label && href) {\n routes.push({ label, href });\n }\n }\n }\n }\n\n return routes;\n};\n\nconst removeRouteFromNav = async (project: Project, routeToRemove: string) => {\n const navFilePath = path.join(state.projectDir, \"src/app/navigation.tsx\");\n\n // Skip if there is no navigation file\n if (!fs.existsSync(navFilePath)) {\n return;\n }\n\n const sourceFile = project.addSourceFileAtPath(navFilePath);\n\n // Remove from primary routes\n const primaryRoutes = sourceFile\n .getVariableDeclaration(\"primaryRoutes\")\n ?.getInitializerIfKind(SyntaxKind.ArrayLiteralExpression);\n\n if (primaryRoutes) {\n const elements = primaryRoutes.getElements();\n for (let i = elements.length - 1; i >= 0; i--) {\n const element = elements[i];\n if (Node.isObjectLiteralExpression(element)) {\n const hrefProp = element\n .getProperties()\n .find((prop): prop is PropertyAssignment => Node.isPropertyAssignment(prop) && prop.getName() === \"href\");\n\n const href = hrefProp?.getInitializer()?.getText().replace(/['\"]/g, \"\");\n\n if (href === routeToRemove) {\n primaryRoutes.removeElement(i);\n }\n }\n }\n }\n\n // Remove from secondary routes\n const secondaryRoutes = sourceFile\n .getVariableDeclaration(\"secondaryRoutes\")\n ?.getInitializerIfKind(SyntaxKind.ArrayLiteralExpression);\n\n if (secondaryRoutes) {\n const elements = secondaryRoutes.getElements();\n for (let i = elements.length - 1; i >= 0; i--) {\n const element = elements[i];\n if (Node.isObjectLiteralExpression(element)) {\n const hrefProp = element\n .getProperties()\n .find((prop): prop is PropertyAssignment => Node.isPropertyAssignment(prop) && prop.getName() === \"href\");\n\n const href = hrefProp?.getInitializer()?.getText().replace(/['\"]/g, \"\");\n\n if (href === routeToRemove) {\n secondaryRoutes.removeElement(i);\n }\n }\n }\n }\n\n await formatAndSaveSourceFiles(project);\n};\n\nexport const runRemovePageAction = async (routeName?: string) => {\n const _settings = getSettings();\n const projectDir = state.projectDir;\n const project = getNewProject(projectDir);\n\n // Get existing routes\n const routes = getExistingRoutes(project);\n\n if (routes.length === 0) {\n return p.cancel(\"No pages found in the navigation.\");\n }\n\n let selectedRouteName = routeName;\n if (!selectedRouteName) {\n selectedRouteName = abortIfCancel(\n await p.select({\n message: \"Select the page to remove\",\n options: routes.map((route) => ({\n label: `${route.label} (${route.href})`,\n value: route.href,\n })),\n }),\n );\n }\n\n if (!selectedRouteName.startsWith(\"/\")) {\n selectedRouteName = `/${selectedRouteName}`;\n }\n\n const pagePath =\n state.appType === \"browser\"\n ? path.join(projectDir, \"src/app/(main)\", selectedRouteName)\n : path.join(projectDir, \"src/routes\", selectedRouteName);\n\n const spinner = p.spinner();\n spinner.start(\"Removing page\");\n\n try {\n // Check if directory exists\n if (!fs.existsSync(pagePath)) {\n spinner.stop(\"Page not found!\");\n return p.cancel(`Page at ${selectedRouteName} does not exist`);\n }\n\n // Remove from navigation first (if present)\n await removeRouteFromNav(project, selectedRouteName);\n\n // Remove the page directory\n await fs.remove(pagePath);\n\n spinner.stop(\"Page removed successfully!\");\n } catch (error) {\n spinner.stop(\"Failed to remove page!\");\n console.error(\"Error removing page:\", error);\n process.exit(1);\n }\n};\n\nexport const makeRemovePageCommand = () => {\n const removePageCommand = new Command(\"page\")\n .description(\"Remove a page from your project\")\n .argument(\"[route]\", \"The route of the page to remove\")\n .addOption(ciOption)\n .addOption(debugOption)\n .action(async (route: string) => {\n await runRemovePageAction(route);\n });\n\n removePageCommand.hook(\"preAction\", (_thisCommand, actionCommand) => {\n initProgramState(actionCommand.opts());\n state.baseCommand = \"remove\";\n ensureProofKitProject({ commandName: \"remove\" });\n });\n\n return removePageCommand;\n};\n","import * as p from \"@clack/prompts\";\nimport { Command } from \"commander\";\nimport { z } from \"zod/v4\";\n\nimport { getExistingSchemas, removeLayout } from \"~/generators/fmdapi.js\";\nimport { state } from \"~/state.js\";\nimport { getSettings, type Settings } from \"~/utils/parseSettings.js\";\nimport { abortIfCancel } from \"../utils.js\";\n\nexport const runRemoveSchemaAction = async (opts?: {\n projectDir?: string;\n settings?: Settings;\n sourceName?: string;\n schemaName?: string;\n}) => {\n const settings = opts?.settings ?? getSettings();\n const projectDir = opts?.projectDir ?? state.projectDir;\n let sourceName = opts?.sourceName;\n\n // If there is more than one fm data source, prompt for which one to remove from\n if (!sourceName && settings.dataSources.filter((s) => s.type === \"fm\").length > 1) {\n const dataSourceName = await p.select({\n message: \"Which FileMaker data source do you want to remove a layout from?\",\n options: settings.dataSources.filter((s) => s.type === \"fm\").map((s) => ({ label: s.name, value: s.name })),\n });\n if (p.isCancel(dataSourceName)) {\n p.cancel();\n process.exit(0);\n }\n sourceName = z.string().parse(dataSourceName);\n }\n\n if (!sourceName) {\n sourceName = \"filemaker\";\n }\n\n const dataSource = settings.dataSources.filter((s) => s.type === \"fm\").find((s) => s.name === sourceName);\n if (!dataSource) {\n throw new Error(`FileMaker data source ${sourceName} not found in your ProofKit config`);\n }\n\n // Get existing schemas for this data source\n const existingSchemas = getExistingSchemas({\n projectDir,\n dataSourceName: sourceName,\n });\n\n if (existingSchemas.length === 0) {\n p.note(`No layouts found in data source \"${sourceName}\"`, \"Nothing to remove\");\n return;\n }\n\n // Show existing schemas and let user pick one to remove\n const schemaToRemove =\n opts?.schemaName ??\n abortIfCancel(\n await p.select({\n message: \"Select a layout to remove\",\n options: existingSchemas\n .map((schema) => ({\n label: `${schema.layout} (${schema.schemaName})`,\n value: schema.schemaName ?? \"\",\n }))\n .filter((opt) => opt.value !== \"\"),\n }),\n );\n\n // Confirm removal\n const confirmRemoval = await p.confirm({\n message: `Are you sure you want to remove the layout \"${schemaToRemove}\"?`,\n initialValue: false,\n });\n\n if (p.isCancel(confirmRemoval) || !confirmRemoval) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n // Remove the schema\n await removeLayout({\n projectDir,\n dataSourceName: sourceName,\n schemaName: schemaToRemove,\n runCodegen: true,\n });\n\n p.outro(`Layout \"${schemaToRemove}\" has been removed from your project`);\n};\n\nexport const makeRemoveSchemaCommand = () => {\n const removeSchemaCommand = new Command(\"layout\")\n .alias(\"schema\")\n .description(\"Remove a layout from your fmschema file\")\n .action(async (opts: { settings: Settings }) => {\n const settings = opts.settings;\n await runRemoveSchemaAction({ settings });\n });\n\n return removeSchemaCommand;\n};\n","import * as p from \"@clack/prompts\";\nimport { Command } from \"commander\";\n\nimport { ciOption, debugOption } from \"~/globalOptions.js\";\nimport { initProgramState, state } from \"~/state.js\";\nimport { getSettings } from \"~/utils/parseSettings.js\";\nimport { abortIfCancel, ensureProofKitProject } from \"../utils.js\";\nimport { makeRemoveDataSourceCommand, runRemoveDataSourceCommand } from \"./data-source.js\";\nimport { makeRemovePageCommand, runRemovePageAction } from \"./page.js\";\nimport { makeRemoveSchemaCommand, runRemoveSchemaAction } from \"./schema.js\";\n\nexport const runRemove = async (_name: string | undefined) => {\n const settings = getSettings();\n\n const removeType = abortIfCancel(\n await p.select({\n message: \"What do you want to remove from your project?\",\n options: [\n { label: \"Page\", value: \"page\" },\n {\n label: \"Schema\",\n value: \"schema\",\n hint: \"remove a table or layout schema\",\n },\n ...(settings.appType === \"browser\"\n ? [\n {\n label: \"Data Source\",\n value: \"data\",\n hint: \"remove a database or FileMaker connection\",\n },\n ]\n : []),\n ],\n }),\n );\n\n if (removeType === \"data\") {\n await runRemoveDataSourceCommand();\n } else if (removeType === \"page\") {\n await runRemovePageAction();\n } else if (removeType === \"schema\") {\n await runRemoveSchemaAction();\n }\n};\n\nexport function makeRemoveCommand() {\n const removeCommand = new Command(\"remove\")\n .description(\"Remove a component from your project\")\n .argument(\"[name]\", \"Type of component to remove\")\n .addOption(ciOption)\n .addOption(debugOption)\n .action(runRemove);\n\n removeCommand.hook(\"preAction\", (_thisCommand, _actionCommand) => {\n initProgramState(_actionCommand.opts());\n state.baseCommand = \"remove\";\n ensureProofKitProject({ commandName: \"remove\" });\n });\n removeCommand.hook(\"preSubcommand\", (_thisCommand, _subCommand) => {\n initProgramState(_subCommand.opts());\n state.baseCommand = \"remove\";\n ensureProofKitProject({ commandName: \"remove\" });\n });\n\n // Add subcommands\n removeCommand.addCommand(makeRemoveDataSourceCommand());\n removeCommand.addCommand(makeRemovePageCommand());\n removeCommand.addCommand(makeRemoveSchemaCommand());\n\n return removeCommand;\n}\n","import { Command } from \"commander\";\n\nimport { runCodegenCommand } from \"~/generators/fmdapi.js\";\nimport type { Settings } from \"~/utils/parseSettings.js\";\nimport { ensureProofKitProject } from \"../utils.js\";\n\nexport async function runTypegen(opts: { settings: Settings }) {\n const dataSources = opts.settings.dataSources;\n let generateFmTypes = false;\n for await (const db of dataSources) {\n if (db.type === \"supabase\") {\n throw new Error(\"Supabase is not supported yet\");\n }\n if (db.type === \"fm\") {\n console.log(`Detected FileMaker database, generating types for ${db.name}...`);\n generateFmTypes = true;\n } else {\n throw new Error(\"Unable to generate types for unknown database type\");\n }\n }\n\n if (generateFmTypes) {\n await runCodegenCommand();\n }\n}\n\nexport const makeTypegenCommand = () => {\n const typegenCommand = new Command(\"typegen\").description(\"Generate types for your project\").action(runTypegen);\n\n typegenCommand.hook(\"preAction\", (_thisCommand, actionCommand) => {\n const settings = ensureProofKitProject({ commandName: \"typegen\" });\n actionCommand.setOptionValue(\"settings\", settings);\n });\n\n return typegenCommand;\n};\n","import chalk from \"chalk\";\nimport { Command } from \"commander\";\n\nimport { initProgramState, state } from \"~/state.js\";\nimport { runAllAvailableUpgrades } from \"~/upgrades/index.js\";\nimport { logger } from \"~/utils/logger.js\";\nimport { ensureProofKitProject } from \"../utils.js\";\n\nexport const runUpgrade = async () => {\n initProgramState({});\n state.baseCommand = \"upgrade\";\n ensureProofKitProject({ commandName: \"upgrade\" });\n\n logger.info(\"\\nUpgrading ProofKit components...\\n\");\n\n try {\n await runAllAvailableUpgrades();\n logger.info(chalk.green(\"✔ Successfully upgraded components\\n\"));\n } catch (error) {\n logger.error(\"Failed to upgrade components:\", error);\n process.exit(1);\n }\n};\n\nexport const upgrade = new Command()\n .name(\"upgrade\")\n .description(\"Upgrade ProofKit components in your project\")\n .action(runUpgrade);\n","import { confirm, log, select } from \"@clack/prompts\";\nimport chalk from \"chalk\";\nimport open from \"open\";\n\nimport { DOCS_URL } from \"~/consts.js\";\nimport { checkForAvailableUpgrades, runAllAvailableUpgrades } from \"~/upgrades/index.js\";\nimport { getSettings } from \"~/utils/parseSettings.js\";\nimport { runAdd } from \"./add/index.js\";\nimport { runDeploy } from \"./deploy/index.js\";\nimport { runRemove } from \"./remove/index.js\";\nimport { runTypegen } from \"./typegen/index.js\";\nimport { runUpgrade } from \"./update/index.js\";\nimport { abortIfCancel } from \"./utils.js\";\n\nexport const runMenu = async () => {\n const settings = getSettings();\n const upgrades = checkForAvailableUpgrades();\n\n if (upgrades.length > 0) {\n log.info(\n `${chalk.yellow(\"There are upgrades available for your ProofKit project\")}\\n${upgrades\n .map((upgrade) => `- ${upgrade.title}`)\n .join(\"\\n\")}`,\n );\n\n const shouldRunUpgrades = abortIfCancel(\n await confirm({\n message: \"Would you like to run them now?\",\n initialValue: true,\n }),\n );\n\n if (shouldRunUpgrades) {\n await runAllAvailableUpgrades();\n log.success(chalk.green(\"Successfully ran all upgrades\"));\n } else {\n log.info(`You can apply the upgrades later by running ${chalk.cyan(\"proofkit upgrade\")}`);\n }\n }\n\n const menuChoice = abortIfCancel(\n await select({\n message: \"What would you like to do?\",\n options: [\n {\n label: \"Add Components\",\n value: \"add\",\n hint: \"Add new pages, schemas, data sources, etc.\",\n },\n {\n label: \"Remove Components\",\n value: \"remove\",\n hint: \"Remove pages, schemas, data sources, etc.\",\n },\n {\n label: \"Generate Types\",\n value: \"typegen\",\n hint: \"Update field definitions from your data sources\",\n },\n {\n label: \"Deploy\",\n value: \"deploy\",\n hint: \"Deploy your app to Vercel\",\n },\n {\n label: \"Upgrade Components\",\n value: \"upgrade\",\n hint: \"Update ProofKit components to latest version\",\n },\n {\n label: \"View Documentation\",\n value: \"docs\",\n hint: \"Open ProofKit documentation\",\n },\n ],\n }),\n );\n\n switch (menuChoice) {\n case \"add\":\n await runAdd(undefined);\n break;\n case \"remove\":\n await runRemove(undefined);\n break;\n case \"docs\":\n log.info(`Opening ${chalk.cyan(DOCS_URL)} in your browser...`);\n await open(DOCS_URL);\n break;\n case \"typegen\":\n await runTypegen({ settings });\n break;\n case \"deploy\":\n await runDeploy();\n break;\n case \"upgrade\":\n await runUpgrade();\n break;\n default:\n throw new Error(`Unknown menu choice: ${menuChoice}`);\n }\n};\n","import { Command } from \"commander\";\n\nimport { ciOption } from \"~/globalOptions.js\";\nimport { initProgramState, state } from \"~/state.js\";\nimport { ensureProofKitProject } from \"../utils.js\";\nimport { runUpgrade } from \"./index.js\";\n\nexport const makeUpgradeCommand = () => {\n const upgradeCommand = new Command(\"upgrade\")\n .description(\"Upgrade ProofKit components in your project\")\n .addOption(ciOption)\n .action(async (args) => {\n initProgramState(args);\n\n await runUpgrade();\n });\n\n upgradeCommand.hook(\"preAction\", (_thisCommand, _actionCommand) => {\n initProgramState(_actionCommand.opts());\n state.baseCommand = \"upgrade\";\n ensureProofKitProject({ commandName: \"upgrade\" });\n });\n\n return upgradeCommand;\n};\n","import { execSync } from \"node:child_process\";\nimport https from \"node:https\";\nimport * as p from \"@clack/prompts\";\nimport chalk from \"chalk\";\nimport * as semver from \"semver\";\n\nimport { cliName, npmName } from \"~/consts.js\";\nimport { getVersion } from \"./getProofKitVersion.js\";\nimport { getUserPkgManager } from \"./getUserPkgManager.js\";\nimport { logger } from \"./logger.js\";\n\nexport const renderVersionWarning = (npmVersion: string) => {\n const currentVersion = getVersion();\n\n // Check if current version is a pre-release (beta, alpha, etc.)\n if (semver.prerelease(currentVersion)) {\n logger.warn(` You are using a pre-release version of ${cliName}.`);\n logger.warn(\" Please report any bugs you encounter.\");\n } else if (semver.valid(currentVersion) && semver.valid(npmVersion) && semver.lt(currentVersion, npmVersion)) {\n logger.warn(` You are using an outdated version of ${cliName}.`);\n logger.warn(\" Your version:\", `${currentVersion}.`, \"Latest version in the npm registry:\", npmVersion);\n logger.warn(\" Please run the CLI with @latest to get the latest updates.\");\n }\n console.log(\"\");\n};\n\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the LICENSE file in the root\n * directory of this source tree.\n * https://github.com/facebook/create-react-app/blob/main/packages/create-react-app/LICENSE\n */\ninterface DistTagsBody {\n latest: string;\n}\n\nfunction checkForLatestVersion(): Promise<string> {\n return new Promise((resolve, reject) => {\n https\n .get(\"https://registry.npmjs.org/-/package/@proofkit/cli/dist-tags\", (res) => {\n if (res.statusCode === 200) {\n let body = \"\";\n res.on(\"data\", (data) => {\n body += data;\n });\n res.on(\"end\", () => {\n resolve((JSON.parse(body) as DistTagsBody).latest);\n });\n } else {\n reject();\n }\n })\n .on(\"error\", () => {\n // logger.error(\"Unable to check for latest version.\");\n reject();\n });\n });\n}\n\nexport const getNpmVersion = async () =>\n // `fetch` to the registry is faster than `npm view` so we try that first\n checkForLatestVersion().catch(() => {\n try {\n return execSync(\"npm view proofkit version\").toString().trim();\n } catch {\n return null;\n }\n });\n\nexport const checkAndRenderVersionWarning = async () => {\n const npmVersion = await getNpmVersion();\n const currentVersion = getVersion();\n\n // Only show warning if current version is valid, npm version is valid, and current is actually older\n if (npmVersion && semver.valid(currentVersion) && semver.valid(npmVersion) && semver.lt(currentVersion, npmVersion)) {\n const pkgManager = getUserPkgManager();\n p.log.warn(\n `${chalk.yellow(\n `You are using an outdated version of ${cliName}.`,\n )} Your version: ${currentVersion}. Latest version: ${npmVersion}.\n Run ${chalk.magenta.bold(`${pkgManager} install ${npmName}@latest`)} to get the latest updates.`,\n );\n }\n return { npmVersion, currentVersion };\n};\n","#!/usr/bin/env node --no-warnings\nimport { intro } from \"@clack/prompts\";\nimport chalk from \"chalk\";\nimport { Command } from \"commander\";\nimport { makeInitCommand, runInit } from \"~/cli/init.js\";\nimport { logger } from \"~/utils/logger.js\";\nimport { proofGradient, renderTitle } from \"~/utils/renderTitle.js\";\nimport { makeAddCommand } from \"./cli/add/index.js\";\nimport { makeDeployCommand } from \"./cli/deploy/index.js\";\nimport { runMenu } from \"./cli/menu.js\";\nimport { makeRemoveCommand } from \"./cli/remove/index.js\";\nimport { makeTypegenCommand } from \"./cli/typegen/index.js\";\nimport { makeUpgradeCommand } from \"./cli/update/makeUpgradeCommand.js\";\nimport { UserAbortedError } from \"./cli/utils.js\";\nimport { npmName } from \"./consts.js\";\nimport { ciOption } from \"./globalOptions.js\";\nimport { initProgramState, state } from \"./state.js\";\nimport { getVersion } from \"./utils/getProofKitVersion.js\";\nimport { getSettings, type Settings } from \"./utils/parseSettings.js\";\nimport { checkAndRenderVersionWarning } from \"./utils/renderVersionWarning.js\";\n\nconst version = getVersion();\n\nconst main = async () => {\n const program = new Command();\n renderTitle();\n await checkAndRenderVersionWarning();\n\n program\n .name(npmName)\n .version(version)\n .command(\"default\", { hidden: true, isDefault: true })\n .addOption(ciOption)\n .action(async (args) => {\n initProgramState(args);\n\n let settings: Settings | undefined;\n try {\n settings = getSettings();\n } catch {\n // void\n }\n\n if (state.ci) {\n logger.warn(\"Running in CI mode\");\n }\n\n if (settings) {\n intro(`Found ${proofGradient(\"ProofKit\")} project`);\n await runMenu();\n } else {\n intro(`No ${proofGradient(\"ProofKit\")} project found, running \\`init\\``);\n await runInit();\n }\n })\n .addHelpText(\"afterAll\", `\\n The ProofKit CLI was inspired by the ${chalk.hex(\"#E8DCFF\").bold(\"t3 stack\")}\\n`);\n\n program.addCommand(makeInitCommand());\n program.addCommand(makeAddCommand());\n program.addCommand(makeRemoveCommand());\n program.addCommand(makeTypegenCommand());\n program.addCommand(makeDeployCommand());\n program.addCommand(makeUpgradeCommand());\n\n await program.parseAsync(process.argv);\n process.exit(0);\n};\n\nmain().catch((err) => {\n if (err instanceof UserAbortedError) {\n process.exit(0);\n } else if (err instanceof Error) {\n logger.error(\"Aborting installation...\");\n logger.error(err);\n } else {\n logger.error(\"An unknown error has occurred. Please open an issue on github with the below:\");\n console.log(err);\n }\n process.exit(1);\n});\n"],"x_google_ignoreList":[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,115,116,117,118,119,120,121,122,123,124,125,141,142,143,144,145,146,147],"mappings":"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"}
|