zod 3.25.21 → 3.25.22
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/package.json +2 -2
- package/dist/cjs/v3/tests/all-errors.test.js +0 -147
- package/dist/cjs/v3/tests/anyunknown.test.js +0 -47
- package/dist/cjs/v3/tests/array.test.js +0 -80
- package/dist/cjs/v3/tests/async-parsing.test.js +0 -381
- package/dist/cjs/v3/tests/async-refinements.test.js +0 -60
- package/dist/cjs/v3/tests/base.test.js +0 -47
- package/dist/cjs/v3/tests/bigint.test.js +0 -74
- package/dist/cjs/v3/tests/branded.test.js +0 -58
- package/dist/cjs/v3/tests/catch.test.js +0 -181
- package/dist/cjs/v3/tests/coerce.test.js +0 -152
- package/dist/cjs/v3/tests/complex.test.js +0 -78
- package/dist/cjs/v3/tests/custom.test.js +0 -51
- package/dist/cjs/v3/tests/date.test.js +0 -49
- package/dist/cjs/v3/tests/deepmasking.test.js +0 -187
- package/dist/cjs/v3/tests/default.test.js +0 -86
- package/dist/cjs/v3/tests/description.test.js +0 -51
- package/dist/cjs/v3/tests/discriminated-unions.test.js +0 -321
- package/dist/cjs/v3/tests/enum.test.js +0 -91
- package/dist/cjs/v3/tests/error.test.js +0 -526
- package/dist/cjs/v3/tests/firstparty.test.js +0 -109
- package/dist/cjs/v3/tests/firstpartyschematypes.test.js +0 -8
- package/dist/cjs/v3/tests/function.test.js +0 -236
- package/dist/cjs/v3/tests/generics.test.js +0 -67
- package/dist/cjs/v3/tests/instanceof.test.js +0 -60
- package/dist/cjs/v3/tests/intersection.test.js +0 -111
- package/dist/cjs/v3/tests/language-server.source.js +0 -71
- package/dist/cjs/v3/tests/language-server.test.js +0 -177
- package/dist/cjs/v3/tests/literal.test.js +0 -55
- package/dist/cjs/v3/tests/map.test.js +0 -112
- package/dist/cjs/v3/tests/masking.test.js +0 -5
- package/dist/cjs/v3/tests/mocker.test.js +0 -19
- package/dist/cjs/v3/tests/nan.test.js +0 -42
- package/dist/cjs/v3/tests/nativeEnum.test.js +0 -100
- package/dist/cjs/v3/tests/nullable.test.js +0 -65
- package/dist/cjs/v3/tests/number.test.js +0 -189
- package/dist/cjs/v3/tests/object-augmentation.test.js +0 -50
- package/dist/cjs/v3/tests/object-in-es5-env.test.js +0 -49
- package/dist/cjs/v3/tests/object.test.js +0 -352
- package/dist/cjs/v3/tests/optional.test.js +0 -65
- package/dist/cjs/v3/tests/parseUtil.test.js +0 -20
- package/dist/cjs/v3/tests/parser.test.js +0 -55
- package/dist/cjs/v3/tests/partials.test.js +0 -201
- package/dist/cjs/v3/tests/pickomit.test.js +0 -113
- package/dist/cjs/v3/tests/pipeline.test.js +0 -50
- package/dist/cjs/v3/tests/preprocess.test.js +0 -181
- package/dist/cjs/v3/tests/primitive.test.js +0 -385
- package/dist/cjs/v3/tests/promise.test.js +0 -98
- package/dist/cjs/v3/tests/readonly.test.js +0 -190
- package/dist/cjs/v3/tests/record.test.js +0 -153
- package/dist/cjs/v3/tests/recursive.test.js +0 -161
- package/dist/cjs/v3/tests/refine.test.js +0 -279
- package/dist/cjs/v3/tests/safeparse.test.js +0 -46
- package/dist/cjs/v3/tests/set.test.js +0 -144
- package/dist/cjs/v3/tests/standard-schema.test.js +0 -102
- package/dist/cjs/v3/tests/string.test.js +0 -842
- package/dist/cjs/v3/tests/transformer.test.js +0 -218
- package/dist/cjs/v3/tests/tuple.test.js +0 -97
- package/dist/cjs/v3/tests/unions.test.js +0 -75
- package/dist/cjs/v3/tests/validations.test.js +0 -155
- package/dist/cjs/v3/tests/void.test.js +0 -36
- package/dist/cjs/v4/classic/tests/anyunknown.test.js +0 -45
- package/dist/cjs/v4/classic/tests/array.test.js +0 -249
- package/dist/cjs/v4/classic/tests/assignability.test.js +0 -110
- package/dist/cjs/v4/classic/tests/async-parsing.test.js +0 -364
- package/dist/cjs/v4/classic/tests/async-refinements.test.js +0 -82
- package/dist/cjs/v4/classic/tests/base.test.js +0 -31
- package/dist/cjs/v4/classic/tests/bigint.test.js +0 -73
- package/dist/cjs/v4/classic/tests/brand.test.js +0 -60
- package/dist/cjs/v4/classic/tests/catch.test.js +0 -214
- package/dist/cjs/v4/classic/tests/coalesce.test.js +0 -18
- package/dist/cjs/v4/classic/tests/coerce.test.js +0 -175
- package/dist/cjs/v4/classic/tests/custom.test.js +0 -38
- package/dist/cjs/v4/classic/tests/date.test.js +0 -48
- package/dist/cjs/v4/classic/tests/default.test.js +0 -88
- package/dist/cjs/v4/classic/tests/description.test.js +0 -51
- package/dist/cjs/v4/classic/tests/discriminated-unions.test.js +0 -540
- package/dist/cjs/v4/classic/tests/enum.test.js +0 -260
- package/dist/cjs/v4/classic/tests/error-utils.test.js +0 -411
- package/dist/cjs/v4/classic/tests/error.test.js +0 -651
- package/dist/cjs/v4/classic/tests/file.test.js +0 -68
- package/dist/cjs/v4/classic/tests/firstparty.test.js +0 -198
- package/dist/cjs/v4/classic/tests/function.test.js +0 -219
- package/dist/cjs/v4/classic/tests/generics.test.js +0 -72
- package/dist/cjs/v4/classic/tests/index.test.js +0 -765
- package/dist/cjs/v4/classic/tests/instanceof.test.js +0 -58
- package/dist/cjs/v4/classic/tests/intersection.test.js +0 -134
- package/dist/cjs/v4/classic/tests/json-schema.test.js +0 -1707
- package/dist/cjs/v4/classic/tests/json.test.js +0 -105
- package/dist/cjs/v4/classic/tests/lazy.test.js +0 -185
- package/dist/cjs/v4/classic/tests/literal.test.js +0 -94
- package/dist/cjs/v4/classic/tests/map.test.js +0 -193
- package/dist/cjs/v4/classic/tests/nan.test.js +0 -42
- package/dist/cjs/v4/classic/tests/nested-refine.test.js +0 -180
- package/dist/cjs/v4/classic/tests/nonoptional.test.js +0 -80
- package/dist/cjs/v4/classic/tests/nullable.test.js +0 -43
- package/dist/cjs/v4/classic/tests/number.test.js +0 -241
- package/dist/cjs/v4/classic/tests/object.test.js +0 -405
- package/dist/cjs/v4/classic/tests/optional.test.js +0 -98
- package/dist/cjs/v4/classic/tests/partial.test.js +0 -137
- package/dist/cjs/v4/classic/tests/pickomit.test.js +0 -125
- package/dist/cjs/v4/classic/tests/pipe.test.js +0 -92
- package/dist/cjs/v4/classic/tests/prefault.test.js +0 -22
- package/dist/cjs/v4/classic/tests/preprocess.test.js +0 -273
- package/dist/cjs/v4/classic/tests/primitive.test.js +0 -184
- package/dist/cjs/v4/classic/tests/promise.test.js +0 -91
- package/dist/cjs/v4/classic/tests/readonly.test.js +0 -241
- package/dist/cjs/v4/classic/tests/record.test.js +0 -307
- package/dist/cjs/v4/classic/tests/recursive-types.test.js +0 -108
- package/dist/cjs/v4/classic/tests/refine.test.js +0 -402
- package/dist/cjs/v4/classic/tests/registries.test.js +0 -155
- package/dist/cjs/v4/classic/tests/set.test.js +0 -182
- package/dist/cjs/v4/classic/tests/standard-schema.test.js +0 -77
- package/dist/cjs/v4/classic/tests/string-formats.test.js +0 -49
- package/dist/cjs/v4/classic/tests/string.test.js +0 -980
- package/dist/cjs/v4/classic/tests/template-literal.test.js +0 -705
- package/dist/cjs/v4/classic/tests/transform.test.js +0 -239
- package/dist/cjs/v4/classic/tests/tuple.test.js +0 -166
- package/dist/cjs/v4/classic/tests/union.test.js +0 -107
- package/dist/cjs/v4/classic/tests/validations.test.js +0 -301
- package/dist/cjs/v4/classic/tests/void.test.js +0 -34
- package/dist/cjs/v4/core/tests/index.test.js +0 -66
- package/dist/cjs/v4/core/tests/locales/be.test.js +0 -123
- package/dist/cjs/v4/core/tests/locales/en.test.js +0 -21
- package/dist/cjs/v4/core/tests/locales/ru.test.js +0 -123
- package/dist/cjs/v4/core/tests/locales/tr.test.js +0 -79
- package/dist/cjs/v4/mini/tests/assignability.test.js +0 -104
- package/dist/cjs/v4/mini/tests/brand.test.js +0 -58
- package/dist/cjs/v4/mini/tests/checks.test.js +0 -147
- package/dist/cjs/v4/mini/tests/computed.test.js +0 -55
- package/dist/cjs/v4/mini/tests/error.test.js +0 -45
- package/dist/cjs/v4/mini/tests/functions.test.js +0 -37
- package/dist/cjs/v4/mini/tests/index.test.js +0 -763
- package/dist/cjs/v4/mini/tests/number.test.js +0 -109
- package/dist/cjs/v4/mini/tests/object.test.js +0 -122
- package/dist/cjs/v4/mini/tests/prototypes.test.js +0 -44
- package/dist/cjs/v4/mini/tests/recursive-types.test.js +0 -106
- package/dist/cjs/v4/mini/tests/string.test.js +0 -265
- package/dist/types/v3/tests/all-errors.test.d.ts +0 -1
- package/dist/types/v3/tests/anyunknown.test.d.ts +0 -1
- package/dist/types/v3/tests/array.test.d.ts +0 -1
- package/dist/types/v3/tests/async-parsing.test.d.ts +0 -1
- package/dist/types/v3/tests/async-refinements.test.d.ts +0 -1
- package/dist/types/v3/tests/base.test.d.ts +0 -1
- package/dist/types/v3/tests/bigint.test.d.ts +0 -1
- package/dist/types/v3/tests/branded.test.d.ts +0 -1
- package/dist/types/v3/tests/catch.test.d.ts +0 -1
- package/dist/types/v3/tests/coerce.test.d.ts +0 -1
- package/dist/types/v3/tests/complex.test.d.ts +0 -1
- package/dist/types/v3/tests/custom.test.d.ts +0 -1
- package/dist/types/v3/tests/date.test.d.ts +0 -1
- package/dist/types/v3/tests/deepmasking.test.d.ts +0 -1
- package/dist/types/v3/tests/default.test.d.ts +0 -1
- package/dist/types/v3/tests/description.test.d.ts +0 -1
- package/dist/types/v3/tests/discriminated-unions.test.d.ts +0 -1
- package/dist/types/v3/tests/enum.test.d.ts +0 -1
- package/dist/types/v3/tests/error.test.d.ts +0 -1
- package/dist/types/v3/tests/firstparty.test.d.ts +0 -1
- package/dist/types/v3/tests/firstpartyschematypes.test.d.ts +0 -1
- package/dist/types/v3/tests/function.test.d.ts +0 -1
- package/dist/types/v3/tests/generics.test.d.ts +0 -1
- package/dist/types/v3/tests/instanceof.test.d.ts +0 -1
- package/dist/types/v3/tests/intersection.test.d.ts +0 -1
- package/dist/types/v3/tests/language-server.source.d.ts +0 -70
- package/dist/types/v3/tests/language-server.test.d.ts +0 -1
- package/dist/types/v3/tests/literal.test.d.ts +0 -1
- package/dist/types/v3/tests/map.test.d.ts +0 -1
- package/dist/types/v3/tests/masking.test.d.ts +0 -1
- package/dist/types/v3/tests/mocker.test.d.ts +0 -1
- package/dist/types/v3/tests/nan.test.d.ts +0 -1
- package/dist/types/v3/tests/nativeEnum.test.d.ts +0 -1
- package/dist/types/v3/tests/nullable.test.d.ts +0 -1
- package/dist/types/v3/tests/number.test.d.ts +0 -1
- package/dist/types/v3/tests/object-augmentation.test.d.ts +0 -1
- package/dist/types/v3/tests/object-in-es5-env.test.d.ts +0 -1
- package/dist/types/v3/tests/object.test.d.ts +0 -1
- package/dist/types/v3/tests/optional.test.d.ts +0 -1
- package/dist/types/v3/tests/parseUtil.test.d.ts +0 -1
- package/dist/types/v3/tests/parser.test.d.ts +0 -1
- package/dist/types/v3/tests/partials.test.d.ts +0 -1
- package/dist/types/v3/tests/pickomit.test.d.ts +0 -1
- package/dist/types/v3/tests/pipeline.test.d.ts +0 -1
- package/dist/types/v3/tests/preprocess.test.d.ts +0 -1
- package/dist/types/v3/tests/primitive.test.d.ts +0 -1
- package/dist/types/v3/tests/promise.test.d.ts +0 -1
- package/dist/types/v3/tests/readonly.test.d.ts +0 -1
- package/dist/types/v3/tests/record.test.d.ts +0 -1
- package/dist/types/v3/tests/recursive.test.d.ts +0 -1
- package/dist/types/v3/tests/refine.test.d.ts +0 -1
- package/dist/types/v3/tests/safeparse.test.d.ts +0 -1
- package/dist/types/v3/tests/set.test.d.ts +0 -1
- package/dist/types/v3/tests/standard-schema.test.d.ts +0 -1
- package/dist/types/v3/tests/string.test.d.ts +0 -1
- package/dist/types/v3/tests/transformer.test.d.ts +0 -1
- package/dist/types/v3/tests/tuple.test.d.ts +0 -1
- package/dist/types/v3/tests/unions.test.d.ts +0 -1
- package/dist/types/v3/tests/validations.test.d.ts +0 -1
- package/dist/types/v3/tests/void.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/anyunknown.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/array.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/assignability.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/async-parsing.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/async-refinements.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/base.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/bigint.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/brand.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/catch.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/coalesce.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/coerce.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/custom.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/date.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/default.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/description.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/discriminated-unions.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/enum.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/error-utils.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/error.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/file.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/firstparty.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/function.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/generics.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/index.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/instanceof.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/intersection.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/json-schema.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/json.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/lazy.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/literal.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/map.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/nan.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/nested-refine.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/nonoptional.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/nullable.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/number.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/object.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/optional.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/partial.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/pickomit.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/pipe.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/prefault.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/preprocess.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/primitive.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/promise.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/readonly.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/record.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/recursive-types.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/refine.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/registries.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/set.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/standard-schema.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/string-formats.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/string.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/template-literal.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/transform.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/tuple.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/union.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/validations.test.d.ts +0 -1
- package/dist/types/v4/classic/tests/void.test.d.ts +0 -1
- package/dist/types/v4/core/tests/index.test.d.ts +0 -1
- package/dist/types/v4/core/tests/locales/be.test.d.ts +0 -1
- package/dist/types/v4/core/tests/locales/en.test.d.ts +0 -1
- package/dist/types/v4/core/tests/locales/ru.test.d.ts +0 -1
- package/dist/types/v4/core/tests/locales/tr.test.d.ts +0 -1
- package/dist/types/v4/mini/tests/assignability.test.d.ts +0 -1
- package/dist/types/v4/mini/tests/brand.test.d.ts +0 -1
- package/dist/types/v4/mini/tests/checks.test.d.ts +0 -1
- package/dist/types/v4/mini/tests/computed.test.d.ts +0 -1
- package/dist/types/v4/mini/tests/error.test.d.ts +0 -1
- package/dist/types/v4/mini/tests/functions.test.d.ts +0 -1
- package/dist/types/v4/mini/tests/index.test.d.ts +0 -1
- package/dist/types/v4/mini/tests/number.test.d.ts +0 -1
- package/dist/types/v4/mini/tests/object.test.d.ts +0 -1
- package/dist/types/v4/mini/tests/prototypes.test.d.ts +0 -1
- package/dist/types/v4/mini/tests/recursive-types.test.d.ts +0 -1
- package/dist/types/v4/mini/tests/string.test.d.ts +0 -1
- package/src/index.ts +0 -4
- package/src/v3/ZodError.ts +0 -329
- package/src/v3/benchmarks/datetime.ts +0 -58
- package/src/v3/benchmarks/discriminatedUnion.ts +0 -80
- package/src/v3/benchmarks/index.ts +0 -59
- package/src/v3/benchmarks/ipv4.ts +0 -57
- package/src/v3/benchmarks/object.ts +0 -69
- package/src/v3/benchmarks/primitives.ts +0 -162
- package/src/v3/benchmarks/realworld.ts +0 -63
- package/src/v3/benchmarks/string.ts +0 -55
- package/src/v3/benchmarks/union.ts +0 -80
- package/src/v3/errors.ts +0 -13
- package/src/v3/external.ts +0 -6
- package/src/v3/helpers/enumUtil.ts +0 -17
- package/src/v3/helpers/errorUtil.ts +0 -8
- package/src/v3/helpers/parseUtil.ts +0 -176
- package/src/v3/helpers/partialUtil.ts +0 -34
- package/src/v3/helpers/typeAliases.ts +0 -2
- package/src/v3/helpers/util.ts +0 -224
- package/src/v3/index.ts +0 -4
- package/src/v3/locales/en.ts +0 -120
- package/src/v3/standard-schema.ts +0 -113
- package/src/v3/tests/Mocker.ts +0 -54
- package/src/v3/tests/all-errors.test.ts +0 -157
- package/src/v3/tests/anyunknown.test.ts +0 -28
- package/src/v3/tests/array.test.ts +0 -71
- package/src/v3/tests/async-parsing.test.ts +0 -388
- package/src/v3/tests/async-refinements.test.ts +0 -46
- package/src/v3/tests/base.test.ts +0 -29
- package/src/v3/tests/bigint.test.ts +0 -55
- package/src/v3/tests/branded.test.ts +0 -53
- package/src/v3/tests/catch.test.ts +0 -220
- package/src/v3/tests/coerce.test.ts +0 -133
- package/src/v3/tests/complex.test.ts +0 -56
- package/src/v3/tests/custom.test.ts +0 -31
- package/src/v3/tests/date.test.ts +0 -32
- package/src/v3/tests/deepmasking.test.ts +0 -186
- package/src/v3/tests/default.test.ts +0 -112
- package/src/v3/tests/description.test.ts +0 -33
- package/src/v3/tests/discriminated-unions.test.ts +0 -315
- package/src/v3/tests/enum.test.ts +0 -80
- package/src/v3/tests/error.test.ts +0 -551
- package/src/v3/tests/firstparty.test.ts +0 -87
- package/src/v3/tests/firstpartyschematypes.test.ts +0 -21
- package/src/v3/tests/function.test.ts +0 -257
- package/src/v3/tests/generics.test.ts +0 -48
- package/src/v3/tests/instanceof.test.ts +0 -37
- package/src/v3/tests/intersection.test.ts +0 -110
- package/src/v3/tests/language-server.source.ts +0 -76
- package/src/v3/tests/language-server.test.ts +0 -207
- package/src/v3/tests/literal.test.ts +0 -36
- package/src/v3/tests/map.test.ts +0 -110
- package/src/v3/tests/masking.test.ts +0 -4
- package/src/v3/tests/mocker.test.ts +0 -19
- package/src/v3/tests/nan.test.ts +0 -21
- package/src/v3/tests/nativeEnum.test.ts +0 -87
- package/src/v3/tests/nullable.test.ts +0 -42
- package/src/v3/tests/number.test.ts +0 -176
- package/src/v3/tests/object-augmentation.test.ts +0 -29
- package/src/v3/tests/object-in-es5-env.test.ts +0 -29
- package/src/v3/tests/object.test.ts +0 -434
- package/src/v3/tests/optional.test.ts +0 -42
- package/src/v3/tests/parseUtil.test.ts +0 -23
- package/src/v3/tests/parser.test.ts +0 -41
- package/src/v3/tests/partials.test.ts +0 -243
- package/src/v3/tests/pickomit.test.ts +0 -111
- package/src/v3/tests/pipeline.test.ts +0 -29
- package/src/v3/tests/preprocess.test.ts +0 -188
- package/src/v3/tests/primitive.test.ts +0 -440
- package/src/v3/tests/promise.test.ts +0 -90
- package/src/v3/tests/readonly.test.ts +0 -194
- package/src/v3/tests/record.test.ts +0 -171
- package/src/v3/tests/recursive.test.ts +0 -197
- package/src/v3/tests/refine.test.ts +0 -297
- package/src/v3/tests/safeparse.test.ts +0 -27
- package/src/v3/tests/set.test.ts +0 -142
- package/src/v3/tests/standard-schema.test.ts +0 -83
- package/src/v3/tests/string.test.ts +0 -916
- package/src/v3/tests/transformer.test.ts +0 -233
- package/src/v3/tests/tuple.test.ts +0 -90
- package/src/v3/tests/unions.test.ts +0 -57
- package/src/v3/tests/validations.test.ts +0 -133
- package/src/v3/tests/void.test.ts +0 -15
- package/src/v3/types.ts +0 -5135
- package/src/v4/classic/checks.ts +0 -30
- package/src/v4/classic/coerce.ts +0 -27
- package/src/v4/classic/compat.ts +0 -76
- package/src/v4/classic/errors.ts +0 -75
- package/src/v4/classic/external.ts +0 -31
- package/src/v4/classic/index.ts +0 -5
- package/src/v4/classic/iso.ts +0 -90
- package/src/v4/classic/parse.ts +0 -33
- package/src/v4/classic/schemas.ts +0 -2062
- package/src/v4/classic/tests/anyunknown.test.ts +0 -26
- package/src/v4/classic/tests/array.test.ts +0 -257
- package/src/v4/classic/tests/assignability.test.ts +0 -124
- package/src/v4/classic/tests/async-parsing.test.ts +0 -381
- package/src/v4/classic/tests/async-refinements.test.ts +0 -68
- package/src/v4/classic/tests/base.test.ts +0 -7
- package/src/v4/classic/tests/bigint.test.ts +0 -54
- package/src/v4/classic/tests/brand.test.ts +0 -57
- package/src/v4/classic/tests/catch.test.ts +0 -252
- package/src/v4/classic/tests/coalesce.test.ts +0 -20
- package/src/v4/classic/tests/coerce.test.ts +0 -160
- package/src/v4/classic/tests/custom.test.ts +0 -16
- package/src/v4/classic/tests/date.test.ts +0 -31
- package/src/v4/classic/tests/default.test.ts +0 -114
- package/src/v4/classic/tests/description.test.ts +0 -32
- package/src/v4/classic/tests/discriminated-unions.test.ts +0 -566
- package/src/v4/classic/tests/enum.test.ts +0 -285
- package/src/v4/classic/tests/error-utils.test.ts +0 -480
- package/src/v4/classic/tests/error.test.ts +0 -698
- package/src/v4/classic/tests/file.test.ts +0 -52
- package/src/v4/classic/tests/firstparty.test.ts +0 -177
- package/src/v4/classic/tests/function.test.ts +0 -230
- package/src/v4/classic/tests/generics.test.ts +0 -58
- package/src/v4/classic/tests/index.test.ts +0 -909
- package/src/v4/classic/tests/instanceof.test.ts +0 -34
- package/src/v4/classic/tests/intersection.test.ts +0 -171
- package/src/v4/classic/tests/json-schema.test.ts +0 -1810
- package/src/v4/classic/tests/json.test.ts +0 -108
- package/src/v4/classic/tests/lazy.test.ts +0 -227
- package/src/v4/classic/tests/literal.test.ts +0 -82
- package/src/v4/classic/tests/map.test.ts +0 -196
- package/src/v4/classic/tests/nan.test.ts +0 -21
- package/src/v4/classic/tests/nested-refine.test.ts +0 -165
- package/src/v4/classic/tests/nonoptional.test.ts +0 -86
- package/src/v4/classic/tests/nullable.test.ts +0 -22
- package/src/v4/classic/tests/number.test.ts +0 -242
- package/src/v4/classic/tests/object.test.ts +0 -493
- package/src/v4/classic/tests/optional.test.ts +0 -103
- package/src/v4/classic/tests/partial.test.ts +0 -147
- package/src/v4/classic/tests/pickomit.test.ts +0 -125
- package/src/v4/classic/tests/pipe.test.ts +0 -81
- package/src/v4/classic/tests/prefault.test.ts +0 -37
- package/src/v4/classic/tests/preprocess.test.ts +0 -272
- package/src/v4/classic/tests/primitive.test.ts +0 -175
- package/src/v4/classic/tests/promise.test.ts +0 -81
- package/src/v4/classic/tests/readonly.test.ts +0 -252
- package/src/v4/classic/tests/record.test.ts +0 -332
- package/src/v4/classic/tests/recursive-types.test.ts +0 -126
- package/src/v4/classic/tests/refine.test.ts +0 -423
- package/src/v4/classic/tests/registries.test.ts +0 -159
- package/src/v4/classic/tests/set.test.ts +0 -179
- package/src/v4/classic/tests/standard-schema.test.ts +0 -57
- package/src/v4/classic/tests/string-formats.test.ts +0 -31
- package/src/v4/classic/tests/string.test.ts +0 -1081
- package/src/v4/classic/tests/template-literal.test.ts +0 -758
- package/src/v4/classic/tests/transform.test.ts +0 -250
- package/src/v4/classic/tests/tuple.test.ts +0 -163
- package/src/v4/classic/tests/union.test.ts +0 -94
- package/src/v4/classic/tests/validations.test.ts +0 -277
- package/src/v4/classic/tests/void.test.ts +0 -12
- package/src/v4/core/api.ts +0 -1533
- package/src/v4/core/checks.ts +0 -1282
- package/src/v4/core/config.ts +0 -15
- package/src/v4/core/core.ts +0 -98
- package/src/v4/core/doc.ts +0 -45
- package/src/v4/core/errors.ts +0 -433
- package/src/v4/core/function.ts +0 -143
- package/src/v4/core/index.ts +0 -15
- package/src/v4/core/json-schema.ts +0 -106
- package/src/v4/core/parse.ts +0 -94
- package/src/v4/core/regexes.ts +0 -133
- package/src/v4/core/registries.ts +0 -89
- package/src/v4/core/schemas.ts +0 -3802
- package/src/v4/core/standard-schema.ts +0 -64
- package/src/v4/core/tests/index.test.ts +0 -46
- package/src/v4/core/tests/locales/be.test.ts +0 -124
- package/src/v4/core/tests/locales/en.test.ts +0 -22
- package/src/v4/core/tests/locales/ru.test.ts +0 -128
- package/src/v4/core/tests/locales/tr.test.ts +0 -69
- package/src/v4/core/to-json-schema.ts +0 -790
- package/src/v4/core/util.ts +0 -750
- package/src/v4/core/versions.ts +0 -5
- package/src/v4/core/zsf.ts +0 -323
- package/src/v4/index.ts +0 -4
- package/src/v4/locales/ar.ts +0 -125
- package/src/v4/locales/az.ts +0 -121
- package/src/v4/locales/be.ts +0 -185
- package/src/v4/locales/ca.ts +0 -127
- package/src/v4/locales/cs.ts +0 -142
- package/src/v4/locales/de.ts +0 -124
- package/src/v4/locales/en.ts +0 -127
- package/src/v4/locales/es.ts +0 -124
- package/src/v4/locales/fa.ts +0 -134
- package/src/v4/locales/fi.ts +0 -131
- package/src/v4/locales/fr.ts +0 -124
- package/src/v4/locales/frCA.ts +0 -126
- package/src/v4/locales/he.ts +0 -125
- package/src/v4/locales/hu.ts +0 -126
- package/src/v4/locales/id.ts +0 -124
- package/src/v4/locales/index.ts +0 -34
- package/src/v4/locales/it.ts +0 -125
- package/src/v4/locales/ja.ts +0 -122
- package/src/v4/locales/ko.ts +0 -131
- package/src/v4/locales/mk.ts +0 -127
- package/src/v4/locales/ms.ts +0 -124
- package/src/v4/locales/no.ts +0 -124
- package/src/v4/locales/ota.ts +0 -125
- package/src/v4/locales/pl.ts +0 -125
- package/src/v4/locales/pt.ts +0 -123
- package/src/v4/locales/ru.ts +0 -185
- package/src/v4/locales/sl.ts +0 -125
- package/src/v4/locales/ta.ts +0 -125
- package/src/v4/locales/th.ts +0 -126
- package/src/v4/locales/tr.ts +0 -121
- package/src/v4/locales/ua.ts +0 -126
- package/src/v4/locales/ur.ts +0 -126
- package/src/v4/locales/vi.ts +0 -125
- package/src/v4/locales/zh-CN.ts +0 -123
- package/src/v4/locales/zh-tw.ts +0 -125
- package/src/v4/mini/checks.ts +0 -32
- package/src/v4/mini/coerce.ts +0 -22
- package/src/v4/mini/external.ts +0 -26
- package/src/v4/mini/index.ts +0 -3
- package/src/v4/mini/iso.ts +0 -62
- package/src/v4/mini/parse.ts +0 -1
- package/src/v4/mini/schemas.ts +0 -1556
- package/src/v4/mini/tests/assignability.test.ts +0 -117
- package/src/v4/mini/tests/brand.test.ts +0 -51
- package/src/v4/mini/tests/checks.test.ts +0 -144
- package/src/v4/mini/tests/computed.test.ts +0 -36
- package/src/v4/mini/tests/error.test.ts +0 -22
- package/src/v4/mini/tests/functions.test.ts +0 -43
- package/src/v4/mini/tests/index.test.ts +0 -914
- package/src/v4/mini/tests/number.test.ts +0 -95
- package/src/v4/mini/tests/object.test.ts +0 -139
- package/src/v4/mini/tests/prototypes.test.ts +0 -23
- package/src/v4/mini/tests/recursive-types.test.ts +0 -124
- package/src/v4/mini/tests/string.test.ts +0 -284
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import { test } from "vitest";
|
|
2
|
-
// import * as z from "zod/v4";
|
|
3
|
-
|
|
4
|
-
test(() => {});
|
|
5
|
-
// test("overload types", () => {
|
|
6
|
-
// const schema = z.string().json();
|
|
7
|
-
// util.assertEqual<typeof schema, z.ZodString>(true);
|
|
8
|
-
// const schema2 = z.string().json(z.number());
|
|
9
|
-
// util.assertEqual<typeof schema2, z.ZodPipe<z.ZodTransform<any, string>, z.ZodNumber>>(true);
|
|
10
|
-
// const r2 = schema2.parse("12");
|
|
11
|
-
// util.assertEqual<number, typeof r2>(true);
|
|
12
|
-
// });
|
|
13
|
-
// test("parse string to json", async () => {
|
|
14
|
-
// const Env = z.object({
|
|
15
|
-
// myJsonConfig: z.string().jsonString(z.object({ foo: z.number() })),
|
|
16
|
-
// someOtherValue: z.string(),
|
|
17
|
-
// });
|
|
18
|
-
|
|
19
|
-
// expect(
|
|
20
|
-
// Env.parse({
|
|
21
|
-
// myJsonConfig: '{ "foo": 123 }',
|
|
22
|
-
// someOtherValue: "abc",
|
|
23
|
-
// })
|
|
24
|
-
// ).toEqual({
|
|
25
|
-
// myJsonConfig: { foo: 123 },
|
|
26
|
-
// someOtherValue: "abc",
|
|
27
|
-
// });
|
|
28
|
-
|
|
29
|
-
// const invalidValues = Env.safeParse({
|
|
30
|
-
// myJsonConfig: '{"foo": "not a number!"}',
|
|
31
|
-
// someOtherValue: null,
|
|
32
|
-
// });
|
|
33
|
-
// expect(JSON.parse(JSON.stringify(invalidValues))).toEqual({
|
|
34
|
-
// success: false,
|
|
35
|
-
// error: {
|
|
36
|
-
// name: "ZodError",
|
|
37
|
-
// issues: [
|
|
38
|
-
// {
|
|
39
|
-
// code: "invalid_type",
|
|
40
|
-
// expected: "number",
|
|
41
|
-
// input: "not a number!",
|
|
42
|
-
// received: "string",
|
|
43
|
-
// path: ["myJsonConfig", "foo"],
|
|
44
|
-
// message: "Expected number, received string",
|
|
45
|
-
// },
|
|
46
|
-
// {
|
|
47
|
-
// code: "invalid_type",
|
|
48
|
-
// expected: "string",
|
|
49
|
-
// input: null,
|
|
50
|
-
// received: "null",
|
|
51
|
-
// path: ["someOtherValue"],
|
|
52
|
-
// message: "Expected string, received null",
|
|
53
|
-
// },
|
|
54
|
-
// ],
|
|
55
|
-
// },
|
|
56
|
-
// });
|
|
57
|
-
|
|
58
|
-
// const invalidJsonSyntax = Env.safeParse({
|
|
59
|
-
// myJsonConfig: "This is not valid json",
|
|
60
|
-
// someOtherValue: null,
|
|
61
|
-
// });
|
|
62
|
-
// expect(JSON.parse(JSON.stringify(invalidJsonSyntax))).toMatchObject({
|
|
63
|
-
// success: false,
|
|
64
|
-
// error: {
|
|
65
|
-
// name: "ZodError",
|
|
66
|
-
// issues: [
|
|
67
|
-
// {
|
|
68
|
-
// code: "invalid_string",
|
|
69
|
-
// input: {
|
|
70
|
-
// _def: {
|
|
71
|
-
// catchall: {
|
|
72
|
-
// _def: {
|
|
73
|
-
// typeName: "ZodNever",
|
|
74
|
-
// },
|
|
75
|
-
// },
|
|
76
|
-
// typeName: "ZodObject",
|
|
77
|
-
// unknownKeys: "strip",
|
|
78
|
-
// },
|
|
79
|
-
// },
|
|
80
|
-
// validation: "json",
|
|
81
|
-
// message: "Invalid json",
|
|
82
|
-
// path: ["myJsonConfig"],
|
|
83
|
-
// },
|
|
84
|
-
// {
|
|
85
|
-
// code: "invalid_type",
|
|
86
|
-
// expected: "string",
|
|
87
|
-
// input: null,
|
|
88
|
-
// received: "null",
|
|
89
|
-
// path: ["someOtherValue"],
|
|
90
|
-
// message: "Expected string, received null",
|
|
91
|
-
// },
|
|
92
|
-
// ],
|
|
93
|
-
// },
|
|
94
|
-
// });
|
|
95
|
-
// });
|
|
96
|
-
|
|
97
|
-
// test("no argument", () => {
|
|
98
|
-
// const schema = z.string().json();
|
|
99
|
-
// util.assertEqual<typeof schema, z.ZodString>(true);
|
|
100
|
-
// z.string().json().parse(`{}`);
|
|
101
|
-
// z.string().json().parse(`null`);
|
|
102
|
-
// z.string().json().parse(`12`);
|
|
103
|
-
// z.string().json().parse(`{ "test": "test"}`);
|
|
104
|
-
// expect(() => z.string().json().parse(`asdf`)).toThrow();
|
|
105
|
-
// expect(() => z.string().json().parse(`{ "test": undefined }`)).toThrow();
|
|
106
|
-
// expect(() => z.string().json().parse(`{ "test": 12n }`)).toThrow();
|
|
107
|
-
// expect(() => z.string().json().parse(`{ test: "test" }`)).toThrow();
|
|
108
|
-
// });
|
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
import { expect, expectTypeOf, test } from "vitest";
|
|
2
|
-
|
|
3
|
-
import * as z from "zod/v4";
|
|
4
|
-
|
|
5
|
-
test("opt passthrough", () => {
|
|
6
|
-
const object = z.object({
|
|
7
|
-
a: z.lazy(() => z.string()),
|
|
8
|
-
b: z.lazy(() => z.string().optional()),
|
|
9
|
-
c: z.lazy(() => z.string().default("default")),
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
type ObjectTypeIn = z.input<typeof object>;
|
|
13
|
-
expectTypeOf<ObjectTypeIn>().toEqualTypeOf<{
|
|
14
|
-
a: string;
|
|
15
|
-
b?: string | undefined;
|
|
16
|
-
c?: string | undefined;
|
|
17
|
-
}>();
|
|
18
|
-
|
|
19
|
-
type ObjectTypeOut = z.output<typeof object>;
|
|
20
|
-
expectTypeOf<ObjectTypeOut>().toEqualTypeOf<{
|
|
21
|
-
a: string;
|
|
22
|
-
b?: string | undefined;
|
|
23
|
-
c: string;
|
|
24
|
-
}>();
|
|
25
|
-
|
|
26
|
-
const result = object.parse(
|
|
27
|
-
{
|
|
28
|
-
a: "hello",
|
|
29
|
-
b: undefined,
|
|
30
|
-
},
|
|
31
|
-
{ jitless: true }
|
|
32
|
-
);
|
|
33
|
-
expect(result).toEqual({
|
|
34
|
-
a: "hello",
|
|
35
|
-
// b: undefined,
|
|
36
|
-
c: "default",
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
expect(z.lazy(() => z.string())._zod.optin).toEqual(undefined);
|
|
40
|
-
expect(z.lazy(() => z.string())._zod.optout).toEqual(undefined);
|
|
41
|
-
|
|
42
|
-
expect(z.lazy(() => z.string().optional())._zod.optin).toEqual("optional");
|
|
43
|
-
expect(z.lazy(() => z.string().optional())._zod.optout).toEqual("optional");
|
|
44
|
-
|
|
45
|
-
expect(z.lazy(() => z.string().default("asdf"))._zod.optin).toEqual("optional");
|
|
46
|
-
expect(z.lazy(() => z.string().default("asdf"))._zod.optout).toEqual(undefined);
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
////////////// LAZY //////////////
|
|
50
|
-
|
|
51
|
-
test("schema getter", () => {
|
|
52
|
-
z.lazy(() => z.string()).parse("asdf");
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
test("lazy proxy", () => {
|
|
56
|
-
const schema = z.lazy(() => z.string())._zod.innerType.min(6);
|
|
57
|
-
schema.parse("123456");
|
|
58
|
-
expect(schema.safeParse("12345").success).toBe(false);
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
interface Category {
|
|
62
|
-
name: string;
|
|
63
|
-
subcategories: Category[];
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
const testCategory: Category = {
|
|
67
|
-
name: "I",
|
|
68
|
-
subcategories: [
|
|
69
|
-
{
|
|
70
|
-
name: "A",
|
|
71
|
-
subcategories: [
|
|
72
|
-
{
|
|
73
|
-
name: "1",
|
|
74
|
-
subcategories: [
|
|
75
|
-
{
|
|
76
|
-
name: "a",
|
|
77
|
-
subcategories: [],
|
|
78
|
-
},
|
|
79
|
-
],
|
|
80
|
-
},
|
|
81
|
-
],
|
|
82
|
-
},
|
|
83
|
-
],
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
test("recursion with z.lazy", () => {
|
|
87
|
-
const Category: z.ZodType<Category> = z.lazy(() =>
|
|
88
|
-
z.object({
|
|
89
|
-
name: z.string(),
|
|
90
|
-
subcategories: z.array(Category),
|
|
91
|
-
})
|
|
92
|
-
);
|
|
93
|
-
Category.parse(testCategory);
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
type LinkedList = null | { value: number; next: LinkedList };
|
|
97
|
-
|
|
98
|
-
const linkedListExample = {
|
|
99
|
-
value: 1,
|
|
100
|
-
next: {
|
|
101
|
-
value: 2,
|
|
102
|
-
next: {
|
|
103
|
-
value: 3,
|
|
104
|
-
next: {
|
|
105
|
-
value: 4,
|
|
106
|
-
next: null,
|
|
107
|
-
},
|
|
108
|
-
},
|
|
109
|
-
},
|
|
110
|
-
};
|
|
111
|
-
|
|
112
|
-
test("recursive union wit z.lazy", () => {
|
|
113
|
-
const LinkedListSchema: z.ZodType<LinkedList> = z.lazy(() =>
|
|
114
|
-
z.union([
|
|
115
|
-
z.null(),
|
|
116
|
-
z.object({
|
|
117
|
-
value: z.number(),
|
|
118
|
-
next: LinkedListSchema,
|
|
119
|
-
}),
|
|
120
|
-
])
|
|
121
|
-
);
|
|
122
|
-
LinkedListSchema.parse(linkedListExample);
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
interface A {
|
|
126
|
-
val: number;
|
|
127
|
-
b: B;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
interface B {
|
|
131
|
-
val: number;
|
|
132
|
-
a?: A | undefined;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
test("mutual recursion with lazy", () => {
|
|
136
|
-
const Alazy: z.ZodType<A> = z.lazy(() =>
|
|
137
|
-
z.object({
|
|
138
|
-
val: z.number(),
|
|
139
|
-
b: Blazy,
|
|
140
|
-
})
|
|
141
|
-
);
|
|
142
|
-
|
|
143
|
-
const Blazy: z.ZodType<B> = z.lazy(() =>
|
|
144
|
-
z.object({
|
|
145
|
-
val: z.number(),
|
|
146
|
-
a: Alazy.optional(),
|
|
147
|
-
})
|
|
148
|
-
);
|
|
149
|
-
|
|
150
|
-
const testData = {
|
|
151
|
-
val: 1,
|
|
152
|
-
b: {
|
|
153
|
-
val: 5,
|
|
154
|
-
a: {
|
|
155
|
-
val: 3,
|
|
156
|
-
b: {
|
|
157
|
-
val: 4,
|
|
158
|
-
a: {
|
|
159
|
-
val: 2,
|
|
160
|
-
b: {
|
|
161
|
-
val: 1,
|
|
162
|
-
},
|
|
163
|
-
},
|
|
164
|
-
},
|
|
165
|
-
},
|
|
166
|
-
},
|
|
167
|
-
};
|
|
168
|
-
|
|
169
|
-
Alazy.parse(testData);
|
|
170
|
-
Blazy.parse(testData.b);
|
|
171
|
-
|
|
172
|
-
expect(() => Alazy.parse({ val: "asdf" })).toThrow();
|
|
173
|
-
});
|
|
174
|
-
|
|
175
|
-
// TODO
|
|
176
|
-
test("mutual recursion with cyclical data", () => {
|
|
177
|
-
const a: any = { val: 1 };
|
|
178
|
-
const b: any = { val: 2 };
|
|
179
|
-
a.b = b;
|
|
180
|
-
b.a = a;
|
|
181
|
-
});
|
|
182
|
-
|
|
183
|
-
test("complicated self-recursion", () => {
|
|
184
|
-
const Category = z.object({
|
|
185
|
-
name: z.string(),
|
|
186
|
-
age: z.optional(z.number()),
|
|
187
|
-
get nullself() {
|
|
188
|
-
return Category.nullable();
|
|
189
|
-
},
|
|
190
|
-
get optself() {
|
|
191
|
-
return Category.optional();
|
|
192
|
-
},
|
|
193
|
-
get self() {
|
|
194
|
-
return Category;
|
|
195
|
-
},
|
|
196
|
-
get subcategories() {
|
|
197
|
-
return z.array(Category);
|
|
198
|
-
},
|
|
199
|
-
nested: z.object({
|
|
200
|
-
get sub() {
|
|
201
|
-
return Category;
|
|
202
|
-
},
|
|
203
|
-
}),
|
|
204
|
-
});
|
|
205
|
-
|
|
206
|
-
type _Category = z.output<typeof Category>;
|
|
207
|
-
});
|
|
208
|
-
|
|
209
|
-
test("lazy initialization", () => {
|
|
210
|
-
const a: any = z.lazy(() => a).optional();
|
|
211
|
-
const b: any = z.lazy(() => b).nullable();
|
|
212
|
-
const c: any = z.lazy(() => c).default({} as any);
|
|
213
|
-
const d: any = z.lazy(() => d).prefault({} as any);
|
|
214
|
-
const e: any = z.lazy(() => e).nonoptional();
|
|
215
|
-
const f: any = z.lazy(() => f).catch({} as any);
|
|
216
|
-
const g: any = z.lazy(() => z.object({ g })).readonly();
|
|
217
|
-
|
|
218
|
-
const baseCategorySchema = z.object({
|
|
219
|
-
name: z.string(),
|
|
220
|
-
});
|
|
221
|
-
type Category = z.infer<typeof baseCategorySchema> & {
|
|
222
|
-
subcategories: Category[];
|
|
223
|
-
};
|
|
224
|
-
const categorySchema: z.ZodType<Category> = baseCategorySchema.extend({
|
|
225
|
-
subcategories: z.lazy(() => categorySchema.array()),
|
|
226
|
-
});
|
|
227
|
-
});
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { expect, test } from "vitest";
|
|
2
|
-
|
|
3
|
-
import * as z from "zod/v4";
|
|
4
|
-
|
|
5
|
-
const literalTuna = z.literal("tuna");
|
|
6
|
-
const literalTunaCustomMessage = z.literal("tuna", {
|
|
7
|
-
message: "That's not a tuna",
|
|
8
|
-
});
|
|
9
|
-
const literalFortyTwo = z.literal(42);
|
|
10
|
-
const literalTrue = z.literal(true);
|
|
11
|
-
|
|
12
|
-
test("passing validations", () => {
|
|
13
|
-
literalTuna.parse("tuna");
|
|
14
|
-
literalFortyTwo.parse(42);
|
|
15
|
-
literalTrue.parse(true);
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
test("failing validations", () => {
|
|
19
|
-
expect(() => literalTuna.parse("shark")).toThrow();
|
|
20
|
-
expect(() => literalFortyTwo.parse(43)).toThrow();
|
|
21
|
-
expect(() => literalTrue.parse(false)).toThrow();
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
test("invalid_literal should have `input` field with data", () => {
|
|
25
|
-
const data = "shark";
|
|
26
|
-
const result = literalTuna.safeParse(data);
|
|
27
|
-
|
|
28
|
-
const issue = result.error!.issues[0];
|
|
29
|
-
expect(issue.code).toBe("invalid_value");
|
|
30
|
-
expect(issue).toMatchInlineSnapshot(`
|
|
31
|
-
{
|
|
32
|
-
"code": "invalid_value",
|
|
33
|
-
"message": "Invalid input: expected "tuna"",
|
|
34
|
-
"path": [],
|
|
35
|
-
"values": [
|
|
36
|
-
"tuna",
|
|
37
|
-
],
|
|
38
|
-
}
|
|
39
|
-
`);
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
test("invalid_literal should return default message", () => {
|
|
43
|
-
const data = "shark";
|
|
44
|
-
const result = literalTuna.safeParse(data);
|
|
45
|
-
|
|
46
|
-
const issue = result.error!.issues[0];
|
|
47
|
-
expect(issue.message).toEqual(`Invalid input: expected \"tuna\"`);
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
test("invalid_literal should return custom message", () => {
|
|
51
|
-
const data = "shark";
|
|
52
|
-
const result = literalTunaCustomMessage.safeParse(data);
|
|
53
|
-
|
|
54
|
-
const issue = result.error!.issues[0];
|
|
55
|
-
expect(issue.message).toEqual(`That's not a tuna`);
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
test("literal default error message", () => {
|
|
59
|
-
const result = z.literal("Tuna").safeParse("Trout");
|
|
60
|
-
expect(result.success).toEqual(false);
|
|
61
|
-
expect(result.error!.issues.length).toEqual(1);
|
|
62
|
-
expect(result.error).toMatchInlineSnapshot(`
|
|
63
|
-
[ZodError: [
|
|
64
|
-
{
|
|
65
|
-
"code": "invalid_value",
|
|
66
|
-
"values": [
|
|
67
|
-
"Tuna"
|
|
68
|
-
],
|
|
69
|
-
"path": [],
|
|
70
|
-
"message": "Invalid input: expected \\"Tuna\\""
|
|
71
|
-
}
|
|
72
|
-
]]
|
|
73
|
-
`);
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
test("literal bigint default error message", () => {
|
|
77
|
-
const result = z.literal(BigInt(12)).safeParse(BigInt(13));
|
|
78
|
-
expect(result.success).toBe(false);
|
|
79
|
-
|
|
80
|
-
expect(result.error!.issues.length).toEqual(1);
|
|
81
|
-
expect(result.error!.issues[0].message).toEqual(`Invalid input: expected 12n`);
|
|
82
|
-
});
|
|
@@ -1,196 +0,0 @@
|
|
|
1
|
-
import { expect, expectTypeOf, test } from "vitest";
|
|
2
|
-
import * as z from "zod/v4";
|
|
3
|
-
|
|
4
|
-
const stringMap = z.map(z.string(), z.string());
|
|
5
|
-
type stringMap = z.infer<typeof stringMap>;
|
|
6
|
-
|
|
7
|
-
test("type inference", () => {
|
|
8
|
-
expectTypeOf<stringMap>().toEqualTypeOf<Map<string, string>>();
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
test("valid parse", () => {
|
|
12
|
-
const result = stringMap.safeParse(
|
|
13
|
-
new Map([
|
|
14
|
-
["first", "foo"],
|
|
15
|
-
["second", "bar"],
|
|
16
|
-
])
|
|
17
|
-
);
|
|
18
|
-
expect(result.success).toEqual(true);
|
|
19
|
-
expect(result.data).toMatchInlineSnapshot(`
|
|
20
|
-
Map {
|
|
21
|
-
"first" => "foo",
|
|
22
|
-
"second" => "bar",
|
|
23
|
-
}
|
|
24
|
-
`);
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
test("valid parse async", async () => {
|
|
28
|
-
const asyncMap = z.map(
|
|
29
|
-
z.string().refine(async () => false, "bad key"),
|
|
30
|
-
z.string().refine(async () => false, "bad value")
|
|
31
|
-
);
|
|
32
|
-
const result = await asyncMap.safeParseAsync(new Map([["first", "foo"]]));
|
|
33
|
-
expect(result.success).toEqual(false);
|
|
34
|
-
expect(result.error).toMatchInlineSnapshot(`
|
|
35
|
-
[ZodError: [
|
|
36
|
-
{
|
|
37
|
-
"code": "custom",
|
|
38
|
-
"path": [
|
|
39
|
-
"first"
|
|
40
|
-
],
|
|
41
|
-
"message": "bad key"
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
"code": "custom",
|
|
45
|
-
"path": [
|
|
46
|
-
"first"
|
|
47
|
-
],
|
|
48
|
-
"message": "bad value"
|
|
49
|
-
}
|
|
50
|
-
]]
|
|
51
|
-
`);
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
test("throws when a Set is given", () => {
|
|
55
|
-
const result = stringMap.safeParse(new Set([]));
|
|
56
|
-
expect(result.success).toEqual(false);
|
|
57
|
-
if (result.success === false) {
|
|
58
|
-
expect(result.error.issues.length).toEqual(1);
|
|
59
|
-
expect(result.error.issues[0].code).toEqual("invalid_type");
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
test("throws when the given map has invalid key and invalid input", () => {
|
|
64
|
-
const result = stringMap.safeParse(new Map([[42, Symbol()]]));
|
|
65
|
-
expect(result.success).toEqual(false);
|
|
66
|
-
if (result.success === false) {
|
|
67
|
-
expect(result.error.issues.length).toEqual(2);
|
|
68
|
-
expect(result.error).toMatchInlineSnapshot(`
|
|
69
|
-
[ZodError: [
|
|
70
|
-
{
|
|
71
|
-
"expected": "string",
|
|
72
|
-
"code": "invalid_type",
|
|
73
|
-
"path": [
|
|
74
|
-
42
|
|
75
|
-
],
|
|
76
|
-
"message": "Invalid input: expected string, received number"
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
"expected": "string",
|
|
80
|
-
"code": "invalid_type",
|
|
81
|
-
"path": [
|
|
82
|
-
42
|
|
83
|
-
],
|
|
84
|
-
"message": "Invalid input: expected string, received symbol"
|
|
85
|
-
}
|
|
86
|
-
]]
|
|
87
|
-
`);
|
|
88
|
-
}
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
test("throws when the given map has multiple invalid entries", () => {
|
|
92
|
-
// const result = stringMap.safeParse(new Map([[42, Symbol()]]));
|
|
93
|
-
|
|
94
|
-
const result = stringMap.safeParse(
|
|
95
|
-
new Map([
|
|
96
|
-
[1, "foo"],
|
|
97
|
-
["bar", 2],
|
|
98
|
-
] as [any, any][]) as Map<any, any>
|
|
99
|
-
);
|
|
100
|
-
|
|
101
|
-
// const result = stringMap.safeParse(new Map([[42, Symbol()]]));
|
|
102
|
-
expect(result.success).toEqual(false);
|
|
103
|
-
if (result.success === false) {
|
|
104
|
-
expect(result.error.issues.length).toEqual(2);
|
|
105
|
-
expect(result.error.issues).toMatchInlineSnapshot(`
|
|
106
|
-
[
|
|
107
|
-
{
|
|
108
|
-
"code": "invalid_type",
|
|
109
|
-
"expected": "string",
|
|
110
|
-
"message": "Invalid input: expected string, received number",
|
|
111
|
-
"path": [
|
|
112
|
-
1,
|
|
113
|
-
],
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
"code": "invalid_type",
|
|
117
|
-
"expected": "string",
|
|
118
|
-
"message": "Invalid input: expected string, received number",
|
|
119
|
-
"path": [
|
|
120
|
-
"bar",
|
|
121
|
-
],
|
|
122
|
-
},
|
|
123
|
-
]
|
|
124
|
-
`);
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
|
|
128
|
-
test("dirty", async () => {
|
|
129
|
-
const map = z.map(
|
|
130
|
-
z.string().refine((val) => val === val.toUpperCase(), {
|
|
131
|
-
message: "Keys must be uppercase",
|
|
132
|
-
}),
|
|
133
|
-
z.string()
|
|
134
|
-
);
|
|
135
|
-
const result = await map.spa(
|
|
136
|
-
new Map([
|
|
137
|
-
["first", "foo"],
|
|
138
|
-
["second", "bar"],
|
|
139
|
-
])
|
|
140
|
-
);
|
|
141
|
-
expect(result.success).toEqual(false);
|
|
142
|
-
if (!result.success) {
|
|
143
|
-
expect(result.error.issues.length).toEqual(2);
|
|
144
|
-
expect(result.error).toMatchInlineSnapshot(`
|
|
145
|
-
[ZodError: [
|
|
146
|
-
{
|
|
147
|
-
"code": "custom",
|
|
148
|
-
"path": [
|
|
149
|
-
"first"
|
|
150
|
-
],
|
|
151
|
-
"message": "Keys must be uppercase"
|
|
152
|
-
},
|
|
153
|
-
{
|
|
154
|
-
"code": "custom",
|
|
155
|
-
"path": [
|
|
156
|
-
"second"
|
|
157
|
-
],
|
|
158
|
-
"message": "Keys must be uppercase"
|
|
159
|
-
}
|
|
160
|
-
]]
|
|
161
|
-
`);
|
|
162
|
-
}
|
|
163
|
-
});
|
|
164
|
-
|
|
165
|
-
test("map with object keys", () => {
|
|
166
|
-
const map = z.map(
|
|
167
|
-
z.object({
|
|
168
|
-
name: z.string(),
|
|
169
|
-
age: z.number(),
|
|
170
|
-
}),
|
|
171
|
-
z.string()
|
|
172
|
-
);
|
|
173
|
-
const data = new Map([
|
|
174
|
-
[{ name: "John", age: 30 }, "foo"],
|
|
175
|
-
[{ name: "Jane", age: 25 }, "bar"],
|
|
176
|
-
]);
|
|
177
|
-
const result = map.safeParse(data);
|
|
178
|
-
expect(result.success).toEqual(true);
|
|
179
|
-
expect(result.data!).toEqual(data);
|
|
180
|
-
|
|
181
|
-
const badData = new Map([["bad", "foo"]]);
|
|
182
|
-
const badResult = map.safeParse(badData);
|
|
183
|
-
expect(badResult.success).toEqual(false);
|
|
184
|
-
expect(badResult.error).toMatchInlineSnapshot(`
|
|
185
|
-
[ZodError: [
|
|
186
|
-
{
|
|
187
|
-
"expected": "object",
|
|
188
|
-
"code": "invalid_type",
|
|
189
|
-
"path": [
|
|
190
|
-
"bad"
|
|
191
|
-
],
|
|
192
|
-
"message": "Invalid input: expected object, received string"
|
|
193
|
-
}
|
|
194
|
-
]]
|
|
195
|
-
`);
|
|
196
|
-
});
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { expect, expectTypeOf, test } from "vitest";
|
|
2
|
-
|
|
3
|
-
import * as z from "zod/v4";
|
|
4
|
-
|
|
5
|
-
const schema = z.nan();
|
|
6
|
-
|
|
7
|
-
test("passing validations", () => {
|
|
8
|
-
schema.parse(Number.NaN);
|
|
9
|
-
schema.parse(Number("Not a number"));
|
|
10
|
-
expectTypeOf<typeof schema._output>().toEqualTypeOf<number>();
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
test("failing validations", () => {
|
|
14
|
-
expect(() => schema.parse(5)).toThrow();
|
|
15
|
-
expect(() => schema.parse("John")).toThrow();
|
|
16
|
-
expect(() => schema.parse(true)).toThrow();
|
|
17
|
-
expect(() => schema.parse(null)).toThrow();
|
|
18
|
-
expect(() => schema.parse(undefined)).toThrow();
|
|
19
|
-
expect(() => schema.parse({})).toThrow();
|
|
20
|
-
expect(() => schema.parse([])).toThrow();
|
|
21
|
-
});
|