TypeScript and JavaScript implementation of Dataspaces, Syndicate, and TypeScript language support for Syndicate. Targets both the browser and node.js.
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Go to file
Tony Garnock-Jones 0533b3fd0f Expose queuedTasks 5 days ago
examples Bump preserves version, other deps 4 weeks ago
git-hooks Switch to Racket fixcopyright package 5 months ago
packages Expose queuedTasks 5 days ago
todo Seconds-based timer protocols 4 months ago
.gitignore Lerna wants us to not ignore package-lock.json 2 years ago
.npmignore Switch to apenwarr's `redo` 5 years ago
LICENCE Put licences in the place that lerna expects them (?) 2 years ago
Makefile PROTOCOLS_BRANCH 4 months ago
README.md Seconds-based timer protocols 4 months ago
TODO.md Seconds-based timer protocols 4 months ago
lerna.json Switch to yarn workspaces 2 years ago
package.json Bump deps, upgrade typescript 4 months ago
rollup.js More fixes 2 years ago
setup.sh Oops. Omitted these 2 years ago
watchall Switch to yarn workspaces 2 years ago
yarn.lock Bump preserves version, other deps 4 weeks ago



A fourth-generation implementation of Dataspaces and Syndicate for TypeScript and JavaScript, in both node.js and the browser. The implementation techniques herein are the subject of a forthcoming paper.


The main branch is where active development happens:

git clone -b main https://git.syndicate-lang.org/syndicate-lang/syndicate-js

An earlier TypeScript+JavaScript implementation from early 2021 (the primary difference to main being a lack of object-capability support) can be found on the typescript1 branch:

git clone -b typescript1 https://git.syndicate-lang.org/syndicate-lang/syndicate-js

Finally, the babel-based branch is from 2018, and is an implementation for JavaScript only. It extends babel with new syntax and new plugins, (rather than implementing its own error-tolerant parser, like typescript1 and main):

git clone -b babel-based https://git.syndicate-lang.org/syndicate-lang/syndicate-js


These instructions are for the main branch.

This project uses yarn, not npm.

The repository is a monorepo, using yarn workspaces. Lerna is used as a thin veneer atop yarn workspaces, providing convenient automation for package version management and publication.

After a checkout, run:

make bootstrap

Alternatively, running:

yarn install
./node_modules/.bin/lerna exec yarn prepare

will download and install all dependencies and then build all the packages.


@syndicate-lang, an implementation of Syndicate for TypeScript and JavaScript.
Copyright (C) 2016-2021 Tony Garnock-Jones tonyg@leastfixedpoint.com

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.