• Stars
    star
    542
  • Rank 81,957 (Top 2 %)
  • Language
    TypeScript
  • License
    MIT License
  • Created almost 6 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Structured concurrency and effects for JavaScript

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

Effection

Structured concurrency and effects for JavaScript.

Why use Effection?

Using Effection provides many benefits over using plain Promises and async/await code:

  • Cleanup: Effection code cleans up after itself, and that means never having to remember to manually close a resource or detach a listener.
  • Cancellation: Any Effection task can be cancelled, which will completely stop that task, as well as stopping any other tasks this operation itself has started.
  • Synchronicity: Unlike Promises and async/await, Effection is fundamentally synchronous in nature, this means you have full control over the event loop and operations requiring synchronous setup remain race condition free.
  • Composition: Since all Effection code is well behaved, it composes easily, and there are no nasty surprises when trying to fit different pieces together.

Effection leverages the idea of structured concurrency to ensure that you don't leak any resources, and that cancellation is properly handled. It helps you build concurrent code that feels rock solid and behaves well under all failure conditions. In essence, Effection allows you to compose concurrent code so that you can reason about its behavior.

Learn how to use Effection in your own project

Contributing

Currently, Effection development happens using yarn. While npm may work, it is not tested so your mileage may vary.

To build, run the prepack command from the root directory.

$ yarn prepack

You can also run the prepack command within each sub directory to only build that package.

Don't forget describe changes that you made. For that you need to create *.md file in .changes directory with list of changed packages, each package should be versioned by semver, and on the last line briefly describe your changes. Like this:

---
"package-name1": "patch"
"package-name2": "minor"
---

Added new awesome feature

The more information about this format you can find in covector docs

Testing

To run tests:

$ yarn test

Most test suites use the @effection/mocha to leverage Effection to test itself.

More Repositories

1

microstates

Composable state primitives for JavaScript
JavaScript
1,311
star
2

frontmacs

Package-based, web-centric, customizable, awesome-by-default, acceptance-tested Emacs distribution
Emacs Lisp
500
star
3

funcadelic.js

Functional programming and category theory for everyday JavaScript development
JavaScript
194
star
4

bigtest

Ensure your React/Vue/Ember/anything app works perfectly across browsers.
TypeScript
99
star
5

simulacrum

A simulation platform for use during testing, during development and for high-fidelity application previews
TypeScript
90
star
6

ember-let

Create variable bindings inside your handlebars templates
JavaScript
52
star
7

continuation

Delimited Continuations for JavasScript
TypeScript
29
star
8

interactors

Composable page objects for components
TypeScript
27
star
9

jasmine.backbone.js

Jasmine matchers and utilities for testing Backbone.js applications
JavaScript
24
star
10

emberx-slider

[DEPRECATED] A Slider component for Ember based on the native html5 range input.
JavaScript
19
star
11

playhouse

Frontside's Backstage Portal
TypeScript
18
star
12

graphgen

Complete, realistic, and repeatable fake datasets
TypeScript
15
star
13

emberx-xml-http-request

Ajax. Breezy like.
JavaScript
14
star
14

ctrlc-windows

Send a CTRL-C event to a Windows console application
Rust
9
star
15

localmotive

A Rails Engine for Local Development
Ruby
8
star
16

javascript

Frontside JavaScript tooling
JavaScript
8
star
17

actions

Collection of GitHub Actions created by Frontside
TypeScript
6
star
18

ember-cli-select

[DEPRECATED] A hand rolled replacement for select boxes written in Ember
JavaScript
6
star
19

revolution

After the years of reaction comes revolution
TypeScript
6
star
20

emberx-range-input

A Slider component for Ember based on the native html5 range input.
JavaScript
5
star
21

emberx-select-blockless

[DEPRECATED] Extends the x-select component so that it can be used in blockless form a-la the now deprecated Ember.SelectView
JavaScript
5
star
22

frontside.com

The Frontside Website
TypeScript
4
star
23

HydraphQL

Tool that DRY and then Hydrate your GraphQL schema
TypeScript
4
star
24

deprecated-prop-type

Communicate to the consumers of your component that the marked prop is deprecated.
JavaScript
4
star
25

activerecord-attributes

Add simple attribute annotations to your active records
Ruby
3
star
26

emberx-form

Form/field components for working with changesets
JavaScript
3
star
27

pixelfy-me

Demo app
JavaScript
3
star
28

packup-reproduction

TypeScript
3
star
29

oss-dashboard

A dashboard to see the status of our OSS repos at a glance
JavaScript
3
star
30

jquery-drag-rails

Bring in special events jquery.event.drag via asset pipeline
Ruby
3
star
31

platformscript

Bring your YAML to life
TypeScript
3
star
32

element-is-visible

Robust algorithm for checking whether a DOM element is visible. Extracted from Selenium.
TypeScript
2
star
33

emberx-file-reader

JavaScript
2
star
34

rack-current

Rack middleware to make current request available to all
Ruby
2
star
35

adv-ember-training-v2

Advanced Ember Training V2
JavaScript
1
star
36

buzz-rails

Use buzz.js in Rails
Ruby
1
star
37

circleci-react-orb

Production-ready workflow for testing and building React.js applications
1
star
38

freejack

Push-based UI for a new category of web application.
TypeScript
1
star
39

vacation-tracker

JavaScript
1
star
40

jquery-entwine-rails

Use entwine inside a Rails 3.1 application
Ruby
1
star
41

importmap-poc

TypeScript
1
star
42

backstage-simulacrum-demo

Demo of using Simulacrum to simulate Auth0 for authentication and LDAP for data.
TypeScript
1
star
43

node-deno

Invoke Deno commands from within Node.
TypeScript
1
star
44

oss-wumbo

Tracks open source and community activity at the Frontside.
1
star
45

effection-contrib

Useful collection of community contributed modules for Effection
TypeScript
1
star
46

media-filter

Staging area for the media filter Ember app for the 2016 Frontside website
JavaScript
1
star