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.
- Polish
- remove useless
hasOwnProperty
calls, closes #423 (@gcanti)
- remove useless
- Bug Fix
- fix
record
domain handling, closes #391 (@gcanti)
- fix
- New Feature
- add
bigint
codec (@mixedCase)
- add
- Bug Fix
- whitelist
window
inUnknownRecord
, fix #413 (@gcanti)
- whitelist
- Bug Fix
partial
shouldn't allow arrays, fix #407 (@gcanti)
- Bug Fix
- remove getters, fix #404 (@gcanti)
- Bug Fix
- rewrite es6 imports (@gcanti)
- Bug Fix
- fix #397 (@gcanti)
- Bug Fix
- fix
getTags
algorithm for mutually recursive codecs, closes #354 (@gcanti)
- fix
- Breaking Change
- upgrade to
[email protected]
(@gcanti) - move
fp-ts
topeerDependencies
(@gcanti)
- upgrade to
- Polish
- remove unneeded internal code (@gcanti)
- Bug Fix
- revert
1.10.0
compatibility, fix #344 (@gcanti)
- revert
- Bug Fix
- move
fp-ts
back to dependencies (@gcanti)
- move
- Bug Fix
- handle
strict
,exact
andrefinement
codecs when optimizing tagged unions, fix #339 (@gcanti)
- handle
- New Feature
- make
io-ts
compatible with both[email protected]
,[email protected]
(@gcanti)
- make
- New Feature
union
is now able to detect and optimize tagged unions (@gcanti)
- Deprecation
- deprecate
taggedUnion
in favour ofunion
(@gcanti)
- deprecate
output ES modules to better support tree-shaking, closes #326 (@gcanti)
- 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
- Polish
- autobind
decode
method (@gcanti)
- autobind
- 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
- Bug Fix
- align the runtime behavior of
Exact.is
with the type system, fix #288 (@gcanti)
- align the runtime behavior of
- 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
- 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
- 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
- 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)
- Bug Fix
- prevent maximum call stack size exceeded when indexing recursive codecs, closes #259 (@gcanti)
- Polish
- make
isIndexableCodec
more strict (@gcanti)
- make
- Bug Fix
taggedUnion
should handle sub unions / tagged unions correctly, closes #257 (@gcanti)
- Experimental
- optimize
union
with the same algorithm used intaggedUnion
(@gcanti)
- optimize
Important. This version requires [email protected]+
- New Feature
- leverage
[email protected]
(@gcanti)TypeC
PartialC
RecordC
UnionC
ReadonlyC
StrictC
TaggedUnionC
- leverage
- 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 (
[email protected]
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
- Deprecation
- deprecate
Compact
type (@gcanti)
- deprecate
- Polish
- remove useless module augmentation of
Array
(@gcanti)
- remove useless module augmentation of
- New Feature
- add
UnknownType
, closes #238 (@gcanti)
- add
- Deprecation
ThrowReporter
is now deprecated (@gcanti)
use Compact
in intersection
signatures as a workaround for #234 (@sledorze)
- Polish
Type.prototype.pipe
now allows more types as input, #231 #232 (@sledorze)
- New Feature
- use
unknown
asmixed
(@gcanti)
- use
- Bug Fix
- should emit expected keys while decoding, fix #214 (@gcanti)
- Bug Fix
- align
TaggedExact
definition with siblings, fix #223 (@gcanti)
- align
- Bug Fix
- dictionary type should not allow arrays, fix #218 (@gcanti)
- Polish
- use interface instead of type alias (@gcanti)
Context
Errors
Any
Mixed
- use interface instead of type alias (@gcanti)
- New Feature
- add
TaggedUnionType
(@gcanti)
- add
- Polish
- allow recursive types in tagged unions (@gcanti)
- New Feature
- add
void
runtime type (@gcanti)
- add
- Bug Fix
- partial combinator should preserve additional properties while encoding, fixes #179 (@gcanti)
- Polish
- use
useIdentity
when possible (@gcanti)
- use
- Internal
- fix broken build with
[email protected]
, closes #174 (@gcanti)
- fix broken build with
- Internal
- upgrade to
[email protected]
(@gcanti)
- upgrade to
- Bug Fix
- fix
alias
implementation (@gcanti) - handle exact types in
isTagged
(@gcanti)
- fix
- 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
- Bug Fix
taggedUnion
fails to decode when tag values are not string literals, fix #161 (@gcanti)
- 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)
- Bug Fix
- make
Context
readonly (@gcanti)
- make
- Internal
- optimizations, #137 (@gcanti, @sledorze)
- Internal
- optimizations, #134 (@gcanti, @sledorze)
- Bug Fix
- fix
OutputOfPartialProps
name (@gcanti)
- fix
- Bug Fix
- fix
AnyType
by extendingType<any>
(@gcanti)
- fix
- Breaking Change
- upgrade to
[email protected]
- see gcanti#112 (@gcanti)
- upgrade to
- New Feature
- add decode and deprecate top level validate (@gcanti)
- Internal
- when checking validations use methods instead of top level functions (@gcanti)
- New Feature
- add
taggedUnion
combinator (@gcanti, @sledorze)
- add
- New Feature
recursive
combinator- add support for mutually recursive types, closes #114 (@gcanti)
- make it safer:
RT
now must extendType<mixed, A>
(@gcanti)
- 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
- Bug Fix
- strict: should succeed validating an undefined field, closes #106 (@gcanti)
- Bug Fix
- revert 37c74a5e2038de063a950f9ba8d18b1f132ef450, closes #8 (@gcanti)
- New Feature
- add
Decoder
/Encoder
interfaces (@sledorze, @gcanti)
- add
- Internal
- perf optimizations (@sledorze, @gcanti)
- Bug Fix
- make all classes "dumb", fix #95 (@gcanti)
- 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)
- New Feature
- add
object
type, closes #86 (@gcanti)
- add
- New Feature
- add
strict
combinator, closes #84 (@phiresky, @gcanti)
- add
- Breaking Change
- upgrade
fp-ts
dependency (@gcanti)
- upgrade
- Bug Fix
- tag recursive types, fix #80 (@gcanti)
- Bug Fix
- incorrect compile time type for dictionary, fix #75 (@gcanti)
- Breaking Change
- upgrade to latest fp-ts (0.5.1) (@gcanti)
- New Feature
- add aliases for
null
andinterface
, closes #63 (@gcanti)
- add aliases for
- Internal
- handle latest fp-ts (0.4.3) (@gcanti)
- Breaking Change
- upgrade to latest fp-ts (0.4.0) (@gcanti)
- Internal
- allow for infinite unions (@gcanti)
- Bug Fix
- export and rename
interfaceType
to_interface
, fix #57 (@gcanti)
- export and rename
- 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
- Breaking Change
- upgrade to latest
fp-ts
(io-ts
APIs are not changed though) (@gcanti) - drop
lib-jsnext
folder
- upgrade to latest
- Bug Fix
- remove excess overloadings, fix #43 (@gcanti)
- New Feature
- add mapWithName and Functor instance, fix #37 (@gcanti)
- add prism combinator, fix #41 (@gcanti)
This is a breaking change only if you are using fp-ts APIs
- Breaking Change
- upgrade to latest fp-ts v0.2 (@gcanti)
- Internal
- upgrade to fp-ts v0.1 (@gcanti)
- 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 gcanti#27 for context)
- revert
intersection
combinator accepting onlyInterfaceType
s
- Experimental
- Pattern matching / catamorphism for unions
-
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
- Bug Fix
- reverse overloading definitions for unions, intersections and tuples, fix inference bug
Initial release