Skip to content

Latest commit

 

History

History
1069 lines (514 loc) · 45.8 KB

CHANGELOG.md

File metadata and controls

1069 lines (514 loc) · 45.8 KB

1.5.0 (2024-12-03)

Bug Fixes

  • readme: some typos and update CustomizingErrors doc (#2163) (5c77e0d)

Features

  • Add exact and stripUnknown method to object() (adcdd8d)

1.4.0 (2024-03-06)

Bug Fixes

  • add optional message to nonNullable schema methods (#2119) (9e1df49)

Features

1.3.3 (2023-12-14)

Bug Fixes

  • addMethod: allow Schema without making TypeScript upset (f921fe6)

1.3.2 (2023-09-29)

Bug Fixes

1.3.1 (2023-09-26)

Bug Fixes

  • ValidationError extends Error (bc5121b)

1.3.0 (2023-09-23)

Bug Fixes

Features

  • Allow schema metadata to be strongly typed (#2021) (e593f8f)

Reverts

1.2.0 (2023-05-25)

Features

1.1.1 (2023-04-14)

Bug Fixes

  • docs: Broken anchores (#1979) (4ed4576)
  • make null validation errors consistent across schema (#1982) (f999497)
  • object: excluded edges are merged when concating schema (c07b08f), closes #1969

1.1.0 (2023-04-12)

Bug Fixes

Features

  • only resolve "strip()" for schema when used as an object field (#1977) (2ba1104)
  • respect context for object's children (#1971) (edfe6ac)

1.0.2 (2023-02-27)

Bug Fixes

  • fix array describe not including conditions (4040592), closes #1920

1.0.1 (2023-02-25)

1.0.0 (2023-02-08)

Migrating from 0.x to 1.0.0: #1906

1.0.0-beta.8 (2022-11-10)

Bug Fixes

Features

BREAKING CHANGES

  • previously 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 behavior
  • Use a simpler regex for email addresses that aligns with browsers, and add docs about how to override.

1.0.0-beta.7 (2022-08-20)

1.0.0-beta.6 (2022-08-20)

Bug Fixes

  • change mixed generic to unknown from any (5e8e8ef)
  • count stripping unknown fields as changes for object casts (2b4773c), closes #1620
  • types: export more types (433a452)

1.0.0-beta.5 (2022-08-19)

Bug Fixes

Features

BREAKING CHANGES

  • The types for Lazy have changes a bit, it's unlikely that this affects anyone but it is technically a breaking change.

1.0.0-beta.4 (2022-04-10)

Bug Fixes

  • boolean: calling optional made it non-optional (4ba02a1), closes #1627

1.0.0-beta.3 (2022-03-09)

Bug Fixes

BREAKING CHANGES

  • 'required' no longer adds a test for most schema, to determine if a schema is required, check it's spec.optional and spec.nullable values, also accessible via describe()

1.0.0-beta.2 (2022-01-21)

Bug Fixes

Features

BREAKING CHANGES

  • 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

1.0.0-beta.1 (2022-01-03)

Features

  • flat bundles and size reductions (753abdf)

1.0.0-beta.0 (2021-12-29)

  • feat!: add json() method and remove default object/array coercion (94b73c4)

Features

  • Make Array generic consistent with others (a82353f)

BREAKING CHANGES

  • types only, ArraySchema initial generic is the array type not the type of the array element. array<T>() is still the inner type.
  • 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

1.0.0-alpha.4 (2021-12-29)

Bug Fixes

Features

BREAKING CHANGES

  • 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)
  • 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
  • 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
  })

1.0.0-alpha.3 (2021-12-28)

Bug Fixes

Features

  • More intuitive Object generics, faster types (#1540) (912e0be)

1.0.0-alpha.2 (2020-12-18)

1.0.0-alpha.1 (2020-12-18)

Bug Fixes

  • types: make properties optional (ba107cb)
  • types: make properties optional (495ae84)

Features

  • remove unneeded Out type from schema (0bf9732)

1.0.0-alpha.0 (2020-12-14)

Features

  • add describe and meta to lazy, with resolve options (e56fea3)

0.32.11 (2021-10-12)

Bug Fixes

0.32.10 (2021-10-11)

Bug Fixes

  • carry over excluded edges when concating objects (5334349), closes #1423
  • fix the typo for the array length validation (#1287) (4c17508)
  • missing transforms on concat (f3056f2), closes #1260
  • oneOf, notOneOf swallowing multiple errors (#1434) (7842afb)
  • prevent unhandled Promise rejection when returning rejected Promise inside test function (#1327) (5eda549)
  • SchemaOf<>'s treatment of Date objects. (#1305) (91ace1e), closes #1243 #1302
  • update lodash/lodash-es to fix CVEs flagged in 4.17.20 (#1334) (70d0b67)
  • utils: use named functions for default exports (#1329) (acbb8b4)

Features

0.32.9 (2021-02-17)

Bug Fixes

0.32.6 (2020-12-08)

Bug Fixes

0.32.5 (2020-12-07)

Bug Fixes

  • types: change base.default() to any (01c6930)

0.32.4 (2020-12-07)

Bug Fixes

  • types: rm base pick/omit types as they conflict with more specific ones (14e2c8c)

Features

0.32.3 (2020-12-07)

Bug Fixes

  • types: AnyObjectSchema anys (1c54665)

0.32.2 (2020-12-07)

Bug Fixes

0.32.1 (2020-12-04)

Bug Fixes

0.32.0 (2020-12-03)

Features

BREAKING CHANGES

  • concat doesn't check for "unset" nullable or presence when merging meaning the nullability and presence will always be the same as the schema passed to concat(). They can be overridden if needed after concatenation
  • schema factory functions are no longer constructors. The classes are now also exported for extension or whatever else. e.g. import { StringSchema, string } from 'yup'

0.31.1 (2020-12-01)

Bug Fixes

  • swallowed errors on nested schema with no tests (5316ab9), closes #1127

Features

  • add isTrue and isFalse checks on boolean (#910) (630a641)

0.31.0 (2020-11-23)

Bug Fixes

Features

  • add array.length() and treat empty arrays as valid for required() (fbc158d)
  • add object.pick and object.omit (425705a)
  • deprecate the getter overload of default() (#1119) (5dae837)
  • more strictly coerce strings, exclude arrays and plain objects (963d2e8)

BREAKING CHANGES

  • array().required() will no longer consider an empty array missing and required checks will pass.

To maintain the old behavior change to:

array().required().min(1)
  • plain objects and arrays are no long cast to strings automatically

to recreate the old behavior:

string().transform((_, input) => input != null && input.toString ? input.toString() : value);

0.30.0 (2020-11-19)

Bug Fixes

Features

  • exposes context on mixed.test function and add originalValue to context (#1021) (6096064)

Performance Improvements

  • reduce function calls for shallower stacks (#1022) (01da7e1)

BREAKING CHANGES

  • defined() now doesn't automatically allow null, this was a bug. to mimic the old behavior add nullable() to schema with defined()

0.29.3 (2020-08-04)

0.29.2 (2020-07-27)

Bug Fixes

  • handle sparse array positions as undefined (#950) (4e77348)

Features

0.29.1 (2020-05-27)

Bug Fixes

  • present checks for array and strings (ecd8ebe), closes #913

Features

  • allow access to parent schema (and unlimited ancestors!) in test context (#556) (db35920)

0.29.0 (2020-05-19)

  • feat!: update docs to account for changes in types and add additional example (#891) (e105a71), closes #891

Bug Fixes

  • object bug when nested object has a property with strict (#871) (7f52b8a)

Features

  • expose oneOf and notOneOf values on description (#885) (08dad5f)

BREAKING CHANGES

  • For users of @types/yup only, no function changes but the type def change is large enough that it warranted a major bump here

0.28.5 (2020-04-30)

Bug Fixes

  • allow passing of function to .matches() options/message param (#850) (16efe88)
  • bug in object.noUnknown for nullish values #854 (#855) (ccb7c7d)

0.28.4 (2020-04-20)

Bug Fixes

Features

  • make schema.type and array.innerType public API's (8f00d50)
  • provide keys in default noUnknown message (#579) (ad5d015)

0.28.3 (2020-03-06)

Bug Fixes

0.28.0 (2019-12-16)

Bug Fixes

Features

BREAKING CHANGES

  • use Number.isInteger. This works correctly for large numbers.

Related to #147

  • reach() no longer resolves the returned schema meaning it's conditions have not been processed yet; prefer validateAt/castAt where it makes sense
  • required no longer shows up twice in describe() output for array and strings, which also no longer override required

0.27.0 (2019-03-14)

Bug Fixes

Features

BREAKING CHANGES

  • reach() no longer resolves the returned schema meaning it's conditions have not been processed yet; prefer validateAt/castAt where it makes sense
  • required no longer shows up twice in describe() output for array and strings, which also no longer override required

v0.26.3 - Tue, 28 Aug 2018 15:00:04 GMT

v0.26.0 - Fri, 20 Jul 2018 15:39:03 GMT

BREAKING CHANGES

  • locale number config properties less and more are now lessThan and moreThan

v0.25.1 - Wed, 16 May 2018 23:59:14 GMT

v0.25.0 - Tue, 15 May 2018 21:43:54 GMT

  • remove default export, there are only named exports now!
  • fix message defaults for built-in tests, default is only used for undefined messages
  • fix the describe() method so it works with nested schemas

v0.24.1 - Fri, 09 Feb 2018 19:09:02 GMT

v0.24.0 - Tue, 16 Jan 2018 14:44:32 GMT

v0.23.0 - Thu, 12 Oct 2017 17:08:47 GMT

** Probably not breaking but we are being safe about it **

  • 🎉 Add Synchronous validation! #94

** Features **

  • Custom locales without import order #125

v0.22.1 - Thu, 12 Oct 2017 14:49:16 GMT

  • Fix bug in browsers without symbol #132

v0.22.0 - Sat, 26 Aug 2017 14:48:57 GMT

** Breaking **

  • Use native Set and lodash CloneDeep: #109

** Fixes and Features

  • Better custom locale support: #105
  • fix some messages: #112
  • Clearer errors for common mistakes: #108
  • New string validation length: #67

v0.21.3 - Wed, 18 Jan 2017 15:39:25 GMT

  • 7bc01e0 [added] deep path support for from

v0.21.2 - Fri, 09 Sep 2016 16:52:44 GMT

  • be80413 [fixed] default in concat()

v0.21.1 - Mon, 29 Aug 2016 18:39:29 GMT

v0.21.0 - Mon, 29 Aug 2016 18:29:31 GMT

  • 8a8cc5b [changed] remove case aliases and simplify camelCase

v0.20.0 - Wed, 20 Jul 2016 02:02:08 GMT

  • f7446d2 [fixed] pass path correctly to cast()
  • 9b5232a [added] allow function then/otherwise bodies
  • 73858fe [changed] Don't throw on undefined values in cast()

v0.19.1 - Mon, 18 Jul 2016 21:53:05 GMT

  • 69c0ad4 [fixed] array().concat() incorrectly cleared the sub-schema

v0.19.0 - Fri, 24 Jun 2016 15:19:48 GMT

  • b0dd021 [changed] Split integer(), remove transform
  • 758ac51 [added] string.ensure
  • f2b0078 [changed] Less aggressive type coercions
  • ab94510 [fixed] boxed number allowed NaN

v0.18.3 - Mon, 09 May 2016 15:50:47 GMT

v0.18.2 - Mon, 25 Apr 2016 18:23:13 GMT

v0.18.1 - Mon, 25 Apr 2016 15:01:16 GMT

  • 816e607 [added] validation params to ValidationError

v0.18.0 - Sat, 23 Apr 2016 01:20:27 GMT

  • f827822 [changed] validate() on objects won't cast nested schema with strict()

v0.17.6 - Thu, 21 Apr 2016 14:59:59 GMT

  • 139dd24 [changed] lazy qualifies as a yup schema

v0.17.5 - Thu, 21 Apr 2016 11:20:16 GMT

  • c553cc0 [added] options to lazy resolve

v0.17.4 - Wed, 20 Apr 2016 14:15:39 GMT

v0.17.3 - Tue, 19 Apr 2016 20:24:09 GMT

v0.17.2 - Tue, 19 Apr 2016 16:46:54 GMT

v0.17.1 - Thu, 14 Apr 2016 19:12:22 GMT

  • ab78f54 [fixed] reach with lazy()

v0.17.0 - Thu, 14 Apr 2016 17:13:50 GMT

  • 6e9046b [changed] clean up interface, added lazy(), and fixed object strict semantics

v0.16.5 - Tue, 12 Apr 2016 13:36:38 GMT

  • c3b613b [added] strip() method for objects
  • 68fc010 [added] array.of shorthand

v0.16.4 - Sat, 09 Apr 2016 20:13:13 GMT

  • f30d1e3 [fixed] bug in date min/max with ref

v0.16.3 - Thu, 07 Apr 2016 19:13:23 GMT

v0.16.2 - Thu, 07 Apr 2016 17:57:44 GMT

  • 83c0656 [added] meta() and describe()

v0.16.1 - Tue, 05 Apr 2016 20:56:45 GMT

  • 9d70a7b [changed] doesn't throw when context is missing.
  • 594fa53 [changed] added reach error

v0.16.0 - Tue, 05 Apr 2016 20:17:40 GMT

  • 75739b8 [added] context sensitive reach()

v0.15.0 - Tue, 29 Mar 2016 14:56:15 GMT

  • 3ae5fdc [changed] null is not considered an empty value for isValid
  • 9eb42c6 [added] refs!

v0.14.2 - Tue, 29 Mar 2016 14:48:37 GMT

v0.14.1 - Tue, 16 Feb 2016 19:51:25 GMT

  • ff19720 [fixed] noUnknown and stripUnknown work and propagate to children

v0.14.0 - Mon, 08 Feb 2016 16:17:40 GMT

  • 86b6446 [fixed] camelCase should maintain leading underscores

v0.13.0 - Mon, 01 Feb 2016 20:49:40 GMT

  • 335eb18 [fixed] pass options to array sub schema
  • f7f631d [changed] oneOf doesn't include empty values
  • 0a7b2d4 [fixed] type and whitelist/blacklist checks threw inconsistent errors
  • 1274a45 [changed] required() to non-exclusive

v0.12.0 - Tue, 12 Jan 2016 19:12:18 GMT

  • 5bc250f [changed] don't clone unspecified object keys
  • 069c6fd [added] withMutation() method
  • e1d4891 [fixed] don't alias non existent fields

v0.11.0 - Sun, 08 Nov 2015 17:17:09 GMT

  • 686f6b1 [changed] concat() allows mixing "mixed" and other type

0.9.0

breaking

  • test functions are no longer passed path and context as arguments, Instead they are now values on this inside the test function.
  • test functions are longer called with the schema as their this value, use this.schema instead.

other changes

  • test functions are call with with a new context object, including, options, parent and createError for dynamically altering validation errors.

0.8.3

  • document stripUnknown
  • add recursive option
  • add noUnknown() test to objects

0.8.2

  • default for objects now adds keys for all fields, not just fields with non empty defaults

0.8.1

  • bug fix

0.8.0

breaking

  • test functions are now passed path and context values along with the field value. Only breaks if using the callback style of defining custom validations

0.7.0

breaking

  • the validation() method has been renamed to test() and has a new signature requiring a name argument
  • exclusive validations now trump the previous one instead of defering to it e.g: string().max(10).max(15) has a max of 15 instead of 10

other changes

  • expose advanced signature for custom validation tests, gives finer grained control over how tests are added
  • added the abortEarly (default: true) option
  • transforms are passed an addition parameter: 'originalValue' you allow recovering from a bad transform further up the chain (provided no one mutated the value)

0.6.3

  • fix concat() method and add tests

0.6.2

  • fix validations where nullable fields were failing due to null values e.g string.max()

0.6.1

  • fix export error

0.6.0

breaking

  • Removed the extend and create methods. Use whatever javascript inheritance patterns you want instead.
  • the resolution order of defaults and coercions has changed. as well as the general handling of null values.
    • Number: null will coerce to false when nullable() is not specified. NaN values will now fail isType() checks
    • String: null will coerce to '' when nullable() is not specified
    • Date: Invalid dates will not be coerced to null, but left as invalid date, This is probably not a problem for anyone as invalid dates will also fail isType() checks
  • default values are cloned everytime they are returned, so it is impossible to share references to defaults across schemas. No one should be doing that anyway
  • stopped pretending that using schemas as conditions in when() actually worked (it didn't)

other changes

  • transform() now passes the original value to each transformer. Allowing you to recover from a bad transform.
  • added the equals() alias for oneOf

0.5.0

breaking

  • isValid is now async, provide a node style callback, or use the promise the method returns to read the validity. This change allows for more robust validations, specifically remote ones for client code (or db queries for server code). The cast method is still, and will remain, synchronous.

other changes

  • added validate method (also async) which resolves to the value, and rejects with a new ValidationError