Releases: origamitower/folktale
2.3.2
Install it through npm:
$ npm install [email protected]
A special thanks to @cdoublev :>
Fixes
- Fixes automatic conversions from Nodebacks/Promises to Tasks, taking into account cancellations (Issue #215, PR #216 by @cdoublev)
v2.3.1
Install it through npm.
$ npm install [email protected]
Fixes
-
Fixes
Result.filter
discarding the error value (Issue #209) -
Previous version was missing the README file in the package (Issue #208)
2.3.0
Install it through npm or download the attached tarball.
$ npm install [email protected]
A special thank you to @Josh-Miller, @JesterXL, @andys8, and @Pernas.
New features
- A
chain
function for Validation allows sequencing successes in a simpler way (PR #194) - The
Alt
algebraic structure is now implemented for Maybe (PR #171 by @Josh-Miller) - Unions have a new
any
special value, and better error reporting (PR #142 by @JesterXL)
Fixes
- Derived debug representation now handles numbers correctly (including -0) (PR #193)
- Cancellation now should propagate a little less incorrectly in Tasks (PR #177)
Documentation
v2.1.0
Install it through npm or download the attached zip.
$ npm install [email protected]
A special thank you to @diasbruno, @gvillalta99, @MichaelQQ, @stabbylambda, @floriansimon1, and @scotttrinh.
New features
nullableToResult
can now take a fallback value (PR #166 by @diasbruno)
Bug fixes
- Derived
.toString
methods can now handle objects without a.toString
method (though not yet circular objects). (PR #169)
Documentation
- Many typos were fixed (PR #151 by @gvillalta99; PR #165 by @MichaelQQ, PR #145 by @stabbylambda, PR #143 and PR #144 by @floriansimon1)
- Migration documentation on Task has been improved, and examples fixed (PR #160)
- Added notes on shims for older platforms (PR #161)
- Fixed some Validation examples (PR #154 by @scotttrinh)
DEPRECATED FEATURES
- Renamed
Future.recover
toFuture.orElse
.Future.recover
was deprecated. (PR #146)
Miscellaneous
- We've moved from Make to Furipota, so the build system is cross-platform now (PR #148)
v2.0.0
Install it through npm or download the attached zip:
$ npm install --save [email protected]
Thanks to the contributions of @rpearce, @boris-marinov, @justin-calleja, @sotojuan, @degroote22, @RossJHagan, @syaiful6, @diasbruno, @baranovxyz, @floriansimon1, @jreut, and @framp in this and previous releases of the 2.0 branch.
New features
v2.0.0-rc1
New features
Maybe
now implements Semigroup and Monoid (PR #125 by @diasbruno).Result
now implements Semigroup.
BREAKING CHANGES
-
folktale/data/future
is nowfolktale/concurrency/future
. -
folktale/data/task
is nowfolktale/concurrency/task
. -
folktale/data/conversions
is nowfolktale/conversions
. -
folktale/core/fantasy-land
is nowfolktale/fantasy-land
. -
folktale/data/maybe
is nowfolktale/maybe
. -
folktale/data/result
is nowfolktale/result
. -
folktale/data/validation
is nowfolktale/validation
. -
The
folktale/core/adt
module is nowfolktale/adt/union
module, which specifies that it creates union types. Thedata
function was also renamed tounion
, and theADT
namespace was renamed toUnion
— although this one was used mostly internally.Previously:
const { data, derivations } = require('folktale/core/adt'); const List = data('List', { Empty(){ }, Cons(value, rest) { return { value, rest }; } }).derive(derivations.Equality);
Now:
const { union, derivations } = require('folktale/adt/union'); const List = union('List', { Empty(){ }, Cons(value, rest) { return { value, rest }; } }).derive(derivations.Equality);
v2.0.0-beta1
Install it through npm or download the attached zip:
$ npm install --save [email protected]
Thanks to the contributions of @rpearce, @boris-marinov, @justin-calleja, @sotojuan, @degroote22, @RossJHagan, and @syaiful6 in this and previous releases of the 2.0 branch. A final release will happen as soon as some browser problems are fixed :)
Documentation
- Documentation for Data.Future was added.
- Fixed some of the Data.Task documentation.
New features
nodebackToTask
(andTask.fromNodeback
) allows converting callback-based functions in Node-style to Tasks automatically
(PR #116 by @rpearce)futureToPromise
andpromiseToFuture
allow converting between promises and futures. The conversion isn't strictly loss-less due to the difference in semantics
(PR #119, details in #98)promisedToTask
(andTask.fromPromised
) allows converting functions that return promises to functions that return tasks
(PR #120, details in #97)
BREAKING CHANGES
-
(f43441b)
Future#mapRejection
has been renamed toFuture#mapRejected
for consistency. To fix just replace any
calls ofmapRejection
on Futures tomapRejected
:// Before Future.rejected(1).mapRejection(x => x + 1); // Now Future.rejected(1).mapRejected(x => x + 1);
v2.0.0-alpha4
Install it through npm or download the attached zip:
$ npm install --save [email protected]
Documentation
- Guides for installing and contributing to Folktale were added.
- An annex describing the type annotation used in Folktale was added.
- Documentation for Data.Task was added.
- Other documentation improvements were made.
- Top-level async/await is now supported in Documentation examples.
- Experimental features now have a section noting such in their pages.
New features
.mapRejected()
was added as a counterpart of.map()
for failed Tasks
(35fbd0d).orElse()
was added as a convenient way of recovering from failed Tasks
(35fbd0d)waitAny
andwaitAll
have been added as convenience over.or
and.and
methods in Task
(ea4d1c0)- Equality derivation now uses a limited deep-equality (for arrays/objects) by default
(373b518)
Bug fixes
- Fixes
fromJSON
in the presence of getters, where it'd fail when trying to set values in the reified structure
(f4026e0) - Serialises
undefined
asnull
so all keys are kept in the serialised structure
(ffee127)
BREAKING CHANGES
-
(da6c2e3)
nullable → validation
now takes a fallback value, so Failures are kept as semigroups. By default, if you don't pass anything, the fallback value will beundefined
, so this only breaks things if you were relying onnullableToValidation(null)
giving youFailure(null)
. To fix it, simply pass an additional parameter:// Before nullableToValidation(null); Validation.fromNullable(null); // Now nullableToValidation(null, null); Validation.fromNullable(null, null);
That said, you should keep your Failures as proper semigroups, so things like
.apply
and.concat
will work correctly.
v2.0.0-alpha3
New features
- Adds a
nullable → maybe
conversion
(9706ab7); - Adds a
.fold()
method to theMaybe
structure. This works similarly to Result and Validation's.fold()
method, except the function for theNothing
case takes no arguments
(6f59f61); - Adds the
collect
function (data/validation/collect
), which makes aggregating errors from failures directly a bit simpler
(#71, a677e96);
Bug fixes
- Fixes the exported symbol for
validation → either
conversion
(450cb70); - Fixes the Setoid implementation to work with the
core/fantasy-land
module
(d761107); - Fixes a bunch of currying and argument order issues with the
core/fantasy-land
module
(d5b0c74);
Miscellaneous
- Annotated files are now only generated for testing and documentation, which makes browser bundles much smaller
(e0186fa);
DEPRECATED FEATURES
- The old
.get()
methods are deprecated in favour of the new.unsafeGet()
methods. There was no behavioural change, just a naming one. See #42.
(278d5a7, 19910b4);
BREAKING CHANGES
-
(8e1b27e)
Modules that were previously namedcore.js
now reflect the name of the functionality they implement. This affects you if you've been importing thecore.js
modules directly, rather than their folder. The following modules are affected by this change:core/adt/core.js
→core/adt/data.js
(exports thedata
function);data/either/core.js
→data/either/either.js
(exports theeither
ADT);data/maybe/core.js
→data/maybe/maybe.js
(exports themaybe
ADT);data/validation/core.js
→data/validation/validation.js
(exports thevalidation
ADT).
-
(7a1ef33)
Removes thedata/either/fromNullable.js
module, which was moved to thedata/conversions
module. This affects you if you have been importing that module directly. In that case you can importdata/conversions/nullable-to-either.js
instead:// Before const eitherFromNullable = require('data/either/fromNullable'); // Now const eitherFromNullable = require('data/conversions/nullable-to-either');
Note that no changes are necessary if you were importing the whole
data/either
module and taking thefromNullable
method from there. -
(5676d39)
Either.try
now takes a thunk, rather than being a curried-ish form of application:// Before Either.try((a) => a.foo())(null); // ==> Left("cannot read property 'foo' of null") // Now Either.try(() => null.foo()); // ==> Left("cannot read property 'foo' of null")
-
(PR #62)
RenamesEither
→Result
. No behaviour changes, but a bunch of terminology changes that break existing code.Where one used to write:
const { Left, Right } = require('folktale/data/either');
One would now write:
const { Error, Ok } = require('folktale/data/result');
The data structure's name has been changed to Result. The
Left
case has been changed toError
, and theRight
case has been changed toOk
. This affects all uses of.matchWith
as well as constructing values. -
(d5e780f)
Remove the.cata()
method fromcore/adt
, but adds it to Maybe and Validation. This breaks anycore/adt
structure that was using.cata()
instead of.matchWith()
, but makes it easier for people to migrate their code with Maybe and Validation to Folktale 2 by just replacingrequire('data.maybe')
withrequire('folktale/data/maybe')
. -
(f0dd120)
Several renamings to make the API consistent regarding its usage of English (see #21), so now all names in the API use US English spelling, although the documentation still uses British English spelling:- The
Show
derivation (core/adt/show.js
) is now calledDebugRepresentation
(core/adt/derivations/debug-representation.js
); - The
Setoid
derivation (core/adt/setoid.js
) is now calledEquality
(core/adt/derivations/equality.js
). The method for providing a custom comparison function, previously.withEquality(cmp)
is now called.wthCustomComparison(cmp)
; - The
Serialize
derivation (core/adt/serialize.js
) is now calledSerialization
(core/adt/derivations/serialization.js
); - The derivations are now provided in the
core/adt/derivations.js
file, and consequently in aderivations
property of thecore/adt
module, rather than directly there; - The
partialise
function (core/lambda/partialise.js
) is now calledpartialize
(core/lambda/partialize.js
).
- The