22 KiB
22 KiB
Changelog
Tags:
- [New Feature]
- [Bug Fix]
- [Breaking Change]
- [Documentation]
- [Internal]
- [Polish]
- [Experimental]
- [Deprecation]
Note: Gaps between patch versions are faulty/broken releases. Note: A feature tagged as Experimental is in a high state of flux, you're at risk of it changing without notice.
2.2.20
- undeprecate
FunctionType
,FunctionC
,Function
- undeprecate
NeverType
,NeverC
,never
- undeprecate
AnyType
,AnyC
,any
- undeprecate
RefinementC
,refinement
,Integer
- add refinement overload to allow custom branding, closes #373
2.2.19
- Bug Fix
- allow
Error
to be decoded withUnknownRecord
, #664 (@mlegenhausen)
- allow
2.2.18
- Bug Fix
- fix
typescript@4.8
errors, closes #656, closes #647 (@gcanti)
- fix
2.2.17
- Bug Fix
- Don't throw a TypeError when trying to decode a sum value that contains a dangerous string, #650 (@thewilkybarkid)
2.2.16
Experimental modules require fp-ts@^2.5.0
.
- Experimental
Codec
- add
readonly
combinator (@gcanti)
- add
Encoder
- add
readonly
combinator (@gcanti)
- add
2.2.15
- Experimental
Schemable
- (*) add
readonly
combinator (@gcanti) - (*) add
struct
combinator (@gcanti)
- (*) add
- deprecate
type
in favour ofstruct
(@gcanti) - deprecate
fromType
in favour offromStruct
(@gcanti)
(*) breaking change
2.2.14
- Experimental
Guard
- relax
UnknownRecord
check, closes #559 (@waynevanson)
- relax
2.2.13
- Bug Fix
- improve internal
mergeAll
function, closes #532 (@gcanti)
- improve internal
2.2.12
- Experimental
- (*) make
sum
safer, closes #523 (@gcanti)
- (*) make
(*) breaking change
In case of non-string
tag values, the respective key must be enclosed in brackets
export const MySum: D.Decoder<
unknown,
| {
type: 1 // non-`string` tag value
a: string
}
| {
type: 2 // non-`string` tag value
b: number
}
> = D.sum('type')({
[1]: D.type({ type: D.literal(1), a: D.string }),
[2]: D.type({ type: D.literal(2), b: D.number })
})
2.2.11
- Experimental
Decoder
- make
toForest
stack-safe, #520 (@safareli)
- make
2.2.10
- Polish
- expose modules without lib/es6 prefix, #507 (@osdiab)
2.2.9
- Polish
- remove
Object.freeze
calls, closes #497 (@gcanti)
- remove
- Experimental
DecodeError
- add
Wrap
member (@gcanti)
- add
Decoder
- add
withMessage
combinator (@gcanti)
- add
TaskDecoder
- add
withMessage
combinator (@gcanti)
- add
2.2.8
- Experimental
- (*) remove
KleisliDecoder
module (@gcanti) - (*) remove
KleisliTaskDecoder
module (@gcanti) - (*) remove
JsonCodec
module (@gcanti) - (*) remove
JsonEncoder
module (@gcanti) Codec
- (*) make
Codec
more general by adding aI
type parameter (@gcanti) - add
fromType
function (@gcanti) - add
fromPartial
function (@gcanti) - add
fromArray
function (@gcanti) - add
fromRecord
function (@gcanti) - add
fromTuple
function (@gcanti) - add
fromSum
function (@gcanti) - add
compose
function (@gcanti)
- (*) make
Decoder
- (*) make
Decoder
more general by adding aI
type parameter (@gcanti) - add
fromRefinement
function (@gcanti) - change
fromGuard
signature (@gcanti) - add
fromType
function (@gcanti) - add
fromPartial
function (@gcanti) - add
fromArray
function (@gcanti) - add
fromRecord
function (@gcanti) - add
fromTuple
function (@gcanti) - add
fromSum
function (@gcanti) - add
compose
function (@gcanti) - add
id
function (@gcanti) - (*) rename
functorDecoder
instance toFunctor
(@gcanti) - (*) rename
altDecoder
instance toAlt
(@gcanti) - (*) rename and split
schemableDecoder
(@gcanti) - add
Category
instance (@gcanti) - add
InputOf
type (@gcanti)
- (*) make
TaskDecoder
- (*) make
TaskDecoder
more general by adding aI
type parameter (@gcanti) - add
fromRefinement
function (@gcanti) - change
fromDecoder
signature (@gcanti) - add
fromType
function (@gcanti) - add
fromPartial
function (@gcanti) - add
fromArray
function (@gcanti) - add
fromRecord
function (@gcanti) - add
fromTuple
function (@gcanti) - add
fromSum
function (@gcanti) - add
compose
function (@gcanti) - add
id
function (@gcanti) - (*) rename
functorTaskDecoder
instance toFunctor
(@gcanti) - (*) rename
altTaskDecoder
instance toAlt
(@gcanti) - (*) rename and split
schemableTaskDecoder
(@gcanti) - add
Category
instance (@gcanti) - add
InputOf
type (@gcanti)
- (*) make
Guard
- (*) make
Guard
more general by adding aI
type parameter (@gcanti) - (*) rename
schemableGuard
(@gcanti) - add
InputOf
type (@gcanti) - add
alt
function (@gcanti) - add
zero
function (@gcanti) - add
compose
function (@gcanti) - add
id
function (@gcanti)
- (*) make
Codec
- (*) rename
invariantCodec
toInvariant
(@gcanti)
- (*) rename
Encoder
- (*) rename
contravariantEncoder
toContravariant
(@gcanti) - (*) rename
categoryEncoder
toCategory
(@gcanti)
- (*) rename
Eq
- (*) rename and split
schemableEq
(@gcanti)
- (*) rename and split
Kleisli
- add
id
(@gcanti) - rename
type
tofromType
(@gcanti) - rename
partial
tofromPartial
(@gcanti) - rename
array
tofromArray
(@gcanti) - rename
record
tofromRecord
(@gcanti) - rename
tuple
tofromTuple
(@gcanti) - rename
sum
tofromSum
(@gcanti)
- add
Schemable
- add
Schemable2C
,WithUnknownContainers2C
,WithUnion2C
,WithRefine2C
(@gcanti)
- add
Type
- (*) rename and split
schemableType
(@gcanti)
- (*) rename and split
- (*) remove
(*) breaking change
2.2.7
- Experimental
- add
DecodeError
module (@gcanti) - add
FreeSemigroup
module (@gcanti) - add
TaskDecoder
module (@gcanti) - add
Kleisli
module (@gcanti) - add
KleisliDecoder
module (@gcanti) - add
KleisliTaskDecoder
module (@gcanti) - (*) remove
NaN
fromnumber
instances (@gcanti) - (*) remove
Tree
module (@gcanti) - (*) make
Json
type immutable (@gcanti) Decoder
- (*) remove
never
(@gcanti) - (*) make
parse
pipeable and change itsparser
argument (@gcanti) - (*) change
DecoderError
(@gcanti) - (*) remove
withExpected
in favour ofmapLeftWithInput
(@gcanti)
- (*) remove
Guard
- (*) remove
never
(@gcanti)
- (*) remove
Schemable
- (*) better
literal
signature (@gcanti) - (*) better
union
signature (@gcanti) - (*) make intersections pipeables (@gcanti)
- (*) make refinements pipeables (@gcanti)
- (*) better
- add
(*) breaking change
2.2.6
- Experimental
Decoder
- add support for non-
string
tag values tosum
, closes #481 (@gcanti) intersection
should accumulate all errors (@gcanti)
- add support for non-
2.2.5
- Experimental
- fix type information lost from nested decoder types, #479 (@gcanti)
JsonEncoder
- change
id
signature (@gcanti)
- change
2.2.4
- Polish
- remove the dependency on the
either
instance as a mean of improving tree shaking (@gcanti)
- remove the dependency on the
2.2.3
- Polish
- use the built-in
Readonly
type inreadonly
combinator, closes #472 (@gcanti)
- use the built-in
- Experimental
- split instances (@gcanti)
- add
Type
experimental module, #464 (@gcanti) - restore the
O
type parameter toEncoder
, #469 (@gcanti) - add the
O
type parameter toCodec
(@gcanti) - add
JsonCodec
experimental module (@gcanti) - add
JsonEncoder
experimental module (@gcanti) Schemable
- rename
Schemable
interface toSchemable1
(@gcanti) - rename
WithUnion
interface toWithUnion1
(@gcanti) - add
Schemable
interface (@gcanti) - add
WithUnion
interface (@gcanti) - add
WithRefinement
/WithRefinement1
interfaces (@gcanti) - add
WithUnknownContainers
/WithUnknownContainers1
interfaces (@gcanti)- move
UnknownArray
andUnknownRecord
toWithUnknownContainers
(@gcanti)
- move
- rename
Schema
- refactoring with the new
Schemable
interface (@gcanti) - add
interpreter
function (@gcanti)
- refactoring with the new
- Internal
- upgrade to
typescript@3.9.3
(@gcanti)
- upgrade to
2.2.2
- Experimental
- add
Eq
module (@gcanti) Codec
- add
TypeOf
operator (@gcanti)
- add
Decoder
- add
DecodeError
interface (@gcanti)
- add
Encoder
- add
TypeOf
operator (@gcanti)
- add
Guard
- add
TypeOf
operator (@gcanti)
- add
- add
2.2.1
- Experimental
Decoder
- collect all errors while decoding, closes #449 (@gcanti)
2.2.0
- Experimental
- add
Codec
,Decoder
,Encoder
,Guard
,Schema
,Schemable
,Tree
modules (@gcanti)
- add
2.1.3
- Polish
- remove useless
hasOwnProperty
calls, closes #423 (@gcanti)
- remove useless
2.1.1
- Bug Fix
- fix
record
domain handling, closes #391 (@gcanti)
- fix
2.1.0
- New Feature
- add
bigint
codec (@mixedCase)
- add
2.0.6
- Bug Fix
- whitelist
window
inUnknownRecord
, fix #413 (@gcanti)
- whitelist
2.0.5
- Bug Fix
partial
shouldn't allow arrays, fix #407 (@gcanti)
2.0.4
- Bug Fix
- remove getters, fix #404 (@gcanti)
2.0.3
- Bug Fix
- rewrite es6 imports (@gcanti)
2.0.2
- Bug Fix
- fix #397 (@gcanti)
2.0.1
- Bug Fix
- fix
getTags
algorithm for mutually recursive codecs, closes #354 (@gcanti)
- fix
2.0.0
- Breaking Change
- upgrade to
fp-ts@2.x
(@gcanti) - move
fp-ts
topeerDependencies
(@gcanti)
- upgrade to
1.10.4
- Polish
- remove unneeded internal code (@gcanti)
1.10.3
- Bug Fix
- revert
1.10.0
compatibility, fix #344 (@gcanti)
- revert
1.10.2
- Bug Fix
- move
fp-ts
back to dependencies (@gcanti)
- move
1.10.1
- Bug Fix
- handle
strict
,exact
andrefinement
codecs when optimizing tagged unions, fix #339 (@gcanti)
- handle
1.10.0
- New Feature
- make
io-ts
compatible with bothfp-ts@1.x
,fp-ts@2.x
(@gcanti)
- make
1.9.0
- New Feature
union
is now able to detect and optimize tagged unions (@gcanti)
- Deprecation
- deprecate
taggedUnion
in favour ofunion
(@gcanti)
- deprecate
1.8.6
output ES modules to better support tree-shaking, closes #326 (@gcanti)
1.8.5
- Bug Fix
- change how types and output types are retrieved in
IntersectionC
andTupleC
, fix #315 (@gcanti)
- change how types and output types are retrieved in
1.8.4
- Polish
- autobind
decode
method (@gcanti)
- autobind
1.8.3
- Polish
- add
stripInternal
flag totsconfig.json
(@gcanti) - handle
NaN
inPathReporter
(@gcanti) - throw if union encoding doesn't find a usable codec (@leemhenson)
- add
- Deprecation
- deprecate
NeverType
(@gcanti) - deprecate
FunctionType
(@gcanti)
- deprecate
1.8.2
- Bug Fix
- align the runtime behavior of
Exact.is
with the type system, fix #288 (@gcanti)
- align the runtime behavior of
1.8.1
- New Feature
- add
brand
combinator (@gcanti, @lostintime) - add
Int
codec (@gcanti) exact
strips additional properties while decoding / encoding (@gcanti)- un-deprecate
strict
combinator, is now an alias ofexact(type(...))
(@gcanti)
- add
- Bug Fix
- fix wrong context keys for tagged unions (@gcanti)
- Deprecation
- deprecate
refinement
combinator in favour ofbrand
(@gcanti) - deprecate
Integer
codec in favour ofInt
(@gcanti) - deprecate
StrictType
class (@gcanti) - deprecate
StrictC
interface (@gcanti)
- deprecate
- Polish
- modify the implementation of
intersection
in order to support combinators that strip additional properties (@gcanti) - do not validate the codomain of a key of a record if its domain in invalid (@gcanti)
- normalize missing
message
field inValidationError
(@gcanti) - fix name of recursive codec definitions (@gcanti)
- remove unexpected validation path from partial type, closes #195 (@gcanti)
- do not leak taggedUnion implementation when tag validation fails (@gcanti)
- add
actual
value to all context entries (@gcanti) exact
now bails out when the value is not anUnknownRecord
(@gcanti)tuple
should not leak the implementation (never
usage) (@gcanti)exact
should not leak the implementation (never
usage) (@gcanti)- use
Number.isInteger
inInteger
implementation (@gcanti) - use the Flow convention to name
exact
codecs (@gcanti)
- modify the implementation of
1.7.1
- Deprecation
- deprecate
any
(@gcanti) - deprecate
object
(@gcanti) - deprecate
Dictionary
in favour ofUnknownRecord
(@gcanti) - deprecate
Array
in favour ofUnknownArray
(@gcanti) - deprecate
dictionary
in favour ofrecord
(@gcanti)
- deprecate
1.7.0
- New Feature
- better support for custom messages, closes #148 (@gcanti)
- add optional message field to
ValidationError
- add
message
argument tofailure
PathReporter
should account for the new field
- add optional message field to
- add
actual
optional field toContextEntry
, closes #194 (@gcanti)
- better support for custom messages, closes #148 (@gcanti)
- Deprecation
- deprecate
getValidationError
(@gcanti) - deprecate
getDefaultContext
(@gcanti)
- deprecate
1.6.4
- Bug Fix
getIndexRecord
: getIndexRecord: handle conflicting tags in different positions, ref #263 (@gcanti)
- Experimental
- added a warning to the console if a tagged union cannot be created (@gcanti)
- revert
union
optimization, needs more work to make it happen (@gcanti)
1.6.3
- Bug Fix
- prevent maximum call stack size exceeded when indexing recursive codecs, closes #259 (@gcanti)
1.6.2
- Polish
- make
isIndexableCodec
more strict (@gcanti)
- make
1.6.1
- Bug Fix
taggedUnion
should handle sub unions / tagged unions correctly, closes #257 (@gcanti)
- Experimental
- optimize
union
with the same algorithm used intaggedUnion
(@gcanti)
- optimize
1.6.0
Important. This version requires typescript@3.2.2+
- New Feature
- leverage
typescript@3.2.2
(@gcanti)TypeC
PartialC
RecordC
UnionC
ReadonlyC
StrictC
TaggedUnionC
- leverage
1.5.3
- Bug Fix
- missing context info while decoding an intersection, fix #246 (@gcanti)
- Experimental
- add intermediary interfaces, closes #165 (@gcanti)
NullC
UndefinedC
VoidC
AnyC
UnknownC
NeverC
StringC
NumberC
BooleanC
UnknownArrayC
UnknownRecordC
ObjectC
FunctionC
RefinementC
LiteralC
KeyofC
ArrayC
TypeC
PartialC
RecordC
UnionC
IntersectionC
TupleC
ReadonlyC
ReadonlyArrayC
StrictC
TaggedUnionC
ExactC
- add intermediary interfaces, closes #165 (@gcanti)
- Polishs
- use rest elements in tuple types (
typescript@3.0.1
feature) (@gcanti) union
should handle zero types (@gcanti)intersection
should handle zero / one types (@gcanti)
- use rest elements in tuple types (
- Deprecation
- deprecate
clean
(@gcanti) - deprecate
alias
(@gcanti) - deprecate
PropsOf
type (@gcanti) - deprecate
Exact
type (@gcanti)
- deprecate
1.5.2
- Deprecation
- deprecate
Compact
type (@gcanti)
- deprecate
1.5.1
- Polish
- remove useless module augmentation of
Array
(@gcanti)
- remove useless module augmentation of
1.5.0
- New Feature
- add
UnknownType
, closes #238 (@gcanti)
- add
- Deprecation
ThrowReporter
is now deprecated (@gcanti)
1.4.2
use Compact
in intersection
signatures as a workaround for #234 (@sledorze)
1.4.1
- Polish
Type.prototype.pipe
now allows more types as input, #231 #232 (@sledorze)
1.4.0
- New Feature
- use
unknown
asmixed
(@gcanti)
- use
1.3.4
- Bug Fix
- should emit expected keys while decoding, fix #214 (@gcanti)
1.3.3
- Bug Fix
- align
TaggedExact
definition with siblings, fix #223 (@gcanti)
- align
1.3.2
- Bug Fix
- dictionary type should not allow arrays, fix #218 (@gcanti)
1.3.1
- Polish
- use interface instead of type alias (@gcanti)
Context
Errors
Any
Mixed
- use interface instead of type alias (@gcanti)
1.3.0
- New Feature
- add
TaggedUnionType
(@gcanti)
- add
1.2.1
- Polish
- allow recursive types in tagged unions (@gcanti)
1.2.0
- New Feature
- add
void
runtime type (@gcanti)
- add
1.1.5
- Bug Fix
- partial combinator should preserve additional properties while encoding, fixes #179 (@gcanti)
- Polish
- use
useIdentity
when possible (@gcanti)
- use
1.1.4
- Internal
- fix broken build with
typescript@2.9.1
, closes #174 (@gcanti)
- fix broken build with
1.1.3
- Internal
- upgrade to
typings-checker@2.0.0
(@gcanti)
- upgrade to
1.1.2
- Bug Fix
- fix
alias
implementation (@gcanti) - handle exact types in
isTagged
(@gcanti)
- fix
1.1.1
- Experimental
- add
clean
/alias
functions, closes #149 (@gcanti) - add
exact
combinator (@gcanti)- the
strict
combinator is deprecated
- the
- remove
optional
combinator (@gcanti)- it doesn't play well with advanced combinators, see here for a discussion
- add
1.0.6
- Bug Fix
taggedUnion
fails to decode when tag values are not string literals, fix #161 (@gcanti)
1.0.5
- Bug Fix
- workaround for upstream TypeScript bug 14041 (wrong generated declarations) (@gcanti)
- Internal
- optimize InterfaceType.encode (@gcanti)
- use definite assignment assertion for phantom fields (@gcanti)
1.0.4
- Bug Fix
- make
Context
readonly (@gcanti)
- make
- Internal
- optimizations, #137 (@gcanti, @sledorze)
1.0.3
- Internal
- optimizations, #134 (@gcanti, @sledorze)
1.0.2
- Bug Fix
- fix
OutputOfPartialProps
name (@gcanti)
- fix
1.0.1
- Bug Fix
- fix
AnyType
by extendingType<any>
(@gcanti)
- fix
1.0.0
- Breaking Change
- upgrade to
fp-ts@1.0.0
- see https://github.com/gcanti/io-ts/pull/112 (@gcanti)
- upgrade to
0.9.8
- New Feature
- add decode and deprecate top level validate (@gcanti)
- Internal
- when checking validations use methods instead of top level functions (@gcanti)
0.9.7
- New Feature
- add
taggedUnion
combinator (@gcanti, @sledorze)
- add
0.9.6
- New Feature
recursive
combinator- add support for mutually recursive types, closes #114 (@gcanti)
- make it safer:
RT
now must extendType<mixed, A>
(@gcanti)
0.9.5
- New Feature
- add
mixed
type (@gcanti) - replace
any
withmixed
in all input type parameters (@gcanti)-export class StringType extends Type<any, string> { +export class StringType extends Type<mixed, string> { }
- add
0.9.4
- Bug Fix
- strict: should succeed validating an undefined field, closes #106 (@gcanti)
0.9.3
- Bug Fix
- revert 37c74a5e2038de063a950f9ba8d18b1f132ef450, closes #8 (@gcanti)
0.9.2
- New Feature
- add
Decoder
/Encoder
interfaces (@sledorze, @gcanti)
- add
- Internal
- perf optimizations (@sledorze, @gcanti)
0.9.1
- Bug Fix
- make all classes "dumb", fix #95 (@gcanti)
0.9.0
- Breaking Change
- remove
t.map
andt.mapWithName
(in general doesn't look serializable, needs more investigation) - remove
t.prism
(in general doesn't look serializable, needs more investigation) - change
Type
from interface to class and addS
type parameter- remove
t._A
- remove
- add
Type#serialize
- add
Type#is
(in order to serialize unions and while we're at it, looks useful anyway) - remove
t.is
(now that there'sType#is
is misleading)
- remove
- Experimental
- add Flowtype support (@gcanti)
0.8.2
- New Feature
- add
object
type, closes #86 (@gcanti)
- add
0.8.1
- New Feature
- add
strict
combinator, closes #84 (@phiresky, @gcanti)
- add
0.8.0
- Breaking Change
- upgrade
fp-ts
dependency (@gcanti)
- upgrade
0.7.2
- Bug Fix
- tag recursive types, fix #80 (@gcanti)
0.7.1
- Bug Fix
- incorrect compile time type for dictionary, fix #75 (@gcanti)
0.7.0
- Breaking Change
- upgrade to latest fp-ts (0.5.1) (@gcanti)
0.6.2
- New Feature
- add aliases for
null
andinterface
, closes #63 (@gcanti)
- add aliases for
0.6.1
- Internal
- handle latest fp-ts (0.4.3) (@gcanti)
0.6.0
- Breaking Change
- upgrade to latest fp-ts (0.4.0) (@gcanti)
- Internal
- allow for infinite unions (@gcanti)
0.5.1
- Bug Fix
- export and rename
interfaceType
to_interface
, fix #57 (@gcanti)
- export and rename
0.5.0
- Breaking Change
Type
is now an interface- types no more own a
is
method, uset.is
instead - unions no more own a
fold
method Reporter
,PathReporter
,ThrowReporter
are now top level modules
0.4.0
- Breaking Change
- upgrade to latest
fp-ts
(io-ts
APIs are not changed though) (@gcanti) - drop
lib-jsnext
folder
- upgrade to latest
0.3.2
- Bug Fix
- remove excess overloadings, fix #43 (@gcanti)
0.3.1
- New Feature
- add mapWithName and Functor instance, fix #37 (@gcanti)
- add prism combinator, fix #41 (@gcanti)
0.3.0
This is a breaking change only if you are using fp-ts APIs
- Breaking Change
- upgrade to latest fp-ts v0.2 (@gcanti)
0.2.3
- Internal
- upgrade to fp-ts v0.1 (@gcanti)
0.2.2
- New Feature
- add
partial
combinator (makes optional props possible) - add
readonly
combinator (values are not frozen in production) - add
readonlyArray
combinator (values are not frozen in production) - add
never
type
- add
- Breaking Changes
- remove
maybe
combinator, can be defined in userland asexport function maybe<RT extends t.Any>( type: RT, name?: string ): t.UnionType<[RT, typeof t.null], t.TypeOf<RT> | null> { return t.union([type, t.null], name) }
- remove
- Polish
- export
pathReporterFailure
function from default reporters
- export
- Bug Fix
- revert pruning excess properties (see https://github.com/gcanti/io-ts/pull/27 for context)
- revert
intersection
combinator accepting onlyInterfaceType
s
- Experimental
- Pattern matching / catamorphism for unions
0.1.0
-
New Feature
- add support for jsnext
- add
Integer
type
-
Breaking Changes
t.Object
type. Renamed tot.Dictionary
, now accepts arrays so is fully equivalent to{ [key: string]: any }
.t.instanceOf
combinator. Removed.t.object
combinator. Renamed tot.interface
.ObjectType
toInterfaceType
. Excess properties are now pruned.mapping
combinator. Renamed todictionary
.MappingType
toDictionaryType
.intersection
combinator. Due to the new excess property pruning int.interface
now only acceptInterfaceType
s.- API
isSuccess
removed, useeither.isRight
instead - API
isFailure
removed, useeither.isLeft
instead - API
fromValidation
removed
0.0.2
- Bug Fix
- reverse overloading definitions for unions, intersections and tuples, fix inference bug
0.0.1
Initial release