34 KiB
34 KiB
Changelog
All notable changes to this project will be documented in this file.
4.0.0 - (2024-05-20)
🚀 Features
- *: Add custom message options to all shapes, validators and constraints (#231) (44a5cea)
- 💥 BREAKING CHANGE: Most shapes and validators that were previously getters are now functions to allow for custom options. The following list should show all of the changes, but if we have forgot any and you get an error saying something should be a function where you have provided a constant it is safe to assume you simply need to add
()to your code for it to work again. - 💥 BREAKING CHANGE:
PickDefinedutility type has been removed. - 💥 BREAKING CHANGE:
PickUndefinedMakeOptionalutility type has been removed. - 💥 BREAKING CHANGE:
NonNullObjectutility type has been removed. - 💥 BREAKING CHANGE:
s.anyis nows.any()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.array(T).lengthEqualis nows.array(T).lengthEqual()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.array(T).lengthGreaterThanis nows.array(T).lengthGreaterThan()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.array(T).lengthGreaterThanOrEqualis nows.array(T).lengthGreaterThanOrEqual()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.array(T).lengthLessThanis nows.array(T).lengthLessThan()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.array(T).lengthLessThanOrEqualis nows.array(T).lengthLessThanOrEqual()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.array(T).lengthNotEqualis nows.array(T).lengthNotEqual()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.array(T).lengthRangeis nows.array(T).lengthRange()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.array(T).lengthRangeExclusiveis nows.array(T).lengthRangeExclusive()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.array(T).lengthRangeInclusiveis nows.array(T).lengthRangeInclusive()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.array(T).uniqueis nows.array(T).unique()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.arrayis nows.array()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.bigint.divisibleByis nows.bigint().divisibleBy()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.bigint.equalis nows.bigint().equal()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.bigint.greaterThanis nows.bigint().greaterThan()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.bigint.greaterThanOrEqualis nows.bigint().greaterThanOrEqual()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.bigint.lessThanis nows.bigint().lessThan()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.bigint.lessThanOrEqualis nows.bigint().lessThanOrEqual()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.bigint.notEqualis nows.bigint().notEqual()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.bigint().absis nows.bigint().abs()to allow for custom options as second argument. - 💥 BREAKING CHANGE:
s.bigint().negativeis nows.bigint().negative()to allow for custom options as second argument. - 💥 BREAKING CHANGE:
s.bigint().positiveis nows.bigint().positive()to allow for custom options as second argument. - 💥 BREAKING CHANGE:
s.bigintis nows.bigint()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.bigInt64Arrayis nows.bigInt64Array()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.bigUint64Arrayis nows.bigUint64Array()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.boolean.falseis nows.boolean().false()to allow for custom options as second argument. - 💥 BREAKING CHANGE:
s.boolean.trueis nows.boolean().true()to allow for custom options as second argument. - 💥 BREAKING CHANGE:
s.booleanis nows.boolean()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.default(...)now gets a second parameter to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.default(...).default(...)now gets a second parameter to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.date.equalis nows.date().equal()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.date.greaterThanis nows.date().greaterThan()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.date.greaterThanOrEqualis nows.date().greaterThanOrEqual()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.date.invalidis nows.date().invalid()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.date.lessThanis nows.date().lessThan()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.date.lessThanOrEqualis nows.date().lessThanOrEqual()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.date.notEqualis nows.date().notEqual()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.date.validis nows.date().valid()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.dateis nows.date()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.enum(1, 2, 3)is nows.enum([1, 2, 3])to allow for custom options as second argument. - 💥 BREAKING CHANGE:
s.float32Arrayis nows.float32Array()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.float64Arrayis nows.float64Array()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.int16Arrayis nows.int16Array()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.int32Arrayis nows.int32Array()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.int8Arrayis nows.int8Array()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.neveris nows.never()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.nullis nows.null()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.nullableis nows.nullable()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.nullishis nows.nullish()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.nullishis nows.nullish()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.number.absis nows.number().abs()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.number.ceilis nows.number().ceil()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.number.divisibleByis nows.number().divisibleBy()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.number.equalis nows.number().equal()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.number.finiteis nows.number().finite()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.number.flooris nows.number().floor()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.number.froundis nows.number().fround()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.number.greaterThanis nows.number().greaterThan()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.number.greaterThanOrEqualis nows.number().greaterThanOrEqual()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.number.intis nows.number().int()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.number.lessThanis nows.number().lessThan()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.number.lessThanOrEqualis nows.number().lessThanOrEqual()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.number.negativeis nows.number().negative()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.number.notEqualis nows.number().notEqual()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.number.positiveis nows.number().positive()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.number.roundis nows.number().round()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.number.safeIntis nows.number().safeInt()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.number.signis nows.number().sign()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.number.truncis nows.number().trunc()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.numberis nows.number()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.object.ignoreis nows.object().ignore()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.object.partialis nows.object().partial()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.object.passthroughis nows.object().passthrough()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.object.requiredis nows.object().required()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.object.strictis nows.object().strict()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.optionalis nows.optional()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.required(...)now gets a second parameter to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.setis nows.set()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.string.dateis nows.string().date()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.string.emailis nows.string().email()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.string.ipv4is nows.string().ipv4()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.string.ipv6is nows.string().ipv6()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.string().ipis nows.string().ip()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.string().lengthEqualis nows.string().lengthEqual()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.string().lengthGreaterThanis nows.string().lengthGreaterThan()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.string().lengthGreaterThanOrEqualis nows.string().lengthGreaterThanOrEqual()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.string().lengthLessThanis nows.string().lengthLessThan()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.string().lengthLessThanOrEqualis nows.string().lengthLessThanOrEqual()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.string().lengthNotEqualis nows.string().lengthNotEqual()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.string().phoneis nows.string().phone()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.string().regexis nows.string().regex()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.string().urlis nows.string().url()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.stringis nows.string()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.tuple(1, 2, 3)is nows.tuple([1, 2, 3])to allow for custom options as second argument. - 💥 BREAKING CHANGE:
s.typedArray(T).byteLengthEqualis nows.typedArray(T).byteLengthEqual()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.typedArray(T).byteLengthGreaterThanis nows.typedArray(T).byteLengthGreaterThan()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.typedArray(T).byteLengthGreaterThanOrEqualis nows.typedArray(T).byteLengthGreaterThanOrEqual()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.typedArray(T).byteLengthLessThanis nows.typedArray(T).byteLengthLessThan()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.typedArray(T).byteLengthLessThanOrEqualis nows.typedArray(T).byteLengthLessThanOrEqual()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.typedArray(T).byteLengthNotEqualis nows.typedArray(T).byteLengthNotEqual()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.typedArray(T).byteLengthRangeis nows.typedArray(T).byteLengthRange()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.typedArray(T).byteLengthRangeExclusiveis nows.typedArray(T).byteLengthRangeExclusive()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.typedArray(T).byteLengthRangeInclusiveis nows.typedArray(T).byteLengthRangeInclusive()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.typedArray(T).lengthEqualis nows.typedArray(T).lengthEqual()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.typedArray(T).lengthGreaterThanis nows.typedArray(T).lengthGreaterThan()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.typedArray(T).lengthGreaterThanOrEqualis nows.typedArray(T).lengthGreaterThanOrEqual()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.typedArray(T).lengthLessThanis nows.typedArray(T).lengthLessThan()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.typedArray(T).lengthLessThanOrEqualis nows.typedArray(T).lengthLessThanOrEqual()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.typedArray(T).lengthNotEqualis nows.typedArray(T).lengthNotEqual()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.typedArray(T).lengthRangeis nows.typedArray(T).lengthRange()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.typedArray(T).lengthRangeExclusiveis nows.typedArray(T).lengthRangeExclusive()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.typedArray(T).lengthRangeInclusiveis nows.typedArray(T).lengthRangeInclusive()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.uint16Arrayis nows.uint16Array()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.uint32Arrayis nows.uint32Array()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.uint8Arrayis nows.uint8Array()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.uint8ClampedArrayis nows.uint8ClampedArray()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.undefinedis nows.undefined()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.union(1, 2, 3).requiredis nows.union(1, 2, 3).required()to allow for custom options as argument. - 💥 BREAKING CHANGE:
s.union(1, 2, 3)is nows.union([1, 2, 3])to allow for custom options as second argument. - 💥 BREAKING CHANGE:
s.unknownis nows.unknown()to allow for custom options as argument. - 💥 BREAKING CHANGE:
uniqueArrayis now a function (instead of a constant) to allow for custom options as argument. - 💥 BREAKING CHANGE:
dateInvalidis now a function (instead of a constant) to allow for custom options as argument. - 💥 BREAKING CHANGE:
dateValidis now a function (instead of a constant) to allow for custom options as argument. - 💥 BREAKING CHANGE:
numberFiniteis now a function (instead of a constant) to allow for custom options as argument. - 💥 BREAKING CHANGE:
numberIntis now a function (instead of a constant) to allow for custom options as argument. - 💥 BREAKING CHANGE:
numberNaNis now a function (instead of a constant) to allow for custom options as argument. - 💥 BREAKING CHANGE:
numberNotNaNis now a function (instead of a constant) to allow for custom options as argument. - 💥 BREAKING CHANGE:
numberSafeIntis now a function (instead of a constant) to allow for custom options as argument.
- 💥 BREAKING CHANGE: Most shapes and validators that were previously getters are now functions to allow for custom options. The following list should show all of the changes, but if we have forgot any and you get an error saying something should be a function where you have provided a constant it is safe to assume you simply need to add
3.9.7 - (2024-03-31)
🐛 Bug Fixes
- Allow engines.node >= 16 (a4d8c8d)
3.9.6 - (2024-01-19)
🐛 Bug Fixes
- Fixed commonjs typings export mapping (#341) (a5518aa)
3.9.5 - (2023-12-15)
🐛 Bug Fixes
- Properly publish all dist files (8e925fa)
3.9.4 - (2023-12-04)
🐛 Bug Fixes
- Properly split CJS and ESM (9bb1ff9)
🧪 Testing
- Update path to global file (d03b19f)
3.9.3 - (2023-10-13)
🏠 Refactor
- Change email regex (#306) (c5d49cf)
3.9.2 - (2023-06-04)
🐛 Bug Fixes
- arrayvalidator: Fixed runaway type instantiation with TypeScript >=5.1 (#275) (f59d901)
3.9.1 - (2023-06-02)
🐛 Bug Fixes
- types: Move the
typescondition to the front (#273) (5a3e202)
3.9.0 - (2023-05-09)
🐛 Bug Fixes
- Resolve minor grammar mistake (#260) (62df609)
🚀 Features
- Add BaseValidator.describe (#267) (d9e1a2d)
3.8.2 - (2023-04-02)
🐛 Bug Fixes
3.8.1 - (2022-12-15)
🐛 Bug Fixes
- Fixed lodash esm import (#230) (63def7b)
3.8.0 - (2022-12-11)
🏠 Refactor
- Remove
NonNullObject(#227) (04d3934)
🚀 Features
- Add
whenconstraint (#223) (8eade90)
3.7.1 - (2022-11-27)
🐛 Bug Fixes
- Fixed "jump to definition" for
undefinedToOptionalgoing to wrong symbol (#226) (6aab6d0)
📝 Documentation
- Add @legendhimslef as a contributor (499522a)
3.7.0 - (2022-10-02)
📝 Documentation
🚀 Features
- Add
s.string.phone(#202) (7d122d5)
3.6.0 - (2022-08-29)
🐛 Bug Fixes
- Typescript 4.8 compatibility (#179) (2281535)
🚀 Features
- Add
Validator#is(#183) (5114f95)
3.5.1 - (2022-07-17)
🐛 Bug Fixes
- Fast deep equal import (#155) (5ce8ff6)
3.5.0 - (2022-07-10)
🏠 Refactor
- Port net module (#149) (5f26e32)
🐛 Bug Fixes
- Ensure browser compatibility (#150) (92d05d8)
- Fixed
s.arraytype inference (#153) (a5948dc) - Fixed
shape#arraytypes (#146) (43016a0)
🚀 Features
- Lazy validator (#147) (807666e)
- Reshape finally (#148) (d3751f6)
- arrays: Add unique (#141) (ad7af34)
3.4.1 - (2022-07-03)
🏠 Refactor
- Move all type utilities to one file (#139) (61cab3d)
🐛 Bug Fixes
- Return array-validator from length* methods (#140) (75b1f9a)
🧪 Testing
- Typechecking for tests (#145) (273cdc8)
3.4.0 - (2022-06-29)
🚀 Features
- Add
requiredin object validation (#137) (928f7be)
3.3.2 - (2022-06-26)
🐛 Bug Fixes
- Make keys optional in object parsing (#134) (57a3719)
3.3.1 - (2022-06-22)
🐛 Bug Fixes
- Add generic type to parse (#133) (90c91aa)
3.3.0 - (2022-06-19)
🐛 Bug Fixes
- Compile for es2020 instead of es2021 (#128) (051344d)
🚀 Features
- Allow passing functions in
setValidationEnabled(#131) (e1991cf)
🧪 Testing
- Migrate to vitest (#126) (4d80969)
3.2.0 - (2022-06-11)
🚀 Features
- Add disabling of validators (#125) (e17af95)
3.1.0 - (2022-06-04)
🐛 Bug Fixes
- ObjectValidator: Fix #121 (#122) (ecfad7e)
📝 Documentation
- readme: Clarify the difference between validations and schemas and add table of contents (#108) (dc492a3)
🚀 Features
- StringValidator: Add date string checks (#106) (1b72907)
3.0.0 - (2022-05-06)
🏃 Performance
- Speed up object validation a LOT (#101) (817278e)
🐛 Bug Fixes
-
Expand method names (#100) (741490f)}
💥 Breaking Changes:
date.eqhas been renamed todate.equalstring.lengthLthas been renamed tostring.lengthLessThanstring.lengthLehas been renamed tostring.lengthLessThanOrEqualstring.lengthGthas been renamed tostring.lengthGreaterThanstring.lengthGehas been renamed tostring.lengthGreaterThanOrEqualstring.lengthEqhas been renamed tostring.lengthEqualstring.lengthNehas been renamed tostring.lengthNotEqualnumber.gthas been renamed tonumber.greaterThannumber.gehas been renamed tonumber.greaterThanOrEqualnumber.lthas been renamed tonumber.lessThannumber.lehas been renamed tonumber.lessThanOrEqualnumber.eqhas been renamed tonumber.equalnumber.nehas been renamed tonumber.notEqualbigint.gthas been renamed tobigint.greaterThanbigint.gehas been renamed tobigint.greaterThanOrEqualbigint.lthas been renamed tobigint.lessThanbigint.lehas been renamed tobigint.lessThanOrEqualbigint.eqhas been renamed tobigint.equalbigint.nehas been renamed tobigint.notEqualboolean.eqhas been renamed toboolean.equalboolean.nehas been renamed toboolean.notEqualarray.lengthLthas been renamed toarray.lengthLessThanarray.lengthLehas been renamed toarray.lengthLessThanOrEqualarray.lengthGthas been renamed toarray.lengthGreaterThanarray.lengthGehas been renamed toarray.lengthGreaterThanOrEqualarray.lengthEqhas been renamed toarray.lengthEqualarray.lengthNehas been renamed toarray.lengthNotEqualtypedArray.lengthLthas been renamed totypedArray.lengthLessThantypedArray.lengthLehas been renamed totypedArray.lengthLessThanOrEqualtypedArray.lengthGthas been renamed totypedArray.lengthGreaterThantypedArray.lengthGehas been renamed totypedArray.lengthGreaterThanOrEqualtypedArray.lengthEqhas been renamed totypedArray.lengthEqualtypedArray.lengthNehas been renamed totypedArray.lengthNotEqualtypedArray.byteLengthLthas been renamed totypedArray.byteLengthLessThantypedArray.byteLengthLehas been renamed totypedArray.byteLengthLessThanOrEqualtypedArray.byteLengthGthas been renamed totypedArray.byteLengthGreaterThantypedArray.byteLengthGehas been renamed totypedArray.byteLengthGreaterThanOrEqualtypedArray.byteLengthEqhas been renamed totypedArray.byteLengthEqualtypedArray.byteLengthNehas been renamed totypedArray.byteLengthNotEqual
-
ObjectValidator: Don't run validation on arrays (#99) (c83b3d0)
🚀 Features
- Add 2 utility types inspired by yup and co (#102) (2fef902)
2.2.0 - (2022-04-29)
Bug Fixes
- Ensure
BaseErroris exported as value (#95) (335d799)
Documentation
- readme: Add todo notice for
reshapeandfunctionvalidations (#75) (d5f16f6)
Features
- Add Typed Array (#78) (ca5ea5f)
Performance
- Optimize
NativeEnum(#79) (e9ae280)
@sapphire/shapeshift@2.1.0 - (2022-04-24)
Documentation
- readme: Add todo notice for
reshapeandfunctionvalidations (#75) (d5f16f6)
Performance
- Optimize
NativeEnum(#79) (e9ae280)
2.0.0 (2022-03-13)
Features
- add
default(#25) (378c51f) - add bigint methods (#32) (4c444c1)
- add MapValidator (#21) (c4d1258)
- add NativeEnum validator (#54) (7359042)
- add RecordValidator (#20) (8727427)
- add remaining string validations (#38) (1c2fd7b)
- add tuple (#39) (b7704bf)
- added number transformers (#17) (89a8ddd)
- allow the use of module: NodeNext (#55) (e6827c5)
- array: add array length Comparators (#40) (1e564c2)
- Array: generate tuple types with given length (#52) (793648b)
- ArrayValidator: add length ranges (#53) (e431d62)
- display the property that errored (#35) (fe188b0)
- improve how errors are returned (#29) (8bc7669)
- s.object: add passthrough (#66) (ee9f6f3)
Bug Fixes
- copy/paste error and
ge(#22) (fe6505f) - fix union type and add test (#41) (fbcf8a9)
- s.union: fix union overrides (#62) (56e9b19)
1.0.0 (2022-01-16)
Features
- added more primitives (#2) (16af17b)
- added more things (7c73d82)
- added ObjectValidator (#3) (abe7ead)
Bug Fixes
- resolved install error (a5abe13)