Skip to content

rzeigler/waveguide

This branch is 1 commit ahead of master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

a6b07cc · Mar 13, 2020
Mar 9, 2019
Aug 25, 2019
Aug 26, 2019
Nov 16, 2019
Oct 18, 2019
May 21, 2019
Feb 11, 2020
Oct 18, 2019
Aug 26, 2019
Aug 26, 2019
May 9, 2019
Aug 18, 2019
Apr 26, 2019
Dec 21, 2019
Apr 26, 2019
Mar 13, 2020
Feb 24, 2020
Aug 18, 2019
Aug 25, 2019

Repository files navigation

waveguide

npm version npm version next CircleCI Join the chat at https://gitter.im/waveguide-core/community

waveguide has been superseded by mikearnaldi/matechs-effect. This package is a based off a fork of waveguide, is used in production, and contains useful additional modules like a request client.

Waveguide is a set of modules provided data types for describing effects in Typescript in the fp-ts ecosystem inspired by scala projects such as ZIO and cats-effect. Waveguide allows you to communicate with the real world in a referentially transparent manner. For a quick overview of waveguide in action see the tutorial A companion streaming library is being incubated in waveguide-streams and will eventually become part of the core

IO is:

  • Lazy. Work is not done until explicitly asked for and interruption can be used to stop work that is no longer needed.
  • Efficient. Asynchronous boundaries only occur where necessary. The run loop will execute as much work as it can before suspending.
  • Interoperable. There are a functions to adapt Promises as well as the fp-ts effect types.
  • Resource safe. Exposes a number of primitives for working with resources and guaranteeing cleanup.
  • Concurrent. Exposes a logical fiber model with support for joins and interrupts. Write your code as a sequence of effects and communicate with other fibers rather than trying to juggle the state of all concurrent processes at once.

For more information see the docs or the tutorial.

If you have questions don't hesitate to ask them in the gitter.