59b89be
Thanks @arv for reporting this! - Revert changes since v0.3.12 as they were backwards incompatible
8aaad50
Thanks @jviide! - Mark.optional(() => ...)
as non-experimental and recommend it over the now-deprecated.default(x)
-
f78c082
Thanks @jviide! - Add experimental support for.optional(() => x)
The
.optional()
method now supports default value functions for replacingundefined
and missing values from the input and wrapped validator. The functionality is similar to.default(x)
, except thatdefaultFn
has to be a function and is executed for each validation run. This allows patterns like the following:const Item = v.object({ id: v.string() }); const Items = v.array(Item).optional(() => []);
This avoids a common pitfall with using
.default([])
for the same pattern. As the newly created empty arrays are not shared, mutating them is safe(r) as it doesn't affect other validation outputs.This feature is marked experimental for the time being.
-
43513b6
Thanks @jviide! - Add support for variadic tuple typesTuple and array types now have a new method,
.concat()
that can be used to create variadic tuple types. -
43513b6
Thanks @jviide! - Makev.array()
a shorthand forv.array(v.unknown())