@traversable/schema
    Preparing search index...

    Variable SeedGeneratorConst

    SeedGenerator: <
        Options extends
            Options<
                {
                    any: [10];
                    array: [1000, unknown, Bounds_array];
                    bigint: [150, Bounds_bigint];
                    boolean: [15];
                    date: [20];
                    integer: [100, Bounds_int];
                    intersect: [
                        6000,
                        [[7500, [string, unknown][]], [7500, [string, unknown][]]],
                    ];
                    literal: [550, string | number | boolean];
                    never: [35];
                    null: [40];
                    number: [200, Bounds_number];
                    object: [7500, [string, unknown][]];
                    optional: [2500, unknown];
                    record: [7000, unknown];
                    string: [250, Bounds_string];
                    symbol: [45];
                    tuple: [8000, unknown[]];
                    undefined: [50];
                    union: [8500, unknown[]];
                    unknown: [55];
                    void: [60];
                },
            >,
    >(
        options?: Options,
        overrides?: Partial<
            Gen.Base<
                {
                    any: [10];
                    array: [1000, unknown, Bounds_array];
                    bigint: [150, Bounds_bigint];
                    boolean: [15];
                    date: [20];
                    integer: [100, Bounds_int];
                    intersect: [
                        6000,
                        [[7500, [string, unknown][]], [7500, [string, unknown][]]],
                    ];
                    literal: [550, string | number | boolean];
                    never: [35];
                    null: [40];
                    number: [200, Bounds_number];
                    object: [7500, [string, unknown][]];
                    optional: [2500, unknown];
                    record: [7000, unknown];
                    string: [250, Bounds_string];
                    symbol: [45];
                    tuple: [8000, unknown[]];
                    undefined: [50];
                    union: [8500, unknown[]];
                    unknown: [55];
                    void: [60];
                },
                byTypeName,
            >,
        >,
    ) => Gen.Builder<
        (
            [
                Options["root"] extends | "string"
                | "number"
                | "bigint"
                | "boolean"
                | "symbol"
                | "undefined"
                | "object"
                | "any"
                | "date"
                | "never"
                | "null"
                | "unknown"
                | "void"
                | "integer"
                | "literal"
                | "array"
                | "optional"
                | "intersect"
                | "record"
                | "tuple"
                | "union"
                    ? {
                        any: [10];
                        array: [1000, unknown, Bounds_array];
                        bigint: [150, Bounds_bigint];
                        boolean: [15];
                        date: [20];
                        integer: [100, Bounds_int];
                        intersect: [6000, [[(...), (...)], [(...), (...)]]];
                        literal: [550, string | number | boolean];
                        never: [35];
                        null: [40];
                        number: [200, Bounds_number];
                        object: [7500, [(...), (...)][]];
                        optional: [2500, unknown];
                        record: [7000, unknown];
                        string: [250, Bounds_string];
                        symbol: [45];
                        tuple: [8000, unknown[]];
                        undefined: [50];
                        union: [8500, unknown[]];
                        unknown: [55];
                        void: [60];
                    }[any[any]]
                    : never,
            ] extends [never]
                ? unknown
                : {
                    root: Arbitrary<
                        Options["root"] extends | "string"
                        | "number"
                        | "bigint"
                        | "boolean"
                        | "symbol"
                        | "undefined"
                        | "object"
                        | "any"
                        | "date"
                        | "never"
                        | "null"
                        | "unknown"
                        | "void"
                        | "integer"
                        | "literal"
                        | "array"
                        | "optional"
                        | "intersect"
                        | "record"
                        | "tuple"
                        | "union"
                            ? {
                                any: [10];
                                array: [1000, unknown, Bounds_array];
                                bigint: [150, Bounds_bigint];
                                boolean: [15];
                                date: [20];
                                integer: [100, Bounds_int];
                                intersect: [6000, [(...), (...)]];
                                literal: [550, (...) | (...) | (...) | (...)];
                                never: [35];
                                null: [40];
                                number: [200, Bounds_number];
                                object: [7500, (...)[]];
                                optional: [2500, unknown];
                                record: [7000, unknown];
                                string: [250, Bounds_string];
                                symbol: [45];
                                tuple: [8000, (...)[]];
                                undefined: [50];
                                union: [8500, (...)[]];
                                unknown: [55];
                                void: [60];
                            }[any[any]]
                            : never,
                    >;
                }
        ) & {
            [K in | "string"
            | "number"
            | "bigint"
            | "boolean"
            | "symbol"
            | "undefined"
            | "object"
            | "any"
            | "date"
            | "never"
            | "null"
            | "unknown"
            | "void"
            | "integer"
            | "literal"
            | "array"
            | "optional"
            | "intersect"
            | "record"
            | "tuple"
            | "union"]: Arbitrary<
                {
                    any: [10];
                    array: [1000, unknown, Bounds_array];
                    bigint: [150, Bounds_bigint];
                    boolean: [15];
                    date: [20];
                    integer: [100, Bounds_int];
                    intersect: [6000, [[7500, (...)[]], [7500, (...)[]]]];
                    literal: [550, string | number | boolean];
                    never: [35];
                    null: [40];
                    number: [200, Bounds_number];
                    object: [7500, [string, unknown][]];
                    optional: [2500, unknown];
                    record: [7000, unknown];
                    string: [250, Bounds_string];
                    symbol: [45];
                    tuple: [8000, unknown[]];
                    undefined: [50];
                    union: [8500, unknown[]];
                    unknown: [55];
                    void: [60];
                }[K],
            >
        },
    > = ...

    Pseudo-random seed generator.

    The generator supports a wide range of discoverable configuration options via the optional options argument.

    Many of those options are forwarded to the corresponding fast-check arbitrary.

    To use it, you'll need to have fast-check installed.

    Note: support for options.minDepth is experimental. If you use it, be advised that even with a minimum depth of 1, the schemas produced will be quite large. Using this option in your CI/CD pipeline is not recommended.

    See also:

    Type declaration

      • <
            Options extends
                Options<
                    {
                        any: [10];
                        array: [1000, unknown, Bounds_array];
                        bigint: [150, Bounds_bigint];
                        boolean: [15];
                        date: [20];
                        integer: [100, Bounds_int];
                        intersect: [
                            6000,
                            [[7500, [string, unknown][]], [7500, [string, unknown][]]],
                        ];
                        literal: [550, string | number | boolean];
                        never: [35];
                        null: [40];
                        number: [200, Bounds_number];
                        object: [7500, [string, unknown][]];
                        optional: [2500, unknown];
                        record: [7000, unknown];
                        string: [250, Bounds_string];
                        symbol: [45];
                        tuple: [8000, unknown[]];
                        undefined: [50];
                        union: [8500, unknown[]];
                        unknown: [55];
                        void: [60];
                    },
                >,
        >(
            options?: Options,
            overrides?: Partial<
                Gen.Base<
                    {
                        any: [10];
                        array: [1000, unknown, Bounds_array];
                        bigint: [150, Bounds_bigint];
                        boolean: [15];
                        date: [20];
                        integer: [100, Bounds_int];
                        intersect: [
                            6000,
                            [[7500, [string, unknown][]], [7500, [string, unknown][]]],
                        ];
                        literal: [550, string | number | boolean];
                        never: [35];
                        null: [40];
                        number: [200, Bounds_number];
                        object: [7500, [string, unknown][]];
                        optional: [2500, unknown];
                        record: [7000, unknown];
                        string: [250, Bounds_string];
                        symbol: [45];
                        tuple: [8000, unknown[]];
                        undefined: [50];
                        union: [8500, unknown[]];
                        unknown: [55];
                        void: [60];
                    },
                    byTypeName,
                >,
            >,
        ): Gen.Builder<
            (
                [
                    Options["root"] extends | "string"
                    | "number"
                    | "bigint"
                    | "boolean"
                    | "symbol"
                    | "undefined"
                    | "object"
                    | "any"
                    | "date"
                    | "never"
                    | "null"
                    | "unknown"
                    | "void"
                    | "integer"
                    | "literal"
                    | "array"
                    | "optional"
                    | "intersect"
                    | "record"
                    | "tuple"
                    | "union"
                        ? {
                            any: [10];
                            array: [1000, unknown, Bounds_array];
                            bigint: [150, Bounds_bigint];
                            boolean: [15];
                            date: [20];
                            integer: [100, Bounds_int];
                            intersect: [6000, [[(...), (...)], [(...), (...)]]];
                            literal: [550, string | number | boolean];
                            never: [35];
                            null: [40];
                            number: [200, Bounds_number];
                            object: [7500, [(...), (...)][]];
                            optional: [2500, unknown];
                            record: [7000, unknown];
                            string: [250, Bounds_string];
                            symbol: [45];
                            tuple: [8000, unknown[]];
                            undefined: [50];
                            union: [8500, unknown[]];
                            unknown: [55];
                            void: [60];
                        }[any[any]]
                        : never,
                ] extends [never]
                    ? unknown
                    : {
                        root: Arbitrary<
                            Options["root"] extends | "string"
                            | "number"
                            | "bigint"
                            | "boolean"
                            | "symbol"
                            | "undefined"
                            | "object"
                            | "any"
                            | "date"
                            | "never"
                            | "null"
                            | "unknown"
                            | "void"
                            | "integer"
                            | "literal"
                            | "array"
                            | "optional"
                            | "intersect"
                            | "record"
                            | "tuple"
                            | "union"
                                ? {
                                    any: [10];
                                    array: [1000, unknown, Bounds_array];
                                    bigint: [150, Bounds_bigint];
                                    boolean: [15];
                                    date: [20];
                                    integer: [100, Bounds_int];
                                    intersect: [6000, [(...), (...)]];
                                    literal: [550, (...) | (...) | (...) | (...)];
                                    never: [35];
                                    null: [40];
                                    number: [200, Bounds_number];
                                    object: [7500, (...)[]];
                                    optional: [2500, unknown];
                                    record: [7000, unknown];
                                    string: [250, Bounds_string];
                                    symbol: [45];
                                    tuple: [8000, (...)[]];
                                    undefined: [50];
                                    union: [8500, (...)[]];
                                    unknown: [55];
                                    void: [60];
                                }[any[any]]
                                : never,
                        >;
                    }
            ) & {
                [K in | "string"
                | "number"
                | "bigint"
                | "boolean"
                | "symbol"
                | "undefined"
                | "object"
                | "any"
                | "date"
                | "never"
                | "null"
                | "unknown"
                | "void"
                | "integer"
                | "literal"
                | "array"
                | "optional"
                | "intersect"
                | "record"
                | "tuple"
                | "union"]: Arbitrary<
                    {
                        any: [10];
                        array: [1000, unknown, Bounds_array];
                        bigint: [150, Bounds_bigint];
                        boolean: [15];
                        date: [20];
                        integer: [100, Bounds_int];
                        intersect: [6000, [[7500, (...)[]], [7500, (...)[]]]];
                        literal: [550, string | number | boolean];
                        never: [35];
                        null: [40];
                        number: [200, Bounds_number];
                        object: [7500, [string, unknown][]];
                        optional: [2500, unknown];
                        record: [7000, unknown];
                        string: [250, Bounds_string];
                        symbol: [45];
                        tuple: [8000, unknown[]];
                        undefined: [50];
                        union: [8500, unknown[]];
                        unknown: [55];
                        void: [60];
                    }[K],
                >
            },
        >
      • Type Parameters

        • Options extends Options<
              {
                  any: [10];
                  array: [1000, unknown, Bounds_array];
                  bigint: [150, Bounds_bigint];
                  boolean: [15];
                  date: [20];
                  integer: [100, Bounds_int];
                  intersect: [
                      6000,
                      [[7500, [string, unknown][]], [7500, [string, unknown][]]],
                  ];
                  literal: [550, string | number | boolean];
                  never: [35];
                  null: [40];
                  number: [200, Bounds_number];
                  object: [7500, [string, unknown][]];
                  optional: [2500, unknown];
                  record: [7000, unknown];
                  string: [250, Bounds_string];
                  symbol: [45];
                  tuple: [8000, unknown[]];
                  undefined: [50];
                  union: [8500, unknown[]];
                  unknown: [55];
                  void: [60];
              },
          >

        Parameters

        • Optionaloptions: Options
        • Optionaloverrides: Partial<
              Gen.Base<
                  {
                      any: [10];
                      array: [1000, unknown, Bounds_array];
                      bigint: [150, Bounds_bigint];
                      boolean: [15];
                      date: [20];
                      integer: [100, Bounds_int];
                      intersect: [
                          6000,
                          [[7500, [string, unknown][]], [7500, [string, unknown][]]],
                      ];
                      literal: [550, string | number | boolean];
                      never: [35];
                      null: [40];
                      number: [200, Bounds_number];
                      object: [7500, [string, unknown][]];
                      optional: [2500, unknown];
                      record: [7000, unknown];
                      string: [250, Bounds_string];
                      symbol: [45];
                      tuple: [8000, unknown[]];
                      undefined: [50];
                      union: [8500, unknown[]];
                      unknown: [55];
                      void: [60];
                  },
                  byTypeName,
              >,
          >

        Returns Gen.Builder<
            (
                [
                    Options["root"] extends | "string"
                    | "number"
                    | "bigint"
                    | "boolean"
                    | "symbol"
                    | "undefined"
                    | "object"
                    | "any"
                    | "date"
                    | "never"
                    | "null"
                    | "unknown"
                    | "void"
                    | "integer"
                    | "literal"
                    | "array"
                    | "optional"
                    | "intersect"
                    | "record"
                    | "tuple"
                    | "union"
                        ? {
                            any: [10];
                            array: [1000, unknown, Bounds_array];
                            bigint: [150, Bounds_bigint];
                            boolean: [15];
                            date: [20];
                            integer: [100, Bounds_int];
                            intersect: [6000, [[(...), (...)], [(...), (...)]]];
                            literal: [550, string | number | boolean];
                            never: [35];
                            null: [40];
                            number: [200, Bounds_number];
                            object: [7500, [(...), (...)][]];
                            optional: [2500, unknown];
                            record: [7000, unknown];
                            string: [250, Bounds_string];
                            symbol: [45];
                            tuple: [8000, unknown[]];
                            undefined: [50];
                            union: [8500, unknown[]];
                            unknown: [55];
                            void: [60];
                        }[any[any]]
                        : never,
                ] extends [never]
                    ? unknown
                    : {
                        root: Arbitrary<
                            Options["root"] extends | "string"
                            | "number"
                            | "bigint"
                            | "boolean"
                            | "symbol"
                            | "undefined"
                            | "object"
                            | "any"
                            | "date"
                            | "never"
                            | "null"
                            | "unknown"
                            | "void"
                            | "integer"
                            | "literal"
                            | "array"
                            | "optional"
                            | "intersect"
                            | "record"
                            | "tuple"
                            | "union"
                                ? {
                                    any: [10];
                                    array: [1000, unknown, Bounds_array];
                                    bigint: [150, Bounds_bigint];
                                    boolean: [15];
                                    date: [20];
                                    integer: [100, Bounds_int];
                                    intersect: [6000, [(...), (...)]];
                                    literal: [550, (...) | (...) | (...) | (...)];
                                    never: [35];
                                    null: [40];
                                    number: [200, Bounds_number];
                                    object: [7500, (...)[]];
                                    optional: [2500, unknown];
                                    record: [7000, unknown];
                                    string: [250, Bounds_string];
                                    symbol: [45];
                                    tuple: [8000, (...)[]];
                                    undefined: [50];
                                    union: [8500, (...)[]];
                                    unknown: [55];
                                    void: [60];
                                }[any[any]]
                                : never,
                        >;
                    }
            ) & {
                [K in | "string"
                | "number"
                | "bigint"
                | "boolean"
                | "symbol"
                | "undefined"
                | "object"
                | "any"
                | "date"
                | "never"
                | "null"
                | "unknown"
                | "void"
                | "integer"
                | "literal"
                | "array"
                | "optional"
                | "intersect"
                | "record"
                | "tuple"
                | "union"]: Arbitrary<
                    {
                        any: [10];
                        array: [1000, unknown, Bounds_array];
                        bigint: [150, Bounds_bigint];
                        boolean: [15];
                        date: [20];
                        integer: [100, Bounds_int];
                        intersect: [6000, [[7500, (...)[]], [7500, (...)[]]]];
                        literal: [550, string | number | boolean];
                        never: [35];
                        null: [40];
                        number: [200, Bounds_number];
                        object: [7500, [string, unknown][]];
                        optional: [2500, unknown];
                        record: [7000, unknown];
                        string: [250, Bounds_string];
                        symbol: [45];
                        tuple: [8000, unknown[]];
                        undefined: [50];
                        union: [8500, unknown[]];
                        unknown: [55];
                        void: [60];
                    }[K],
                >
            },
        >

    import * as fc from 'fast-check'
    import { z } from 'zod'
    import { zx } from '@traversable/zod'

    const Json = zx.SeedGenerator({ include: ['null', 'boolean', 'number', 'string', 'array', 'object'] })
    const [jsonNumber, jsonObject, anyJson] = [
    fc.sample(Json.number, 1)[0],
    fc.sample(Json.object, 1)[0],
    fc.sample(Json['*'], 1)[0],
    ] as const

    console.log(JSON.stringify(jsonNumber))
    // => [200,[2.96e-322,1,null,false,true]]

    console.log(zx.toString(zx.seedToSchema(jsonNumber)))
    // => z.number().min(2.96e-322).lt(1)

    console.log(JSON.stringify(jsonObject))
    // => [7500,[["n;}289K~",[250,[null,null]]]]]

    console.log(zx.toString(zx.seedToSchema(jsonObject)))
    // => z.object({ "n;}289K~": z.string() })

    console.log(anyJson)
    // => [250,[23,64]]

    console.log(zx.toString(zx.seedToSchema(anyJson)))
    // => z.string().min(23).max(64)