@traversable/schema
    Preparing search index...

    Function deepNoDefaults

    • Recursively removes any z._default z.default nodes.

      Unless you opt out, if the node is an object property, the property will be wrapped with z.optional z.optional.

      To opt out, pass { replaceWithOptional: false } as the second argument to zx.deepNoDefaults.

      Type Parameters

      • T extends ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>

      Parameters

      Returns ZodType<output<T>>

      import * as vi from "vitest"
      import { zx } from "@traversable/zod"

      // Using `zx.deepNoDefaults.writeable` here to make it easier to visualize `zx.deepNoDefaults`'s behavior:
      vi.expect.soft(zx.deepNoDefaults.writeable(
      z.object({
      a: z.number().default(0),
      b: z.boolean().default(false).optional(),
      c: z.boolean().optional().default(false),
      d: z.union([z.string().default(''), z.number().default(0)]),
      e: z.array(
      z.object({
      f: z.number().default(0),
      g: z.boolean().default(false).optional(),
      h: z.boolean().optional().default(false),
      i: z.union([z.string().default(''), z.number().default(0)]),
      }).default({
      f: 0,
      g: false,
      h: false,
      i: '',
      })
      ).default([])
      })
      )).toMatchInlineSnapshot
      (`
      "z.object({
      a: z.number().optional(),
      b: z.boolean().optional(),
      c: z.boolean().optional(),
      d: z.union([z.string(), z.number()]).optional(),
      e: z
      .array(
      z.object({
      f: z.number().optional(),
      g: z.boolean().optional(),
      h: z.boolean().optional(),
      i: z.union([z.string(), z.number()]).optional(),
      }),
      )
      .optional(),
      })
      "
      `)