TypeScript and JavaScript implementation of Dataspaces, Syndicate, and TypeScript language support for Syndicate. Targets both the browser and node.js.
Go to file
Tony Garnock-Jones 075893fc85 Fix up a few of the more egregious problems with the plugin.
TypeScript has been moving on while the plugin has been staying still, and
that has caused the plugin to stop working well. This patch gets things
back into somewhat workable state, but I'm sure more will be required.

Changes include:

 - `hookHost` is no longer required: instead, we hook ts.createSourceFile.

 - `shouldExpand` abstracts away details of whether a file is considered
   Syndicateish or not.

 - The code that does the Syndicate expansion has been abstracted out of
   the detail of how expansion is invoked by the language server.

 - I've had to monkey-patch ScriptInfo in order to get access to the
   `editContent` method.

 - As a consequence, at plugin startup, we invalidate existing ScriptInfo
   instances so they are rebuilt with our SyndicateScriptInfo constructor.
2023-04-28 10:32:49 +02:00
examples Update example lockfiles 2023-02-11 22:10:38 +01:00
git-hooks Switch to Racket fixcopyright package 2023-01-17 11:40:29 +01:00
packages Fix up a few of the more egregious problems with the plugin. 2023-04-28 10:32:49 +02:00
todo Seconds-based timer protocols 2023-02-06 16:08:12 +01:00
.gitignore Lerna wants us to not ignore package-lock.json 2021-01-23 23:55:30 +01:00
.npmignore Switch to apenwarr's `redo` 2018-11-06 23:13:51 +00:00
LICENCE Put licences in the place that lerna expects them (?) 2021-12-10 14:02:58 +01:00
Makefile PROTOCOLS_BRANCH 2023-02-08 19:39:14 +01:00
README.md Seconds-based timer protocols 2023-02-06 16:08:12 +01:00
TODO.md Seconds-based timer protocols 2023-02-06 16:08:12 +01:00
lerna.json Switch to yarn workspaces 2021-04-26 15:13:30 +02:00
package.json Bump deps, upgrade typescript 2023-02-04 12:17:20 +01:00
rollup.js More fixes 2021-01-26 22:09:21 +01:00
setup.sh Oops. Omitted these 2021-12-09 22:28:59 +01:00
watchall Switch to yarn workspaces 2021-04-26 15:13:30 +02:00
yarn.lock Upgrade typescript-language-server to 3.3.2 2023-04-28 10:20:10 +02:00

README.md

Syndicate/js

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.

Branches

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

Building

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.

Licence

@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/.