Changelog
1.0.0-beta.8 (2022-11-10)
oneOf
required adding null
explicitly to allowed values when using oneOf. Folks have found this confusing and unintuitive so I am deferring and adjusting the behaviorChangelog
1.0.0-beta.5 (2022-08-19)
Changelog
1.0.0-beta.3 (2022-03-09)
spec.optional
and spec.nullable
values, also accessible via describe()
Changelog
1.0.0-beta.2 (2022-01-21)
add originalValue to TestContext type (#1527) (fcc5ae7), closes /github.com/abnersajr/DefinitelyTyped/blob/a186d99d0c3a92424691a82130374a1b9145c7cd/types/yup/index.d.ts#L446
Merge next into master (#1547) (366f7d8), closes #1547 #1542 #1541 #1543 #1545
The builder object version of when()
requires then
and otherwise
to be
functions (schema: Schema) => Schema
.
The function version of when()
has been changed to make it easier to type. values are always passed as an array and schema, and options always the second and third argument. this
is no longer set to the schema instance. and all functions must return a schema to be type safe
string()
- .when('other', function (other) => {
- if (other) return this.required()
+ .when('other', ([other], schema) => {
+ return other ? schema.required() : schema
})
concat works shallowly now. Previously concat functioned like a deep merge for object, which produced confusing behavior with incompatible concat'ed schema. Now concat for objects works similar to how it works for other types, the provided schema is applied on top of the existing schema, producing a new schema that is the same as calling each builder method in order
docs: update readme
chore: update to readonly arrays and test string type narrowing
test: add boolean tests
docs: more docs
feat: allow mixed schema to specify type check
mixed
schema are no longer treated as the base class for other schema types. It hasn't been for a while, but we've done some nasty prototype slinging to make it behave like it was. Now typescript types should be 1 to 1 with the actual classes yup exposes.
In general this should not affect anything unless you are extending (via addMethod
or otherwise) mixed
prototype.
import {
- mixed,
+ Schema,
} from 'yup';
- addMethod(mixed, 'method', impl)
+ addMethod(Schema, 'method', impl)
chore: prep work for toggling coercion
Publish v1.0.0-alpha.4
chore: docs
feat!: add json() method and remove default object/array coercion
object and array schema no longer parse JSON strings by default, nor do they return null
for invalid casts.
object().json().cast('{}')
array().json().cast('[]')
to mimic the previous behavior
feat: Make Array generic consistent with others
types only, ArraySchema
initial generic is the array type not the type of the array element. array<T>()
is still the inner type.
Publish v1.0.0-beta.0
docs
Changelog
1.0.0-beta.0 (2021-12-29)
ArraySchema
initial generic is the array type not the type of the array element. array<T>()
is still the inner type.null
for invalid casts.object().json().cast('{}')
array().json().cast('[]')
to mimic the previous behavior
Changelog
1.0.0-alpha.4 (2021-12-29)
when
types and API (#1542) (da74254)mixed
schema are no longer treated as the base class for other schema types. It hasn't been for a while, but we've done some nasty prototype slinging to make it behave like it was. Now typescript types should be 1 to 1 with the actual classes yup exposes.In general this should not affect anything unless you are extending (via addMethod
or otherwise) mixed
prototype.
import {
- mixed,
+ Schema,
} from 'yup';
- addMethod(mixed, 'method', impl)
+ addMethod(Schema, 'method', impl)
when()
requires then
and otherwise
to be
functions (schema: Schema) => Schema
.when()
has been changed to make it easier to type. values are always passed as an array and schema, and options always the second and third argument. this
is no longer set to the schema instance. and all functions must return a schema to be type safe string()
- .when('other', function (other) => {
- if (other) return this.required()
+ .when('other', ([other], schema) => {
+ return other ? schema.required() : schema
})