The web needs more zero-cost-abstractions and parallelism. This is a project to help with that.
This project is a monorepo using lerna
and yarn workspaces
to publish multiple related
packages to npm
. This directory is unpublished.
The individual published packages are located in the packages/
and have private: false
in their package.json
. Unpublished packages used for testing or dev-infra are prefixed
with unpublished_
To learn more about the individual packages, visit the corresponding package README
.
An ember-addon which enables your ember-app or ember-addon to have workers built with
@skyrocketjs/worker
located in a top-level workers/
directory that are useable by
consuming apps via service-like injection.
Configuration is as easy as adding this package to your app or addon dependencies.
In Fastboot
, each app instance will get it's own unique worker instances that run
as their own node worker. These workers
will be torn down when the app instance is destroyed.
In testing
, each app instance will get it's own unique WebWorker
instances. SharedWorkers
will be instantiated as WebWorkers
to ensure encapsulation.
These workers will be torn down when the app instance is destroyed.
Provides decorators and base classes for creating both WebWorkers
and SharedWorkers
that abstract away the need for authoring main-thread code or using postMessage
.
Communication is driven by async APIs that work naturally with Promise
and async...await
.
A BabelPlugin which parses schema information based on config from encountered classes.
This is reusable by many projects, but won't need to be configured directly for users
of @skyrocketjs/ember
.
Service wrapper for instantiating workers on the main thread. Meant to be generic but tied
to Ember
in the current alpha
while a plan for either synchronous or asynchronous dynamic
imports is devised. The instantiated workers use the schemas produced by for workers built
with @skyrocketjs/worker
to provide async APIs and event listenting.
A BroccoliPlugin which takes compiled schemas from @skyrocketjs/schema
for workers built
with @skyrocketjs/worker
and produces runnable worker scripts.
This is reusable by many projects, but won't need to be configured directly for users
of @skyrocketjs/ember
.