thefrontside / effection

Structured concurrency and effects for JavaScript
https://frontside.com/effection
MIT License
579 stars 25 forks source link
algebraic-effects async-await concurrency effects effects-management structured-concurrency task-runner

npm bundle size (minified + gzip) License: MIT Created by Frontside Chat on Discord

Effection

Structured concurrency and effects for JavaScript.

Why use Effection?

Effection leverages the idea of structured concurrency to ensure that you don't leak any resources, effects, and that cancellation is always properly handled. It helps you build concurrent code that feels rock solid at scale, and it does all of this while feeling like normal JavaScript.

Learn how to use Effection in your own project

Platforms

Effection runs on all major JavaScript platforms including NodeJs, Browser, and Deno. It is published on both npm and deno.land.

Contributing to Website

Go to website's readme to learn how to contribute to the website.

Development

Deno is the primary tool used for development, testing, and packaging.

Testing

To run tests:

$ deno task test

Building NPM Packages

If you want to build a development version of the NPM package so that you can link it locally, you can use the build:npm script and passing it a version number. for example:

$ deno task build:npm 3.0.0-mydev-snapshot.0
Task build:npm deno run -A tasks/build-npm.ts "3.0.0-mydev-snapshot.0"
[dnt] Transforming...
[dnt] Running npm install...

up to date, audited 1 package in 162ms

found 0 vulnerabilities
[dnt] Building project...
[dnt] Emitting ESM package...
[dnt] Emitting script package...
[dnt] Complete!

Now, the built npm package can be found in the build/npm directory.