attaform 0.16.3 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -2
- package/dist/chunks/devtools.cjs +19 -12
- package/dist/chunks/devtools.cjs.map +1 -1
- package/dist/chunks/devtools.mjs +19 -12
- package/dist/chunks/devtools.mjs.map +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 +27 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +80 -8
- package/dist/index.d.mts +80 -8
- package/dist/index.d.ts +80 -8
- package/dist/index.mjs +28 -9
- package/dist/index.mjs.map +1 -1
- package/dist/nuxt.d.cts +1 -1
- package/dist/nuxt.d.mts +1 -1
- package/dist/nuxt.d.ts +1 -1
- package/dist/runtime/plugins/attaform.cjs +3 -3
- package/dist/runtime/plugins/attaform.cjs.map +1 -1
- package/dist/runtime/plugins/attaform.mjs +3 -3
- package/dist/runtime/plugins/attaform.mjs.map +1 -1
- package/dist/shared/{attaform.KrNw10aW.cjs → attaform.0Wg7UEeX.cjs} +60 -20
- package/dist/shared/attaform.0Wg7UEeX.cjs.map +1 -0
- package/dist/shared/attaform.AOgGyRoI.d.cts +65 -0
- package/dist/shared/{attaform.lFNwBcA3.d.ts → attaform.B0zue7zt.d.ts} +1 -1
- package/dist/shared/{attaform.c_NzdRyc.cjs → attaform.BBM2muQ9.cjs} +7 -3
- package/dist/shared/attaform.BBM2muQ9.cjs.map +1 -0
- package/dist/shared/{attaform.C9Ph2SMx.cjs → attaform.BFumZXY2.cjs} +1514 -391
- package/dist/shared/attaform.BFumZXY2.cjs.map +1 -0
- package/dist/shared/attaform.BQ-iGGWd.d.mts +65 -0
- package/dist/shared/{attaform.DILbdvfo.mjs → attaform.BT55rDNN.mjs} +1514 -393
- package/dist/shared/attaform.BT55rDNN.mjs.map +1 -0
- package/dist/shared/{attaform._EqYNPYF.d.mts → attaform.BYbsV2Wv.d.cts} +738 -138
- package/dist/shared/{attaform._EqYNPYF.d.ts → attaform.BYbsV2Wv.d.mts} +738 -138
- package/dist/shared/{attaform._EqYNPYF.d.cts → attaform.BYbsV2Wv.d.ts} +738 -138
- package/dist/shared/{attaform.DGuGGNg9.cjs → attaform.C6_zOf8x.cjs} +232 -113
- package/dist/shared/attaform.C6_zOf8x.cjs.map +1 -0
- package/dist/shared/{attaform.CJttVxRj.cjs → attaform.C8LVFVVe.cjs} +2 -2
- package/dist/shared/{attaform.CJttVxRj.cjs.map → attaform.C8LVFVVe.cjs.map} +1 -1
- package/dist/shared/{attaform.BfMxsfmE.mjs → attaform.CIEQgJnM.mjs} +143 -78
- package/dist/shared/attaform.CIEQgJnM.mjs.map +1 -0
- package/dist/shared/attaform.CX9v2M8k.d.ts +65 -0
- package/dist/shared/{attaform.XYOMTvuO.mjs → attaform.Cj0pCNVn.mjs} +232 -113
- package/dist/shared/attaform.Cj0pCNVn.mjs.map +1 -0
- package/dist/shared/{attaform.DLnKT7wk.d.cts → attaform.ClfCi1i2.d.mts} +1 -1
- package/dist/shared/{attaform.CFA6y0KF.mjs → attaform.D6Q5ZP8L.mjs} +60 -20
- package/dist/shared/attaform.D6Q5ZP8L.mjs.map +1 -0
- package/dist/shared/{attaform.Bls_kFR6.d.mts → attaform.D7lomopc.d.cts} +1 -1
- package/dist/shared/{attaform.rIRYSUI1.cjs → attaform.Dee2rU1P.cjs} +145 -77
- package/dist/shared/attaform.Dee2rU1P.cjs.map +1 -0
- package/dist/shared/{attaform.CINUMjPq.mjs → attaform.Vo-Kft0t.mjs} +2 -2
- package/dist/shared/{attaform.CINUMjPq.mjs.map → attaform.Vo-Kft0t.mjs.map} +1 -1
- package/dist/shared/{attaform.jrxE_xZw.mjs → attaform.h1sq3BFu.mjs} +6 -4
- package/dist/shared/attaform.h1sq3BFu.mjs.map +1 -0
- package/dist/zod-v3.cjs +3 -3
- package/dist/zod-v3.d.cts +5 -5
- package/dist/zod-v3.d.mts +5 -5
- package/dist/zod-v3.d.ts +5 -5
- package/dist/zod-v3.mjs +3 -3
- package/dist/zod-v4.cjs +3 -3
- package/dist/zod-v4.d.cts +16 -42
- package/dist/zod-v4.d.mts +16 -42
- package/dist/zod-v4.d.ts +16 -42
- package/dist/zod-v4.mjs +3 -3
- package/dist/zod.cjs +4 -4
- package/dist/zod.cjs.map +1 -1
- package/dist/zod.d.cts +6 -5
- package/dist/zod.d.mts +6 -5
- package/dist/zod.d.ts +6 -5
- package/dist/zod.mjs +5 -5
- package/dist/zod.mjs.map +1 -1
- package/package.json +3 -8
- package/dist/shared/attaform.BfMxsfmE.mjs.map +0 -1
- package/dist/shared/attaform.C9Ph2SMx.cjs.map +0 -1
- package/dist/shared/attaform.CFA6y0KF.mjs.map +0 -1
- package/dist/shared/attaform.DGuGGNg9.cjs.map +0 -1
- package/dist/shared/attaform.DILbdvfo.mjs.map +0 -1
- package/dist/shared/attaform.KrNw10aW.cjs.map +0 -1
- package/dist/shared/attaform.XYOMTvuO.mjs.map +0 -1
- package/dist/shared/attaform.c_NzdRyc.cjs.map +0 -1
- package/dist/shared/attaform.jrxE_xZw.mjs.map +0 -1
- package/dist/shared/attaform.rIRYSUI1.cjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"attaform.KrNw10aW.cjs","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/assert-supported.ts","../../src/runtime/adapters/zod-v3/fingerprint.ts","../../src/runtime/adapters/zod-v3/slim-primitives.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 { fieldMetaStore, getFieldMetaForSchema } 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\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","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`, `z.symbol`, or a\n * recursive `z.lazy(...)` that loops back into itself.\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 */\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}\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","import type { z } from 'zod-v3'\nimport { UnsupportedSchemaError } from './errors'\nimport { isZodSchemaType } from './helpers'\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\nfunction getTypeName(schema: z.ZodTypeAny): string | undefined {\n const def = (schema as { _def?: { typeName?: string } })._def\n return def?.typeName\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) instead of the v4 `kindOf` helper because v3\n * doesn't have an equivalent introspect layer.\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 const shape = schema.shape as Record<string, z.ZodTypeAny>\n for (const [key, sub] of Object.entries(shape)) {\n assertSupportedKinds(sub, [...path, key], lazyGetters)\n }\n return\n }\n\n if (isZodSchemaType(schema, 'ZodArray')) {\n const inner = (schema._def as { type?: z.ZodTypeAny }).type\n if (inner) assertSupportedKinds(inner, [...path, '*'], lazyGetters)\n return\n }\n\n if (isZodSchemaType(schema, 'ZodSet')) {\n const inner = (schema._def as { valueType?: z.ZodTypeAny }).valueType\n if (inner) assertSupportedKinds(inner, [...path, '*'], lazyGetters)\n return\n }\n\n if (isZodSchemaType(schema, 'ZodRecord')) {\n const inner = (schema._def as { valueType?: z.ZodTypeAny }).valueType\n if (inner) assertSupportedKinds(inner, [...path, '*'], lazyGetters)\n return\n }\n\n if (isZodSchemaType(schema, 'ZodTuple')) {\n const items = (schema._def as { items?: z.ZodTypeAny[] }).items ?? []\n items.forEach((item, i) => assertSupportedKinds(item, [...path, String(i)], lazyGetters))\n return\n }\n\n if (isZodSchemaType(schema, 'ZodUnion')) {\n const options = (schema._def as { options?: z.ZodTypeAny[] }).options ?? []\n options.forEach((opt, i) => assertSupportedKinds(opt, [...path, `|${i}`], lazyGetters))\n return\n }\n\n if (isZodSchemaType(schema, 'ZodDiscriminatedUnion')) {\n const options = (schema._def as { options?: z.ZodTypeAny[] }).options ?? []\n options.forEach((opt, i) => assertSupportedKinds(opt, [...path, `|${i}`], lazyGetters))\n return\n }\n\n if (isZodSchemaType(schema, 'ZodIntersection')) {\n const def = schema._def as { left?: z.ZodTypeAny; right?: z.ZodTypeAny }\n if (def.left) assertSupportedKinds(def.left, [...path, 'left'], lazyGetters)\n if (def.right) assertSupportedKinds(def.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 isZodSchemaType(schema, 'ZodBranded')\n ) {\n const inner =\n (schema._def as { innerType?: z.ZodTypeAny }).innerType ??\n (schema._def as { type?: z.ZodTypeAny }).type\n if (inner) assertSupportedKinds(inner, path, lazyGetters)\n return\n }\n\n if (isZodSchemaType(schema, 'ZodEffects')) {\n const inner = schema.innerType()\n assertSupportedKinds(inner, path, lazyGetters)\n return\n }\n\n if (isZodSchemaType(schema, 'ZodPipeline')) {\n const inner = (schema._def as { in?: z.ZodTypeAny }).in\n if (inner) assertSupportedKinds(inner, path, lazyGetters)\n return\n }\n\n if (isZodSchemaType(schema, 'ZodLazy')) {\n const getter = (schema._def as { getter?: () => z.ZodTypeAny }).getter\n if (getter !== undefined && lazyGetters.includes(getter)) {\n throw new UnsupportedSchemaError(\n `[attaform/zod-v3] Recursive z.lazy() at '${labelPath(path)}'`\n )\n }\n const inner = getter?.()\n if (inner !== undefined) {\n assertSupportedKinds(\n inner,\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 readonly values?: readonly 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}\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 case 'ZodNativeEnum': {\n const values = (def.values ?? []) as readonly unknown[]\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 `${kind}:${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 return `ZodObject{${sortedEntries.join(',')}}`\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 const inner = def.schema\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 // 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 'ZodSet':\n case 'ZodSymbol':\n case 'ZodBranded':\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","import type { z } from 'zod-v3'\nimport type { SlimPrimitiveKind } from '../../types/types-api'\nimport { isZodSchemaType } from './helpers'\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 * Mirrors the v4 implementation in\n * `src/runtime/adapters/zod-v4/slim-primitives.ts`.\n */\n\nexport const PERMISSIVE_V3: ReadonlySet<SlimPrimitiveKind> = new Set<SlimPrimitiveKind>([\n 'string',\n 'number',\n 'boolean',\n 'bigint',\n 'date',\n 'null',\n 'undefined',\n 'object',\n 'array',\n 'symbol',\n 'function',\n 'map',\n 'set',\n])\n\nconst MAX_LAZY_DEPTH_V3 = 64\n\nexport function slimPrimitivesV3(schema: z.ZodTypeAny, depth = 0): Set<SlimPrimitiveKind> {\n if (depth > MAX_LAZY_DEPTH_V3) return new Set(PERMISSIVE_V3)\n const def = (\n schema as {\n _def?: {\n typeName?: string\n innerType?: z.ZodTypeAny\n type?: z.ZodTypeAny\n schema?: z.ZodTypeAny\n in?: z.ZodTypeAny\n out?: z.ZodTypeAny\n getter?: () => z.ZodTypeAny\n options?: readonly z.ZodTypeAny[]\n left?: z.ZodTypeAny\n right?: z.ZodTypeAny\n }\n }\n )._def\n const typeName = def?.typeName\n\n if (isZodSchemaType(schema, 'ZodString')) return new Set(['string'])\n if (isZodSchemaType(schema, 'ZodNumber')) return new Set(['number'])\n if (isZodSchemaType(schema, 'ZodBoolean')) return new Set(['boolean'])\n if (isZodSchemaType(schema, 'ZodBigInt')) return new Set(['bigint'])\n if (isZodSchemaType(schema, 'ZodDate')) return new Set(['date'])\n if (isZodSchemaType(schema, 'ZodNull')) return new Set(['null'])\n if (isZodSchemaType(schema, 'ZodUndefined')) return new Set(['undefined'])\n if (typeName === 'ZodVoid') return new Set(['undefined'])\n if (typeName === 'ZodNaN') return new Set(['number'])\n\n if (isZodSchemaType(schema, 'ZodEnum')) {\n const options = (schema as z.ZodEnum<[string, ...string[]]>).options\n const out = new Set<SlimPrimitiveKind>()\n for (const v of options) {\n if (typeof v === 'string') out.add('string')\n else if (typeof v === 'number') out.add('number')\n }\n return out.size === 0 ? new Set(['string']) : out\n }\n if (isZodSchemaType(schema, 'ZodLiteral')) {\n const value = (schema as z.ZodLiteral<unknown>).value\n return new Set([slimKindOfRawV3(value)])\n }\n if (isZodSchemaType(schema, 'ZodObject') || typeName === 'ZodRecord') {\n return new Set(['object'])\n }\n if (isZodSchemaType(schema, 'ZodArray') || typeName === 'ZodTuple') {\n return new Set(['array'])\n }\n if (isZodSchemaType(schema, 'ZodSet')) {\n return new Set(['set'])\n }\n if (isZodSchemaType(schema, 'ZodOptional')) {\n const inner = def?.innerType\n const innerSet =\n inner === undefined ? new Set<SlimPrimitiveKind>() : slimPrimitivesV3(inner, depth + 1)\n innerSet.add('undefined')\n return innerSet\n }\n if (isZodSchemaType(schema, 'ZodNullable')) {\n const inner = def?.innerType\n const innerSet =\n inner === undefined ? new Set<SlimPrimitiveKind>() : slimPrimitivesV3(inner, depth + 1)\n innerSet.add('null')\n return innerSet\n }\n if (\n isZodSchemaType(schema, 'ZodDefault') ||\n isZodSchemaType(schema, 'ZodReadonly') ||\n isZodSchemaType(schema, 'ZodCatch') ||\n isZodSchemaType(schema, 'ZodBranded')\n ) {\n const inner = def?.innerType ?? def?.type\n return inner === undefined ? new Set(PERMISSIVE_V3) : slimPrimitivesV3(inner, depth + 1)\n }\n if (isZodSchemaType(schema, 'ZodEffects')) {\n // ZodEffects wraps refinements/transforms. Use the inner schema\n // type — writes are pre-transform values.\n const inner = def?.schema\n return inner === undefined ? new Set(PERMISSIVE_V3) : slimPrimitivesV3(inner, depth + 1)\n }\n if (isZodSchemaType(schema, 'ZodPipeline')) {\n // Pipeline: input side ('in').\n const inner = def?.in\n return inner === undefined ? new Set(PERMISSIVE_V3) : slimPrimitivesV3(inner, depth + 1)\n }\n if (typeName === 'ZodLazy') {\n const getter = def?.getter\n if (typeof getter !== 'function') return new Set(PERMISSIVE_V3)\n return slimPrimitivesV3(getter(), depth + 1)\n }\n if (isZodSchemaType(schema, 'ZodUnion') || isZodSchemaType(schema, 'ZodDiscriminatedUnion')) {\n const options = def?.options ?? []\n const out = new Set<SlimPrimitiveKind>()\n for (const opt of options) {\n for (const k of slimPrimitivesV3(opt, depth + 1)) out.add(k)\n }\n return out.size === 0 ? new Set(PERMISSIVE_V3) : out\n }\n if (typeName === 'ZodIntersection') {\n const left = def?.left\n const right = def?.right\n const leftSet = left === undefined ? new Set(PERMISSIVE_V3) : slimPrimitivesV3(left, depth + 1)\n const rightSet =\n right === undefined ? new Set(PERMISSIVE_V3) : slimPrimitivesV3(right, depth + 1)\n const out = new Set<SlimPrimitiveKind>()\n for (const k of leftSet) if (rightSet.has(k)) out.add(k)\n return out\n }\n if (typeName === 'ZodNever') return new Set()\n if (typeName === 'ZodAny' || typeName === 'ZodUnknown') return new Set(PERMISSIVE_V3)\n\n return new Set(PERMISSIVE_V3)\n}\n\nfunction slimKindOfRawV3(value: unknown): SlimPrimitiveKind {\n if (value === null) return 'null'\n if (value === undefined) return 'undefined'\n if (Array.isArray(value)) return 'array'\n if (value instanceof Date) return 'date'\n const t = typeof value\n switch (t) {\n case 'string':\n return 'string'\n case 'number':\n return 'number'\n case 'boolean':\n return 'boolean'\n case 'bigint':\n return 'bigint'\n case 'symbol':\n return 'symbol'\n case 'function':\n return 'function'\n case 'undefined':\n return 'undefined'\n case 'object':\n return 'object'\n default:\n return 'object'\n }\n}\n","import { cloneDeep, isFunction, merge, set } 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 FormKey,\n ResolvedFieldMeta,\n SlimPrimitiveKind,\n UnionDiscriminatorContext,\n ValidationError,\n ValidationResponse,\n} from '../../types/types-api'\nimport { getAtPath } from '../../core/path-walker'\nimport { humanize } from '../../core/humanize'\nimport { canonicalizePath, type Path, type PathKey } from '../../core/paths'\nimport { slimKindOf } from '../../core/slim-primitive-gate'\nimport { getFieldMeta } from './field-meta'\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\nimport { __DEV__ } from '../../core/dev'\nimport { AttaformErrorCode } from '../../core/error-codes'\nimport type { TypeWithNullableDynamicKeys, ZodTypeWithInnerType } from './types-zod'\nimport { assertSupportedKinds } from './assert-supported'\nimport { fingerprintZodSchema } from './fingerprint'\nimport { isZodSchemaType } from './helpers'\nimport { slimPrimitivesV3 } from './slim-primitives'\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.infer<FormSchema>,\n GetValueFormType extends TypeWithNullableDynamicKeys<FormSchema>,\n>(zodSchema: FormSchema): (formKey: FormKey) => AbstractSchema<Form, GetValueFormType> {\n function getAbstractSchema(\n _formKey: FormKey,\n _zodSchema: FormSchema,\n _isRootSchema: boolean\n ): AbstractSchema<Form, GetValueFormType> {\n if (_isRootSchema) {\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 [_schema] = stripRootSchema(_zodSchema, {\n stripDefaultValues: true,\n stripNullable: true,\n stripOptional: true,\n stripZodEffects: true,\n stripZodRefinements: true,\n })\n if (!isZodSchemaType(_schema, 'ZodObject')) {\n const name = (_schema as ZodTypeWithInnerType)._def.typeName\n throw new Error(`ZodAdapter: expected ZodObject, got ${name}`)\n }\n }\n // Per-adapter `isLeafAtPath` cache. Lifetime = one adapter instance\n // (one per `useForm()` call). Memoises the slim-primitive walk so\n // the leaf-aware proxy traps don't re-walk the schema on every read.\n const leafCache = new Map<PathKey, boolean>()\n const abstractSchema: AbstractSchema<Form, GetValueFormType> = {\n fingerprint: () => fingerprintZodSchema(_zodSchema),\n getDefaultValues(config) {\n const defaultValuesWithoutConstraints = getDefaultValuesFromZodSchema(\n _zodSchema,\n config.useDefaultSchemaValues,\n _formKey\n )\n\n const slimSchema = getSlimSchema({\n schema: _zodSchema,\n stripConfig: {\n stripZodEffects: true,\n stripDefaultValues: true,\n // `strict: false` strips refinements (so empty defaults\n // pass); strict keeps them so the slim parse below\n // surfaces refinement errors. Async refines are guarded\n // by the try/catch below — they can't be surfaced\n // synchronously regardless.\n stripZodRefinements: (config.strict ?? true) === false,\n },\n })\n\n let rawDefaultValues = defaultValuesWithoutConstraints\n if (!isPrimitive(rawDefaultValues)) {\n rawDefaultValues = merge(defaultValuesWithoutConstraints, config.constraints)\n } else if (constraintsAreSlimValid(slimSchema, config.constraints)) {\n rawDefaultValues = config.constraints\n }\n\n // `safeParse` throws synchronously when the schema contains an\n // async refine (\"Async refinement encountered during synchronous\n // parse\"). Async refines can't be surfaced synchronously\n // regardless — the abstract `getDefaultValues` contract is sync.\n // Degrade gracefully: treat the schema as if it parsed cleanly,\n // so the form mounts. The first user mutation kicks off\n // `validateAtPath`, which uses `safeParseAsync`.\n //\n // Note on parity with the v4 adapter: v4 ships a sync-only\n // retry path (`stripAsyncChecks`) so sync refinement errors\n // on `defaultValues` still seed at construction even when an\n // async sibling poisons the sync entry point. v3 carries the\n // same conceptual bug, but its slim-schema strategy strips\n // ALL `ZodEffects` wrappers at construction time and v3\n // stores refinements in a wrapper whose sync-vs-async\n // character can only be observed at parse time (not via\n // static introspection — the wrapper itself is a regular\n // function regardless of the user's predicate). Lifting v3\n // to v4's seeding contract requires either a probe-and-parse\n // detection scheme (with user-predicate side-effect risk) or\n // a slim-schema redesign that preserves effects in strict\n // mode. Both are larger work items than this fix targets and\n // are tracked for follow-up.\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: _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: _formKey,\n }\n }\n\n let fixedData = {}\n\n // `if (success) return ...` above handles the happy path; below we're\n // 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 PRIMITIVE-TYPE\n // shape. Refinement-level issues (invalid_enum_value, invalid_literal,\n // invalid_string, too_small, too_big, custom, unrecognized_keys)\n // pass THROUGH unchanged — the user's defaultValues are preserved\n // verbatim and the strict-mode validation pass downstream surfaces\n // 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,\n // the issue is primitive/structural → fix. Unifies every issue\n // code under one check.\n {\n for (const issue of error.issues) {\n const schemasAtPath = getNestedZodSchemasAtPath(slimSchema, issue.path)\n // `set` from lodash accepts a Segment[] directly; keeps the\n // literal-dot case (`['user.name']`) from being flattened\n // into two key accesses. Coerce in case a custom check\n // smuggled a Symbol — `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: _formKey,\n discriminator: {\n isDiscriminatorKey: true,\n schema: schemaAtPath,\n useDefaultSchemaValues: false,\n },\n }\n : {\n formKey: _formKey,\n discriminator: {\n isDiscriminatorKey: false,\n schema: undefined,\n useDefaultSchemaValues: false,\n },\n }\n const defaultValue = getDefaultValue(issue.expected, defaultValueContext)\n set(fixedData, path, defaultValue)\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 const [defaultValue, found] = unwrapDefault(schemaAtPath)\n if (found) {\n set(fixedData, path, defaultValue)\n continue\n }\n // Last-ditch: derive a default for the schema kind at this\n // path. Skips if no useful default emerges.\n const ctx: DefaultValueContext = {\n formKey: _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 set(fixedData, path, getDefaultValue(expected, ctx))\n }\n }\n }\n }\n fixedData = merge(rawDefaultValues, fixedData)\n }\n\n // Best-effort re-parse: if the fix-up loop couldn't fully\n // reconcile the data (nested unions whose branches don't match\n // the defaulted shape, bigint edge cases), return the partial\n // data instead of throwing. Matches the v4 adapter's lax\n // semantics — a partially-valid initial state is preferable\n // to a mount-time exception.\n const secondParse = slimSchema.safeParse(fixedData)\n const finalData = secondParse.success ? secondParse.data : fixedData\n\n if ((config.strict ?? true) === false) {\n return {\n data: finalData as Form,\n errors: undefined,\n success: true,\n formKey: _formKey,\n }\n }\n\n // Strict mode: if the second parse succeeded, the fix-up loop\n // reconciled the data and the issues from the first parse no\n // longer apply. Report success. Only surface the first-parse\n // issues when the fix-up couldn't resolve them.\n if (secondParse.success) {\n return {\n data: finalData as Form,\n errors: undefined,\n success: true,\n formKey: _formKey,\n }\n }\n\n return {\n data: finalData as Form,\n errors: zodIssuesToValidationErrors(error.issues, _formKey),\n success: false,\n formKey: _formKey,\n }\n },\n getDefaultAtPath(path) {\n // Empty path → root default. Reuses the same generator used at\n // form construction so refines / wrappers behave consistently.\n if (path.length === 0) {\n return getDefaultValuesFromZodSchema(_zodSchema, true, _formKey)\n }\n const leaf = walkV3ToLeafSchema(_zodSchema, path)\n if (!leaf) return undefined\n // STRUCTURAL default: peel `.optional()` / `.nullable()` at the\n // leaf so partial-object writes through optional sub-schemas\n // (`{ profile: z.object({...}).optional() }`) get the inner\n // shape's defaults filled in. `.default(x)` is preserved so\n // `getDefaultValuesFromZodSchema` returns the explicit default.\n const peeled = unwrapStructuralLeafV3(leaf)\n return getDefaultValuesFromZodSchema(peeled as z.ZodSchema, true, _formKey)\n },\n arrayShapeAtPath(path) {\n if (path.length === 0) return undefined\n const leaf = walkV3ToLeafSchema(_zodSchema, path)\n if (!leaf) return undefined\n // Peel transparent wrappers down to the underlying shape.\n // peelV3Wrappers handles optional / nullable / default /\n // effects / pipeline / readonly / branded. ZodCatch is left\n // by that helper for default-value reasons — peel it here\n // since arrayShapeAtPath only needs the structural kind.\n let peeled = peelV3Wrappers(leaf)\n for (let i = 0; i < MAX_UNWRAP_STEPS; i++) {\n if (!isZodSchemaType(peeled, 'ZodCatch')) break\n const inner = (peeled._def as { innerType?: z.ZodTypeAny }).innerType\n if (!inner) break\n peeled = peelV3Wrappers(inner)\n }\n if (isZodSchemaType(peeled, 'ZodTuple')) {\n const items = (peeled._def as { items?: readonly z.ZodTypeAny[] }).items\n return Array.isArray(items) ? items.length : undefined\n }\n if (isZodSchemaType(peeled, 'ZodArray')) return null\n return undefined\n },\n getSchemasAtPath(path) {\n const [strippedSchema] = stripRootSchema(_zodSchema, {\n stripDefaultValues: true,\n stripNullable: true,\n stripOptional: true,\n stripZodEffects: true,\n })\n const slimSchema = getSlimSchema({\n schema: strippedSchema,\n stripConfig: {\n stripDefaultValues: true,\n stripZodEffects: true,\n },\n })\n const nestedZodSchemas = getNestedZodSchemasAtPath(slimSchema, path)\n\n // Empty list is a valid result for paths the schema doesn't\n // declare — callers (getValue / register / custom introspection)\n // treat `[]` as \"no sub-schema here\". No warning needed.\n if (!nestedZodSchemas.length) return []\n\n return nestedZodSchemas.map((n) =>\n getAbstractSchema(_formKey, n as unknown as FormSchema, false)\n ) as unknown as AbstractSchema<unknown, GetValueFormType>[]\n },\n isRequiredAtPath(path) {\n // Root form is structurally required (it's the parsed object).\n // The required-empty check tracks primitive leaves only, so this\n // branch is academic for the call sites that matter.\n if (path.length === 0) return true\n // walkV3ToLeafSchema descends through structural shapes and peels\n // wrappers between segments, but preserves the leaf's wrapper at\n // the path's terminal position — so `path: ['name']` against\n // `z.object({ name: z.optional(z.string()) })` returns the\n // optional wrapper itself, which is what we need to inspect.\n const leaf = walkV3ToLeafSchema(_zodSchema, path)\n if (!leaf) return false\n return isLeafRequiredV3(leaf)\n },\n getFieldMetaAtPath(path): ResolvedFieldMeta {\n return resolveFieldMetaAtPathV3(_zodSchema, path)\n },\n\n getUnionDiscriminatorAtPath(path): UnionDiscriminatorContext | undefined {\n // Resolve every candidate at `path`; pick the unique one that\n // is (or wraps) a discriminated union. `peelV3Wrappers` peels\n // optional / nullable / default / effects / pipeline / readonly\n // / branded.\n const candidates =\n path.length === 0\n ? [_zodSchema as z.ZodTypeAny]\n : (getNestedZodSchemasAtPath(_zodSchema, path) as z.ZodTypeAny[])\n let matchedUnion: z.ZodTypeAny | undefined\n for (const candidate of candidates) {\n const peeled = peelV3Wrappers(candidate)\n if (!isZodSchemaType(peeled, 'ZodDiscriminatedUnion')) continue\n if (matchedUnion !== undefined && matchedUnion !== peeled) return undefined\n matchedUnion = peeled\n }\n if (matchedUnion === undefined) return undefined\n const discKey = (\n matchedUnion as z.ZodDiscriminatedUnion<string, z.ZodDiscriminatedUnionOption<string>[]>\n )._def.discriminator\n const options = (\n matchedUnion as z.ZodDiscriminatedUnion<string, z.ZodDiscriminatedUnionOption<string>[]>\n )._def.options\n return {\n discriminatorKey: discKey,\n getVariantDefault(value: unknown): unknown {\n for (const opt of options) {\n const litSchema = opt.shape[discKey] as z.ZodTypeAny | undefined\n if (!litSchema) continue\n if (!isZodSchemaType(litSchema, 'ZodLiteral')) continue\n if (litSchema._def.value === value) {\n return getDefaultValuesFromZodSchema(opt as unknown as z.ZodSchema, true, _formKey)\n }\n }\n return undefined\n },\n }\n },\n getSlimPrimitiveTypesAtPath(path) {\n if (path.length === 0) return new Set(['object'])\n const [strippedSchema] = stripRootSchema(_zodSchema, {\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 const resolved = getNestedZodSchemasAtPath(slimSchema, path)\n // Path doesn't resolve in the schema → no kinds accepted.\n // The gate's membership check rejects every kind against an\n // empty set, blocking writes to typo / unknown paths.\n if (resolved.length === 0) return new Set()\n const out = new Set<SlimPrimitiveKind>()\n for (const candidate of resolved) {\n for (const k of slimPrimitivesV3(candidate as z.ZodTypeAny)) out.add(k)\n }\n return out\n },\n isLeafAtPath(path) {\n const cacheKey = canonicalizePath(path).key\n const cached = leafCache.get(cacheKey)\n if (cached !== undefined) return cached\n const prim = abstractSchema.getSlimPrimitiveTypesAtPath(path)\n // Empty set → path doesn't exist in schema → descend permissively\n // (treat as container so schema-named reserved keys at depth 2+\n // don't shadow). Any container kind in the set → descend.\n // Otherwise every kind is a primitive → leaf.\n const isLeaf =\n prim.size > 0 &&\n !prim.has('object') &&\n !prim.has('array') &&\n !prim.has('map') &&\n !prim.has('set')\n leafCache.set(cacheKey, isLeaf)\n return isLeaf\n },\n validateAtPath(data, path, options) {\n // Sync attempt: when `options.sync === true`, try `safeParse`\n // (synchronous). It throws on async refines / pipes /\n // transforms; we catch and fall through to `safeParseAsync`.\n // Without the flag the adapter goes straight to async — the\n // historical contract every non-reshape callsite expects.\n const trySync = options?.sync === true\n if (trySync) {\n try {\n return runSync()\n } catch {\n // Async-only schema. Fall through to the async path.\n }\n }\n return runAsync()\n\n function runSync(): ValidationResponse<Form> {\n if (path === undefined) {\n const { success, data: successData, error } = _zodSchema.safeParse(data)\n return success\n ? { data: successData, success, errors: undefined, formKey: _formKey }\n : {\n success,\n data: undefined,\n errors: zodIssuesToValidationErrors(error.issues, _formKey),\n formKey: _formKey,\n }\n }\n const nestedZodSchemas = nestedSchemasAtPath(path)\n if (!nestedZodSchemas.length) return pathNotFound(path)\n const accumulatedErrors: z.ZodError<unknown>[] = []\n for (const nestedSchema of nestedZodSchemas) {\n const { data: successData, success, error } = nestedSchema.safeParse(data)\n if (!success) {\n accumulatedErrors.push(error)\n continue\n }\n return { data: successData, errors: undefined, success: true, formKey: _formKey }\n }\n return aggregatedFailure(accumulatedErrors)\n }\n\n async function runAsync(): Promise<ValidationResponse<Form>> {\n if (path === undefined) {\n const { success, data: successData, error } = await _zodSchema.safeParseAsync(data)\n return success\n ? { data: successData, success, errors: undefined, formKey: _formKey }\n : {\n success,\n data: undefined,\n errors: zodIssuesToValidationErrors(error.issues, _formKey),\n formKey: _formKey,\n }\n }\n const nestedZodSchemas = nestedSchemasAtPath(path)\n if (!nestedZodSchemas.length) return pathNotFound(path)\n // Sequential await — parallelising would run every branch's\n // async side effects on a value only one branch should see.\n const accumulatedErrors: z.ZodError<unknown>[] = []\n for (const nestedSchema of nestedZodSchemas) {\n const { data: successData, success, error } = await nestedSchema.safeParseAsync(data)\n if (!success) {\n accumulatedErrors.push(error)\n continue\n }\n return { data: successData, errors: undefined, success: true, formKey: _formKey }\n }\n return aggregatedFailure(accumulatedErrors)\n }\n\n function nestedSchemasAtPath(p: Path): z.ZodTypeAny[] {\n const [strippedSchema] = stripRootSchema(_zodSchema, {\n stripDefaultValues: true,\n stripNullable: true,\n stripOptional: true,\n })\n const slimSchema = getSlimSchema({\n schema: strippedSchema,\n stripConfig: { stripDefaultValues: true },\n })\n return getNestedZodSchemasAtPath(slimSchema, p)\n }\n\n function pathNotFound(p: Path): ValidationResponse<Form> {\n return {\n data: undefined,\n errors: NO_SCHEMAS_FOUND_AT_PATH_OF_CONCRETE_SCHEMA([...p], _formKey),\n success: false,\n formKey: _formKey,\n }\n }\n\n function aggregatedFailure(errors: z.ZodError<unknown>[]): ValidationResponse<Form> {\n const allIssues = errors.reduce<z.ZodIssue[]>((acc, e) => [...acc, ...e.issues], [])\n return {\n data: undefined,\n errors: zodIssuesToValidationErrors(allIssues, _formKey),\n success: false,\n formKey: _formKey,\n }\n }\n },\n }\n\n return abstractSchema\n }\n\n return (formKey: FormKey) => getAbstractSchema(formKey, zodSchema, true)\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 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\nconst NO_SCHEMAS_FOUND_AT_PATH_OF_CONCRETE_SCHEMA = (path: (string | number)[], formKey: FormKey) =>\n [\n {\n message: `Programming Error: useForm.validateAtPath failed to find 1 or more schemas corresponding to the path ${path} in the concrete schema. Does the nested schema exist on form with key '${formKey}'?`,\n path,\n formKey,\n code: AttaformErrorCode.PathNotFound,\n },\n ] satisfies ValidationError[]\n\n// Note: this function assumes a sufficiently stripped schema.\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']`.\nfunction getNestedZodSchemasAtPath<Schema extends z.ZodSchema>(\n zodSchema: Schema,\n segments: readonly (string | number)[]\n): z.ZodType<unknown, z.ZodTypeDef, unknown>[] {\n // ZodDiscriminator has multiple schemas in the options array\n // Check all of them for the key, and probe all possibilities\n function getOptionSchemasFromDiscriminatorByArbitraryKey<\n Discriminator extends string,\n Options extends readonly z.ZodDiscriminatedUnionOption<Discriminator>[],\n >(schema: z.ZodDiscriminatedUnion<Discriminator, Options>, key: string) {\n const successfulOptions = []\n const options = schema._def.options\n for (const option of options) {\n if (!(key in option.shape)) continue\n successfulOptions.push(option)\n }\n\n return successfulOptions\n }\n\n let currentSchema: z.ZodSchema | undefined = zodSchema\n\n for (let index = 0; index < segments.length; index++) {\n const key = String(segments[index] ?? '')\n if (isZodSchemaType(currentSchema, 'ZodObject')) {\n const shape = currentSchema._def.shape() as z.ZodRawShape\n // Own-property check: a bare `shape[key]` returns\n // `Object.prototype.toString` etc. for any user lookup of those\n // keys, which then walks as an \"unknown schema\" and reports a\n // permissive slim-primitive set. Filter to OWN keys.\n currentSchema = Object.hasOwn(shape, key) ? shape[key] : undefined\n } else if (isZodSchemaType(currentSchema, 'ZodArray')) {\n currentSchema = currentSchema._def.type\n } else if (isZodSchemaType(currentSchema, 'ZodSet')) {\n // Sets aren't position-indexed; the segment is a synthetic\n // indexer used to query the element type via `[...path, 0]`.\n currentSchema = currentSchema._def.valueType\n } else if (isZodSchemaType(currentSchema, 'ZodRecord')) {\n currentSchema = currentSchema._def.valueType\n } else if (isZodSchemaType(currentSchema, 'ZodDiscriminatedUnion')) {\n const optionalSchemas = getOptionSchemasFromDiscriminatorByArbitraryKey(currentSchema, key)\n\n const remainingSegments = segments.slice(index)\n if (!remainingSegments.length) return optionalSchemas\n\n // recursively check the option schemas\n const foundSchemas: z.ZodType<unknown, z.ZodTypeDef, unknown>[] = []\n for (const optionSchema of optionalSchemas) {\n getNestedZodSchemasAtPath(optionSchema, remainingSegments).forEach((schema) => {\n foundSchemas.push(schema)\n })\n }\n\n return foundSchemas\n } else {\n // Hit a non-container (leaf primitive, wrapper, union — anything\n // we don't recognise as descendable) but more segments remain.\n // The path goes deeper than the schema admits; return empty\n // so callers (slim-gate, validateAtPath, getDefaultAtPath)\n // treat it as unresolvable rather than falsely binding to the\n // last container's leaf. Mirrors v4's path-walker leaf branches.\n return []\n }\n }\n\n if (!currentSchema) return []\n return [currentSchema]\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 = current._def.innerType as z.ZodTypeAny | undefined\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:\n * - `ZodOptional` / `ZodNullable` / `ZodDefault` — `_def.innerType`\n * - `ZodEffects` — `_def.schema` (the structural source)\n * - `ZodPipeline` — `_def.in` (input shape; consumers see structural form)\n * - `ZodReadonly` — `_def.innerType`\n * - `ZodBranded` — `_def.type`\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 ) {\n const inner = (current._def as { innerType?: z.ZodTypeAny }).innerType\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`; v4 parity'd\n // helpers also expose `.innerType()` on some shapes. Prefer the\n // structural source.\n const inner = (current._def as { schema?: z.ZodTypeAny }).schema\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 = (current._def as { in?: z.ZodTypeAny }).in\n if (!inner) return current\n current = inner\n continue\n }\n if (isZodSchemaType(current, 'ZodReadonly')) {\n const inner = (current._def as { innerType?: z.ZodTypeAny }).innerType\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 = (current._def as { type?: z.ZodTypeAny }).type\n if (!inner) return current\n current = inner\n continue\n }\n break\n }\n return current\n}\n\n/**\n * Walk a structured path through a v3 schema, peeling wrappers at each\n * step before descending. Returns the schema at the final segment, or\n * `undefined` if the path doesn't exist in the schema (object key\n * missing, tuple index out of range, leaf with segments remaining).\n *\n * Discriminated and plain unions: takes the first matching option (or\n * first option when no match). Matches `validateAtPath`'s first-success\n * semantic at the path-walker layer.\n */\nfunction walkV3ToLeafSchema(\n schema: z.ZodTypeAny,\n segments: readonly (string | number)[]\n): z.ZodTypeAny | undefined {\n let current: z.ZodTypeAny | undefined = schema\n let i = 0\n // Iteration cap prevents pathological unions / lazy loops from hanging.\n let safetyTicks = 0\n while (\n i < segments.length &&\n current &&\n safetyTicks < segments.length * MAX_UNWRAP_STEPS + MAX_UNWRAP_STEPS\n ) {\n safetyTicks++\n current = peelV3Wrappers(current)\n const key = String(segments[i] ?? '')\n\n if (isZodSchemaType(current, 'ZodObject')) {\n const shape = current._def.shape() as z.ZodRawShape\n current = Object.hasOwn(shape, key) ? shape[key] : undefined\n i++\n continue\n }\n if (isZodSchemaType(current, 'ZodArray')) {\n current = current._def.type as z.ZodTypeAny\n i++\n continue\n }\n if (isZodSchemaType(current, 'ZodRecord')) {\n current = current._def.valueType as z.ZodTypeAny\n i++\n continue\n }\n if (isZodSchemaType(current, 'ZodTuple')) {\n const idx = Number(key)\n if (!Number.isInteger(idx) || idx < 0) return undefined\n const items = current._def.items as readonly z.ZodTypeAny[]\n const item = items[idx]\n if (!item) return undefined\n current = item\n i++\n continue\n }\n if (isZodSchemaType(current, 'ZodDiscriminatedUnion')) {\n const options = current._def.options as readonly z.AnyZodObject[]\n const matching = options.filter((o) => key in o.shape)\n const candidates = matching.length > 0 ? matching : options\n const first = candidates[0]\n if (!first) return undefined\n current = first\n // Don't advance i — re-process this segment within the option.\n continue\n }\n if (isZodSchemaType(current, 'ZodUnion')) {\n const options = current._def.options as readonly z.ZodTypeAny[]\n const first = options[0]\n if (!first) return undefined\n current = first\n // Don't advance i — re-process this segment within the option.\n continue\n }\n // Leaf type with segments remaining — can't descend.\n return undefined\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()` inside a union are how authors express\n // \"this field can be absent\" without a wrapper.\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 ) {\n return false\n }\n // Transparent wrappers — peel and re-check.\n if (isZodSchemaType(schema, 'ZodReadonly') || isZodSchemaType(schema, 'ZodBranded')) {\n const inner = (schema._def as { innerType?: z.ZodTypeAny; type?: z.ZodTypeAny }).innerType\n const branded = (schema._def as { type?: z.ZodTypeAny }).type\n const next = inner ?? branded\n return next === undefined ? true : isLeafRequiredV3(next, depth + 1)\n }\n if (isZodSchemaType(schema, 'ZodPipeline')) {\n // Use the input side: blank is a write-time concern.\n const inner = (schema._def as { in?: z.ZodTypeAny }).in\n return inner === undefined ? true : isLeafRequiredV3(inner, depth + 1)\n }\n if (isZodSchemaType(schema, 'ZodEffects')) {\n const inner = (schema._def as { schema?: z.ZodTypeAny }).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 = (schema._def as { options?: readonly z.ZodTypeAny[] }).options ?? []\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 def = schema._def as { left?: z.ZodTypeAny; right?: z.ZodTypeAny }\n const leftReq = def.left === undefined ? true : isLeafRequiredV3(def.left, depth + 1)\n const rightReq = def.right === undefined ? true : isLeafRequiredV3(def.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): z.ZodDiscriminatedUnion<string, readonly z.ZodDiscriminatedUnionOption<string>[]> | undefined {\n let currentSchema: z.ZodTypeAny = schema\n\n // Bounded by MAX_UNWRAP_STEPS so a pathological lazy self-reference\n // can't hang the lookup. `innerType` on ZodDefault/Optional/Nullable\n // is a ZodType (non-nullable); the cap is a soundness guard.\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, and ZodNullable\n if (\n isZodSchemaType(currentSchema, 'ZodDefault') ||\n isZodSchemaType(currentSchema, 'ZodOptional') ||\n isZodSchemaType(currentSchema, 'ZodNullable')\n ) {\n currentSchema = (currentSchema._def as { innerType: z.ZodTypeAny }).innerType\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 = (currentSchema._def as { innerType?: z.ZodTypeAny }).innerType\n if (!inner) return undefined\n currentSchema = inner\n continue\n }\n if (isZodSchemaType(currentSchema, 'ZodBranded')) {\n const inner = (currentSchema._def as { type?: z.ZodTypeAny }).type\n if (!inner) return undefined\n currentSchema = inner\n continue\n }\n if (isZodSchemaType(currentSchema, 'ZodPipeline')) {\n const inner = (currentSchema._def as { in?: z.ZodTypeAny }).in\n if (!inner) return undefined\n currentSchema = inner\n continue\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 if (expected === 'map') return new Map()\n if (expected === 'promise') return new Promise((res) => res(undefined))\n if (expected === 'symbol') return Symbol()\n if (expected === 'function') return () => undefined\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 unwrapDefault(schema: z.ZodTypeAny): [unknown, boolean] {\n // Iterative peel: a chain of `.refine()` calls produces a deep\n // ZodEffects(ZodEffects(...)) tree, and stack-based recursion runs\n // out before MAX_UNWRAP_STEPS does. The bound also acts as a\n // self-reference guard for pathological lazy loops.\n let current: z.ZodTypeAny = schema\n for (let i = 0; i < MAX_UNWRAP_STEPS; i++) {\n if (isZodSchemaType(current, 'ZodDefault')) {\n const defaultValue = (current._def as { defaultValue: () => unknown }).defaultValue()\n return [defaultValue, true]\n }\n if (isZodSchemaType(current, 'ZodCatch')) {\n // ZodCatch supplies a fallback value when its inner schema rejects\n // parse. For default extraction the caught fallback IS the\n // construction-time default — it's the consumer's explicit\n // statement of \"this is what to render when nothing else fits.\"\n // Preserves the value across submit failures, hydration, and\n // history (a `.catch()` should resurface the same fallback).\n const catchValue = (current._def as { catchValue?: (ctx: unknown) => unknown }).catchValue\n if (typeof catchValue === 'function') {\n return [catchValue({ error: null, input: undefined }), true]\n }\n // Defensive: fall through to the inner schema if the field is\n // missing on this v3 minor version.\n const inner = (current._def as { innerType?: z.ZodTypeAny }).innerType\n if (!inner) break\n current = inner\n continue\n }\n if (isZodSchemaType(current, 'ZodNullable') || isZodSchemaType(current, 'ZodOptional')) {\n current = (current._def as { innerType: z.ZodTypeAny }).innerType\n continue\n }\n if (isZodSchemaType(current, 'ZodReadonly')) {\n const inner = (current._def as { innerType?: z.ZodTypeAny }).innerType\n if (!inner) break\n current = inner\n continue\n }\n if (isZodSchemaType(current, 'ZodBranded')) {\n const inner = (current._def as { type?: z.ZodTypeAny }).type\n if (!inner) break\n current = inner\n continue\n }\n if (isZodSchemaType(current, 'ZodPipeline')) {\n const inner = (current._def as { in?: z.ZodTypeAny }).in\n if (!inner) break\n current = inner\n continue\n }\n if (isZodSchemaType(current, 'ZodEffects')) {\n // ZodEffects's structural source lives at `_def.effect` when the\n // effect itself was constructed from a ZodType (older v3 shape),\n // otherwise at `.innerType()` (newer v3). Probe both — whichever\n // resolves to a ZodTypeAny is the schema we keep unwrapping.\n const effect = (current._def as { effect?: unknown }).effect\n if (effect !== null && typeof effect === 'object' && '_def' in effect) {\n current = effect as z.ZodTypeAny\n continue\n }\n const inner = (current as { innerType?: () => z.ZodTypeAny }).innerType?.()\n if (inner) {\n current = inner\n continue\n }\n break\n }\n break\n }\n return [null, false]\n}\n\nfunction getDefaultValuesFromZodSchema<\n FormSchema extends z.ZodSchema,\n Form extends z.infer<FormSchema>,\n>(formSchema: FormSchema, useDefaultSchemaValues: boolean, formKey: FormKey): Form {\n // Recursive function to generate the initial value based on schema type\n function generateValue(schema: z.ZodTypeAny): unknown {\n // Recursive helper to unwrap layers and detect ZodDefault\n // Check if the schema (or any wrapped version) has a ZodDefault\n if (useDefaultSchemaValues) {\n const [defaultValue, foundDefaultValue] = unwrapDefault(schema)\n if (foundDefaultValue) {\n return defaultValue // Prioritize the 1st default value (if it exists)\n }\n }\n\n // Handle nullable\n if (isZodSchemaType(schema, 'ZodNullable')) {\n return null // No default, so return null\n }\n\n // Handle objects\n if (isZodSchemaType(schema, 'ZodObject')) {\n const shape = schema.shape\n return Object.keys(shape).reduce<Record<string, unknown>>((acc, key) => {\n acc[key] = generateValue(shape[key])\n return acc\n }, {})\n }\n\n // Handle arrays\n if (isZodSchemaType(schema, 'ZodArray')) {\n return []\n }\n\n // Handle strings\n if (isZodSchemaType(schema, 'ZodString')) {\n return ''\n }\n\n // Handle numbers\n if (isZodSchemaType(schema, 'ZodNumber')) {\n return 0\n }\n\n // Handle bigints — must be a bigint literal; z.bigint() rejects\n // number 0. Without this branch we fall through to the warn-path\n // and the fix-up loop has to reconcile it via getDefaultValue.\n if (isZodSchemaType(schema, 'ZodBigInt')) {\n return 0n\n }\n\n // Handle dates — matches v4's `new Date(0)` so SSR round-trip is\n // deterministic across server + client.\n if (isZodSchemaType(schema, 'ZodDate')) {\n return new Date(0)\n }\n\n // Handle booleans\n if (isZodSchemaType(schema, 'ZodBoolean')) {\n return false\n }\n\n // Handle enums\n if (isZodSchemaType(schema, 'ZodEnum')) {\n return schema.options[0]\n }\n\n // Handle null\n if (isZodSchemaType(schema, 'ZodNull')) {\n return null\n }\n\n // Handle undefined\n if (isZodSchemaType(schema, 'ZodUndefined')) {\n return undefined\n }\n\n // Handle literals\n if (isZodSchemaType(schema, 'ZodLiteral')) {\n return schema._def.value\n }\n\n // Handle optional\n if (isZodSchemaType(schema, 'ZodOptional')) {\n return undefined\n }\n\n // Handle unions (use the first option as the default)\n if (isZodSchemaType(schema, 'ZodUnion')) {\n return generateValue(schema._def.options[0])\n }\n\n // Handle tuples\n if (isZodSchemaType(schema, 'ZodTuple')) {\n return schema._def.items.map((item: z.ZodTypeAny) => generateValue(item))\n }\n\n // Handle records\n if (isZodSchemaType(schema, 'ZodRecord')) {\n return {}\n }\n\n // Finding ZodDefault here means we should suppress defaults\n // Can only happen if useDefaultSchemaValues is false\n if (isZodSchemaType(schema, 'ZodDefault')) {\n return generateValue(schema._def.innerType)\n }\n\n if (isZodSchemaType(schema, 'ZodEffects')) {\n return generateValue(schema.innerType())\n }\n\n if (isZodSchemaType(schema, 'ZodDiscriminatedUnion')) {\n const discriminantKey = undefined // select default option schema\n const discriminantSchema = getSchemaByDiscriminatorKey(schema, discriminantKey)\n return generateValue(discriminantSchema as z.ZodTypeAny)\n }\n\n // ZodCatch — even when default extraction is suppressed\n // (`useDefaultSchemaValues=false`), the consumer-supplied fallback\n // is the most reasonable construction-time value to surface; the\n // alternative is the inner schema's bare default, which the\n // .catch() author specifically chose to override.\n if (isZodSchemaType(schema, 'ZodCatch')) {\n const catchValue = (schema._def as { catchValue?: (ctx: unknown) => unknown }).catchValue\n if (typeof catchValue === 'function') {\n return catchValue({ error: null, input: undefined })\n }\n const inner = (schema._def as { innerType?: z.ZodTypeAny }).innerType\n if (inner) return generateValue(inner)\n }\n\n // Newer transparent wrappers (v3.23+ for Pipeline/Readonly; Branded\n // pre-existed). Each wraps a single inner schema with no structural\n // impact at value-construction time.\n if (isZodSchemaType(schema, 'ZodReadonly')) {\n const inner = (schema._def as { innerType?: z.ZodTypeAny }).innerType\n if (inner) return generateValue(inner)\n }\n if (isZodSchemaType(schema, 'ZodBranded')) {\n const inner = (schema._def as { type?: z.ZodTypeAny }).type\n if (inner) return generateValue(inner)\n }\n if (isZodSchemaType(schema, 'ZodPipeline')) {\n // Pipeline transforms in -> out; pre-transform default is the\n // input schema's natural default.\n const inner = (schema._def as { in?: z.ZodTypeAny }).in\n if (inner) return generateValue(inner)\n }\n\n // ZodLazy — recursive schemas (comment trees, file system shapes).\n // Resolve the getter once; the inner schema's own ZodOptional /\n // base-case branch terminates the recursion.\n if (isZodSchemaType(schema, 'ZodLazy')) {\n const inner = (schema._def as { getter?: () => z.ZodTypeAny }).getter?.()\n if (inner) return generateValue(inner)\n }\n\n // ZodIntersection — `z.intersection(A, B)` must satisfy both sides\n // at parse time, so the merged shape carries both halves' defaults.\n // `merge` mutates its first arg, so seed an empty record. Leaves on\n // either side replace; nested records merge recursively.\n if (isZodSchemaType(schema, 'ZodIntersection')) {\n const def = schema._def as { left?: z.ZodTypeAny; right?: z.ZodTypeAny }\n const left = def.left ? generateValue(def.left) : undefined\n const right = def.right ? generateValue(def.right) : undefined\n return merge({}, left, right)\n }\n\n // ZodNativeEnum — TS-enum-backed selects. Numeric enums get\n // reverse-mapped (`enum E { A }` → `{ A: 0, '0': 'A' }`); the valid\n // runtime members are the keys whose VALUE'S key isn't itself a\n // number. String enums have no reverse mapping, so every key is\n // valid. Pick the first valid value as the default.\n if (isZodSchemaType(schema, 'ZodNativeEnum')) {\n const values = (schema._def as { values?: Record<string, unknown> }).values\n if (values) {\n const lookup = values as Record<string, unknown>\n const validKeys = Object.keys(lookup).filter(\n (k) => typeof lookup[lookup[k] as string] !== 'number'\n )\n if (validKeys.length > 0) {\n const first = validKeys[0]\n if (first !== undefined) return lookup[first]\n }\n }\n }\n\n // ZodSet — empty Set; populated entries would have to reach into\n // the element schema's defaults, but a Set's only meaningful\n // empty state is `new Set()`.\n if (isZodSchemaType(schema, 'ZodSet')) {\n return new Set()\n }\n\n console.warn(\n `[attaform] zod-v3 adapter: unsupported schema kind ` +\n `'${schema.constructor.name}' 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\n return generateValue(formSchema) as unknown 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 = unionSchema._def.options\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 return unionSchema._def.options.find((schema: z.ZodObject<z.ZodRawShape>) => {\n const discriminator = schema.shape[unionSchema._def.discriminator]\n return discriminator?._def.value === 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 hasChecks(schema: z.ZodTypeAny): boolean {\n if (!('_def' in schema)) return false\n\n const schemaDef = schema._def\n if (!('checks' in schemaDef)) return false\n\n const checks = schemaDef['checks'] as unknown\n\n if (!Array.isArray(checks)) return false\n\n return checks.length > 0\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') && _schema._def.checks.length > 0) {\n // Rebuild a ZodString without checks\n return z.string()\n }\n\n if (isZodSchemaType(_schema, 'ZodNumber') && _schema._def.checks.length > 0) {\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 return z.array(_stripRefinements(_schema._def.type, depth + 1))\n }\n\n if (isZodSchemaType(_schema, 'ZodObject')) {\n // Recursively process each property of the object\n const shape = _schema.shape\n const strippedShape = Object.fromEntries(\n Object.entries(shape).map(([key, value]) => [\n key,\n _stripRefinements(value as z.ZodTypeAny, 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 return _stripRefinements(_schema.innerType(), depth + 1)\n }\n\n if (isZodSchemaType(_schema, 'ZodOptional')) {\n // Recursively strip optional's inner type\n return z.optional(_stripRefinements(_schema.unwrap(), depth + 1))\n }\n\n if (isZodSchemaType(_schema, 'ZodNullable')) {\n // Recursively strip nullable's inner type\n return z.nullable(_stripRefinements(_schema.unwrap(), 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 = (_schema._def as { innerType?: z.ZodTypeAny }).innerType\n if (!inner) return _schema\n return _stripRefinements(inner, depth + 1)\n }\n\n if (isZodSchemaType(_schema, 'ZodBranded')) {\n const inner = (_schema._def as { type?: z.ZodTypeAny }).type\n if (!inner) return _schema\n return _stripRefinements(inner, depth + 1)\n }\n\n if (isZodSchemaType(_schema, 'ZodPipeline')) {\n const inner = (_schema._def as { in?: z.ZodTypeAny }).in\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 = (_schema._def as { valueType?: z.ZodTypeAny }).valueType\n if (!valueType) return _schema\n return z.set(_stripRefinements(valueType, depth + 1))\n }\n\n if (isZodSchemaType(_schema, 'ZodTuple')) {\n const items = (_schema._def as { items?: z.ZodTypeAny[] }).items\n if (!items) 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 def = _schema._def as { keyType?: z.ZodTypeAny; valueType?: z.ZodTypeAny }\n if (!def.valueType) return _schema\n const value = _stripRefinements(def.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 if (def.keyType) {\n return z.record(def.keyType as z.ZodString, value)\n }\n return z.record(value)\n }\n\n if (isZodSchemaType(_schema, 'ZodUnion')) {\n const options = (_schema._def as { options?: z.ZodTypeAny[] }).options\n if (!options) 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 def = _schema._def as {\n discriminator?: string\n options?: z.ZodObject<z.ZodRawShape>[]\n }\n if (def.discriminator === undefined || !def.options) return _schema\n const stripped = def.options.map(\n (o) => _stripRefinements(o, depth + 1) as z.ZodObject<z.ZodRawShape>\n )\n return z.discriminatedUnion(\n def.discriminator,\n stripped as [z.ZodObject<z.ZodRawShape>, ...z.ZodObject<z.ZodRawShape>[]]\n )\n }\n\n if (isZodSchemaType(_schema, 'ZodIntersection')) {\n const def = _schema._def as { left?: z.ZodTypeAny; right?: z.ZodTypeAny }\n if (!def.left || !def.right) return _schema\n return z.intersection(\n _stripRefinements(def.left, depth + 1),\n _stripRefinements(def.right, depth + 1)\n )\n }\n\n if (isZodSchemaType(_schema, 'ZodLazy')) {\n const getter = (_schema._def as { getter?: () => z.ZodTypeAny }).getter\n if (!getter) 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(getter(), 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 return recursion(_schema.innerType(), true)\n }\n\n if (\n getStripInstruction(stripConfig.stripDefaultValues, _schema) &&\n isZodSchemaType(_schema, 'ZodDefault')\n ) {\n return recursion(_schema._def.innerType, 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\n for (const key in _schema.shape) {\n const value = _schema.shape[key]\n newShape[key] = _getSlimSchema(value)\n }\n\n return z.object(newShape)\n }\n\n if (isZodSchemaType(_schema, 'ZodArray')) {\n return z.array(_getSlimSchema(_schema.element))\n }\n\n if (isZodSchemaType(_schema, 'ZodRecord')) {\n const key = _getSlimSchema(_schema._def.keyType)\n const value = _getSlimSchema(_schema._def.valueType)\n return z.record(key, 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\n for (const option of _schema._def.options) {\n const slimmedSchema = _getSlimSchema(option)\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 _schema._def.discriminator,\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 return _getSlimSchema(_schema.innerType())\n }\n\n if (\n getStripInstruction(config.stripConfig.stripNullable, _schema) &&\n isZodSchemaType(_schema, 'ZodNullable')\n ) {\n return _getSlimSchema(_schema._def.innerType)\n }\n\n if (\n getStripInstruction(config.stripConfig.stripOptional, _schema) &&\n isZodSchemaType(_schema, 'ZodOptional')\n ) {\n return _getSlimSchema(_schema._def.innerType)\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 return _getSlimSchema(_schema._def.innerType)\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 * Walks via `walkV3ToLeafSchema` (descends through wrappers\n * transparently) then peels the terminal wrapper via `peelV3Wrappers`\n * — symmetric with the v4 walker's terminal behavior.\n */\nfunction resolveFieldMetaAtPathV3(rootSchema: z.ZodSchema, path: Path): ResolvedFieldMeta {\n const lastSegment = path.length === 0 ? '' : (path[path.length - 1] as string | number)\n const target =\n path.length === 0 ? (rootSchema as z.ZodTypeAny) : walkV3ToLeafSchema(rootSchema, path)\n if (target === undefined) {\n return {\n label: humanize(lastSegment),\n description: undefined,\n placeholder: undefined,\n meta: Object.freeze({}),\n }\n }\n // Two-stage lookup mirrors the v4 adapter: try the schema returned\n // by the walker (the terminal wrapper at leaf paths), then fall\n // back to the peeled inner so registrations placed before wrapping\n // still resolve. Whichever style the schema author picked, reads\n // succeed.\n const peeled = peelV3Wrappers(target)\n const payload = getFieldMeta(target) ?? (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","import type { z } from 'zod-v3'\nimport { zodAdapter } from '../adapters/zod-v3'\nimport { InvalidUseFormConfigError } from '../core/errors'\nimport type { AbstractSchema, UseFormReturnType, UseFormConfiguration } from '../types/types-api'\nimport type { DeepPartial, DefaultValuesShape, GenericForm } from '../types/types-core'\nimport type { TypeWithNullableDynamicKeys } from '../adapters/zod-v3/types-zod'\nimport type {\n UnwrapZodObject,\n UseFormConfigurationWithZod,\n} from '../adapters/zod-v3/types-zod-adapter'\nimport { useAbstractForm } from './use-abstract-form'\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<Form extends GenericForm, GetValueFormType extends GenericForm = Form>(\n configuration: UseFormConfiguration<\n Form,\n GetValueFormType,\n AbstractSchema<Form, GetValueFormType>,\n DeepPartial<DefaultValuesShape<Form>>\n >\n): UseFormReturnType<Form, GetValueFormType>\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<\n Schema extends z.ZodObject<z.ZodRawShape>,\n GetValueFormType extends GenericForm = TypeWithNullableDynamicKeys<Schema>,\n>(\n configuration: UseFormConfigurationWithZod<\n Schema,\n DeepPartial<DefaultValuesShape<z.infer<UnwrapZodObject<Schema>>>>\n >\n): UseFormReturnType<z.infer<UnwrapZodObject<Schema>>, GetValueFormType>\nexport function useForm<\n Schema extends z.ZodSchema<unknown>,\n Form extends GenericForm = z.infer<UnwrapZodObject<Schema>>,\n GetValueFormType extends GenericForm = Form,\n>(\n configuration:\n | UseFormConfiguration<\n Form,\n GetValueFormType,\n AbstractSchema<Form, GetValueFormType>,\n DeepPartial<DefaultValuesShape<Form>>\n >\n | UseFormConfigurationWithZod<\n Schema,\n DeepPartial<DefaultValuesShape<z.infer<UnwrapZodObject<Schema>>>>\n >\n): UseFormReturnType<Form, GetValueFormType> {\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)\n ? zodAdapter<Schema, Form, TypeWithNullableDynamicKeys<typeof schema>>(schema)\n : schema\n\n // Spread the full configuration so opt-in options (`onInvalidSubmit`,\n // `validateOn`, `debounceMs`, `persist`, `history`) reach useAbstractForm.\n // The explicit overrides below narrow schema / defaultValues to the\n // shapes useAbstractForm expects. `key` and `strict` are\n // intentionally NOT re-listed — the spread carries them through, and\n // writing `strict: configuration.strict ?? true` here would\n // short-circuit the registry's app-level defaults\n // (`createAttaform({ defaults: { strict: false } })`).\n // The library-level fallback to `true` lives downstream in\n // `createFormStore`, where it can apply *after* the registry merge.\n return useAbstractForm<Form, GetValueFormType>({\n ...(configuration as UseFormConfiguration<\n Form,\n GetValueFormType,\n AbstractSchema<Form, GetValueFormType>,\n DeepPartial<DefaultValuesShape<Form>>\n >),\n schema: abstractSchema,\n defaultValues: configuration.defaultValues as DeepPartial<DefaultValuesShape<Form>>,\n })\n}\n"],"names":["fieldMetaStore","getFieldMetaForSchema","AttaformError","merge","getAtPath","slimKindOf","defaultValue","set","canonicalizePath","__DEV__","AttaformErrorCode","z","isFunction","cloneDeep","humanize","InvalidUseFormConfigError","useAbstractForm"],"mappings":"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"}
|