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.22
- Bug Fix
- Test for readonly type when optimizing tagged unions, #719
2.2.21
- Bug Fix
- Handle
record
keys outside domain
, #705 (@tgfisher4)
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 with UnknownRecord
, #664 (@mlegenhausen)
2.2.18
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)
Encoder
- add
readonly
combinator (@gcanti)
2.2.15
- Experimental
Schemable
- (*) add
readonly
combinator (@gcanti)
- (*) add
struct
combinator (@gcanti)
- deprecate
type
in favour of struct
(@gcanti)
- deprecate
fromType
in favour of fromStruct
(@gcanti)
(*) breaking change
2.2.14
- Experimental
Guard
- relax
UnknownRecord
check, closes #559 (@waynevanson)
2.2.13
- Bug Fix
- improve internal
mergeAll
function, closes #532 (@gcanti)
2.2.12
- Experimental
- (*) make
sum
safer, closes #523 (@gcanti)
(*) 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
a: string
}
| {
type: 2
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)
2.2.10
- Polish
- expose modules without lib/es6 prefix, #507 (@osdiab)
2.2.9
- Polish
- remove
Object.freeze
calls, closes #497 (@gcanti)
- Experimental
DecodeError
- add
Wrap
member (@gcanti)
Decoder
- add
withMessage
combinator (@gcanti)
TaskDecoder
- add
withMessage
combinator (@gcanti)
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 a I
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)
Decoder
- (*) make
Decoder
more general by adding a I
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 to Functor
(@gcanti)
- (*) rename
altDecoder
instance to Alt
(@gcanti)
- (*) rename and split
schemableDecoder
(@gcanti)
- add
Category
instance (@gcanti)
- add
InputOf
type (@gcanti)
TaskDecoder
- (*) make
TaskDecoder
more general by adding a I
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 to Functor
(@gcanti)
- (*) rename
altTaskDecoder
instance to Alt
(@gcanti)
- (*) rename and split
schemableTaskDecoder
(@gcanti)
- add
Category
instance (@gcanti)
- add
InputOf
type (@gcanti)
Guard
- (*) make
Guard
more general by adding a I
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)
Codec
- (*) rename
invariantCodec
to Invariant
(@gcanti)
Encoder
- (*) rename
contravariantEncoder
to Contravariant
(@gcanti)
- (*) rename
categoryEncoder
to Category
(@gcanti)
Eq
- (*) rename and split
schemableEq
(@gcanti)
Kleisli
- add
id
(@gcanti)
- rename
type
to fromType
(@gcanti)
- rename
partial
to fromPartial
(@gcanti)
- rename
array
to fromArray
(@gcanti)
- rename
record
to fromRecord
(@gcanti)
- rename
tuple
to fromTuple
(@gcanti)
- rename
sum
to fromSum
(@gcanti)
Schemable
- add
Schemable2C
, WithUnknownContainers2C
, WithUnion2C
, WithRefine2C
(@gcanti)
Type
- (*) rename and split
schemableType
(@gcanti)
(*) 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
from number
instances (@gcanti)
- (*) remove
Tree
module (@gcanti)
- (*) make
Json
type immutable (@gcanti)
Decoder
- (*) remove
never
(@gcanti)
- (*) make
parse
pipeable and change its parser
argument (@gcanti)
- (*) change
DecoderError
(@gcanti)
- (*) remove
withExpected
in favour of mapLeftWithInput
(@gcanti)
Guard
- (*) remove
never
(@gcanti)
Schemable
- (*) better
literal
signature (@gcanti)
- (*) better
union
signature (@gcanti)
- (*) make intersections pipeables (@gcanti)
- (*) make refinements pipeables (@gcanti)
(*) breaking change
2.2.6
- Experimental
Decoder
- add support for non-
string
tag values to sum
, closes #481 (@gcanti)
intersection
should accumulate all errors (@gcanti)
2.2.5
- Experimental
- fix type information lost from nested decoder types, #479 (@gcanti)
JsonEncoder
- change
id
signature (@gcanti)
2.2.4
- Polish
- remove the dependency on the
either
instance as a mean of improving tree shaking (@gcanti)
2.2.3
- Polish
- use the built-in
Readonly
type in readonly
combinator, closes #472 (@gcanti)
- Experimental
- split instances (@gcanti)
- add
Type
experimental module, #464 (@gcanti)
- restore the
O
type parameter to Encoder
, #469 (@gcanti)
- add the
O
type parameter to Codec
(@gcanti)
- add
JsonCodec
experimental module (@gcanti)
- add
JsonEncoder
experimental module (@gcanti)
Schemable
- rename
Schemable
interface to Schemable1
(@gcanti)
- rename
WithUnion
interface to WithUnion1
(@gcanti)
- add
Schemable
interface (@gcanti)
- add
WithUnion
interface (@gcanti)
- add
WithRefinement
/ WithRefinement1
interfaces (@gcanti)
- add
WithUnknownContainers
/ WithUnknownContainers1
interfaces (@gcanti)
- move
UnknownArray
and UnknownRecord
to WithUnknownContainers
(@gcanti)
Schema
- refactoring with the new
Schemable
interface (@gcanti)
- add
interpreter
function (@gcanti)
- Internal
2.2.2
- Experimental
- add
Eq
module (@gcanti)
Codec
- add
TypeOf
operator (@gcanti)
Decoder
- add
DecodeError
interface (@gcanti)
Encoder
- add
TypeOf
operator (@gcanti)
Guard
- add
TypeOf
operator (@gcanti)
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)
2.1.3
- Polish
- remove useless
hasOwnProperty
calls, closes #423 (@gcanti)
2.1.1
- Bug Fix
- fix
record
domain handling, closes #391 (@gcanti)
2.1.0
- New Feature
- add
bigint
codec (@mixedCase)
2.0.6
- Bug Fix
- whitelist
window
in UnknownRecord
, fix #413 (@gcanti)
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
2.0.1
- Bug Fix
- fix
getTags
algorithm for mutually recursive codecs, closes #354 (@gcanti)
2.0.0
- Breaking Change
- upgrade to `fp-ts@2.x` (@gcanti)
- move
fp-ts
to peerDependencies
(@gcanti)
1.10.4
- Polish
- remove unneeded internal code (@gcanti)
1.10.3
- Bug Fix
- revert
1.10.0
compatibility, fix #344 (@gcanti)
1.10.2
- Bug Fix
- move
fp-ts
back to dependencies (@gcanti)
1.10.1
- Bug Fix
- handle
strict
, exact
and refinement
codecs when optimizing tagged unions, fix #339 (@gcanti)
1.10.0
1.9.0
- New Feature
union
is now able to detect and optimize tagged unions (@gcanti)
- Deprecation
- deprecate
taggedUnion
in favour of union
(@gcanti)
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
and TupleC
, fix #315 (@gcanti)
1.8.4
- Polish
- autobind
decode
method (@gcanti)
1.8.3
- Polish
- add
stripInternal
flag to tsconfig.json
(@gcanti)
- handle
NaN
in PathReporter
(@gcanti)
- throw if union encoding doesn't find a usable codec (@leemhenson)
- Deprecation
- deprecate
NeverType
(@gcanti)
- deprecate
FunctionType
(@gcanti)
1.8.2
- Bug Fix
- align the runtime behavior of
Exact.is
with the type system, fix #288 (@gcanti)
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 of exact(type(...))
(@gcanti)
- Bug Fix
- fix wrong context keys for tagged unions (@gcanti)
- Deprecation
- deprecate
refinement
combinator in favour of brand
(@gcanti)
- deprecate
Integer
codec in favour of Int
(@gcanti)
- deprecate
StrictType
class (@gcanti)
- deprecate
StrictC
interface (@gcanti)
- 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 in ValidationError
(@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 an UnknownRecord
(@gcanti)
tuple
should not leak the implementation (never
usage) (@gcanti)
exact
should not leak the implementation (never
usage) (@gcanti)
- use
Number.isInteger
in Integer
implementation (@gcanti)
- use the Flow convention to name
exact
codecs (@gcanti)
1.7.1
- Deprecation
- deprecate
any
(@gcanti)
- deprecate
object
(@gcanti)
- deprecate
Dictionary
in favour of UnknownRecord
(@gcanti)
- deprecate
Array
in favour of UnknownArray
(@gcanti)
- deprecate
dictionary
in favour of record
(@gcanti)
1.7.0
- New Feature
- better support for custom messages, closes #148 (@gcanti)
- add optional message field to
ValidationError
- add
message
argument to failure
PathReporter
should account for the new field
- add
actual
optional field to ContextEntry
, closes #194 (@gcanti)
- Deprecation
- deprecate
getValidationError
(@gcanti)
- deprecate
getDefaultContext
(@gcanti)
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)
1.6.1
- Bug Fix
taggedUnion
should handle sub unions / tagged unions correctly, closes #257 (@gcanti)
- Experimental
- optimize
union
with the same algorithm used in taggedUnion
(@gcanti)
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
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
- 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)
- Deprecation
- deprecate
clean
(@gcanti)
- deprecate
alias
(@gcanti)
- deprecate
PropsOf
type (@gcanti)
- deprecate
Exact
type (@gcanti)
1.5.2
- Deprecation
- deprecate
Compact
type (@gcanti)
1.5.1
- Polish
- remove useless module augmentation of
Array
(@gcanti)
1.5.0
- New Feature
- add
UnknownType
, closes #238 (@gcanti)
- 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
as mixed
(@gcanti)
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)
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)
1.3.0
- New Feature
- add
TaggedUnionType
(@gcanti)
1.2.1
- Polish
- allow recursive types in tagged unions (@gcanti)
1.2.0
- New Feature
- add
void
runtime type (@gcanti)
1.1.5
- Bug Fix
- partial combinator should preserve additional properties while encoding, fixes #179 (@gcanti)
- Polish
- use
useIdentity
when possible (@gcanti)
1.1.4
1.1.3
1.1.2
- Bug Fix
- fix
alias
implementation (@gcanti)
- handle exact types in
isTagged
(@gcanti)
1.1.1
- Experimental
- add
clean
/ alias
functions, closes #149 (@gcanti)
- add
exact
combinator (@gcanti)
- the
strict
combinator is deprecated
- remove
optional
combinator (@gcanti)
- it doesn't play well with advanced combinators, see here for a discussion
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)
- Internal
- optimizations, #137 (@gcanti, @sledorze)
1.0.3
- Internal
- optimizations, #134 (@gcanti, @sledorze)
1.0.2
- Bug Fix
- fix
OutputOfPartialProps
name (@gcanti)
1.0.1
- Bug Fix
- fix
AnyType
by extending Type<any>
(@gcanti)
1.0.0
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)
0.9.6
- New Feature
recursive
combinator
- add support for mutually recursive types, closes #114 (@gcanti)
- make it safer:
RT
now must extend Type<mixed, A>
(@gcanti)
0.9.5
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)
- 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
and t.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 add S
type parameter
- 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's Type#is
is misleading)
- Experimental
- add Flowtype support (@gcanti)
0.8.2
- New Feature
- add
object
type, closes #86 (@gcanti)
0.8.1
- New Feature
- add
strict
combinator, closes #84 (@phiresky, @gcanti)
0.8.0
- Breaking Change
- upgrade
fp-ts
dependency (@gcanti)
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
and interface
, closes #63 (@gcanti)
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)
0.5.0
- Breaking Change
Type
is now an interface
- types no more own a
is
method, use t.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
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
- 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)
}
- Polish
- export
pathReporterFailure
function from default reporters
- Bug Fix
- Experimental
- Pattern matching / catamorphism for unions
0.1.0
New Feature
- add support for jsnext
- add
Integer
type
Breaking Changes
t.Object
type. Renamed to t.Dictionary
, now accepts arrays so is fully equivalent to { [key: string]: any }
.
t.instanceOf
combinator. Removed.
t.object
combinator. Renamed to t.interface
. ObjectType
to InterfaceType
. Excess properties are now pruned.
mapping
combinator. Renamed to dictionary
. MappingType
to DictionaryType
.
intersection
combinator. Due to the new excess property pruning in t.interface
now only accept InterfaceType
s.
- API
isSuccess
removed, use either.isRight
instead
- API
isFailure
removed, use either.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