attaform 0.19.0 → 0.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/dist/chunks/devtools.cjs +1 -1
- package/dist/chunks/devtools.mjs +1 -1
- package/dist/chunks/indexeddb.cjs +1 -1
- package/dist/chunks/indexeddb.mjs +1 -1
- package/dist/chunks/local-storage.cjs +1 -1
- package/dist/chunks/local-storage.mjs +1 -1
- package/dist/chunks/session-storage.cjs +1 -1
- package/dist/chunks/session-storage.mjs +1 -1
- package/dist/index.cjs +3 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +14 -40
- package/dist/index.d.mts +14 -40
- package/dist/index.d.ts +14 -40
- package/dist/index.mjs +5 -5
- package/dist/nuxt.d.cts +1 -1
- package/dist/nuxt.d.mts +1 -1
- package/dist/nuxt.d.ts +1 -1
- package/dist/runtime/components/AttaformDevtoolsPanel.vue +2 -2
- package/dist/runtime/components/DevtoolsValueTree.d.vue.ts +1 -3
- package/dist/runtime/components/DevtoolsValueTree.vue.d.ts +1 -3
- package/dist/runtime/plugins/attaform.cjs +2 -2
- package/dist/runtime/plugins/attaform.mjs +2 -2
- package/dist/shared/attaform.BCBxTyMC.cjs +1882 -0
- package/dist/shared/attaform.BCBxTyMC.cjs.map +1 -0
- package/dist/shared/{attaform.CrpjyXdO.mjs → attaform.BKozEdTr.mjs} +275 -266
- package/dist/shared/attaform.BKozEdTr.mjs.map +1 -0
- package/dist/shared/{attaform.Bubm_slq.cjs → attaform.BM6YD9kZ.cjs} +212 -269
- package/dist/shared/attaform.BM6YD9kZ.cjs.map +1 -0
- package/dist/shared/{attaform.CoxJ8Qm8.cjs → attaform.BPxsYtTe.cjs} +2 -26
- package/dist/shared/attaform.BPxsYtTe.cjs.map +1 -0
- package/dist/shared/{attaform.BqEfHpVB.cjs → attaform.BPy-4qRx.cjs} +275 -268
- package/dist/shared/attaform.BPy-4qRx.cjs.map +1 -0
- package/dist/shared/{attaform.BTpuvGec.d.ts → attaform.Bh3ACtts.d.ts} +109 -101
- package/dist/shared/{attaform.BTi-PsHr.mjs → attaform.BqZuwLTK.mjs} +1868 -1477
- package/dist/shared/attaform.BqZuwLTK.mjs.map +1 -0
- package/dist/shared/{attaform.JBx8cfMA.cjs → attaform.BrrXNmfK.cjs} +263 -799
- package/dist/shared/attaform.BrrXNmfK.cjs.map +1 -0
- package/dist/shared/{attaform.CXpzmj38.mjs → attaform.BupwXkj_.mjs} +213 -270
- package/dist/shared/attaform.BupwXkj_.mjs.map +1 -0
- package/dist/shared/{attaform.ePUcKxId.d.cts → attaform.D5-1XGQU.d.cts} +109 -101
- package/dist/shared/attaform.D6CwqkPx.mjs +1876 -0
- package/dist/shared/attaform.D6CwqkPx.mjs.map +1 -0
- package/dist/shared/attaform.DHRWn-cu.cjs +785 -0
- package/dist/shared/attaform.DHRWn-cu.cjs.map +1 -0
- package/dist/shared/{attaform.C1msmO2v.cjs → attaform.DLnE5bZa.cjs} +1798 -1405
- package/dist/shared/attaform.DLnE5bZa.cjs.map +1 -0
- package/dist/shared/{attaform.D4I63aBV.d.ts → attaform.DSD85fHb.d.cts} +1 -19
- package/dist/shared/{attaform.CBjmobqk.d.cts → attaform.DSD85fHb.d.mts} +1 -19
- package/dist/shared/{attaform.DXYHL99q.d.mts → attaform.DSD85fHb.d.ts} +1 -19
- package/dist/shared/{attaform.B7rzpK1U.d.cts → attaform.DkA5J8NW.d.cts} +1 -17
- package/dist/shared/{attaform.B7rzpK1U.d.mts → attaform.DkA5J8NW.d.mts} +1 -17
- package/dist/shared/{attaform.B7rzpK1U.d.ts → attaform.DkA5J8NW.d.ts} +1 -17
- package/dist/shared/{attaform.CJ-e9gYI.d.ts → attaform.Dl5kDY-A.d.ts} +1 -1
- package/dist/shared/{attaform.CRNA0vrd.d.mts → attaform.DoKXru-a.d.mts} +1 -1
- package/dist/shared/{attaform.BtBmfLQN.d.mts → attaform.EMzJcQci.d.mts} +109 -101
- package/dist/shared/attaform.EZG6fOFb.mjs +35 -0
- package/dist/shared/attaform.EZG6fOFb.mjs.map +1 -0
- package/dist/shared/{attaform.QvygsFGh.d.cts → attaform.GbDo_lJi.d.cts} +1 -1
- package/dist/shared/{attaform.C0uGZQ4M.d.ts → attaform.SfhU0OEY.d.cts} +134 -30
- package/dist/shared/{attaform.C0uGZQ4M.d.cts → attaform.SfhU0OEY.d.mts} +134 -30
- package/dist/shared/{attaform.C0uGZQ4M.d.mts → attaform.SfhU0OEY.d.ts} +134 -30
- package/dist/shared/{attaform.a3uBo-gw.mjs → attaform.iWo9soNX.mjs} +257 -793
- package/dist/shared/attaform.iWo9soNX.mjs.map +1 -0
- package/dist/shared/attaform.tVkmQh5w.mjs +774 -0
- package/dist/shared/attaform.tVkmQh5w.mjs.map +1 -0
- package/dist/transforms.cjs +2 -2
- package/dist/transforms.d.cts +22 -13
- package/dist/transforms.d.mts +22 -13
- package/dist/transforms.d.ts +22 -13
- package/dist/transforms.mjs +1 -1
- package/dist/vite.cjs +8 -7
- package/dist/vite.cjs.map +1 -1
- package/dist/vite.mjs +8 -7
- package/dist/vite.mjs.map +1 -1
- package/dist/zod-v3.cjs +3 -3
- package/dist/zod-v3.d.cts +32 -6
- package/dist/zod-v3.d.mts +32 -6
- package/dist/zod-v3.d.ts +32 -6
- package/dist/zod-v3.mjs +3 -3
- package/dist/zod-v4.cjs +3 -3
- package/dist/zod-v4.d.cts +12 -8
- package/dist/zod-v4.d.mts +12 -8
- package/dist/zod-v4.d.ts +12 -8
- package/dist/zod-v4.mjs +3 -3
- package/dist/zod.cjs +8 -8
- package/dist/zod.cjs.map +1 -1
- package/dist/zod.d.cts +6 -6
- package/dist/zod.d.mts +6 -6
- package/dist/zod.d.ts +6 -6
- package/dist/zod.mjs +6 -6
- package/package.json +2 -1
- package/dist/shared/attaform.BTi-PsHr.mjs.map +0 -1
- package/dist/shared/attaform.BqEfHpVB.cjs.map +0 -1
- package/dist/shared/attaform.Bubm_slq.cjs.map +0 -1
- package/dist/shared/attaform.C1msmO2v.cjs.map +0 -1
- package/dist/shared/attaform.C8CyvYa_.cjs +0 -36
- package/dist/shared/attaform.C8CyvYa_.cjs.map +0 -1
- package/dist/shared/attaform.CXpzmj38.mjs.map +0 -1
- package/dist/shared/attaform.Cghpuav8.mjs +0 -57
- package/dist/shared/attaform.Cghpuav8.mjs.map +0 -1
- package/dist/shared/attaform.CiMqJHDm.mjs +0 -1594
- package/dist/shared/attaform.CiMqJHDm.mjs.map +0 -1
- package/dist/shared/attaform.CoxJ8Qm8.cjs.map +0 -1
- package/dist/shared/attaform.CrpjyXdO.mjs.map +0 -1
- package/dist/shared/attaform.D13GMFgK.mjs +0 -32
- package/dist/shared/attaform.D13GMFgK.mjs.map +0 -1
- package/dist/shared/attaform.JBx8cfMA.cjs.map +0 -1
- package/dist/shared/attaform.OznWyOPy.cjs +0 -1600
- package/dist/shared/attaform.OznWyOPy.cjs.map +0 -1
- package/dist/shared/attaform.a3uBo-gw.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attaform.D6CwqkPx.mjs","sources":["../../src/runtime/adapters/zod-v3/field-meta.ts","../../src/runtime/adapters/zod-v3/errors.ts","../../src/runtime/adapters/zod-v3/helpers.ts","../../src/runtime/adapters/zod-v3/introspect.ts","../../src/runtime/adapters/zod-v3/assert-supported.ts","../../src/runtime/adapters/zod-v3/fingerprint.ts","../../src/runtime/adapters/zod-v3/walker-introspector.ts","../../src/runtime/adapters/zod-v3/slim-primitives.ts","../../src/runtime/adapters/zod-v3/strip-async.ts","../../src/runtime/adapters/zod-v3/index.ts","../../src/runtime/composables/use-form.ts"],"sourcesContent":["/**\n * Field-metadata write/read API for the Zod v3 adapter.\n *\n * Storage lives in the shared `field-meta-store` core — every entry\n * (`attaform/zod`, `attaform/zod-v3`, `attaform/zod-v4`) writes to and\n * reads from the same `WeakMap`s, so a payload registered via any\n * entry surfaces at lookup regardless of which adapter actually runs.\n *\n * Zod 3 has no `z.registry()` mechanism, so `fieldMeta` is the\n * shared registry-shaped object exposing `add` / `get` / `has` /\n * `remove`. The public `withMeta(schema, payload)` write API matches\n * `attaform/zod`'s so schema authoring reads identically across the\n * two adapters.\n *\n * **Registration patterns:** both styles work — register on whatever\n * schema reference you assign into the parent's shape, OR on the\n * inner schema before wrapping. The adapter's resolver tries the\n * walker-returned schema first, then falls back to the peeled\n * inner so either ordering hits:\n *\n * // both equivalent — registry hits at lookup time\n * withMeta(z.string(), { label: 'Email' }).optional()\n * withMeta(z.string().optional(), { label: 'Email' })\n *\n * The path walker returns the wrapper at terminal positions and\n * peels at intermediate descent. The two-stage lookup covers both\n * leaf and container registrations symmetrically.\n */\nimport type { z } from 'zod-v3'\nimport type { FieldMetaPayload } from '../../core/field-meta'\nimport {\n fieldMetaStore,\n getFieldMetaForSchema,\n getFieldMetaListForSchema,\n} from '../../core/field-meta-store'\n\n/**\n * The shared registry every Attaform-aware Zod 3 schema can register\n * field metadata against. Backed by the cross-adapter\n * `fieldMetaStore` — a payload registered here is visible to the v4\n * adapter and the unified `attaform/zod` entry, and vice versa.\n */\ntype FieldMetaRegistryV3 = {\n /**\n * Register `payload` against `schema`. Returns the registry to\n * mirror Zod 4's `$ZodRegistry.add` chain shape.\n */\n add<S extends z.ZodTypeAny>(schema: S, payload: FieldMetaPayload): FieldMetaRegistryV3\n /**\n * Read the registered payload for a schema, or `undefined` if\n * nothing has been registered.\n */\n get(schema: z.ZodTypeAny): FieldMetaPayload | undefined\n /** True iff a payload has been registered for the schema. */\n has(schema: z.ZodTypeAny): boolean\n /**\n * Drop every registered payload for `schema`. Returns the registry\n * for chaining; idempotent on a never-registered schema.\n */\n remove(schema: z.ZodTypeAny): FieldMetaRegistryV3\n}\n\nexport const fieldMeta = fieldMetaStore as unknown as FieldMetaRegistryV3\n\n/**\n * Attach `payload` to `schema` in the shared `fieldMeta` registry\n * and return a clone of `schema` (chainable, with the new metadata).\n * Cross-version with `attaform/zod`'s `withMeta()`.\n *\n * **Why clone, not mutate.** The shared store keys metadata on the\n * schema reference. Calling `withMeta` twice on the same instance\n * would overwrite (last-write-wins) — so a sub-schema reused at\n * multiple form paths (e.g. an address schema shared between pickup\n * and delivery) couldn't carry distinct metadata per path.\n *\n * `withMeta` sidesteps the footgun by reconstructing `schema` via\n * its constructor + `_def` — Zod 3 schemas don't expose `.clone()`,\n * but `new schema.constructor(schema._def)` is the equivalent. Each\n * call gets a fresh identity and a fresh registry slot. Existing\n * metadata on the original is merged through, so chaining\n * `withMeta` accumulates payload fields rather than replacing.\n *\n * Inner field schemas (e.g. an object's `.shape.city`) are shared\n * across clones — the def is held by reference — so leaf metadata\n * registers once and surfaces at every path.\n *\n * `schema.register()` does NOT exist on Zod 3 — `withMeta` is the\n * only fluent write API. Register on the inner schema before\n * wrapping; see the \"Registration rule\" note in this file's header.\n */\nexport function withMeta<S extends z.ZodTypeAny>(schema: S, payload: FieldMetaPayload): S {\n const existing = getFieldMetaForSchema(schema as object) ?? {}\n // Zod 3 lacks a public `.clone()`, so reconstruct via the\n // constructor + _def. Each ZodSchema subclass's constructor takes\n // a `_def` object and produces an instance — same shape, fresh\n // identity.\n const Ctor = schema.constructor as new (def: S['_def']) => S\n const cloned = new Ctor(schema._def)\n fieldMetaStore.add(cloned as object, { ...existing, ...payload })\n return cloned\n}\n\n/**\n * Read the registered payload for a schema. Returns `undefined`\n * when nothing has been registered — callers apply their own\n * fallbacks (humanize for label, `.describe()` for description).\n *\n * Internal helper used by the v3 adapter's `getFieldMetaAtPath`.\n * Not part of the public `attaform/zod-v3` surface.\n */\nexport function getFieldMeta(schema: z.ZodTypeAny): FieldMetaPayload | undefined {\n return getFieldMetaForSchema(schema as object)\n}\n\n/**\n * Read the list of payloads registered against `schema`, in\n * registration order. Empty list when nothing has been registered.\n *\n * Used by the v3 adapter's path-resolver to disambiguate per\n * occurrence when a schema is shared across multiple form paths.\n * Most consumers won't need this — use `fieldMeta.get(schema)` for\n * the single-payload case. Mirrors `getFieldMetaList` on the v4\n * adapter so per-adapter feature parity stays explicit.\n */\nexport function getFieldMetaList(schema: z.ZodTypeAny): readonly FieldMetaPayload[] {\n return getFieldMetaListForSchema(schema as object)\n}\n","import { AttaformError } from '../../core/errors'\n\n/**\n * Thrown when a zod-v3 schema includes a kind the form library cannot\n * represent: `z.promise`, `z.function`, `z.map`, or `z.symbol`.\n *\n * The error message includes the dotted path of the offending node\n * so you can locate it without traversing the whole schema. Mirrors\n * the v4 adapter's `UnsupportedSchemaError` so consumers see the same\n * failure shape across adapters.\n *\n * Recursive `z.lazy(...)` is supported, not unsupported: the\n * construction-time walk stops descending on the second encounter\n * of the same getter, and downstream walks cap their descent via\n * `maxRecursionDepth`.\n */\nexport class UnsupportedSchemaError extends AttaformError {}\n","import type { z } from 'zod-v3'\n\n// Map each schema type name to its Zod class (using broad generics for generality)\ntype ZodTypeMap = {\n ZodObject: z.AnyZodObject\n ZodDiscriminatedUnion: z.ZodDiscriminatedUnion<\n string,\n [z.ZodDiscriminatedUnionOption<string>, ...z.ZodDiscriminatedUnionOption<string>[]]\n >\n ZodArray: z.ZodArray<z.ZodTypeAny>\n ZodSet: z.ZodSet<z.ZodTypeAny>\n ZodRecord: z.ZodRecord<z.ZodTypeAny, z.ZodTypeAny>\n ZodDefault: z.ZodDefault<z.ZodTypeAny>\n ZodOptional: z.ZodOptional<z.ZodTypeAny>\n ZodNullable: z.ZodNullable<z.ZodTypeAny>\n ZodType: z.ZodTypeAny // any Zod schema\n ZodEffects: z.ZodEffects<z.ZodTypeAny>\n ZodBoolean: z.ZodBoolean\n ZodEnum: z.ZodEnum<[string, ...string[]]>\n ZodNull: z.ZodNull\n ZodUndefined: z.ZodUndefined\n ZodLiteral: z.ZodLiteral<unknown>\n ZodUnion: z.ZodUnion<[z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]]>\n ZodTuple: z.ZodTuple<[z.ZodTypeAny, ...z.ZodTypeAny[]]>\n ZodString: z.ZodString\n ZodNumber: z.ZodNumber\n ZodBigInt: z.ZodBigInt\n ZodDate: z.ZodDate\n // Newer wrappers (v3.23+ for Pipeline/Readonly; Branded/Catch\n // pre-existed). Use proper class generics so the predicate's\n // narrowing target is structurally distinct from the existing\n // entries — falling back to `z.ZodTypeAny` collapses TS's flow\n // analysis through later branches into `never`.\n ZodPipeline: z.ZodPipeline<z.ZodTypeAny, z.ZodTypeAny>\n ZodReadonly: z.ZodReadonly<z.ZodTypeAny>\n ZodBranded: z.ZodBranded<z.ZodTypeAny, string | number | symbol>\n ZodCatch: z.ZodCatch<z.ZodTypeAny>\n ZodIntersection: z.ZodIntersection<z.ZodTypeAny, z.ZodTypeAny>\n ZodLazy: z.ZodLazy<z.ZodTypeAny>\n ZodNativeEnum: z.ZodNativeEnum<z.EnumLike>\n // Leaf-only kinds carried for D5 / D6 / D9 — the adapter's\n // `generateValue` and `isLeafRequiredV3` branch on these to fold\n // them into their schema-valid empty value (`NaN` / `undefined`)\n // rather than the warn-path's `null`.\n ZodNaN: z.ZodNaN\n ZodVoid: z.ZodVoid\n ZodAny: z.ZodAny\n ZodUnknown: z.ZodUnknown\n ZodNever: z.ZodNever\n}\n\n/**\n * Type guard for a Zod v3 schema kind. Returns `true` when `schema`\n * is a Zod v3 instance of the named kind (`ZodString`, `ZodObject`,\n * etc.) and narrows the type accordingly.\n *\n * ```ts\n * if (isZodSchemaType(schema, 'ZodObject')) {\n * // schema is now typed as z.AnyZodObject\n * }\n * ```\n *\n * Useful when building adapters or introspection helpers that branch\n * on schema shape. Most consumers don't need this.\n */\nexport function isZodSchemaType<K extends keyof ZodTypeMap>(\n schema: unknown,\n expectedType: K\n): schema is ZodTypeMap[K] {\n if (typeof schema !== 'object' || schema === null) return false\n const maybeDef = (schema as { _def?: { typeName?: string } })._def\n return maybeDef?.typeName === expectedType\n}\n","/**\n * The single file that reads Zod v3's internal `_def` shape. Every\n * other file in the zod-v3 adapter uses these public-shaped accessors\n * — future Zod v3 minor bumps that reshape internals touch only this\n * file. Mirrors the v4 adapter's introspect surface, with v3-only\n * accessors for kinds the v3 line carries that v4 dropped\n * (`ZodEffects`, `ZodPipeline`, `ZodBranded`, `ZodNativeEnum`).\n *\n * Design principle: treat `schema._def.*` as an unstable surface, even\n * when Zod's docs say otherwise. Each helper returns a narrow,\n * well-typed slice; no adapter code outside this file does\n * shape-based pattern matching on `_def`.\n */\nimport type { z } from 'zod-v3'\nimport { isZodSchemaType } from './helpers'\n\n// Shared cap for every wrapper-peeling helper. Pathological schemas\n// (deep `.refine()` chains, self-referential lazy loops) would\n// otherwise stack-overflow or hang. 64 is generous for any realistic\n// form schema; past it we bail conservatively rather than crash.\nconst MAX_UNWRAP_STEPS = 64\n\n/**\n * Stable kind discriminant for a Zod v3 schema. Mirrors the v4\n * adapter's `ZodKind` for the kinds both versions carry, with the\n * v3-only additions (`'effects'`, `'pipeline'`, `'branded'`,\n * `'native-enum'`, `'function'`, `'map'`, `'symbol'`, `'promise'`)\n * for kinds the v3 line still exposes that v4 dropped or renamed.\n * Useful when building a custom integration that needs to branch on\n * schema shape — most consumers don't need this.\n */\nexport type ZodKind =\n | 'object'\n | 'array'\n | 'set'\n | 'record'\n | 'tuple'\n | 'union'\n | 'discriminated-union'\n | 'string'\n | 'number'\n | 'boolean'\n | 'bigint'\n | 'date'\n | 'enum'\n | 'native-enum'\n | 'literal'\n | 'null'\n | 'undefined'\n | 'optional'\n | 'nullable'\n | 'default'\n | 'catch'\n | 'readonly'\n | 'branded'\n | 'effects'\n | 'pipeline'\n | 'lazy'\n | 'intersection'\n | 'any'\n | 'unknown'\n | 'never'\n | 'nan'\n | 'void'\n | 'promise'\n | 'function'\n | 'map'\n | 'symbol'\n\n// Narrow accessor for the unstable `_def` surface. All reads from this\n// object go through helpers below — never inline.\ninterface ZodV3InternalShape {\n _def?: {\n typeName?: string\n // Wrapper inners.\n innerType?: unknown\n type?: unknown // ZodBranded inner; ZodArray element\n schema?: unknown // ZodEffects structural source\n effect?: { type?: string; refinement?: unknown; transform?: unknown }\n in?: unknown // ZodPipeline input side\n out?: unknown // ZodPipeline output side\n getter?: () => unknown // ZodLazy resolver\n // Containers.\n shape?: (() => Record<string, unknown>) | Record<string, unknown>\n valueType?: unknown // ZodRecord value / ZodSet element\n keyType?: unknown // ZodRecord key\n items?: readonly unknown[] // ZodTuple\n options?: readonly unknown[] // ZodUnion / ZodDiscriminatedUnion / ZodEnum\n discriminator?: string // ZodDiscriminatedUnion\n left?: unknown // ZodIntersection\n right?: unknown // ZodIntersection\n // Value carriers.\n value?: unknown // ZodLiteral\n values?: Record<string, unknown> // ZodNativeEnum\n defaultValue?: () => unknown // ZodDefault thunk\n catchValue?: (ctx: { error: unknown; input: unknown }) => unknown\n // Refinement payload.\n checks?: readonly unknown[]\n // `z.coerce.X()` flags the wrapped primitive's def with `coerce:\n // true` — the constructor returns a ZodString / ZodNumber / etc.\n // schema rather than a separate wrapper, and the flag drives Zod's\n // own safeParse to cast the input. Used by `isCoercePrimitive`.\n coerce?: boolean\n }\n}\n\nfunction readDef(schema: unknown): ZodV3InternalShape['_def'] | undefined {\n if (schema === null || typeof schema !== 'object') return undefined\n return (schema as ZodV3InternalShape)._def\n}\n\n/**\n * Inspect a Zod v3 schema and return its `ZodKind`. Returns\n * `'unknown'` for non-Zod inputs and unrecognised shapes (collides\n * with `ZodUnknown` → `'unknown'` by design; `ZodUnknown` is rarely\n * used in form schemas).\n */\nexport function kindOf(schema: unknown): ZodKind {\n const def = readDef(schema)\n const typeName = def?.typeName\n if (typeName === undefined) return 'unknown'\n switch (typeName) {\n case 'ZodObject':\n return 'object'\n case 'ZodArray':\n return 'array'\n case 'ZodSet':\n return 'set'\n case 'ZodRecord':\n return 'record'\n case 'ZodTuple':\n return 'tuple'\n case 'ZodUnion':\n return 'union'\n case 'ZodDiscriminatedUnion':\n return 'discriminated-union'\n case 'ZodString':\n return 'string'\n case 'ZodNumber':\n return 'number'\n case 'ZodBoolean':\n return 'boolean'\n case 'ZodBigInt':\n return 'bigint'\n case 'ZodDate':\n return 'date'\n case 'ZodEnum':\n return 'enum'\n case 'ZodNativeEnum':\n return 'native-enum'\n case 'ZodLiteral':\n return 'literal'\n case 'ZodNull':\n return 'null'\n case 'ZodUndefined':\n return 'undefined'\n case 'ZodOptional':\n return 'optional'\n case 'ZodNullable':\n return 'nullable'\n case 'ZodDefault':\n return 'default'\n case 'ZodCatch':\n return 'catch'\n case 'ZodReadonly':\n return 'readonly'\n case 'ZodBranded':\n return 'branded'\n case 'ZodEffects':\n return 'effects'\n case 'ZodPipeline':\n return 'pipeline'\n case 'ZodLazy':\n return 'lazy'\n case 'ZodIntersection':\n return 'intersection'\n case 'ZodAny':\n return 'any'\n case 'ZodUnknown':\n return 'unknown'\n case 'ZodNever':\n return 'never'\n case 'ZodNaN':\n return 'nan'\n case 'ZodVoid':\n return 'void'\n case 'ZodPromise':\n return 'promise'\n case 'ZodFunction':\n return 'function'\n case 'ZodMap':\n return 'map'\n case 'ZodSymbol':\n return 'symbol'\n default:\n return 'unknown'\n }\n}\n\n/** Read the typeName discriminant directly. Convenience for callers that already branch on the raw string. */\nexport function getTypeName(schema: unknown): string | undefined {\n return readDef(schema)?.typeName\n}\n\n/**\n * Verify a schema is Zod v3. Throws a clear error if it's a v4\n * schema (which carries `def.type` instead of `_def.typeName`) or a\n * non-Zod value mistakenly imported through `attaform/zod-v3`.\n *\n * Most consumers never call this directly — the v3 adapter calls it\n * internally on every schema. Reach for it only when wiring a custom\n * adapter that needs the same guard.\n */\nexport function assertZodVersion(schema: unknown): void {\n const def = readDef(schema)\n if (def?.typeName === undefined) {\n throw new Error(\n '[attaform/zod-v3] Schema is not a Zod v3 schema. The `attaform/zod-v3` adapter requires ' +\n 'zod@^3. Either: (a) install zod@^3 in your project; (b) import from `attaform/zod`, ' +\n 'which auto-detects the Zod version (and tree-shakes to a single adapter when the ' +\n '`attaform/vite` plugin is active); or (c) import from `attaform/zod-v4` if you are ' +\n 'on Zod v4.'\n )\n }\n}\n\n// ---------- Container accessors ----------\n\n/**\n * Returns the object's `Record<string, ZodTypeAny>` shape. v3 stores\n * shape as a thunk on `_def.shape` (lazy evaluation for self-referential\n * schemas); the instance's `.shape` getter and the thunk both resolve\n * to the same record. Prefers the thunk so cases without an instance\n * getter (rare; defensive) still resolve.\n */\nexport function getObjectShape(schema: z.ZodTypeAny): Record<string, z.ZodTypeAny> {\n const def = readDef(schema)\n const raw = def?.shape\n if (typeof raw === 'function') return raw() as Record<string, z.ZodTypeAny>\n if (raw !== undefined) return raw as Record<string, z.ZodTypeAny>\n // Fallback to the instance getter — only reached when the schema was\n // constructed via a path that didn't populate `_def.shape`.\n return (schema as unknown as { shape?: Record<string, z.ZodTypeAny> }).shape ?? {}\n}\n\n/**\n * Returns the element schema of a `z.array(...)`. v3 stores the\n * element on `_def.type` (not `_def.element` — that's v4's name).\n */\nexport function getArrayElement(schema: z.ZodTypeAny): z.ZodTypeAny | undefined {\n const def = readDef(schema)\n return def?.type as z.ZodTypeAny | undefined\n}\n\n/**\n * Returns the element schema of a `z.set(...)`. v3 stores it on\n * `_def.valueType` (parity with v4).\n */\nexport function getSetValueType(schema: z.ZodTypeAny): z.ZodTypeAny | undefined {\n const def = readDef(schema)\n return def?.valueType as z.ZodTypeAny | undefined\n}\n\nexport function getRecordKeyType(schema: z.ZodTypeAny): z.ZodTypeAny | undefined {\n const def = readDef(schema)\n return def?.keyType as z.ZodTypeAny | undefined\n}\n\nexport function getRecordValueType(schema: z.ZodTypeAny): z.ZodTypeAny | undefined {\n const def = readDef(schema)\n return def?.valueType as z.ZodTypeAny | undefined\n}\n\nexport function getTupleItems(schema: z.ZodTypeAny): readonly z.ZodTypeAny[] {\n const def = readDef(schema)\n return (def?.items as readonly z.ZodTypeAny[] | undefined) ?? []\n}\n\nexport function getUnionOptions(schema: z.ZodTypeAny): readonly z.ZodTypeAny[] {\n const def = readDef(schema)\n return (def?.options as readonly z.ZodTypeAny[] | undefined) ?? []\n}\n\n/** ZodDiscriminatedUnion options typed narrowly as ZodObject (v3's DU options are always objects). */\nexport function getDiscriminatedOptions(schema: z.ZodTypeAny): readonly z.AnyZodObject[] {\n const def = readDef(schema)\n return (def?.options as readonly z.AnyZodObject[] | undefined) ?? []\n}\n\n/** ZodDiscriminatedUnion: the discriminator key (e.g. 'status'). */\nexport function getDiscriminator(schema: z.ZodTypeAny): string | undefined {\n const def = readDef(schema)\n return def?.discriminator\n}\n\nexport function getIntersectionLeft(schema: z.ZodTypeAny): z.ZodTypeAny | undefined {\n const def = readDef(schema)\n return def?.left as z.ZodTypeAny | undefined\n}\n\nexport function getIntersectionRight(schema: z.ZodTypeAny): z.ZodTypeAny | undefined {\n const def = readDef(schema)\n return def?.right as z.ZodTypeAny | undefined\n}\n\n// ---------- Wrapper unwrap (return inner schema) ----------\n\n/**\n * Reads `_def.innerType` — the inner schema for transparent wrappers\n * (Optional / Nullable / Default / Catch / Readonly). Returns\n * undefined for kinds that don't carry an inner (Branded uses\n * `_def.type`; use `unwrapBranded` instead; Effects uses\n * `_def.schema`, use `unwrapEffectsSource`).\n */\nexport function unwrapInner(schema: z.ZodTypeAny): z.ZodTypeAny | undefined {\n const def = readDef(schema)\n return def?.innerType as z.ZodTypeAny | undefined\n}\n\n/**\n * `ZodBranded`'s inner schema lives on `_def.type` (v3 quirk; v4 uses\n * `_def.innerType` for branded). Returns undefined for non-Branded.\n */\nexport function unwrapBranded(schema: z.ZodTypeAny): z.ZodTypeAny | undefined {\n const def = readDef(schema)\n return def?.type as z.ZodTypeAny | undefined\n}\n\n/**\n * `ZodEffects` structural source — the inner schema being refined /\n * transformed / preprocessed. v3 stores this on `_def.schema`\n * (v4 has no ZodEffects equivalent; refinements live on the schema\n * directly).\n */\nexport function unwrapEffectsSource(schema: z.ZodTypeAny): z.ZodTypeAny | undefined {\n const def = readDef(schema)\n return def?.schema as z.ZodTypeAny | undefined\n}\n\n/**\n * Kind of effect carried by a `ZodEffects` — `'refinement'`,\n * `'transform'`, `'preprocess'`, or undefined when the def shape is\n * malformed. Used by the preprocess-or-coerce-leaf detector to scope\n * the slim-primitive write gate.\n */\nexport function getEffectsKind(\n schema: z.ZodTypeAny\n): 'refinement' | 'transform' | 'preprocess' | undefined {\n const def = readDef(schema)\n const type = def?.effect?.type\n if (type === 'refinement' || type === 'transform' || type === 'preprocess') return type\n return undefined\n}\n\n/**\n * Detect `z.coerce.X()` — a primitive schema (ZodString / ZodNumber /\n * etc.) carrying `_def.coerce === true`. v3 stores coerce as a flag on\n * the wrapped primitive's def rather than as a separate wrapper, so\n * the schema's typeName is just `ZodString` / `ZodNumber` / etc.; the\n * caller still wants to know it's a coerce slot (default-derivation\n * leaves the slot `undefined`; the slim-primitive write gate accepts\n * raw consumer writes verbatim through the coerce subtree). Mirrors\n * v4's `isCoercePrimitive`.\n */\nexport function isCoercePrimitive(schema: z.ZodTypeAny): boolean {\n return readDef(schema)?.coerce === true\n}\n\n/**\n * Detect `z.preprocess(fn, inner)` — v3 wraps preprocess in a\n * `ZodEffects` with `effect.type === 'preprocess'`. The factory's\n * `isPreprocessOrCoerceLeaf` consults this alongside\n * `isCoercePrimitive` to gate raw consumer writes verbatim through the\n * wrapped subtree.\n */\nexport function isPreprocessNode(schema: z.ZodTypeAny): boolean {\n if (!isZodSchemaType(schema, 'ZodEffects')) return false\n return getEffectsKind(schema) === 'preprocess'\n}\n\n/**\n * True iff a `ZodEffects` carries an `async` predicate.\n *\n * Detection asymmetry vs v4 (intrinsic to v3's runtime model):\n *\n * - `.transform(asyncFn)` and `z.preprocess(asyncFn, …)` store the\n * user fn directly at `_def.effect.transform` — its\n * `constructor.name === 'AsyncFunction'` is the standard runtime\n * signal and matches v4's `isAsyncCheck` shape.\n * - `.refine(asyncFn, …)` wraps the user predicate inside a sync\n * `(val, ctx) => { const result = check(val); if (result\n * instanceof Promise) return result.then(…) }` closure — the\n * wrapper's `constructor.name` is always `'Function'`, and the\n * user fn is captured in the closure with no static accessor.\n * Async-ness is observable only at parse time (via the\n * \"Async refinement encountered during synchronous parse\" throw).\n *\n * So this predicate reliably flags **async transforms / preprocesses\n * only**. For refinement effects it returns `false` regardless of the\n * underlying user fn's async-ness — callers must combine it with\n * `containsAsyncRefine` (which is conservative, treating every\n * refinement effect as potentially async) and the try-parse fallback\n * inside `stripAsyncChecks` to handle refine-side async detection.\n */\nexport function isAsyncEffect(schema: z.ZodTypeAny): boolean {\n const def = readDef(schema)\n const effect = def?.effect\n if (effect === undefined) return false\n // Refinement wrappers are always sync at the outer layer; the user\n // fn lives in the closure and isn't statically observable.\n if (effect.type === 'refinement') return false\n const fn = effect.transform\n if (typeof fn !== 'function') return false\n return (fn as { constructor: { name: string } }).constructor.name === 'AsyncFunction'\n}\n\n/**\n * True iff the v3 schema tree carries a `.refine` anywhere — sync or\n * async. Conservative by design: v3's `.refine` wraps the user\n * predicate inside a sync closure (see `isAsyncEffect`), so we cannot\n * tell sync from async without invoking the wrapper. Every refinement\n * effect counts as \"potentially async\" so the runtime never misses\n * the post-mount async pass.\n *\n * Drives the adapter's `needsAsyncValidation` together with\n * `containsAsyncTransform`. The strict-mode `getDefaultValues` path\n * pairs this conservative flag with a try-parse fallback inside\n * `stripAsyncChecks`: when the sync parse throws the \"Async\n * refinement encountered\" error, the stripped tree drops every\n * `ZodEffects` (no static sync/async split possible) and the parse\n * retries to surface container / leaf-check seeds.\n *\n * Cost on pure-sync-refine schemas: one extra post-mount async pass\n * (a `safeParseAsync` of identical shape to the sync parse). No\n * observable consumer-side error semantics change beyond timing.\n *\n * Mirrors `zod-v4/introspect.ts:404 containsAsyncRefine` in role; the\n * v4 walker is exact (per-check `isAsyncCheck`), the v3 walker is\n * conservative. Same name preserved so Phase 12's\n * `createAbstractSchema` factory can fold both adapters' surfaces\n * together.\n */\nexport function containsAsyncRefine(schema: z.ZodTypeAny, seen?: WeakSet<object>): boolean {\n return walkForAsync(schema, 'refinement', seen ?? new WeakSet<object>())\n}\n\n/**\n * True iff the v3 schema tree carries an `async` `.transform` or\n * `z.preprocess`. Statically accurate — the user's async fn is stored\n * directly at `_def.effect.transform`, and `isAsyncEffect` reads its\n * `constructor.name` exactly like v4's `isAsyncCheck`.\n *\n * Gates the strict `getDefaultValues` path independently of\n * `containsAsyncRefine`: async transforms cannot be stripped because\n * the transform's output shape is load-bearing for the inner schema's\n * input, so the strict pass skips entirely and defers to the\n * post-mount `safeParseAsync` pass.\n *\n * Mirrors `zod-v4/introspect.ts:612 containsAsyncTransform`.\n */\nexport function containsAsyncTransform(schema: z.ZodTypeAny, seen?: WeakSet<object>): boolean {\n return walkForAsync(schema, 'transform-or-preprocess', seen ?? new WeakSet<object>())\n}\n\ntype AsyncWalkTarget = 'refinement' | 'transform-or-preprocess'\n\nfunction walkForAsync(\n schema: z.ZodTypeAny,\n target: AsyncWalkTarget,\n visited: WeakSet<object>\n): boolean {\n const candidate = schema as unknown\n if (typeof candidate !== 'object' || candidate === null) return false\n if (visited.has(candidate)) return false\n visited.add(candidate)\n\n // ZodEffects: refinement effects count as \"potentially async\"\n // unconditionally (v3 wraps the user fn in a sync closure); transform\n // / preprocess effects require an actual AsyncFunction at the user\n // payload (statically detectable). Recurse through the source schema\n // either way so nested effects deeper in the tree still surface.\n if (isZodSchemaType(schema, 'ZodEffects')) {\n const kind = getEffectsKind(schema)\n if (target === 'refinement' && kind === 'refinement') return true\n if (\n target === 'transform-or-preprocess' &&\n (kind === 'transform' || kind === 'preprocess') &&\n isAsyncEffect(schema)\n ) {\n return true\n }\n const inner = unwrapEffectsSource(schema)\n return inner !== undefined && walkForAsync(inner, target, visited)\n }\n\n // Transparent wrappers: recurse without flagging.\n if (\n isZodSchemaType(schema, 'ZodOptional') ||\n isZodSchemaType(schema, 'ZodNullable') ||\n isZodSchemaType(schema, 'ZodDefault') ||\n isZodSchemaType(schema, 'ZodCatch') ||\n isZodSchemaType(schema, 'ZodReadonly')\n ) {\n const inner = unwrapInner(schema)\n return inner !== undefined && walkForAsync(inner, target, visited)\n }\n if (isZodSchemaType(schema, 'ZodBranded')) {\n const inner = unwrapBranded(schema)\n return inner !== undefined && walkForAsync(inner, target, visited)\n }\n if (isZodSchemaType(schema, 'ZodLazy')) {\n const inner = unwrapLazy(schema)\n return inner !== undefined && walkForAsync(inner, target, visited)\n }\n if (isZodSchemaType(schema, 'ZodPipeline')) {\n const inSide = unwrapPipeIn(schema)\n if (inSide !== undefined && walkForAsync(inSide, target, visited)) return true\n const outSide = unwrapPipeOut(schema)\n if (outSide !== undefined && walkForAsync(outSide, target, visited)) return true\n return false\n }\n\n // Container types: recurse into children.\n if (isZodSchemaType(schema, 'ZodObject')) {\n for (const sub of Object.values(getObjectShape(schema))) {\n if (walkForAsync(sub, target, visited)) return true\n }\n return false\n }\n if (isZodSchemaType(schema, 'ZodArray')) {\n const elem = getArrayElement(schema)\n return elem !== undefined && walkForAsync(elem, target, visited)\n }\n if (isZodSchemaType(schema, 'ZodTuple')) {\n for (const it of getTupleItems(schema)) {\n if (walkForAsync(it, target, visited)) return true\n }\n return false\n }\n if (isZodSchemaType(schema, 'ZodUnion') || isZodSchemaType(schema, 'ZodDiscriminatedUnion')) {\n for (const opt of getUnionOptions(schema)) {\n if (walkForAsync(opt, target, visited)) return true\n }\n return false\n }\n if (isZodSchemaType(schema, 'ZodIntersection')) {\n const left = getIntersectionLeft(schema)\n if (left !== undefined && walkForAsync(left, target, visited)) return true\n const right = getIntersectionRight(schema)\n if (right !== undefined && walkForAsync(right, target, visited)) return true\n return false\n }\n if (isZodSchemaType(schema, 'ZodRecord')) {\n const keyType = getRecordKeyType(schema)\n if (keyType !== undefined && walkForAsync(keyType, target, visited)) return true\n const valueType = getRecordValueType(schema)\n if (valueType !== undefined && walkForAsync(valueType, target, visited)) return true\n return false\n }\n if (isZodSchemaType(schema, 'ZodSet')) {\n const elem = getSetValueType(schema)\n return elem !== undefined && walkForAsync(elem, target, visited)\n }\n\n // Leaves and unrecognised wrappers: nothing to descend into.\n return false\n}\n\n/** ZodPipeline input schema. */\nexport function unwrapPipeIn(schema: z.ZodTypeAny): z.ZodTypeAny | undefined {\n const def = readDef(schema)\n return def?.in as z.ZodTypeAny | undefined\n}\n\n/** ZodPipeline output schema. */\nexport function unwrapPipeOut(schema: z.ZodTypeAny): z.ZodTypeAny | undefined {\n const def = readDef(schema)\n return def?.out as z.ZodTypeAny | undefined\n}\n\n/**\n * Convenience: returns the pipeline's input side, falling back to the\n * output side. Mirrors v4's `unwrapPipe`. For most adapter call sites\n * the input side is the right anchor (consumers write values for\n * the input schema; the output is derived).\n */\nexport function unwrapPipe(schema: z.ZodTypeAny): z.ZodTypeAny | undefined {\n return unwrapPipeIn(schema) ?? unwrapPipeOut(schema)\n}\n\n/**\n * Resolve a `z.lazy(() => inner)` to its inner schema by invoking the\n * getter. Each invocation runs the factory fresh, so the returned\n * schema may be a distinct object per call — cycle detection should\n * track the getter function identity (see `getLazyGetter`), not the\n * resulting schema. Returns undefined when the getter is absent or\n * throws.\n */\nexport function unwrapLazy(schema: z.ZodTypeAny): z.ZodTypeAny | undefined {\n const def = readDef(schema)\n const getter = def?.getter\n if (typeof getter !== 'function') return undefined\n try {\n return getter() as z.ZodTypeAny\n } catch {\n return undefined\n }\n}\n\n/** Getter function reference on a `z.lazy()` — used for recursion detection. */\nexport function getLazyGetter(schema: z.ZodTypeAny): (() => unknown) | undefined {\n const def = readDef(schema)\n return typeof def?.getter === 'function' ? def.getter : undefined\n}\n\n// ---------- Value carriers ----------\n\nexport function getLiteralValue(schema: z.ZodTypeAny): unknown {\n const def = readDef(schema)\n return def?.value\n}\n\n/**\n * Read every value a `z.literal(...)` admits as an array. v3 stores\n * single-value literals as `_def.value` (the value itself) and\n * multi-value literals (`z.literal(['a','b'])`) as `_def.value` set to\n * the array. Returning a unified array shape lets callers iterate\n * without branching on `Array.isArray(_def.value)`. Mirrors v4's\n * `getLiteralValues` (`introspect.ts:238`).\n */\nexport function getLiteralValues(schema: z.ZodTypeAny): readonly unknown[] {\n const def = readDef(schema)\n const v = def?.value\n if (Array.isArray(v)) return v\n if (v === undefined) return []\n return [v]\n}\n\n/**\n * Raw values object on a `z.nativeEnum(E)` — the TypeScript enum\n * object itself. Numeric enums have a reverse mapping\n * (`enum E { A } → { A: 0, '0': 'A' }`); callers that need the valid\n * runtime members must filter the reverse-mapped numeric keys\n * themselves.\n */\nexport function getNativeEnumValues(schema: z.ZodTypeAny): Record<string, unknown> | undefined {\n const def = readDef(schema)\n return def?.values\n}\n\n/**\n * Resolve a `z.default(...)` wrapper's value by invoking the v3\n * `_def.defaultValue` thunk. v3 stores the default as a function\n * (lazy evaluation, useful for `new Date()` defaults); v4 stores the\n * value directly. Returns undefined when the field is missing.\n */\nexport function getDefaultValue(schema: z.ZodTypeAny): unknown {\n const def = readDef(schema)\n const thunk = def?.defaultValue\n if (typeof thunk !== 'function') return undefined\n try {\n return thunk()\n } catch {\n return undefined\n }\n}\n\n/**\n * Materialise the fallback value of a `z.catch(inner, value)` wrapper.\n * v3 stores the catch as a function `(ctx) => value` on\n * `_def.catchValue` (parity with v4); we invoke it with a placeholder\n * context. Consumer catch functions that inspect `ctx.input` / `ctx.error`\n * during default-values derivation are rare — if the function throws,\n * we surface `undefined` and let the validate-then-fix loop find a\n * fallback.\n *\n * Pairs with `hasCatchValue` for callers that need to distinguish a\n * legitimate `undefined` return from a missing wrapper; this helper\n * alone collapses both into `undefined`.\n */\nexport function getCatchDefault(schema: z.ZodTypeAny): unknown {\n const def = readDef(schema)\n const cv = def?.catchValue\n if (typeof cv !== 'function') return undefined\n try {\n return cv({ error: null, input: undefined })\n } catch {\n return undefined\n }\n}\n\n/** True iff the schema carries a callable `_def.catchValue` (ZodCatch wrapper). */\nexport function hasCatchValue(schema: z.ZodTypeAny): boolean {\n const def = readDef(schema)\n return typeof def?.catchValue === 'function'\n}\n\n// ---------- Refinement payload ----------\n\n/** True if the schema's `_def` carries refinement checks (e.g. `.min(3)`). */\nexport function hasChecks(schema: z.ZodTypeAny): boolean {\n const def = readDef(schema)\n const checks = def?.checks\n return Array.isArray(checks) && checks.length > 0\n}\n\n/** Raw checks array. Empty when the schema has no refinements. */\nexport function getChecks(schema: z.ZodTypeAny): readonly unknown[] {\n const def = readDef(schema)\n const checks = def?.checks\n return Array.isArray(checks) ? (checks as readonly unknown[]) : []\n}\n\n// ---------- Walkers ----------\n\n/**\n * True iff the v3 schema tree carries a refine / transform / preprocess\n * (`ZodEffects`) whose effect target is a container — Object / Array /\n * Tuple / Union / DU / Intersection / Record / Set — or the root\n * itself. Drives the runtime's per-keystroke scope cut: a tree with\n * leaf-only effects can be re-validated at the edited subtree alone\n * (subtree pass catches the leaf effect at the same depth); a\n * container effect can be moved by sibling writes and forces a\n * whole-form pass.\n *\n * Transparent wrappers (Optional / Nullable / Default / Catch /\n * Readonly / Branded / Lazy) peel through to their inner before\n * container detection — `.refine` on `.optional()` over a\n * `z.object(...)` is still a root-scoped effect. Pipelines walk both\n * sides.\n *\n * Bias conservative: an unrecognised wrapper or a malformed leaf\n * returns `false` for THAT node, but the recurse continues, so\n * nested container effects still surface. False negatives only lose\n * the perf win; correctness preserved by the caller's whole-form\n * default when the predicate isn't reached.\n */\nexport function hasContainerOrRootRefine(schema: z.ZodTypeAny, seen?: WeakSet<object>): boolean {\n const visited = seen ?? new WeakSet<object>()\n const candidate = schema as unknown\n if (typeof candidate !== 'object' || candidate === null) return false\n if (visited.has(candidate)) return false\n visited.add(candidate)\n\n // ZodEffects: refine / transform / preprocess. Peel transparent\n // wrappers off the inner so `.refine()` applied to `.optional()`\n // over a container still flags as a container-level effect.\n if (isZodSchemaType(schema, 'ZodEffects')) {\n const inner = unwrapEffectsSource(schema)\n if (inner === undefined) return false\n if (isContainerAfterWrapperPeel(inner)) return true\n return hasContainerOrRootRefine(inner, visited)\n }\n\n // Transparent wrappers: recurse into the inner without flagging.\n if (\n isZodSchemaType(schema, 'ZodOptional') ||\n isZodSchemaType(schema, 'ZodNullable') ||\n isZodSchemaType(schema, 'ZodDefault') ||\n isZodSchemaType(schema, 'ZodCatch') ||\n isZodSchemaType(schema, 'ZodReadonly')\n ) {\n const inner = unwrapInner(schema)\n return inner !== undefined && hasContainerOrRootRefine(inner, visited)\n }\n if (isZodSchemaType(schema, 'ZodBranded')) {\n const inner = unwrapBranded(schema)\n return inner !== undefined && hasContainerOrRootRefine(inner, visited)\n }\n if (isZodSchemaType(schema, 'ZodLazy')) {\n const inner = unwrapLazy(schema)\n return inner !== undefined && hasContainerOrRootRefine(inner, visited)\n }\n if (isZodSchemaType(schema, 'ZodPipeline')) {\n const inSide = unwrapPipeIn(schema)\n if (inSide !== undefined && hasContainerOrRootRefine(inSide, visited)) return true\n const outSide = unwrapPipeOut(schema)\n if (outSide !== undefined && hasContainerOrRootRefine(outSide, visited)) return true\n return false\n }\n\n // Container types: recurse into children.\n if (isZodSchemaType(schema, 'ZodObject')) {\n for (const sub of Object.values(getObjectShape(schema))) {\n if (hasContainerOrRootRefine(sub, visited)) return true\n }\n return false\n }\n if (isZodSchemaType(schema, 'ZodArray')) {\n const elem = getArrayElement(schema)\n return elem !== undefined && hasContainerOrRootRefine(elem, visited)\n }\n if (isZodSchemaType(schema, 'ZodTuple')) {\n for (const it of getTupleItems(schema)) {\n if (hasContainerOrRootRefine(it, visited)) return true\n }\n return false\n }\n if (isZodSchemaType(schema, 'ZodUnion') || isZodSchemaType(schema, 'ZodDiscriminatedUnion')) {\n for (const opt of getUnionOptions(schema)) {\n if (hasContainerOrRootRefine(opt, visited)) return true\n }\n return false\n }\n if (isZodSchemaType(schema, 'ZodIntersection')) {\n const left = getIntersectionLeft(schema)\n if (left !== undefined && hasContainerOrRootRefine(left, visited)) return true\n const right = getIntersectionRight(schema)\n if (right !== undefined && hasContainerOrRootRefine(right, visited)) return true\n return false\n }\n if (isZodSchemaType(schema, 'ZodRecord')) {\n const keyType = getRecordKeyType(schema)\n if (keyType !== undefined && hasContainerOrRootRefine(keyType, visited)) return true\n const valueType = getRecordValueType(schema)\n if (valueType !== undefined && hasContainerOrRootRefine(valueType, visited)) return true\n return false\n }\n if (isZodSchemaType(schema, 'ZodSet')) {\n const elem = getSetValueType(schema)\n return elem !== undefined && hasContainerOrRootRefine(elem, visited)\n }\n\n // Leaves (ZodString / ZodNumber / ZodBoolean / ZodLiteral / ZodEnum /\n // ZodNativeEnum / ZodDate / ...) — no descendable structure, no\n // container effect possible.\n return false\n}\n\n/**\n * Peel transparent wrappers off a v3 schema up to MAX_UNWRAP_STEPS,\n * then report whether the result is a container kind (Object / Array\n * / Tuple / Intersection / Union / DU / Record / Set). Used by\n * `hasContainerOrRootRefine` to classify the inner side of a\n * ZodEffects.\n */\nexport function isContainerAfterWrapperPeel(schema: z.ZodTypeAny): boolean {\n let cur: z.ZodTypeAny = schema\n for (let i = 0; i < MAX_UNWRAP_STEPS; i++) {\n if (\n isZodSchemaType(cur, 'ZodOptional') ||\n isZodSchemaType(cur, 'ZodNullable') ||\n isZodSchemaType(cur, 'ZodDefault') ||\n isZodSchemaType(cur, 'ZodCatch') ||\n isZodSchemaType(cur, 'ZodReadonly')\n ) {\n const inner = unwrapInner(cur)\n if (inner === undefined) return false\n cur = inner\n } else if (isZodSchemaType(cur, 'ZodBranded')) {\n const inner = unwrapBranded(cur)\n if (inner === undefined) return false\n cur = inner\n } else if (isZodSchemaType(cur, 'ZodLazy')) {\n const inner = unwrapLazy(cur)\n if (inner === undefined) return false\n cur = inner\n } else {\n break\n }\n }\n return (\n isZodSchemaType(cur, 'ZodObject') ||\n isZodSchemaType(cur, 'ZodArray') ||\n isZodSchemaType(cur, 'ZodTuple') ||\n isZodSchemaType(cur, 'ZodIntersection') ||\n isZodSchemaType(cur, 'ZodUnion') ||\n isZodSchemaType(cur, 'ZodDiscriminatedUnion') ||\n isZodSchemaType(cur, 'ZodRecord') ||\n isZodSchemaType(cur, 'ZodSet')\n )\n}\n","import type { z } from 'zod-v3'\nimport { UnsupportedSchemaError } from './errors'\nimport { isZodSchemaType } from './helpers'\nimport {\n getArrayElement,\n getDiscriminatedOptions,\n getIntersectionLeft,\n getIntersectionRight,\n getLazyGetter,\n getObjectShape,\n getRecordValueType,\n getSetValueType,\n getTupleItems,\n getTypeName,\n getUnionOptions,\n unwrapBranded,\n unwrapEffectsSource,\n unwrapInner,\n unwrapPipeIn,\n} from './introspect'\n\n/**\n * Kinds the v3 adapter does not implement. `z.promise(...)`,\n * `z.function(...)`, `z.map(...)`, and `z.symbol()` can't be\n * represented as form values (Promise/function-valued fields have no\n * meaningful initial state; Maps have no obvious form representation;\n * symbols aren't JSON-serialisable so persistence and SSR round-trip\n * would silently drop them). The adapter rejects them at construction\n * so the failure surfaces at `useForm(...)` rather than as a mystery\n * `null` at render time. Mirrors v4's `UNSUPPORTED` set with the\n * v3-only additions (`function` / `map` / `symbol`); v4's\n * `template-literal` / `custom` aren't kinds in zod-v3.\n */\nconst UNSUPPORTED_TYPE_NAMES = new Set(['ZodPromise', 'ZodFunction', 'ZodMap', 'ZodSymbol'])\n\nfunction labelPath(path: readonly string[]): string {\n return path.length === 0 ? '<root>' : path.join('.')\n}\n\n/**\n * Walk the schema tree and fail fast on unsupported kinds. Detects\n * recursive `z.lazy(...)` by tracking the *getter function identity*\n * of each lazy on the descent stack — a repeated getter means the\n * factory resolves back into itself (directly or through a detour).\n *\n * This runs once, at adapter construction time, so the cost is paid\n * at app startup rather than per keystroke. Mirrors v4's\n * `assertSupportedKinds`; the dispatch goes through `isZodSchemaType`\n * (typeName comparison) plus the introspect accessors for the\n * structural reads.\n */\nexport function assertSupportedKinds(\n schema: z.ZodTypeAny,\n path: readonly string[] = [],\n lazyGetters: readonly (() => unknown)[] = []\n): void {\n const typeName = getTypeName(schema)\n if (typeName !== undefined && UNSUPPORTED_TYPE_NAMES.has(typeName)) {\n throw new UnsupportedSchemaError(\n `[attaform/zod-v3] unsupported kind '${typeName}' at '${labelPath(path)}'`\n )\n }\n\n if (isZodSchemaType(schema, 'ZodObject')) {\n for (const [key, sub] of Object.entries(getObjectShape(schema))) {\n assertSupportedKinds(sub, [...path, key], lazyGetters)\n }\n return\n }\n\n if (isZodSchemaType(schema, 'ZodArray')) {\n const inner = getArrayElement(schema)\n if (inner) assertSupportedKinds(inner, [...path, '*'], lazyGetters)\n return\n }\n\n if (isZodSchemaType(schema, 'ZodSet')) {\n const inner = getSetValueType(schema)\n if (inner) assertSupportedKinds(inner, [...path, '*'], lazyGetters)\n return\n }\n\n if (isZodSchemaType(schema, 'ZodRecord')) {\n const inner = getRecordValueType(schema)\n if (inner) assertSupportedKinds(inner, [...path, '*'], lazyGetters)\n return\n }\n\n if (isZodSchemaType(schema, 'ZodTuple')) {\n const items = getTupleItems(schema)\n items.forEach((item, i) => assertSupportedKinds(item, [...path, String(i)], lazyGetters))\n return\n }\n\n if (isZodSchemaType(schema, 'ZodUnion')) {\n const options = getUnionOptions(schema)\n options.forEach((opt, i) => assertSupportedKinds(opt, [...path, `|${i}`], lazyGetters))\n return\n }\n\n if (isZodSchemaType(schema, 'ZodDiscriminatedUnion')) {\n const options = getDiscriminatedOptions(schema)\n options.forEach((opt, i) => assertSupportedKinds(opt, [...path, `|${i}`], lazyGetters))\n return\n }\n\n if (isZodSchemaType(schema, 'ZodIntersection')) {\n const left = getIntersectionLeft(schema)\n if (left) assertSupportedKinds(left, [...path, 'left'], lazyGetters)\n const right = getIntersectionRight(schema)\n if (right) assertSupportedKinds(right, [...path, 'right'], lazyGetters)\n return\n }\n\n if (\n isZodSchemaType(schema, 'ZodOptional') ||\n isZodSchemaType(schema, 'ZodNullable') ||\n isZodSchemaType(schema, 'ZodDefault') ||\n isZodSchemaType(schema, 'ZodReadonly') ||\n isZodSchemaType(schema, 'ZodCatch')\n ) {\n const inner = unwrapInner(schema)\n if (inner) assertSupportedKinds(inner, path, lazyGetters)\n return\n }\n\n if (isZodSchemaType(schema, 'ZodBranded')) {\n const inner = unwrapBranded(schema)\n if (inner) assertSupportedKinds(inner, path, lazyGetters)\n return\n }\n\n if (isZodSchemaType(schema, 'ZodEffects')) {\n const inner = unwrapEffectsSource(schema)\n if (inner) assertSupportedKinds(inner, path, lazyGetters)\n return\n }\n\n if (isZodSchemaType(schema, 'ZodPipeline')) {\n const inner = unwrapPipeIn(schema)\n if (inner) assertSupportedKinds(inner, path, lazyGetters)\n return\n }\n\n if (isZodSchemaType(schema, 'ZodLazy')) {\n const getter = getLazyGetter(schema)\n // Recursive z.lazy() is supported. Stop descending on the second\n // encounter (the shape walk only needs each unique getter once);\n // downstream walks cap their descent via `maxRecursionDepth`.\n if (getter !== undefined && lazyGetters.includes(getter)) return\n const inner = getter?.()\n if (inner !== undefined) {\n assertSupportedKinds(\n inner as z.ZodTypeAny,\n path,\n getter === undefined ? lazyGetters : [...lazyGetters, getter]\n )\n }\n return\n }\n\n // Leaves: nothing to descend into. Includes ZodString, ZodNumber,\n // ZodBigInt, ZodBoolean, ZodDate, ZodNull, ZodUndefined, ZodAny,\n // ZodUnknown, ZodNever, ZodVoid, ZodLiteral, ZodEnum, ZodNativeEnum,\n // ZodNaN. Plus the unsupported leaves (already rejected above).\n}\n","import type { z } from 'zod-v3'\n\n/**\n * Compute a structural fingerprint for a Zod v3 schema.\n *\n * Same contract as the v4 counterpart — deterministic across\n * reference-distinct but structurally-equal schemas, key-order-\n * insensitive for `z.object` shapes, membership-order-insensitive\n * for `z.union` options, idempotent across calls. See\n * `src/runtime/adapters/zod-v4/fingerprint.ts` for the full\n * rationale and the list of compromises (function-valued\n * refinements / transforms / non-deterministic default factories\n * collapse to opaque `fn:*` sentinels).\n *\n * Caching is per-call, not module-global: cycles mean a cached\n * mid-traversal result from one call is invalid for another\n * (the `<cyclic>` sentinel's meaning depends on the starting\n * node). A WeakSet guards against cycles introduced by `z.lazy`.\n */\n\ntype V3Schema = z.ZodTypeAny\n\ninterface V3Def {\n readonly typeName?: string\n readonly shape?: () => Record<string, V3Schema>\n readonly type?: V3Schema\n readonly keyType?: V3Schema\n readonly valueType?: V3Schema\n readonly items?: readonly V3Schema[]\n readonly options?: readonly V3Schema[]\n readonly discriminator?: string\n // ZodEnum stores its admitted values as an array; ZodNativeEnum\n // stores them as the enum OBJECT (`{Red: 'red', '0': 'Red'}` for a\n // numeric enum). The fingerprint walker handles the two shapes in\n // separate branches.\n readonly values?: readonly unknown[] | Record<string, unknown>\n readonly value?: unknown\n readonly innerType?: V3Schema\n readonly defaultValue?: () => unknown\n readonly checks?: readonly unknown[]\n readonly schema?: V3Schema\n readonly effect?: { readonly type?: string }\n readonly getter?: () => V3Schema\n readonly left?: V3Schema\n readonly right?: V3Schema\n readonly catchValue?: () => unknown\n // ZodPipeline stores its input + output sides on `in` / `out`\n // respectively — NOT on `schema`. The pre-fix walker read `schema`\n // (always `undefined`) and emitted `ZodPipeline(?)` for every\n // pipeline.\n readonly in?: V3Schema\n readonly out?: V3Schema\n}\n\nconst cyclicSentinel = '<cyclic>'\n\nexport function fingerprintZodSchema(schema: V3Schema): string {\n const cache = new WeakMap<object, string>()\n const inProgress = new WeakSet<object>()\n return visit(schema, cache, inProgress)\n}\n\nfunction visit(\n schema: V3Schema,\n cache: WeakMap<object, string>,\n inProgress: WeakSet<object>\n): string {\n const key = schema as unknown as object\n const cached = cache.get(key)\n if (cached !== undefined) return cached\n if (inProgress.has(key)) return cyclicSentinel\n inProgress.add(key)\n try {\n const computed = computeFingerprint(schema, cache, inProgress)\n cache.set(key, computed)\n return computed\n } finally {\n inProgress.delete(key)\n }\n}\n\nfunction getDef(schema: V3Schema): V3Def {\n return (schema as unknown as { _def: V3Def })._def\n}\n\nfunction computeFingerprint(\n schema: V3Schema,\n cache: WeakMap<object, string>,\n inProgress: WeakSet<object>\n): string {\n const def = getDef(schema)\n const kind = def.typeName ?? 'ZodUnknown'\n const recurse = (child: V3Schema): string => visit(child, cache, inProgress)\n\n switch (kind) {\n case 'ZodString':\n case 'ZodNumber':\n case 'ZodBigInt':\n case 'ZodDate':\n return `${kind}${formatChecks(def.checks)}`\n\n case 'ZodBoolean':\n case 'ZodNull':\n case 'ZodUndefined':\n case 'ZodAny':\n case 'ZodUnknown':\n case 'ZodNaN':\n case 'ZodVoid':\n case 'ZodNever':\n return kind\n\n case 'ZodLiteral':\n return `ZodLiteral:${canonicalStringify(def.value)}`\n\n case 'ZodEnum': {\n // ZodEnum stores its admitted values as an array on `_def.values`.\n // Sort + canonicalStringify for a deterministic fingerprint.\n const values = Array.isArray(def.values) ? def.values : []\n const sorted = [...values].sort((a, b) => {\n const as = String(a)\n const bs = String(b)\n return as < bs ? -1 : as > bs ? 1 : 0\n })\n return `ZodEnum:${canonicalStringify(sorted)}`\n }\n\n case 'ZodNativeEnum': {\n // ZodNativeEnum stores the enum OBJECT on `_def.values` (e.g.\n // `{Red: 'red'}` for a string enum or `{A: 0, '0': 'A'}` for a\n // numeric enum). The pre-fix walker shared the ZodEnum branch\n // which did `[...values]` — that throws `TypeError: not\n // iterable` on the object. Use `Object.values` to extract the\n // admitted runtime members; numeric enums include their\n // reverse-mapped string keys, which is fine for fingerprint\n // determinism (both forms are valid Zod inputs).\n const values =\n def.values && typeof def.values === 'object' && !Array.isArray(def.values)\n ? Object.values(def.values)\n : []\n const sorted = [...values].sort((a, b) => {\n const as = String(a)\n const bs = String(b)\n return as < bs ? -1 : as > bs ? 1 : 0\n })\n return `ZodNativeEnum:${canonicalStringify(sorted)}`\n }\n\n case 'ZodObject': {\n const shape = readShapeSafely(def)\n const sortedEntries = Object.entries(shape)\n .sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))\n .map(([k, v]) => `${JSON.stringify(k)}:${recurse(v)}`)\n // Object-level `formatChecks` matches v4's `object{…}${formatChecks(schema)}`\n // (`fingerprint.ts:148`). ZodObject rarely carries `_def.checks`\n // in v3 — the call is structurally for parity rather than\n // expected-to-fire — but consumers who reach through a custom\n // ZodObject builder that stores extra constraints get them\n // surfaced symmetrically.\n return `ZodObject{${sortedEntries.join(',')}}${formatChecks(def.checks)}`\n }\n\n case 'ZodArray':\n return `ZodArray[${def.type === undefined ? '?' : recurse(def.type)}]${formatChecks(def.checks)}`\n\n case 'ZodTuple': {\n const items = def.items ?? []\n return `ZodTuple[${items.map(recurse).join(',')}]`\n }\n\n case 'ZodRecord': {\n const keyPart = def.keyType === undefined ? '?' : recurse(def.keyType)\n const valuePart = def.valueType === undefined ? '?' : recurse(def.valueType)\n return `ZodRecord<${keyPart},${valuePart}>`\n }\n\n case 'ZodUnion': {\n const options = (def.options ?? []).map(recurse).sort()\n return `ZodUnion(${options.join('|')})`\n }\n\n case 'ZodDiscriminatedUnion': {\n const disc = def.discriminator ?? '?'\n const options = (def.options ?? []).map(recurse).sort()\n return `ZodDiscriminatedUnion[${JSON.stringify(disc)}](${options.join('|')})`\n }\n\n case 'ZodOptional': {\n const inner = def.innerType\n return inner === undefined ? 'ZodOptional(?)' : `ZodOptional(${recurse(inner)})`\n }\n\n case 'ZodNullable': {\n const inner = def.innerType\n return inner === undefined ? 'ZodNullable(?)' : `ZodNullable(${recurse(inner)})`\n }\n\n case 'ZodDefault': {\n const inner = def.innerType\n // v3 stores defaults as a factory: `defaultValue: () => X`.\n // Call it twice and compare with Object.is — non-deterministic\n // factories (`() => new Date()`) return distinct objects each\n // call, so we collapse to `fn:*` to stay idempotent. Pure\n // factories that return the same primitive / cached reference\n // serialise normally.\n return `ZodDefault[${defaultFactoryRepr(def.defaultValue)}](${\n inner === undefined ? '?' : recurse(inner)\n })`\n }\n\n case 'ZodReadonly': {\n const inner = def.innerType\n return inner === undefined ? 'ZodReadonly(?)' : `ZodReadonly(${recurse(inner)})`\n }\n\n case 'ZodEffects': {\n // `.refine` / `.transform` / `.preprocess` — the effect function\n // isn't stably hashable. We can distinguish effect kinds (refine\n // vs transform) via `def.effect.type` and fold that into the\n // fingerprint, but the function body collapses to an opaque\n // sentinel.\n const effectType = def.effect?.type ?? 'effect'\n const inner = def.schema\n return `ZodEffects:${effectType}:fn:*(${inner === undefined ? '?' : recurse(inner)})`\n }\n\n case 'ZodPipeline': {\n // Internally `z.pipe(a, b)` — `.in` and `.out` live on the def\n // (NOT `.schema`). The pre-fix walker read `def.schema`\n // (undefined for a pipeline) so every pipeline collapsed to\n // `ZodPipeline(?)`. Read the input side first (mirrors v4's\n // `unwrapPipe` which returns `in ?? out`); the output side is\n // a derived shape rather than a consumer-authored schema.\n const inner = def.in ?? def.out\n return inner === undefined ? 'ZodPipeline(?)' : `ZodPipeline(${recurse(inner)})`\n }\n\n case 'ZodCatch': {\n const inner = def.innerType ?? def.schema\n const catchRepr = defaultFactoryRepr(def.catchValue)\n return `ZodCatch[${catchRepr}](${inner === undefined ? '?' : recurse(inner)})`\n }\n\n case 'ZodLazy': {\n const resolve = def.getter\n if (typeof resolve !== 'function') return 'ZodLazy(?)'\n try {\n const inner = resolve()\n return `ZodLazy(${recurse(inner)})`\n } catch {\n return 'ZodLazy(?)'\n }\n }\n\n case 'ZodIntersection': {\n const leftPart = def.left === undefined ? '?' : recurse(def.left)\n const rightPart = def.right === undefined ? '?' : recurse(def.right)\n const parts = [leftPart, rightPart].sort()\n return `ZodIntersection(${parts.join('&')})`\n }\n\n case 'ZodSet': {\n // ZodSet stores its element type on `_def.valueType` (same slot\n // ZodRecord uses for its value type). The pre-fix walker fell\n // through to the opaque default branch, so `z.set(z.string())`\n // and `z.set(z.number())` collapsed to the same `ZodSet:*`.\n // Mirrors v4's `set<element>${formatChecks(schema)}`.\n const inner = def.valueType\n return inner === undefined\n ? 'ZodSet(?)'\n : `ZodSet<${recurse(inner)}>${formatChecks(def.checks)}`\n }\n\n case 'ZodBranded': {\n // ZodBranded stores its inner on `_def.type` (the v3 quirk; v4's\n // brand is type-only). The pre-fix walker fell through to the\n // opaque default branch and lost the inner's shape entirely, so\n // `z.string().brand<'A'>()` and `z.number().brand<'B'>()`\n // collapsed to the same `ZodBranded:*`. Brand annotations are\n // type-level only at runtime, so emit just the inner's\n // fingerprint with a transparent wrapper.\n const inner = def.type\n return inner === undefined ? 'ZodBranded(?)' : `ZodBranded(${recurse(inner)})`\n }\n\n // Structural opacity — schemas whose runtime behaviour isn't\n // introspectable via `_def` fall here. Still distinguishable\n // from other kinds by the returned string.\n case 'ZodPromise':\n case 'ZodFunction':\n case 'ZodMap':\n case 'ZodSymbol':\n default:\n return `${kind}:*`\n }\n}\n\nfunction readShapeSafely(def: V3Def): Record<string, V3Schema> {\n if (typeof def.shape !== 'function') return {}\n try {\n return def.shape()\n } catch {\n return {}\n }\n}\n\n/**\n * Render a v3 default / catch factory. Called twice; if the two\n * results differ (by `Object.is`), the factory is non-deterministic\n * and we collapse to `fn:*` to preserve idempotence. Same fix as\n * v4's `defaultValueRepr` — factories like `() => new Date()` would\n * otherwise make the fingerprint time-dependent.\n */\nfunction defaultFactoryRepr(factory: (() => unknown) | undefined): string {\n if (typeof factory !== 'function') return 'none'\n let first: unknown\n let second: unknown\n try {\n first = factory()\n second = factory()\n } catch {\n return 'fn:*'\n }\n if (!Object.is(first, second)) return 'fn:*'\n if (typeof first === 'function') return 'fn:*'\n return canonicalStringify(first)\n}\n\nfunction formatChecks(checks: readonly unknown[] | undefined): string {\n if (!Array.isArray(checks) || checks.length === 0) return ''\n const parts = checks.map((c) => canonicalStringify(c)).sort()\n return `[${parts.join(';')}]`\n}\n\nfunction canonicalStringify(value: unknown, seen: WeakSet<object> = new WeakSet()): string {\n if (value === null) return 'null'\n if (value === undefined) return 'undefined'\n const t = typeof value\n if (t === 'string') return JSON.stringify(value)\n if (t === 'number' || t === 'boolean') return String(value)\n if (t === 'bigint') return `${String(value)}n`\n if (t === 'function') return 'fn:*'\n if (t === 'symbol') return 'symbol:*'\n if (Array.isArray(value)) {\n if (seen.has(value)) return '<cyclic>'\n seen.add(value)\n try {\n return `[${value.map((v) => canonicalStringify(v, seen)).join(',')}]`\n } finally {\n // Add/delete ancestor-stack pattern. Without `delete`, two\n // sibling properties pointing at the same object get the\n // second one falsely labelled `<cyclic>`.\n seen.delete(value)\n }\n }\n if (t === 'object') {\n // `null` already returned above; `object` here is guaranteed\n // non-null. Narrowing against null again is flagged by eslint's\n // no-unnecessary-condition rule.\n const obj = value as Record<string, unknown>\n if (seen.has(obj)) return '<cyclic>'\n seen.add(obj)\n try {\n if (value instanceof Date) return `date:${value.getTime()}`\n if (value instanceof RegExp) return `regex:${String(value)}`\n const entries = Object.entries(obj)\n .sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))\n .map(([k, v]) => `${JSON.stringify(k)}:${canonicalStringify(v, seen)}`)\n return `{${entries.join(',')}}`\n } finally {\n seen.delete(obj)\n }\n }\n return 'unknown'\n}\n","/**\n * Module-level `SchemaIntrospector<z.ZodTypeAny>` instance for the v3\n * adapter. Mirrors the v4 instance at\n * `src/runtime/adapters/zod-v4/walker-introspector.ts` against v3's\n * introspect-module accessors. Hosted in its own file so the\n * per-walker modules can import the const without routing through\n * `index.ts` (which would create an import cycle).\n */\nimport type { z } from 'zod-v3'\nimport type { SchemaIntrospector, SharedZodKind } from '../../core/abstract-schema-factory'\nimport { isZodSchemaType } from './helpers'\nimport {\n containsAsyncRefine,\n containsAsyncTransform,\n getArrayElement,\n getCatchDefault,\n getDefaultValue,\n getDiscriminatedOptions,\n getDiscriminator,\n getIntersectionLeft,\n getIntersectionRight,\n getLazyGetter,\n getLiteralValues,\n getNativeEnumValues,\n getObjectShape,\n getRecordKeyType,\n getRecordValueType,\n getSetValueType,\n getTupleItems,\n getUnionOptions,\n hasCatchValue,\n hasContainerOrRootRefine,\n isCoercePrimitive,\n isPreprocessNode,\n kindOf,\n unwrapBranded,\n unwrapEffectsSource,\n unwrapInner,\n unwrapLazy,\n unwrapPipeIn,\n unwrapPipeOut,\n} from './introspect'\n\nexport const V3_INTROSPECTOR: SchemaIntrospector<z.ZodTypeAny> = {\n kindOf: (schema) => kindOf(schema) as SharedZodKind | string,\n getObjectShape: (schema) => getObjectShape(schema),\n getTupleItems: (schema) => getTupleItems(schema),\n getDiscriminatedOptions: (schema) => getDiscriminatedOptions(schema) as readonly z.ZodTypeAny[],\n getDiscriminator: (schema) => getDiscriminator(schema),\n getLiteralValues: (schema) => getLiteralValues(schema),\n isPreprocessNode: (schema) => isPreprocessNode(schema),\n isCoercePrimitive: (schema) => isCoercePrimitive(schema),\n containsAsyncRefine: (schema) => containsAsyncRefine(schema),\n containsAsyncTransform: (schema) => containsAsyncTransform(schema),\n hasContainerOrRootRefine: (schema) => hasContainerOrRootRefine(schema),\n\n // Walker accessors (D2 / D3 / D5).\n getArrayElement: (schema) => getArrayElement(schema),\n getSetValueType: (schema) => getSetValueType(schema),\n getRecordKeyType: (schema) => getRecordKeyType(schema),\n getRecordValueType: (schema) => getRecordValueType(schema),\n getUnionOptions: (schema) => getUnionOptions(schema),\n getIntersectionLeft: (schema) => getIntersectionLeft(schema),\n getIntersectionRight: (schema) => getIntersectionRight(schema),\n getEnumValues: (schema) => {\n if (!isZodSchemaType(schema, 'ZodEnum')) return []\n return (schema as z.ZodEnum<[string, ...string[]]>).options\n },\n getNativeEnumValues: (schema) => getNativeEnumValues(schema),\n unwrapInner: (schema) => unwrapInner(schema),\n unwrapBranded: (schema) => unwrapBranded(schema),\n unwrapEffectsSource: (schema) => unwrapEffectsSource(schema),\n unwrapPipeIn: (schema) => unwrapPipeIn(schema),\n unwrapPipeOut: (schema) => unwrapPipeOut(schema),\n unwrapLazy: (schema) => unwrapLazy(schema),\n getLazyGetter: (schema) => getLazyGetter(schema),\n getDefaultValue: (schema) => getDefaultValue(schema),\n getCatchDefault: (schema) => getCatchDefault(schema),\n hasCatchValue: (schema) => hasCatchValue(schema),\n}\n","import type { z } from 'zod-v3'\nimport type { SlimPrimitiveKind } from '../../types/types-api'\nimport { slimPrimitivesWalk } from '../../core/walk-slim-primitives'\nimport { V3_INTROSPECTOR } from './walker-introspector'\n\n/**\n * Slim-primitive walker for v3. Returns the set of `SlimPrimitiveKind`s\n * a schema accepts at write time. Wrappers (`ZodOptional`,\n * `ZodNullable`, `ZodDefault`, `ZodEffects`, `ZodPipeline`,\n * `ZodReadonly`, `ZodBranded`, `ZodCatch`, `ZodLazy`) are peeled;\n * refinement-level constraints are ignored.\n *\n * Thin wrapper around the shared `slimPrimitivesWalk` core walker; v3\n * and v4 dispatch through the same body via their respective\n * `SchemaIntrospector` instance. See `core/walk-slim-primitives.ts`\n * for the per-kind dispatch rules.\n */\nexport function slimPrimitivesV3(schema: z.ZodTypeAny): Set<SlimPrimitiveKind> {\n // The 64-step lazy-recursion cap matches the v3-only `MAX_LAZY_DEPTH_V3`\n // sentinel the prior inline walker used; consumers historically called\n // this without a depth arg, so the cap stays embedded here.\n return new Set(slimPrimitivesWalk(schema, V3_INTROSPECTOR, 64))\n}\n","import { z } from 'zod-v3'\n\nimport {\n getArrayElement,\n getCatchDefault,\n getDefaultValue,\n getDiscriminatedOptions,\n getDiscriminator,\n getIntersectionLeft,\n getIntersectionRight,\n getObjectShape,\n getRecordKeyType,\n getRecordValueType,\n getSetValueType,\n getTupleItems,\n getUnionOptions,\n unwrapBranded,\n unwrapEffectsSource,\n unwrapInner,\n unwrapLazy,\n unwrapPipeIn,\n} from './introspect'\nimport { isZodSchemaType } from './helpers'\n\n/**\n * v3 analogue of v4's `strip.ts stripAsyncChecks` (`zod-v4/strip.ts:212`).\n * Walks the schema tree once, rebuilding containers + wrappers and\n * dropping every `ZodEffects` it encounters (refinement, transform, or\n * preprocess). Container-level constraints (`.min(n)` / `.max(n)` /\n * `.length(n)` / `.strict()` / `.passthrough()` / `.catchall(...)`) are\n * re-applied via the per-kind `carry*` helpers below so a rebuilt\n * `z.array(z.string()).min(1)` still rejects `[]`.\n *\n * Why drop sync refines too: v3 wraps `.refine(asyncFn, …)` predicates\n * inside a sync closure (see `introspect.ts isAsyncEffect`), so the\n * adapter cannot statically distinguish sync from async refinements.\n * The strip pass is the construction-time fallback for the case where\n * the original `safeParse` threw \"Async refinement encountered during\n * synchronous parse\" — at that moment all we know is *some* refine is\n * async, but not which. Dropping every `ZodEffects` is the safest\n * recovery: we lose sync refine seeding in mixed forms, but container\n * and leaf checks still surface.\n *\n * Adapter-divergence note (Phase 12 part 2 / ADAPT-D4 deferred):\n * this stays per-adapter rather than dedup-ing into a shared core\n * walker. v3's \"drop every ZodEffects\" policy is irreducibly\n * different from v4's \"filter by isAsyncCheck per check site\" — v4\n * knows which checks are async (`check.def.fn.constructor.name`)\n * and rebuilds the leaf with sync checks intact; v3 has no such\n * accessor and has to drop the wrapper wholesale. A unified walker\n * would need to either parameterise five separate behavior knobs\n * (yielding a walker bigger than the two it replaces) or special-\n * case v3's effects-dropping at the call site (defeating the dedup).\n * The cross-reference on v4's `strip.ts:stripAsyncChecks` records the\n * same rationale.\n *\n * Cycle-safe via a per-pass `WeakSet` so a pathological\n * `z.lazy(() => self)` schema terminates.\n *\n * Used by `getDefaultValues` strict mode in `index.ts`; the\n * post-mount async pass picks up the verdicts this strip path can't\n * surface (full sync + async refines via `safeParseAsync`).\n */\nexport function stripAsyncChecks(schema: z.ZodTypeAny): z.ZodTypeAny {\n const seen = new WeakSet<object>()\n\n function recurse(s: z.ZodTypeAny): z.ZodTypeAny {\n const candidate = s as unknown\n if (typeof candidate !== 'object' || candidate === null) return s\n if (seen.has(candidate)) return s\n seen.add(candidate)\n\n // ZodEffects: drop the wrapper. The source schema returned by\n // `unwrapEffectsSource` is the pre-refine / pre-transform shape;\n // recurse into it so nested effects deeper in the tree also drop.\n if (isZodSchemaType(s, 'ZodEffects')) {\n const inner = unwrapEffectsSource(s)\n return inner === undefined ? s : recurse(inner)\n }\n\n // Transparent wrappers: recurse the inner and rewrap.\n if (isZodSchemaType(s, 'ZodOptional')) {\n const inner = unwrapInner(s)\n return inner === undefined ? s : z.optional(recurse(inner))\n }\n if (isZodSchemaType(s, 'ZodNullable')) {\n const inner = unwrapInner(s)\n return inner === undefined ? s : z.nullable(recurse(inner))\n }\n if (isZodSchemaType(s, 'ZodDefault')) {\n const inner = unwrapInner(s)\n if (inner === undefined) return s\n const def = getDefaultValue(s)\n return (recurse(inner) as z.ZodTypeAny).default(def as never) as z.ZodTypeAny\n }\n if (isZodSchemaType(s, 'ZodCatch')) {\n const inner = unwrapInner(s)\n if (inner === undefined) return s\n const fallback = getCatchDefault(s)\n return (recurse(inner) as z.ZodTypeAny).catch(fallback as never) as z.ZodTypeAny\n }\n if (isZodSchemaType(s, 'ZodReadonly')) {\n const inner = unwrapInner(s)\n return inner === undefined ? s : ((recurse(inner) as z.ZodTypeAny).readonly() as z.ZodTypeAny)\n }\n if (isZodSchemaType(s, 'ZodBranded')) {\n const inner = unwrapBranded(s)\n return inner === undefined ? s : recurse(inner)\n }\n if (isZodSchemaType(s, 'ZodLazy')) {\n const inner = unwrapLazy(s)\n if (inner === undefined) return s\n const stripped = recurse(inner)\n return z.lazy(() => stripped)\n }\n if (isZodSchemaType(s, 'ZodPipeline')) {\n // Pipelines carry transforms whose output shape is load-bearing\n // for the downstream schema's input. The Path-A fallback only\n // runs after the original parse already threw, so leaving pipes\n // in place would re-throw on retry; recurse the input side\n // alone so the parse can proceed against the structural shape.\n // Matches v4's conservative pipe handling in `stripAsyncChecks`\n // (`strip.ts:304-313`).\n const inSide = unwrapPipeIn(s)\n return inSide === undefined ? s : recurse(inSide)\n }\n\n // Containers: recurse children + carry the container-level checks.\n if (isZodSchemaType(s, 'ZodObject')) {\n const shape = getObjectShape(s)\n const next: z.ZodRawShape = {}\n for (const [k, v] of Object.entries(shape)) {\n next[k] = recurse(v)\n }\n return carryObjectChecks(z.object(next), s)\n }\n if (isZodSchemaType(s, 'ZodArray')) {\n const element = getArrayElement(s)\n if (element === undefined) return s\n return carryArrayChecks(z.array(recurse(element)), s)\n }\n if (isZodSchemaType(s, 'ZodSet')) {\n const valueType = getSetValueType(s)\n if (valueType === undefined) return s\n return carrySetChecks(z.set(recurse(valueType)), s)\n }\n if (isZodSchemaType(s, 'ZodTuple')) {\n const items = getTupleItems(s).map(recurse)\n // z.tuple requires [T, ...T[]] but the runtime accepts an array.\n const rebuilt = z.tuple(items as [z.ZodTypeAny, ...z.ZodTypeAny[]])\n return rebuilt\n }\n if (isZodSchemaType(s, 'ZodRecord')) {\n const keyType = getRecordKeyType(s)\n const valueType = getRecordValueType(s)\n if (valueType === undefined) return s\n const next = recurse(valueType)\n return keyType === undefined\n ? z.record(next as z.ZodTypeAny)\n : z.record(keyType as z.ZodString, next as z.ZodTypeAny)\n }\n if (isZodSchemaType(s, 'ZodUnion')) {\n const options = getUnionOptions(s).map(recurse)\n return z.union(options as [z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]])\n }\n if (isZodSchemaType(s, 'ZodDiscriminatedUnion')) {\n const discKey = getDiscriminator(s)\n const options = getDiscriminatedOptions(s).map(\n (o) => recurse(o) as z.ZodObject<z.ZodRawShape>\n )\n if (discKey === undefined || options.length === 0) return s\n return z.discriminatedUnion(\n discKey,\n options as [z.ZodObject<z.ZodRawShape>, ...z.ZodObject<z.ZodRawShape>[]]\n )\n }\n if (isZodSchemaType(s, 'ZodIntersection')) {\n const left = getIntersectionLeft(s)\n const right = getIntersectionRight(s)\n if (left === undefined || right === undefined) return s\n return z.intersection(recurse(left), recurse(right))\n }\n\n // Leaves: pass through unchanged. ZodEffects is the only carrier\n // of async behaviour in v3; rebuilding leaves would drop their\n // declared `_def.checks` (`.min(3)` / `.email()` / etc.) with no\n // upside.\n return s\n }\n\n return recurse(schema)\n}\n\ninterface ZodArrayLengthSlot {\n value: number\n message?: string\n}\n\nfunction readArrayLength(\n schema: z.ZodTypeAny,\n key: 'minLength' | 'maxLength' | 'exactLength'\n): ZodArrayLengthSlot | undefined {\n const def = (schema as unknown as { _def?: Record<string, unknown> })._def\n const slot = def?.[key]\n if (slot === null || slot === undefined) return undefined\n return slot as ZodArrayLengthSlot\n}\n\nfunction readSetSize(\n schema: z.ZodTypeAny,\n key: 'minSize' | 'maxSize'\n): ZodArrayLengthSlot | undefined {\n const def = (schema as unknown as { _def?: Record<string, unknown> })._def\n const slot = def?.[key]\n if (slot === null || slot === undefined) return undefined\n return slot as ZodArrayLengthSlot\n}\n\nfunction readObjectUnknownKeys(\n schema: z.ZodTypeAny\n): 'strict' | 'passthrough' | 'strip' | undefined {\n const def = (schema as unknown as { _def?: { unknownKeys?: unknown } })._def\n const v = def?.unknownKeys\n if (v === 'strict' || v === 'passthrough' || v === 'strip') return v\n return undefined\n}\n\nfunction readObjectCatchall(schema: z.ZodTypeAny): z.ZodTypeAny | undefined {\n const def = (schema as unknown as { _def?: { catchall?: unknown } })._def\n const ca = def?.catchall\n if (ca === undefined || ca === null) return undefined\n // v3 stores a `ZodNever` placeholder when no catchall was set; the\n // rebuild can skip in that case (`.catchall(z.never())` is the\n // default shape and applying it explicitly is a no-op).\n if (\n typeof ca === 'object' &&\n (ca as { _def?: { typeName?: string } })._def?.typeName === 'ZodNever'\n ) {\n return undefined\n }\n return ca as z.ZodTypeAny\n}\n\n/**\n * Re-apply `.min(n)` / `.max(n)` / `.length(n)` from `original` to\n * `rebuilt`. v3 stores these as standalone `_def.minLength /\n * .maxLength / .exactLength` slots (not on `_def.checks`), so they\n * silently drop when the array is rebuilt via `z.array(inner)`.\n * Mirrors v4's `carryChecks` (`strip.ts:52`).\n */\nfunction carryArrayChecks(\n rebuilt: z.ZodArray<z.ZodTypeAny>,\n original: z.ZodTypeAny\n): z.ZodArray<z.ZodTypeAny> {\n let next = rebuilt\n const min = readArrayLength(original, 'minLength')\n if (min !== undefined) next = next.min(min.value, min.message)\n const max = readArrayLength(original, 'maxLength')\n if (max !== undefined) next = next.max(max.value, max.message)\n const exact = readArrayLength(original, 'exactLength')\n if (exact !== undefined) next = next.length(exact.value, exact.message)\n return next\n}\n\nfunction carrySetChecks(\n rebuilt: z.ZodSet<z.ZodTypeAny>,\n original: z.ZodTypeAny\n): z.ZodSet<z.ZodTypeAny> {\n let next = rebuilt\n const min = readSetSize(original, 'minSize')\n if (min !== undefined) next = next.min(min.value, min.message)\n const max = readSetSize(original, 'maxSize')\n if (max !== undefined) next = next.max(max.value, max.message)\n return next\n}\n\nfunction carryObjectChecks(\n rebuilt: z.ZodObject<z.ZodRawShape>,\n original: z.ZodTypeAny\n): z.ZodObject<z.ZodRawShape> {\n let next = rebuilt\n const unknownKeys = readObjectUnknownKeys(original)\n if (unknownKeys === 'strict') next = next.strict()\n else if (unknownKeys === 'passthrough') next = next.passthrough()\n const catchall = readObjectCatchall(original)\n if (catchall !== undefined) next = next.catchall(catchall)\n return next\n}\n","import { cloneDeep, isFunction } from 'lodash-es'\n// Imports zod v3 via the pnpm alias defined in devDependencies; the\n// published bundle rewrites this specifier back to 'zod' via the build\n// step (see build.config.ts). Consumers of `attaform/zod-v3`\n// install zod@3 themselves and the resolved import works.\nimport { z } from 'zod-v3'\nimport type {\n AbstractSchema,\n DefaultValuesResponse,\n FormKey,\n GetDefaultValuesConfig,\n ResolvedFieldMeta,\n ValidationError,\n} from '../../types/types-api'\nimport {\n createAbstractSchema,\n type AbstractSchemaServices,\n} from '../../core/abstract-schema-factory'\nimport { getAtPath, isPlainRecord, setAtPath } from '../../core/path-walker'\nimport { walkPathSegments } from '../../core/walk-path-segments'\nimport {\n deriveDefaultWalk,\n peelEmbeddedDefault,\n NO_EMBEDDED_DEFAULT,\n} from '../../core/walk-derive-default'\nimport type { SchemaFactoryOptions } from '../../core/get-computed-schema'\nimport { humanize } from '../../core/humanize'\nimport { canonicalizePath, type Path, type PathKey } from '../../core/paths'\nimport { slimKindOf } from '../../core/slim-primitive-gate'\nimport type { FieldMetaPayload } from '../../core/field-meta'\nimport { getFieldMeta, getFieldMetaList } from './field-meta'\nimport type { GenericForm } from '../../types/types-core'\n\n// The adapter exchanges dotted-string paths with core at the\n// AbstractSchema boundary (`validateAtPath`, `getSchemasAtPath`).\n// A future revision may migrate the adapter to structured `Path`\n// (Segment[]) without changing the public surface.\nconst PATH_SEPARATOR = '.'\n\n// Shared cap for every wrapper-peeling / unwrap helper in this file.\n// Pathological schemas (deep `.refine()` chains, self-referential lazy\n// loops) would otherwise stack-overflow or hang. 64 is generous for any\n// realistic form schema; past it we bail conservatively rather than\n// crash.\nconst MAX_UNWRAP_STEPS = 64\n\nfunction isPrimitive(input: unknown): boolean {\n const type = typeof input\n if (\n type === 'string' ||\n type === 'number' ||\n type === 'boolean' ||\n type === 'bigint' ||\n type === 'undefined'\n )\n return true\n return input === null\n}\n\n// Probe whether a primitive constraint passes the slim schema. Wrapped\n// in try/catch because strict mode keeps refinements on the slim schema,\n// and `safeParse` throws synchronously if any refine on the root is\n// async.\nfunction constraintsAreSlimValid(slimSchema: z.ZodSchema, constraints: unknown): boolean {\n try {\n return slimSchema.safeParse(constraints).success\n } catch {\n return false\n }\n}\n\n/**\n * Deep-merge two values for default-derivation. Mirrors v4's\n * `mergeDeep` (`default-values.ts:308`) exactly so the v3 + v4\n * constraint-merge semantic matches:\n *\n * - `undefined` override → keep base\n * - non-plain-record override (primitive, array, `Date`, `Map`,\n * class instance, `null`) → REPLACE base wholesale (NOT lodash's\n * element-wise array merge; explicit `null` clears a nullable\n * default rather than being silently dropped)\n * - plain-record override + plain-record base → recurse per-key\n * - plain-record override + non-plain-record base → replace\n * wholesale\n *\n * Local duplication of v4's helper; Phase 12's `createAbstractSchema`\n * factory will dedup against `ADAPT-D5` (validate-then-fix\n * `getDefaultValues` loop). Pre-1.0 with no users so the temporary\n * duplication carries no compat tail.\n */\nfunction mergeDeepV3(base: unknown, override: unknown): unknown {\n if (override === undefined) return base\n if (!isPlainRecord(override)) return override\n if (!isPlainRecord(base)) return override\n const result: Record<string, unknown> = { ...base }\n for (const key of Object.keys(override)) {\n const oVal = override[key]\n const bVal = base[key]\n if (isPlainRecord(oVal) && isPlainRecord(bVal)) {\n result[key] = mergeDeepV3(bVal, oVal)\n } else {\n result[key] = oVal\n }\n }\n return result\n}\n\nimport { __DEV__ } from '../../core/dev'\nimport type { TypeWithNullableDynamicKeys } from './types-zod'\n// `ZodTypeWithInnerType` lives in types-zod.ts and is re-exported from\n// `attaform/zod-v3` as a narrow accessor type for custom-adapter\n// authors. Phase 7's introspect chokepoint means the v3 adapter no\n// longer reads `_def` directly inline; the public type stays available\n// for downstream consumers writing adapter-shaped code.\nimport { assertSupportedKinds } from './assert-supported'\nimport { fingerprintZodSchema } from './fingerprint'\nimport { isZodSchemaType } from './helpers'\nimport {\n containsAsyncTransform,\n getArrayElement,\n getDiscriminatedOptions,\n getDiscriminator,\n getIntersectionLeft,\n getIntersectionRight,\n getLiteralValue,\n getObjectShape,\n getRecordKeyType,\n getRecordValueType,\n getSetValueType,\n getTupleItems,\n getTypeName,\n getUnionOptions,\n hasChecks,\n unwrapBranded,\n unwrapEffectsSource,\n unwrapInner,\n unwrapLazy,\n unwrapPipeIn,\n} from './introspect'\nimport { slimPrimitivesV3 } from './slim-primitives'\nimport { stripAsyncChecks } from './strip-async'\nimport { V3_INTROSPECTOR } from './walker-introspector'\n\nlet warnedZodCodeMissing = false\n\n/**\n * Wrap a Zod v3 `ZodObject` schema in an `AbstractSchema` factory.\n *\n * Most consumers never call this directly — `useForm` from\n * `attaform/zod-v3` does the wrapping automatically. Reach\n * for it only when integrating with a custom code path that needs\n * the adapter outside of `useForm`.\n *\n * Throws if the underlying schema isn't a `ZodObject`.\n */\nexport function zodAdapter<\n FormSchema extends z.ZodSchema,\n Form extends z.input<FormSchema>,\n GetValueFormType extends TypeWithNullableDynamicKeys<FormSchema>,\n>(\n zodSchema: FormSchema\n): (formKey: FormKey, options: SchemaFactoryOptions) => AbstractSchema<Form, GetValueFormType> {\n // Walk the original schema (not the stripped one) so the assert\n // descends through user-declared wrappers (`.optional()`,\n // `.nullable()`, `.default()`) before checking each leaf. Throws\n // for kinds we can't represent — `z.promise`, `z.function`,\n // `z.map`, `z.symbol` — and for self-referencing `z.lazy(...)`.\n assertSupportedKinds(zodSchema)\n const [_strippedRoot] = stripRootSchema(zodSchema, {\n stripDefaultValues: true,\n stripNullable: true,\n stripOptional: true,\n stripZodEffects: true,\n stripZodRefinements: true,\n })\n if (!isZodSchemaType(_strippedRoot, 'ZodObject')) {\n const name = getTypeName(_strippedRoot)\n throw new Error(`ZodAdapter: expected ZodObject, got ${name}`)\n }\n\n // `options.maxRecursionDepth` caps `z.lazy(...)` descent in\n // `getNestedZodSchemasAtPath` — once the walker has crossed\n // `maxRecursionDepth + 1` lazy boundaries it returns `[]`, so writes\n // at recursive paths deeper than the cap fall back to a permissive\n // type gate. Matches the v4 adapter's path-walker contract.\n return (formKey: FormKey, options: SchemaFactoryOptions) =>\n createAbstractSchema<z.ZodTypeAny, Form, GetValueFormType>(\n zodSchema,\n V3_INTROSPECTOR,\n buildV3Services<Form, GetValueFormType>(),\n formKey,\n options\n )\n}\n\n/**\n * Build the v3 `AbstractSchemaServices` instance. Services are stateless\n * — every method receives the schema it acts on plus the factory-supplied\n * `formKey` / `maxRecursionDepth`. Generic in `Form` / `GetValueFormType`\n * so the typed methods (`runStrictGetDefaults` / `makeSubSchema`)\n * propagate the form shape correctly.\n */\nfunction buildV3Services<\n Form extends GenericForm,\n GetValueFormType extends GenericForm,\n>(): AbstractSchemaServices<z.ZodTypeAny, Form, GetValueFormType> {\n return {\n fingerprint: (schema) => fingerprintZodSchema(schema as z.ZodSchema),\n getNestedSchemasAtPath: (schema, path, maxRecursionDepth) =>\n getNestedZodSchemasAtPath(schema as z.ZodSchema, path, maxRecursionDepth),\n // v3 pre-strips refinements / defaults / wrappers off the root for\n // slim-mode walks — `getSlimPrimitiveTypesAtPath` and\n // `getSchemasAtPath` both consume this variant so the yielded\n // candidates reflect the slim shape.\n getNestedSchemasInSlimMode: (schema, path, maxRecursionDepth) =>\n getNestedSchemasInSlimModeV3(schema as z.ZodSchema, path, maxRecursionDepth),\n slimPrimitivesOf: (schema, _maxRecursionDepth) => slimPrimitivesV3(schema),\n deriveDefault: (schema, useDefault, _maxRecursionDepth, formKey) =>\n getDefaultValuesFromZodSchema(schema as z.ZodSchema, useDefault, formKey),\n runStrictGetDefaults: (schema, config, formKey, maxRecursionDepth) =>\n runStrictGetDefaultsV3<Form>(schema as z.ZodSchema, config, formKey, maxRecursionDepth),\n unwrapStructuralWrappers: (schema) => unwrapStructuralLeafV3(schema),\n unwrapToDiscriminatedUnion: (schema) =>\n unwrapToDiscriminatedUnion(schema) as z.ZodTypeAny | undefined,\n peelAllWrappers: (schema) => peelAllV3Wrappers(schema),\n isLeafRequired: (schema) => isLeafRequiredV3(schema),\n resolveFieldMetaAtPath: (schema, path, maxRecursionDepth) =>\n resolveFieldMetaAtPathV3(schema as z.ZodSchema, path, maxRecursionDepth),\n issuesToValidationErrors: (issues, formKey) =>\n zodIssuesToValidationErrors(issues as z.ZodIssue[], formKey),\n safeParseSync: (schema, data) => {\n const result = schema.safeParse(data)\n return result.success\n ? { success: true, data: result.data }\n : { success: false, issues: result.error.issues }\n },\n safeParseAsync: async (schema, data) => {\n const result = await schema.safeParseAsync(data)\n return result.success\n ? { success: true, data: result.data }\n : { success: false, issues: result.error.issues }\n },\n // v3 returns the full recursive AbstractSchema for sub-schemas (the\n // historical shape) — `getSchemasAtPath` consumers may probe any\n // method on the result. The factory call rebuilds the full surface\n // against the sub-schema with its own per-form caches.\n makeSubSchema: (sub, formKey, maxRecursionDepth) =>\n createAbstractSchema<z.ZodTypeAny, unknown, GetValueFormType>(\n sub,\n V3_INTROSPECTOR,\n buildV3Services<GenericForm, GetValueFormType>(),\n formKey,\n { maxRecursionDepth }\n ),\n }\n}\n\nfunction zodIssuesToValidationErrors(issues: z.ZodIssue[], formKey: FormKey): ValidationError[] {\n const validationErrors: ValidationError[] = []\n for (const issue of issues) {\n let code: string\n if (typeof issue.code === 'string' && issue.code.length > 0) {\n code = `zod:${issue.code}`\n } else {\n code = 'zod:unknown'\n if (__DEV__ && !warnedZodCodeMissing) {\n warnedZodCodeMissing = true\n console.warn(\n '[attaform] zod-v3 adapter received an issue with no string `code`; ' +\n \"stamping `'zod:unknown'`. This usually means a custom Zod plugin emitted \" +\n 'an issue without the standard code field.'\n )\n }\n }\n validationErrors.push({\n message: issue.message,\n // `ValidationError.path` is `(string | number)[]` per the\n // public type. v3's `issue.path` is the same in the standard\n // case, but a custom check via `ctx.addIssue({ path: [...] })`\n // can smuggle a Symbol through — the public surface promised\n // strings/numbers, so coerce defensively to keep the contract.\n // Mirrors v4's behaviour at the same site.\n //\n // Adapter-side paths stay schema-relative — the validation\n // pipeline in `create-form-store.ts` prepends the parent path\n // to absolutise, then routes form-level (absolute path length 0)\n // entries to the empty-string bucket at storage time.\n path: coercePathSegments(issue.path),\n formKey: formKey,\n code,\n })\n }\n\n return validationErrors\n}\n\nfunction coercePathSegments(path: readonly (string | number | symbol)[]): (string | number)[] {\n const out: (string | number)[] = []\n for (const seg of path) {\n out.push(typeof seg === 'number' ? seg : typeof seg === 'string' ? seg : String(seg))\n }\n return out\n}\n\n// Walks a canonical `Segment[]` directly — every literal-dot key is\n// treated as a single segment, so a field named `\"user.email\"` no\n// longer collides with the sibling pair `['user', 'email']`.\n//\n// Each iteration peels transparent wrappers (`peelV3Wrappers` —\n// optional / nullable / default / effects / pipeline / readonly /\n// branded) BEFORE checking the kind for descent. Peeling is what\n// lets the walker step through e.g. `z.object({...}).refine(...)`\n// (a `ZodEffects` at the root) into the inner shape without\n// requiring callers to pre-strip wrappers. Importantly the peel is\n// applied only when descending — once the loop exits, the schema\n// at the target segment is returned as-is (including its own\n// wrapper, since that wrapper carries semantic meaning at parse\n// time, e.g. `.optional()` admits `undefined`, `.default(x)`\n// substitutes, `.refine(...)` runs the predicate). For path = []\n// (no segments) the original schema is returned unchanged so\n// whole-form `validateAtPath` keeps the root's refine intact.\n/**\n * Walk a structured path through a Zod v3 schema tree and return the\n * subschema(s) that live at that path.\n *\n * - Unions return multiple candidates (caller tries each).\n * - Discriminated unions filter options to those whose shape contains the\n * next segment, so a path into `{ status: 'error', message: string }`\n * resolves only to the 'error' branch.\n * - Wrappers (optional / nullable / default / readonly / catch / effects /\n * pipeline / branded) are transparent — the walker descends into the\n * inner schema without consuming a path segment.\n * - Leaf types (string / number / literal / ...) return `[]` when there's\n * still path left, so a caller that asked for `firstName.middle` against\n * a string schema gets an empty resolution rather than a wrong schema.\n *\n * `maxRecursionDepth` caps descent through `z.lazy()`. Once the walker has\n * crossed `maxRecursionDepth + 1` lazy boundaries it returns `[]`, so\n * writes at recursive paths deeper than the cap fall back to a permissive\n * type gate.\n *\n * Mirrors v4's `walkSegments` (`zod-v4/path-walker.ts`) — same kind-switch\n * structure, same Own-property check on objects, same lazy depth gate, so\n * `getSchemasAtPath` / `getSlimPrimitiveTypesAtPath` / `validateAtPath`\n * resolve identically across both adapters.\n */\nfunction getNestedZodSchemasAtPath(\n schema: z.ZodTypeAny,\n segments: readonly (string | number)[],\n maxRecursionDepth: number\n): z.ZodTypeAny[] {\n if (segments.length === 0) return [schema]\n return walkPathSegments(schema, segments.map(String), V3_INTROSPECTOR, maxRecursionDepth, 0)\n}\n\n/**\n * Peel `.optional()` / `.nullable()` wrappers off a leaf schema ONLY\n * when the inner type is structurally fillable (object, array, tuple,\n * record, discriminated/plain union — or itself a peelable wrapper\n * that resolves to one of those). For primitive inner (ZodString,\n * ZodNumber, etc.), the wrapper IS the meaningful schema:\n * `.optional()` means \"absent is allowed\" → undefined; peeling to\n * the inner string default `''` would let mergeStructural overwrite\n * the optional's honest \"absent\" with a non-empty marker when filling\n * sibling keys at the parent object. See v4's matching helper for\n * the long-form rationale.\n */\nfunction unwrapStructuralLeafV3(schema: z.ZodTypeAny): z.ZodTypeAny {\n let current: z.ZodTypeAny = schema\n for (let i = 0; i < MAX_UNWRAP_STEPS; i++) {\n if (!(isZodSchemaType(current, 'ZodOptional') || isZodSchemaType(current, 'ZodNullable'))) {\n break\n }\n const inner = unwrapInner(current)\n if (!inner) return current\n if (!isStructuralV3Kind(inner)) break\n current = inner\n }\n return current\n}\n\n/**\n * v3 mirror of v4's `isStructuralKind` — kinds for which the inner is\n * recursable by mergeStructural. Anything else is a primitive leaf\n * where the wrapper carries the meaningful default semantic.\n */\nfunction isStructuralV3Kind(schema: z.ZodTypeAny): boolean {\n return (\n isZodSchemaType(schema, 'ZodObject') ||\n isZodSchemaType(schema, 'ZodArray') ||\n isZodSchemaType(schema, 'ZodRecord') ||\n isZodSchemaType(schema, 'ZodTuple') ||\n isZodSchemaType(schema, 'ZodUnion') ||\n isZodSchemaType(schema, 'ZodDiscriminatedUnion') ||\n // Wrappers that themselves resolve to a structural type — keep\n // peeling at the next iteration.\n isZodSchemaType(schema, 'ZodOptional') ||\n isZodSchemaType(schema, 'ZodNullable') ||\n isZodSchemaType(schema, 'ZodDefault') ||\n isZodSchemaType(schema, 'ZodEffects') ||\n // Newer transparent wrappers (v3.23+). Each wraps a single inner\n // schema with no structural impact — `peelV3Wrappers` resolves them.\n isZodSchemaType(schema, 'ZodPipeline') ||\n isZodSchemaType(schema, 'ZodReadonly') ||\n isZodSchemaType(schema, 'ZodBranded')\n )\n}\n\n/**\n * Peel transparent wrappers off a v3 schema to reach the structural\n * \"core\" — used by the schema-aware path walker that powers\n * `getDefaultAtPath`. Mirrors v4's `unwrapInner` chain so `getDefaultAtPath`\n * resolves the same sub-schemas across both adapters for shapes like\n * `{ profile: z.object({...}).optional() }`.\n *\n * Bounded by `MAX_UNWRAP_STEPS` as a cycle/runaway guard. Returns the\n * original schema unchanged if it has no peelable wrapper.\n *\n * Peeled wrappers (each kind reads through its matching introspect\n * accessor — see `./introspect.ts`):\n * - `ZodOptional` / `ZodNullable` / `ZodDefault` / `ZodReadonly` —\n * `unwrapInner`\n * - `ZodEffects` — `unwrapEffectsSource` (structural source)\n * - `ZodPipeline` — `unwrapPipeIn` (input shape; consumers see\n * structural form)\n * - `ZodBranded` — `unwrapBranded`\n *\n * `ZodCatch` is intentionally NOT peeled here — its presence carries\n * load-bearing semantic (the caught fallback), and `unwrapDefault`\n * reads it directly. See A3 fix.\n */\nfunction peelV3Wrappers(schema: z.ZodTypeAny): z.ZodTypeAny {\n let current: z.ZodTypeAny = schema\n for (let i = 0; i < MAX_UNWRAP_STEPS; i++) {\n if (\n isZodSchemaType(current, 'ZodOptional') ||\n isZodSchemaType(current, 'ZodNullable') ||\n isZodSchemaType(current, 'ZodDefault') ||\n isZodSchemaType(current, 'ZodReadonly')\n ) {\n const inner = unwrapInner(current)\n if (!inner) return current\n current = inner\n continue\n }\n if (isZodSchemaType(current, 'ZodEffects')) {\n // v3 ZodEffects: source schema is at `_def.schema`. Prefer the\n // structural source.\n const inner = unwrapEffectsSource(current)\n if (!inner) return current\n current = inner\n continue\n }\n if (isZodSchemaType(current, 'ZodPipeline')) {\n // ZodPipeline transforms `in -> out`; for default extraction and\n // structural traversal, the input schema is the right anchor —\n // it's what the consumer wrote, and the output is a derived\n // shape they don't construct values for directly.\n const inner = unwrapPipeIn(current)\n if (!inner) return current\n current = inner\n continue\n }\n if (isZodSchemaType(current, 'ZodBranded')) {\n // ZodBranded annotates a brand at the type level; runtime is the\n // wrapped schema unchanged.\n const inner = unwrapBranded(current)\n if (!inner) return current\n current = inner\n continue\n }\n break\n }\n return current\n}\n\n/**\n * `true` if the v3 leaf schema is required — `false` if any wrapper\n * layer admits \"empty\" via `.optional()`, `.nullable()`, `.default(N)`,\n * or `.catch(N)`. Mirrors the v4 adapter's `isLeafRequired`.\n *\n * - `ZodOptional` / `ZodNullable` / `ZodDefault` / `ZodCatch` →\n * directly `false`.\n * - `ZodReadonly` / `ZodPipeline` / `ZodBranded` / `ZodEffects` →\n * transparent peel and re-check inner.\n * - `ZodUnion` / `ZodDiscriminatedUnion` → `false` if ANY branch\n * admits empty (matches union \"first-success\" semantic).\n * - `ZodIntersection` → `true` if EITHER side is required (parse\n * must satisfy both).\n * - Direct primitive / unknown kinds → `true` (required by default).\n */\nfunction isLeafRequiredV3(schema: z.ZodTypeAny, depth = 0): boolean {\n if (depth > MAX_UNWRAP_STEPS) return true\n // Direct \"schema accepts empty\" wrappers and bare empty-marker leaves.\n // `z.undefined()` / `z.null()` / `z.void()` inside a union are how\n // schema authors express \"this field can be absent\" without a wrapper,\n // so they count as not-required. Mirrors v4's `isLeafRequired`\n // short-circuit list.\n if (\n isZodSchemaType(schema, 'ZodOptional') ||\n isZodSchemaType(schema, 'ZodNullable') ||\n isZodSchemaType(schema, 'ZodDefault') ||\n isZodSchemaType(schema, 'ZodCatch') ||\n isZodSchemaType(schema, 'ZodUndefined') ||\n isZodSchemaType(schema, 'ZodNull') ||\n isZodSchemaType(schema, 'ZodVoid')\n ) {\n return false\n }\n // Transparent wrappers — peel and re-check.\n if (isZodSchemaType(schema, 'ZodReadonly')) {\n const inner = unwrapInner(schema)\n return inner === undefined ? true : isLeafRequiredV3(inner, depth + 1)\n }\n if (isZodSchemaType(schema, 'ZodBranded')) {\n const inner = unwrapBranded(schema)\n return inner === undefined ? true : isLeafRequiredV3(inner, depth + 1)\n }\n if (isZodSchemaType(schema, 'ZodPipeline')) {\n // Use the input side: blank is a write-time concern.\n const inner = unwrapPipeIn(schema)\n return inner === undefined ? true : isLeafRequiredV3(inner, depth + 1)\n }\n if (isZodSchemaType(schema, 'ZodEffects')) {\n const inner = unwrapEffectsSource(schema)\n return inner === undefined ? true : isLeafRequiredV3(inner, depth + 1)\n }\n // Union — required only if EVERY branch is required.\n if (isZodSchemaType(schema, 'ZodUnion') || isZodSchemaType(schema, 'ZodDiscriminatedUnion')) {\n const options = getUnionOptions(schema)\n if (options.length === 0) return true\n return options.every((opt) => isLeafRequiredV3(opt, depth + 1))\n }\n // Intersection — required if either side rejects empty.\n if (isZodSchemaType(schema, 'ZodIntersection')) {\n const left = getIntersectionLeft(schema)\n const right = getIntersectionRight(schema)\n const leftReq = left === undefined ? true : isLeafRequiredV3(left, depth + 1)\n const rightReq = right === undefined ? true : isLeafRequiredV3(right, depth + 1)\n return leftReq || rightReq\n }\n // Direct primitive / unsupported leaf — required by default.\n return true\n}\n\nfunction unwrapToDiscriminatedUnion(\n schema: z.ZodTypeAny,\n depth = 0\n): z.ZodDiscriminatedUnion<string, readonly z.ZodDiscriminatedUnionOption<string>[]> | undefined {\n // Bounded descent so a pathological lazy self-reference can't hang\n // the lookup. The recursive intersection branch also threads through\n // this cap.\n if (depth > MAX_UNWRAP_STEPS) return undefined\n let currentSchema: z.ZodTypeAny = schema\n\n for (let i = 0; i < MAX_UNWRAP_STEPS; i++) {\n // If the schema is a discriminated union, return it\n if (isZodSchemaType(currentSchema, 'ZodDiscriminatedUnion')) {\n return currentSchema\n }\n\n // Handle ZodDefault, ZodOptional, ZodNullable, and ZodCatch. Catch\n // is load-bearing: the consumer's `.catch(...)` fallback exists to\n // fail open to a usable variant, so the runtime must still know\n // which variant the fallback selects. Without this peel the\n // variant-aware reshape never fires on a catch-wrapped DU.\n if (\n isZodSchemaType(currentSchema, 'ZodDefault') ||\n isZodSchemaType(currentSchema, 'ZodOptional') ||\n isZodSchemaType(currentSchema, 'ZodNullable') ||\n isZodSchemaType(currentSchema, 'ZodCatch')\n ) {\n const inner = unwrapInner(currentSchema)\n if (!inner) return undefined\n currentSchema = inner\n continue\n }\n // Newer transparent wrappers — peel through to expose any\n // discriminated union that lives at the structural core.\n if (isZodSchemaType(currentSchema, 'ZodReadonly')) {\n const inner = unwrapInner(currentSchema)\n if (!inner) return undefined\n currentSchema = inner\n continue\n }\n if (isZodSchemaType(currentSchema, 'ZodBranded')) {\n const inner = unwrapBranded(currentSchema)\n if (!inner) return undefined\n currentSchema = inner\n continue\n }\n if (isZodSchemaType(currentSchema, 'ZodPipeline')) {\n const inner = unwrapPipeIn(currentSchema)\n if (!inner) return undefined\n currentSchema = inner\n continue\n }\n // ZodEffects (`z.preprocess` / `.refine` / `.transform`) is a\n // transparent wrapper for structural traversal; the discriminated\n // union may live on the source schema.\n if (isZodSchemaType(currentSchema, 'ZodEffects')) {\n const inner = unwrapEffectsSource(currentSchema)\n if (!inner) return undefined\n currentSchema = inner\n continue\n }\n // ZodIntersection — try each side. Intersections with a DU on\n // EXACTLY one side resolve to that side; both sides yielding\n // distinct DUs is ambiguous (the discriminator-aware reshape can't\n // pick one without arbitrary preference), so bail and let the\n // runtime fall through to a plain write. Mirrors v4's\n // intersection branch in `discriminator.ts:35`.\n if (isZodSchemaType(currentSchema, 'ZodIntersection')) {\n const left = getIntersectionLeft(currentSchema)\n const right = getIntersectionRight(currentSchema)\n const leftDU = left ? unwrapToDiscriminatedUnion(left, depth + 1) : undefined\n const rightDU = right ? unwrapToDiscriminatedUnion(right, depth + 1) : undefined\n if (leftDU !== undefined && rightDU !== undefined) {\n return leftDU === rightDU ? leftDU : undefined\n }\n return leftDU ?? rightDU\n }\n\n // Any other type: give up.\n return undefined\n }\n return undefined\n}\n\ntype DefaultValueContext = {\n formKey: FormKey\n discriminator: { useDefaultSchemaValues: boolean } & {\n isDiscriminatorKey: boolean\n schema:\n | z.ZodDiscriminatedUnion<string, readonly z.ZodDiscriminatedUnionOption<string>[]>\n | undefined\n }\n}\n\nfunction getDefaultValue(\n expected: z.ZodInvalidTypeIssue['expected'],\n context: DefaultValueContext\n) {\n // special default value for discriminated unions:\n const discriminatorContext = context.discriminator\n if (discriminatorContext.isDiscriminatorKey) {\n if (!discriminatorContext.schema) {\n throw new Error('discriminatorContext.schema unspecified')\n }\n\n if (!isZodSchemaType(discriminatorContext.schema, 'ZodDiscriminatedUnion')) {\n throw new TypeError(\n 'Programming error: discriminatorContext.schema is not a ZodDiscriminatedUnion schema.'\n )\n }\n\n const defaultDiscriminatorKey = undefined\n const optionDiscriminator = getSchemaByDiscriminatorKey(\n discriminatorContext.schema,\n defaultDiscriminatorKey\n )\n\n if (!optionDiscriminator) {\n throw new Error('ZodDiscriminatedUnion: default option not found')\n }\n\n return getDefaultValuesFromZodSchema(\n optionDiscriminator,\n discriminatorContext.useDefaultSchemaValues,\n context.formKey\n )\n }\n\n if (expected === 'string') return ''\n if (expected === 'number') return 0\n if (expected === 'array') return []\n if (expected === 'boolean') return false\n if (expected === 'bigint') return 0n\n if (expected === 'float') return 0.0\n if (expected === 'integer') return 0\n if (expected === 'null') return null\n if (expected === 'object') return {}\n if (expected === 'set') return new Set()\n if (expected === 'date') return new Date()\n // ZodMap / ZodPromise / ZodSymbol / ZodFunction are rejected by\n // `assertSupportedKinds` at construction (the four entries in\n // `UNSUPPORTED_TYPE_NAMES` at `assert-supported.ts:34`), so a\n // ZodInvalidTypeIssue with `expected` set to one of those values\n // is unreachable through the public adapter surface. The branches\n // were dead before Phase 9 even started; deleting them now retires\n // the only synthesisers we had for those values, eliminating the\n // risk of someone reaching in privately and discovering an\n // adapter-internal `new Promise` / `Symbol()` instance pinned\n // against a kind the schema couldn't be.\n if (expected === 'undefined') return undefined\n if (expected === 'unknown') return undefined\n if (expected === 'nan') return Number('nan')\n // 'never' and 'void' fall through to the default below.\n return undefined\n}\n\nfunction getDefaultValuesFromZodSchema<\n FormSchema extends z.ZodSchema,\n Form extends z.infer<FormSchema>,\n>(formSchema: FormSchema, useDefaultSchemaValues: boolean, formKey: FormKey): Form {\n // Thin wrapper around the shared `deriveDefaultWalk` core walker;\n // v3 and v4 dispatch through the same body via their respective\n // `SchemaIntrospector` instance. See `core/walk-derive-default.ts`\n // for the per-kind dispatch rules and the `peelEmbeddedDefault`\n // chain-walk that previously lived here as `unwrapDefault`.\n //\n // `maxRecursionDepth` is the historical v3 cap (64); the v3\n // adapter doesn't thread the consumer-supplied cap into this\n // call site — every existing v3 test passes against the embedded\n // 64-cap so the dedup preserves the prior behavior.\n return deriveDefaultWalk(formSchema, useDefaultSchemaValues, V3_INTROSPECTOR, 64, {\n unsupportedKindFallback: (schema) => {\n console.warn(\n `[attaform] zod-v3 adapter: unsupported schema kind ` +\n `'${(schema as { constructor?: { name?: string } }).constructor?.name ?? 'unknown'}' ` +\n `on form '${formKey}'. Defaulting the field to null. ` +\n `Use a supported zod kind (object/array/record/string/number/etc.) at this path.`\n )\n return null\n },\n // v3 historically surfaces the `.catch(v)` fallback even when\n // `useDefaultSchemaValues=false`. Pinned by\n // `test/adapters/zod-v3/wrappers.test.ts` ('surfaces the catch\n // fallback even when useDefaultSchemaValues is false').\n catchOnUseDefaultFalse: 'preserveCatch',\n }) as Form\n}\n// helpful tip: discriminator option schemas are always zod objects (because of discriminant key)\nfunction getSchemaByDiscriminatorKey(\n unionSchema: z.ZodTypeAny | z.ZodSchema,\n key: string | undefined\n): z.ZodObject<z.ZodRawShape> | undefined {\n // Check if the schema is a discriminated union\n if (!isZodSchemaType(unionSchema, 'ZodDiscriminatedUnion')) {\n throw new TypeError('Provided schema is not a discriminated union.')\n }\n\n // return first/default option schema if no key is provided\n if (key === undefined) {\n const options = getDiscriminatedOptions(unionSchema)\n if (!options.length) {\n throw new TypeError('Provided ZodDiscriminatedUnion does not have any options')\n }\n return options[0]\n }\n\n // Find the schema with the matching discriminator value\n const discKey = getDiscriminator(unionSchema)\n if (discKey === undefined) return undefined\n return getDiscriminatedOptions(unionSchema).find((schema) => {\n const discriminator = schema.shape[discKey] as z.ZodTypeAny | undefined\n return discriminator !== undefined && getLiteralValue(discriminator) === key\n })\n}\n\ntype StripConfigCallback = (schema: z.ZodTypeAny | z.ZodSchema) => boolean\n\ntype StripConfig = {\n stripNullable?: boolean | StripConfigCallback\n stripOptional?: boolean | StripConfigCallback\n stripZodEffects?: boolean | StripConfigCallback\n stripZodRefinements?: boolean | StripConfigCallback\n stripDefaultValues?: boolean | StripConfigCallback\n}\n\nfunction stripRefinements<T extends z.ZodTypeAny>(schema: T) {\n // `depth` bounds the recursion at MAX_UNWRAP_STEPS (per branch). For\n // realistic form schemas the structural depth is in single digits;\n // the bound only matters for pathological chains\n // (`z.string().refine().refine()...` produces nested ZodEffects whose\n // depth is exactly the chain length).\n function _stripRefinements(_schema: z.ZodTypeAny, depth: number): z.ZodTypeAny {\n if (depth >= MAX_UNWRAP_STEPS) return _schema as T\n if (isZodSchemaType(_schema, 'ZodString') && hasChecks(_schema)) {\n // Rebuild a ZodString without checks\n return z.string()\n }\n\n if (isZodSchemaType(_schema, 'ZodNumber') && hasChecks(_schema)) {\n // Rebuild a ZodNumber without checks\n return z.number()\n }\n\n if (isZodSchemaType(_schema, 'ZodArray')) {\n // Recursively process the array's inner type\n const inner = getArrayElement(_schema)\n if (!inner) return _schema\n return z.array(_stripRefinements(inner, depth + 1))\n }\n\n if (isZodSchemaType(_schema, 'ZodObject')) {\n // Recursively process each property of the object\n const strippedShape = Object.fromEntries(\n Object.entries(getObjectShape(_schema)).map(([key, value]) => [\n key,\n _stripRefinements(value, depth + 1),\n ])\n )\n return z.object(strippedShape)\n }\n\n if (isZodSchemaType(_schema, 'ZodEffects')) {\n // Unwrap the inner schema and strip refinements\n const inner = unwrapEffectsSource(_schema)\n if (!inner) return _schema\n return _stripRefinements(inner, depth + 1)\n }\n\n if (isZodSchemaType(_schema, 'ZodOptional')) {\n // Recursively strip optional's inner type\n const inner = unwrapInner(_schema)\n if (!inner) return _schema\n return z.optional(_stripRefinements(inner, depth + 1))\n }\n\n if (isZodSchemaType(_schema, 'ZodNullable')) {\n // Recursively strip nullable's inner type\n const inner = unwrapInner(_schema)\n if (!inner) return _schema\n return z.nullable(_stripRefinements(inner, depth + 1))\n }\n\n // Newer transparent wrappers — descend into their inner schema and\n // return that. We don't reconstruct the wrapper because its\n // refinement/branding/pipeline metadata isn't load-bearing for the\n // slim-parse pass that consumes the stripped schema.\n if (isZodSchemaType(_schema, 'ZodReadonly')) {\n const inner = unwrapInner(_schema)\n if (!inner) return _schema\n return _stripRefinements(inner, depth + 1)\n }\n\n if (isZodSchemaType(_schema, 'ZodBranded')) {\n const inner = unwrapBranded(_schema)\n if (!inner) return _schema\n return _stripRefinements(inner, depth + 1)\n }\n\n if (isZodSchemaType(_schema, 'ZodPipeline')) {\n const inner = unwrapPipeIn(_schema)\n if (!inner) return _schema\n return _stripRefinements(inner, depth + 1)\n }\n\n // Container kinds that nest other schemas. Pre-fix, refinements\n // inside these survived into the slim schema and the fix-up loop\n // had to patch each leaf via the second-parse fallback. Mirroring\n // v4's strip.ts means the FIRST slim parse passes for the lax\n // contract, no fix-up needed.\n\n if (isZodSchemaType(_schema, 'ZodSet')) {\n const valueType = getSetValueType(_schema)\n if (!valueType) return _schema\n return z.set(_stripRefinements(valueType, depth + 1))\n }\n\n if (isZodSchemaType(_schema, 'ZodTuple')) {\n const items = getTupleItems(_schema)\n if (items.length === 0) return _schema\n const stripped = items.map((it) => _stripRefinements(it, depth + 1))\n return z.tuple(stripped as [z.ZodTypeAny, ...z.ZodTypeAny[]])\n }\n\n if (isZodSchemaType(_schema, 'ZodRecord')) {\n const valueType = getRecordValueType(_schema)\n if (!valueType) return _schema\n const value = _stripRefinements(valueType, depth + 1)\n // z.record's two-arg form preserves the key schema; one-arg form\n // assumes z.string(). Forward the key type unchanged — refinements\n // on record keys aren't load-bearing for slim-schema concerns.\n const keyType = getRecordKeyType(_schema)\n if (keyType) {\n return z.record(keyType as z.ZodString, value)\n }\n return z.record(value)\n }\n\n if (isZodSchemaType(_schema, 'ZodUnion')) {\n const options = getUnionOptions(_schema)\n if (options.length === 0) return _schema\n const stripped = options.map((o) => _stripRefinements(o, depth + 1))\n return z.union(stripped as [z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]])\n }\n\n if (isZodSchemaType(_schema, 'ZodDiscriminatedUnion')) {\n const discKey = getDiscriminator(_schema)\n const options = getDiscriminatedOptions(_schema)\n if (discKey === undefined || options.length === 0) return _schema\n const stripped = options.map(\n (o) => _stripRefinements(o, depth + 1) as z.ZodObject<z.ZodRawShape>\n )\n return z.discriminatedUnion(\n discKey,\n stripped as [z.ZodObject<z.ZodRawShape>, ...z.ZodObject<z.ZodRawShape>[]]\n )\n }\n\n if (isZodSchemaType(_schema, 'ZodIntersection')) {\n const left = getIntersectionLeft(_schema)\n const right = getIntersectionRight(_schema)\n if (!left || !right) return _schema\n return z.intersection(_stripRefinements(left, depth + 1), _stripRefinements(right, depth + 1))\n }\n\n if (isZodSchemaType(_schema, 'ZodLazy')) {\n const inner = unwrapLazy(_schema)\n if (!inner) return _schema\n // Eagerly resolve once and capture the stripped target so the\n // returned lazy resolves to a stable schema. assertSupportedKinds\n // has already rejected self-referencing lazies, so this is finite.\n const stripped = _stripRefinements(inner, depth + 1)\n return z.lazy(() => stripped)\n }\n\n // Return other schema types as-is\n return _schema as T\n }\n\n return _stripRefinements(schema, 0) as T\n}\n\nfunction stripRootSchema(schema: z.ZodSchema, stripConfig: StripConfig) {\n function recursion(_schema: z.ZodSchema, _stripped = false): [z.ZodSchema, boolean] {\n if (\n getStripInstruction(stripConfig.stripNullable, _schema) &&\n isZodSchemaType(_schema, 'ZodNullable')\n ) {\n return recursion(_schema.unwrap(), true)\n }\n\n if (\n getStripInstruction(stripConfig.stripOptional, _schema) &&\n isZodSchemaType(_schema, 'ZodOptional')\n ) {\n return recursion(_schema.unwrap(), true)\n }\n\n if (\n getStripInstruction(stripConfig.stripZodEffects, _schema) &&\n isZodSchemaType(_schema, 'ZodEffects')\n ) {\n const inner = unwrapEffectsSource(_schema)\n if (inner) return recursion(inner as z.ZodSchema, true)\n }\n\n if (\n getStripInstruction(stripConfig.stripDefaultValues, _schema) &&\n isZodSchemaType(_schema, 'ZodDefault')\n ) {\n const inner = unwrapInner(_schema)\n if (inner) return recursion(inner as z.ZodSchema, true)\n }\n\n if (getStripInstruction(stripConfig.stripZodRefinements, _schema) && hasChecks(_schema)) {\n return recursion(stripRefinements(_schema))\n }\n\n return [_schema, _stripped]\n }\n\n return recursion(schema, false)\n}\n\ntype SlimSchemaConfig<Schema> = {\n schema: Schema\n stripConfig: StripConfig\n}\n\nconst getStripInstruction = (\n stripValueOrCallback: boolean | StripConfigCallback | undefined,\n schema: z.ZodTypeAny | z.ZodSchema\n): boolean => {\n if (stripValueOrCallback === undefined || stripValueOrCallback === false) return false\n\n return isFunction(stripValueOrCallback) ? stripValueOrCallback(schema) : stripValueOrCallback\n}\n\n// make the schema more relaxed so we can construct a initial form state\n// schema is based on ZodType in case we ever work with nested schemas\nfunction getSlimSchema<RS extends z.ZodRawShape, Schema extends z.ZodSchema>(\n config: SlimSchemaConfig<Schema>\n) {\n function _getSlimSchema(_schema: z.ZodSchema): z.ZodSchema {\n if (isZodSchemaType(_schema, 'ZodObject')) {\n const newShape: z.ZodRawShape = {}\n for (const [key, value] of Object.entries(getObjectShape(_schema))) {\n newShape[key] = _getSlimSchema(value as z.ZodSchema)\n }\n return z.object(newShape)\n }\n\n if (isZodSchemaType(_schema, 'ZodArray')) {\n const inner = getArrayElement(_schema)\n if (!inner) return _schema\n return z.array(_getSlimSchema(inner as z.ZodSchema))\n }\n\n if (isZodSchemaType(_schema, 'ZodRecord')) {\n const keyType = getRecordKeyType(_schema)\n const valueType = getRecordValueType(_schema)\n if (!keyType || !valueType) return _schema\n const key = _getSlimSchema(keyType as z.ZodSchema)\n const value = _getSlimSchema(valueType as z.ZodSchema)\n return z.record(key as z.ZodString, value)\n }\n\n // same way we go into records, objects, and arrays, go into discriminated unions\n if (isZodSchemaType(_schema, 'ZodDiscriminatedUnion')) {\n const slimmedSchemas = []\n const discKey = getDiscriminator(_schema)\n if (discKey === undefined) return _schema\n\n for (const option of getDiscriminatedOptions(_schema)) {\n const slimmedSchema = _getSlimSchema(option as unknown as z.ZodSchema)\n // slimmedSchema will be a structurally deep object, so break pointer refs to prevent recursion bugs\n const deepCloneSlimmedSchema = cloneDeep(slimmedSchema)\n slimmedSchemas.push(deepCloneSlimmedSchema)\n }\n\n return z.discriminatedUnion(\n discKey,\n slimmedSchemas as unknown as readonly [\n z.ZodDiscriminatedUnionOption<string>,\n ...z.ZodDiscriminatedUnionOption<string>[],\n ]\n )\n }\n\n if (\n getStripInstruction(config.stripConfig.stripZodEffects, _schema) &&\n isZodSchemaType(_schema, 'ZodEffects')\n ) {\n const inner = unwrapEffectsSource(_schema)\n if (inner) return _getSlimSchema(inner as z.ZodSchema)\n }\n\n if (\n getStripInstruction(config.stripConfig.stripNullable, _schema) &&\n isZodSchemaType(_schema, 'ZodNullable')\n ) {\n const inner = unwrapInner(_schema)\n if (inner) return _getSlimSchema(inner as z.ZodSchema)\n }\n\n if (\n getStripInstruction(config.stripConfig.stripOptional, _schema) &&\n isZodSchemaType(_schema, 'ZodOptional')\n ) {\n const inner = unwrapInner(_schema)\n if (inner) return _getSlimSchema(inner as z.ZodSchema)\n }\n\n if (\n getStripInstruction(config.stripConfig.stripZodRefinements, _schema) &&\n hasChecks(_schema)\n ) {\n return stripRefinements(_schema)\n }\n\n if (\n getStripInstruction(config.stripConfig.stripDefaultValues, _schema) &&\n isZodSchemaType(_schema, 'ZodDefault')\n ) {\n const inner = unwrapInner(_schema)\n if (inner) return _getSlimSchema(inner as z.ZodSchema)\n }\n\n // Attempt to unwrap a schema to find a discriminated union (bail if you hit another valid schema type)\n const unionSchema = unwrapToDiscriminatedUnion(_schema)\n if (unionSchema && getStripInstruction(config.stripConfig.stripDefaultValues, unionSchema)) {\n return _getSlimSchema(unionSchema)\n }\n\n return _schema\n }\n\n const processedRootSchema = stripRootSchema(config.schema, config.stripConfig)[0]\n return _getSlimSchema(processedRootSchema) as unknown as z.ZodObject<RS>\n}\n\n/**\n * Resolve the field metadata for the schema node at `path` against\n * the user's ORIGINAL schema (not the stripped / slim derivative —\n * stripping creates new schema instances which would lose registry\n * entries keyed by reference identity). Reads the WeakMap-backed\n * `fieldMeta` shim and applies the same precedence rules as the v4\n * adapter:\n *\n * - label: registry → humanize(lastSegment)\n * - description: registry → schema.description (.describe()) → undefined\n * - placeholder: registry → undefined\n * - meta: registry payload (frozen) — empty object when absent\n *\n * For schemas registered at multiple paths (shared instance — e.g.\n * `fieldMeta.add(addr, A); fieldMeta.add(addr, B); z.object({a: addr, b: addr})`),\n * consults a per-rootSchema path → payload map (`getPathMetaMapV3`)\n * built by walking the schema tree once, counting per-schema visits,\n * and pairing them with the registration list in declaration order.\n * Falls back to the schema-keyed registry for paths the walker can't\n * statically enumerate (dynamic discriminated-union sub-paths,\n * record-value paths beyond the canonical '*' slot). Mirrors v4's\n * `walkForMeta` / `getPathMetaMap` / `consumePayload`\n * (`adapter.ts:773-989`).\n */\n// Peel every transparent wrapper around a schema to expose its\n// structural inner — Optional / Nullable / Default / Readonly / Catch\n// (catch matters here so registrations on the inner under `.catch(...)`\n// still match) plus Effects / Pipeline / Branded / Lazy. More\n// aggressive than `peelV3Wrappers` which preserves catch for the\n// `unwrapDefault` direct read; the metadata walker needs the\n// structural shape regardless of the catch wrapper. Bounded iteration\n// as a runaway guard for pathological wrappers.\nfunction peelAllV3Wrappers(schema: z.ZodTypeAny): z.ZodTypeAny {\n let current: z.ZodTypeAny = schema\n for (let i = 0; i < MAX_UNWRAP_STEPS; i++) {\n let inner: z.ZodTypeAny | undefined\n if (\n isZodSchemaType(current, 'ZodOptional') ||\n isZodSchemaType(current, 'ZodNullable') ||\n isZodSchemaType(current, 'ZodDefault') ||\n isZodSchemaType(current, 'ZodReadonly') ||\n isZodSchemaType(current, 'ZodCatch')\n ) {\n inner = unwrapInner(current)\n } else if (isZodSchemaType(current, 'ZodEffects')) {\n inner = unwrapEffectsSource(current)\n } else if (isZodSchemaType(current, 'ZodPipeline')) {\n inner = unwrapPipeIn(current)\n } else if (isZodSchemaType(current, 'ZodBranded')) {\n inner = unwrapBranded(current)\n } else if (isZodSchemaType(current, 'ZodLazy')) {\n try {\n inner = unwrapLazy(current)\n } catch {\n return current\n }\n } else {\n return current\n }\n if (!inner) return current\n current = inner\n }\n return current\n}\n\n// Per-rootSchema cache of path → payload maps. Build is a single tree\n// walk; lookups are O(1) thereafter. WeakMap keyed on the root schema\n// so entries GC with the form. Mirrors v4's `pathMetaCache`.\nconst pathMetaCacheV3 = new WeakMap<z.ZodTypeAny, Map<PathKey, FieldMetaPayload>>()\n\nfunction getPathMetaMapV3(rootSchema: z.ZodTypeAny): Map<PathKey, FieldMetaPayload> {\n const cached = pathMetaCacheV3.get(rootSchema)\n if (cached !== undefined) return cached\n const map = new Map<PathKey, FieldMetaPayload>()\n const counters = new Map<z.ZodTypeAny, number>()\n const lastPathPerSchema = new Map<z.ZodTypeAny, PathKey>()\n const inProgress = new WeakSet<z.ZodTypeAny>()\n walkForMetaV3(rootSchema, [], map, counters, lastPathPerSchema, inProgress)\n // Absorb surplus registrations into the schema's last-visited path\n // — covers chains like `withMeta(s, {label}).register(fieldMeta, {desc})`\n // where one path consumes list[0] and list[1] would otherwise go\n // unread. Mirrors v4's surplus-merge step in `getPathMetaMap`.\n for (const [schema, lastPath] of lastPathPerSchema) {\n const list = getFieldMetaList(schema)\n const consumed = counters.get(schema) ?? 0\n if (list.length <= consumed) continue\n const surplus = list\n .slice(consumed)\n .reduce<FieldMetaPayload>((acc, p) => ({ ...acc, ...p }), {})\n const existing = map.get(lastPath) ?? {}\n map.set(lastPath, { ...existing, ...surplus })\n }\n pathMetaCacheV3.set(rootSchema, map)\n return map\n}\n\nfunction consumePayloadV3(\n schema: z.ZodTypeAny,\n counters: Map<z.ZodTypeAny, number>\n): FieldMetaPayload | undefined {\n const list = getFieldMetaList(schema)\n if (list.length === 0) return undefined\n const idx = counters.get(schema) ?? 0\n // Clamp to last entry — schemas reused MORE times than they're\n // registered (e.g. an array element schema registered once, visited\n // per-index) all share the single registration. Mirrors v4's clamp.\n const payload = list[Math.min(idx, list.length - 1)]\n counters.set(schema, idx + 1)\n return payload\n}\n\n/**\n * Walk the v3 schema tree from `rootSchema`, emitting a payload for\n * each path that has registered metadata. For schemas registered at\n * multiple paths the per-schema counter advances each visit and\n * selects the i-th payload from the schema's registration list — when\n * registrations happen in declaration order they pair correctly with\n * tree-walk order. Mirrors v4's `walkForMeta` shape.\n *\n * Visits the schema first (terminal-position registration), then the\n * peeled inner if different (inner-then-wrap registration). At each\n * point the FIRST list-payload found wins for that path.\n */\nfunction walkForMetaV3(\n schema: z.ZodTypeAny,\n path: Path,\n map: Map<PathKey, FieldMetaPayload>,\n counters: Map<z.ZodTypeAny, number>,\n lastPathPerSchema: Map<z.ZodTypeAny, PathKey>,\n inProgress: WeakSet<z.ZodTypeAny>\n): void {\n if (inProgress.has(schema)) return\n inProgress.add(schema)\n try {\n const pathKey = canonicalizePath(path).key\n if (!map.has(pathKey)) {\n const payload = consumePayloadV3(schema, counters)\n if (payload !== undefined) {\n map.set(pathKey, payload)\n lastPathPerSchema.set(schema, pathKey)\n }\n }\n const peeled = peelAllV3Wrappers(schema)\n if (peeled !== schema && !map.has(pathKey)) {\n const payload = consumePayloadV3(peeled, counters)\n if (payload !== undefined) {\n map.set(pathKey, payload)\n lastPathPerSchema.set(peeled, pathKey)\n }\n }\n // Descend\n if (isZodSchemaType(schema, 'ZodObject')) {\n const shape = getObjectShape(schema)\n for (const [key, child] of Object.entries(shape)) {\n walkForMetaV3(\n child as z.ZodTypeAny,\n [...path, key],\n map,\n counters,\n lastPathPerSchema,\n inProgress\n )\n }\n return\n }\n if (isZodSchemaType(schema, 'ZodArray')) {\n const inner = getArrayElement(schema)\n if (inner) walkForMetaV3(inner, [...path, 0], map, counters, lastPathPerSchema, inProgress)\n return\n }\n if (isZodSchemaType(schema, 'ZodTuple')) {\n const items = getTupleItems(schema)\n items.forEach((item, i) => {\n walkForMetaV3(\n item as z.ZodTypeAny,\n [...path, i],\n map,\n counters,\n lastPathPerSchema,\n inProgress\n )\n })\n return\n }\n if (isZodSchemaType(schema, 'ZodSet')) {\n const inner = getSetValueType(schema)\n if (inner) walkForMetaV3(inner, [...path, 0], map, counters, lastPathPerSchema, inProgress)\n return\n }\n if (isZodSchemaType(schema, 'ZodRecord')) {\n const inner = getRecordValueType(schema)\n if (inner) walkForMetaV3(inner, [...path, '*'], map, counters, lastPathPerSchema, inProgress)\n return\n }\n if (isZodSchemaType(schema, 'ZodUnion') || isZodSchemaType(schema, 'ZodDiscriminatedUnion')) {\n for (const opt of getUnionOptions(schema)) {\n walkForMetaV3(opt as z.ZodTypeAny, path, map, counters, lastPathPerSchema, inProgress)\n }\n return\n }\n if (isZodSchemaType(schema, 'ZodIntersection')) {\n const left = getIntersectionLeft(schema)\n const right = getIntersectionRight(schema)\n if (left) walkForMetaV3(left, path, map, counters, lastPathPerSchema, inProgress)\n if (right) walkForMetaV3(right, path, map, counters, lastPathPerSchema, inProgress)\n return\n }\n if (\n isZodSchemaType(schema, 'ZodOptional') ||\n isZodSchemaType(schema, 'ZodNullable') ||\n isZodSchemaType(schema, 'ZodDefault') ||\n isZodSchemaType(schema, 'ZodReadonly') ||\n isZodSchemaType(schema, 'ZodCatch')\n ) {\n const inner = unwrapInner(schema)\n if (inner) walkForMetaV3(inner, path, map, counters, lastPathPerSchema, inProgress)\n return\n }\n if (isZodSchemaType(schema, 'ZodEffects')) {\n const inner = unwrapEffectsSource(schema)\n if (inner) walkForMetaV3(inner, path, map, counters, lastPathPerSchema, inProgress)\n return\n }\n if (isZodSchemaType(schema, 'ZodPipeline')) {\n const inner = unwrapPipeIn(schema)\n if (inner) walkForMetaV3(inner, path, map, counters, lastPathPerSchema, inProgress)\n return\n }\n if (isZodSchemaType(schema, 'ZodBranded')) {\n const inner = unwrapBranded(schema)\n if (inner) walkForMetaV3(inner, path, map, counters, lastPathPerSchema, inProgress)\n return\n }\n if (isZodSchemaType(schema, 'ZodLazy')) {\n try {\n const inner = unwrapLazy(schema)\n if (inner) walkForMetaV3(inner, path, map, counters, lastPathPerSchema, inProgress)\n } catch {\n // Recursive z.lazy() — the inProgress guard at the top of\n // walkForMetaV3 stops the descent, but a getter that throws\n // before reaching that check shouldn't crash the walk.\n }\n return\n }\n // Leaf kinds — nothing more to descend into; metadata for the path\n // itself was captured above.\n } finally {\n inProgress.delete(schema)\n }\n}\n\nfunction resolveFieldMetaAtPathV3(\n rootSchema: z.ZodSchema,\n path: Path,\n maxRecursionDepth: number\n): ResolvedFieldMeta {\n const lastSegment = path.length === 0 ? '' : (path[path.length - 1] as string | number)\n const target =\n path.length === 0\n ? (rootSchema as z.ZodTypeAny)\n : getNestedZodSchemasAtPath(rootSchema, path, maxRecursionDepth)[0]\n if (target === undefined) {\n return {\n label: humanize(lastSegment),\n description: undefined,\n placeholder: undefined,\n meta: Object.freeze({}),\n }\n }\n // Path-keyed payload map (built once per rootSchema) disambiguates\n // shared schemas registered at multiple paths. Falls back to the\n // schema-keyed registry for paths not visited by the walker.\n const pathMap = getPathMetaMapV3(rootSchema as z.ZodTypeAny)\n const pathKey = canonicalizePath(path).key\n const peeled = peelV3Wrappers(target)\n const payload =\n pathMap.get(pathKey) ??\n getFieldMeta(target) ??\n (peeled !== target ? getFieldMeta(peeled) : undefined)\n const targetDescription =\n typeof (target as { description?: unknown }).description === 'string'\n ? ((target as { description?: string }).description as string)\n : undefined\n const peeledDescription =\n peeled !== target && typeof (peeled as { description?: unknown }).description === 'string'\n ? ((peeled as { description?: string }).description as string)\n : undefined\n const schemaDescription = targetDescription ?? peeledDescription\n return {\n label: payload?.label ?? humanize(lastSegment),\n description: payload?.description ?? schemaDescription ?? undefined,\n placeholder: payload?.placeholder ?? undefined,\n meta: Object.freeze({ ...(payload ?? {}) }),\n }\n}\n\n/**\n * v3's construction-time `getDefaultValues` flow. Extracted from the\n * pre-factory inline adapter body. Builds the slim default-value seed\n * via `getDefaultValuesFromZodSchema`, merges constraints, then runs:\n *\n * - Strict mode (default): parse against the REAL schema so refines\n * and container / leaf checks surface at construction. If a sync\n * parse throws because of an async refine, strip every ZodEffects\n * and re-parse (v3 cannot tell sync from async refines without\n * invoking the wrapper). If a user refine throws raw, fall back\n * to mount-clean success.\n *\n * - Lax mode: validate-then-fix loop against the slim schema —\n * primitive / structural mismatches get patched with the slim\n * default; refinement-level issues pass through unchanged so the\n * downstream strict validation pass surfaces them.\n *\n * Both arms compose with `mergeDeepV3` (NOT lodash merge) so arrays\n * replace wholesale and explicit `null` / `undefined` overrides\n * survive — matching v4's `mergeDeep` semantic.\n */\nfunction runStrictGetDefaultsV3<Form>(\n rootSchema: z.ZodSchema,\n config: GetDefaultValuesConfig<Form>,\n formKey: FormKey,\n maxRecursionDepth: number\n): DefaultValuesResponse<Form> {\n const defaultValuesWithoutConstraints = getDefaultValuesFromZodSchema(\n rootSchema,\n config.useDefaultSchemaValues,\n formKey\n )\n\n const slimSchema = getSlimSchema({\n schema: rootSchema,\n stripConfig: {\n stripZodEffects: true,\n stripDefaultValues: true,\n // `strict: false` strips refinements (so empty defaults pass);\n // strict keeps them so the slim parse below surfaces refinement\n // errors. Async refines are guarded by the try/catch — they\n // can't be surfaced synchronously regardless.\n stripZodRefinements: (config.strict ?? true) === false,\n },\n })\n\n let rawDefaultValues = defaultValuesWithoutConstraints\n if (!isPrimitive(rawDefaultValues)) {\n // `mergeDeepV3` (NOT lodash `merge`) so arrays replace wholesale\n // and explicit `null`/`undefined` overrides survive, matching v4's\n // `mergeDeep` semantic.\n rawDefaultValues = mergeDeepV3(defaultValuesWithoutConstraints, config.constraints)\n } else if (constraintsAreSlimValid(slimSchema, config.constraints)) {\n rawDefaultValues = config.constraints\n }\n\n // Strict-mode path: parse against the REAL schema so refines and\n // container / leaf checks (`.min(n)` / `.max(n)` / `.email()` etc.)\n // seed at construction. Mirrors v4 (`zod-v4/adapter.ts`'s strict\n // arm). The lax-mode validate-then-fix loop below stays untouched\n // — it's the right shape for \"seed a permissive partial state at\n // mount.\"\n if ((config.strict ?? true) !== false) {\n // Async transforms can't be stripped: the transform's output shape\n // is load-bearing for the inner schema's input. Skip the strict\n // pass entirely; the post-mount async pass picks up verdicts via\n // `safeParseAsync`.\n if (containsAsyncTransform(rootSchema)) {\n return {\n data: rawDefaultValues as Form,\n errors: undefined,\n success: true,\n formKey,\n }\n }\n\n try {\n const strictResult = rootSchema.safeParse(rawDefaultValues)\n if (strictResult.success) {\n // Storage holds the pre-transform `z.input` view, so we return\n // the raw defaults (already filled by\n // `getDefaultValuesFromZodSchema`) rather than\n // `strictResult.data` (the post-transform `z.output`). For\n // schemas without `.transform()` the two coincide; for schemas\n // with one the storage stays the honest input view that\n // `form.values` reflects.\n return {\n data: rawDefaultValues as Form,\n errors: undefined,\n success: true,\n formKey,\n }\n }\n return {\n data: rawDefaultValues as Form,\n errors: zodIssuesToValidationErrors(strictResult.error.issues, formKey),\n success: false,\n formKey,\n }\n } catch (err) {\n // Distinguish the v3 async-detect throw from a generic\n // user-validator throw at construction. The async-detect throw\n // is a standard `Error` with message `\"Async refinement\n // encountered during synchronous parse...\"`. On that path strip\n // every `ZodEffects` (sync + async — v3 can't tell apart at the\n // predicate level, see `strip-async.ts` docblock) and re-parse\n // to surface container + leaf-check seeds.\n const isAsyncDetect =\n err instanceof Error && err.message.includes('Async refinement encountered')\n if (isAsyncDetect) {\n try {\n const strippedResult = stripAsyncChecks(rootSchema).safeParse(rawDefaultValues)\n if (strippedResult.success) {\n return {\n data: rawDefaultValues as Form,\n errors: undefined,\n success: true,\n formKey,\n }\n }\n return {\n data: rawDefaultValues as Form,\n errors: zodIssuesToValidationErrors(strippedResult.error.issues, formKey),\n success: false,\n formKey,\n }\n } catch {\n // Defensive floor: the stripped schema also threw (e.g. a\n // sync refine that itself throws). Mount cleanly; the\n // post-mount async pass is the source of truth for any\n // verdict this code path can't surface.\n return {\n data: rawDefaultValues as Form,\n errors: undefined,\n success: true,\n formKey,\n }\n }\n }\n // Non-async throw at construction (user validator threw a raw\n // exception): defensive floor, matches v4's catch.\n return {\n data: rawDefaultValues as Form,\n errors: undefined,\n success: true,\n formKey,\n }\n }\n }\n\n // Lax mode: validate-then-fix loop. The slim schema's structural\n // shape is what the loop patches against — any throw collapses to\n // mount-clean success. The existing try/catch is the slim equivalent\n // of the strict-mode defensive floor above.\n let parseResult: ReturnType<typeof slimSchema.safeParse>\n try {\n parseResult = slimSchema.safeParse(rawDefaultValues)\n } catch {\n return {\n data: rawDefaultValues as Form,\n errors: undefined,\n success: true,\n formKey,\n }\n }\n const { data, success, error } = parseResult\n\n if (success) {\n return {\n data: data as Form,\n errors: undefined,\n success,\n formKey,\n }\n }\n\n let fixedData: Record<string, unknown> = {}\n\n // `if (success) return ...` above handles the happy path; below\n // we're always in the failure case.\n //\n // Under the slim-primitive write contract, the validate-then-fix\n // loop only patches issues that violate STRUCTURAL or\n // PRIMITIVE-TYPE shape. Refinement-level issues\n // (invalid_enum_value, invalid_literal, invalid_string, too_small,\n // too_big, custom, unrecognized_keys) pass THROUGH unchanged — the\n // user's defaultValues are preserved verbatim and the strict-mode\n // validation pass downstream surfaces the error at construction.\n //\n // The classifier: look up the actual offending value at the issue's\n // path and check its slim primitive kind against the candidate\n // schema's slim primitive set. If the value's kind IS in the set,\n // the issue is refinement-level → skip. If it's NOT in the set, the\n // issue is primitive/structural → fix. Unifies every issue code\n // under one check.\n for (const issue of error.issues) {\n const schemasAtPath = getNestedZodSchemasAtPath(slimSchema, issue.path, maxRecursionDepth)\n // `setAtPath` accepts a Segment[] directly; keeps the literal-dot\n // case (`['user.name']`) from being flattened into two key\n // accesses. Coerce in case a custom check smuggled a Symbol —\n // `path.join` would throw on it.\n const path = coercePathSegments(issue.path)\n if (!schemasAtPath.length) {\n console.error(\n `[attaform] zod-v3 adapter: no schema at path ` +\n `'${path.join(PATH_SEPARATOR)}' for key '${formKey}'. ` +\n `Skipping the issue. (This is a library-internal invariant — please file a bug.)`\n )\n continue\n }\n\n // Refinement-vs-primitive classification.\n const candidate = schemasAtPath[0]\n if (candidate !== undefined) {\n const valueAtPath = getAtPath(rawDefaultValues, path)\n const slimKinds = slimPrimitivesV3(candidate as z.ZodTypeAny)\n if (slimKinds.size > 0 && slimKinds.has(slimKindOf(valueAtPath))) {\n // Refinement-level: pass through unchanged.\n continue\n }\n }\n\n for (const schemaAtPath of schemasAtPath) {\n if (issue.code === 'invalid_type') {\n const isDiscriminatedUnion = isZodSchemaType(schemaAtPath, 'ZodDiscriminatedUnion')\n const defaultValueContext: DefaultValueContext = isDiscriminatedUnion\n ? {\n formKey,\n discriminator: {\n isDiscriminatorKey: true,\n schema: schemaAtPath as z.ZodDiscriminatedUnion<\n string,\n readonly z.ZodDiscriminatedUnionOption<string>[]\n >,\n useDefaultSchemaValues: false,\n },\n }\n : {\n formKey,\n discriminator: {\n isDiscriminatorKey: false,\n schema: undefined,\n useDefaultSchemaValues: false,\n },\n }\n const defaultValue = getDefaultValue(issue.expected, defaultValueContext)\n fixedData = setAtPath(fixedData, path, defaultValue) as Record<string, unknown>\n continue\n }\n\n // Wrong-primitive issues with non-invalid_type codes (e.g.,\n // invalid_enum_value where the offending value is a number\n // against a string-enum). Fall back to the schema's default —\n // peel the wrapper chain for an embedded `ZodDefault` /\n // `ZodCatch.fallback`. Mirrors the chain-peel that\n // `deriveDefaultWalk` runs at the top of every node visit.\n const peeled = peelEmbeddedDefault(schemaAtPath as z.ZodTypeAny, V3_INTROSPECTOR)\n if (peeled !== NO_EMBEDDED_DEFAULT) {\n fixedData = setAtPath(fixedData, path, peeled) as Record<string, unknown>\n continue\n }\n // Last-ditch: derive a default for the schema kind at this path.\n // Skips if no useful default emerges.\n const ctx: DefaultValueContext = {\n formKey,\n discriminator: {\n isDiscriminatorKey: false,\n schema: undefined,\n useDefaultSchemaValues: false,\n },\n }\n // Use the slim primitive's first kind to derive a default.\n const slimKinds = slimPrimitivesV3(schemaAtPath as z.ZodTypeAny)\n const firstKind = [...slimKinds][0]\n if (firstKind !== undefined) {\n const expected =\n firstKind === 'string'\n ? 'string'\n : firstKind === 'number'\n ? 'number'\n : firstKind === 'boolean'\n ? 'boolean'\n : firstKind === 'bigint'\n ? 'bigint'\n : firstKind === 'date'\n ? 'date'\n : firstKind === 'array'\n ? 'array'\n : firstKind === 'object'\n ? 'object'\n : null\n if (expected !== null) {\n fixedData = setAtPath(fixedData, path, getDefaultValue(expected, ctx)) as Record<\n string,\n unknown\n >\n }\n }\n }\n }\n // `mergeDeepV3` so the fix-up overrides the raw defaults with\n // copy-on-write semantics matching v4 (array replace, null/undefined\n // clears honored).\n fixedData = mergeDeepV3(rawDefaultValues, fixedData) as Record<string, unknown>\n\n // Best-effort re-parse: if the fix-up loop couldn't fully reconcile\n // the data (nested unions whose branches don't match the defaulted\n // shape, bigint edge cases), return the partial data instead of\n // throwing. Matches the v4 adapter's lax semantics — a partially-\n // valid initial state is preferable to a mount-time exception.\n // Strict mode short-circuited earlier via the real-schema parse\n // path, so reaching here implies `config.strict === false`.\n const secondParse = slimSchema.safeParse(fixedData)\n const finalData = secondParse.success ? secondParse.data : fixedData\n return {\n data: finalData as Form,\n errors: undefined,\n success: true,\n formKey,\n }\n}\n\n/**\n * v3's slim-mode path walk for `getSlimPrimitiveTypesAtPath` and\n * `getSchemasAtPath`. Strips refinements / defaults / wrappers off the\n * root, then derives the slim shape, then walks. Yielded candidates\n * reflect the slim shape — which is what the slim-primitive gate\n * consults at write time and what consumers expect when introspecting\n * sub-schemas. v4's introspector aliases this to the unstripped walk\n * because its path walker already inlines wrapper peeling.\n */\nfunction getNestedSchemasInSlimModeV3(\n rootSchema: z.ZodSchema,\n path: Path,\n maxRecursionDepth: number\n): z.ZodTypeAny[] {\n const [strippedSchema] = stripRootSchema(rootSchema, {\n stripDefaultValues: true,\n stripNullable: true,\n stripOptional: true,\n stripZodEffects: true,\n })\n const slimSchema = getSlimSchema({\n schema: strippedSchema,\n stripConfig: { stripDefaultValues: true, stripZodEffects: true },\n })\n return getNestedZodSchemasAtPath(slimSchema, path, maxRecursionDepth)\n}\n","import type { z } from 'zod-v3'\nimport { zodAdapter } from '../adapters/zod-v3'\nimport { InvalidUseFormConfigError } from '../core/errors'\nimport type {\n AbstractSchema,\n FormKey,\n UseFormReturnType,\n UseFormConfiguration,\n ValidateOnConfig,\n} from '../types/types-api'\nimport type { DefaultValuesInput, GenericForm } from '../types/types-core'\nimport type { UnwrapZodObject } from '../adapters/zod-v3/types-zod-adapter'\nimport type { StorageShape } from '../adapters/zod-v3/types-storage-shape'\nimport { useAbstractForm } from './use-abstract-form'\n\n/**\n * `FormOf` / `OutOf` / `ReadOf` factor the three identical-shape\n * conditionals out of the zod-typed `useForm` signature. The bundled\n * `.d.ts` then carries one alias per shape rather than re-inlining\n * `z.input<UnwrapZodObject<Schema>> extends GenericForm ? … : never`\n * four times — the pattern that produces TS2589 (\"Type instantiation\n * is excessively deep\") on consumer call sites with complex schemas\n * (discriminated unions, refines, deep `.register()` chains). Mirrors\n * the v4 adapter's own `FormOf`/`OutOf`/`ReadOf` aliases verbatim so\n * v3 and v4 carry the same per-call depth cost.\n */\ntype FormOf<Schema extends z.ZodObject<z.ZodRawShape>> =\n z.input<UnwrapZodObject<Schema>> extends GenericForm ? z.input<UnwrapZodObject<Schema>> : never\ntype OutOf<Schema extends z.ZodObject<z.ZodRawShape>> =\n z.output<UnwrapZodObject<Schema>> extends GenericForm ? z.output<UnwrapZodObject<Schema>> : never\ntype ReadOf<Schema extends z.ZodObject<z.ZodRawShape>> =\n StorageShape<UnwrapZodObject<Schema>> extends GenericForm\n ? StorageShape<UnwrapZodObject<Schema>>\n : never\n\n/**\n * Create a form bound to a custom `AbstractSchema` adapter.\n *\n * ```ts\n * import { useForm } from 'attaform/zod-v3'\n *\n * const form = useForm({ schema: myAdapter, defaultValues: { … } })\n * ```\n *\n * For Zod schemas, prefer the overload that accepts a `ZodObject`\n * directly — it wraps the adapter automatically. For Zod v4, import\n * from `attaform/zod` instead.\n */\nexport function useForm<\n Form extends GenericForm,\n GetValueFormType extends GenericForm = Form,\n K extends FormKey = FormKey,\n>(\n configuration: UseFormConfiguration<\n Form,\n GetValueFormType,\n AbstractSchema<Form, GetValueFormType>,\n DefaultValuesInput<Form>,\n K\n >\n): UseFormReturnType<Form, GetValueFormType, Form, K>\n/**\n * Create a form bound to a Zod v3 `ZodObject` schema.\n *\n * ```ts\n * import { useForm } from 'attaform/zod-v3'\n * import { z } from 'zod'\n *\n * const form = useForm({\n * schema: z.object({\n * email: z.string().email(),\n * password: z.string().min(8),\n * }),\n * defaultValues: { email: '' },\n * validateOn: 'blur',\n * })\n * ```\n *\n * Returns a form API exposing `register`, `values`, `errors`,\n * `fields`, `setValue`, `handleSubmit`, `meta`, field-array\n * helpers, and more. See `UseFormReturnType` for the full\n * surface.\n *\n * For Zod v4, import from `attaform/zod` instead.\n */\nexport function useForm<Schema extends z.ZodObject<z.ZodRawShape>, K extends FormKey = FormKey>(\n configuration: Omit<\n UseFormConfiguration<\n FormOf<Schema>,\n OutOf<Schema>,\n AbstractSchema<FormOf<Schema>, OutOf<Schema>>,\n DefaultValuesInput<FormOf<Schema>>,\n K\n >,\n 'schema' | 'validateOn' | 'debounceMs'\n > & { schema: Schema } & ValidateOnConfig\n): UseFormReturnType<FormOf<Schema>, OutOf<Schema>, ReadOf<Schema>, K>\n// Untyped impl signature. The two overloads above are the public typed\n// contract; this signature exists only so the body has somewhere to\n// land. Keeping it untyped severs the overload-vs-impl reconciliation\n// that would otherwise force every overload return to round-trip\n// through `WriteShape`'s primitive-widening idempotence — a constraint\n// that blocks fusing `LiftedValueShape` into `WriteShape` because the\n// union-distribution arm breaks that idempotence on discriminated\n// unions.\n//\n// Type safety inside the body comes from the inner helpers\n// (`zodAdapter`, `useAbstractForm`) inferring from runtime values; the\n// public surface that consumers see comes from the overloads.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function useForm(configuration: any): any {\n // Foot-gun guard: catches `useForm(z.object({...}))` (raw schema as\n // the first arg — its `.schema` field is undefined), `useForm()` (no\n // args), and `useForm({ schema: undefined })` before they reach the\n // adapter and crash deep with an opaque message.\n if (\n configuration === undefined ||\n configuration === null ||\n (configuration as { schema?: unknown }).schema === undefined\n ) {\n throw new InvalidUseFormConfigError()\n }\n\n function isZodType(value: unknown): value is z.ZodType {\n return typeof value === 'object' && value !== null && '_def' in value\n }\n\n const { schema } = configuration\n const abstractSchema = isZodType(schema) ? zodAdapter(schema) : schema\n\n // Spread the full configuration so opt-in options (`onInvalidSubmit`,\n // `validateOn`, `debounceMs`, `persist`, `history`, `key`, `strict`)\n // reach useAbstractForm. Writing `strict: configuration.strict ?? true`\n // here would short-circuit the registry's app-level defaults\n // (`createAttaform({ defaults: { strict: false } })`). The\n // library-level fallback to `true` lives downstream in\n // `createFormStore`, where it can apply *after* the registry merge.\n return useAbstractForm({\n ...configuration,\n schema: abstractSchema,\n defaultValues: configuration.defaultValues,\n })\n}\n"],"names":["MAX_UNWRAP_STEPS","getDefaultValue"],"mappings":"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"}
|