@traversable/schema
    Preparing search index...

    Type Alias defaultValue<T, TypeMap, M>

    defaultValue: unknown extends T
        ? 0 extends T & 1 ? M["any"] : M["unknown"]
        : [T] extends [never]
            ? M["never"]
            : T extends Primitive
                ? MatchPrimitive<T, M>
                : T extends Set<any>
                    ? Set<
                        defaultValue<ReturnType<(...) & (...)>["value"] & {}, TypeMap, M>,
                    >
                    : T extends Map<any, any>
                        ? Map<
                            defaultValue<({} & (...)[(...)])[0], TypeMap, M>,
                            defaultValue<({} & (...)[(...)])[1], TypeMap, M>,
                        >
                        : { [K in keyof T]: defaultValue<T[K], TypeMap, M> }

    Derive a default value from a Valibot schema.

    By default, vx.defaultValue returns undefined for primitive values.

    If you'd like to change that behavior, you can pass a set of fallbacks via Options Options['fallbacks']

    Unions are special cases -- by default, vx.defaultValue simply picks the first union, and generates a default value for it. You can configure this behavior via Options Options['unionTreatment'].

    Type Parameters

    • T
    • TypeMap = DefaultTypeMap
    • M extends MergeTypeMap<TypeMap> = MergeTypeMap<TypeMap>
    import * as vi from 'vitest'
    import * as v from 'valibot'
    import { vx } from '@traversable/valibot'

    const MySchema = v.object({
    abc: v.tuple([
    v.literal(123),
    v.set(
    v.array(v.number())
    )
    ]),
    def: v.string(),
    ghi: v.number(),
    jkl: v.boolean(),
    mno: v.optional(v.object({
    pqr: v.record(
    v.enum(['P', 'Q', 'R']),
    v.number()
    ),
    }))
    })

    vi.assert.deepEqual(
    vx.defaultValue(MySchema),
    {
    abc: [123, new Set([[]])],
    def: undefined,
    ghi: undefined,
    jkl: undefined,
    mno: {
    pqr: {
    P: undefined,
    Q: undefined,
    R: undefined
    }
    }
    }
    )

    vi.assert.deepEqual(
    vx.defaultValue(
    MySchema,
    {
    fallbacks: {
    number: 0,
    boolean: false,
    string: ''
    }
    }
    ),
    {
    abc: [123, new Set([[]])],
    def: '',
    ghi: 0,
    jkl: false,
    mno: {
    pqr: { P: 0, Q: 0, R: 0 }
    }
    }
    )