Compare commits

...

416 Commits

Author SHA1 Message Date
Tony Garnock-Jones a8438f9191 Publish
- @syndicate-lang/browser-stdenv@0.35.1
 - @syndicate-lang/core@0.34.1
 - @syndicate-lang/create@0.25.1
 - @syndicate-lang/fs@0.35.1
 - @syndicate-lang/html@0.35.1
 - @syndicate-lang/html2@0.35.1
 - @syndicate-lang/loader@0.35.1
 - @syndicate-lang/service@0.35.1
 - @syndicate-lang/syndicatec@0.36.1
 - @syndicate-lang/timer@0.35.1
 - @syndicate-lang/ts-plugin@0.36.1
 - @syndicate-lang/tsc@0.36.1
 - @syndicate-lang/ws-relay@0.36.1
2024-05-03 16:41:45 +02:00
Tony Garnock-Jones 047bded3af Repair preserves dependency specifications 2024-05-03 16:41:19 +02:00
Tony Garnock-Jones 221208dbbd Slightly nicer dev compilation watch automation 2024-04-17 14:59:39 +02:00
Tony Garnock-Jones e3d419deab Publish
- @syndicate-lang/browser-stdenv@0.35.0
 - @syndicate-lang/compiler@0.22.0
 - @syndicate-lang/core@0.34.0
 - @syndicate-lang/fs@0.35.0
 - @syndicate-lang/html@0.35.0
 - @syndicate-lang/html2@0.35.0
 - @syndicate-lang/loader@0.35.0
 - @syndicate-lang/service@0.35.0
 - @syndicate-lang/syndicatec@0.36.0
 - @syndicate-lang/timer@0.35.0
 - @syndicate-lang/ts-plugin@0.36.0
 - @syndicate-lang/tsc@0.36.0
 - @syndicate-lang/ws-relay@0.36.0
2024-04-17 13:26:31 +02:00
Tony Garnock-Jones ebe7700cee Allow "when (...)" clause on "on" endpoints 2024-04-17 13:26:06 +02:00
Tony Garnock-Jones f4f2ad0783 Await SchemaReady before translating and running Syndicate scripts 2024-04-17 13:25:40 +02:00
Tony Garnock-Jones c1cdf3660f Allow changes to trigger event in ValueWidget after construction (messy still, but possible) 2024-04-17 13:25:06 +02:00
Tony Garnock-Jones 9d8e7f5ccd querySelector/querySelectorAll on Widgets 2024-04-17 13:24:48 +02:00
Tony Garnock-Jones bf9d10813e More flexible Widget node specification 2024-04-17 13:24:37 +02:00
Tony Garnock-Jones 80250fdac9 Better treatment of invalid HtmlFragments 2024-04-17 13:23:50 +02:00
Tony Garnock-Jones 305c0c26ee Cosmetic: whitespace 2024-04-17 13:22:21 +02:00
Tony Garnock-Jones 782f24687f Track observers per-assertion, not per-observer-ref, to repair incremental updates of pattern (!) 2024-04-17 13:22:05 +02:00
Tony Garnock-Jones 6d904d276e Proper treatment of annotations through dataspaces 2024-04-17 13:21:28 +02:00
Tony Garnock-Jones 4b5eccad24 Publish
- @syndicate-lang/browser-stdenv@0.34.0
 - @syndicate-lang/core@0.33.0
 - @syndicate-lang/fs@0.34.0
 - @syndicate-lang/html@0.34.0
 - @syndicate-lang/html2@0.34.0
 - @syndicate-lang/loader@0.34.0
 - @syndicate-lang/service@0.34.0
 - @syndicate-lang/syndicatec@0.35.0
 - @syndicate-lang/timer@0.34.0
 - @syndicate-lang/ts-plugin@0.35.0
 - @syndicate-lang/tsc@0.35.0
 - @syndicate-lang/ws-relay@0.35.0
2024-04-15 10:26:49 +02:00
Tony Garnock-Jones 4a05bbad73 Rename Dataspace.global to Dataspace.local 2024-04-15 10:26:27 +02:00
Tony Garnock-Jones 40bc9aadd3 Bring examples up-to-date 2024-04-12 10:40:17 +02:00
Tony Garnock-Jones 17890a6b97 syndicate-js.code-workspace 2024-04-12 10:28:55 +02:00
Tony Garnock-Jones 3b20a58dce Publish
- @syndicate-lang/browser-stdenv@0.33.0
 - @syndicate-lang/core@0.32.0
 - @syndicate-lang/create@0.25.0
 - @syndicate-lang/fs@0.33.0
 - @syndicate-lang/html@0.33.0
 - @syndicate-lang/html2@0.33.0
 - @syndicate-lang/loader@0.33.0
 - @syndicate-lang/service@0.33.0
 - @syndicate-lang/syndicatec@0.34.0
 - @syndicate-lang/timer@0.33.0
 - @syndicate-lang/ts-plugin@0.34.0
 - @syndicate-lang/tsc@0.34.0
 - @syndicate-lang/ws-relay@0.34.0
2024-04-12 10:25:41 +02:00
Tony Garnock-Jones 4cce2fb6f2 Update chat example code 2024-04-12 10:25:04 +02:00
Tony Garnock-Jones 96a8367667 Update to new dataspace pattern language 2024-04-12 10:21:54 +02:00
Tony Garnock-Jones bdb759fe52 Merge latest changes from the syndicate-protocols repository 2024-04-11 16:23:45 +02:00
Tony Garnock-Jones c0239cf322 And with that we are almost back where we started with http.prs! 2024-04-10 15:16:35 +02:00
Tony Garnock-Jones 9cc4175f24 Cope with HTTP/1.0's optional Host header 2024-04-10 14:54:19 +02:00
Tony Garnock-Jones 70f42dd931 Another revision of http.prs 2024-04-10 14:31:27 +02:00
Tony Garnock-Jones ef1ebe6412 Sigh. <done> turns out to be a good idea in addition to <processing> 2024-04-10 13:24:25 +02:00
Tony Garnock-Jones ca18ca08df Alternative representation of dataspacePatterns 2024-04-09 09:15:21 +02:00
Tony Garnock-Jones 40ca168eac Repair typo 2024-04-09 09:13:51 +02:00
Tony Garnock-Jones 5a73e8d4c3 Alter dataspacePatterns language to make rec and arr more like dict 2024-04-04 16:31:09 +02:00
Tony Garnock-Jones b6092b2a98 Cosmetic 2024-04-04 15:52:52 +02:00
Tony Garnock-Jones 6b58ef9f0f Generalise dataspace patterns to permit extensibility 2024-04-04 15:52:43 +02:00
Tony Garnock-Jones 29959c055e Missed a couple of changes for js-preserves2 2024-04-04 15:46:19 +02:00
Tony Garnock-Jones 1708274401 Bump @preserves/schema dep 2024-04-04 13:47:44 +02:00
Tony Garnock-Jones 39e7eaac8d Publish
- @syndicate-lang/browser-stdenv@0.32.0
 - @syndicate-lang/core@0.31.0
 - @syndicate-lang/create@0.24.0
 - @syndicate-lang/fs@0.32.0
 - @syndicate-lang/html@0.32.0
 - @syndicate-lang/html2@0.32.0
 - @syndicate-lang/loader@0.32.0
 - @syndicate-lang/service@0.32.0
 - @syndicate-lang/syndicatec@0.33.0
 - @syndicate-lang/timer@0.32.0
 - @syndicate-lang/ts-plugin@0.33.0
 - @syndicate-lang/tsc@0.33.0
 - @syndicate-lang/ws-relay@0.33.0
2024-04-03 22:44:49 +02:00
Tony Garnock-Jones 687dff648f Preserves dep bump 2024-04-03 22:44:29 +02:00
Tony Garnock-Jones 710ff91a64 Revise http protocol 2024-04-01 15:56:07 +02:00
Tony Garnock-Jones fd491b5c71 Updates for js-preserves2 Preserves implementation 2024-03-28 16:31:27 +01:00
Tony Garnock-Jones cbcd4b9ad9 Repair noise session introduction 2024-03-28 16:30:27 +01:00
Tony Garnock-Jones bfef60eaa9 Merge latest changes from the syndicate-protocols repository 2024-03-28 16:14:11 +01:00
Tony Garnock-Jones c59e044695 Set embeddedType for noise 2024-03-28 15:49:48 +01:00
Tony Garnock-Jones bf0d47f1b7 Repair noise protocol 2024-03-28 15:17:28 +01:00
Tony Garnock-Jones 85b2299061 Use constructor instead of ad-hoc objects for various `Ref`s 2024-03-28 12:40:25 +01:00
Tony Garnock-Jones 90aa9656ca Repair bogus ref syntax 2024-03-28 12:36:45 +01:00
Tony Garnock-Jones de596ae408 location.hash is URI-encoded 2024-03-28 12:36:28 +01:00
Tony Garnock-Jones 8ce11ddb12 More flexible `decodeStandardRoute` 2024-03-28 12:36:13 +01:00
Tony Garnock-Jones f105736694 html2 templateGenerator 2024-03-28 10:22:21 +01:00
Tony Garnock-Jones 8031eb1a17 Publish
- @syndicate-lang/browser-stdenv@0.31.2
 - @syndicate-lang/core@0.30.1
 - @syndicate-lang/create@0.23.2
 - @syndicate-lang/fs@0.31.2
 - @syndicate-lang/html@0.31.2
 - @syndicate-lang/html2@0.31.2
 - @syndicate-lang/loader@0.31.2
 - @syndicate-lang/service@0.31.2
 - @syndicate-lang/syndicatec@0.32.2
 - @syndicate-lang/timer@0.31.2
 - @syndicate-lang/ts-plugin@0.32.2
 - @syndicate-lang/tsc@0.32.2
 - @syndicate-lang/ws-relay@0.32.2
2024-03-23 11:19:07 +01:00
Tony Garnock-Jones 906717121a Bump preserves and other deps 2024-03-23 11:18:53 +01:00
Tony Garnock-Jones e0d5e86da8 Publish
- @syndicate-lang/browser-stdenv@0.31.1
 - @syndicate-lang/compiler@0.21.1
 - @syndicate-lang/fs@0.31.1
 - @syndicate-lang/html@0.31.1
 - @syndicate-lang/html2@0.31.1
 - @syndicate-lang/loader@0.31.1
 - @syndicate-lang/service@0.31.1
 - @syndicate-lang/syndicatec@0.32.1
 - @syndicate-lang/timer@0.31.1
 - @syndicate-lang/ts-plugin@0.32.1
 - @syndicate-lang/tsc@0.32.1
 - @syndicate-lang/ws-relay@0.32.1
2024-03-23 10:44:16 +01:00
Tony Garnock-Jones 2dca2c2d77 Repair span of identifier after `$` 2024-03-23 10:43:42 +01:00
Tony Garnock-Jones da97db8548 Publish
- @syndicate-lang/browser-stdenv@0.31.0
 - @syndicate-lang/core@0.30.0
 - @syndicate-lang/fs@0.31.0
 - @syndicate-lang/html@0.31.0
 - @syndicate-lang/html2@0.31.0
 - @syndicate-lang/loader@0.31.0
 - @syndicate-lang/service@0.31.0
 - @syndicate-lang/syndicatec@0.32.0
 - @syndicate-lang/timer@0.31.0
 - @syndicate-lang/ts-plugin@0.32.0
 - @syndicate-lang/tsc@0.32.0
 - @syndicate-lang/ws-relay@0.32.0
2024-03-22 20:50:07 +01:00
Tony Garnock-Jones 63b5d23391 Repair rewrite.ts attenuate() 2024-03-22 20:49:05 +01:00
Tony Garnock-Jones 036c342264 Template and rewrite-building routines in rewrite.ts 2024-03-22 12:19:02 +01:00
Tony Garnock-Jones 7797a3cd09 Updated description of gatekeeper protocol 2024-03-22 10:11:57 +01:00
Tony Garnock-Jones f5501ccb64 Publish
- @syndicate-lang/browser-stdenv@0.30.1
 - @syndicate-lang/core@0.29.1
 - @syndicate-lang/fs@0.30.1
 - @syndicate-lang/html@0.30.1
 - @syndicate-lang/html2@0.30.1
 - @syndicate-lang/loader@0.30.1
 - @syndicate-lang/service@0.30.1
 - @syndicate-lang/syndicatec@0.31.1
 - @syndicate-lang/timer@0.30.1
 - @syndicate-lang/ts-plugin@0.31.1
 - @syndicate-lang/tsc@0.31.1
 - @syndicate-lang/ws-relay@0.31.1
2024-03-21 21:58:52 +01:00
Tony Garnock-Jones 3b7543845a Repair mac() function to produce correct output width 2024-03-21 21:58:32 +01:00
Tony Garnock-Jones a25cafdabb Publish
- @syndicate-lang/browser-stdenv@0.30.0
 - @syndicate-lang/core@0.29.0
 - @syndicate-lang/fs@0.30.0
 - @syndicate-lang/html@0.30.0
 - @syndicate-lang/html2@0.30.0
 - @syndicate-lang/loader@0.30.0
 - @syndicate-lang/service@0.30.0
 - @syndicate-lang/syndicatec@0.31.0
 - @syndicate-lang/timer@0.30.0
 - @syndicate-lang/ts-plugin@0.31.0
 - @syndicate-lang/tsc@0.31.0
 - @syndicate-lang/ws-relay@0.31.0
2024-03-21 21:28:08 +01:00
Tony Garnock-Jones 291ec1805b Synchronous cryptography; convenient `mint` overload for producing a ref and a bind at once 2024-03-21 21:27:23 +01:00
Tony Garnock-Jones de2a163dee Publish
- @syndicate-lang/browser-stdenv@0.29.0
 - @syndicate-lang/compiler@0.21.0
 - @syndicate-lang/fs@0.29.3
 - @syndicate-lang/html@0.29.3
 - @syndicate-lang/html2@0.29.3
 - @syndicate-lang/loader@0.29.0
 - @syndicate-lang/service@0.29.3
 - @syndicate-lang/syndicatec@0.30.0
 - @syndicate-lang/timer@0.29.3
 - @syndicate-lang/ts-plugin@0.30.0
 - @syndicate-lang/tsc@0.30.0
 - @syndicate-lang/ws-relay@0.30.3
2024-03-21 16:08:15 +01:00
Tony Garnock-Jones 227b3e5062 Bump deps 2024-03-21 16:05:34 +01:00
Tony Garnock-Jones 1e29d528d7 Support toplevel typed binders in patterns 2024-03-21 16:04:30 +01:00
Tony Garnock-Jones 73b7759816 Allow statement boundary to include end-of-group, so long as the group is toplevel or braces 2024-03-21 16:04:03 +01:00
Tony Garnock-Jones 658f324e76 Publish
- @syndicate-lang/browser-stdenv@0.28.2
 - @syndicate-lang/core@0.28.2
 - @syndicate-lang/fs@0.29.2
 - @syndicate-lang/html@0.29.2
 - @syndicate-lang/html2@0.29.2
 - @syndicate-lang/loader@0.28.2
 - @syndicate-lang/service@0.29.2
 - @syndicate-lang/syndicatec@0.29.2
 - @syndicate-lang/timer@0.29.2
 - @syndicate-lang/ts-plugin@0.29.2
 - @syndicate-lang/tsc@0.29.2
 - @syndicate-lang/ws-relay@0.30.2
2024-03-19 20:36:29 +01:00
Tony Garnock-Jones 0f13f2b238 Reset noise state when server retracts and reasserts session 2024-03-19 20:35:54 +01:00
Tony Garnock-Jones 140dc240c8 Export Field from @syndicate-lang/core 2024-03-19 20:35:20 +01:00
Tony Garnock-Jones 2abb541aba Publish
- @syndicate-lang/browser-stdenv@0.28.1
 - @syndicate-lang/core@0.28.1
 - @syndicate-lang/create@0.23.1
 - @syndicate-lang/fs@0.29.1
 - @syndicate-lang/html@0.29.1
 - @syndicate-lang/html2@0.29.1
 - @syndicate-lang/loader@0.28.1
 - @syndicate-lang/service@0.29.1
 - @syndicate-lang/syndicatec@0.29.1
 - @syndicate-lang/timer@0.29.1
 - @syndicate-lang/ts-plugin@0.29.1
 - @syndicate-lang/tsc@0.29.1
 - @syndicate-lang/ws-relay@0.30.1
2024-03-16 17:49:05 +01:00
Tony Garnock-Jones 44d0d030cc Fix preserves dep 2024-03-16 17:48:46 +01:00
Tony Garnock-Jones 772a46b093 Publish
- @syndicate-lang/browser-stdenv@0.28.0
 - @syndicate-lang/core@0.28.0
 - @syndicate-lang/fs@0.29.0
 - @syndicate-lang/html@0.29.0
 - @syndicate-lang/html2@0.29.0
 - @syndicate-lang/loader@0.28.0
 - @syndicate-lang/service@0.29.0
 - @syndicate-lang/syndicatec@0.29.0
 - @syndicate-lang/timer@0.29.0
 - @syndicate-lang/ts-plugin@0.29.0
 - @syndicate-lang/tsc@0.29.0
 - @syndicate-lang/ws-relay@0.30.0
2024-03-16 17:44:04 +01:00
Tony Garnock-Jones 1958e4ec49 Refactor Relay while puzzling over sessions 2024-03-16 17:42:54 +01:00
Tony Garnock-Jones 300e15b674 Cosmetic 2024-03-16 17:41:45 +01:00
Tony Garnock-Jones 40f5ef4085 Replace boundary structure to preserve embedded value separation 2024-03-12 22:56:01 +01:00
Tony Garnock-Jones 9521fc3dcc Switch to directly-represented embedded values 2024-03-12 21:38:49 +01:00
Tony Garnock-Jones f5ed511c4e Publish
- @syndicate-lang/create@0.23.0
2024-03-10 14:51:02 +01:00
Tony Garnock-Jones 61997473a3 Dust off the @syndicate-lang/create template 2024-03-10 14:50:28 +01:00
Tony Garnock-Jones 502c0fd286 Publish
- @syndicate-lang/browser-stdenv@0.27.1
 - @syndicate-lang/compiler@0.20.1
 - @syndicate-lang/core@0.27.1
 - @syndicate-lang/fs@0.28.1
 - @syndicate-lang/html@0.28.1
 - @syndicate-lang/html2@0.28.1
 - @syndicate-lang/loader@0.27.1
 - @syndicate-lang/service@0.28.1
 - @syndicate-lang/syndicatec@0.28.1
 - @syndicate-lang/timer@0.28.1
 - @syndicate-lang/ts-plugin@0.28.1
 - @syndicate-lang/tsc@0.28.1
 - @syndicate-lang/ws-relay@0.29.1
2024-03-10 14:26:48 +01:00
Tony Garnock-Jones be74496012 Prettifier to make compiler tests easier to read and write 2024-03-10 14:26:04 +01:00
Tony Garnock-Jones 888b3be291 Check for and prevent cross-actor facet termination 2024-03-10 12:47:05 +01:00
Tony Garnock-Jones ce598e6954 The typescript code compilation process depends on @preserves/schema. 2024-03-09 23:50:05 +01:00
Tony Garnock-Jones f31262a805 Bump deps for remaining examples 2024-03-09 23:35:32 +01:00
Tony Garnock-Jones 4a49c0e6e8 Bump deps of example-simple-chat 2024-03-09 23:31:12 +01:00
Tony Garnock-Jones 5773918b71 Bump deps of syndicate-html-example-table 2024-03-09 23:26:47 +01:00
Tony Garnock-Jones 881b92b8aa Bump deps of flappy-bird example 2024-03-09 23:24:38 +01:00
Tony Garnock-Jones 23dde45295 Publish
- @syndicate-lang/browser-stdenv@0.27.0
 - @syndicate-lang/compiler@0.20.0
 - @syndicate-lang/core@0.27.0
 - @syndicate-lang/fs@0.28.0
 - @syndicate-lang/html@0.28.0
 - @syndicate-lang/html2@0.28.0
 - @syndicate-lang/loader@0.27.0
 - @syndicate-lang/service@0.28.0
 - @syndicate-lang/syndicatec@0.28.0
 - @syndicate-lang/timer@0.28.0
 - @syndicate-lang/ts-plugin@0.28.0
 - @syndicate-lang/tsc@0.28.0
 - @syndicate-lang/ws-relay@0.29.0
2024-03-09 23:15:06 +01:00
Tony Garnock-Jones de282f539a Repair clean targets 2024-03-09 23:12:27 +01:00
Tony Garnock-Jones 60a5c2fdee Update flappy-bird example 2024-03-09 23:06:43 +01:00
Tony Garnock-Jones 31f11d2389 Correct usages of `stop` to conform to new semantics 2024-03-09 23:06:00 +01:00
Tony Garnock-Jones 2bcffd3bab Require explicit facet in Turn.stop 2024-03-09 23:05:40 +01:00
Tony Garnock-Jones b4d728ca7a Change `stop` to refer to a lexical facet, not a dynamic facet.
The previous behaviour of `stop` was inappropriate: it always stopped
`Syndicate.Turn.activeFacet`, which is an instance of dynamic binding.

Now, it instead stops the unique lexically-innermost lexically-apparent
facet - the special name `currentSyndicateFacet` - by default. It is an
error if no such facet is lexically apparent (if `currentSyndicateFacet` is
unbound). This makes it similar to `break` and `continue` in structured
programming.

In addition, an expression denoting a facet can now be used with `stop` to
override this default - again, like `break` and `continue` in some
languages.

Finally, `react` can now be preceded by a label, which binds the label as a
variable denoting the newly-created facet (inside the facet's scope).
2024-03-09 23:04:29 +01:00
Tony Garnock-Jones 644891ce76 Compiler test infrastructure 2024-03-09 22:52:09 +01:00
Tony Garnock-Jones 4843c76784 Remove unused import 2024-03-09 11:23:37 +01:00
Tony Garnock-Jones 4c8796b6c9 Allow use of `id` attribute on in-browser script tags to propagate to compilation output 2024-03-09 11:22:10 +01:00
Tony Garnock-Jones 306d542600 Publish
- @syndicate-lang/browser-stdenv@0.26.3
 - @syndicate-lang/core@0.26.2
 - @syndicate-lang/create@0.22.1
 - @syndicate-lang/fs@0.27.2
 - @syndicate-lang/html@0.27.2
 - @syndicate-lang/html2@0.27.3
 - @syndicate-lang/loader@0.26.2
 - @syndicate-lang/service@0.27.2
 - @syndicate-lang/syndicatec@0.27.2
 - @syndicate-lang/timer@0.27.2
 - @syndicate-lang/ts-plugin@0.27.2
 - @syndicate-lang/tsc@0.27.2
 - @syndicate-lang/ws-relay@0.28.2
2024-03-08 15:48:36 +01:00
Tony Garnock-Jones 2f4f2e4708 Bump preserves-schema to 0.995.1 2024-03-08 15:48:11 +01:00
Tony Garnock-Jones d79dd51d14 Publish
- @syndicate-lang/browser-stdenv@0.26.2
 - @syndicate-lang/html2@0.27.2
2024-03-08 12:12:06 +01:00
Tony Garnock-Jones ab353b525b Remove node on actor crashes 2024-03-08 12:11:45 +01:00
Tony Garnock-Jones 1dab59bef4 Publish
- @syndicate-lang/browser-stdenv@0.26.1
 - @syndicate-lang/core@0.26.1
 - @syndicate-lang/fs@0.27.1
 - @syndicate-lang/html@0.27.1
 - @syndicate-lang/html2@0.27.1
 - @syndicate-lang/loader@0.26.1
 - @syndicate-lang/service@0.27.1
 - @syndicate-lang/syndicatec@0.27.1
 - @syndicate-lang/timer@0.27.1
 - @syndicate-lang/ts-plugin@0.27.1
 - @syndicate-lang/tsc@0.27.1
 - @syndicate-lang/ws-relay@0.28.1
2024-03-08 12:06:01 +01:00
Tony Garnock-Jones c73d4df2f2 Alter atExit to yield callback for removing the hook 2024-03-08 12:05:17 +01:00
Tony Garnock-Jones 0a0e8050cb Publish
- @syndicate-lang/browser-stdenv@0.26.0
 - @syndicate-lang/core@0.26.0
 - @syndicate-lang/create@0.22.0
 - @syndicate-lang/fs@0.27.0
 - @syndicate-lang/html@0.27.0
 - @syndicate-lang/html2@0.27.0
 - @syndicate-lang/loader@0.26.0
 - @syndicate-lang/service@0.27.0
 - @syndicate-lang/syndicatec@0.27.0
 - @syndicate-lang/timer@0.27.0
 - @syndicate-lang/ts-plugin@0.27.0
 - @syndicate-lang/tsc@0.27.0
 - @syndicate-lang/ws-relay@0.28.0
2024-03-08 10:27:19 +01:00
Tony Garnock-Jones 7eecee1122 Bump preserves 2024-03-08 10:26:13 +01:00
Tony Garnock-Jones 7e0b6dc33a Publish
- @syndicate-lang/browser-stdenv@0.25.0
 - @syndicate-lang/core@0.25.0
 - @syndicate-lang/create@0.21.0
 - @syndicate-lang/fs@0.26.0
 - @syndicate-lang/html@0.26.0
 - @syndicate-lang/html2@0.26.0
 - @syndicate-lang/loader@0.25.0
 - @syndicate-lang/service@0.26.0
 - @syndicate-lang/syndicatec@0.26.0
 - @syndicate-lang/timer@0.26.0
 - @syndicate-lang/ts-plugin@0.26.0
 - @syndicate-lang/tsc@0.26.0
 - @syndicate-lang/ws-relay@0.27.0
2024-02-05 23:24:53 +01:00
Tony Garnock-Jones cdbb1b4c24 Update to Preserves 0.994 2024-02-05 23:24:14 +01:00
Tony Garnock-Jones 87c3b211d8 Merge latest changes from the syndicate-protocols repository 2024-02-05 23:14:41 +01:00
Tony Garnock-Jones 9864ce0ec8 Switch `#!` to `#:` 2024-02-05 23:14:19 +01:00
Tony Garnock-Jones 501d5e578e Publish
- @syndicate-lang/browser-stdenv@0.24.0
 - @syndicate-lang/compiler@0.19.0
 - @syndicate-lang/core@0.24.0
 - @syndicate-lang/create@0.20.0
 - @syndicate-lang/fs@0.25.0
 - @syndicate-lang/html@0.25.0
 - @syndicate-lang/html2@0.25.0
 - @syndicate-lang/loader@0.24.0
 - @syndicate-lang/service@0.25.0
 - @syndicate-lang/syndicatec@0.25.0
 - @syndicate-lang/timer@0.25.0
 - @syndicate-lang/ts-plugin@0.25.0
 - @syndicate-lang/tsc@0.25.0
 - @syndicate-lang/ws-relay@0.26.0
2024-02-03 16:00:24 +01:00
Tony Garnock-Jones c9a52ebe39 New year 2024-02-03 15:59:22 +01:00
Tony Garnock-Jones 85cfabf63d Integrate preserves 0.993 2024-02-03 15:58:35 +01:00
Tony Garnock-Jones 2af79302c7 Merge latest changes from the syndicate-protocols repository 2024-02-03 15:54:11 +01:00
Tony Garnock-Jones 5dd68e87c1 Preserves 0.993 lacks float 2024-02-03 15:16:23 +01:00
Tony Garnock-Jones 794837f403 Allow trigger on input as well as change events 2024-01-07 13:02:45 +01:00
Tony Garnock-Jones 10cb9c1b34 Support use with existing nodes 2024-01-07 13:02:30 +01:00
Tony Garnock-Jones c9aab425fe Facet.wrap 2024-01-07 13:02:01 +01:00
Tony Garnock-Jones 46bafa9501 Remove sometimes-inappropriate error recovery on unexpected semicolon. Closes #5 2023-12-31 18:14:14 +01:00
Tony Garnock-Jones 3904c626c9 Repair Dataspace.retract() cleanup of handleMap (!) 2023-12-28 17:45:36 +13:00
Tony Garnock-Jones e2e72467cd Don't run external turns when space is paused 2023-12-21 14:13:45 +13:00
Tony Garnock-Jones 4e1475a176 SyndicateBrowserStdenv.autoboot_options 2023-12-21 12:03:49 +13:00
Tony Garnock-Jones 0a8975a2f6 once asserted ..., once message ..., etc 2023-12-21 10:30:23 +13:00
Tony Garnock-Jones 044ccad37c Export SaltyCrypto 2023-12-21 09:44:16 +13:00
Tony Garnock-Jones 8b5486abd8 Give the global dataspace actor a reasonable name 2023-12-20 21:39:07 +13:00
Tony Garnock-Jones 86066a0cd8 Publish
- @syndicate-lang/browser-stdenv@0.23.3
 - @syndicate-lang/html2@0.24.2
2023-12-20 21:31:02 +13:00
Tony Garnock-Jones ccb939be19 Repair multi-attribute template position 2023-12-20 21:29:42 +13:00
Tony Garnock-Jones 672c82ac64 Publish
- @syndicate-lang/browser-stdenv@0.23.2
2023-12-20 20:51:55 +13:00
Tony Garnock-Jones 814e78727e main entry 2023-12-20 20:51:20 +13:00
Tony Garnock-Jones 3b970e058c Publish
- @syndicate-lang/browser-stdenv@0.23.1
 - @syndicate-lang/html2@0.24.1
2023-12-20 20:44:01 +13:00
Tony Garnock-Jones 0422cafc11 Tweaks for stdenv 2023-12-20 20:41:54 +13:00
Tony Garnock-Jones cc0a023751 Publish
- @syndicate-lang/browser-stdenv@0.23.0
 - @syndicate-lang/compiler@0.18.0
 - @syndicate-lang/core@0.23.0
 - @syndicate-lang/create@0.19.0
 - @syndicate-lang/fs@0.24.0
 - @syndicate-lang/html@0.24.0
 - @syndicate-lang/html2@0.24.0
 - @syndicate-lang/loader@0.23.0
 - @syndicate-lang/service@0.24.0
 - @syndicate-lang/syndicatec@0.24.0
 - @syndicate-lang/timer@0.24.0
 - @syndicate-lang/ts-plugin@0.24.0
 - @syndicate-lang/tsc@0.24.0
 - @syndicate-lang/ws-relay@0.25.0
2023-12-20 20:12:32 +13:00
Tony Garnock-Jones aeaacbafab @syndicate-lang/browser-stdenv 2023-12-20 20:08:10 +13:00
Tony Garnock-Jones 8b2434a3bf Bump 2023-12-20 20:02:16 +13:00
Tony Garnock-Jones f2f3220229 Include service in loader. Closes #4 2023-12-20 19:42:29 +13:00
Tony Garnock-Jones 9859daee9b Merge latest changes from the syndicate-protocols repository 2023-12-19 21:44:48 +13:00
Tony Garnock-Jones 97876335ba Save a few bytes on the wire. If not now, never I guess 2023-12-19 21:37:41 +13:00
Tony Garnock-Jones 4d0cc4b2f7 Deduplicate subject updates. Fixes #3. 2023-12-18 10:32:37 +13:00
Tony Garnock-Jones 3617582d37 Quasi-cosmetic: update imports (e.g. to allow jest to run) 2023-12-18 10:31:56 +13:00
Tony Garnock-Jones 1c3df03153 Use new fixcopyright ignore feature 2023-12-18 10:30:38 +13:00
Tony Garnock-Jones 56ac38f7e4 Dust off (some of) the core tests 2023-12-18 10:07:46 +13:00
Tony Garnock-Jones 919ee891f6 Ergonomics: admit JS property-name syntax in PDict patterns 2023-12-17 22:12:27 +13:00
Tony Garnock-Jones 34f1617a62 Cosmetic 2023-12-17 08:39:28 +01:00
Tony Garnock-Jones 83c81f894a Upgrade preserves to 0.992.4 2023-12-17 08:27:09 +01:00
Tony Garnock-Jones 062046c2b7 @syndicate-lang/loader 2023-12-11 06:54:01 +13:00
Tony Garnock-Jones d60e923abe stdenv support 2023-12-04 23:10:00 +01:00
Tony Garnock-Jones 61094bc0e1 Merge latest changes from the syndicate-protocols repository 2023-12-04 22:25:53 +01:00
Tony Garnock-Jones d7b330e6dd stdenv.prs 2023-12-04 22:25:40 +01:00
Tony Garnock-Jones be6dbd2782 Quasi-cosmetic 2023-12-03 23:40:36 +01:00
Tony Garnock-Jones 0e26a8cd9f Hoist actions 2023-12-03 23:30:52 +01:00
Tony Garnock-Jones b336faff25 Tidy up 2023-12-03 23:22:51 +01:00
Tony Garnock-Jones a9ea553ca1 Improved DOM node damage repair 2023-12-03 23:09:18 +01:00
Tony Garnock-Jones 208af3ebb6 Terser 2023-12-03 23:06:54 +01:00
Tony Garnock-Jones 2f34cfa588 suppressCycleWarning 2023-12-03 23:05:49 +01:00
Tony Garnock-Jones 4903bc5149 Allow prettier display of dataflow cyclic dependencies 2023-12-03 22:35:47 +01:00
Tony Garnock-Jones 9197d7ef3a Experimental ValueWidget 2023-12-03 12:29:17 +01:00
Tony Garnock-Jones 24a75e935a Allow specification of base for selector 2023-12-02 19:35:47 +01:00
Tony Garnock-Jones ae2c113325 Error check in case of multiple nodes generated 2023-12-02 19:35:36 +01:00
Tony Garnock-Jones cfd2b69943 Publish
- @syndicate-lang/html2@0.23.1
2023-12-01 23:56:54 +01:00
Tony Garnock-Jones 3445f3f014 Preserve focus across node replacements 2023-12-01 23:56:32 +01:00
Tony Garnock-Jones b013dd1979 @syndicate-lang/html2 2023-12-01 23:30:50 +01:00
Tony Garnock-Jones f83dddd4fd Publish
- @syndicate-lang/compiler@0.17.0
 - @syndicate-lang/core@0.22.0
 - @syndicate-lang/fs@0.23.0
 - @syndicate-lang/html@0.23.0
 - @syndicate-lang/service@0.23.0
 - @syndicate-lang/syndicatec@0.23.0
 - @syndicate-lang/timer@0.23.0
 - @syndicate-lang/ts-plugin@0.23.0
 - @syndicate-lang/tsc@0.23.0
 - @syndicate-lang/ws-relay@0.24.0
2023-12-01 21:09:40 +01:00
Tony Garnock-Jones cb0c45a45b Default to global dataspace as target when using browser-compiler 2023-12-01 21:08:17 +01:00
Tony Garnock-Jones ed605718e5 Global Dataspace and ActorSpace available 2023-12-01 20:53:18 +01:00
Tony Garnock-Jones 1979a439f8 Publish
- @syndicate-lang/compiler@0.16.0
 - @syndicate-lang/core@0.21.0
 - @syndicate-lang/fs@0.22.0
 - @syndicate-lang/html@0.22.0
 - @syndicate-lang/service@0.22.0
 - @syndicate-lang/syndicatec@0.22.0
 - @syndicate-lang/timer@0.22.0
 - @syndicate-lang/ts-plugin@0.22.0
 - @syndicate-lang/tsc@0.22.0
 - @syndicate-lang/ws-relay@0.23.0
2023-12-01 15:06:23 +01:00
Tony Garnock-Jones 2671033b07 Allow booting an actor into an existing ActorSpace 2023-12-01 15:03:32 +01:00
Tony Garnock-Jones c6eef34736 ES6 modules in the browser 2023-12-01 15:02:35 +01:00
Tony Garnock-Jones 5ffc647997 Publish
- @syndicate-lang/compiler@0.15.0
 - @syndicate-lang/fs@0.21.1
 - @syndicate-lang/html@0.21.1
 - @syndicate-lang/service@0.21.1
 - @syndicate-lang/syndicatec@0.21.1
 - @syndicate-lang/timer@0.21.1
 - @syndicate-lang/ts-plugin@0.21.1
 - @syndicate-lang/tsc@0.21.1
 - @syndicate-lang/ws-relay@0.22.1
2023-12-01 12:42:37 +01:00
Tony Garnock-Jones 6ded2c2050 syndicate-browser-compiler.js 2023-12-01 12:42:17 +01:00
Tony Garnock-Jones f0026d9688 Publish
- @syndicate-lang/compiler@0.14.0
 - @syndicate-lang/fs@0.21.0
 - @syndicate-lang/html@0.21.0
 - @syndicate-lang/service@0.21.0
 - @syndicate-lang/syndicatec@0.21.0
 - @syndicate-lang/timer@0.21.0
 - @syndicate-lang/ts-plugin@0.21.0
 - @syndicate-lang/tsc@0.21.0
 - @syndicate-lang/ws-relay@0.22.0
2023-12-01 12:24:09 +01:00
Tony Garnock-Jones 939004264a Add ModuleType `none` 2023-12-01 12:23:35 +01:00
Tony Garnock-Jones 0f9c200583 Publish
- @syndicate-lang/core@0.20.1
 - @syndicate-lang/fs@0.20.1
 - @syndicate-lang/html@0.20.1
 - @syndicate-lang/service@0.20.1
 - @syndicate-lang/syndicatec@0.20.1
 - @syndicate-lang/timer@0.20.1
 - @syndicate-lang/ts-plugin@0.20.1
 - @syndicate-lang/tsc@0.20.1
 - @syndicate-lang/ws-relay@0.21.1
2023-12-01 11:45:17 +01:00
Tony Garnock-Jones a7f21f140e Adjust rollup config for peer dep on preserves 2023-12-01 11:44:01 +01:00
Tony Garnock-Jones 2068531000 Publish
- @syndicate-lang/core@0.20.0
 - @syndicate-lang/create@0.18.0
 - @syndicate-lang/fs@0.20.0
 - @syndicate-lang/html@0.20.0
 - @syndicate-lang/service@0.20.0
 - @syndicate-lang/syndicatec@0.20.0
 - @syndicate-lang/timer@0.20.0
 - @syndicate-lang/ts-plugin@0.20.0
 - @syndicate-lang/tsc@0.20.0
 - @syndicate-lang/ws-relay@0.21.0
2023-12-01 09:23:17 +01:00
Tony Garnock-Jones 2c065b6a50 Switch to peer dependency on @preserves/core 2023-12-01 09:20:20 +01:00
Tony Garnock-Jones 36202092ca Bump deps 2023-11-26 00:05:58 +01:00
Tony Garnock-Jones f58dce5bdc Fix comment syntax 2023-11-24 13:08:24 +01:00
Tony Garnock-Jones 6ab19dcc6e Bump deps 2023-11-24 12:58:21 +01:00
Tony Garnock-Jones 2c69e270db Publish
- @syndicate-lang/core@0.19.1
 - @syndicate-lang/create@0.17.1
 - @syndicate-lang/fs@0.19.1
 - @syndicate-lang/html@0.19.1
 - @syndicate-lang/service@0.19.1
 - @syndicate-lang/syndicatec@0.19.1
 - @syndicate-lang/timer@0.19.1
 - @syndicate-lang/ts-plugin@0.19.1
 - @syndicate-lang/tsc@0.19.1
 - @syndicate-lang/ws-relay@0.20.1
2023-11-19 21:35:41 +01:00
Tony Garnock-Jones bd5af85c78 Cosmetic: remove unneeded import 2023-11-19 21:35:02 +01:00
Tony Garnock-Jones 00727cb65a Upgrade preserves dep 2023-11-19 21:27:17 +01:00
Tony Garnock-Jones 1955298ba0 Improve README slightly 2023-11-17 14:12:14 +01:00
Tony Garnock-Jones 8f30b198a7 Publish
- @syndicate-lang/core@0.19.0
 - @syndicate-lang/create@0.17.0
 - @syndicate-lang/fs@0.19.0
 - @syndicate-lang/html@0.19.0
 - @syndicate-lang/service@0.19.0
 - @syndicate-lang/syndicatec@0.19.0
 - @syndicate-lang/timer@0.19.0
 - @syndicate-lang/ts-plugin@0.19.0
 - @syndicate-lang/tsc@0.19.0
 - @syndicate-lang/ws-relay@0.20.0
2023-10-31 22:06:59 +01:00
Tony Garnock-Jones c488d6d75a Update preserves dependency to 0.991 2023-10-31 22:06:08 +01:00
Tony Garnock-Jones e026f42452 Merge latest changes from the syndicate-protocols repository 2023-10-31 21:57:25 +01:00
Tony Garnock-Jones fe9ceaf65c Update comment syntax for Preserves 0.991 2023-10-31 21:56:44 +01:00
Tony Garnock-Jones 0dfa34f209 Update examples 2023-10-19 02:56:27 +02:00
Tony Garnock-Jones 8bc7285747 Publish
- @syndicate-lang/html@0.18.2
 - @syndicate-lang/syndicatec@0.18.2
2023-10-19 02:43:19 +02:00
Tony Garnock-Jones 3d695954b7 Remove unneeded dependency 2023-10-19 02:43:06 +02:00
Tony Garnock-Jones 4c2f7e01c6 Repair syndicatec compilation 2023-10-19 02:40:35 +02:00
Tony Garnock-Jones 98fb03bc79 Publish
- @syndicate-lang/core@0.18.1
 - @syndicate-lang/create@0.16.1
 - @syndicate-lang/fs@0.18.1
 - @syndicate-lang/html@0.18.1
 - @syndicate-lang/service@0.18.1
 - @syndicate-lang/syndicatec@0.18.1
 - @syndicate-lang/timer@0.18.1
 - @syndicate-lang/ts-plugin@0.18.1
 - @syndicate-lang/tsc@0.18.1
 - @syndicate-lang/ws-relay@0.19.1
2023-10-19 02:33:52 +02:00
Tony Garnock-Jones 6caf35f20e Update to @preserves/schema and @preserves/schema-cli 2023-10-19 02:33:00 +02:00
Tony Garnock-Jones f6a35a6d4d Update examples 2023-10-18 14:55:57 +02:00
Tony Garnock-Jones a2f36d94d0 Publish
- @syndicate-lang/core@0.18.0
 - @syndicate-lang/create@0.16.0
 - @syndicate-lang/fs@0.18.0
 - @syndicate-lang/html@0.18.0
 - @syndicate-lang/service@0.18.0
 - @syndicate-lang/syndicatec@0.18.0
 - @syndicate-lang/timer@0.18.0
 - @syndicate-lang/ts-plugin@0.18.0
 - @syndicate-lang/tsc@0.18.0
 - @syndicate-lang/ws-relay@0.19.0
2023-10-18 14:16:35 +02:00
Tony Garnock-Jones d076761f87 How did these sneak in? 2023-10-18 14:15:41 +02:00
Tony Garnock-Jones 836d06aca2 Update preserves 2023-10-18 14:14:40 +02:00
Tony Garnock-Jones f698b8cdb3 Merge latest changes from the syndicate-protocols repository 2023-10-18 14:04:31 +02:00
Tony Garnock-Jones 72566ac223 Update for Preserves 0.990 2023-10-18 14:02:28 +02:00
Tony Garnock-Jones cd2d710692 Repair resolving of longer chains when reconnects happen 2023-10-11 21:03:43 +02:00
Tony Garnock-Jones c8fc52a685 Terser logging 2023-10-11 21:03:21 +02:00
Tony Garnock-Jones 5338890e76 Publish
- @syndicate-lang/core@0.17.1
 - @syndicate-lang/create@0.15.1
 - @syndicate-lang/fs@0.17.1
 - @syndicate-lang/html@0.17.1
 - @syndicate-lang/service@0.17.1
 - @syndicate-lang/syndicatec@0.17.1
 - @syndicate-lang/timer@0.17.1
 - @syndicate-lang/ts-plugin@0.17.2
 - @syndicate-lang/tsc@0.17.2
 - @syndicate-lang/ws-relay@0.18.1
2023-10-02 21:07:55 +02:00
Tony Garnock-Jones 93bc596f37 Remove unused import 2023-10-02 21:05:36 +02:00
Tony Garnock-Jones bfd1f13c19 Bump preserves dep 2023-10-02 21:05:27 +02:00
Tony Garnock-Jones 54e9633791 Publish
- @syndicate-lang/ws-relay@0.18.0
2023-09-29 19:38:52 +02:00
Tony Garnock-Jones 06bf888bd8 Allow supply of WebSocket constructor 2023-09-29 19:31:43 +02:00
Tony Garnock-Jones 2dc7fc3e9c Publish
- @syndicate-lang/core@0.17.0
 - @syndicate-lang/fs@0.17.0
 - @syndicate-lang/html@0.17.0
 - @syndicate-lang/service@0.17.0
 - @syndicate-lang/syndicatec@0.17.0
 - @syndicate-lang/timer@0.17.0
 - @syndicate-lang/ts-plugin@0.17.1
 - @syndicate-lang/tsc@0.17.1
 - @syndicate-lang/ws-relay@0.17.0
2023-06-16 21:32:46 +02:00
Tony Garnock-Jones 28dee5f098 Store the whole assertion when crossSpace 2023-06-16 21:31:51 +02:00
Tony Garnock-Jones da29412e91 Update example-simple-chat 2023-06-16 13:10:58 +02:00
Tony Garnock-Jones 6afa4ba87f Publish
- @syndicate-lang/core@0.16.0
 - @syndicate-lang/create@0.15.0
 - @syndicate-lang/fs@0.16.0
 - @syndicate-lang/html@0.16.0
 - @syndicate-lang/service@0.16.0
 - @syndicate-lang/syndicatec@0.16.0
 - @syndicate-lang/timer@0.16.0
 - @syndicate-lang/ts-plugin@0.17.0
 - @syndicate-lang/tsc@0.17.0
 - @syndicate-lang/ws-relay@0.16.0
2023-06-16 13:05:41 +02:00
Tony Garnock-Jones b4a54d6f94 Track inbound/outbound assertions across spaces 2023-06-16 13:02:34 +02:00
Tony Garnock-Jones 0533b3fd0f Expose queuedTasks 2023-06-01 23:27:44 +02:00
Tony Garnock-Jones 1de1e9d382 DataspaceObserver, for reflection 2023-05-28 12:25:44 +02:00
Tony Garnock-Jones 7b8526dfcf Facet.idChainValues 2023-05-28 12:24:28 +02:00
Tony Garnock-Jones 2a2b7da4bc Switch to proper schema 2023-05-28 12:03:45 +02:00
Tony Garnock-Jones 021fdf06bb Remove unneeded spawningFacet field; mark StopOnRetract entities 2023-05-28 11:38:05 +02:00
Tony Garnock-Jones 39fb9cb92e Task descriptions 2023-05-28 11:18:29 +02:00
Tony Garnock-Jones d55e322a0e Expose Dataspace value in Entity's data field 2023-05-25 23:46:29 +02:00
Tony Garnock-Jones 818f35c471 Introduce ActorSpace 2023-05-19 14:58:42 +02:00
Tony Garnock-Jones 70f1289057 Publish
- @syndicate-lang/core@0.15.1
 - @syndicate-lang/create@0.14.2
 - @syndicate-lang/fs@0.15.2
 - @syndicate-lang/html@0.15.2
 - @syndicate-lang/service@0.15.2
 - @syndicate-lang/syndicatec@0.15.1
 - @syndicate-lang/timer@0.15.2
 - @syndicate-lang/ts-plugin@0.16.2
 - @syndicate-lang/tsc@0.16.1
 - @syndicate-lang/ws-relay@0.15.2
2023-05-12 11:33:15 +02:00
Tony Garnock-Jones 7b2ea2aae9 Bump preserves version, other deps 2023-05-12 11:32:17 +02:00
Tony Garnock-Jones 3a78f6c46c Publish
- @syndicate-lang/fs@0.15.1
 - @syndicate-lang/html@0.15.1
 - @syndicate-lang/service@0.15.1
 - @syndicate-lang/timer@0.15.1
 - @syndicate-lang/ts-plugin@0.16.1
 - @syndicate-lang/ws-relay@0.15.1
2023-05-05 13:56:27 +02:00
Tony Garnock-Jones aafb654687 Try harder to be incremental in editContent 2023-05-03 18:20:26 +03:00
Tony Garnock-Jones 1f72baf3ad Log expansion delay 2023-05-03 18:19:48 +03:00
Tony Garnock-Jones 9cf00720f8 Publish
- @syndicate-lang/core@0.15.0
 - @syndicate-lang/fs@0.15.0
 - @syndicate-lang/html@0.15.0
 - @syndicate-lang/service@0.15.0
 - @syndicate-lang/syndicatec@0.15.0
 - @syndicate-lang/timer@0.15.0
 - @syndicate-lang/ts-plugin@0.16.0
 - @syndicate-lang/tsc@0.16.0
 - @syndicate-lang/ws-relay@0.15.0
2023-05-02 16:26:30 +03:00
Tony Garnock-Jones b2084c4d1d Factor out different kinds of IndexObserver 2023-05-02 16:19:38 +03:00
Tony Garnock-Jones 998c4442c9 Publish
- @syndicate-lang/fs@0.14.7
 - @syndicate-lang/html@0.14.7
 - @syndicate-lang/service@0.14.7
 - @syndicate-lang/timer@0.14.7
 - @syndicate-lang/ts-plugin@0.15.3
 - @syndicate-lang/ws-relay@0.14.7
2023-05-02 13:10:59 +03:00
Tony Garnock-Jones a0f87bf687 Monkeypatch ScriptInfo instead of subclassing-and-replacing.
This means we can ditch the whole approach of trying to remove
stale ScriptInfo instances at plugin startup, instead just
endowing existing ones with new behaviour.

This repairs an error where renaming an identifer would perform
spurious edits.
2023-05-02 12:57:22 +03:00
Tony Garnock-Jones 2eb7045b5c Publish
- @syndicate-lang/fs@0.14.6
 - @syndicate-lang/html@0.14.6
 - @syndicate-lang/service@0.14.6
 - @syndicate-lang/timer@0.14.6
 - @syndicate-lang/ts-plugin@0.15.2
 - @syndicate-lang/ws-relay@0.14.6
2023-04-29 09:42:12 +02:00
Tony Garnock-Jones 1008d6acca Update ts-plugin README 2023-04-28 10:38:35 +02:00
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
Tony Garnock-Jones 3384acbd62 Cosmetic 2023-04-28 10:23:57 +02:00
Tony Garnock-Jones abaf23920b Upgrade typescript-language-server to 3.3.2 2023-04-28 10:20:10 +02:00
Tony Garnock-Jones 40844d2806 Publish
- @syndicate-lang/compiler@0.13.2
 - @syndicate-lang/core@0.14.2
 - @syndicate-lang/fs@0.14.5
 - @syndicate-lang/html@0.14.5
 - @syndicate-lang/service@0.14.5
 - @syndicate-lang/syndicatec@0.14.2
 - @syndicate-lang/timer@0.14.5
 - @syndicate-lang/ts-plugin@0.15.1
 - @syndicate-lang/tsc@0.15.2
 - @syndicate-lang/ws-relay@0.14.5
2023-03-06 23:27:14 +01:00
Tony Garnock-Jones cbcb692db8 Allow fully-discard constructor parameter dicts 2023-03-06 23:26:34 +01:00
Tony Garnock-Jones 545282be32 Repair nested-binder-patterns 2023-03-06 23:26:15 +01:00
Tony Garnock-Jones 44d7d16a82 Publish
- @syndicate-lang/fs@0.14.4
 - @syndicate-lang/html@0.14.4
 - @syndicate-lang/service@0.14.4
 - @syndicate-lang/timer@0.14.4
 - @syndicate-lang/ts-plugin@0.15.0
 - @syndicate-lang/ws-relay@0.14.4
2023-02-14 12:08:24 +01:00
Tony Garnock-Jones 0962c5e41a Implement getDefinitionAndBoundSpan 2023-02-14 12:06:31 +01:00
Tony Garnock-Jones 8a51e87f38 Avoid double-translation of positions (?) 2023-02-14 12:06:19 +01:00
Tony Garnock-Jones a761e7a5b7 Publish
- @syndicate-lang/fs@0.14.3
 - @syndicate-lang/html@0.14.3
 - @syndicate-lang/service@0.14.3
 - @syndicate-lang/timer@0.14.3
 - @syndicate-lang/tsc@0.15.1
 - @syndicate-lang/ws-relay@0.14.3
2023-02-14 11:44:04 +01:00
Tony Garnock-Jones fe78147cb8 Another repair to diagnostic fixup 2023-02-14 11:43:05 +01:00
Tony Garnock-Jones fec72f1269 Publish
- @syndicate-lang/fs@0.14.2
 - @syndicate-lang/html@0.14.2
 - @syndicate-lang/service@0.14.2
 - @syndicate-lang/timer@0.14.2
 - @syndicate-lang/tsc@0.15.0
 - @syndicate-lang/ws-relay@0.14.2
2023-02-14 11:32:52 +01:00
Tony Garnock-Jones 14702c66b9 Dramatic simplifications from using TypeScript-provided machinery which appeared sometime between when this code was originally written and now 2023-02-14 11:32:21 +01:00
Tony Garnock-Jones 958cbae171 Update example lockfiles 2023-02-11 22:10:38 +01:00
Tony Garnock-Jones ef665c0998 Publish
- @syndicate-lang/core@0.14.1
 - @syndicate-lang/create@0.14.1
 - @syndicate-lang/fs@0.14.1
 - @syndicate-lang/html@0.14.1
 - @syndicate-lang/service@0.14.1
 - @syndicate-lang/syndicatec@0.14.1
 - @syndicate-lang/timer@0.14.1
 - @syndicate-lang/ts-plugin@0.14.1
 - @syndicate-lang/tsc@0.14.1
 - @syndicate-lang/ws-relay@0.14.1
2023-02-11 22:06:28 +01:00
Tony Garnock-Jones a51851283f Repair route with no steps 2023-02-11 22:01:19 +01:00
Tony Garnock-Jones 7a09be7141 Merge latest changes from the syndicate-protocols repository 2023-02-11 21:54:43 +01:00
Tony Garnock-Jones d8a139b23a Switch back to transport sequence representation 2023-02-11 21:49:49 +01:00
Tony Garnock-Jones 9b109023d3 Update lockfile 2023-02-11 20:30:34 +01:00
Tony Garnock-Jones d6c4db6a09 Bump again 2023-02-11 18:12:42 +01:00
Tony Garnock-Jones 04ebe2b8e6 Bump required deps 2023-02-11 18:00:41 +01:00
Tony Garnock-Jones 18a4690609 Merge latest changes from the syndicate-protocols repository 2023-02-11 17:48:32 +01:00
Tony Garnock-Jones 46fd2dec3b Set of any for transports in gatekeeper.Route 2023-02-11 17:43:42 +01:00
Tony Garnock-Jones 38dad13f33 Update example lockfiles 2023-02-10 16:55:20 +01:00
Tony Garnock-Jones ea212ade8c Publish
- @syndicate-lang/core@0.14.0
 - @syndicate-lang/create@0.14.0
 - @syndicate-lang/fs@0.14.0
 - @syndicate-lang/html@0.14.0
 - @syndicate-lang/service@0.14.0
 - @syndicate-lang/syndicatec@0.14.0
 - @syndicate-lang/timer@0.14.0
 - @syndicate-lang/ts-plugin@0.14.0
 - @syndicate-lang/tsc@0.14.0
 - @syndicate-lang/ws-relay@0.14.0
2023-02-10 16:49:37 +01:00
Tony Garnock-Jones 1f9ee7a745 Merge latest changes from the syndicate-protocols repository 2023-02-09 23:08:23 +01:00
Tony Garnock-Jones 1ae2583414 Remove accidental self-qualification 2023-02-09 23:07:43 +01:00
Tony Garnock-Jones cd5452b624 Implement new gatekeeper protocol for syndicate-js 2023-02-09 22:41:43 +01:00
Tony Garnock-Jones f4c0c826df Merge latest changes from the syndicate-protocols repository 2023-02-09 00:17:37 +01:00
Tony Garnock-Jones f3c9662607 Another small error 2023-02-08 23:43:51 +01:00
Tony Garnock-Jones 82624d3007 Another small error 2023-02-08 23:39:42 +01:00
Tony Garnock-Jones 8b690b9103 Repair minor error 2023-02-08 23:36:21 +01:00
Tony Garnock-Jones 5a52f243e5 Adjust steps in noise and sturdy 2023-02-08 23:11:05 +01:00
Tony Garnock-Jones 6224baa2b6 Avoid variable-arity steps 2023-02-08 23:04:42 +01:00
Tony Garnock-Jones 5111a0c141 Merge latest changes from the syndicate-protocols repository 2023-02-08 22:28:19 +01:00
Tony Garnock-Jones 8619342e5e Refinements 2023-02-08 22:11:45 +01:00
Tony Garnock-Jones 32428e9e67 Merge latest changes from the syndicate-protocols repository 2023-02-08 20:36:50 +01:00
Tony Garnock-Jones 5bcb268ff8 Adjust ResolvePath/TransportConnection/PathStep 2023-02-08 20:36:14 +01:00
Tony Garnock-Jones d32805e1fb Merge latest changes from the syndicate-protocols repository 2023-02-08 19:39:58 +01:00
Tony Garnock-Jones ce56a67377 PROTOCOLS_BRANCH 2023-02-08 19:39:14 +01:00
Tony Garnock-Jones 9cd2e6776c Refactor gatekeeper protocols. 2023-02-08 17:46:47 +01:00
Tony Garnock-Jones a086c1d721 Repair typo 2023-02-07 13:18:18 +01:00
Tony Garnock-Jones bc41182533 Another small repair 2023-02-07 13:11:14 +01:00
Tony Garnock-Jones 2ad99b56b8 Be more precise about HMAC-BLAKE2s-256 and the key length 2023-02-07 12:44:47 +01:00
Tony Garnock-Jones ce7b18a2de Bring examples up-to-date 2023-02-06 23:29:35 +01:00
Tony Garnock-Jones 31d2eba8b6 Publish
- @syndicate-lang/compiler@0.13.1
 - @syndicate-lang/core@0.13.1
 - @syndicate-lang/fs@0.13.2
 - @syndicate-lang/html@0.13.2
 - @syndicate-lang/service@0.13.2
 - @syndicate-lang/syndicatec@0.13.2
 - @syndicate-lang/timer@0.13.2
 - @syndicate-lang/ts-plugin@0.13.2
 - @syndicate-lang/tsc@0.13.2
 - @syndicate-lang/ws-relay@0.13.2
2023-02-06 23:14:09 +01:00
Tony Garnock-Jones b361f3a40e Require fixed salty-crypto package 2023-02-06 23:13:14 +01:00
Tony Garnock-Jones ce56ffb634 Bump compiler package 2023-02-06 18:12:18 +01:00
Tony Garnock-Jones 32a5de939f Publish
- @syndicate-lang/fs@0.13.1
 - @syndicate-lang/html@0.13.1
 - @syndicate-lang/service@0.13.1
 - @syndicate-lang/syndicatec@0.13.1
 - @syndicate-lang/timer@0.13.1
 - @syndicate-lang/ts-plugin@0.13.1
 - @syndicate-lang/tsc@0.13.1
 - @syndicate-lang/ws-relay@0.13.1
2023-02-06 18:09:47 +01:00
Tony Garnock-Jones 8bc7dcf1d6 Correct deps 2023-02-06 18:09:09 +01:00
Tony Garnock-Jones 7478a63a55 Publish
- @syndicate-lang/core@0.13.0
 - @syndicate-lang/create@0.13.0
 - @syndicate-lang/fs@0.13.0
 - @syndicate-lang/html@0.13.0
 - @syndicate-lang/service@0.13.0
 - @syndicate-lang/syndicatec@0.13.0
 - @syndicate-lang/timer@0.13.0
 - @syndicate-lang/ts-plugin@0.13.0
 - @syndicate-lang/tsc@0.13.0
 - @syndicate-lang/ws-relay@0.13.0
2023-02-06 17:40:25 +01:00
Tony Garnock-Jones 0c002036a4 Switch to HMAC-BLAKE2s 2023-02-06 17:34:15 +01:00
Tony Garnock-Jones 53b84db98e Merge latest changes from the syndicate-protocols repository 2023-02-06 17:09:35 +01:00
Tony Garnock-Jones f6b88ee3fb Switch to HMAC-BLAKE2s 2023-02-06 16:19:03 +01:00
Tony Garnock-Jones 32d4da6f86 Seconds-based timer protocols 2023-02-06 16:08:12 +01:00
Tony Garnock-Jones 7fdb251c4a Merge latest changes from the syndicate-protocols repository 2023-02-06 15:42:46 +01:00
Tony Garnock-Jones ee8a23aa2e Switch from milliseconds to seconds. Fixes #1 2023-02-06 15:36:17 +01:00
Tony Garnock-Jones 5030130aef Update attenuations 2023-02-06 15:16:57 +01:00
Tony Garnock-Jones 93fcebc4ce Merge latest changes from the syndicate-protocols repository 2023-02-06 14:48:40 +01:00
Tony Garnock-Jones 5cd0335a79 Argh, previous commit won't work 2023-02-06 11:06:02 +01:00
Tony Garnock-Jones b52da09081 More usable (?) rewrite language 2023-02-06 10:58:16 +01:00
Tony Garnock-Jones 9ca618268e Simplify attenuations 2023-02-06 10:45:41 +01:00
Tony Garnock-Jones adc44a0d8c Merge latest changes from the syndicate-protocols repository 2023-02-04 16:32:22 +01:00
Tony Garnock-Jones 9f1f76d0ca Remove racketEvent.prs 2023-02-04 16:30:27 +01:00
Tony Garnock-Jones f4078aabaa Update binary bundle 2023-02-04 13:46:49 +01:00
Tony Garnock-Jones 557a36756f First step of cleanup of protocols 2023-02-04 13:46:34 +01:00
Tony Garnock-Jones 6c8dcce135 Publish
- @syndicate-lang/ws-relay@0.12.3
2023-02-04 12:38:55 +01:00
Tony Garnock-Jones c025456bdd Clean up logging 2023-02-04 12:38:37 +01:00
Tony Garnock-Jones cb64bc3213 Publish
- @syndicate-lang/create@0.12.1
2023-02-04 12:32:39 +01:00
Tony Garnock-Jones 4be9d1a8bc Update template to new ws-relay API 2023-02-04 12:32:00 +01:00
Tony Garnock-Jones 2218702cf2 Publish
- @syndicate-lang/create@0.12.0
 - @syndicate-lang/fs@0.11.8
 - @syndicate-lang/html@0.11.14
 - @syndicate-lang/service@0.11.7
 - @syndicate-lang/timer@0.11.12
 - @syndicate-lang/ts-plugin@0.11.12
 - @syndicate-lang/tsc@0.11.12
 - @syndicate-lang/ws-relay@0.12.2
2023-02-04 12:20:12 +01:00
Tony Garnock-Jones 9c0ff4f756 Bump deps, upgrade typescript 2023-02-04 12:17:20 +01:00
Tony Garnock-Jones 1ce2a0a1bd Note re cli.mjs 2023-02-04 11:11:15 +01:00
Tony Garnock-Jones ca2d3a32b8 Make use of new noise protocol support 2023-01-31 16:26:43 +01:00
Tony Garnock-Jones e98782fbe0 Publish
- @syndicate-lang/ws-relay@0.12.1
2023-01-31 16:23:40 +01:00
Tony Garnock-Jones 54c2ddfd99 Try multiple transports in order 2023-01-31 16:22:09 +01:00
Tony Garnock-Jones 60ecab200c Publish
- @syndicate-lang/compiler@0.11.6
 - @syndicate-lang/core@0.12.0
 - @syndicate-lang/create@0.11.5
 - @syndicate-lang/fs@0.11.7
 - @syndicate-lang/html@0.11.13
 - @syndicate-lang/service@0.11.6
 - @syndicate-lang/syndicatec@0.11.11
 - @syndicate-lang/timer@0.11.11
 - @syndicate-lang/ts-plugin@0.11.11
 - @syndicate-lang/tsc@0.11.11
 - @syndicate-lang/ws-relay@0.12.0
2023-01-31 15:21:26 +01:00
Tony Garnock-Jones 2608e259ba Noise protocol initiator 2023-01-31 15:19:29 +01:00
Tony Garnock-Jones c60bd13cdc Expose noise schema 2023-01-30 22:36:40 +01:00
Tony Garnock-Jones 31e34039dc Cope with teardown of supervisor 2023-01-30 22:35:54 +01:00
Tony Garnock-Jones 0922c6e9b1 Merge latest changes from the syndicate-protocols repository 2023-01-27 12:52:37 +01:00
Tony Garnock-Jones 07a5f688be Repair binary bundle 2023-01-27 12:52:07 +01:00
Tony Garnock-Jones 962d6f0038 Merge latest changes from the syndicate-protocols repository 2023-01-27 12:47:05 +01:00
Tony Garnock-Jones fff84d4c2a Update noise mapping 2023-01-27 12:45:02 +01:00
Tony Garnock-Jones 5983cd01f1 Another note re noise 2023-01-23 13:08:12 +01:00
Tony Garnock-Jones e8881f5980 Now I have actually implemented Noise, revise the schema 2023-01-19 12:18:58 +01:00
Tony Garnock-Jones 4adcfdd0ab Update copyrights 2023-01-17 11:44:05 +01:00
Tony Garnock-Jones 0b9cc12c5b Ignore exit code from fixcopyright 2023-01-17 11:42:55 +01:00
Tony Garnock-Jones bd58e87de1 Switch to Racket fixcopyright package 2023-01-17 11:40:29 +01:00
Tony Garnock-Jones 40b4681a6e Ugh, xsalsa20poly1305 as an AEAD isn't a thing 2023-01-16 16:21:12 +01:00
Tony Garnock-Jones 0f5e033174 noise 2023-01-16 15:52:46 +01:00
Tony Garnock-Jones aae53b5525 Update precompiled form 2023-01-16 15:51:57 +01:00
Tony Garnock-Jones 00ec198908 Publish
- @syndicate-lang/core@0.11.9
 - @syndicate-lang/fs@0.11.6
 - @syndicate-lang/html@0.11.12
 - @syndicate-lang/service@0.11.5
 - @syndicate-lang/syndicatec@0.11.10
 - @syndicate-lang/timer@0.11.10
 - @syndicate-lang/ts-plugin@0.11.10
 - @syndicate-lang/tsc@0.11.10
 - @syndicate-lang/ws-relay@0.11.10
2023-01-11 11:50:52 +01:00
Tony Garnock-Jones fe427a67be Repair relay pins, to pin target refs too 2023-01-11 11:49:35 +01:00
Tony Garnock-Jones 4c03646567 HTTP 2022-12-13 18:08:34 +13:00
Tony Garnock-Jones eaa7268c9b Publish
- @syndicate-lang/compiler@0.11.5
 - @syndicate-lang/core@0.11.8
 - @syndicate-lang/fs@0.11.5
 - @syndicate-lang/html@0.11.11
 - @syndicate-lang/service@0.11.4
 - @syndicate-lang/syndicatec@0.11.9
 - @syndicate-lang/timer@0.11.9
 - @syndicate-lang/ts-plugin@0.11.9
 - @syndicate-lang/tsc@0.11.9
 - @syndicate-lang/ws-relay@0.11.9
2022-10-18 21:39:51 +02:00
Tony Garnock-Jones bdb1c2a238 Remove obsolete subpackage makefile 2022-10-18 21:37:13 +02:00
Tony Garnock-Jones 576023fb8a Publish
- @syndicate-lang/create@0.11.4
 - @syndicate-lang/html@0.11.10
2022-10-18 21:28:50 +02:00
Tony Garnock-Jones 9cb312ddd3 Fix up types 2022-10-18 21:27:27 +02:00
Tony Garnock-Jones ef88fa5aec Avoid crypto.randomUUID because it is only available in "secure" contexts 2022-10-18 21:01:47 +02:00
Tony Garnock-Jones d57bcd06c4 preserves.dev 2022-05-24 13:53:18 +02:00
Tony Garnock-Jones 886f8bff6d Publish
- @syndicate-lang/html@0.11.9
2022-05-03 16:23:29 +02:00
Tony Garnock-Jones 61e8f38815 Add UIFragmentRecord type 2022-05-03 16:23:12 +02:00
Tony Garnock-Jones 6d85d220f7 Publish
- @syndicate-lang/fs@0.11.4
2022-05-03 10:38:03 +02:00
Tony Garnock-Jones d08cd095fc Expose awaitWriteFinish configuration 2022-05-03 10:37:51 +02:00
Tony Garnock-Jones ef4cbe0a06 Publish
- @syndicate-lang/core@0.11.7
 - @syndicate-lang/fs@0.11.3
 - @syndicate-lang/html@0.11.8
 - @syndicate-lang/service@0.11.3
 - @syndicate-lang/syndicatec@0.11.8
 - @syndicate-lang/timer@0.11.8
 - @syndicate-lang/ts-plugin@0.11.8
 - @syndicate-lang/tsc@0.11.8
 - @syndicate-lang/ws-relay@0.11.8
2022-04-30 14:57:19 +03:00
Tony Garnock-Jones 5b835dc13a Repair quasipattern parameter passing for union types 2022-04-30 14:54:56 +03:00
Tony Garnock-Jones 7668dbb401 Support selection of a particular variant in quasipatterns 2022-04-30 14:24:07 +03:00
Tony Garnock-Jones 9d54abe6f5 Publish
- @syndicate-lang/fs@0.11.2
2022-04-28 23:33:15 +03:00
Tony Garnock-Jones b41afe94ae Expose syndicate-fs script 2022-04-28 23:33:00 +03:00
Tony Garnock-Jones 0e97da1377 Publish
- @syndicate-lang/core@0.11.6
 - @syndicate-lang/fs@0.11.1
 - @syndicate-lang/html@0.11.7
 - @syndicate-lang/service@0.11.2
 - @syndicate-lang/syndicatec@0.11.7
 - @syndicate-lang/timer@0.11.7
 - @syndicate-lang/ts-plugin@0.11.7
 - @syndicate-lang/tsc@0.11.7
 - @syndicate-lang/ws-relay@0.11.7
2022-04-28 23:17:57 +03:00
Tony Garnock-Jones 148868da83 Split out serve function in @syndicate-lang/fs 2022-04-28 23:14:59 +03:00
Tony Garnock-Jones 8052ee00b5 @syndicate-lang/fs 2022-04-28 23:06:08 +03:00
Tony Garnock-Jones c7fb679987 Specify main module for @syndicate-lang/service 2022-04-28 23:03:44 +03:00
Tony Garnock-Jones 4a49e6a314 Generalize fields to all is()ables 2022-04-28 23:03:30 +03:00
Tony Garnock-Jones dae63d6961 Publish
- @syndicate-lang/service@0.11.1
2022-04-27 22:20:15 +03:00
Tony Garnock-Jones ffb5402148 @syndicate-lang/service 2022-04-27 22:19:10 +03:00
Tony Garnock-Jones 6a0ecb0caa Publish
- @syndicate-lang/create@0.11.3
2022-04-22 14:46:46 +02:00
Tony Garnock-Jones 4d0febe833 Add typescript-language-server 2022-04-22 14:46:35 +02:00
Tony Garnock-Jones f4b5eaed39 Publish
- @syndicate-lang/create@0.11.2
2022-04-22 14:16:31 +02:00
Tony Garnock-Jones c25f42b30c Update README 2022-04-22 14:15:09 +02:00
Tony Garnock-Jones 6cb509ff2e Publish
- @syndicate-lang/create@0.11.1
2022-04-22 14:05:23 +02:00
Tony Garnock-Jones de0cfbcb85 Minor fixes to template 2022-04-22 14:05:10 +02:00
Tony Garnock-Jones 38f3d05fe0 Publish
- @syndicate-lang/compiler@0.11.4
 - @syndicate-lang/core@0.11.5
 - @syndicate-lang/create@0.11.0
 - @syndicate-lang/html@0.11.6
 - @syndicate-lang/syndicatec@0.11.6
 - @syndicate-lang/timer@0.11.6
 - @syndicate-lang/ts-plugin@0.11.6
 - @syndicate-lang/tsc@0.11.6
 - @syndicate-lang/ws-relay@0.11.6
2022-04-22 13:56:36 +02:00
Tony Garnock-Jones 9c4e96d585 @syndicate-lang/create package 2022-04-22 13:54:49 +02:00
Tony Garnock-Jones c66168206b Accept literal values able to __as_preserve__ themselves 2022-04-22 13:49:15 +02:00
Tony Garnock-Jones 074568bb91 Update package.json repository fields 2022-04-22 11:49:27 +02:00
Tony Garnock-Jones 290419b805 Merge latest changes from the syndicate-protocols repository 2022-02-04 20:50:51 +01:00
Tony Garnock-Jones ca92d99c52 Remove notion of "system-layer-service" from core protocols 2022-02-04 14:26:50 +01:00
Tony Garnock-Jones 19c96bdef2 Allow userDefined states 2022-02-03 22:55:06 +01:00
Tony Garnock-Jones b0db047c16 Bump preserves/syndicate deps in examples 2022-01-26 17:13:19 +01:00
Tony Garnock-Jones d6b89e466d Publish
- @syndicate-lang/compiler@0.11.3
 - @syndicate-lang/core@0.11.4
 - @syndicate-lang/html@0.11.5
 - @syndicate-lang/syndicatec@0.11.5
 - @syndicate-lang/timer@0.11.5
 - @syndicate-lang/ts-plugin@0.11.5
 - @syndicate-lang/tsc@0.11.5
 - @syndicate-lang/ws-relay@0.11.5
2022-01-26 17:08:32 +01:00
Tony Garnock-Jones 2953a9caf5 Bump required versions, adding patchlevels because of the recent stringify fixes 2022-01-26 17:05:58 +01:00
Tony Garnock-Jones 8d16071f90 Add clean/veryclean targets 2022-01-26 17:05:40 +01:00
Tony Garnock-Jones 93171b9717 Bump 2022-01-26 16:36:36 +01:00
Tony Garnock-Jones 6be4f9742b Publish
- @syndicate-lang/core@0.11.3
 - @syndicate-lang/html@0.11.4
 - @syndicate-lang/syndicatec@0.11.4
 - @syndicate-lang/timer@0.11.4
 - @syndicate-lang/ts-plugin@0.11.4
 - @syndicate-lang/tsc@0.11.4
 - @syndicate-lang/ws-relay@0.11.4
2022-01-26 16:26:44 +01:00
Tony Garnock-Jones 974d74023c Fixup wrt new preserves interfaces 2022-01-26 16:26:35 +01:00
Tony Garnock-Jones 49d88da7cd Bump 2022-01-26 16:09:00 +01:00
Tony Garnock-Jones cfed352f40 Publish
- @syndicate-lang/compiler@0.11.2
 - @syndicate-lang/core@0.11.2
 - @syndicate-lang/html@0.11.3
 - @syndicate-lang/syndicatec@0.11.3
 - @syndicate-lang/timer@0.11.3
 - @syndicate-lang/ts-plugin@0.11.3
 - @syndicate-lang/tsc@0.11.3
 - @syndicate-lang/ws-relay@0.11.3
2022-01-26 14:44:59 +01:00
Tony Garnock-Jones cdd1c2393d Bump preserves dep 2022-01-26 14:44:35 +01:00
Tony Garnock-Jones 4e5f7136ad Bump preserves dep 2022-01-26 14:44:13 +01:00
Tony Garnock-Jones c3dfd42a58 Bump copyright years 2022-01-26 14:38:38 +01:00
Tony Garnock-Jones 369168311b Fix dependencies 2022-01-24 14:45:07 +01:00
Tony Garnock-Jones b53d606705 Publish
- @syndicate-lang/html@0.11.2
 - @syndicate-lang/syndicatec@0.11.2
 - @syndicate-lang/timer@0.11.2
 - @syndicate-lang/ts-plugin@0.11.2
 - @syndicate-lang/tsc@0.11.2
 - @syndicate-lang/ws-relay@0.11.2
2022-01-24 14:43:23 +01:00
Tony Garnock-Jones 781dc406c5 Fix dependency error 2022-01-24 14:43:15 +01:00
Tony Garnock-Jones 4b536392d7 Bump deps 2022-01-24 14:34:52 +01:00
Tony Garnock-Jones 6d58bcabe4 Publish
- @syndicate-lang/compiler@0.11.1
 - @syndicate-lang/core@0.11.1
 - @syndicate-lang/html@0.11.1
 - @syndicate-lang/syndicatec@0.11.1
 - @syndicate-lang/timer@0.11.1
 - @syndicate-lang/ts-plugin@0.11.1
 - @syndicate-lang/tsc@0.11.1
 - @syndicate-lang/ws-relay@0.11.1
2022-01-24 14:16:58 +01:00
Tony Garnock-Jones 8746694777 Bring compiler's version number in line with the rest 2022-01-24 14:16:38 +01:00
Tony Garnock-Jones 5560ce5aa1 Upgrade Preserves, allowing automatic conversion to Preserves values in many cases 2022-01-24 14:13:46 +01:00
Tony Garnock-Jones c5f69295a2 Somewhat-typed templating for fragments of HTML/SVG/etc 2022-01-24 09:10:43 +01:00
Tony Garnock-Jones 431a7f49b0 Allow passing of nodes directly to UIFragment.html 2022-01-24 09:10:20 +01:00
Tony Garnock-Jones fb83b0e524 Repair placeholder replacement in non-HTML settings 2022-01-24 09:09:58 +01:00
Tony Garnock-Jones ff75fc7107 Expose trace schema (!) 2022-01-24 09:09:25 +01:00
Tony Garnock-Jones b4d0559fe2 Avoid stompling on `this` binding 2022-01-24 09:09:10 +01:00
Tony Garnock-Jones faca72d6b3 Take advantage of new static info propagated by schema compiler 2022-01-24 09:08:56 +01:00
Tony Garnock-Jones 6f07bfafae Ability to generate non-HTML sublanguages, e.g. SVG 2022-01-20 20:48:53 +01:00
Tony Garnock-Jones 83cc561cce Turn.every 2022-01-20 20:48:30 +01:00
Tony Garnock-Jones c20cab0bba Publish
- @syndicate-lang/core@0.11.0
 - @syndicate-lang/html@0.11.0
 - @syndicate-lang/syndicatec@0.11.0
 - @syndicate-lang/timer@0.11.0
 - @syndicate-lang/ts-plugin@0.11.0
 - @syndicate-lang/tsc@0.11.0
 - @syndicate-lang/ws-relay@0.11.0
2022-01-20 15:28:41 +01:00
Tony Garnock-Jones 26eba6b492 Merge latest changes from the syndicate-protocols repository 2022-01-20 15:23:46 +01:00
Tony Garnock-Jones ab34b62cf1 Refine the trace protocol a bit 2022-01-20 09:40:53 +01:00
Tony Garnock-Jones 5a65256cf3 Syndicate traces 2022-01-19 14:24:21 +01:00
Tony Garnock-Jones 0291c43730 Merge latest changes from the syndicate-protocols repository 2022-01-17 00:23:18 +01:00
Tony Garnock-Jones 257c604e2b Repair bad record pattern 2022-01-17 00:22:10 +01:00
Tony Garnock-Jones 66ee5b7427 Merge latest changes from the syndicate-protocols repository 2022-01-17 00:20:45 +01:00
Tony Garnock-Jones a06d532006 Extension point. Closes #2 2022-01-16 21:17:36 +01:00
Tony Garnock-Jones d9e5d8d29c Publish
- @syndicate-lang/core@0.10.7
 - @syndicate-lang/html@0.10.9
 - @syndicate-lang/syndicatec@0.10.8
 - @syndicate-lang/timer@0.10.8
 - @syndicate-lang/ts-plugin@0.10.8
 - @syndicate-lang/tsc@0.10.8
 - @syndicate-lang/ws-relay@0.10.4
2022-01-16 15:23:54 +01:00
Tony Garnock-Jones f8b06ff02a Repair behaviour of (during $x => assert x). 2022-01-16 15:11:01 +01:00
Tony Garnock-Jones 4265343cc8 Publish
- @syndicate-lang/html@0.10.8
2022-01-12 15:44:19 +01:00
Tony Garnock-Jones cc3fac620c Rescan when a fragment changes, to keep property monitor event handlers installed 2022-01-12 15:44:06 +01:00
Tony Garnock-Jones 419adba79b Publish
- @syndicate-lang/core@0.10.6
 - @syndicate-lang/html@0.10.7
 - @syndicate-lang/syndicatec@0.10.7
 - @syndicate-lang/timer@0.10.7
 - @syndicate-lang/ts-plugin@0.10.7
 - @syndicate-lang/tsc@0.10.7
 - @syndicate-lang/ws-relay@0.10.3
2022-01-12 10:51:57 +01:00
Tony Garnock-Jones 08197626a6 Simplify. Why didn't I do it like this before? 2022-01-08 13:38:10 +01:00
Tony Garnock-Jones e04b898c7f Adjustments to service.prs 2022-01-07 15:29:20 +01:00
Tony Garnock-Jones 3823d3172c Publish
- @syndicate-lang/core@0.10.5
 - @syndicate-lang/html@0.10.6
 - @syndicate-lang/syndicatec@0.10.6
 - @syndicate-lang/timer@0.10.6
 - @syndicate-lang/ts-plugin@0.10.6
 - @syndicate-lang/tsc@0.10.6
 - @syndicate-lang/ws-relay@0.10.2
2021-12-24 20:58:04 -05:00
Tony Garnock-Jones ed8adae3f2 Experiment: run facet teardown in the current turn, immediately, instead of delayed 2021-12-24 17:29:26 -05:00
Tony Garnock-Jones 8f2d598201 Fix wsurl construction 2021-12-24 17:28:55 -05:00
Tony Garnock-Jones 665d5ab219 Fix (?) LSP config 2021-12-24 15:28:05 -05:00
Tony Garnock-Jones 9369bb56cd Bump example versions 2021-12-13 20:30:03 +01:00
Tony Garnock-Jones a11b755528 Publish
- @syndicate-lang/core@0.10.4
 - @syndicate-lang/html@0.10.5
 - @syndicate-lang/syndicatec@0.10.5
 - @syndicate-lang/timer@0.10.5
 - @syndicate-lang/ts-plugin@0.10.5
 - @syndicate-lang/tsc@0.10.5
 - @syndicate-lang/ws-relay@0.10.1
2021-12-13 20:23:10 +01:00
Tony Garnock-Jones b92bbb9741 Run pipes as linked actors in their own subfacets, to prevent a vanishing pipe from killing the game 2021-12-13 20:21:21 +01:00
Tony Garnock-Jones 90a6e2f41a Adapt to syndicate-protocols changes 2021-12-13 20:20:31 +01:00
Tony Garnock-Jones d737b96465 Merge latest changes from the syndicate-protocols repository 2021-12-13 16:00:35 +01:00
Tony Garnock-Jones 5f60c22e49 More simplifications, to sturdy this time 2021-12-13 15:43:01 +01:00
Tony Garnock-Jones 49075e7e84 Embedded values count as atoms here 2021-12-13 14:22:32 +01:00
Tony Garnock-Jones b3e24d819c Experiment: stricter, simpler dataspacePatterns 2021-12-13 13:49:58 +01:00
Tony Garnock-Jones b2df99cbc0 New preserves-schemac invocation style 2021-12-13 13:44:02 +01:00
Tony Garnock-Jones 17c1319d01 Upgrade preserves dep 2021-12-13 13:42:32 +01:00
Tony Garnock-Jones a3de480748 Publish
- @syndicate-lang/compiler@0.10.3
 - @syndicate-lang/core@0.10.3
 - @syndicate-lang/html@0.10.4
 - @syndicate-lang/syndicatec@0.10.4
 - @syndicate-lang/timer@0.10.4
 - @syndicate-lang/ts-plugin@0.10.4
 - @syndicate-lang/tsc@0.10.4
 - @syndicate-lang/ws-relay@0.10.0
2021-12-13 13:40:42 +01:00
Tony Garnock-Jones a51054d455 Clean up deps 2021-12-13 13:38:52 +01:00
Tony Garnock-Jones 85f123c777 New preserves-schema-ts invocation style 2021-12-13 13:38:46 +01:00
Tony Garnock-Jones 49283cb4ca Fix repository URLs. 2021-12-13 13:38:28 +01:00
Tony Garnock-Jones ebf578503c Split out @syndicate-lang/ws-relay module 2021-12-13 13:36:38 +01:00
Tony Garnock-Jones 3fe2af848b Improve wsRelay 2021-12-13 12:21:29 +01:00
Tony Garnock-Jones 09ae5ddb5b Support optional "when" in "during" 2021-12-13 12:21:11 +01:00
Tony Garnock-Jones 4d42968cd6 Repair an error and a couple of infelicities in quasivalue.ts 2021-12-13 12:20:51 +01:00
Tony Garnock-Jones 5cc9fa29ed yarn.lock for example-simple-chat 2021-12-13 00:03:57 +01:00
228 changed files with 18345 additions and 3617 deletions

View File

@ -1,17 +0,0 @@
((typescript-mode
. ((eval
. (progn
;; For TIDE:
(setq tide-tsserver-executable
(concat
(let ((d (dir-locals-find-file ".")))
(if (stringp d) d (car d)))
"node_modules/typescript/lib/tsserver.js"))
;; For LSP:
(require 'lsp-javascript)
(lsp-dependency 'typescript
`(:system ,(concat
(let ((d (dir-locals-find-file ".")))
(if (stringp d) d (car d)))
"node_modules/typescript/lib/tsserver.js"))))
))))

View File

@ -24,8 +24,13 @@ all:
watch:
inotifytest make -j$$(nproc) all
PROTOCOLS_BRANCH=main
pull-protocols:
git subtree pull -P packages/core/protocols \
-m 'Merge latest changes from the syndicate-protocols repository' \
git@git.syndicate-lang.org:syndicate-lang/syndicate-protocols \
main
$(PROTOCOLS_BRANCH)
fixcopyright:
-fixcopyright.rkt --preset-typescript --file-pattern 'packages/**.ts' GPL-3.0-or-later
-fixcopyright.rkt --preset-javascript --file-pattern 'packages/**.js' GPL-3.0-or-later

View File

@ -1,8 +0,0 @@
all:
yarn install
clean:
rm -rf lib dist .nyc_output coverage tsconfig.tsbuildinfo
veryclean: clean
rm -rf node_modules package-lock.json

View File

@ -11,23 +11,8 @@ 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`](https://yarnpkg.com/), not `npm`.
The repository is a monorepo, using
@ -139,19 +124,19 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
<!-- then a file `src/index.js`: -->
<!-- ```javascript -->
<!-- const { TimeLaterThan } = activate require("@syndicate-lang/driver-timer"); -->
<!-- const { LaterThan } = activate require("@syndicate-lang/driver-timer"); -->
<!-- spawn named 'ticker' { -->
<!-- field this.counter = 0; -->
<!-- field this.deadline = +(new Date()); -->
<!-- field this.deadline = +(new Date()) / 1000.0; -->
<!-- on start { console.log('ticker starting'); } -->
<!-- on stop { console.log('ticker stopping'); } -->
<!-- on asserted TimeLaterThan(this.deadline) { -->
<!-- on asserted LaterThan(this.deadline) { -->
<!-- this.counter++; -->
<!-- console.log('tick', new Date(), this.counter); -->
<!-- this.deadline += 1000; -->
<!-- this.deadline += 1; -->
<!-- } -->
<!-- stop on (this.counter == 5); -->
@ -176,3 +161,18 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
<!-- tick 2018-11-05T14:23:31.707Z 5 -->
<!-- ticker stopping -->
## Older versions
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

24
TODO.md
View File

@ -1,6 +1,28 @@
// // v Ideally, this would be of type "Sturdy.SturdyRef | null", but (1) the
// // current Dataflow implementation isn't bright enough to mark valuesas being
// // convertible to preserves values on demand, and (2) null isn't preservesable
// // in any case. If preserves were improved to be able to convert schema-parsed
// // values to preserves on demand, and to know it could do that at the type
// // level, then I could change Dataflow to support any value that could be
// // converted to preserves on demand, and I could special-case null and
// // undefined for the ergonomics.
// field servercap: AnyValue = false;
// on asserted InputValue('#servercap', $v: string) => {
// servercap.value = false;
// try {
// const a = new Reader<Ref>(v).next();
// if (Sturdy.toSturdyRef(a) !== void 0) servercap.value = a;
// } catch (e) {
// console.error(e);
// }
// }
// assert UIAttribute('#servercap', 'class', 'invalid') when (!servercap.value);
- [DONE] `during/spawn`
- [DONE] `during`
- [DONE] `let { TimeLaterThan } = activate require("@syndicate-lang/driver-timer");`
- [DONE] `let { LaterThan } = activate require("@syndicate-lang/driver-timer");`
- [DONE] `react`
- [DONE] `spawn*` or similar - looks like `spawn on start { ... }` will do the trick
- [DONE] activation

View File

@ -8,17 +8,15 @@
<script src="node_modules/@preserves/core/dist/preserves.js"></script>
<script src="node_modules/@syndicate-lang/core/dist/syndicate.js"></script>
<script src="node_modules/@syndicate-lang/html/dist/syndicate-html.js"></script>
<script src="node_modules/@syndicate-lang/ws-relay/dist/syndicate-ws-relay.js"></script>
<script src="index.js"></script>
</head>
<body>
<section>
<form id="nym_form" name="nym_form">
<fieldset>
<label class="control-label" for="wsurl">Server:</label>
<input type="text" id="wsurl" name="wsurl" value="">
<label class="control-label" for="servercap">Capability:</label>
<input type="text" id="servercap" name="servercap" value='<ref "syndicate" [] #[pkgN9TBmEd3Q04grVG4Zdw==]>'>
<label class="control-label" for="route">Dataspace address:</label>
<input type="text" id="route" name="route" value="">
<label class="control-label" for="nym">Nym:</label>
<input type="text" id="nym" name="nym" value="">

View File

@ -5,7 +5,7 @@
"main": "index.js",
"scripts": {
"prepare": "yarn regenerate && yarn compile && yarn rollup",
"regenerate": "rm -rf ./src/gen && preserves-schema-ts --module EntityRef=@syndicate-lang/core --module transportAddress=@syndicate-lang/core:Schemas.transportAddress --output ./src/gen './protocols/schemas/**/*.prs'",
"regenerate": "rm -rf ./src/gen && preserves-schema-ts --output ./src/gen ./protocols/schemas",
"regenerate:watch": "yarn regenerate --watch",
"compile": "syndicate-tsc",
"compile:watch": "syndicate-tsc -w --verbose --intermediate-directory src.ts",
@ -16,16 +16,17 @@
"author": "Tony Garnock-Jones <tonyg@leastfixedpoint.com>",
"license": "GPL-3.0+",
"dependencies": {
"@syndicate-lang/core": "^0.10",
"@syndicate-lang/html": "^0.10"
"@preserves/core": "^0.995.200",
"@syndicate-lang/core": "*",
"@syndicate-lang/html": "*",
"@syndicate-lang/ws-relay": "*"
},
"devDependencies": {
"@preserves/core": ">=0.18",
"@preserves/schema": ">=0.19",
"@syndicate-lang/ts-plugin": "^0.10",
"@syndicate-lang/tsc": "^0.10",
"@preserves/schema-cli": ">=0.995.201",
"@syndicate-lang/ts-plugin": "*",
"@syndicate-lang/tsc": "*",
"rollup": "^2.60",
"rollup-plugin-sourcemaps": "^0.6",
"typescript": "^4.5"
"typescript": "^4.9"
}
}

View File

@ -1,5 +1,4 @@
version 1 .
embeddedType EntityRef.Cap .
Present = <Present @username string>.
Says = <Says @who string @what string>.

View File

@ -1,6 +0,0 @@
version 1 .
ViaRelay = <via-relay @addr RelayAddress @assertion any> .
ForceRelayDisconnect = <force-relay-disconnect @addr RelayAddress> .
RelayAddress = transportAddress.WebSocket .

View File

@ -15,6 +15,7 @@ export default {
'@preserves/core': 'Preserves',
'@syndicate-lang/core': 'Syndicate',
'@syndicate-lang/html': 'SyndicateHtml',
'@syndicate-lang/ws-relay': 'SyndicateWsRelay',
},
},
};

View File

@ -1,2 +1,9 @@
let ?ds = dataspace
<bind "syndicate" #x"" $ds>
# Connect using <route [<ws "...">] <ref {oid: "syndicate" sig: #[acowDB2/oI+6aSEC3YIxGg]}>
<bind <ref {oid: "syndicate" key: #x""}> $ds #f>
# Connect using <route [<ws "...">] <noise { service: "syndicate", key: #x"21f6cd4e11e7e37711d6b3084ff18cded8fc8abf293aa47d43e8bb86dda65516" }>>
let ?sk = #x"7626eb6c0ee79cb928a0c3f6e29621e9119da6735859f1425956a49fd937e586"
let ?pk = #x"21f6cd4e11e7e37711d6b3084ff18cded8fc8abf293aa47d43e8bb86dda65516"
<bind <noise { service: "syndicate", key: $pk, secretKey: $sk }> $ds #f>

View File

@ -1,18 +1,130 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
import { QuasiValue as Q, Dataspace, Ref, Sturdy, Observe, AnyValue, Reader, Embedded, Schemas } from "@syndicate-lang/core";
import { boot as bootHtml, Anchor, template as html, HtmlFragments, GlobalEvent, UIAttribute } from "@syndicate-lang/html";
import { fromJS, Bytes, Dataspace, Ref, Sturdy, AnyValue, Reader, Schemas, stringify } from "@syndicate-lang/core";
import { boot as bootHtml, Anchor, template as html, HtmlFragments, GlobalEvent, UIAttribute, UIChangeableProperty } from "@syndicate-lang/html";
import { boot as bootWakeDetector, WakeEvent } from "./wake-detector";
import { boot as bootWsRelay, ForceRelayDisconnect, ViaRelay, RelayAddress, fromForceRelayDisconnect, fromViaRelay } from "./wsRelay";
import { fromSays, fromPresent, Present, Says } from './gen/simpleChatProtocol';
import { boot as bootWsRelay } from "@syndicate-lang/ws-relay";
import { Present, Says } from './gen/simpleChatProtocol';
import G = Schemas.gatekeeper;
import N = Schemas.noise;
const Transport = Schemas.transportAddress;
export function main() {
document.getElementById('chat_form')!.onsubmit = e => { e.preventDefault(); return false; };
document.getElementById('nym_form')!.onsubmit = e => { e.preventDefault(); return false; };
setDataspaceAddress();
setUsernameIfUnset();
document.getElementById('chat_input')!.focus();
function setWsurl() {
const wsurl = document.getElementById('wsurl')! as HTMLInputElement;
if (wsurl.value === '') {
wsurl.value = `ws://${document.location.host}:9001/`;
Dataspace.boot(ds => {
bootHtml(ds);
bootWakeDetector(ds);
bootWsRelay(ds, true);
bootChat(ds);
});
}
function bootChat(ds: Ref) {
spawn named 'chat' {
at ds {
field nym: string = '';
on asserted UIChangeableProperty('#nym', 'value', $v: string) => nym.value = v;
during UIChangeableProperty('#route', 'value', $routeText: string) => {
let route: G.Route<Ref> | null = null;
try {
route = G.asRoute(new Reader<Ref>(routeText).next());
} catch (e) {
console.error(e);
}
assert UIAttribute('#route', 'class', 'invalid') when (!route);
if (route) contactRemote(route);
}
function contactRemote(route: G.Route<Ref>) {
console.log('contactRemote', route);
during G.ResolvePath({
"route": route,
"addr": $addr,
"control": $control: Ref,
"resolved": G.Resolved.accepted($remoteDs: Ref),
}) => {
on message WakeEvent() => at control {
send message G.ForceDisconnect();
}
outputState('connected', 'connected to ' + stringify(addr));
on stop outputState('disconnected', 'disconnected from ' + stringify(addr));
on message GlobalEvent('#send_chat', 'click', _) => {
const inp = document.getElementById("chat_input") as HTMLInputElement;
var utterance = inp.value;
inp.value = '';
if (utterance) {
at remoteDs {
send message Says({ who: nym.value, what: utterance });
}
}
}
at remoteDs {
assert Present(nym.value);
const ui = new Anchor();
during Present($who: string) => at ds {
assert ui.context(who).html('#nymlist', html`<li>${who}</li>`);
}
on message Says({ "who": $who: string, "what": $what: string }) => {
outputUtterance(who, what);
}
}
}
}
}
}
}
function setDataspaceAddress() {
const route = document.getElementById('route')! as HTMLInputElement;
if (route.value === '') {
const isSecure = (document.location.protocol ?? '').toLowerCase().endsWith('s:');
const localWs = isSecure ? 'wss' : 'ws';
const wsurls = [
`wss://generic-dataspace.demo.leastfixedpoint.com/`,
`${localWs}://${document.location.hostname}:9001/`,
];
const transports: AnyValue[] =
wsurls.map(u => fromJS(Schemas.transportAddress.WebSocket(u)));
route.value = stringify(G.Route<Ref>({
"transports": transports,
"pathSteps": [G.PathStep({
"stepType": N.$noise,
"detail": fromJS(N.NoiseSpec({
"service": "syndicate",
"key": Bytes.fromHex("21f6cd4e11e7e37711d6b3084ff18cded8fc8abf293aa47d43e8bb86dda65516"),
"protocol": N.NoiseProtocol.absent(),
"preSharedKeys": N.NoisePreSharedKeys.absent(),
})),
})],
}));
// To use a sturdyref instead:
//
// route.value = stringify(G.Route<Ref>({
// "transports": transports,
// "pathSteps": [G.PathStep({
// "stepType": Sturdy.$ref,
// "detail": fromJS(Sturdy.Parameters({
// "oid": "syndicate",
// "sig": Bytes.fromHex('69ca300c1dbfa08fba692102dd82311a'),
// "caveats": Sturdy.CaveatsField.absent(),
// })),
// })],
// }));
//
// ... and of course you can chain these things, depending on server setup.
}
}
@ -23,119 +135,6 @@ function setUsernameIfUnset() {
}
}
export function main() {
document.getElementById('chat_form')!.onsubmit = e => { e.preventDefault(); return false; };
document.getElementById('nym_form')!.onsubmit = e => { e.preventDefault(); return false; };
setWsurl();
setUsernameIfUnset();
Dataspace.boot(ds => {
bootHtml(ds);
bootWakeDetector(ds);
bootWsRelay(ds);
spawnInputChangeMonitor(ds);
spawn named 'chat' {
at ds {
const ui = new Anchor();
field nym: string = '';
on asserted InputValue('#nym', $v: string) => nym.value = v;
// v Ideally, this would be of type "Sturdy.SturdyRef | null", but (1) the
// current Dataflow implementation isn't bright enough to mark valuesas being
// convertible to preserves values on demand, and (2) null isn't preservesable
// in any case. If preserves were improved to be able to convert schema-parsed
// values to preserves on demand, and to know it could do that at the type
// level, then I could change Dataflow to support any value that could be
// converted to preserves on demand, and I could special-case null and
// undefined for the ergonomics.
field servercap: AnyValue = false;
on asserted InputValue('#servercap', $v: string) => {
servercap.value = false;
try {
const a = new Reader<Ref>(v).next();
if (Sturdy.toSturdyRef(a) !== void 0) servercap.value = a;
} catch (e) {
console.error(e);
}
}
assert UIAttribute('#servercap', 'class', 'invalid') when (!servercap.value);
during InputValue('#wsurl', $wsurl: string) => {
const addr = RelayAddress(Transport.WebSocket(wsurl));
assert fromViaRelay(ViaRelay({
"addr": addr,
"assertion": Schemas.gatekeeper.fromResolve(Schemas.gatekeeper.Resolve({
"sturdyref": Sturdy.asSturdyRef(servercap.value),
"observer": create ({
assert(remoteDs_e: Embedded<Ref>) {
const remoteDs = remoteDs_e.embeddedValue;
console.log('Saw remoteDs', remoteDs);
on message WakeEvent() =>
send message fromForceRelayDisconnect(ForceRelayDisconnect(addr));
outputState('connected', 'connected to ' + wsurl);
on stop outputState('disconnected', 'disconnected from ' + wsurl);
on message GlobalEvent('#send_chat', 'click', _) => {
const inp = document.getElementById("chat_input") as HTMLInputElement;
var utterance = inp.value;
inp.value = '';
if (utterance) {
at remoteDs {
send message fromSays(Says({ who: nym.value, what: utterance }));
}
}
}
at remoteDs {
assert fromPresent(Present(nym.value));
during Present($who: string) => at ds {
assert ui.context(who).html('#nymlist', html`<li>${who}</li>`);
}
on message Says({ "who": $who: string, "what": $what: string }) => {
outputUtterance(who, what);
}
}
}
}),
})),
})) when (wsurl && servercap.value);
}
}
}
});
}
///////////////////////////////////////////////////////////////////////////
// Input control value monitoring
assertion type InputValue(selector, value);
function spawnInputChangeMonitor(ds: Ref) {
spawn {
at ds {
during Observe({
"pattern": :pattern InputValue(\Q.lit($selector: string), \_)
}) => spawn named `input(${selector})` {
const element = document.querySelector(selector) as HTMLInputElement;
if (element !== null) {
field value: string = element.value;
assert InputValue(selector, value.value);
on message GlobalEvent(selector, 'change', $_e) => value.value = element.value;
}
}
}
}
}
///////////////////////////////////////////////////////////////////////////
// Adding items to the transcript panel
function outputItem(cls: string, item0: HtmlFragments): ChildNode {
const stamp = html`<span class="timestamp">${(new Date()).toUTCString()}</span>`;
const item = html`<div class="${cls}">${stamp}${item0}</div>`;

View File

@ -1,47 +0,0 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
import { Ref, Relay, Turn, Supervisor, SupervisorRestartPolicy } from "@syndicate-lang/core";
import * as G from "./gen/wsRelay";
export * from "./gen/wsRelay";
export function boot(ds: Ref) {
spawn named 'wsRelay' {
at ds {
during G.ViaRelay({ "addr": $addrValue }) => spawn named ['wsRelay', addrValue] {
let counter = 0;
new Supervisor({
restartPolicy: SupervisorRestartPolicy.ALWAYS,
}, () => ['wsRelay', addrValue, counter++], () => {
const facet = Turn.activeFacet;
facet.preventInertCheck();
const addr = G.toRelayAddress(addrValue);
if (addr !== void 0) {
const ws = new WebSocket(addr.url);
ws.binaryType = 'arraybuffer';
ws.onclose = () => facet.turn(() => { stop {} });
ws.onerror = () => facet.turn(() =>
Turn.active.crash(new Error("WebSocket error")));
ws.onopen = () => facet.turn(() => {
const relay = new Relay.Relay({
debug: true,
trustPeer: true,
packetWriter: bs => ws.send(bs),
setup(r: Relay.Relay) {
ws.onmessage = e => facet.turn(() =>
r.accept(new Uint8Array(e.data)));
},
initialOid: 0,
});
during G.ViaRelay({ "addr": addrValue, "assertion": $a }) => {
at relay.peer! {
assert a;
}
}
});
}
});
}
}
}
}

View File

@ -100,6 +100,10 @@ div.state_connected {
font-size: smaller;
}
#servercap.invalid {
#route.invalid {
background: red;
}
#route {
min-width: 30em;
}

View File

@ -0,0 +1,440 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
"@preserves/core@0.995.200", "@preserves/core@^0.995.200":
version "0.995.200"
resolved "https://registry.yarnpkg.com/@preserves/core/-/core-0.995.200.tgz#65575cf8f9320e73b5d37fa9ac9d6881a33fd3a6"
integrity sha512-htZ2x+hltUpKoPsviWSuelzZW96po9zVSsN0RZEih60FahNX0R2LCqFJ6v5lyATuQ9oHALVi0w8w4rtf8oiAJw==
"@preserves/schema-cli@0.995.201":
version "0.995.201"
resolved "https://registry.yarnpkg.com/@preserves/schema-cli/-/schema-cli-0.995.201.tgz#e87cb7ba51b225ff6ea96f177c5388907adf6717"
integrity sha512-n/lpVgWBY1UTRySPXIwWG4Yu87OrQ9b7Xo8zPPQzD/DJDTEDT3y3SUujY7UTF1pQn09xRGnfPnDu1RoRCv2J3w==
dependencies:
"@preserves/core" "^0.995.200"
"@preserves/schema" "^0.995.201"
chalk "^4.1"
chokidar "^3.5"
commander "^7.2"
glob "^7.1"
minimatch "^3.0"
"@preserves/schema@^0.995.201":
version "0.995.201"
resolved "https://registry.yarnpkg.com/@preserves/schema/-/schema-0.995.201.tgz#827ad539afb0fdf68ba885ee3ff43db0fd473aa5"
integrity sha512-0SuhwOEAfxtrAeOTZ8V1yNEcHHHEbfUmoFawrF+vzTQFNZRz/X3LF1FM6wOiJlHtb7tBr4B+rHXX8jfNrqrdkA==
dependencies:
"@preserves/core" "^0.995.200"
"@rollup/pluginutils@^3.0.9":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b"
integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==
dependencies:
"@types/estree" "0.0.39"
estree-walker "^1.0.1"
picomatch "^2.2.2"
"@syndicate-lang/compiler@^0.21.1":
version "0.21.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/compiler/-/compiler-0.21.1.tgz#b6316bac14d053c313b3442be68f532a60c47cb3"
integrity sha512-daaYh1i0XmoHt6eTtO4gWblfVKMjp9trwxqR62wUSONY3gtJ5Bn4hG3dMgfoMz2NvOWbJHaGz/95J0jRubITxA==
"@syndicate-lang/core@*", "@syndicate-lang/core@^0.32.0":
version "0.32.0"
resolved "https://registry.yarnpkg.com/@syndicate-lang/core/-/core-0.32.0.tgz#0efbbff176cac2969c2b6ba70a19965add3a2c61"
integrity sha512-ERVXk0W1xLaKvUa79Ek74YvqfBU543cUTb2GJvp76TP5k1jA97q9GzhddicS/s8lqu8SUC1+IXmKiJk0NX2TWQ==
dependencies:
salty-crypto "0.3.1"
"@syndicate-lang/html@*":
version "0.33.0"
resolved "https://registry.yarnpkg.com/@syndicate-lang/html/-/html-0.33.0.tgz#c53e6bf8a52b17c3747f4270713a8c9234f984af"
integrity sha512-xhN6NZOgLxlAQOyWG0JAgtyF1e1yQvrpNh5RBAPnucFYC024yo1ggZ08+KiaulhsoIKvRbBE6FU6p9dDm4/tpQ==
dependencies:
"@syndicate-lang/core" "^0.32.0"
"@syndicate-lang/ts-plugin@*":
version "0.34.0"
resolved "https://registry.yarnpkg.com/@syndicate-lang/ts-plugin/-/ts-plugin-0.34.0.tgz#df92f9044eeba528c80c41c5c9df49ee28902411"
integrity sha512-OCO6Hm0euz2hZk6tYTrJQNEM8iDBeQ/dgpW2a/UP52XSP6fYj0OvUVfn+35ZkIL64S+zDsJjL/6XFN05UZyRGA==
dependencies:
"@syndicate-lang/compiler" "^0.21.1"
"@syndicate-lang/core" "^0.32.0"
"@syndicate-lang/tsc@*":
version "0.34.0"
resolved "https://registry.yarnpkg.com/@syndicate-lang/tsc/-/tsc-0.34.0.tgz#1056fba7f639bbf436d0c2ecd2717edc4c1e612a"
integrity sha512-Ufj3xsdXMbMCavWsEkX/pFyXRpNIWRW+LFew1icD14DoSLqyBcoUEvskolOSgkSzC53tDjbd4/LXDVofIjIyUA==
dependencies:
"@syndicate-lang/compiler" "^0.21.1"
"@syndicate-lang/core" "^0.32.0"
glob "^7.1.6"
yargs "^16.2.0"
"@syndicate-lang/ws-relay@*":
version "0.34.0"
resolved "https://registry.yarnpkg.com/@syndicate-lang/ws-relay/-/ws-relay-0.34.0.tgz#8b450ef18b22ca8e0c159c7925a1068796ad2c71"
integrity sha512-PT24Pp+ol/wWMSp/6H8i5zu7CgXm5nh0UsfpxJ3ZpvWFs/rIsoMflL/g+C1Q4DW9oFTn6/WFs07VdSLmE2/Uog==
dependencies:
"@syndicate-lang/core" "^0.32.0"
salty-crypto "0.3"
"@types/estree@0.0.39":
version "0.0.39"
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
ansi-regex@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
ansi-styles@^4.0.0, ansi-styles@^4.1.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
dependencies:
color-convert "^2.0.1"
anymatch@~3.1.2:
version "3.1.3"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
dependencies:
normalize-path "^3.0.0"
picomatch "^2.0.4"
atob@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
balanced-match@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
binary-extensions@^2.0.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522"
integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
dependencies:
balanced-match "^1.0.0"
concat-map "0.0.1"
braces@~3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
dependencies:
fill-range "^7.0.1"
chalk@^4.1:
version "4.1.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
dependencies:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
chokidar@^3.5:
version "3.6.0"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b"
integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==
dependencies:
anymatch "~3.1.2"
braces "~3.0.2"
glob-parent "~5.1.2"
is-binary-path "~2.1.0"
is-glob "~4.0.1"
normalize-path "~3.0.0"
readdirp "~3.6.0"
optionalDependencies:
fsevents "~2.3.2"
cliui@^7.0.2:
version "7.0.4"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==
dependencies:
string-width "^4.2.0"
strip-ansi "^6.0.0"
wrap-ansi "^7.0.0"
color-convert@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
dependencies:
color-name "~1.1.4"
color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
commander@^7.2:
version "7.2.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
decode-uri-component@^0.2.0:
version "0.2.2"
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9"
integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==
emoji-regex@^8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
escalade@^3.1.1:
version "3.1.2"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27"
integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==
estree-walker@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700"
integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==
fill-range@^7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
dependencies:
to-regex-range "^5.0.1"
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
fsevents@~2.3.2:
version "2.3.3"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
get-caller-file@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
glob-parent@~5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
dependencies:
is-glob "^4.0.1"
glob@^7.1, glob@^7.1.6:
version "7.2.3"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
minimatch "^3.1.1"
once "^1.3.0"
path-is-absolute "^1.0.0"
has-flag@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
dependencies:
once "^1.3.0"
wrappy "1"
inherits@2:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
is-binary-path@~2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
dependencies:
binary-extensions "^2.0.0"
is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
is-fullwidth-code-point@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
is-glob@^4.0.1, is-glob@~4.0.1:
version "4.0.3"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
dependencies:
is-extglob "^2.1.1"
is-number@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
minimatch@^3.0, minimatch@^3.1.1:
version "3.1.2"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
dependencies:
brace-expansion "^1.1.7"
normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
once@^1.3.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
dependencies:
wrappy "1"
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2:
version "2.3.1"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
readdirp@~3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
dependencies:
picomatch "^2.2.1"
require-directory@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
rollup-plugin-sourcemaps@^0.6:
version "0.6.3"
resolved "https://registry.yarnpkg.com/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.6.3.tgz#bf93913ffe056e414419607f1d02780d7ece84ed"
integrity sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==
dependencies:
"@rollup/pluginutils" "^3.0.9"
source-map-resolve "^0.6.0"
rollup@^2.60:
version "2.79.1"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7"
integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==
optionalDependencies:
fsevents "~2.3.2"
salty-crypto@0.3, salty-crypto@0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/salty-crypto/-/salty-crypto-0.3.1.tgz#1242cd948d8152aff104d0945980996b1602ba0e"
integrity sha512-dCbF8/UzMV8oXPmMCHWzSp7u8G6NA+pHbaFBVqVgLVBiyxuwVn9iPbyt9WXT0EoXfL9sKt7U1mV+bgsGw5cV7A==
source-map-resolve@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2"
integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==
dependencies:
atob "^2.1.2"
decode-uri-component "^0.2.0"
string-width@^4.1.0, string-width@^4.2.0:
version "4.2.3"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
dependencies:
emoji-regex "^8.0.0"
is-fullwidth-code-point "^3.0.0"
strip-ansi "^6.0.1"
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
dependencies:
ansi-regex "^5.0.1"
supports-color@^7.1.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
dependencies:
has-flag "^4.0.0"
to-regex-range@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
dependencies:
is-number "^7.0.0"
typescript@^4.9:
version "4.9.5"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a"
integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
wrap-ansi@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
dependencies:
ansi-styles "^4.0.0"
string-width "^4.1.0"
strip-ansi "^6.0.0"
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
y18n@^5.0.5:
version "5.0.8"
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
yargs-parser@^20.2.2:
version "20.2.9"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
yargs@^16.2.0:
version "16.2.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
dependencies:
cliui "^7.0.2"
escalade "^3.1.1"
get-caller-file "^2.0.5"
require-directory "^2.1.1"
string-width "^4.2.0"
y18n "^5.0.5"
yargs-parser "^20.2.2"

View File

@ -0,0 +1,13 @@
# How to use @syndicate-lang/loader
Running a module:
```shell
node -r @syndicate-lang/loader index.js
```
Running a standalone script:
```shell
./standalone.js
```

View File

@ -0,0 +1,19 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2023 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
const { BoxState, SetBox, N } = require('./protocol.js');
function boot() {
spawn named 'box' {
field boxValue = 0;
assert BoxState(boxValue.value);
on message SetBox($v) => boxValue.value = v;
stop on (boxValue.value === N) {
console.log('terminated box root facet');
}
}
}
exports.boot = boot;

View File

@ -0,0 +1,16 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2023 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
const { BoxState, SetBox } = require('./protocol.js');
function boot(doneCallback) {
spawn named 'client' {
on asserted BoxState($v) => send message SetBox(v + 1);
on retracted BoxState(_) => {
console.log('box gone');
doneCallback();
}
}
}
exports.boot = boot;

View File

@ -0,0 +1,10 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2023 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
const { N } = require('./protocol.js');
const Box = require('./box.js');
const Client = require('./client.js');
console.time('box-and-client-' + N.toString());
Box.boot();
Client.boot(() => console.timeEnd('box-and-client-' + N.toString()));

View File

@ -0,0 +1,11 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2023 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
assertion type BoxState(value);
message type SetBox(newValue);
const N = 100000;
exports.BoxState = BoxState;
exports.SetBox = SetBox;
exports.N = N;

View File

@ -0,0 +1,2 @@
#!/bin/sh
exec node -r @syndicate-lang/loader index.js

View File

@ -0,0 +1,28 @@
#!/usr/bin/env -S node -r @syndicate-lang/loader
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2023 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
assertion type BoxState(value);
message type SetBox(newValue);
const N = 100000;
spawn named 'box' {
field boxValue = 0;
assert BoxState(boxValue.value);
on message SetBox($v) => boxValue.value = v;
stop on (boxValue.value === N) {
console.log('terminated box root facet');
}
}
console.time('box-and-client-' + N.toString());
spawn named 'client' {
on asserted BoxState($v) => send message SetBox(v + 1);
on retracted BoxState(_) => {
console.log('box gone');
console.timeEnd('box-and-client-' + N.toString())
}
}

View File

@ -7,7 +7,4 @@
<h1>Look in the JavaScript console for output.</h1>
<main id="main">
</main>
<script>
Syndicate.bootModule(Main.__SYNDICATE__bootProc);
</script>
</html>

View File

@ -12,14 +12,16 @@
"author": "Tony Garnock-Jones <tonyg@leastfixedpoint.com>",
"license": "GPL-3.0+",
"dependencies": {
"@syndicate-lang/core": "^0.10"
"@preserves/core": "^0.995.200",
"@preserves/schema": "^0.995.201",
"@syndicate-lang/core": "*"
},
"devDependencies": {
"@syndicate-lang/syndicatec": "^0.10",
"@syndicate-lang/ts-plugin": "^0.10",
"@syndicate-lang/tsc": "^0.10",
"@syndicate-lang/syndicatec": "*",
"@syndicate-lang/ts-plugin": "*",
"@syndicate-lang/tsc": "*",
"rollup": "^2.60",
"rollup-plugin-sourcemaps": "^0.6",
"typescript": "^4.5"
"typescript": "^4.9"
}
}

View File

@ -2,24 +2,17 @@
# yarn lockfile v1
"@preserves/core@0.18.1", "@preserves/core@^0.18.1":
version "0.18.1"
resolved "https://registry.yarnpkg.com/@preserves/core/-/core-0.18.1.tgz#7e630fe7e38238bc73f3c0518142f5fe0ae2e819"
integrity sha512-b+YzeAS9vLky6PXF3SzYEcj2lBCnZ6hREdRpsksfzxEm+3IqmKk6daxpe0DsH0fgTVgMTq6+wQPOwAVwx0R6Ag==
"@preserves/core@0.995.200", "@preserves/core@^0.995.200":
version "0.995.200"
resolved "https://registry.yarnpkg.com/@preserves/core/-/core-0.995.200.tgz#65575cf8f9320e73b5d37fa9ac9d6881a33fd3a6"
integrity sha512-htZ2x+hltUpKoPsviWSuelzZW96po9zVSsN0RZEih60FahNX0R2LCqFJ6v5lyATuQ9oHALVi0w8w4rtf8oiAJw==
"@preserves/schema@0.19.1":
version "0.19.1"
resolved "https://registry.yarnpkg.com/@preserves/schema/-/schema-0.19.1.tgz#def22920fb63abfd8530d663cf72ef2220ae9637"
integrity sha512-/S5Ab3egmihNNuHa/cEHl4kL8RT4kdYjSXZQFDuCALU+jRUPoQQPA+a2m+2UvmWQQDE0P5Z54i6qb9OdT0OdZg==
"@preserves/schema@0.995.201":
version "0.995.201"
resolved "https://registry.yarnpkg.com/@preserves/schema/-/schema-0.995.201.tgz#827ad539afb0fdf68ba885ee3ff43db0fd473aa5"
integrity sha512-0SuhwOEAfxtrAeOTZ8V1yNEcHHHEbfUmoFawrF+vzTQFNZRz/X3LF1FM6wOiJlHtb7tBr4B+rHXX8jfNrqrdkA==
dependencies:
"@preserves/core" "^0.18.1"
"@types/glob" "^7.1"
"@types/minimatch" "^3.0"
chalk "^4.1"
chokidar "^3.5"
commander "^7.2"
glob "^7.1"
minimatch "^3.0"
"@preserves/core" "^0.995.200"
"@rollup/pluginutils@^3.0.9":
version "3.1.0"
@ -30,44 +23,43 @@
estree-walker "^1.0.1"
picomatch "^2.2.2"
"@syndicate-lang/compiler@^0.9.1":
version "0.9.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/compiler/-/compiler-0.9.1.tgz#6c89eabd2225eb711975e5e7611bc67c23606655"
integrity sha512-ZKvqxrbwFBZ7Y8IDlL+Amf3jl1fQ5+Sr3d3TWlSK6IKF5pGGh5/HLrPrkWJifE7N8wr5ASQtzI0IbF3ky9VzOQ==
"@syndicate-lang/compiler@^0.21.1":
version "0.21.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/compiler/-/compiler-0.21.1.tgz#b6316bac14d053c313b3442be68f532a60c47cb3"
integrity sha512-daaYh1i0XmoHt6eTtO4gWblfVKMjp9trwxqR62wUSONY3gtJ5Bn4hG3dMgfoMz2NvOWbJHaGz/95J0jRubITxA==
"@syndicate-lang/core@^0.9", "@syndicate-lang/core@^0.9.1":
version "0.9.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/core/-/core-0.9.1.tgz#54d6951c230a7c1f2b825ea378ac903520e1f4ec"
integrity sha512-Rd3nM4OfgYfU4EJX2TaCXTSH8ibhf9vMHLmKr1hqy8NL/uy/mEZyWULguPSxkZALWxdom+SaNWpBLmT50zYegw==
"@syndicate-lang/core@*", "@syndicate-lang/core@^0.32.0":
version "0.32.0"
resolved "https://registry.yarnpkg.com/@syndicate-lang/core/-/core-0.32.0.tgz#0efbbff176cac2969c2b6ba70a19965add3a2c61"
integrity sha512-ERVXk0W1xLaKvUa79Ek74YvqfBU543cUTb2GJvp76TP5k1jA97q9GzhddicS/s8lqu8SUC1+IXmKiJk0NX2TWQ==
dependencies:
"@preserves/core" "0.18.1"
"@preserves/schema" "0.19.1"
salty-crypto "0.3.1"
"@syndicate-lang/syndicatec@^0.9":
version "0.9.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/syndicatec/-/syndicatec-0.9.1.tgz#ca74009c00cf564626714ebe4b1a527be43c4699"
integrity sha512-EkFiBsSIdC6E3fBs0dP9t3wI4yGwzVVgSypYHAJ9ljLtjufX5FMkWZdJ4EIW/4E9yPy6sw3AezufMcAjxuMc0Q==
"@syndicate-lang/syndicatec@*":
version "0.34.0"
resolved "https://registry.yarnpkg.com/@syndicate-lang/syndicatec/-/syndicatec-0.34.0.tgz#f3b88507b633552fe1f41f24def5121c0cafeaeb"
integrity sha512-h3MPifJdXZTS3JVcvRG8GXMJMPBH4RYmJ3B7c2sjM826Pf6O8zT47Vuv1y2WyD9PS8BiSCI01uOR0W5AVJJT5w==
dependencies:
"@syndicate-lang/compiler" "^0.9.1"
"@syndicate-lang/core" "^0.9.1"
"@syndicate-lang/compiler" "^0.21.1"
"@syndicate-lang/core" "^0.32.0"
glob "^7.1.6"
yargs "^16.2.0"
"@syndicate-lang/ts-plugin@^0.9":
version "0.9.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/ts-plugin/-/ts-plugin-0.9.1.tgz#2b045638beaef6fe86fba626587e83291c732c2f"
integrity sha512-bTqJI1Z8n/zWtMrtpe4aq72Pcu1y9qW4psTWVQbiOQ8hLmmgTKP0UmcwmQvwKCanznhZfCOpXAH/BIFsukL60w==
"@syndicate-lang/ts-plugin@*":
version "0.34.0"
resolved "https://registry.yarnpkg.com/@syndicate-lang/ts-plugin/-/ts-plugin-0.34.0.tgz#df92f9044eeba528c80c41c5c9df49ee28902411"
integrity sha512-OCO6Hm0euz2hZk6tYTrJQNEM8iDBeQ/dgpW2a/UP52XSP6fYj0OvUVfn+35ZkIL64S+zDsJjL/6XFN05UZyRGA==
dependencies:
"@syndicate-lang/compiler" "^0.9.1"
"@syndicate-lang/core" "^0.9.1"
"@syndicate-lang/compiler" "^0.21.1"
"@syndicate-lang/core" "^0.32.0"
"@syndicate-lang/tsc@^0.9":
version "0.9.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/tsc/-/tsc-0.9.1.tgz#88c60cdddd4d56d517540a8d2f8272ead225f411"
integrity sha512-/2jkwvDNd24IXQek3bMPP+72IHIhl/P4Fz/OQ2Urs0vEnB5phw9dRKSxEbuOlwiVJj5yAPxAdKav+ve0h6Qn1g==
"@syndicate-lang/tsc@*":
version "0.34.0"
resolved "https://registry.yarnpkg.com/@syndicate-lang/tsc/-/tsc-0.34.0.tgz#1056fba7f639bbf436d0c2ecd2717edc4c1e612a"
integrity sha512-Ufj3xsdXMbMCavWsEkX/pFyXRpNIWRW+LFew1icD14DoSLqyBcoUEvskolOSgkSzC53tDjbd4/LXDVofIjIyUA==
dependencies:
"@syndicate-lang/compiler" "^0.9.1"
"@syndicate-lang/core" "^0.9.1"
"@syndicate-lang/compiler" "^0.21.1"
"@syndicate-lang/core" "^0.32.0"
glob "^7.1.6"
yargs "^16.2.0"
@ -76,44 +68,18 @@
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
"@types/glob@^7.1":
version "7.2.0"
resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb"
integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==
dependencies:
"@types/minimatch" "*"
"@types/node" "*"
"@types/minimatch@*", "@types/minimatch@^3.0":
version "3.0.5"
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40"
integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==
"@types/node@*":
version "16.11.12"
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.12.tgz#ac7fb693ac587ee182c3780c26eb65546a1a3c10"
integrity sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==
ansi-regex@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
ansi-styles@^4.0.0, ansi-styles@^4.1.0:
ansi-styles@^4.0.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
dependencies:
color-convert "^2.0.1"
anymatch@~3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
dependencies:
normalize-path "^3.0.0"
picomatch "^2.0.4"
atob@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
@ -124,11 +90,6 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
binary-extensions@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
@ -137,36 +98,6 @@ brace-expansion@^1.1.7:
balanced-match "^1.0.0"
concat-map "0.0.1"
braces@~3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
dependencies:
fill-range "^7.0.1"
chalk@^4.1:
version "4.1.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
dependencies:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
chokidar@^3.5:
version "3.5.2"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75"
integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==
dependencies:
anymatch "~3.1.2"
braces "~3.0.2"
glob-parent "~5.1.2"
is-binary-path "~2.1.0"
is-glob "~4.0.1"
normalize-path "~3.0.0"
readdirp "~3.6.0"
optionalDependencies:
fsevents "~2.3.2"
cliui@^7.0.2:
version "7.0.4"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
@ -188,20 +119,15 @@ color-name@~1.1.4:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
commander@^7.2:
version "7.2.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
decode-uri-component@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
version "0.2.2"
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9"
integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==
emoji-regex@^8.0.0:
version "8.0.0"
@ -209,65 +135,46 @@ emoji-regex@^8.0.0:
integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
escalade@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
version "3.1.2"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27"
integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==
estree-walker@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700"
integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==
fill-range@^7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
dependencies:
to-regex-range "^5.0.1"
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
fsevents@~2.3.2:
version "2.3.2"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
version "2.3.3"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
get-caller-file@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
glob-parent@~5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
dependencies:
is-glob "^4.0.1"
glob@^7.1, glob@^7.1.6:
version "7.2.0"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
glob@^7.1.6:
version "7.2.3"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
minimatch "^3.0.4"
minimatch "^3.1.1"
once "^1.3.0"
path-is-absolute "^1.0.0"
has-flag@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
dependencies:
once "^1.3.0"
wrappy "1"
@ -277,75 +184,39 @@ inherits@2:
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
is-binary-path@~2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
dependencies:
binary-extensions "^2.0.0"
is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
is-fullwidth-code-point@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
is-glob@^4.0.1, is-glob@~4.0.1:
version "4.0.3"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
dependencies:
is-extglob "^2.1.1"
is-number@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
minimatch@^3.0, minimatch@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
minimatch@^3.1.1:
version "3.1.2"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
dependencies:
brace-expansion "^1.1.7"
normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
once@^1.3.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
dependencies:
wrappy "1"
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2:
version "2.3.0"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==
readdirp@~3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
dependencies:
picomatch "^2.2.1"
picomatch@^2.2.2:
version "2.3.1"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
require-directory@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
rollup-plugin-sourcemaps@^0.6:
version "0.6.3"
@ -356,12 +227,17 @@ rollup-plugin-sourcemaps@^0.6:
source-map-resolve "^0.6.0"
rollup@^2.60:
version "2.61.0"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.61.0.tgz#ccd927bcd6cc0c78a4689c918627a717977208f4"
integrity sha512-teQ+T1mUYbyvGyUavCodiyA9hD4DxwYZJwr/qehZGhs1Z49vsmzelMVYMxGU4ZhGRKxYPupHuz5yzm/wj7VpWA==
version "2.79.1"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7"
integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==
optionalDependencies:
fsevents "~2.3.2"
salty-crypto@0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/salty-crypto/-/salty-crypto-0.3.1.tgz#1242cd948d8152aff104d0945980996b1602ba0e"
integrity sha512-dCbF8/UzMV8oXPmMCHWzSp7u8G6NA+pHbaFBVqVgLVBiyxuwVn9iPbyt9WXT0EoXfL9sKt7U1mV+bgsGw5cV7A==
source-map-resolve@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2"
@ -386,24 +262,10 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1:
dependencies:
ansi-regex "^5.0.1"
supports-color@^7.1.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
dependencies:
has-flag "^4.0.0"
to-regex-range@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
dependencies:
is-number "^7.0.0"
typescript@^4.5:
version "4.5.3"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.3.tgz#afaa858e68c7103317d89eb90c5d8906268d353c"
integrity sha512-eVYaEHALSt+s9LbvgEv4Ef+Tdq7hBiIZgii12xXJnukryt3pMgJf6aKhoCZ3FWQsu6sydEnkg11fYXLzhLBjeQ==
typescript@^4.9:
version "4.9.5"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a"
integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
wrap-ansi@^7.0.0:
version "7.0.0"
@ -417,7 +279,7 @@ wrap-ansi@^7.0.0:
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
y18n@^5.0.5:
version "5.0.8"

View File

@ -12,12 +12,14 @@
"author": "Tony Garnock-Jones <tonyg@leastfixedpoint.com>",
"license": "GPL-3.0+",
"dependencies": {
"@syndicate-lang/core": "^0.10"
"@preserves/core": "^0.995.200",
"@preserves/schema": "^0.995.201",
"@syndicate-lang/core": "*"
},
"devDependencies": {
"@syndicate-lang/tsc": "^0.10",
"@syndicate-lang/tsc": "*",
"rollup": "^2.60",
"rollup-plugin-sourcemaps": "^0.6",
"typescript": "^4.5"
"typescript": "^4.9"
}
}

View File

@ -2,24 +2,17 @@
# yarn lockfile v1
"@preserves/core@0.18.1", "@preserves/core@^0.18.1":
version "0.18.1"
resolved "https://registry.yarnpkg.com/@preserves/core/-/core-0.18.1.tgz#7e630fe7e38238bc73f3c0518142f5fe0ae2e819"
integrity sha512-b+YzeAS9vLky6PXF3SzYEcj2lBCnZ6hREdRpsksfzxEm+3IqmKk6daxpe0DsH0fgTVgMTq6+wQPOwAVwx0R6Ag==
"@preserves/core@0.995.200", "@preserves/core@^0.995.200":
version "0.995.200"
resolved "https://registry.yarnpkg.com/@preserves/core/-/core-0.995.200.tgz#65575cf8f9320e73b5d37fa9ac9d6881a33fd3a6"
integrity sha512-htZ2x+hltUpKoPsviWSuelzZW96po9zVSsN0RZEih60FahNX0R2LCqFJ6v5lyATuQ9oHALVi0w8w4rtf8oiAJw==
"@preserves/schema@0.19.1":
version "0.19.1"
resolved "https://registry.yarnpkg.com/@preserves/schema/-/schema-0.19.1.tgz#def22920fb63abfd8530d663cf72ef2220ae9637"
integrity sha512-/S5Ab3egmihNNuHa/cEHl4kL8RT4kdYjSXZQFDuCALU+jRUPoQQPA+a2m+2UvmWQQDE0P5Z54i6qb9OdT0OdZg==
"@preserves/schema@0.995.201":
version "0.995.201"
resolved "https://registry.yarnpkg.com/@preserves/schema/-/schema-0.995.201.tgz#827ad539afb0fdf68ba885ee3ff43db0fd473aa5"
integrity sha512-0SuhwOEAfxtrAeOTZ8V1yNEcHHHEbfUmoFawrF+vzTQFNZRz/X3LF1FM6wOiJlHtb7tBr4B+rHXX8jfNrqrdkA==
dependencies:
"@preserves/core" "^0.18.1"
"@types/glob" "^7.1"
"@types/minimatch" "^3.0"
chalk "^4.1"
chokidar "^3.5"
commander "^7.2"
glob "^7.1"
minimatch "^3.0"
"@preserves/core" "^0.995.200"
"@rollup/pluginutils@^3.0.9":
version "3.1.0"
@ -30,26 +23,25 @@
estree-walker "^1.0.1"
picomatch "^2.2.2"
"@syndicate-lang/compiler@^0.9.1":
version "0.9.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/compiler/-/compiler-0.9.1.tgz#6c89eabd2225eb711975e5e7611bc67c23606655"
integrity sha512-ZKvqxrbwFBZ7Y8IDlL+Amf3jl1fQ5+Sr3d3TWlSK6IKF5pGGh5/HLrPrkWJifE7N8wr5ASQtzI0IbF3ky9VzOQ==
"@syndicate-lang/compiler@^0.21.1":
version "0.21.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/compiler/-/compiler-0.21.1.tgz#b6316bac14d053c313b3442be68f532a60c47cb3"
integrity sha512-daaYh1i0XmoHt6eTtO4gWblfVKMjp9trwxqR62wUSONY3gtJ5Bn4hG3dMgfoMz2NvOWbJHaGz/95J0jRubITxA==
"@syndicate-lang/core@^0.9", "@syndicate-lang/core@^0.9.1":
version "0.9.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/core/-/core-0.9.1.tgz#54d6951c230a7c1f2b825ea378ac903520e1f4ec"
integrity sha512-Rd3nM4OfgYfU4EJX2TaCXTSH8ibhf9vMHLmKr1hqy8NL/uy/mEZyWULguPSxkZALWxdom+SaNWpBLmT50zYegw==
"@syndicate-lang/core@*", "@syndicate-lang/core@^0.32.0":
version "0.32.0"
resolved "https://registry.yarnpkg.com/@syndicate-lang/core/-/core-0.32.0.tgz#0efbbff176cac2969c2b6ba70a19965add3a2c61"
integrity sha512-ERVXk0W1xLaKvUa79Ek74YvqfBU543cUTb2GJvp76TP5k1jA97q9GzhddicS/s8lqu8SUC1+IXmKiJk0NX2TWQ==
dependencies:
"@preserves/core" "0.18.1"
"@preserves/schema" "0.19.1"
salty-crypto "0.3.1"
"@syndicate-lang/tsc@^0.9":
version "0.9.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/tsc/-/tsc-0.9.1.tgz#88c60cdddd4d56d517540a8d2f8272ead225f411"
integrity sha512-/2jkwvDNd24IXQek3bMPP+72IHIhl/P4Fz/OQ2Urs0vEnB5phw9dRKSxEbuOlwiVJj5yAPxAdKav+ve0h6Qn1g==
"@syndicate-lang/tsc@*":
version "0.34.0"
resolved "https://registry.yarnpkg.com/@syndicate-lang/tsc/-/tsc-0.34.0.tgz#1056fba7f639bbf436d0c2ecd2717edc4c1e612a"
integrity sha512-Ufj3xsdXMbMCavWsEkX/pFyXRpNIWRW+LFew1icD14DoSLqyBcoUEvskolOSgkSzC53tDjbd4/LXDVofIjIyUA==
dependencies:
"@syndicate-lang/compiler" "^0.9.1"
"@syndicate-lang/core" "^0.9.1"
"@syndicate-lang/compiler" "^0.21.1"
"@syndicate-lang/core" "^0.32.0"
glob "^7.1.6"
yargs "^16.2.0"
@ -58,44 +50,18 @@
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
"@types/glob@^7.1":
version "7.2.0"
resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb"
integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==
dependencies:
"@types/minimatch" "*"
"@types/node" "*"
"@types/minimatch@*", "@types/minimatch@^3.0":
version "3.0.5"
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40"
integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==
"@types/node@*":
version "16.11.12"
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.12.tgz#ac7fb693ac587ee182c3780c26eb65546a1a3c10"
integrity sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==
ansi-regex@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
ansi-styles@^4.0.0, ansi-styles@^4.1.0:
ansi-styles@^4.0.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
dependencies:
color-convert "^2.0.1"
anymatch@~3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
dependencies:
normalize-path "^3.0.0"
picomatch "^2.0.4"
atob@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
@ -106,11 +72,6 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
binary-extensions@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
@ -119,36 +80,6 @@ brace-expansion@^1.1.7:
balanced-match "^1.0.0"
concat-map "0.0.1"
braces@~3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
dependencies:
fill-range "^7.0.1"
chalk@^4.1:
version "4.1.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
dependencies:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
chokidar@^3.5:
version "3.5.2"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75"
integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==
dependencies:
anymatch "~3.1.2"
braces "~3.0.2"
glob-parent "~5.1.2"
is-binary-path "~2.1.0"
is-glob "~4.0.1"
normalize-path "~3.0.0"
readdirp "~3.6.0"
optionalDependencies:
fsevents "~2.3.2"
cliui@^7.0.2:
version "7.0.4"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
@ -170,20 +101,15 @@ color-name@~1.1.4:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
commander@^7.2:
version "7.2.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
decode-uri-component@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
version "0.2.2"
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9"
integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==
emoji-regex@^8.0.0:
version "8.0.0"
@ -191,65 +117,46 @@ emoji-regex@^8.0.0:
integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
escalade@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
version "3.1.2"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27"
integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==
estree-walker@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700"
integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==
fill-range@^7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
dependencies:
to-regex-range "^5.0.1"
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
fsevents@~2.3.2:
version "2.3.2"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
version "2.3.3"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
get-caller-file@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
glob-parent@~5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
dependencies:
is-glob "^4.0.1"
glob@^7.1, glob@^7.1.6:
version "7.2.0"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
glob@^7.1.6:
version "7.2.3"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
minimatch "^3.0.4"
minimatch "^3.1.1"
once "^1.3.0"
path-is-absolute "^1.0.0"
has-flag@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
dependencies:
once "^1.3.0"
wrappy "1"
@ -259,75 +166,39 @@ inherits@2:
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
is-binary-path@~2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
dependencies:
binary-extensions "^2.0.0"
is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
is-fullwidth-code-point@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
is-glob@^4.0.1, is-glob@~4.0.1:
version "4.0.3"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
dependencies:
is-extglob "^2.1.1"
is-number@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
minimatch@^3.0, minimatch@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
minimatch@^3.1.1:
version "3.1.2"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
dependencies:
brace-expansion "^1.1.7"
normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
once@^1.3.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
dependencies:
wrappy "1"
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2:
version "2.3.0"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==
readdirp@~3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
dependencies:
picomatch "^2.2.1"
picomatch@^2.2.2:
version "2.3.1"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
require-directory@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
rollup-plugin-sourcemaps@^0.6:
version "0.6.3"
@ -338,12 +209,17 @@ rollup-plugin-sourcemaps@^0.6:
source-map-resolve "^0.6.0"
rollup@^2.60:
version "2.61.0"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.61.0.tgz#ccd927bcd6cc0c78a4689c918627a717977208f4"
integrity sha512-teQ+T1mUYbyvGyUavCodiyA9hD4DxwYZJwr/qehZGhs1Z49vsmzelMVYMxGU4ZhGRKxYPupHuz5yzm/wj7VpWA==
version "2.79.1"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7"
integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==
optionalDependencies:
fsevents "~2.3.2"
salty-crypto@0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/salty-crypto/-/salty-crypto-0.3.1.tgz#1242cd948d8152aff104d0945980996b1602ba0e"
integrity sha512-dCbF8/UzMV8oXPmMCHWzSp7u8G6NA+pHbaFBVqVgLVBiyxuwVn9iPbyt9WXT0EoXfL9sKt7U1mV+bgsGw5cV7A==
source-map-resolve@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2"
@ -368,24 +244,10 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1:
dependencies:
ansi-regex "^5.0.1"
supports-color@^7.1.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
dependencies:
has-flag "^4.0.0"
to-regex-range@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
dependencies:
is-number "^7.0.0"
typescript@^4.5:
version "4.5.3"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.3.tgz#afaa858e68c7103317d89eb90c5d8906268d353c"
integrity sha512-eVYaEHALSt+s9LbvgEv4Ef+Tdq7hBiIZgii12xXJnukryt3pMgJf6aKhoCZ3FWQsu6sydEnkg11fYXLzhLBjeQ==
typescript@^4.9:
version "4.9.5"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a"
integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
wrap-ansi@^7.0.0:
version "7.0.0"
@ -399,7 +261,7 @@ wrap-ansi@^7.0.0:
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
y18n@^5.0.5:
version "5.0.8"

View File

@ -7,7 +7,4 @@
<h1>Look in the JavaScript console for output.</h1>
<main id="main">
</main>
<script>
Main.boot();
</script>
</html>

View File

@ -12,10 +12,11 @@
"author": "Tony Garnock-Jones <tonyg@leastfixedpoint.com>",
"license": "GPL-3.0+",
"dependencies": {
"@syndicate-lang/core": "^0.10"
"@preserves/core": "^0.995.200",
"@syndicate-lang/core": "*"
},
"devDependencies": {
"@syndicate-lang/syndicatec": "^0.10",
"@syndicate-lang/syndicatec": "*",
"rollup": "^2.60",
"rollup-plugin-sourcemaps": "^0.6"
}

View File

@ -4,12 +4,10 @@
import { N } from './protocol.js';
import * as Box from './box.js';
import * as Client from './client.js';
import { Actor, Dataspace, Turn } from '@syndicate-lang/core';
import { Dataspace } from '@syndicate-lang/core';
console.time('box-and-client-' + N.toString());
Actor.boot(() => {
Turn.activeFacet.preventInertCheck();
const ds = create new Dataspace();
Dataspace.boot(ds => {
Box.boot(ds);
Client.boot(ds, () => console.timeEnd('box-and-client-' + N.toString()));
});

View File

@ -2,24 +2,10 @@
# yarn lockfile v1
"@preserves/core@0.18.1", "@preserves/core@^0.18.1":
version "0.18.1"
resolved "https://registry.yarnpkg.com/@preserves/core/-/core-0.18.1.tgz#7e630fe7e38238bc73f3c0518142f5fe0ae2e819"
integrity sha512-b+YzeAS9vLky6PXF3SzYEcj2lBCnZ6hREdRpsksfzxEm+3IqmKk6daxpe0DsH0fgTVgMTq6+wQPOwAVwx0R6Ag==
"@preserves/schema@0.19.1":
version "0.19.1"
resolved "https://registry.yarnpkg.com/@preserves/schema/-/schema-0.19.1.tgz#def22920fb63abfd8530d663cf72ef2220ae9637"
integrity sha512-/S5Ab3egmihNNuHa/cEHl4kL8RT4kdYjSXZQFDuCALU+jRUPoQQPA+a2m+2UvmWQQDE0P5Z54i6qb9OdT0OdZg==
dependencies:
"@preserves/core" "^0.18.1"
"@types/glob" "^7.1"
"@types/minimatch" "^3.0"
chalk "^4.1"
chokidar "^3.5"
commander "^7.2"
glob "^7.1"
minimatch "^3.0"
"@preserves/core@0.995.200":
version "0.995.200"
resolved "https://registry.yarnpkg.com/@preserves/core/-/core-0.995.200.tgz#65575cf8f9320e73b5d37fa9ac9d6881a33fd3a6"
integrity sha512-htZ2x+hltUpKoPsviWSuelzZW96po9zVSsN0RZEih60FahNX0R2LCqFJ6v5lyATuQ9oHALVi0w8w4rtf8oiAJw==
"@rollup/pluginutils@^3.0.9":
version "3.1.0"
@ -30,26 +16,25 @@
estree-walker "^1.0.1"
picomatch "^2.2.2"
"@syndicate-lang/compiler@^0.9.1":
version "0.9.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/compiler/-/compiler-0.9.1.tgz#6c89eabd2225eb711975e5e7611bc67c23606655"
integrity sha512-ZKvqxrbwFBZ7Y8IDlL+Amf3jl1fQ5+Sr3d3TWlSK6IKF5pGGh5/HLrPrkWJifE7N8wr5ASQtzI0IbF3ky9VzOQ==
"@syndicate-lang/compiler@^0.21.1":
version "0.21.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/compiler/-/compiler-0.21.1.tgz#b6316bac14d053c313b3442be68f532a60c47cb3"
integrity sha512-daaYh1i0XmoHt6eTtO4gWblfVKMjp9trwxqR62wUSONY3gtJ5Bn4hG3dMgfoMz2NvOWbJHaGz/95J0jRubITxA==
"@syndicate-lang/core@^0.9", "@syndicate-lang/core@^0.9.1":
version "0.9.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/core/-/core-0.9.1.tgz#54d6951c230a7c1f2b825ea378ac903520e1f4ec"
integrity sha512-Rd3nM4OfgYfU4EJX2TaCXTSH8ibhf9vMHLmKr1hqy8NL/uy/mEZyWULguPSxkZALWxdom+SaNWpBLmT50zYegw==
"@syndicate-lang/core@*", "@syndicate-lang/core@^0.32.0":
version "0.32.0"
resolved "https://registry.yarnpkg.com/@syndicate-lang/core/-/core-0.32.0.tgz#0efbbff176cac2969c2b6ba70a19965add3a2c61"
integrity sha512-ERVXk0W1xLaKvUa79Ek74YvqfBU543cUTb2GJvp76TP5k1jA97q9GzhddicS/s8lqu8SUC1+IXmKiJk0NX2TWQ==
dependencies:
"@preserves/core" "0.18.1"
"@preserves/schema" "0.19.1"
salty-crypto "0.3.1"
"@syndicate-lang/syndicatec@^0.9":
version "0.9.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/syndicatec/-/syndicatec-0.9.1.tgz#ca74009c00cf564626714ebe4b1a527be43c4699"
integrity sha512-EkFiBsSIdC6E3fBs0dP9t3wI4yGwzVVgSypYHAJ9ljLtjufX5FMkWZdJ4EIW/4E9yPy6sw3AezufMcAjxuMc0Q==
"@syndicate-lang/syndicatec@*":
version "0.34.0"
resolved "https://registry.yarnpkg.com/@syndicate-lang/syndicatec/-/syndicatec-0.34.0.tgz#f3b88507b633552fe1f41f24def5121c0cafeaeb"
integrity sha512-h3MPifJdXZTS3JVcvRG8GXMJMPBH4RYmJ3B7c2sjM826Pf6O8zT47Vuv1y2WyD9PS8BiSCI01uOR0W5AVJJT5w==
dependencies:
"@syndicate-lang/compiler" "^0.9.1"
"@syndicate-lang/core" "^0.9.1"
"@syndicate-lang/compiler" "^0.21.1"
"@syndicate-lang/core" "^0.32.0"
glob "^7.1.6"
yargs "^16.2.0"
@ -58,44 +43,18 @@
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
"@types/glob@^7.1":
version "7.2.0"
resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb"
integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==
dependencies:
"@types/minimatch" "*"
"@types/node" "*"
"@types/minimatch@*", "@types/minimatch@^3.0":
version "3.0.5"
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40"
integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==
"@types/node@*":
version "16.11.12"
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.12.tgz#ac7fb693ac587ee182c3780c26eb65546a1a3c10"
integrity sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==
ansi-regex@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
ansi-styles@^4.0.0, ansi-styles@^4.1.0:
ansi-styles@^4.0.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
dependencies:
color-convert "^2.0.1"
anymatch@~3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
dependencies:
normalize-path "^3.0.0"
picomatch "^2.0.4"
atob@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
@ -106,11 +65,6 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
binary-extensions@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
@ -119,36 +73,6 @@ brace-expansion@^1.1.7:
balanced-match "^1.0.0"
concat-map "0.0.1"
braces@~3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
dependencies:
fill-range "^7.0.1"
chalk@^4.1:
version "4.1.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
dependencies:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
chokidar@^3.5:
version "3.5.2"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75"
integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==
dependencies:
anymatch "~3.1.2"
braces "~3.0.2"
glob-parent "~5.1.2"
is-binary-path "~2.1.0"
is-glob "~4.0.1"
normalize-path "~3.0.0"
readdirp "~3.6.0"
optionalDependencies:
fsevents "~2.3.2"
cliui@^7.0.2:
version "7.0.4"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
@ -170,20 +94,15 @@ color-name@~1.1.4:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
commander@^7.2:
version "7.2.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
decode-uri-component@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
version "0.2.2"
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9"
integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==
emoji-regex@^8.0.0:
version "8.0.0"
@ -191,65 +110,46 @@ emoji-regex@^8.0.0:
integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
escalade@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
version "3.1.2"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27"
integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==
estree-walker@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700"
integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==
fill-range@^7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
dependencies:
to-regex-range "^5.0.1"
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
fsevents@~2.3.2:
version "2.3.2"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
version "2.3.3"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
get-caller-file@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
glob-parent@~5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
dependencies:
is-glob "^4.0.1"
glob@^7.1, glob@^7.1.6:
version "7.2.0"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
glob@^7.1.6:
version "7.2.3"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
minimatch "^3.0.4"
minimatch "^3.1.1"
once "^1.3.0"
path-is-absolute "^1.0.0"
has-flag@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
dependencies:
once "^1.3.0"
wrappy "1"
@ -259,75 +159,39 @@ inherits@2:
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
is-binary-path@~2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
dependencies:
binary-extensions "^2.0.0"
is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
is-fullwidth-code-point@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
is-glob@^4.0.1, is-glob@~4.0.1:
version "4.0.3"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
dependencies:
is-extglob "^2.1.1"
is-number@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
minimatch@^3.0, minimatch@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
minimatch@^3.1.1:
version "3.1.2"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
dependencies:
brace-expansion "^1.1.7"
normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
once@^1.3.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
dependencies:
wrappy "1"
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2:
version "2.3.0"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==
readdirp@~3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
dependencies:
picomatch "^2.2.1"
picomatch@^2.2.2:
version "2.3.1"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
require-directory@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
rollup-plugin-sourcemaps@^0.6:
version "0.6.3"
@ -338,12 +202,17 @@ rollup-plugin-sourcemaps@^0.6:
source-map-resolve "^0.6.0"
rollup@^2.60:
version "2.61.0"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.61.0.tgz#ccd927bcd6cc0c78a4689c918627a717977208f4"
integrity sha512-teQ+T1mUYbyvGyUavCodiyA9hD4DxwYZJwr/qehZGhs1Z49vsmzelMVYMxGU4ZhGRKxYPupHuz5yzm/wj7VpWA==
version "2.79.1"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7"
integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==
optionalDependencies:
fsevents "~2.3.2"
salty-crypto@0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/salty-crypto/-/salty-crypto-0.3.1.tgz#1242cd948d8152aff104d0945980996b1602ba0e"
integrity sha512-dCbF8/UzMV8oXPmMCHWzSp7u8G6NA+pHbaFBVqVgLVBiyxuwVn9iPbyt9WXT0EoXfL9sKt7U1mV+bgsGw5cV7A==
source-map-resolve@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2"
@ -368,20 +237,6 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1:
dependencies:
ansi-regex "^5.0.1"
supports-color@^7.1.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
dependencies:
has-flag "^4.0.0"
to-regex-range@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
dependencies:
is-number "^7.0.0"
wrap-ansi@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
@ -394,7 +249,7 @@ wrap-ansi@^7.0.0:
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
y18n@^5.0.5:
version "5.0.8"

View File

@ -12,12 +12,14 @@
"author": "Tony Garnock-Jones <tonyg@leastfixedpoint.com>",
"license": "GPL-3.0+",
"dependencies": {
"@syndicate-lang/core": "^0.10"
"@preserves/core": "^0.995.200",
"@preserves/schema": "^0.995.201",
"@syndicate-lang/core": "*"
},
"devDependencies": {
"@syndicate-lang/syndicatec": "^0.10",
"@syndicate-lang/syndicatec": "*",
"rollup": "^2.60",
"rollup-plugin-sourcemaps": "^0.6",
"typescript": "^4.5"
"typescript": "^4.9"
}
}

View File

@ -2,24 +2,17 @@
# yarn lockfile v1
"@preserves/core@0.18.1", "@preserves/core@^0.18.1":
version "0.18.1"
resolved "https://registry.yarnpkg.com/@preserves/core/-/core-0.18.1.tgz#7e630fe7e38238bc73f3c0518142f5fe0ae2e819"
integrity sha512-b+YzeAS9vLky6PXF3SzYEcj2lBCnZ6hREdRpsksfzxEm+3IqmKk6daxpe0DsH0fgTVgMTq6+wQPOwAVwx0R6Ag==
"@preserves/core@0.995.200", "@preserves/core@^0.995.200":
version "0.995.200"
resolved "https://registry.yarnpkg.com/@preserves/core/-/core-0.995.200.tgz#65575cf8f9320e73b5d37fa9ac9d6881a33fd3a6"
integrity sha512-htZ2x+hltUpKoPsviWSuelzZW96po9zVSsN0RZEih60FahNX0R2LCqFJ6v5lyATuQ9oHALVi0w8w4rtf8oiAJw==
"@preserves/schema@0.19.1":
version "0.19.1"
resolved "https://registry.yarnpkg.com/@preserves/schema/-/schema-0.19.1.tgz#def22920fb63abfd8530d663cf72ef2220ae9637"
integrity sha512-/S5Ab3egmihNNuHa/cEHl4kL8RT4kdYjSXZQFDuCALU+jRUPoQQPA+a2m+2UvmWQQDE0P5Z54i6qb9OdT0OdZg==
"@preserves/schema@0.995.201":
version "0.995.201"
resolved "https://registry.yarnpkg.com/@preserves/schema/-/schema-0.995.201.tgz#827ad539afb0fdf68ba885ee3ff43db0fd473aa5"
integrity sha512-0SuhwOEAfxtrAeOTZ8V1yNEcHHHEbfUmoFawrF+vzTQFNZRz/X3LF1FM6wOiJlHtb7tBr4B+rHXX8jfNrqrdkA==
dependencies:
"@preserves/core" "^0.18.1"
"@types/glob" "^7.1"
"@types/minimatch" "^3.0"
chalk "^4.1"
chokidar "^3.5"
commander "^7.2"
glob "^7.1"
minimatch "^3.0"
"@preserves/core" "^0.995.200"
"@rollup/pluginutils@^3.0.9":
version "3.1.0"
@ -30,26 +23,25 @@
estree-walker "^1.0.1"
picomatch "^2.2.2"
"@syndicate-lang/compiler@^0.9.1":
version "0.9.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/compiler/-/compiler-0.9.1.tgz#6c89eabd2225eb711975e5e7611bc67c23606655"
integrity sha512-ZKvqxrbwFBZ7Y8IDlL+Amf3jl1fQ5+Sr3d3TWlSK6IKF5pGGh5/HLrPrkWJifE7N8wr5ASQtzI0IbF3ky9VzOQ==
"@syndicate-lang/compiler@^0.21.1":
version "0.21.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/compiler/-/compiler-0.21.1.tgz#b6316bac14d053c313b3442be68f532a60c47cb3"
integrity sha512-daaYh1i0XmoHt6eTtO4gWblfVKMjp9trwxqR62wUSONY3gtJ5Bn4hG3dMgfoMz2NvOWbJHaGz/95J0jRubITxA==
"@syndicate-lang/core@^0.9", "@syndicate-lang/core@^0.9.1":
version "0.9.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/core/-/core-0.9.1.tgz#54d6951c230a7c1f2b825ea378ac903520e1f4ec"
integrity sha512-Rd3nM4OfgYfU4EJX2TaCXTSH8ibhf9vMHLmKr1hqy8NL/uy/mEZyWULguPSxkZALWxdom+SaNWpBLmT50zYegw==
"@syndicate-lang/core@*", "@syndicate-lang/core@^0.32.0":
version "0.32.0"
resolved "https://registry.yarnpkg.com/@syndicate-lang/core/-/core-0.32.0.tgz#0efbbff176cac2969c2b6ba70a19965add3a2c61"
integrity sha512-ERVXk0W1xLaKvUa79Ek74YvqfBU543cUTb2GJvp76TP5k1jA97q9GzhddicS/s8lqu8SUC1+IXmKiJk0NX2TWQ==
dependencies:
"@preserves/core" "0.18.1"
"@preserves/schema" "0.19.1"
salty-crypto "0.3.1"
"@syndicate-lang/syndicatec@^0.9":
version "0.9.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/syndicatec/-/syndicatec-0.9.1.tgz#ca74009c00cf564626714ebe4b1a527be43c4699"
integrity sha512-EkFiBsSIdC6E3fBs0dP9t3wI4yGwzVVgSypYHAJ9ljLtjufX5FMkWZdJ4EIW/4E9yPy6sw3AezufMcAjxuMc0Q==
"@syndicate-lang/syndicatec@*":
version "0.34.0"
resolved "https://registry.yarnpkg.com/@syndicate-lang/syndicatec/-/syndicatec-0.34.0.tgz#f3b88507b633552fe1f41f24def5121c0cafeaeb"
integrity sha512-h3MPifJdXZTS3JVcvRG8GXMJMPBH4RYmJ3B7c2sjM826Pf6O8zT47Vuv1y2WyD9PS8BiSCI01uOR0W5AVJJT5w==
dependencies:
"@syndicate-lang/compiler" "^0.9.1"
"@syndicate-lang/core" "^0.9.1"
"@syndicate-lang/compiler" "^0.21.1"
"@syndicate-lang/core" "^0.32.0"
glob "^7.1.6"
yargs "^16.2.0"
@ -58,44 +50,18 @@
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
"@types/glob@^7.1":
version "7.2.0"
resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb"
integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==
dependencies:
"@types/minimatch" "*"
"@types/node" "*"
"@types/minimatch@*", "@types/minimatch@^3.0":
version "3.0.5"
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40"
integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==
"@types/node@*":
version "16.11.12"
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.12.tgz#ac7fb693ac587ee182c3780c26eb65546a1a3c10"
integrity sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==
ansi-regex@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
ansi-styles@^4.0.0, ansi-styles@^4.1.0:
ansi-styles@^4.0.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
dependencies:
color-convert "^2.0.1"
anymatch@~3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
dependencies:
normalize-path "^3.0.0"
picomatch "^2.0.4"
atob@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
@ -106,11 +72,6 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
binary-extensions@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
@ -119,36 +80,6 @@ brace-expansion@^1.1.7:
balanced-match "^1.0.0"
concat-map "0.0.1"
braces@~3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
dependencies:
fill-range "^7.0.1"
chalk@^4.1:
version "4.1.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
dependencies:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
chokidar@^3.5:
version "3.5.2"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75"
integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==
dependencies:
anymatch "~3.1.2"
braces "~3.0.2"
glob-parent "~5.1.2"
is-binary-path "~2.1.0"
is-glob "~4.0.1"
normalize-path "~3.0.0"
readdirp "~3.6.0"
optionalDependencies:
fsevents "~2.3.2"
cliui@^7.0.2:
version "7.0.4"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
@ -170,20 +101,15 @@ color-name@~1.1.4:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
commander@^7.2:
version "7.2.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
decode-uri-component@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
version "0.2.2"
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9"
integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==
emoji-regex@^8.0.0:
version "8.0.0"
@ -191,65 +117,46 @@ emoji-regex@^8.0.0:
integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
escalade@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
version "3.1.2"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27"
integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==
estree-walker@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700"
integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==
fill-range@^7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
dependencies:
to-regex-range "^5.0.1"
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
fsevents@~2.3.2:
version "2.3.2"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
version "2.3.3"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
get-caller-file@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
glob-parent@~5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
dependencies:
is-glob "^4.0.1"
glob@^7.1, glob@^7.1.6:
version "7.2.0"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
glob@^7.1.6:
version "7.2.3"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
minimatch "^3.0.4"
minimatch "^3.1.1"
once "^1.3.0"
path-is-absolute "^1.0.0"
has-flag@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
dependencies:
once "^1.3.0"
wrappy "1"
@ -259,75 +166,39 @@ inherits@2:
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
is-binary-path@~2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
dependencies:
binary-extensions "^2.0.0"
is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
is-fullwidth-code-point@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
is-glob@^4.0.1, is-glob@~4.0.1:
version "4.0.3"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
dependencies:
is-extglob "^2.1.1"
is-number@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
minimatch@^3.0, minimatch@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
minimatch@^3.1.1:
version "3.1.2"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
dependencies:
brace-expansion "^1.1.7"
normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
once@^1.3.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
dependencies:
wrappy "1"
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2:
version "2.3.0"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==
readdirp@~3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
dependencies:
picomatch "^2.2.1"
picomatch@^2.2.2:
version "2.3.1"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
require-directory@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
rollup-plugin-sourcemaps@^0.6:
version "0.6.3"
@ -338,12 +209,17 @@ rollup-plugin-sourcemaps@^0.6:
source-map-resolve "^0.6.0"
rollup@^2.60:
version "2.61.0"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.61.0.tgz#ccd927bcd6cc0c78a4689c918627a717977208f4"
integrity sha512-teQ+T1mUYbyvGyUavCodiyA9hD4DxwYZJwr/qehZGhs1Z49vsmzelMVYMxGU4ZhGRKxYPupHuz5yzm/wj7VpWA==
version "2.79.1"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7"
integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==
optionalDependencies:
fsevents "~2.3.2"
salty-crypto@0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/salty-crypto/-/salty-crypto-0.3.1.tgz#1242cd948d8152aff104d0945980996b1602ba0e"
integrity sha512-dCbF8/UzMV8oXPmMCHWzSp7u8G6NA+pHbaFBVqVgLVBiyxuwVn9iPbyt9WXT0EoXfL9sKt7U1mV+bgsGw5cV7A==
source-map-resolve@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2"
@ -368,24 +244,10 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1:
dependencies:
ansi-regex "^5.0.1"
supports-color@^7.1.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
dependencies:
has-flag "^4.0.0"
to-regex-range@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
dependencies:
is-number "^7.0.0"
typescript@^4.5:
version "4.5.3"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.3.tgz#afaa858e68c7103317d89eb90c5d8906268d353c"
integrity sha512-eVYaEHALSt+s9LbvgEv4Ef+Tdq7hBiIZgii12xXJnukryt3pMgJf6aKhoCZ3FWQsu6sydEnkg11fYXLzhLBjeQ==
typescript@^4.9:
version "4.9.5"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a"
integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
wrap-ansi@^7.0.0:
version "7.0.0"
@ -399,7 +261,7 @@ wrap-ansi@^7.0.0:
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
y18n@^5.0.5:
version "5.0.8"

View File

@ -0,0 +1,11 @@
#!/usr/bin/env -S node -r @syndicate-lang/loader
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2023 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
const { stringify } = require('@syndicate-lang/core');
const { service } = require('@syndicate-lang/service');
service(args => {
console.log('+', stringify(args));
on stop { console.log('-', stringify(args)); }
});

View File

@ -0,0 +1,9 @@
<require-service <daemon example>>
<daemon example {
argv: "./example.js"
protocol: application/syndicate
}>
? <service-object <daemon example> ?cap> [
$cap += =here-is-your-configuration!
$cap += =here-is-another-configuration!
]

View File

@ -3,6 +3,7 @@
<meta charset=utf-8>
<meta name="viewport" content="width=device-width, initial-scale=0.67, maximum-scale=0.67, user-scalable=no">
<link href="css/style.css" rel="stylesheet" type="text/css">
<script src="node_modules/@preserves/core/dist/preserves.js"></script>
<script src="node_modules/@syndicate-lang/core/dist/syndicate.js"></script>
<script src="node_modules/@syndicate-lang/html/dist/syndicate-html.js"></script>
<script src="node_modules/@syndicate-lang/timer/dist/syndicate-timer.js"></script>

View File

@ -12,15 +12,17 @@
"author": "Tony Garnock-Jones <tonyg@leastfixedpoint.com>",
"license": "GPL-3.0+",
"dependencies": {
"@syndicate-lang/core": "^0.10",
"@syndicate-lang/html": "^0.10",
"@syndicate-lang/timer": "^0.10"
"@preserves/core": "^0.995.200",
"@preserves/schema": "^0.995.201",
"@syndicate-lang/core": "*",
"@syndicate-lang/html": "*",
"@syndicate-lang/timer": "*"
},
"devDependencies": {
"@syndicate-lang/ts-plugin": "^0.10",
"@syndicate-lang/tsc": "^0.10",
"@syndicate-lang/ts-plugin": "*",
"@syndicate-lang/tsc": "*",
"rollup": "^2.60",
"rollup-plugin-sourcemaps": "^0.6",
"typescript": "^4.5"
"typescript": "^4.9"
}
}

View File

@ -1,7 +1,7 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
import { Record, Dataspace, Double, floatValue, Ref, stringify } from '@syndicate-lang/core';
import { Turn, Dataspace, Double, floatValue, Ref, Facet } from '@syndicate-lang/core';
import { boot as bootHtml, WindowEvent, template, Anchor } from '@syndicate-lang/html';
import { boot as bootTimer, PeriodicTick } from '@syndicate-lang/timer';
@ -86,9 +86,7 @@ function spawnGame(mainDs: Ref) {
on (ypos.value > BOARD_HEIGHT - FLAPPY_HEIGHT) {
ypos.value = BOARD_HEIGHT - FLAPPY_HEIGHT;
react {
assert GameOver();
}
assert GameOver();
}
}
@ -109,12 +107,12 @@ function spawnGame(mainDs: Ref) {
on message WindowEvent('+keypress', $_e) => yvel.value = -10;
on message WindowEvent('+click', $_e) => yvel.value = -10;
const ms_per_tick = 1000.0 / 60;
const ms_per_tick_d = Double(ms_per_tick);
on message PeriodicTick(ms_per_tick_d) => {
xpos.value += 0.15 * ms_per_tick;
const seconds_per_tick = 1 / 60;
const seconds_per_tick_d = Double(seconds_per_tick);
on message PeriodicTick(seconds_per_tick_d) => {
xpos.value += 150 * seconds_per_tick;
ypos.value = (ypos.value + yvel.value);
yvel.value += ms_per_tick * 0.05;
yvel.value += seconds_per_tick * 50;
}
}
}
@ -137,60 +135,61 @@ function spawnGame(mainDs: Ref) {
spawn linked named 'pipe-factory' {
field nextPipe: number = 0;
at gameDs {
on asserted Score(nextPipe.value) => spawnPipe(nextPipe.value++);
}
}
function spawnPipe(i: number) {
const xlocation = (i + 1) * 324;
spawn linked named ['pipe', i] {
let ui = new Anchor();
field xpos: number = xlocation;
const upperHeight =
Math.random() * (FIELD_HEIGHT - PILLAR_GAP - PILLAR_HEAD_HEIGHT * 6)
+ PILLAR_HEAD_HEIGHT * 3;
const lowerHeight = FIELD_HEIGHT - upperHeight - PILLAR_GAP;
stop on (xpos.value < -(PILLAR_WIDTH + FLAPPY_XPOS));
at gameDs {
on asserted Score(nextPipe.value) => {
react {
stop on (xpos.value <= 0) send message IncreaseScore();
}
on asserted Position($flappyXpos, _) =>
xpos.value = xlocation - floatValue(flappyXpos);
on asserted Position($xpos, $ypos) => {
if (touchingPillar(floatValue(xpos), floatValue(ypos))) {
react {
assert GameOver();
}
const pipeNumber = nextPipe.value++;
spawn linked named ['pipe', pipeNumber] {
runPipe(pipeNumber, Turn.activeFacet);
}
}
}
}
}
at mainDs {
assert ui.html(
'#board-area',
template`<div class="pillars">
<div class="pillar pillar-upper"
style="${`left: ${xpos.value + FLAPPY_XPOS}px; height: ${upperHeight}px;`}"></div>
<div class="pillar pillar-lower"
style="${`left: ${xpos.value + FLAPPY_XPOS}px; height: ${lowerHeight}px;`}"></div>
</div>`);
}
function runPipe(i: number, mainPipeFacet: Facet) {
const xlocation = (i + 1) * 324;
function touchingPillar(xpos: number, ypos: number): boolean {
const inHorizontalRange =
(xpos + FLAPPY_WIDTH >= xlocation) && (xpos <= xlocation + PILLAR_WIDTH);
const aboveGapTop = (ypos <= upperHeight);
const belowGapBottom = (ypos + FLAPPY_HEIGHT >= upperHeight + PILLAR_GAP);
return inHorizontalRange && (aboveGapTop || belowGapBottom);
let ui = new Anchor();
field xpos: number = xlocation;
const upperHeight =
Math.random() * (FIELD_HEIGHT - PILLAR_GAP - PILLAR_HEAD_HEIGHT * 6)
+ PILLAR_HEAD_HEIGHT * 3;
const lowerHeight = FIELD_HEIGHT - upperHeight - PILLAR_GAP;
stop mainPipeFacet on (xpos.value < -(PILLAR_WIDTH + FLAPPY_XPOS));
at gameDs {
once (xpos.value <= 0) send message IncreaseScore();
on asserted Position($flappyXpos, _) =>
xpos.value = xlocation - floatValue(flappyXpos);
on asserted Position($xpos, $ypos) => {
if (touchingPillar(floatValue(xpos), floatValue(ypos))) {
assert GameOver();
}
}
}
at mainDs {
assert ui.html(
'#board-area',
template`<div class="pillars">
<div class="pillar pillar-upper"
style="${`left: ${xpos.value + FLAPPY_XPOS}px; height: ${upperHeight}px;`}"></div>
<div class="pillar pillar-lower"
style="${`left: ${xpos.value + FLAPPY_XPOS}px; height: ${lowerHeight}px;`}"></div>
</div>`);
}
function touchingPillar(xpos: number, ypos: number): boolean {
const inHorizontalRange =
(xpos + FLAPPY_WIDTH >= xlocation) && (xpos <= xlocation + PILLAR_WIDTH);
const aboveGapTop = (ypos <= upperHeight);
const belowGapBottom = (ypos + FLAPPY_HEIGHT >= upperHeight + PILLAR_GAP);
return inHorizontalRange && (aboveGapTop || belowGapBottom);
}
}
}
}

View File

@ -2,24 +2,17 @@
# yarn lockfile v1
"@preserves/core@0.18.1", "@preserves/core@^0.18.1":
version "0.18.1"
resolved "https://registry.yarnpkg.com/@preserves/core/-/core-0.18.1.tgz#7e630fe7e38238bc73f3c0518142f5fe0ae2e819"
integrity sha512-b+YzeAS9vLky6PXF3SzYEcj2lBCnZ6hREdRpsksfzxEm+3IqmKk6daxpe0DsH0fgTVgMTq6+wQPOwAVwx0R6Ag==
"@preserves/core@0.995.200", "@preserves/core@^0.995.200":
version "0.995.200"
resolved "https://registry.yarnpkg.com/@preserves/core/-/core-0.995.200.tgz#65575cf8f9320e73b5d37fa9ac9d6881a33fd3a6"
integrity sha512-htZ2x+hltUpKoPsviWSuelzZW96po9zVSsN0RZEih60FahNX0R2LCqFJ6v5lyATuQ9oHALVi0w8w4rtf8oiAJw==
"@preserves/schema@0.19.1":
version "0.19.1"
resolved "https://registry.yarnpkg.com/@preserves/schema/-/schema-0.19.1.tgz#def22920fb63abfd8530d663cf72ef2220ae9637"
integrity sha512-/S5Ab3egmihNNuHa/cEHl4kL8RT4kdYjSXZQFDuCALU+jRUPoQQPA+a2m+2UvmWQQDE0P5Z54i6qb9OdT0OdZg==
"@preserves/schema@0.995.201":
version "0.995.201"
resolved "https://registry.yarnpkg.com/@preserves/schema/-/schema-0.995.201.tgz#827ad539afb0fdf68ba885ee3ff43db0fd473aa5"
integrity sha512-0SuhwOEAfxtrAeOTZ8V1yNEcHHHEbfUmoFawrF+vzTQFNZRz/X3LF1FM6wOiJlHtb7tBr4B+rHXX8jfNrqrdkA==
dependencies:
"@preserves/core" "^0.18.1"
"@types/glob" "^7.1"
"@types/minimatch" "^3.0"
chalk "^4.1"
chokidar "^3.5"
commander "^7.2"
glob "^7.1"
minimatch "^3.0"
"@preserves/core" "^0.995.200"
"@rollup/pluginutils@^3.0.9":
version "3.1.0"
@ -30,48 +23,47 @@
estree-walker "^1.0.1"
picomatch "^2.2.2"
"@syndicate-lang/compiler@^0.9.1":
version "0.9.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/compiler/-/compiler-0.9.1.tgz#6c89eabd2225eb711975e5e7611bc67c23606655"
integrity sha512-ZKvqxrbwFBZ7Y8IDlL+Amf3jl1fQ5+Sr3d3TWlSK6IKF5pGGh5/HLrPrkWJifE7N8wr5ASQtzI0IbF3ky9VzOQ==
"@syndicate-lang/compiler@^0.21.1":
version "0.21.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/compiler/-/compiler-0.21.1.tgz#b6316bac14d053c313b3442be68f532a60c47cb3"
integrity sha512-daaYh1i0XmoHt6eTtO4gWblfVKMjp9trwxqR62wUSONY3gtJ5Bn4hG3dMgfoMz2NvOWbJHaGz/95J0jRubITxA==
"@syndicate-lang/core@^0.9", "@syndicate-lang/core@^0.9.1":
version "0.9.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/core/-/core-0.9.1.tgz#54d6951c230a7c1f2b825ea378ac903520e1f4ec"
integrity sha512-Rd3nM4OfgYfU4EJX2TaCXTSH8ibhf9vMHLmKr1hqy8NL/uy/mEZyWULguPSxkZALWxdom+SaNWpBLmT50zYegw==
"@syndicate-lang/core@*", "@syndicate-lang/core@^0.32.0":
version "0.32.0"
resolved "https://registry.yarnpkg.com/@syndicate-lang/core/-/core-0.32.0.tgz#0efbbff176cac2969c2b6ba70a19965add3a2c61"
integrity sha512-ERVXk0W1xLaKvUa79Ek74YvqfBU543cUTb2GJvp76TP5k1jA97q9GzhddicS/s8lqu8SUC1+IXmKiJk0NX2TWQ==
dependencies:
"@preserves/core" "0.18.1"
"@preserves/schema" "0.19.1"
salty-crypto "0.3.1"
"@syndicate-lang/html@^0.9":
version "0.9.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/html/-/html-0.9.1.tgz#0af0e6d46d54d2368999173714344a7997ce7749"
integrity sha512-hctwoEPTNHvURFs8gzPo4pBq/8Is49ZSYqgv2paIhwDuuGQs1FgND4+EDRpo8kOeeZ8MhCrQmxLFJf2L0mcTzA==
"@syndicate-lang/html@*":
version "0.33.0"
resolved "https://registry.yarnpkg.com/@syndicate-lang/html/-/html-0.33.0.tgz#c53e6bf8a52b17c3747f4270713a8c9234f984af"
integrity sha512-xhN6NZOgLxlAQOyWG0JAgtyF1e1yQvrpNh5RBAPnucFYC024yo1ggZ08+KiaulhsoIKvRbBE6FU6p9dDm4/tpQ==
dependencies:
"@syndicate-lang/core" "^0.9.1"
"@syndicate-lang/core" "^0.32.0"
"@syndicate-lang/timer@^0.9":
version "0.9.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/timer/-/timer-0.9.1.tgz#fabbae830c3c6bedb828d9f8b545077795c3b68c"
integrity sha512-irzohAEKaZsMT3LJToK7uWOYXLqI9MB5VskucrUpNrkgIbj8vhtoWcEubf21CiCbAVyrow2DF57xYB1ZsHolWQ==
"@syndicate-lang/timer@*":
version "0.33.0"
resolved "https://registry.yarnpkg.com/@syndicate-lang/timer/-/timer-0.33.0.tgz#cdb38ebe777332ec58a5b0b9483db809275a61de"
integrity sha512-cBon+nk8zvNeU4zC6tg7nhgJnmrRoXHYE140UK3gscNFcg1LZ1d7q9WxfVTzFtRocRBslv6pworSwCDn3Go7TQ==
dependencies:
"@syndicate-lang/core" "^0.9.1"
"@syndicate-lang/core" "^0.32.0"
"@syndicate-lang/ts-plugin@^0.9":
version "0.9.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/ts-plugin/-/ts-plugin-0.9.1.tgz#2b045638beaef6fe86fba626587e83291c732c2f"
integrity sha512-bTqJI1Z8n/zWtMrtpe4aq72Pcu1y9qW4psTWVQbiOQ8hLmmgTKP0UmcwmQvwKCanznhZfCOpXAH/BIFsukL60w==
"@syndicate-lang/ts-plugin@*":
version "0.34.0"
resolved "https://registry.yarnpkg.com/@syndicate-lang/ts-plugin/-/ts-plugin-0.34.0.tgz#df92f9044eeba528c80c41c5c9df49ee28902411"
integrity sha512-OCO6Hm0euz2hZk6tYTrJQNEM8iDBeQ/dgpW2a/UP52XSP6fYj0OvUVfn+35ZkIL64S+zDsJjL/6XFN05UZyRGA==
dependencies:
"@syndicate-lang/compiler" "^0.9.1"
"@syndicate-lang/core" "^0.9.1"
"@syndicate-lang/compiler" "^0.21.1"
"@syndicate-lang/core" "^0.32.0"
"@syndicate-lang/tsc@^0.9":
version "0.9.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/tsc/-/tsc-0.9.1.tgz#88c60cdddd4d56d517540a8d2f8272ead225f411"
integrity sha512-/2jkwvDNd24IXQek3bMPP+72IHIhl/P4Fz/OQ2Urs0vEnB5phw9dRKSxEbuOlwiVJj5yAPxAdKav+ve0h6Qn1g==
"@syndicate-lang/tsc@*":
version "0.34.0"
resolved "https://registry.yarnpkg.com/@syndicate-lang/tsc/-/tsc-0.34.0.tgz#1056fba7f639bbf436d0c2ecd2717edc4c1e612a"
integrity sha512-Ufj3xsdXMbMCavWsEkX/pFyXRpNIWRW+LFew1icD14DoSLqyBcoUEvskolOSgkSzC53tDjbd4/LXDVofIjIyUA==
dependencies:
"@syndicate-lang/compiler" "^0.9.1"
"@syndicate-lang/core" "^0.9.1"
"@syndicate-lang/compiler" "^0.21.1"
"@syndicate-lang/core" "^0.32.0"
glob "^7.1.6"
yargs "^16.2.0"
@ -80,44 +72,18 @@
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
"@types/glob@^7.1":
version "7.2.0"
resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb"
integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==
dependencies:
"@types/minimatch" "*"
"@types/node" "*"
"@types/minimatch@*", "@types/minimatch@^3.0":
version "3.0.5"
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40"
integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==
"@types/node@*":
version "16.11.12"
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.12.tgz#ac7fb693ac587ee182c3780c26eb65546a1a3c10"
integrity sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==
ansi-regex@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
ansi-styles@^4.0.0, ansi-styles@^4.1.0:
ansi-styles@^4.0.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
dependencies:
color-convert "^2.0.1"
anymatch@~3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
dependencies:
normalize-path "^3.0.0"
picomatch "^2.0.4"
atob@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
@ -128,11 +94,6 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
binary-extensions@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
@ -141,36 +102,6 @@ brace-expansion@^1.1.7:
balanced-match "^1.0.0"
concat-map "0.0.1"
braces@~3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
dependencies:
fill-range "^7.0.1"
chalk@^4.1:
version "4.1.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
dependencies:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
chokidar@^3.5:
version "3.5.2"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75"
integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==
dependencies:
anymatch "~3.1.2"
braces "~3.0.2"
glob-parent "~5.1.2"
is-binary-path "~2.1.0"
is-glob "~4.0.1"
normalize-path "~3.0.0"
readdirp "~3.6.0"
optionalDependencies:
fsevents "~2.3.2"
cliui@^7.0.2:
version "7.0.4"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
@ -192,20 +123,15 @@ color-name@~1.1.4:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
commander@^7.2:
version "7.2.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
decode-uri-component@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
version "0.2.2"
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9"
integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==
emoji-regex@^8.0.0:
version "8.0.0"
@ -213,65 +139,46 @@ emoji-regex@^8.0.0:
integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
escalade@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
version "3.1.2"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27"
integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==
estree-walker@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700"
integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==
fill-range@^7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
dependencies:
to-regex-range "^5.0.1"
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
fsevents@~2.3.2:
version "2.3.2"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
version "2.3.3"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
get-caller-file@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
glob-parent@~5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
dependencies:
is-glob "^4.0.1"
glob@^7.1, glob@^7.1.6:
version "7.2.0"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
glob@^7.1.6:
version "7.2.3"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
minimatch "^3.0.4"
minimatch "^3.1.1"
once "^1.3.0"
path-is-absolute "^1.0.0"
has-flag@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
dependencies:
once "^1.3.0"
wrappy "1"
@ -281,75 +188,39 @@ inherits@2:
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
is-binary-path@~2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
dependencies:
binary-extensions "^2.0.0"
is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
is-fullwidth-code-point@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
is-glob@^4.0.1, is-glob@~4.0.1:
version "4.0.3"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
dependencies:
is-extglob "^2.1.1"
is-number@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
minimatch@^3.0, minimatch@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
minimatch@^3.1.1:
version "3.1.2"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
dependencies:
brace-expansion "^1.1.7"
normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
once@^1.3.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
dependencies:
wrappy "1"
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2:
version "2.3.0"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==
readdirp@~3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
dependencies:
picomatch "^2.2.1"
picomatch@^2.2.2:
version "2.3.1"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
require-directory@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
rollup-plugin-sourcemaps@^0.6:
version "0.6.3"
@ -360,12 +231,17 @@ rollup-plugin-sourcemaps@^0.6:
source-map-resolve "^0.6.0"
rollup@^2.60:
version "2.61.0"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.61.0.tgz#ccd927bcd6cc0c78a4689c918627a717977208f4"
integrity sha512-teQ+T1mUYbyvGyUavCodiyA9hD4DxwYZJwr/qehZGhs1Z49vsmzelMVYMxGU4ZhGRKxYPupHuz5yzm/wj7VpWA==
version "2.79.1"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7"
integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==
optionalDependencies:
fsevents "~2.3.2"
salty-crypto@0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/salty-crypto/-/salty-crypto-0.3.1.tgz#1242cd948d8152aff104d0945980996b1602ba0e"
integrity sha512-dCbF8/UzMV8oXPmMCHWzSp7u8G6NA+pHbaFBVqVgLVBiyxuwVn9iPbyt9WXT0EoXfL9sKt7U1mV+bgsGw5cV7A==
source-map-resolve@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2"
@ -390,24 +266,10 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1:
dependencies:
ansi-regex "^5.0.1"
supports-color@^7.1.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
dependencies:
has-flag "^4.0.0"
to-regex-range@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
dependencies:
is-number "^7.0.0"
typescript@^4.5:
version "4.5.3"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.3.tgz#afaa858e68c7103317d89eb90c5d8906268d353c"
integrity sha512-eVYaEHALSt+s9LbvgEv4Ef+Tdq7hBiIZgii12xXJnukryt3pMgJf6aKhoCZ3FWQsu6sydEnkg11fYXLzhLBjeQ==
typescript@^4.9:
version "4.9.5"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a"
integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
wrap-ansi@^7.0.0:
version "7.0.0"
@ -421,7 +283,7 @@ wrap-ansi@^7.0.0:
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
y18n@^5.0.5:
version "5.0.8"

View File

@ -3,6 +3,7 @@
<head>
<title>Syndicate: Table Example</title>
<meta charset="utf-8">
<script src="node_modules/@preserves/core/dist/preserves.js"></script>
<script src="node_modules/@syndicate-lang/core/dist/syndicate.js"></script>
<script src="node_modules/@syndicate-lang/html/dist/syndicate-html.js"></script>
</head>

View File

@ -14,14 +14,16 @@
"author": "Tony Garnock-Jones <tonyg@leastfixedpoint.com>",
"license": "GPL-3.0+",
"dependencies": {
"@syndicate-lang/core": "^0.10",
"@syndicate-lang/html": "^0.10"
"@preserves/core": "^0.995.200",
"@preserves/schema": "^0.995.201",
"@syndicate-lang/core": "*",
"@syndicate-lang/html": "*"
},
"devDependencies": {
"@syndicate-lang/ts-plugin": "^0.10",
"@syndicate-lang/tsc": "^0.10",
"@syndicate-lang/ts-plugin": "*",
"@syndicate-lang/tsc": "*",
"rollup": "^2.60",
"rollup-plugin-sourcemaps": "^0.6",
"typescript": "^4.5"
"typescript": "^4.9"
}
}

View File

@ -1,7 +1,7 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
import { Dataspace, Embedded, Value, Ref } from '@syndicate-lang/core';
import { Dataspace, Value, Ref } from '@syndicate-lang/core';
import { boot as bootHtml, UIEvent, GlobalEvent, HtmlFragments, template, Anchor } from '@syndicate-lang/html';
assertion type Person(id, firstName, lastName, address, age);
@ -42,7 +42,7 @@ Dataspace.boot(ds => {
spawn named 'controller' {
on message GlobalEvent('table#the-table th', 'click', $e) => {
const event = (e as Embedded<Ref>).embeddedValue.target.data as Event;
const event = (e as Ref).target.data as Event;
send message SetSortColumn(JSON.parse((event.target as HTMLElement).dataset.column!));
}
}

View File

@ -2,24 +2,17 @@
# yarn lockfile v1
"@preserves/core@0.18.1", "@preserves/core@^0.18.1":
version "0.18.1"
resolved "https://registry.yarnpkg.com/@preserves/core/-/core-0.18.1.tgz#7e630fe7e38238bc73f3c0518142f5fe0ae2e819"
integrity sha512-b+YzeAS9vLky6PXF3SzYEcj2lBCnZ6hREdRpsksfzxEm+3IqmKk6daxpe0DsH0fgTVgMTq6+wQPOwAVwx0R6Ag==
"@preserves/core@0.995.200", "@preserves/core@^0.995.200":
version "0.995.200"
resolved "https://registry.yarnpkg.com/@preserves/core/-/core-0.995.200.tgz#65575cf8f9320e73b5d37fa9ac9d6881a33fd3a6"
integrity sha512-htZ2x+hltUpKoPsviWSuelzZW96po9zVSsN0RZEih60FahNX0R2LCqFJ6v5lyATuQ9oHALVi0w8w4rtf8oiAJw==
"@preserves/schema@0.19.1":
version "0.19.1"
resolved "https://registry.yarnpkg.com/@preserves/schema/-/schema-0.19.1.tgz#def22920fb63abfd8530d663cf72ef2220ae9637"
integrity sha512-/S5Ab3egmihNNuHa/cEHl4kL8RT4kdYjSXZQFDuCALU+jRUPoQQPA+a2m+2UvmWQQDE0P5Z54i6qb9OdT0OdZg==
"@preserves/schema@0.995.201":
version "0.995.201"
resolved "https://registry.yarnpkg.com/@preserves/schema/-/schema-0.995.201.tgz#827ad539afb0fdf68ba885ee3ff43db0fd473aa5"
integrity sha512-0SuhwOEAfxtrAeOTZ8V1yNEcHHHEbfUmoFawrF+vzTQFNZRz/X3LF1FM6wOiJlHtb7tBr4B+rHXX8jfNrqrdkA==
dependencies:
"@preserves/core" "^0.18.1"
"@types/glob" "^7.1"
"@types/minimatch" "^3.0"
chalk "^4.1"
chokidar "^3.5"
commander "^7.2"
glob "^7.1"
minimatch "^3.0"
"@preserves/core" "^0.995.200"
"@rollup/pluginutils@^3.0.9":
version "3.1.0"
@ -30,41 +23,40 @@
estree-walker "^1.0.1"
picomatch "^2.2.2"
"@syndicate-lang/compiler@^0.9.1":
version "0.9.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/compiler/-/compiler-0.9.1.tgz#6c89eabd2225eb711975e5e7611bc67c23606655"
integrity sha512-ZKvqxrbwFBZ7Y8IDlL+Amf3jl1fQ5+Sr3d3TWlSK6IKF5pGGh5/HLrPrkWJifE7N8wr5ASQtzI0IbF3ky9VzOQ==
"@syndicate-lang/compiler@^0.21.1":
version "0.21.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/compiler/-/compiler-0.21.1.tgz#b6316bac14d053c313b3442be68f532a60c47cb3"
integrity sha512-daaYh1i0XmoHt6eTtO4gWblfVKMjp9trwxqR62wUSONY3gtJ5Bn4hG3dMgfoMz2NvOWbJHaGz/95J0jRubITxA==
"@syndicate-lang/core@^0.9", "@syndicate-lang/core@^0.9.1":
version "0.9.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/core/-/core-0.9.1.tgz#54d6951c230a7c1f2b825ea378ac903520e1f4ec"
integrity sha512-Rd3nM4OfgYfU4EJX2TaCXTSH8ibhf9vMHLmKr1hqy8NL/uy/mEZyWULguPSxkZALWxdom+SaNWpBLmT50zYegw==
"@syndicate-lang/core@*", "@syndicate-lang/core@^0.32.0":
version "0.32.0"
resolved "https://registry.yarnpkg.com/@syndicate-lang/core/-/core-0.32.0.tgz#0efbbff176cac2969c2b6ba70a19965add3a2c61"
integrity sha512-ERVXk0W1xLaKvUa79Ek74YvqfBU543cUTb2GJvp76TP5k1jA97q9GzhddicS/s8lqu8SUC1+IXmKiJk0NX2TWQ==
dependencies:
"@preserves/core" "0.18.1"
"@preserves/schema" "0.19.1"
salty-crypto "0.3.1"
"@syndicate-lang/html@^0.9":
version "0.9.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/html/-/html-0.9.1.tgz#0af0e6d46d54d2368999173714344a7997ce7749"
integrity sha512-hctwoEPTNHvURFs8gzPo4pBq/8Is49ZSYqgv2paIhwDuuGQs1FgND4+EDRpo8kOeeZ8MhCrQmxLFJf2L0mcTzA==
"@syndicate-lang/html@*":
version "0.33.0"
resolved "https://registry.yarnpkg.com/@syndicate-lang/html/-/html-0.33.0.tgz#c53e6bf8a52b17c3747f4270713a8c9234f984af"
integrity sha512-xhN6NZOgLxlAQOyWG0JAgtyF1e1yQvrpNh5RBAPnucFYC024yo1ggZ08+KiaulhsoIKvRbBE6FU6p9dDm4/tpQ==
dependencies:
"@syndicate-lang/core" "^0.9.1"
"@syndicate-lang/core" "^0.32.0"
"@syndicate-lang/ts-plugin@^0.9":
version "0.9.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/ts-plugin/-/ts-plugin-0.9.1.tgz#2b045638beaef6fe86fba626587e83291c732c2f"
integrity sha512-bTqJI1Z8n/zWtMrtpe4aq72Pcu1y9qW4psTWVQbiOQ8hLmmgTKP0UmcwmQvwKCanznhZfCOpXAH/BIFsukL60w==
"@syndicate-lang/ts-plugin@*":
version "0.34.0"
resolved "https://registry.yarnpkg.com/@syndicate-lang/ts-plugin/-/ts-plugin-0.34.0.tgz#df92f9044eeba528c80c41c5c9df49ee28902411"
integrity sha512-OCO6Hm0euz2hZk6tYTrJQNEM8iDBeQ/dgpW2a/UP52XSP6fYj0OvUVfn+35ZkIL64S+zDsJjL/6XFN05UZyRGA==
dependencies:
"@syndicate-lang/compiler" "^0.9.1"
"@syndicate-lang/core" "^0.9.1"
"@syndicate-lang/compiler" "^0.21.1"
"@syndicate-lang/core" "^0.32.0"
"@syndicate-lang/tsc@^0.9":
version "0.9.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/tsc/-/tsc-0.9.1.tgz#88c60cdddd4d56d517540a8d2f8272ead225f411"
integrity sha512-/2jkwvDNd24IXQek3bMPP+72IHIhl/P4Fz/OQ2Urs0vEnB5phw9dRKSxEbuOlwiVJj5yAPxAdKav+ve0h6Qn1g==
"@syndicate-lang/tsc@*":
version "0.34.0"
resolved "https://registry.yarnpkg.com/@syndicate-lang/tsc/-/tsc-0.34.0.tgz#1056fba7f639bbf436d0c2ecd2717edc4c1e612a"
integrity sha512-Ufj3xsdXMbMCavWsEkX/pFyXRpNIWRW+LFew1icD14DoSLqyBcoUEvskolOSgkSzC53tDjbd4/LXDVofIjIyUA==
dependencies:
"@syndicate-lang/compiler" "^0.9.1"
"@syndicate-lang/core" "^0.9.1"
"@syndicate-lang/compiler" "^0.21.1"
"@syndicate-lang/core" "^0.32.0"
glob "^7.1.6"
yargs "^16.2.0"
@ -73,44 +65,18 @@
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
"@types/glob@^7.1":
version "7.2.0"
resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb"
integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==
dependencies:
"@types/minimatch" "*"
"@types/node" "*"
"@types/minimatch@*", "@types/minimatch@^3.0":
version "3.0.5"
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40"
integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==
"@types/node@*":
version "16.11.12"
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.12.tgz#ac7fb693ac587ee182c3780c26eb65546a1a3c10"
integrity sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==
ansi-regex@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
ansi-styles@^4.0.0, ansi-styles@^4.1.0:
ansi-styles@^4.0.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
dependencies:
color-convert "^2.0.1"
anymatch@~3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
dependencies:
normalize-path "^3.0.0"
picomatch "^2.0.4"
atob@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
@ -121,11 +87,6 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
binary-extensions@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
@ -134,36 +95,6 @@ brace-expansion@^1.1.7:
balanced-match "^1.0.0"
concat-map "0.0.1"
braces@~3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
dependencies:
fill-range "^7.0.1"
chalk@^4.1:
version "4.1.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
dependencies:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
chokidar@^3.5:
version "3.5.2"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75"
integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==
dependencies:
anymatch "~3.1.2"
braces "~3.0.2"
glob-parent "~5.1.2"
is-binary-path "~2.1.0"
is-glob "~4.0.1"
normalize-path "~3.0.0"
readdirp "~3.6.0"
optionalDependencies:
fsevents "~2.3.2"
cliui@^7.0.2:
version "7.0.4"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
@ -185,20 +116,15 @@ color-name@~1.1.4:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
commander@^7.2:
version "7.2.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
decode-uri-component@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
version "0.2.2"
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9"
integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==
emoji-regex@^8.0.0:
version "8.0.0"
@ -206,65 +132,46 @@ emoji-regex@^8.0.0:
integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
escalade@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
version "3.1.2"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27"
integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==
estree-walker@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700"
integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==
fill-range@^7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
dependencies:
to-regex-range "^5.0.1"
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
fsevents@~2.3.2:
version "2.3.2"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
version "2.3.3"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
get-caller-file@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
glob-parent@~5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
dependencies:
is-glob "^4.0.1"
glob@^7.1, glob@^7.1.6:
version "7.2.0"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
glob@^7.1.6:
version "7.2.3"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
minimatch "^3.0.4"
minimatch "^3.1.1"
once "^1.3.0"
path-is-absolute "^1.0.0"
has-flag@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
dependencies:
once "^1.3.0"
wrappy "1"
@ -274,75 +181,39 @@ inherits@2:
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
is-binary-path@~2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
dependencies:
binary-extensions "^2.0.0"
is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
is-fullwidth-code-point@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
is-glob@^4.0.1, is-glob@~4.0.1:
version "4.0.3"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
dependencies:
is-extglob "^2.1.1"
is-number@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
minimatch@^3.0, minimatch@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
minimatch@^3.1.1:
version "3.1.2"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
dependencies:
brace-expansion "^1.1.7"
normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
once@^1.3.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
dependencies:
wrappy "1"
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2:
version "2.3.0"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==
readdirp@~3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
dependencies:
picomatch "^2.2.1"
picomatch@^2.2.2:
version "2.3.1"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
require-directory@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
rollup-plugin-sourcemaps@^0.6:
version "0.6.3"
@ -353,12 +224,17 @@ rollup-plugin-sourcemaps@^0.6:
source-map-resolve "^0.6.0"
rollup@^2.60:
version "2.61.0"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.61.0.tgz#ccd927bcd6cc0c78a4689c918627a717977208f4"
integrity sha512-teQ+T1mUYbyvGyUavCodiyA9hD4DxwYZJwr/qehZGhs1Z49vsmzelMVYMxGU4ZhGRKxYPupHuz5yzm/wj7VpWA==
version "2.79.1"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7"
integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==
optionalDependencies:
fsevents "~2.3.2"
salty-crypto@0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/salty-crypto/-/salty-crypto-0.3.1.tgz#1242cd948d8152aff104d0945980996b1602ba0e"
integrity sha512-dCbF8/UzMV8oXPmMCHWzSp7u8G6NA+pHbaFBVqVgLVBiyxuwVn9iPbyt9WXT0EoXfL9sKt7U1mV+bgsGw5cV7A==
source-map-resolve@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2"
@ -383,24 +259,10 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1:
dependencies:
ansi-regex "^5.0.1"
supports-color@^7.1.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
dependencies:
has-flag "^4.0.0"
to-regex-range@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
dependencies:
is-number "^7.0.0"
typescript@^4.5:
version "4.5.3"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.3.tgz#afaa858e68c7103317d89eb90c5d8906268d353c"
integrity sha512-eVYaEHALSt+s9LbvgEv4Ef+Tdq7hBiIZgii12xXJnukryt3pMgJf6aKhoCZ3FWQsu6sydEnkg11fYXLzhLBjeQ==
typescript@^4.9:
version "4.9.5"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a"
integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
wrap-ansi@^7.0.0:
version "7.0.0"
@ -414,7 +276,7 @@ wrap-ansi@^7.0.0:
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
y18n@^5.0.5:
version "5.0.8"

View File

@ -1,147 +0,0 @@
#!/usr/bin/env racket
#lang racket
;;; SPDX-License-Identifier: LGPL-3.0-or-later
;;; SPDX-FileCopyrightText: Copyright © 2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
(require file/glob)
(require racket/date)
(define ((re p) i) (regexp-match p i))
(define ((re? p) i) (regexp-match? p i))
(define ((s p ins) i) (regexp-replace p i ins))
(define this-year (number->string (date-year (current-date))))
(define (get-git-config key)
(string-trim (with-output-to-string
(lambda () (system* "/usr/bin/env" "git" "config" "--get" key)))))
(define (is-tracked? f)
(call-with-output-file "/dev/null" #:exists 'append
(lambda (sink)
(parameterize ((current-error-port sink)
(current-output-port sink))
(system* "/usr/bin/env" "git" "ls-files" "--error-unmatch" f)))))
(define user-name (get-git-config "user.name"))
(define user-email (get-git-config "user.email"))
(define user (format "~a <~a>" user-name user-email))
(define (make-copyright who low [hi #f])
(if (and hi (not (string=? low hi)))
(format "Copyright © ~a-~a ~a" low hi who)
(format "Copyright © ~a ~a" low who)))
(define total-file-count 0)
(define total-changed-files 0)
(define dry-run? #f)
(define modify-untracked? #f)
(define (fix-files #:file-type-name file-type-name
#:file-pattern file-pattern
#:front-matter-re [front-matter-re #f]
#:leading-comment-re leading-comment-re
#:comment-prefix comment-prefix
#:file-filter [file-filter (lambda (x) #t)])
(define matched-files (filter file-filter (glob file-pattern)))
(define file-count (length matched-files))
(define changed-files 0)
(for [(file-number (in-naturals))
(f (in-list matched-files))]
(printf "~a [~a/~a] ~a ..." file-type-name file-number file-count f)
(flush-output)
(define all-lines (file->lines f))
(define-values (front-matter head tail)
(let*-values (((lines) all-lines)
((front-matter lines) (if front-matter-re
(splitf-at lines (re? front-matter-re))
(values '() lines)))
((head tail) (splitf-at lines (re? leading-comment-re))))
(values front-matter head tail)))
(let* ((head (map (s leading-comment-re "") head))
(head (map (lambda (l)
(match (regexp-match "^([^:]+): (.*)$" l)
[(list _ k v) (list k v)]
[#f (list #f l)]))
head))
(head (if (assoc "SPDX-FileCopyrightText" head)
head
(cons (list "SPDX-FileCopyrightText" (make-copyright user this-year)) head)))
(head (if (assoc "SPDX-License-Identifier" head)
head
(cons (list "SPDX-License-Identifier" "GPL-3.0-or-later") head)))
(head (map (lambda (l)
(match l
[(list "SPDX-FileCopyrightText"
(and (regexp (regexp-quote user-name))
(regexp #px"(\\d{4})-\\d{4}" (list _ low))))
(list "SPDX-FileCopyrightText"
(make-copyright user low this-year))]
[(list "SPDX-FileCopyrightText"
(and (regexp (regexp-quote user-name))
(regexp #px"\\d{4}" (list low))))
(list "SPDX-FileCopyrightText"
(make-copyright user low this-year))]
[_ l]))
head))
(head (map (lambda (l)
(if (string=? (cadr l) "")
(string-trim comment-prefix)
(string-append comment-prefix
(match l
[(list #f v) v]
[(list k v) (format "~a: ~a" k v)]))))
head))
(new-lines `(,@front-matter
,@head
""
,@(dropf tail (lambda (l) (string=? (string-trim l) "")))))
(would-change-if-written? (not (equal? all-lines new-lines)))
(write-needed? (and would-change-if-written? (or modify-untracked? (is-tracked? f)))))
(when (and write-needed? (not dry-run?))
(call-with-atomic-output-file
f
(lambda (port _tmp-path)
(for [(l front-matter)] (displayln l port))
(for [(l head)] (displayln l port))
(newline port)
(for [(l (dropf tail (lambda (l) (string=? (string-trim l) ""))))] (displayln l port)))))
(if write-needed?
(begin (set! changed-files (+ changed-files 1))
(printf "\e[41mchanged\e[0m\n"))
(printf "\r\e[K"))))
(when (positive? changed-files)
(printf "~a [~a total files, ~a changed]\n" file-type-name file-count changed-files))
(set! total-file-count (+ total-file-count file-count))
(set! total-changed-files (+ total-changed-files changed-files)))
(command-line #:once-each
[("-n" "--dry-run") "Do not write back changes to files"
(set! dry-run? #t)]
[("--modify-untracked") "Modify files not tracked by git as well as those that are"
(set! modify-untracked? #t)])
(void (fix-files #:file-type-name "TypeScript"
#:file-pattern "packages/**.ts"
#:front-matter-re #px"^#"
#:leading-comment-re #px"^//+ *"
#:comment-prefix "/// "))
(void (fix-files #:file-type-name "JavaScript"
#:file-pattern "packages/**.js"
#:front-matter-re #px"^#"
#:leading-comment-re #px"^//+ *"
#:comment-prefix "/// "))
(printf "fixcopyright: ~a files examined, ~a ~a\n"
total-file-count
total-changed-files
(if dry-run?
(if (zero? total-changed-files)
"changes are needed"
"files need to be updated")
(if (zero? total-changed-files)
"changes were needed"
"files were updated")))
(exit (if (positive? total-changed-files) 1 0))

View File

@ -3,4 +3,5 @@
set -e
exec 1>&2
# No checks yet!
fixcopyright.rkt -n --preset-typescript --file-pattern 'packages/**.ts' --ignore '**/node_modules/**' GPL-3.0-or-later
fixcopyright.rkt -n --preset-javascript --file-pattern 'packages/**.js' --ignore '**/node_modules/**' GPL-3.0-or-later

View File

@ -6,6 +6,7 @@
"packages/*/examples/*/"
],
"devDependencies": {
"@preserves/core": "^0.995.201",
"@rollup/plugin-node-resolve": "^13.0",
"@types/jest": "^27.0",
"@types/node": "^14",
@ -18,6 +19,7 @@
"ts-jest": "^27.0",
"ts-node": "^10.4",
"ts-node-dev": "^1.1",
"typescript": "^4.5"
"typescript": "^4.9",
"typescript-language-server": "^3.0"
}
}

3
packages/browser-stdenv/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
index.js
index.min.js
*.js.map

View File

@ -0,0 +1,21 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2023-2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
const SyndicateBrowserStdenv = {
autoboot: true,
autoboot_options: {
SyndicateWsRelay: {
debug: false,
},
},
boot() {
SyndicateHtml2.boot();
SyndicateWsRelay.boot(void 0, this.autoboot_options.SyndicateWsRelay.debug);
}
};
window.addEventListener('DOMContentLoaded', () => {
if (SyndicateBrowserStdenv.autoboot) {
SyndicateBrowserStdenv.boot();
}
});

View File

@ -0,0 +1,47 @@
#!/bin/sh
set -e
cd "$(dirname "$0")"
M=../../node_modules
cat \
$M/@preserves/core/dist/preserves.js \
$M/@preserves/schema/dist/preserves-schema.js \
$M/@preserves/schema/dist/preserves-schema-browser.js \
$M/@syndicate-lang/core/dist/syndicate.js \
$M/@syndicate-lang/html2/dist/syndicate-html2.js \
$M/@syndicate-lang/ws-relay/dist/syndicate-ws-relay.js \
$M/@syndicate-lang/compiler/dist/syndicate-compiler.js \
$M/@syndicate-lang/compiler/dist/syndicate-browser-compiler.js \
boot.js \
> index.js
cp \
$M/@syndicate-lang/core/dist/syndicate.js.map \
$M/@syndicate-lang/html2/dist/syndicate-html2.js.map \
$M/@syndicate-lang/ws-relay/dist/syndicate-ws-relay.js.map \
$M/@syndicate-lang/compiler/dist/syndicate-compiler.js.map \
.
cat \
$M/@preserves/core/dist/preserves.min.js \
$M/@preserves/schema/dist/preserves-schema.min.js \
$M/@preserves/schema/dist/preserves-schema-browser.js \
$M/@syndicate-lang/core/dist/syndicate.min.js \
$M/@syndicate-lang/html2/dist/syndicate-html2.min.js \
$M/@syndicate-lang/ws-relay/dist/syndicate-ws-relay.min.js \
$M/@syndicate-lang/compiler/dist/syndicate-compiler.min.js \
$M/@syndicate-lang/compiler/dist/syndicate-browser-compiler.js \
boot.js \
> index.min.js
cp \
$M/@syndicate-lang/core/dist/syndicate.min.js.map \
$M/@syndicate-lang/html2/dist/syndicate-html2.min.js.map \
$M/@syndicate-lang/ws-relay/dist/syndicate-ws-relay.min.js.map \
$M/@syndicate-lang/compiler/dist/syndicate-compiler.min.js.map \
.
echo $(date) $(pwd) 'build complete.'

View File

@ -0,0 +1,11 @@
<!DOCTYPE html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="../index.js"></script>
<script type="syndicate">
spawn named 'clicker' {
field counter = 0;
const b = new SyndicateHtml2.Widget(t => t`<button>clicks: ${counter.value}</button>`)
.setParent('body')
.on('click', () => counter.value++);
}
</script>

View File

@ -0,0 +1,30 @@
{
"name": "@syndicate-lang/browser-stdenv",
"version": "0.35.1",
"description": "Aggregated Syndicate and Preserves scripts for in-browser use",
"homepage": "https://github.com/syndicate-lang/syndicate-js/tree/main/packages/browser-stdenv",
"license": "GPL-3.0+",
"publishConfig": {
"access": "public"
},
"repository": {
"type": "git",
"url": "https://git.syndicate-lang.org/syndicate-lang/syndicate-js"
},
"main": "index.min.js",
"author": "Tony Garnock-Jones <tonyg@leastfixedpoint.com>",
"scripts": {
"prepare": "./build-aggregate.sh",
"prepare:watch": "cd ..; exec inotifytest browser-stdenv/build-aggregate.sh",
"clean": "rm -rf index.js index.min.js *.js.map",
"veryclean": "yarn run clean && rm -rf node_modules"
},
"dependencies": {
"@preserves/core": "^0.995.200",
"@preserves/schema": "^0.995.201",
"@syndicate-lang/compiler": "^0.22.0",
"@syndicate-lang/core": "^0.34.1",
"@syndicate-lang/html2": "^0.35.1",
"@syndicate-lang/ws-relay": "^0.36.1"
}
}

View File

@ -1 +0,0 @@
../../Makefile.generic-package

View File

@ -0,0 +1,7 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
export default {
preset: 'ts-jest',
testEnvironment: 'node',
};

View File

@ -1,19 +1,30 @@
{
"name": "@syndicate-lang/compiler",
"version": "0.10.2",
"version": "0.22.0",
"description": "Syndicate/JS compiler library",
"homepage": "https://github.com/syndicate-lang/syndicate-js/tree/master/packages/compiler",
"homepage": "https://github.com/syndicate-lang/syndicate-js/tree/main/packages/compiler",
"license": "GPL-3.0+",
"publishConfig": {
"access": "public"
},
"repository": "github:syndicate-lang/syndicate-js",
"repository": {
"type": "git",
"url": "https://git.syndicate-lang.org/syndicate-lang/syndicate-js"
},
"scripts": {
"prepare": "yarn compile && yarn rollup",
"prepare": "yarn compile && yarn rollup && cp syndicate-browser-compiler.js dist/",
"compile": "../../node_modules/.bin/tsc",
"compile:watch": "../../node_modules/.bin/tsc -w",
"rollup": "../../node_modules/.bin/rollup -c",
"rollup:watch": "../../node_modules/.bin/rollup -c -w"
"rollup:watch": "../../node_modules/.bin/rollup -c -w",
"clean": "rm -rf lib dist",
"veryclean": "yarn run clean && rm -rf node_modules",
"test": "../../node_modules/.bin/jest",
"test:watch": "yarn test --watch"
},
"devDependencies": {
"@types/js-beautify": "1.14",
"js-beautify": "1.15"
},
"main": "dist/syndicate-compiler.js",
"module": "lib/index.js",

View File

@ -1,5 +1,5 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
/// SPDX-FileCopyrightText: Copyright © 2016-2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
import { SyndicateRollup } from '../../rollup.js';
const r = new SyndicateRollup('syndicate-compiler', { globalName: 'SyndicateCompiler' });

View File

@ -1,5 +1,5 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
/// SPDX-FileCopyrightText: Copyright © 2016-2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
import {
isToken, isTokenType, replace, commaJoin, startPos, fixPos, joinItems,
@ -7,7 +7,7 @@ import {
Items, Pattern, Templates, Substitution, TokenType,
SourceMap, CodeWriter, TemplateFunction, Token, SpanIndex, match, TokenBase, getRange, Pos,
} from '../syntax/index.js';
} from '../syntax/index';
import {
SyndicateParser, SyndicateTypedParser,
Identifier,
@ -17,7 +17,8 @@ import {
compilePattern,
SpawnStatement,
} from './grammar.js';
FacetToStop,
} from './grammar';
export function stripShebang(items: Items): Items {
if ((items.length > 0) &&
@ -28,7 +29,7 @@ export function stripShebang(items: Items): Items {
return items;
}
export type ModuleType ='es6' | 'require' | 'global';
export type ModuleType ='es6' | 'require' | 'global' | 'none';
export type ErrorSink = (message: string, start: Pos | undefined, end: Pos | undefined) => void;
@ -37,7 +38,6 @@ export interface CompileOptions {
name?: string,
runtime?: string,
module?: ModuleType,
global?: string,
typescript?: boolean,
emitError: ErrorSink,
}
@ -83,7 +83,7 @@ function stringifyId(i: Identifier): Items {
return [ { ... i, type: TokenType.STRING, text: JSON.stringify(i.text) } ];
}
function binderTypeGuard(ctx: ExpansionContext, t: TemplateFunction): (binder: Binder, index: number) => Items {
function binderTypeGuard(t: TemplateFunction): (binder: Binder, index: number) => Items {
return (binder, index) => {
if (binder.id.text[0] === '_') {
return t`${`/* Ignoring underscore-prefixed binder ${binder.id.text} */`}`;
@ -103,10 +103,12 @@ function binderTypeGuard(ctx: ExpansionContext, t: TemplateFunction): (binder: B
return t`if (typeof (${raw}) !== ${JSON.stringify(typeText)}) return;\n${bind}`;
case 'any':
return bind;
default:
ctx.emitError(`Cannot emit guard for binding of type: ${JSON.stringify(typeText)}`,
getRange(binder.type));
return bind; /* act as if "any", for now */
default: {
const intermediate = t`__v_${''+index}`;
return t`const ${intermediate} = ${binder.type}.__from_preserve__(${raw});
if (${intermediate} === void 0) return;
const ${[binder.id]} = ${intermediate};`;
}
}
}
};
@ -115,16 +117,43 @@ function binderTypeGuard(ctx: ExpansionContext, t: TemplateFunction): (binder: B
export function expand(tree: Items, ctx: ExpansionContext): Items {
const macro = new Templates(undefined, { extraDelimiters: ':' });
function terminalWrap(t: TemplateFunction, isTerminal: boolean, body: Statement): Statement {
if (isTerminal) {
return t`__SYNDICATE__.Turn.active._stop(__SYNDICATE__.Turn.activeFacet, () => {${body}})`
function terminalWrap(
t: TemplateFunction,
facetToStop: FacetToStop | 'none' | 'once-wrapper',
body: Statement,
): Statement {
if (facetToStop === 'none') {
return walk(body);
} else {
return body;
const toStop =
facetToStop === 'default' ? 'currentSyndicateFacet' :
facetToStop === 'once-wrapper' ? '__once_facet' :
walk(facetToStop);
const resetCurrentSyndicateFacet =
facetToStop === 'once-wrapper' ? [] :
t`const currentSyndicateFacet = __SYNDICATE__.Turn.activeFacet;`;
return t`__SYNDICATE__.Turn.active._stop(${toStop}, () => {${resetCurrentSyndicateFacet}${walk(body)}})`;
}
}
function facetWrap(
t: TemplateFunction,
facetName: Identifier | 'default' | 'once-wrapper',
items: Items,
): Items {
if (facetName === 'once-wrapper') {
return t`__SYNDICATE__.Turn.active.facet(() => {const __once_facet = __SYNDICATE__.Turn.activeFacet; ${items}});`;
} else {
const defaultLabel = t`const currentSyndicateFacet = __SYNDICATE__.Turn.activeFacet; `;
const customLabel = facetName === 'default'
? []
: t`const ${facetName.text} = currentSyndicateFacet; `;
return t`__SYNDICATE__.Turn.active.facet(() => {${defaultLabel}${customLabel}${items}});`;
}
}
function x<T>(p: Pattern<T>, f: (v: T, t: TemplateFunction) => Items) {
tree = replace(tree, p, (v, start) => f(v, macro.template(fixPos(start))));
tree = replace(tree, null, p, (v, start) => f(v, macro.template(fixPos(start))));
}
function xf<T extends TurnAction>(p: Pattern<T>, f: (v: T, t: TemplateFunction) => Items) {
@ -139,7 +168,7 @@ export function expand(tree: Items, ctx: ExpansionContext): Items {
// following transformations matters.
xf(ctx.parser.duringStatement, (s, t) => {
let spawn = match(ctx.parser.spawn, s.body, null);
let spawn = match(ctx.parser.spawn, s.body, null, null);
if (spawn !== null) {
if (spawn.linkedToken !== null) {
ctx.emitError(`during ... spawn doesn't need "linked", it's always linked`,
@ -148,25 +177,29 @@ export function expand(tree: Items, ctx: ExpansionContext): Items {
spawn.linkedToken = getRange(s.body);
}
let body = (spawn == null)
let body = (spawn === null)
? walk(s.body)
: expandSpawn(spawn, t, t`__SYNDICATE__.Turn.activeFacet.preventInertCheck();`);
: expandSpawn(spawn, t, t` __SYNDICATE__.Turn.activeFacet.preventInertCheck();`);
const sa = compilePattern(s.pattern);
return t`assertDataflow(() => ({
target: currentSyndicateTarget,
assertion: __SYNDICATE__.fromObserve(__SYNDICATE__.Observe({
pattern: __SYNDICATE__.QuasiValue.finish(${sa.skeleton}),
observer: __SYNDICATE__.Turn.ref(__SYNDICATE__.assertionFacetObserver(
(${ctx.argDecl(t, '__vs', '__SYNDICATE__.AnyValue')}) => {
if (Array.isArray(__vs)) {
${joinItems(sa.captureBinders.map(binderTypeGuard(ctx, t)), '\n')}
${body}
}
const assertion = t`__SYNDICATE__.Observe({
pattern: __SYNDICATE__.QuasiValue.finish(${sa.skeleton}),
observer: __SYNDICATE__.Turn.ref(__SYNDICATE__.assertionFacetObserver(
(${ctx.argDecl(t, '__vs', '__SYNDICATE__.AnyValue')}) => {
if (Array.isArray(__vs)) {
${joinItems(sa.captureBinders.map(binderTypeGuard(t)), '\n')}
${body}
}
))
})),
}));`;
}
))
})`;
if (s.test === void 0) {
return t`assertDataflow(() => ({ target: currentSyndicateTarget, assertion: ${assertion} }));`;
} else {
return t`assertDataflow(() => (${walk(s.test)})
? ({ target: currentSyndicateTarget, assertion: ${assertion} })
: ({ target: void 0, assertion: void 0 }));`;
}
});
function expandSpawn(spawn: SpawnStatement, t: TemplateFunction, inject: Items = []): Items {
@ -176,8 +209,9 @@ ${joinItems(sa.captureBinders.map(binderTypeGuard(ctx, t)), '\n')}
? t`, new __SYNDICATE__.Set([${commaJoin(s.initialAssertions.map(walk))}])`
: ``;
*/
const n = spawn.name === void 0 ? '' : t` __SYNDICATE__.Turn.activeFacet.actor.name = ${walk(spawn.name)};`;
return t`__SYNDICATE__.Turn.active._spawn${spawn.linkedToken ? 'Link': ''}(() => {${n} ${inject} ${walk(spawn.body)} });`;
const f = t` const currentSyndicateFacet = __SYNDICATE__.Turn.activeFacet;`;
const n = spawn.name === void 0 ? '' : t` currentSyndicateFacet.actor.name = ${walk(spawn.name)};`;
return t`__SYNDICATE__.Dataspace._spawn${spawn.linkedToken ? 'Link': ''}(() => {${f}${n}${inject}${walk(spawn.body)}});`;
}
x(ctx.parser.spawn, expandSpawn);
@ -197,7 +231,7 @@ ${joinItems(sa.captureBinders.map(binderTypeGuard(ctx, t)), '\n')}
xf(ctx.parser.assertionEndpointStatement, (s, t) => {
if (s.isDynamic) {
if (s.test == void 0) {
if (s.test === void 0) {
return t`assertDataflow(() => ({ target: currentSyndicateTarget, assertion: ${walk(s.template)} }));`;
} else {
return t`assertDataflow(() => (${walk(s.test)})
@ -205,7 +239,7 @@ ${joinItems(sa.captureBinders.map(binderTypeGuard(ctx, t)), '\n')}
: ({ target: void 0, assertion: void 0 }));`;
}
} else {
if (s.test == void 0) {
if (s.test === void 0) {
return t`assert(currentSyndicateTarget, ${walk(s.template)});`;
} else {
return t`replace(currentSyndicateTarget, void 0, (${walk(s.test)}) ? (${walk(s.template)}) : void 0);`;
@ -217,8 +251,10 @@ ${joinItems(sa.captureBinders.map(binderTypeGuard(ctx, t)), '\n')}
t`_dataflow(() => {${walk(s.body)}});`);
x(ctx.parser.eventHandlerEndpointStatement, (s, t) => {
const wrap = s.once ? (i: Items) => facetWrap(t, 'once-wrapper', i) : (i: Items) => i;
if (s.triggerType === 'dataflow') {
return t`__SYNDICATE__.Turn.active._dataflow(() => { if (${walk(s.predicate)}) { ${terminalWrap(t, s.terminal, walk(s.body))} } });`;
return wrap(t`__SYNDICATE__.Turn.active._dataflow(() => { if (${walk(s.predicate)}) { ${terminalWrap(t, s.facetToStop, s.body)} } });`);
}
if (s.triggerType === 'stop') {
@ -227,7 +263,7 @@ ${joinItems(sa.captureBinders.map(binderTypeGuard(ctx, t)), '\n')}
const sa = compilePattern(s.pattern);
const guardBody = (body: Statement) => t`if (Array.isArray(__vs)) {
${joinItems(sa.captureBinders.map(binderTypeGuard(ctx, t)), '\n')}
${joinItems(sa.captureBinders.map(binderTypeGuard(t)), '\n')}
${body}
}`;
@ -235,37 +271,44 @@ ${joinItems(sa.captureBinders.map(binderTypeGuard(ctx, t)), '\n')}
switch (s.triggerType) {
case 'asserted':
entity = t`{
assert(${ctx.argDecl(t, '__vs', '__SYNDICATE__.AnyValue')}, ${ctx.argDecl(t, '__handle', '__SYNDICATE__.Handle')}) {
${guardBody(terminalWrap(t, s.terminal, walk(s.body)))}
assert: (${ctx.argDecl(t, '__vs', '__SYNDICATE__.AnyValue')}, ${ctx.argDecl(t, '__handle', '__SYNDICATE__.Handle')}) => {
${guardBody(terminalWrap(t, s.facetToStop, s.body))}
}
}`;
break;
case 'retracted':
entity = t`__SYNDICATE__.assertionObserver((${ctx.argDecl(t, '__vs', '__SYNDICATE__.AnyValue')}) => {
${guardBody(t`return () => { ${terminalWrap(t, s.terminal, walk(s.body))} };`)}
${guardBody(t`return () => { ${terminalWrap(t, s.facetToStop, s.body)} };`)}
})`;
break;
case 'message':
entity = t`{
message(${ctx.argDecl(t, '__vs', '__SYNDICATE__.AnyValue')}) {
${guardBody(terminalWrap(t, s.terminal, walk(s.body)))}
message: (${ctx.argDecl(t, '__vs', '__SYNDICATE__.AnyValue')}) => {
${guardBody(terminalWrap(t, s.facetToStop, s.body))}
}
}`;
break;
}
const assertion = t`__SYNDICATE__.fromObserve(__SYNDICATE__.Observe({
const assertion = t`__SYNDICATE__.Observe({
pattern: __SYNDICATE__.QuasiValue.finish(${sa.skeleton}),
observer: __SYNDICATE__.Turn.ref(${entity}),
}))`;
})`;
if (s.isDynamic) {
return t`__SYNDICATE__.Turn.active.assertDataflow(() => ({
target: currentSyndicateTarget,
assertion: ${assertion},
}));`;
if (s.test === void 0) {
return wrap(t`__SYNDICATE__.Turn.active.assertDataflow(() => ({ target: currentSyndicateTarget, assertion: ${assertion} }));`);
} else {
return wrap(t`__SYNDICATE__.Turn.active.assertDataflow(() => (${walk(s.test)})
? ({ target: currentSyndicateTarget, assertion: ${assertion} })
: ({ target: void 0, assertion: void 0 }));`);
}
} else {
return t`__SYNDICATE__.Turn.active.replace(currentSyndicateTarget, void 0, ${assertion});`;
if (s.test === void 0) {
return wrap(t`__SYNDICATE__.Turn.active.replace(currentSyndicateTarget, void 0, ${assertion});`);
} else {
return wrap(t`__SYNDICATE__.Turn.active.replace(currentSyndicateTarget, void 0, (${walk(s.test)}) ? ${assertion} : void 0);`);
}
}
});
@ -281,12 +324,9 @@ ${joinItems(sa.captureBinders.map(binderTypeGuard(ctx, t)), '\n')}
xf(ctx.parser.messageSendStatement, (s, t) => t`message(currentSyndicateTarget, ${walk(s.expr)});`);
xf(ctx.parser.reactStatement, (s, t) => {
return t`facet(() => {${s.body}});`;
});
x(ctx.parser.reactStatement, (s, t) => facetWrap(t, s.label ?? 'default', s.body));
x(ctx.parser.stopStatement, (s, t) =>
t`__SYNDICATE__.Turn.active._stop(__SYNDICATE__.Turn.activeFacet, () => {${walk(s.body)}});`)
x(ctx.parser.stopStatement, (s, t) => t`${terminalWrap(t, s.facetToStop, s.body)};`);
return tree;
}
@ -325,6 +365,12 @@ export function compile(options: CompileOptions): CompilerOutput {
case 'global':
tree = ts`const __SYNDICATE__ = ${runtime};\n${tree}`;
break;
case 'none':
break;
default:
((_: never) => {
throw new Error(`Unsupported ModuleType: ${moduleType}`);
})(moduleType);
}
}

View File

@ -1,16 +1,17 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
/// SPDX-FileCopyrightText: Copyright © 2016-2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
import {
Token, Items,
Token, Items, TokenBase, TokenType, Pos,
Pattern,
foldItems, match, anonymousTemplate as template, commaJoin,
advancePos,
scope, bind, seq, alt, upTo, atom, atomString, group,
scope, bind, seq, seqTuple, alt, upTo, atom, atomString, group,
repeat, option, withoutSpace, map, mapm, rest, discard,
value, succeed, fail, separatedOrTerminatedBy, not, TokenBase
} from '../syntax/index.js';
import * as Matcher from '../syntax/matcher.js';
value, succeed, fail, separatedOrTerminatedBy, not,
} from '../syntax/index';
import * as Matcher from '../syntax/matcher';
//---------------------------------------------------------------------------
// AST types
@ -50,8 +51,15 @@ export interface StatementTurnAction extends TurnAction {
body: Statement;
}
export type FacetToStop = 'default' | Expr;
export interface StopStatement extends StatementTurnAction {
facetToStop: FacetToStop;
}
export interface GenericEventEndpointStatement extends StatementTurnAction {
terminal: boolean;
facetToStop: FacetToStop | 'none' | 'once-wrapper';
once: boolean;
isDynamic: boolean;
}
@ -67,6 +75,7 @@ export interface PseudoEventEndpointStatement extends GenericEventEndpointStatem
export interface AssertionEventEndpointStatement extends GenericEventEndpointStatement {
triggerType: 'asserted' | 'retracted' | 'message';
pattern: ValuePattern;
test?: Expr,
}
export type EventHandlerEndpointStatement =
@ -85,9 +94,11 @@ export interface MessageSendStatement extends TurnAction {
export interface DuringStatement extends FacetSetupAction {
pattern: ValuePattern;
test?: Expr,
}
export interface ReactStatement extends FacetSetupAction {
label: Identifier | null;
}
export interface AtStatement {
@ -172,16 +183,37 @@ export class SyndicateParser {
return group('{', map(rest, items => (acc?.push(... items), items)));
}
readonly statementBoundary = alt<any>(atom(';'), Matcher.newline);
readonly statementBoundary = alt<any>(
atom(';'),
Matcher.newline,
seq(Matcher.end, i => {
if (i.context === null || i.context === '{') return discard(i);
// ^ toplevel, or inside braces, so presumably statement context
return fail(i); // otherwise, parens or brackets presumably, so not statement context
}),
);
readonly exprBoundary = alt<any>(atom(';'), atom(','), group('{', discard), Matcher.end);
readonly identifier: Pattern<Identifier> = atom();
get binder(): Pattern<Binder> { return scope(o => bind(o, 'id', this.identifier)); }
binder(... _extraStops: Pattern<any>[]): Pattern<Binder> { return scope(o => bind(o, 'id', this.identifier)); }
readonly defaultBinder = this.binder();
expr(... extraStops: Pattern<any>[]): Pattern<Expr> {
return withoutSpace(upTo(alt(this.exprBoundary, ... extraStops)));
}
expr1(... extraStops: Pattern<any>[]): Pattern<Expr> {
return mapm(this.expr(... extraStops), e => e.length ? succeed(e) : fail);
}
propertyNameExpr(): Pattern<Expr> {
const dq = template`"`;
return alt<Expr>(
map(atom(), name => [... dq, name, ... dq]),
map(atom(void 0, { tokenType: TokenType.STRING }), str => [str]),
group('[', this.expr()));
}
readonly type: (... extraStops: Pattern<any>[]) => Pattern<Type> = this.expr;
statement(acc: Items): Pattern<any> {
@ -219,7 +251,7 @@ export class SyndicateParser {
map(scope(
(l: { b: Binder, init: Expr }) =>
seq(kw('let'),
bind(l, 'b', this.binder),
bind(l, 'b', this.defaultBinder),
atom('='),
bind(l, 'init', this.headerExpr))),
l => {
@ -233,7 +265,7 @@ export class SyndicateParser {
readonly fieldDeclarationStatement: Pattern<FieldDeclarationStatement> =
this.turnAction(o => {
return seq(atom('field'),
bind(o, 'field', this.binder),
bind(o, 'field', this.defaultBinder),
option(seq(atom('='), bind(o, 'init', this.expr()))),
this.statementBoundary);
});
@ -261,32 +293,44 @@ export class SyndicateParser {
mandatoryIfNotTerminal(o: GenericEventEndpointStatement, p: Pattern<any>): Pattern<any> {
return i => {
return (o.terminal) ? option(p)(i) : p(i);
return (o.facetToStop !== 'none') ? option(p)(i) : p(i);
};
}
// Principal: Turn
readonly eventHandlerEndpointStatement: Pattern<EventHandlerEndpointStatement> =
this.turnAction(o => {
o.terminal = false;
o.facetToStop = 'none';
o.once = false;
o.isDynamic = true;
o.body = [];
return seq(option(map(atom('stop'), _ => o.terminal = true)),
atom('on'),
return seq(alt(seq(option(seq(atom('stop'),
map(option(this.expr1(atom('on'))), es => {
o.facetToStop = es.length ? es[0] : 'default';
}))),
atom('on')),
map(atom('once'), _ => {
o.once = true;
o.facetToStop = 'once-wrapper';
})),
alt<any>(seq(map(group('(', bind(o as DataflowEndpointStatement, 'predicate',
this.expr())),
_ => o.triggerType = 'dataflow'),
this.mandatoryIfNotTerminal(o, this.statement(o.body))),
mapm(seq(bind(o, 'triggerType', atomString('stop')),
option(this.statement(o.body))),
v => o.terminal ? fail : succeed(v)),
v => ((o.facetToStop !== 'none') || o.once) ? fail : succeed(v)),
seq(bind(o, 'triggerType',
alt(atomString('asserted'),
atomString('retracted'),
atomString('message'))),
option(map(kw('snapshot'), _ => o.isDynamic = false)),
bind(o as AssertionEventEndpointStatement, 'pattern',
this.valuePattern(1, atom('=>'))),
this.valuePattern(1, atom('=>'),
seq(atom('when'), group('(', discard)))),
option(seq(atom('when'), group(
'(', bind(o as AssertionEventEndpointStatement, 'test',
this.expr())))),
this.mandatoryIfNotTerminal(
o, seq(atom('=>'), this.statement(o.body))))));
});
@ -296,7 +340,7 @@ export class SyndicateParser {
scope(o => seq(bind(o, 'expectedUse', alt(atomString('message'), atomString('assertion'))),
atom('type'),
bind(o, 'label', this.identifier),
group('(', bind(o, 'fields', repeat(this.binder, { separator: atom(',') }))),
group('(', bind(o, 'fields', repeat(this.defaultBinder, { separator: atom(',') }))),
option(seq(atom('='),
bind(o, 'wireName', withoutSpace(upTo(this.statementBoundary))))),
this.statementBoundary));
@ -314,19 +358,32 @@ export class SyndicateParser {
this.turnAction(o => {
o.body = [];
return seq(atom('during'),
bind(o, 'pattern', this.valuePattern(1, atom('=>'))),
bind(o, 'pattern',
this.valuePattern(1, atom('=>'), seq(atom('when'), group('(', discard)))),
option(seq(atom('when'), group('(', bind(o, 'test', this.expr())))),
seq(atom('=>'), this.statement(o.body)));
});
// Principal: Turn
readonly reactStatement: Pattern<ReactStatement> =
this.turnAction(o => {
o.label = null;
o.body = [];
return seq(atom('react'), this.block(o.body));
return seq(option(map(seqTuple(this.identifier, atom(':')),
([i, _colon]) => o.label = i)),
atom('react'),
this.block(o.body));
});
// Principal: Turn
readonly stopStatement = this.blockTurnAction(atom('stop'));
readonly stopStatement: Pattern<StopStatement> =
this.turnAction(o => {
o.facetToStop = 'default';
o.body = [];
return seq(atom('stop'),
option(map(this.expr1(), e => o.facetToStop = e)),
alt(this.block(o.body), this.statementBoundary));
});
// Principal: none
readonly atStatement: Pattern<AtStatement> =
@ -357,12 +414,22 @@ export class SyndicateParser {
// {expr: expr, ...} - constant
// other - constant
readonly pCaptureBinder: Pattern<Binder> =
mapm(this.binder, i => {
return i.id.text.startsWith('$')
? succeed({ id: { ... i.id, text: i.id.text.slice(1) }, type: i.type })
: fail;
pCaptureBinder = (b: Pattern<Binder>): Pattern<Binder> =>
mapm(b, i => {
if (i.id.text.startsWith('$')) {
const adjustedStart: Pos = { ... i.id.start };
advancePos(adjustedStart, ' ');
const adjustedId: Token = {
... i.id,
start: adjustedStart,
text: i.id.text.slice(1),
};
return succeed({ id: adjustedId, type: i.type });
} else {
return fail;
}
});
readonly pCaptureDefaultBinder = this.pCaptureBinder(this.defaultBinder);
readonly pDiscard: Pattern<void> =
mapm(this.identifier, i => i.text === '_' ? succeed(void 0) : fail);
@ -390,7 +457,7 @@ export class SyndicateParser {
hasCapturesOrDiscards(e: Expr): boolean {
return foldItems(e,
t => match(alt<any>(this.pCaptureBinder, this.pDiscard), [t], null) !== null,
t => match(alt<any>(this.pCaptureDefaultBinder, this.pDiscard), [t], null, '(') !== null,
(_g, b, _k) => b,
bs => bs.some(b => b));
}
@ -415,7 +482,7 @@ export class SyndicateParser {
value<[Expr, ValuePattern]>(e => {
e.value = [] as any;
return seq(
bind(e.value, '0', this.expr(atom(':'))),
bind(e.value, '0', this.propertyNameExpr()),
atom(':'),
bind(e.value, '1', this.valuePattern(level)));
}),
@ -438,11 +505,6 @@ export class SyndicateParser {
valuePattern(level: number, ... extraStops: Pattern<any>[]): Pattern<ValuePattern> {
return withoutSpace(alt<ValuePattern>(
scope<PCapture>(o => {
o.type = 'PCapture';
o.inner = { type: 'PDiscard' };
return bind(o, 'binder', this.pCaptureBinder);
}),
scope(o => map(this.pDiscard, _ => o.type = 'PDiscard')),
this.pArray(level),
this.pDict(level),
@ -458,7 +520,7 @@ export class SyndicateParser {
// });
// } else
if (this.hasCapturesOrDiscards(o.ctor)) {
const r = match(this.pCaptureBinder, o.ctor, null);
const r = match(this.pCaptureDefaultBinder, o.ctor, null, '(');
if (r !== null && o.arguments.length === 1) {
return succeed({
type: 'PCapture',
@ -472,16 +534,21 @@ export class SyndicateParser {
return succeed(o);
}
}),
scope<PCapture>(o => {
o.type = 'PCapture';
o.inner = { type: 'PDiscard' };
return bind(o, 'binder', this.pCaptureBinder(this.binder(... extraStops)));
}),
map(this.expr(... extraStops), e => ({ type: 'PConstant', value: e }))
));
}
}
export class SyndicateTypedParser extends SyndicateParser {
get binder(): Pattern<Binder> {
binder(... extraStops: Pattern<any>[]): Pattern<Binder> {
return scope(o => seq(bind(o, 'id', this.identifier),
option(seq(atom(':'),
bind(o, 'type', this.type(atom('=')))))));
bind(o, 'type', this.type(atom('='), ... extraStops))))));
}
}
@ -500,7 +567,7 @@ export function compilePattern(pattern: ValuePattern): StaticAnalysis {
return template`(__SYNDICATE__.QuasiValue.bind(${walk(pattern.inner)}))`;
}
case 'PConstant':
return template`(__SYNDICATE__.QuasiValue.lit(${pattern.value}))`;
return template`(__SYNDICATE__.QuasiValue.lit(__SYNDICATE__.fromJS(${pattern.value})))`;
case 'PConstructor': {
const pieces = [template`${pattern.ctor}`, ... pattern.arguments.map(walk)];
return template`(__SYNDICATE__.QuasiValue.ctor(${commaJoin(pieces)}))`;

View File

@ -1,6 +1,6 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
/// SPDX-FileCopyrightText: Copyright © 2016-2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
export * as Grammar from './grammar.js';
export * as Codegen from './codegen.js';
export { compile, CompileOptions } from './codegen.js';
export * as Grammar from './grammar';
export * as Codegen from './codegen';
export { compile, CompileOptions } from './codegen';

View File

@ -1,5 +1,5 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
/// SPDX-FileCopyrightText: Copyright © 2016-2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
export * as Syntax from './syntax/index.js';
export * from './compiler/index.js';
export * as Syntax from './syntax/index';
export * from './compiler/index';

View File

@ -1,10 +1,10 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
/// SPDX-FileCopyrightText: Copyright © 2016-2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
import { Token, TokenType, Item, Items, isGroup } from './tokens.js';
import { Pos, startPos, advancePos } from './position.js';
import { vlqEncode } from './vlq.js';
import { SpanInfo } from './span.js';
import { Token, TokenType, Item, Items, isGroup } from './tokens';
import { Pos, startPos, advancePos } from './position';
import { vlqEncode } from './vlq';
import { SpanInfo } from './span';
export interface SourceMap {
version: 3;

View File

@ -1,13 +1,13 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
/// SPDX-FileCopyrightText: Copyright © 2016-2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
export * from './codewriter.js';
export * from './list.js';
export * from './matcher.js';
export * from './position.js';
export * from './reader.js';
export * from './scanner.js';
export * from './span.js';
export * from './template.js';
export * from './tokens.js';
export * from './vlq.js';
export * from './codewriter';
export * from './list';
export * from './matcher';
export * from './position';
export * from './reader';
export * from './scanner';
export * from './span';
export * from './template';
export * from './tokens';
export * from './vlq';

View File

@ -1,26 +1,27 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
/// SPDX-FileCopyrightText: Copyright © 2016-2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
export interface List<T> extends Iterable<T> {
export interface List<T, C> extends Iterable<T> {
item: T | null;
next: List<T> | null;
next: List<T, C> | null;
context: C;
toArray(): Array<T>;
}
export function atEnd<T>(xs: List<T>): xs is (List<T> & { item: null, next: null }) {
export function atEnd<T, C>(xs: List<T, C>): xs is (List<T, C> & { item: null, next: null }) {
return xs.item === null;
}
export function notAtEnd<T>(xs: List<T>): xs is (List<T> & { item: T, next: List<T> }) {
export function notAtEnd<T, C>(xs: List<T, C>): xs is (List<T, C> & { item: T, next: List<T, C> }) {
return xs.item !== null;
}
export class ArrayList<T> implements List<T> {
export class ArrayList<T, C> implements List<T, C> {
readonly items: Array<T>;
readonly index: number = 0;
constructor(items: Array<T>, index = 0) {
constructor(items: Array<T>, public context: C, index = 0) {
this.items = items;
this.index = index;
}
@ -29,9 +30,9 @@ export class ArrayList<T> implements List<T> {
return this.items[this.index] ?? null;
}
get next(): List<T> | null {
get next(): List<T, C> | null {
if (this.index >= this.items.length) return null;
return new ArrayList(this.items, this.index + 1);
return new ArrayList(this.items, this.context, this.index + 1);
}
toArray(): Array<T> {
@ -39,7 +40,7 @@ export class ArrayList<T> implements List<T> {
}
[Symbol.iterator](): Iterator<T> {
let i: List<T> = this;
let i: List<T, C> = this;
return {
next(): IteratorResult<T> {
if (notAtEnd(i)) {

View File

@ -1,34 +1,38 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
/// SPDX-FileCopyrightText: Copyright © 2016-2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
import {
Token, TokenType, Items, Item,
isGroup, isToken, isSpace, isTokenType,
} from './tokens.js';
import { Pos, startPos } from './position.js';
import { List, ArrayList, atEnd, notAtEnd } from './list.js';
} from './tokens';
import { Pos, startPos } from './position';
import { List, ArrayList, atEnd, notAtEnd } from './list';
//---------------------------------------------------------------------------
// Patterns over Item
export type PatternResult<T> = [T, List<Item>] | null;
export type Pattern<T> = (i: List<Item>) => PatternResult<T>;
export type ItemContext = string /* the opener of the containing group, if any */ | null;
export type ItemList = List<Item, ItemContext>;
export type PatternResult<T> = [T, ItemList] | null;
export type Pattern<T> = (i: ItemList) => PatternResult<T>;
export function match<T,F>(p: Pattern<T>, items: Items, failure: F): T | F {
const r = p(new ArrayList(items));
export type PatternTypeArg<P> = P extends Pattern<infer T> ? T : never;
export function match<T,F>(p: Pattern<T>, items: Items, failure: F, context: ItemContext): T | F {
const r = p(new ArrayList(items, context));
if (r === null) return failure;
if (notAtEnd(skipSpace(r[1]))) return failure;
return r[0];
}
export const noItems = new ArrayList<Item>([]);
export const noItems = (c: ItemContext) => new ArrayList([], c);
export const fail: Pattern<never> = _i => null;
export function succeed<T>(t: T): Pattern<T> { return i => [t, i]; }
export const discard: Pattern<void> = _i => [void 0, noItems];
export const rest: Pattern<Items> = i => [i.toArray(), noItems];
export const end: Pattern<void> = i => atEnd(skipSpace(i)) ? [void 0, noItems] : null;
export const discard: Pattern<void> = i => [void 0, noItems(i.context)];
export const rest: Pattern<Items> = i => [i.toArray(), noItems(i.context)];
export const end: Pattern<void> = i => atEnd(skipSpace(i)) ? [void 0, noItems(i.context)] : null;
export const pos: Pattern<Pos> = i => notAtEnd(i) ? [i.item.start, i] : null;
export const newline: Pattern<Item> = i => {
@ -37,12 +41,12 @@ export const newline: Pattern<Item> = i => {
return [i.item, i.next];
};
export function skipSpace(i: List<Item>): List<Item> {
export function skipSpace(i: ItemList): ItemList {
while (notAtEnd(i) && isSpace(i.item)) i = i.next;
return i;
}
export function collectSpace(i: List<Item>, acc: Array<Item>): List<Item> {
export function collectSpace(i: ItemList, acc: Array<Item>): ItemList {
while (notAtEnd(i) && isSpace(i.item)) {
acc.push(i.item);
i = i.next;
@ -78,6 +82,22 @@ export function seq(... patterns: Pattern<any>[]): Pattern<any> {
};
}
export function seqTuple<Patterns extends [...Pattern<any>[]]>(
... patterns: Patterns
): Pattern<{ [I in keyof Patterns]: PatternTypeArg<Patterns[I]> } & { length: Patterns['length'] }>
{
return i => {
const rs = [];
for (const p of patterns) {
const r = p(i);
if (r === null) return null;
rs.push(r[0]);
i = r[1];
}
return [rs as unknown as PatternTypeArg<ReturnType<typeof seqTuple<Patterns>>>, i];
};
}
export function alt<T>(... alts: Pattern<T>[]): Pattern<T> {
return i => {
for (const a of alts) {
@ -115,7 +135,7 @@ export function bind<T, K extends keyof T>(target: T, key: K, pattern: Pattern<T
};
}
export function exec(thunk: (i: List<Item>) => void): Pattern<void> {
export function exec(thunk: (i: ItemList) => void): Pattern<void> {
return i => {
thunk(i);
return [void 0, i];
@ -156,7 +176,7 @@ export function group<T>(opener: string, items: Pattern<T>, options: GroupOption
if (!notAtEnd(i)) return null;
if (!isGroup(i.item)) return null;
if (i.item.open.text !== opener) return null;
const r = items(new ArrayList(i.item.items));
const r = items(new ArrayList(i.item.items, opener));
if (r === null) return null;
if (!atEnd(r[1])) return null;
return [r[0], (options.advance ?? true) ? i.next : i];
@ -203,7 +223,7 @@ export function upTo(p: Pattern<any>): Pattern<Items> {
export function separatedBy<T>(itemPattern: Pattern<T>, separator: Pattern<any>): Pattern<T[]> {
return i => {
const acc: T[] = [];
if (end(i) !== null) return [acc, noItems];
if (end(i) !== null) return [acc, noItems(i.context)];
while (true) {
{
const r = itemPattern(i);
@ -214,7 +234,7 @@ export function separatedBy<T>(itemPattern: Pattern<T>, separator: Pattern<any>)
{
const r = separator(i);
if (r === null) {
if (end(i) !== null) return [acc, noItems];
if (end(i) !== null) return [acc, noItems(i.context)];
return null;
}
i = r[1];
@ -229,7 +249,7 @@ export function separatedOrTerminatedBy<T>(
): Pattern<T[]> {
return i => {
const acc: T[] = [];
if (end(i) !== null) return [acc, noItems];
if (end(i) !== null) return [acc, noItems(i.context)];
while (true) {
{
const r = itemPattern(i);
@ -240,11 +260,11 @@ export function separatedOrTerminatedBy<T>(
{
const r = separator(i);
if (r === null) {
if (end(i) !== null) return [acc, noItems];
if (end(i) !== null) return [acc, noItems(i.context)];
return null;
} else {
i = r[1];
if (end(i) !== null) return [acc, noItems];
if (end(i) !== null) return [acc, noItems(i.context)];
}
}
}
@ -290,12 +310,13 @@ export function option<T>(p: Pattern<T>): Pattern<T[]> {
export function replace<T>(
items: Items,
outerContext: ItemContext,
p: Pattern<T>,
f: (t: T, start: Pos, end: Pos) => Items,
end: Pos = items.length > 0 ? items[items.length - 1].end : startPos(null)) : Items
{
const walkItems = (items: Items, end: Pos): Items => {
let i: List<Item> = new ArrayList(items);
end: Pos = items.length > 0 ? items[items.length - 1].end : startPos(null),
) : Items {
const walkItems = (items: Items, end: Pos, context: ItemContext): Items => {
let i: ItemList = new ArrayList(items, context);
const acc: Items = [];
while (notAtEnd(i = collectSpace(i, acc))) {
const r = p(i);
@ -309,11 +330,14 @@ export function replace<T>(
acc.push(i.item);
i = i.next;
} else {
acc.push({ ... i.item, items: walkItems(i.item.items, i.item.end) });
acc.push({
... i.item,
items: walkItems(i.item.items, i.item.end, i.item.open.text),
});
i = i.next;
}
}
return acc;
};
return walkItems(items, end);
return walkItems(items, end, outerContext);
}

View File

@ -1,5 +1,5 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
/// SPDX-FileCopyrightText: Copyright © 2016-2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
export interface Pos {
line: number;

View File

@ -1,9 +1,9 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
/// SPDX-FileCopyrightText: Copyright © 2016-2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
import { TokenType, Token, Group, GroupInProgress, Item, Items, finishGroup } from './tokens.js';
import { Pos, startPos } from './position.js';
import { Scanner, StringScanner } from './scanner.js';
import { TokenType, Token, Group, GroupInProgress, Item, Items, finishGroup } from './tokens';
import { Pos, startPos } from './position';
import { Scanner, StringScanner } from './scanner';
function matchingParen(c: string): string | null {
switch (c) {
@ -134,23 +134,10 @@ export class LaxReader implements IterableIterator<Item> {
case TokenType.SPACE:
case TokenType.NEWLINE:
case TokenType.ATOM:
this.drop();
if (g === null) {
this.drop();
return t;
}
if (t.text === ';') {
while ('(['.indexOf(g.open.text) >= 0) {
this.stack.pop();
const outer = this.stackTop();
if (outer === null) {
// do not drop the semicolon here
return finishGroup(g, t.start);
}
outer.items.push(finishGroup(g, t.start));
g = outer;
}
}
this.drop();
g.items.push(t);
break;

View File

@ -1,8 +1,8 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
/// SPDX-FileCopyrightText: Copyright © 2016-2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
import { TokenType, Token, Item, GroupInProgress } from './tokens.js';
import { Pos, advancePos } from './position.js';
import { TokenType, Token, Item, GroupInProgress } from './tokens';
import { Pos, advancePos } from './position';
export abstract class Scanner implements IterableIterator<Token> {
readonly pos: Pos;

View File

@ -1,5 +1,5 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
/// SPDX-FileCopyrightText: Copyright © 2016-2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
export class SpanResult<T> {
readonly searchTarget: number;

View File

@ -1,10 +1,10 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
/// SPDX-FileCopyrightText: Copyright © 2016-2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
import { Items } from './tokens.js';
import { Pos, startPos } from './position.js';
import { laxRead, LaxReadOptions } from './reader.js';
import * as M from './matcher.js';
import { Items } from './tokens';
import { Pos, startPos } from './position';
import { laxRead, LaxReadOptions } from './reader';
import * as M from './matcher';
const substPat = M.scope((o: { pos: Pos }) =>
M.seq(M.atom('$'),
@ -29,7 +29,7 @@ export class Templates {
this.readOptions = readOptions;
}
template(start0: Pos | string = this.defaultPos): TemplateFunction {
template(start0: Pos | string = this.defaultPos, context: M.ItemContext = null): TemplateFunction {
const start = (typeof start0 === 'string') ? startPos(start0) : start0;
return (consts, ... vars) => {
const sourcePieces = [consts[0]];
@ -53,6 +53,7 @@ export class Templates {
(this.readOptions.extraDelimiters ?? '') + '$',
synthetic: true,
}),
context,
substPat,
sub => toItems(this.readOptions, vars[i++], sub.pos));
};

View File

@ -1,7 +1,7 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
/// SPDX-FileCopyrightText: Copyright © 2016-2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
import { Pos } from './position.js';
import { Pos } from './position';
export enum TokenType {
SPACE,

View File

@ -1,5 +1,5 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
/// SPDX-FileCopyrightText: Copyright © 2016-2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
const alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
const inverse_alphabet =

View File

@ -0,0 +1,47 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2023-2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
const __SYNDICATE__ = Syndicate;
const currentSyndicateTarget = Syndicate.Dataspace.global;
(() => {
async function translateScripts() {
if (SchemaReady) await SchemaReady;
const syndicateScripts =
Array.from(document.getElementsByTagName('script'))
.filter(s => (s.type === 'text/javascript+syndicate' ||
s.type === 'syndicate' ||
s.type === 'module+syndicate'));
for (const script of syndicateScripts) {
const isModule = script.type === 'module+syndicate';
const sourceUrl = script.src || script.getAttribute('data-src') || false;
const sourceCode = sourceUrl ? await (await fetch(sourceUrl)).text() : script.innerHTML;
const compilationResult = SyndicateCompiler.compile({
name: sourceUrl || script.id || 'anonymous-script-tag',
source: sourceCode,
module: isModule ? 'es6' : 'none',
runtime: isModule ? void 0 : 'Syndicate',
emitError: console.error,
});
const sourceMap = { ... compilationResult.map };
sourceMap.sourcesContent = [sourceCode];
const formattedSourceMap = '\n//# sourceMappingURL=data:application/json;base64,' +
Syndicate.Bytes.from(JSON.stringify(sourceMap)).toBase64();
const finalOutput = compilationResult.text + formattedSourceMap;
// console.log(finalOutput);
const replacement = document.createElement('script');
replacement.text = finalOutput;
if (isModule) replacement.type = 'module';
script.parentNode.replaceChild(replacement, script);
}
}
window.addEventListener('DOMContentLoaded', translateScripts);
})();

View File

@ -0,0 +1,262 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
import { compile, CompileOptions, Syntax } from '../src/index';
import Pos = Syntax.Pos;
import './test-utils';
import { js as format } from 'js-beautify';
type Error = { message: string, start: Pos | undefined, end: Pos | undefined };
function translate(source: string, options: Partial<CompileOptions> = {}): { code: string, errors: Error[] } {
const errors: Error[] = [];
const result = compile({
... options,
module: 'none',
source,
emitError: (message, start, end) => errors.push({ message, start, end }),
});
return { code: result.text, errors };
}
function translateNoErrors(source: string, options?: Partial<CompileOptions>): string {
const o = translate(source, options);
expect(o.errors.length).toBe(0);
return o.code;
}
function expectCodeEqual(input: string, output: string, options?: Partial<CompileOptions>) {
expect(format(translateNoErrors(input, options))).toBe(format(output));
}
describe('react', () => {
it('without label', () => expectCodeEqual(`react { a; b; c; }`, `
__SYNDICATE__.Turn.active.facet(() => {
const currentSyndicateFacet = __SYNDICATE__.Turn.activeFacet;
a; b; c;
});`));
it('with label', () => expectCodeEqual(`someLabel: react { a; b; c; }`, `
__SYNDICATE__.Turn.active.facet(() => {
const currentSyndicateFacet = __SYNDICATE__.Turn.activeFacet;
const someLabel = currentSyndicateFacet;
a; b; c;
});`));
});
describe('spawn', () => {
it('without name', () => expectCodeEqual(`spawn { a; b; c; }`, `
__SYNDICATE__.Dataspace._spawn(() => {
const currentSyndicateFacet = __SYNDICATE__.Turn.activeFacet;
a; b; c;
});`));
it('with name', () => expectCodeEqual(`spawn named 'foo' { a; b; c; }`, `
__SYNDICATE__.Dataspace._spawn(() => {
const currentSyndicateFacet = __SYNDICATE__.Turn.activeFacet;
currentSyndicateFacet.actor.name = 'foo';
a; b; c;
});`));
// At present, the expr() parser accepts *empty input*. TODO: something better.
it('with missing name (known incorrect parsing and codegen)', () =>
expectCodeEqual(`spawn named { a; b; c; }`, `
__SYNDICATE__.Dataspace._spawn(() => {
const currentSyndicateFacet = __SYNDICATE__.Turn.activeFacet;
currentSyndicateFacet.actor.name = ;
a; b; c;
});`));
});
describe('stop', () => {
it('non-statement', () => expectCodeEqual(`(stop)`, `(stop)`));
it('toplevel end-delimited statement', () => expectCodeEqual(`stop`, `
__SYNDICATE__.Turn.active._stop(currentSyndicateFacet, () => {
const currentSyndicateFacet = __SYNDICATE__.Turn.activeFacet;
});`));
it('nested end-delimited statement', () => expectCodeEqual(`{ stop }`, `
{
__SYNDICATE__.Turn.active._stop(currentSyndicateFacet, () => {
const currentSyndicateFacet = __SYNDICATE__.Turn.activeFacet;
});
}`));
it('without facet, without body', () => expectCodeEqual(`stop;`, `
__SYNDICATE__.Turn.active._stop(currentSyndicateFacet, () => {
const currentSyndicateFacet = __SYNDICATE__.Turn.activeFacet;
});`));
it('without facet, empty body', () => expectCodeEqual(`stop {}`, `
__SYNDICATE__.Turn.active._stop(currentSyndicateFacet, () => {
const currentSyndicateFacet = __SYNDICATE__.Turn.activeFacet;
});`));
it('without facet, non-empty body', () => expectCodeEqual(`stop { a; b; }`, `
__SYNDICATE__.Turn.active._stop(currentSyndicateFacet, () => {
const currentSyndicateFacet = __SYNDICATE__.Turn.activeFacet;
a; b;
});`));
it('with facet, without body', () => expectCodeEqual(`stop x.y;`, `
__SYNDICATE__.Turn.active._stop(x.y, () => {
const currentSyndicateFacet = __SYNDICATE__.Turn.activeFacet;
});`));
it('with facet, empty body', () => expectCodeEqual(`stop x.y {}`, `
__SYNDICATE__.Turn.active._stop(x.y, () => {
const currentSyndicateFacet = __SYNDICATE__.Turn.activeFacet;
});`));
it('with facet, non-empty body', () => expectCodeEqual(`stop x.y { a; b; }`, `
__SYNDICATE__.Turn.active._stop(x.y, () => {
const currentSyndicateFacet = __SYNDICATE__.Turn.activeFacet;
a; b;
});`));
it('nested stop, no labels', () => expectCodeEqual(`stop { stop; }`, `
__SYNDICATE__.Turn.active._stop(currentSyndicateFacet, () => {
const currentSyndicateFacet = __SYNDICATE__.Turn.activeFacet;
__SYNDICATE__.Turn.active._stop(currentSyndicateFacet, () => {
const currentSyndicateFacet = __SYNDICATE__.Turn.activeFacet;
});
});`));
});
describe('during', () => {
it('stop in body', () => expectCodeEqual(`during P => { a; stop; b; }`, `
__SYNDICATE__.Turn.active.assertDataflow(() => ({
target: currentSyndicateTarget,
assertion: __SYNDICATE__.Observe({
pattern: __SYNDICATE__.QuasiValue.finish((__SYNDICATE__.QuasiValue.lit(__SYNDICATE__.fromJS(P)))),
observer: __SYNDICATE__.Turn.ref(__SYNDICATE__.assertionFacetObserver(
(__vs) => {
if (Array.isArray(__vs)) {
a;
__SYNDICATE__.Turn.active._stop(currentSyndicateFacet, () => {
const currentSyndicateFacet = __SYNDICATE__.Turn.activeFacet;
});
b;
}
}
))
})
}));`));
it('capture with type at top', () => expectCodeEqual(`during $v: T => { ok() }`, `
__SYNDICATE__.Turn.active.assertDataflow(() => ({
target: currentSyndicateTarget,
assertion: __SYNDICATE__.Observe({
pattern: __SYNDICATE__.QuasiValue.finish((__SYNDICATE__.QuasiValue.bind((__SYNDICATE__.QuasiValue._)))),
observer: __SYNDICATE__.Turn.ref(__SYNDICATE__.assertionFacetObserver(
(__vs: __SYNDICATE__.AnyValue) => {
if (Array.isArray(__vs)) {
const __v_0 = T.__from_preserve__(__vs[0]);
if (__v_0 === void 0) return;
const v = __v_0;
ok()
}
}
))
})
}));
`, { typescript: true }));
});
describe('once', () => {
it('basics with block', () => expectCodeEqual(`once asserted P => { a; b; }`, `
__SYNDICATE__.Turn.active.facet(() => {
const __once_facet = __SYNDICATE__.Turn.activeFacet;
__SYNDICATE__.Turn.active.assertDataflow(() => ({
target: currentSyndicateTarget,
assertion: __SYNDICATE__.Observe({
pattern: __SYNDICATE__.QuasiValue.finish((__SYNDICATE__.QuasiValue.lit(__SYNDICATE__.fromJS(P)))),
observer: __SYNDICATE__.Turn.ref({
assert: (__vs, __handle) => {
if (Array.isArray(__vs)) {
__SYNDICATE__.Turn.active._stop(__once_facet, () => { a; b; })
}
}
}),
})
}));
});`));
it('basics with statement', () => expectCodeEqual(`once asserted P => x;`, `
__SYNDICATE__.Turn.active.facet(() => {
const __once_facet = __SYNDICATE__.Turn.activeFacet;
__SYNDICATE__.Turn.active.assertDataflow(() => ({
target: currentSyndicateTarget,
assertion: __SYNDICATE__.Observe({
pattern: __SYNDICATE__.QuasiValue.finish((__SYNDICATE__.QuasiValue.lit(__SYNDICATE__.fromJS(P)))),
observer: __SYNDICATE__.Turn.ref({
assert: (__vs, __handle) => {
if (Array.isArray(__vs)) {
__SYNDICATE__.Turn.active._stop(__once_facet, () => {x;})
}
}
}),
})
}));
});`));
});
describe('on', () => {
it('message with guard', () => expectCodeEqual(`
on message S.Focus(entity) when (isLast.value) => {
text.node.focus();
}`, `__SYNDICATE__.Turn.active.assertDataflow(() => (isLast.value) ?
({
target: currentSyndicateTarget,
assertion: __SYNDICATE__.Observe({
pattern: __SYNDICATE__.QuasiValue.finish((__SYNDICATE__.QuasiValue.ctor(S.Focus, (__SYNDICATE__.QuasiValue.lit(__SYNDICATE__.fromJS(entity)))))),
observer: __SYNDICATE__.Turn.ref({
message: (__vs) => {
if (Array.isArray(__vs)) {
text.node.focus();
}
}
}),
})
}) :
({
target: void 0,
assertion: void 0
}));`));
it('asserted with guard', () => expectCodeEqual(`on asserted P when (someTest) => x;`, `
__SYNDICATE__.Turn.active.assertDataflow(() => (someTest) ?
({
target: currentSyndicateTarget,
assertion: __SYNDICATE__.Observe({
pattern: __SYNDICATE__.QuasiValue.finish((__SYNDICATE__.QuasiValue.lit(__SYNDICATE__.fromJS(P)))),
observer: __SYNDICATE__.Turn.ref({
assert: (__vs, __handle) => {
if (Array.isArray(__vs)) {
x;
}
}
}),
})
}) :
({
target: void 0,
assertion: void 0
}));`));
});

View File

@ -0,0 +1,30 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
import { Grammar, Syntax } from '../src/index';
import './test-utils';
describe('statement boundary', () => {
function stmt(input: string): [string, string] | null {
const parser = new Grammar.SyndicateParser();
const tree = Syntax.laxRead(input);
const items: Syntax.Items = [];
const r = parser.statement(items)(new Syntax.ArrayList(tree, '{'));
if (r === null) return null;
return [Syntax.itemText(items), Syntax.itemText(r[1].toArray())];
}
it('should include semicolon', () => {
expect(stmt('i am a statement ; ')).toEqual(['i am a statement;', ' ']);
});
it('should include newline', () => {
expect(stmt('i am a statement \n ')).toEqual(['i am a statement\n', ' ']);
});
it('should include closing brace on the same line', () => {
// Note that `" remainder is in outer group"` is discarded by `laxRead`.
expect(stmt('i am a statement } remainder is in outer group'))
.toEqual(['i am a statement', '']);
});
});

View File

@ -0,0 +1,38 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
import { is, preserves } from '@preserves/core';
declare global {
namespace jest {
interface Matchers<R> {
is(expected: any): R;
toThrowFilter(f: (e: Error) => boolean): R;
}
}
}
expect.extend({
is(actual, expected) {
return is(actual, expected)
? { message: () => preserves`expected ${actual} not to be Preserves.is to ${expected}`,
pass: true }
: { message: () => preserves`expected ${actual} to be Preserves.is to ${expected}`,
pass: false };
},
toThrowFilter(thunk, f) {
try {
thunk();
return { message: () => preserves`expected an exception`, pass: false };
} catch (e) {
if (f(e)) {
return { message: () => preserves`expected an exception not matching the filter`,
pass: true };
} else {
return { message: () => preserves`expected an exception matching the filter: ${(e as any)?.constructor?.name}`,
pass: false };
}
}
}
});

View File

@ -1 +0,0 @@
../../Makefile.generic-package

View File

@ -1,6 +1,6 @@
#!/usr/bin/env node
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
/// SPDX-FileCopyrightText: Copyright © 2016-2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
import {
Pattern as P,

View File

@ -1,6 +1,6 @@
#!/usr/bin/env -S npx ts-node -O '{"module": "commonjs"}'
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
/// SPDX-FileCopyrightText: Copyright © 2016-2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
import {
Pattern as P,

View File

@ -1,7 +1,5 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
import 'preserves';
/// SPDX-FileCopyrightText: Copyright © 2016-2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
export default {
preset: 'ts-jest',

View File

@ -0,0 +1,14 @@
version 1 .
embeddedType EntityRef.Cap .
ActionDescription =
/ @spawnActor <spawn-actor @detail OptionalAny @initialAssertions #{protocol.Handle}>
/ @stopActor <stop-actor @error OptionalAny>
/ @inertCheck <inert-check>
/ <assert @target #:any @crossSpace bool @handle protocol.Handle @assertion any>
/ <retract @target #:any @crossSpace bool @handle protocol.Handle>
/ <message @target #:any @assertion any>
/ <sync @target #:any @callback #:any>
.
OptionalAny = <none> / <some @value any> .

View File

@ -1,30 +1,41 @@
{
"name": "@syndicate-lang/core",
"version": "0.10.2",
"version": "0.34.1",
"description": "Syndicate/JS for browser and node.js",
"homepage": "https://github.com/syndicate-lang/syndicate-js/tree/master/packages/core",
"homepage": "https://github.com/syndicate-lang/syndicate-js/tree/main/packages/core",
"license": "GPL-3.0+",
"publishConfig": {
"access": "public"
},
"repository": "github:syndicate-lang/syndicate-js",
"repository": {
"type": "git",
"url": "https://git.syndicate-lang.org/syndicate-lang/syndicate-js"
},
"scripts": {
"prepare": "yarn regenerate && yarn compile && yarn rollup",
"regenerate": "rm -rf ./src/gen && preserves-schema-ts --module EntityRef=./src/runtime/actor.ts --output ./src/gen './protocols/schemas/**/*.prs'",
"regenerate": "rm -rf ./src/gen && preserves-schema-ts --module EntityRef=./src/runtime/actor.ts --output ./src/gen './protocols/schemas' './local-protocols/schemas'",
"regenerate:watch": "yarn regenerate --watch",
"compile": "../../node_modules/.bin/tsc",
"compile:watch": "../../node_modules/.bin/tsc -w",
"rollup": "../../node_modules/.bin/rollup -c",
"rollup:watch": "../../node_modules/.bin/rollup -c -w",
"test": "../../node_modules/.bin/jest",
"cover": "../../node_modules/.bin/nyc --reporter=html ../../node_modules/.bin/jest"
"cover": "../../node_modules/.bin/nyc --reporter=html ../../node_modules/.bin/jest",
"clean": "rm -rf lib dist ./src/gen",
"veryclean": "yarn run clean && rm -rf node_modules"
},
"main": "dist/syndicate.js",
"module": "lib/index.js",
"types": "lib/index.d.ts",
"author": "Tony Garnock-Jones <tonyg@leastfixedpoint.com>",
"devDependencies": {
"@preserves/core": "^0.995.200",
"@preserves/schema-cli": "^0.995.201"
},
"peerDependencies": {
"@preserves/core": ">=0.995.200"
},
"dependencies": {
"@preserves/core": ">=0.18",
"@preserves/schema": ">=0.19"
"salty-crypto": "^0.3.1"
}
}

View File

@ -4,5 +4,5 @@ clean:
rm -f schema-bundle.bin
schema-bundle.bin: schemas/*.prs
preserves-schemac schemas/*.prs > $@.tmp
preserves-schemac schemas > $@.tmp
mv $@.tmp $@

View File

@ -1,16 +1,44 @@
´³bundle·µ³tcp„´³schema·³version³ definitions·³TcpLocal´³rec´³lit³ tcp-local„´³tupleµ´³named³host´³atom³String„„´³named³port´³atom³ SignedInteger„„„„„³ TcpRemote´³rec´³lit³
tcp-remote„´³tupleµ´³named³host´³atom³String„„´³named³port´³atom³ SignedInteger„„„„„³ TcpPeerInfo´³rec´³lit³tcp-peer„´³tupleµ´³named³handle´³embedded³any„„´³named³local´³refµ„³TcpLocal„„´³named³remote´³refµ„³ TcpRemote„„„„„„³ embeddedType´³refµ³ EntityRef„³Cap„„„µ³timer„´³schema·³version³ definitions·³SetTimer´³rec´³lit³ set-timer„´³tupleµ´³named³label³any„´³named³msecs´³atom³Double„„´³named³kind´³refµ„³ TimerKind„„„„„³ LaterThan´³rec´³lit³
later-than„´³tupleµ´³named³msecs´³atom³Double„„„„„³ TimerKind´³orµµ±relative´³lit³relative„„µ±absolute´³lit³absolute„„µ±clear´³lit³clear„„„„³ TimerExpired´³rec´³lit³ timer-expired„´³tupleµ´³named³label³any„´³named³msecs´³atom³Double„„„„„„³ embeddedType€„„µ³stream„´³schema·³version³ definitions·³Mode´³orµµ±bytes´³lit³bytes„„µ±lines´³refµ„³LineMode„„µ±packet´³rec´³lit³packet„´³tupleµ´³named³size´³atom³ SignedInteger„„„„„„µ±object´³rec´³lit³object„´³tupleµ´³named³ description³any„„„„„„„³Sink´³orµµ±source´³rec´³lit³source„´³tupleµ´³named³
´³bundle·µ³tcp„´³schema·³version°³ definitions·³TcpLocal´³rec´³lit³ tcp-local„´³tupleµ´³named³host´³atom³String„„´³named³port´³atom³ SignedInteger„„„„„³ TcpRemote´³rec´³lit³
tcp-remote„´³tupleµ´³named³host´³atom³String„„´³named³port´³atom³ SignedInteger„„„„„³ TcpPeerInfo´³rec´³lit³tcp-peer„´³tupleµ´³named³handle´³embedded³any„„´³named³local´³refµ„³TcpLocal„„´³named³remote´³refµ„³ TcpRemote„„„„„„³ embeddedType´³refµ³ EntityRef„³Cap„„„µ³http„´³schema·³version°³ definitions·³Chunk´³orµµ±string´³atom³String„„µ±bytes´³atom³
ByteString„„„„³Headers´³dictof´³atom³Symbol„´³atom³String„„³MimeType´³atom³Symbol„³
QueryValue´³orµµ±string´³atom³String„„µ±file´³rec´³lit³file„´³tupleµ´³named³filename´³atom³String„„´³named³headers´³refµ„³Headers„„´³named³body´³atom³
ByteString„„„„„„„„³ HostPattern´³orµµ±host´³atom³String„„µ±any´³lit€„„„„³ HttpBinding´³rec´³lit³ http-bind„´³tupleµ´³named³host´³refµ„³ HostPattern„„´³named³port´³atom³ SignedInteger„„´³named³method´³refµ„³ MethodPattern„„´³named³path´³refµ„³ PathPattern„„´³named³handler´³embedded´³refµ„³ HttpRequest„„„„„„³ HttpContext´³rec´³lit³request„´³tupleµ´³named³req´³refµ„³ HttpRequest„„´³named³res´³embedded´³refµ„³ HttpResponse„„„„„„³ HttpRequest´³rec´³lit³ http-request„´³tupleµ´³named³sequenceNumber´³atom³ SignedInteger„„´³named³host´³refµ„³ RequestHost„„´³named³port´³atom³ SignedInteger„„´³named³method´³atom³Symbol„„´³named³path´³seqof´³atom³String„„„´³named³headers´³refµ„³Headers„„´³named³query´³dictof´³atom³Symbol„´³seqof´³refµ„³
QueryValue„„„„´³named³body´³refµ„³ RequestBody„„„„„³ HttpService´³rec´³lit³ http-service„´³tupleµ´³named³host´³refµ„³ HostPattern„„´³named³port´³atom³ SignedInteger„„´³named³method´³refµ„³ MethodPattern„„´³named³path´³refµ„³ PathPattern„„„„„³ PathPattern´³seqof´³refµ„³PathPatternElement„„³ RequestBody´³orµµ±present´³atom³
ByteString„„µ±absent´³lit€„„„„³ RequestHost´³orµµ±present´³atom³String„„µ±absent´³lit€„„„„³ HttpListener´³rec´³lit³ http-listener„´³tupleµ´³named³port´³atom³ SignedInteger„„„„„³ HttpResponse´³orµµ±status´³rec´³lit³status„´³tupleµ´³named³code´³atom³ SignedInteger„„´³named³message´³atom³String„„„„„„µ±header´³rec´³lit³header„´³tupleµ´³named³name´³atom³Symbol„„´³named³value´³atom³String„„„„„„µ±chunk´³rec´³lit³chunk„´³tupleµ´³named³chunk´³refµ„³Chunk„„„„„„µ±done´³rec´³lit³done„´³tupleµ´³named³chunk´³refµ„³Chunk„„„„„„„„³ MethodPattern´³orµµ±any´³lit€„„µ±specific´³atom³Symbol„„„„³PathPatternElement´³orµµ±label´³atom³String„„µ±wildcard´³lit³_„„µ±rest´³lit³...„„„„„³ embeddedType€„„µ³noise„´³schema·³version°³ definitions·³Packet´³orµµ±complete´³atom³
ByteString„„µ±
fragmented´³seqof´³atom³
ByteString„„„„„³ Initiator´³rec´³lit³ initiator„´³tupleµ´³named³initiatorSession´³embedded´³refµ„³Packet„„„„„„³ NoiseSpec´³andµ´³dict·³key´³named³key´³atom³
ByteString„„³service´³named³service´³refµ„³ServiceSelector„„„„´³named³protocol´³refµ„³ NoiseProtocol„„´³named³ preSharedKeys´³refµ„³NoisePreSharedKeys„„„„³ SessionItem´³orµµ± Initiator´³refµ„³ Initiator„„µ±Packet´³refµ„³Packet„„„„³ NoiseProtocol´³orµµ±present´³dict·³protocol´³named³protocol´³atom³String„„„„„µ±invalid´³dict·³protocol´³named³protocol³any„„„„µ±absent´³dict·„„„„„³ NoiseStepType´³lit³noise„³SecretKeyField´³orµµ±present´³dict·³ secretKey´³named³ secretKey´³atom³
ByteString„„„„„µ±invalid´³dict·³ secretKey´³named³ secretKey³any„„„„µ±absent´³dict·„„„„„³DefaultProtocol´³lit±!Noise_NK_25519_ChaChaPoly_BLAKE2s„³NoiseStepDetail´³refµ„³ServiceSelector„³ServiceSelector³any³NoiseServiceSpec´³andµ´³named³base´³refµ„³ NoiseSpec„„´³named³ secretKey´³refµ„³SecretKeyField„„„„³NoisePreSharedKeys´³orµµ±present´³dict·³ preSharedKeys´³named³ preSharedKeys´³seqof´³atom³
ByteString„„„„„„µ±invalid´³dict·³ preSharedKeys´³named³ preSharedKeys³any„„„„µ±absent´³dict·„„„„„³NoisePathStepDetail´³refµ„³ NoiseSpec„³NoiseDescriptionDetail´³refµ„³NoiseServiceSpec„„³ embeddedType´³refµ³ EntityRef„³Cap„„„µ³timer„´³schema·³version°³ definitions·³SetTimer´³rec´³lit³ set-timer„´³tupleµ´³named³label³any„´³named³seconds´³atom³Double„„´³named³kind´³refµ„³ TimerKind„„„„„³ LaterThan´³rec´³lit³
later-than„´³tupleµ´³named³seconds´³atom³Double„„„„„³ TimerKind´³orµµ±relative´³lit³relative„„µ±absolute´³lit³absolute„„µ±clear´³lit³clear„„„„³ TimerExpired´³rec´³lit³ timer-expired„´³tupleµ´³named³label³any„´³named³seconds´³atom³Double„„„„„„³ embeddedType€„„µ³trace„´³schema·³version°³ definitions·³Oid³any³Name´³orµµ± anonymous´³rec´³lit³ anonymous„´³tupleµ„„„„µ±named´³rec´³lit³named„´³tupleµ´³named³name³any„„„„„„„³Target´³rec´³lit³entity„´³tupleµ´³named³actor´³refµ„³ActorId„„´³named³facet´³refµ„³FacetId„„´³named³oid´³refµ„³Oid„„„„„³TaskId³any³TurnId³any³ActorId³any³FacetId³any³ TurnCause´³orµµ±turn´³rec´³lit³ caused-by„´³tupleµ´³named³id´³refµ„³TurnId„„„„„„µ±cleanup´³rec´³lit³cleanup„´³tupleµ„„„„µ±linkedTaskRelease´³rec´³lit³linked-task-release„´³tupleµ´³named³id´³refµ„³TaskId„„´³named³reason´³refµ„³LinkedTaskReleaseReason„„„„„„µ±periodicActivation´³rec´³lit³periodic-activation„´³tupleµ´³named³period´³atom³Double„„„„„„µ±delay´³rec´³lit³delay„´³tupleµ´³named³ causingTurn´³refµ„³TurnId„„´³named³amount´³atom³Double„„„„„„µ±external´³rec´³lit³external„´³tupleµ´³named³ description³any„„„„„„„³ TurnEvent´³orµµ±assert´³rec´³lit³assert„´³tupleµ´³named³ assertion´³refµ„³AssertionDescription„„´³named³handle´³refµ³protocol„³Handle„„„„„„µ±retract´³rec´³lit³retract„´³tupleµ´³named³handle´³refµ³protocol„³Handle„„„„„„µ±message´³rec´³lit³message„´³tupleµ´³named³body´³refµ„³AssertionDescription„„„„„„µ±sync´³rec´³lit³sync„´³tupleµ´³named³peer´³refµ„³Target„„„„„„µ± breakLink´³rec´³lit³
break-link„´³tupleµ´³named³source´³refµ„³ActorId„„´³named³handle´³refµ³protocol„³Handle„„„„„„„„³
ExitStatus´³orµµ±ok´³lit³ok„„µ±Error´³refµ³protocol„³Error„„„„³
TraceEntry´³rec´³lit³trace„´³tupleµ´³named³ timestamp´³atom³Double„„´³named³actor´³refµ„³ActorId„„´³named³item´³refµ„³ActorActivation„„„„„³ActorActivation´³orµµ±start´³rec´³lit³start„´³tupleµ´³named³ actorName´³refµ„³Name„„„„„„µ±turn´³refµ„³TurnDescription„„µ±stop´³rec´³lit³stop„´³tupleµ´³named³status´³refµ„³
ExitStatus„„„„„„„„³FacetStopReason´³orµµ±explicitAction´³lit³explicit-action„„µ±inert´³lit³inert„„µ±parentStopping´³lit³parent-stopping„„µ± actorStopping´³lit³actor-stopping„„„„³TurnDescription´³rec´³lit³turn„´³tupleµ´³named³id´³refµ„³TurnId„„´³named³cause´³refµ„³ TurnCause„„´³named³actions´³seqof´³refµ„³ActionDescription„„„„„„³ActionDescription´³orµµ±dequeue´³rec´³lit³dequeue„´³tupleµ´³named³event´³refµ„³TargetedTurnEvent„„„„„„µ±enqueue´³rec´³lit³enqueue„´³tupleµ´³named³event´³refµ„³TargetedTurnEvent„„„„„„µ±dequeueInternal´³rec´³lit³dequeue-internal„´³tupleµ´³named³event´³refµ„³TargetedTurnEvent„„„„„„µ±enqueueInternal´³rec´³lit³enqueue-internal„´³tupleµ´³named³event´³refµ„³TargetedTurnEvent„„„„„„µ±spawn´³rec´³lit³spawn„´³tupleµ´³named³link´³atom³Boolean„„´³named³id´³refµ„³ActorId„„„„„„µ±link´³rec´³lit³link„´³tupleµ´³named³ parentActor´³refµ„³ActorId„„´³named³ childToParent´³refµ³protocol„³Handle„„´³named³
childActor´³refµ„³ActorId„„´³named³ parentToChild´³refµ³protocol„³Handle„„„„„„µ±
facetStart´³rec´³lit³ facet-start„´³tupleµ´³named³path´³seqof´³refµ„³FacetId„„„„„„„µ± facetStop´³rec´³lit³
facet-stop„´³tupleµ´³named³path´³seqof´³refµ„³FacetId„„„´³named³reason´³refµ„³FacetStopReason„„„„„„µ±linkedTaskStart´³rec´³lit³linked-task-start„´³tupleµ´³named³taskName´³refµ„³Name„„´³named³id´³refµ„³TaskId„„„„„„„„³TargetedTurnEvent´³rec´³lit³event„´³tupleµ´³named³target´³refµ„³Target„„´³named³detail´³refµ„³ TurnEvent„„„„„³AssertionDescription´³orµµ±value´³rec´³lit³value„´³tupleµ´³named³value³any„„„„„µ±opaque´³rec´³lit³opaque„´³tupleµ´³named³ description³any„„„„„„„³LinkedTaskReleaseReason´³orµµ± cancelled´³lit³ cancelled„„µ±normal´³lit³normal„„„„„³ embeddedType´³refµ³ EntityRef„³Cap„„„µ³stdenv„´³schema·³version°³ definitions·³ StandardRoute´³orµµ±standard´³ tuplePrefixµ´³named³
transports´³seqof´³refµ„³StandardTransport„„„´³named³key´³atom³
ByteString„„´³named³service³any„´³named³sig´³atom³
ByteString„„´³named³oid³any„„´³named³caveats´³seqof´³refµ³sturdy„³Caveat„„„„„µ±general´³refµ³
gatekeeper„³Route„„„„³StandardTransport´³orµµ±wsUrl´³atom³String„„µ±other³any„„„„³ embeddedType€„„µ³stream„´³schema·³version°³ definitions·³Mode´³orµµ±bytes´³lit³bytes„„µ±lines´³refµ„³LineMode„„µ±packet´³rec´³lit³packet„´³tupleµ´³named³size´³atom³ SignedInteger„„„„„„µ±object´³rec´³lit³object„´³tupleµ´³named³ description³any„„„„„„„³Sink´³orµµ±source´³rec´³lit³source„´³tupleµ´³named³
controller´³embedded´³refµ„³Source„„„„„„„µ± StreamError´³refµ„³ StreamError„„µ±data´³rec´³lit³data„´³tupleµ´³named³payload³any„´³named³mode´³refµ„³Mode„„„„„„µ±eof´³rec´³lit³eof„´³tupleµ„„„„„„³Source´³orµµ±sink´³rec´³lit³sink„´³tupleµ´³named³
controller´³embedded´³refµ„³Sink„„„„„„„µ± StreamError´³refµ„³ StreamError„„µ±credit´³rec´³lit³credit„´³tupleµ´³named³amount´³refµ„³ CreditAmount„„´³named³mode´³refµ„³Mode„„„„„„„„³LineMode´³orµµ±lf´³lit³lf„„µ±crlf´³lit³crlf„„„„³ StreamError´³rec´³lit³error„´³tupleµ´³named³message´³atom³String„„„„„³ CreditAmount´³orµµ±count´³atom³ SignedInteger„„µ± unbounded´³lit³ unbounded„„„„³StreamConnection´³rec´³lit³stream-connection„´³tupleµ´³named³source´³embedded´³refµ„³Source„„„´³named³sink´³embedded´³refµ„³Sink„„„´³named³spec³any„„„„³StreamListenerError´³rec´³lit³stream-listener-error„´³tupleµ´³named³spec³any„´³named³message´³atom³String„„„„„³StreamListenerReady´³rec´³lit³stream-listener-ready„´³tupleµ´³named³spec³any„„„„„³ embeddedType´³refµ³ EntityRef„³Cap„„„µ³sturdy„´³schema·³version³ definitions·³Lit´³rec´³lit³lit„´³tupleµ´³named³value³any„„„„³Oid´³atom³ SignedInteger„³Alts´³rec´³lit³or„´³tupleµ´³named³ alternatives´³seqof´³refµ„³Rewrite„„„„„„³CArr´³rec´³lit³arr„´³tupleµ´³named³arity´³atom³ SignedInteger„„„„„³CRec´³rec´³lit³rec„´³tupleµ´³named³label³any„´³named³arity´³atom³ SignedInteger„„„„„³PAnd´³rec´³lit³and„´³tupleµ´³named³patterns´³seqof´³refµ„³Pattern„„„„„„³PNot´³rec´³lit³not„´³tupleµ´³named³pattern´³refµ„³Pattern„„„„„³TRef´³rec´³lit³ref„´³tupleµ´³named³binding´³atom³ SignedInteger„„„„„³CDict´³rec´³lit³dict„´³tupleµ„„„³PAtom´³orµµ±Boolean´³lit³Boolean„„µ±Float´³lit³Float„„µ±Double´³lit³Double„„µ± SignedInteger´³lit³ SignedInteger„„µ±String´³lit³String„„µ±
controller´³embedded´³refµ„³Sink„„„„„„„µ± StreamError´³refµ„³ StreamError„„µ±credit´³rec´³lit³credit„´³tupleµ´³named³amount´³refµ„³ CreditAmount„„´³named³mode´³refµ„³Mode„„„„„„„„³LineMode´³orµµ±lf´³lit³lf„„µ±crlf´³lit³crlf„„„„³ StreamError´³rec´³lit³error„´³tupleµ´³named³message´³atom³String„„„„„³ CreditAmount´³orµµ±count´³atom³ SignedInteger„„µ± unbounded´³lit³ unbounded„„„„³StreamConnection´³rec´³lit³stream-connection„´³tupleµ´³named³source´³embedded´³refµ„³Source„„„´³named³sink´³embedded´³refµ„³Sink„„„´³named³spec³any„„„„³StreamListenerError´³rec´³lit³stream-listener-error„´³tupleµ´³named³spec³any„´³named³message´³atom³String„„„„„³StreamListenerReady´³rec´³lit³stream-listener-ready„´³tupleµ´³named³spec³any„„„„„³ embeddedType´³refµ³ EntityRef„³Cap„„„µ³sturdy„´³schema·³version°³ definitions·³Lit´³rec´³lit³lit„´³tupleµ´³named³value³any„„„„³Oid´³atom³ SignedInteger„³Alts´³rec´³lit³or„´³tupleµ´³named³ alternatives´³seqof´³refµ„³Rewrite„„„„„„³PAnd´³rec´³lit³and„´³tupleµ´³named³patterns´³seqof´³refµ„³Pattern„„„„„„³PNot´³rec´³lit³not„´³tupleµ´³named³pattern´³refµ„³Pattern„„„„„³TRef´³rec´³lit³ref„´³tupleµ´³named³binding´³atom³ SignedInteger„„„„„³PAtom´³orµµ±Boolean´³lit³Boolean„„µ±Double´³lit³Double„„µ± SignedInteger´³lit³ SignedInteger„„µ±String´³lit³String„„µ±
ByteString´³lit³
ByteString„„µ±Symbol´³lit³Symbol„„„„³PBind´³rec´³lit³bind„´³tupleµ´³named³pattern´³refµ„³Pattern„„„„„³Caveat´³orµµ±Rewrite´³refµ„³Rewrite„„µ±Alts´³refµ„³Alts„„„„³Pattern´³orµµ±PDiscard´³refµ„³PDiscard„„µ±PAtom´³refµ„³PAtom„„µ± PEmbedded´³refµ„³ PEmbedded„„µ±PBind´³refµ„³PBind„„µ±PAnd´³refµ„³PAnd„„µ±PNot´³refµ„³PNot„„µ±Lit´³refµ„³Lit„„µ± PCompound´³refµ„³ PCompound„„„„³Rewrite´³rec´³lit³rewrite„´³tupleµ´³named³pattern´³refµ„³Pattern„„´³named³template´³refµ„³Template„„„„„³WireRef´³orµµ±mine´³tupleµ´³lit<69>´³named³oid´³refµ„³Oid„„„„„µ±yours´³ tuplePrefixµ´³lit´³named³oid´³refµ„³Oid„„„´³named³ attenuation´³seqof´³refµ„³Caveat„„„„„„„³PDiscard´³rec´³lit³_„´³tupleµ„„„³Template´³orµµ±
ByteString„„µ±Symbol´³lit³Symbol„„„„³PBind´³rec´³lit³bind„´³tupleµ´³named³pattern´³refµ„³Pattern„„„„„³Caveat´³orµµ±Rewrite´³refµ„³Rewrite„„µ±Alts´³refµ„³Alts„„µ±Reject´³refµ„³Reject„„µ±unknown³any„„„³Reject´³rec´³lit³reject„´³tupleµ´³named³pattern´³refµ„³Pattern„„„„„³Pattern´³orµµ±PDiscard´³refµ„³PDiscard„„µ±PAtom´³refµ„³PAtom„„µ± PEmbedded´³refµ„³ PEmbedded„„µ±PBind´³refµ„³PBind„„µ±PAnd´³refµ„³PAnd„„µ±PNot´³refµ„³PNot„„µ±Lit´³refµ„³Lit„„µ± PCompound´³refµ„³ PCompound„„„„³Rewrite´³rec´³lit³rewrite„´³tupleµ´³named³pattern´³refµ„³Pattern„„´³named³template´³refµ„³Template„„„„„³WireRef´³orµµ±mine´³tupleµ´³lit°„´³named³oid´³refµ„³Oid„„„„„µ±yours´³ tuplePrefixµ´³lit°„´³named³oid´³refµ„³Oid„„„´³named³ attenuation´³seqof´³refµ„³Caveat„„„„„„„³PDiscard´³rec´³lit³_„´³tupleµ„„„³Template´³orµµ±
TAttenuate´³refµ„³
TAttenuate„„µ±TRef´³refµ„³TRef„„µ±Lit´³refµ„³Lit„„µ± TCompound´³refµ„³ TCompound„„„„³ PCompound´³rec´³lit³compound„´³tupleµ´³named³ctor´³refµ„³ConstructorSpec„„´³named³members´³refµ„³PCompoundMembers„„„„„³ PEmbedded´³lit³Embedded„³ SturdyRef´³rec´³lit³ref„´³tupleµ´³named³oid³any„´³named³ caveatChain´³seqof´³refµ„³ Attenuation„„„´³named³sig´³atom³
ByteString„„„„„³ TCompound´³rec´³lit³compound„´³tupleµ´³named³ctor´³refµ„³ConstructorSpec„„´³named³members´³refµ„³TCompoundMembers„„„„„³
TAttenuate´³rec´³lit³ attenuate„´³tupleµ´³named³template´³refµ„³Template„„´³named³ attenuation´³refµ„³ Attenuation„„„„„³ Attenuation´³seqof´³refµ„³Caveat„„³ConstructorSpec´³orµµ±CRec´³refµ„³CRec„„µ±CArr´³refµ„³CArr„„µ±CDict´³refµ„³CDict„„„„³PCompoundMembers´³dictof³any´³refµ„³Pattern„„³TCompoundMembers´³dictof³any´³refµ„³Template„„„³ embeddedType´³refµ³ EntityRef„³Cap„„„µ³worker„´³schema·³version³ definitions·³Instance´³rec´³lit³Instance„´³tupleµ´³named³name´³atom³String„„´³named³argument³any„„„„„³ embeddedType´³refµ³ EntityRef„³Cap„„„µ³service„´³schema·³version³ definitions·³State´³orµµ±started´³lit³started„„µ±ready´³lit³ready„„µ±failed´³lit³failed„„µ±complete´³lit³complete„„„„³
RunService´³rec´³lit³ run-service„´³tupleµ´³named³ serviceName³any„„„„³ CoreService´³rec´³lit³ core-service„´³tupleµ´³named³ serviceName³any„„„„³ ServiceState´³rec´³lit³ service-state„´³tupleµ´³named³ serviceName³any„´³named³state´³refµ„³State„„„„„³ ServiceObject´³rec´³lit³service-object„´³tupleµ´³named³ serviceName³any„´³named³object³any„„„„³RequireService´³rec´³lit³require-service„´³tupleµ´³named³ serviceName³any„„„„³ServiceDependency´³rec´³lit³
depends-on„´³tupleµ´³named³depender³any„´³named³dependee´³refµ„³ ServiceState„„„„„„³ embeddedType´³refµ³ EntityRef„³Cap„„„µ³protocol„´³schema·³version³ definitions·³Oid´³atom³ SignedInteger„³Sync´³rec´³lit³sync„´³tupleµ´³named³peer´³embedded´³lit<69>„„„„„„³Turn´³seqof´³refµ„³ TurnEvent„„³Error´³rec´³lit³error„´³tupleµ´³named³message´³atom³String„„´³named³detail³any„„„„³Event´³orµµ±Assert´³refµ„³Assert„„µ±Retract´³refµ„³Retract„„µ±Message´³refµ„³Message„„µ±Sync´³refµ„³Sync„„„„³Assert´³rec´³lit³assert„´³tupleµ´³named³ assertion´³refµ„³ Assertion„„´³named³handle´³refµ„³Handle„„„„„³Handle´³atom³ SignedInteger„³Packet´³orµµ±Turn´³refµ„³Turn„„µ±Error´³refµ„³Error„„„„³Message´³rec´³lit³message„´³tupleµ´³named³body´³refµ„³ Assertion„„„„„³Retract´³rec´³lit³retract„´³tupleµ´³named³handle´³refµ„³Handle„„„„„³ Assertion³any³ TurnEvent´³tupleµ´³named³oid´³refµ„³Oid„„´³named³event´³refµ„³Event„„„„„³ embeddedType€„„µ³ dataspace„´³schema·³version³ definitions·³Observe´³rec´³lit³Observe„´³tupleµ´³named³pattern´³refµ³dataspacePatterns„³Pattern„„´³named³observer´³embedded³any„„„„„„³ embeddedType´³refµ³ EntityRef„³Cap„„„µ³
gatekeeper„´³schema·³version³ definitions·³Bind´³rec´³lit³bind„´³tupleµ´³named³oid³any„´³named³key´³atom³
ByteString„„´³named³target´³embedded³any„„„„„³Resolve´³rec´³lit³resolve„´³tupleµ´³named³ sturdyref´³refµ³sturdy„³ SturdyRef„„´³named³observer´³embedded´³embedded³any„„„„„„„³ embeddedType´³refµ³ EntityRef„³Cap„„„µ³ racketEvent„´³schema·³version³ definitions·³ RacketEvent´³rec´³lit³ racket-event„´³tupleµ´³named³source´³embedded³any„„´³named³event´³embedded³any„„„„„„³ embeddedType€„„µ³transportAddress„´³schema·³version³ definitions·³Tcp´³rec´³lit³tcp„´³tupleµ´³named³host´³atom³String„„´³named³port´³atom³ SignedInteger„„„„„³Unix´³rec´³lit³unix„´³tupleµ´³named³path´³atom³String„„„„„³Stdio´³rec´³lit³stdio„´³tupleµ„„„³ WebSocket´³rec´³lit³ws„´³tupleµ´³named³url´³atom³String„„„„„„³ embeddedType€„„µ³dataspacePatterns„´³schema·³version³ definitions·³CArr´³rec´³lit³arr„´³tupleµ´³named³arity´³atom³ SignedInteger„„„„„³CRec´³rec´³lit³rec„´³tupleµ´³named³label³any„´³named³arity´³atom³ SignedInteger„„„„„³DLit´³rec´³lit³lit„´³tupleµ´³named³value³any„„„„³CDict´³rec´³lit³dict„´³tupleµ„„„³DBind´³rec´³lit³bind„´³tupleµ´³named³pattern´³refµ„³Pattern„„„„„³Pattern´³orµµ±DDiscard´³refµ„³DDiscard„„µ±DBind´³refµ„³DBind„„µ±DLit´³refµ„³DLit„„µ± DCompound´³refµ„³ DCompound„„„„³DDiscard´³rec´³lit³_„´³tupleµ„„„³ DCompound´³orµµ±rec´³rec´³lit³compound„´³tupleµ´³named³ctor´³refµ„³CRec„„´³named³members´³dictof´³atom³ SignedInteger„´³refµ„³Pattern„„„„„„„µ±arr´³rec´³lit³compound„´³tupleµ´³named³ctor´³refµ„³CArr„„´³named³members´³dictof´³atom³ SignedInteger„´³refµ„³Pattern„„„„„„„µ±dict´³rec´³lit³compound„´³tupleµ´³named³ctor´³refµ„³CDict„„´³named³members´³dictof³any´³refµ„³Pattern„„„„„„„„„„³ embeddedType´³refµ³ EntityRef„³Cap„„„µ³secureChatProtocol„´³schema·³version³ definitions·³Join´³rec´³lit³
joinedUser„´³tupleµ´³named³uid´³refµ„³UserId„„´³named³handle´³embedded´³refµ„³Session„„„„„„³Says´³rec´³lit³says„´³tupleµ´³named³who´³refµ„³UserId„„´³named³what´³atom³String„„„„„³UserId´³atom³ SignedInteger„³Session´³orµµ± observeUsers´³rec´³lit³Observe„´³tupleµ´³lit³user„´³named³observer´³embedded´³refµ„³UserInfo„„„„„„„µ± observeSpeech´³rec´³lit³Observe„´³tupleµ´³lit³says„´³named³observer´³embedded´³refµ„³Says„„„„„„„µ± NickClaim´³refµ„³ NickClaim„„µ±Says´³refµ„³Says„„„„³UserInfo´³rec´³lit³user„´³tupleµ´³named³uid´³refµ„³UserId„„´³named³name´³atom³String„„„„„³ NickClaim´³rec´³lit³ claimNick„´³tupleµ´³named³uid´³refµ„³UserId„„´³named³name´³atom³String„„´³named³k´³embedded´³refµ„³NickClaimResponse„„„„„„³ NickConflict´³rec´³lit³ nickConflict„´³tupleµ„„„³NickClaimResponse´³orµµ±true´³lit<69>„„µ± NickConflict´³refµ„³ NickConflict„„„„„³ embeddedType´³refµ³ EntityRef„³Cap„„„µ³simpleChatProtocol„´³schema·³version³ definitions·³Says´³rec´³lit³Says„´³tupleµ´³named³who´³atom³String„„´³named³what´³atom³String„„„„„³Present´³rec´³lit³Present„´³tupleµ´³named³username´³atom³String„„„„„„³ embeddedType´³refµ³ EntityRef„³Cap„„„„„
TAttenuate„„µ±TRef´³refµ„³TRef„„µ±Lit´³refµ„³Lit„„µ± TCompound´³refµ„³ TCompound„„„„³ PCompound´³orµµ±rec´³rec´³lit³rec„´³tupleµ´³named³label³any„´³named³fields´³seqof´³refµ„³Pattern„„„„„„„µ±arr´³rec´³lit³arr„´³tupleµ´³named³items´³seqof´³refµ„³Pattern„„„„„„„µ±dict´³rec´³lit³dict„´³tupleµ´³named³entries´³dictof³any´³refµ„³Pattern„„„„„„„„„³ PEmbedded´³lit³Embedded„³ SturdyRef´³rec´³lit³ref„´³tupleµ´³named³
parameters´³refµ„³
Parameters„„„„„³ TCompound´³orµµ±rec´³rec´³lit³rec„´³tupleµ´³named³label³any„´³named³fields´³seqof´³refµ„³Template„„„„„„„µ±arr´³rec´³lit³arr„´³tupleµ´³named³items´³seqof´³refµ„³Template„„„„„„„µ±dict´³rec´³lit³dict„´³tupleµ´³named³entries´³dictof³any´³refµ„³Template„„„„„„„„„³
Parameters´³andµ´³dict·³oid´³named³oid³any„³sig´³named³sig´³atom³
ByteString„„„„´³named³caveats´³refµ„³ CaveatsField„„„„³
TAttenuate´³rec´³lit³ attenuate„´³tupleµ´³named³template´³refµ„³Template„„´³named³ attenuation´³seqof´³refµ„³Caveat„„„„„„³ CaveatsField´³orµµ±present´³dict·³caveats´³named³caveats´³seqof´³refµ„³Caveat„„„„„„µ±invalid´³dict·³caveats´³named³caveats³any„„„„µ±absent´³dict·„„„„„³SturdyStepType´³lit³ref„³SturdyStepDetail´³refµ„³
Parameters„³SturdyPathStepDetail´³refµ„³
Parameters„³SturdyDescriptionDetail´³dict·³key´³named³key´³atom³
ByteString„„³oid´³named³oid³any„„„„³ embeddedType´³refµ³ EntityRef„³Cap„„„µ³worker„´³schema·³version°³ definitions·³Instance´³rec´³lit³Instance„´³tupleµ´³named³name´³atom³String„„´³named³argument³any„„„„„³ embeddedType´³refµ³ EntityRef„³Cap„„„µ³service„´³schema·³version°³ definitions·³State´³orµµ±started´³lit³started„„µ±ready´³lit³ready„„µ±failed´³lit³failed„„µ±complete´³lit³complete„„µ± userDefined³any„„„³
RunService´³rec´³lit³ run-service„´³tupleµ´³named³ serviceName³any„„„„³ ServiceState´³rec´³lit³ service-state„´³tupleµ´³named³ serviceName³any„´³named³state´³refµ„³State„„„„„³ ServiceObject´³rec´³lit³service-object„´³tupleµ´³named³ serviceName³any„´³named³object³any„„„„³RequireService´³rec´³lit³require-service„´³tupleµ´³named³ serviceName³any„„„„³RestartService´³rec´³lit³restart-service„´³tupleµ´³named³ serviceName³any„„„„³ServiceDependency´³rec´³lit³
depends-on„´³tupleµ´³named³depender³any„´³named³dependee´³refµ„³ ServiceState„„„„„„³ embeddedType´³refµ³ EntityRef„³Cap„„„µ³protocol„´³schema·³version°³ definitions·³Oid´³atom³ SignedInteger„³Sync´³rec´³lit³S„´³tupleµ´³named³peer´³embedded´³lit<69>„„„„„„³Turn´³seqof´³refµ„³ TurnEvent„„³Error´³rec´³lit³error„´³tupleµ´³named³message´³atom³String„„´³named³detail³any„„„„³Event´³orµµ±Assert´³refµ„³Assert„„µ±Retract´³refµ„³Retract„„µ±Message´³refµ„³Message„„µ±Sync´³refµ„³Sync„„„„³Assert´³rec´³lit³A„´³tupleµ´³named³ assertion´³refµ„³ Assertion„„´³named³handle´³refµ„³Handle„„„„„³Handle´³atom³ SignedInteger„³Packet´³orµµ±Turn´³refµ„³Turn„„µ±Error´³refµ„³Error„„µ± Extension´³refµ„³ Extension„„„„³Message´³rec´³lit³M„´³tupleµ´³named³body´³refµ„³ Assertion„„„„„³Retract´³rec´³lit³R„´³tupleµ´³named³handle´³refµ„³Handle„„„„„³ Assertion³any³ Extension´³rec´³named³label³any„´³named³fields´³seqof³any„„„³ TurnEvent´³tupleµ´³named³oid´³refµ„³Oid„„´³named³event´³refµ„³Event„„„„„³ embeddedType€„„µ³ dataspace„´³schema·³version°³ definitions·³Observe´³rec´³lit³Observe„´³tupleµ´³named³pattern´³refµ³dataspacePatterns„³Pattern„„´³named³observer´³embedded³any„„„„„„³ embeddedType´³refµ³ EntityRef„³Cap„„„µ³
gatekeeper„´³schema·³version°³ definitions·³Bind´³rec´³lit³bind„´³tupleµ´³named³ description´³refµ„³ Description„„´³named³target´³embedded³any„„´³named³observer´³refµ„³ BindObserver„„„„„³Step´³rec´³named³stepType´³atom³Symbol„„´³tupleµ´³named³detail³any„„„„³Bound´³orµµ±bound´³rec´³lit³bound„´³tupleµ´³named³pathStep´³refµ„³PathStep„„„„„„µ±Rejected´³refµ„³Rejected„„„„³Route´³rec´³lit³route„´³ tuplePrefixµ´³named³
transports´³seqof³any„„„´³named³ pathSteps´³seqof´³refµ„³PathStep„„„„„³Resolve´³rec´³lit³resolve„´³tupleµ´³named³step´³refµ„³Step„„´³named³observer´³embedded´³refµ„³Resolved„„„„„„³PathStep´³rec´³named³stepType´³atom³Symbol„„´³tupleµ´³named³detail³any„„„„³Rejected´³rec´³lit³rejected„´³tupleµ´³named³detail³any„„„„³Resolved´³orµµ±accepted´³rec´³lit³accepted„´³tupleµ´³named³responderSession´³embedded³any„„„„„„µ±Rejected´³refµ„³Rejected„„„„³ Description´³rec´³named³stepType´³atom³Symbol„„´³tupleµ´³named³detail³any„„„„³ ResolvePath´³rec´³lit³ resolve-path„´³tupleµ´³named³route´³refµ„³Route„„´³named³addr³any„´³named³control´³embedded´³refµ„³TransportControl„„„´³named³resolved´³refµ„³Resolved„„„„„³ BindObserver´³orµµ±present´³embedded´³refµ„³Bound„„„µ±absent´³lit€„„„„³ForceDisconnect´³rec´³lit³force-disconnect„´³tupleµ„„„³ResolvedPathStep´³rec´³lit³ path-step„´³tupleµ´³named³origin´³embedded´³refµ„³Resolve„„„´³named³pathStep´³refµ„³PathStep„„´³named³resolved´³refµ„³Resolved„„„„„³TransportControl´³refµ„³ForceDisconnect„³TransportConnection´³rec´³lit³connect-transport„´³tupleµ´³named³addr³any„´³named³control´³embedded´³refµ„³TransportControl„„„´³named³resolved´³refµ„³Resolved„„„„„„³ embeddedType´³refµ³ EntityRef„³Cap„„„µ³transportAddress„´³schema·³version°³ definitions·³Tcp´³rec´³lit³tcp„´³tupleµ´³named³host´³atom³String„„´³named³port´³atom³ SignedInteger„„„„„³Unix´³rec´³lit³unix„´³tupleµ´³named³path´³atom³String„„„„„³Stdio´³rec´³lit³stdio„´³tupleµ„„„³ WebSocket´³rec´³lit³ws„´³tupleµ´³named³url´³atom³String„„„„„„³ embeddedType€„„µ³dataspacePatterns„´³schema·³version°³ definitions·³AnyAtom´³orµµ±bool´³atom³Boolean„„µ±double´³atom³Double„„µ±int´³atom³ SignedInteger„„µ±string´³atom³String„„µ±bytes´³atom³
ByteString„„µ±symbol´³atom³Symbol„„µ±embedded´³embedded³any„„„„³Pattern´³orµµ±discard´³rec´³lit³_„´³tupleµ„„„„µ±bind´³rec´³lit³bind„´³tupleµ´³named³pattern´³refµ„³Pattern„„„„„„µ±lit´³rec´³lit³lit„´³tupleµ´³named³value´³refµ„³AnyAtom„„„„„„µ±group´³rec´³lit³group„´³tupleµ´³named³type´³refµ„³ GroupType„„´³named³entries´³dictof³any´³refµ„³Pattern„„„„„„„„„³ GroupType´³orµµ±rec´³rec´³lit³rec„´³tupleµ´³named³label³any„„„„„µ±arr´³rec´³lit³arr„´³tupleµ„„„„µ±dict´³rec´³lit³dict„´³tupleµ„„„„„„„³ embeddedType´³refµ³ EntityRef„³Cap„„„„„

View File

@ -1,4 +1,4 @@
version 1 .
embeddedType EntityRef.Cap .
Observe = <Observe @pattern dataspacePatterns.Pattern @observer #!any>.
Observe = <Observe @pattern dataspacePatterns.Pattern @observer #:any>.

View File

@ -1,16 +1,30 @@
version 1 .
embeddedType EntityRef.Cap .
; Dataspace patterns: a sublanguage of attenuation patterns.
Pattern = DDiscard / DBind / DLit / DCompound .
# Dataspace patterns: *almost* a sublanguage of attenuation patterns.
#
# One key difference is that Dataspace patterns are extensible, in that
# they ignore fields not mentioned in group patterns.
DDiscard = <_>.
DBind = <bind @pattern Pattern>.
DLit = <lit @value any>.
DCompound = @rec <compound @ctor CRec @members { int: Pattern ...:... }>
/ @arr <compound @ctor CArr @members { int: Pattern ...:... }>
/ @dict <compound @ctor CDict @members { any: Pattern ...:... }> .
Pattern =
/ @discard <_>
/ <bind @pattern Pattern>
/ <lit @value AnyAtom>
/ <group @type GroupType @entries { any: Pattern ...:... }>
.
CRec = <rec @label any @arity int>.
CArr = <arr @arity int>.
CDict = <dict>.
GroupType =
/ <rec @label any>
/ <arr>
/ <dict>
.
AnyAtom =
/ @bool bool
/ @double double
/ @int int
/ @string string
/ @bytes bytes
/ @symbol symbol
/ @embedded #:any
.

View File

@ -1,5 +1,87 @@
version 1 .
embeddedType EntityRef.Cap .
Resolve = <resolve @sturdyref sturdy.SturdyRef @observer #!#!any>.
Bind = <bind @oid any @key bytes @target #!any>.
# ---------------------------------------------------------------------------
# Protocol at *gatekeeper* entities
# Assertion. Gatekeeper will attempt to resolve `step`, responding with a `Resolved` to
# `observer`.
Resolve = <resolve @step Step @observer #:Resolved> .
Resolved = <accepted @responderSession #:any> / Rejected .
Step = <<rec> @stepType symbol [@detail any]> .
# ---------------------------------------------------------------------------
# Protocol at dataspaces *associated* with gatekeeper entities
# ## Handling `Resolve` requests
#
# When the gatekeeper entity receives a `Resolve` assertion (call it R1), it
#
# 1. asserts a `Resolve` (call it R2) into its associated dataspace that
# is the same as R1 except it has a different `observer`; and
#
# 2. observes a `Bind` with `description` matching the `step` of R1/R2
# according to `stepType` (e.g. treatment of SturdyStepType is not the
# same as treatment of NoiseStepType).
#
# Normally, an appropriate `Bind` is expected to exist. If the gatekeeper
# sees the `Bind` first, it takes the `target` from it and does whatever
# `stepType` mandates before replying to R1's observer.
#
# However, if a `Resolved` is asserted to R2's observer before a `Bind`
# appears, that resolution is relayed on to R1's observer directly, be it
# positive or negative, and the gatekeeper stops waiting for a `Bind`.
#
# This way, entities can keep an eye out for `Resolve` requests that will
# never complete, and answer `Rejected` to them even when no matching
# `Bind` exists. Entities could also use `Resolve` requests to synthesize a
# `Bind` in a "just-in-time" fashion.
#
# ## General treatment of `Bind` assertions
#
# When the gatekeeper sees a `Bind`, independently of any potential
# `Resolve` requests, it computes an appropriate PathStep from
# `description` pointing at `target`, and responds with a `Bound` to
# `observer` (if supplied).
#
Bind = <bind @description Description @target #:any @observer BindObserver> .
Description = <<rec> @stepType symbol [@detail any]> .
BindObserver = @present #:Bound / @absent #f .
Bound = <bound @pathStep PathStep> / Rejected .
# ---------------------------------------------------------------------------
# Protocol at client-side dataspaces, for resolution utilities
# Assertion. In response to observation of this with appropriate captures/wildcards in `addr`
# and `resolved`, respondent will follow `route.pathSteps` starting from one of the
# `route.transports`, asserting `ResolvePath` with the final `Resolved` as well as the selected
# transport `addr` and a `control` for it.
ResolvePath = <resolve-path @route Route @addr any @control #:TransportControl @resolved Resolved> .
TransportConnection = <connect-transport @addr any @control #:TransportControl @resolved Resolved> .
ResolvedPathStep = <path-step @origin #:Resolve @pathStep PathStep @resolved Resolved> .
PathStep = <<rec> @stepType symbol [@detail any]> .
# A `Route` describes a network path that can be followed to reach some target entity.
#
# It starts with a set of zero or more possible non-Syndicate `transports`. These could be
# `transportAddress.Tcp` values or similar. They are just suggestions; it's quite possible the
# endpoint is reachable by some means not listed. The network outside Syndicate is, after all,
# pretty diverse! In particular, *zero* `transports` may be provided, in which case some
# out-of-band means has to be used to make that first connection.
#
# The `transports` give instructions for contacting the first entity in the `Route` path. Often
# this will be a `gatekeeper`, or a `noise` protocol endpoint, or both. Occasionally, it may
# even be the desired target entity. Subsequent `pathSteps` describe how to proceed from the
# initial entity to the target.
#
# (`transports` should by rights be a set, not a sequence, but that opens up a Can Of Worms
# regarding dataspace patterns including literal sets that I can't deal with right now.)
Route = <route @transports [any ...] @pathSteps PathStep ...> .
TransportControl = ForceDisconnect .
ForceDisconnect = <force-disconnect> .
# ---------------------------------------------------------------------------
Rejected = <rejected @detail any> .

View File

@ -0,0 +1,62 @@
version 1 .
# Assertion in driver DS
# Causes creation of server and route
HttpBinding = <http-bind @host HostPattern @port int @method MethodPattern @path PathPattern @handler #:HttpRequest> .
# Assertion in driver DS
# Describes active server and route
HttpService = <http-service @host HostPattern @port int @method MethodPattern @path PathPattern> .
# Assertion in driver DS
# Describes active listener
HttpListener = <http-listener @port int> .
HostPattern = @host string / @any #f .
PathPattern = [PathPatternElement ...] .
PathPatternElement = @label string / @wildcard =_ / @rest =... .
MethodPattern = @any #f / @specific @"Lowercase" symbol .
# Assertion in driver DS
HttpRequest = <http-request
@sequenceNumber int
@host RequestHost
@port int
@method @"Lowercase" symbol
@path [string ...]
@headers Headers
@query {symbol: [QueryValue ...] ...:...}
@body RequestBody> .
Headers = {@"Lowercase" symbol: string ...:...} .
QueryValue = @string string / <file @filename string @headers Headers @body bytes> .
RequestBody = @present bytes / @absent #f .
RequestHost = @present string / @absent #f .
# Assertion to handler entity
HttpContext = <request @req HttpRequest @res #:HttpResponse> .
# HttpResponse protocol. Delivered to the `res` ref in `HttpContext`.
#
# (status | header)* . chunk* . done
#
# Done triggers completion of the response and retraction of the frame by the peer. If the
# HttpBinding responsible for the request is withdrawn mid-way through a response (i.e. when
# chunked transfer is used and at least one chunk has been sent) the request is abruptly
# closed; if it is withdrawn at any other moment in the lifetime of the request, a 500 Internal
# Server Error is send to the client.
#
@<TODO "trailers?">
HttpResponse =
# Messages.
/ <status @code int @message string>
/ <header @name symbol @value string>
/ <chunk @chunk Chunk>
/ <done @chunk Chunk>
.
Chunk = @string string / @bytes bytes .
# e.g. text/plain, text/html, application/json
MimeType = symbol .

View File

@ -0,0 +1,83 @@
version 1 .
embeddedType EntityRef.Cap .
# https://noiseprotocol.org/
# ---------------------------------------------------------------------------
# Binding and connection
NoiseStepType = =noise .
# In a gatekeeper.Step, use ServiceSelector as detail.
NoiseStepDetail = ServiceSelector .
# In a gatekeeper.PathStep, use a NoiseSpec as detail.
NoisePathStepDetail = NoiseSpec .
# In a gatekeeper.Description, use a NoiseServiceSpec as detail.
NoiseDescriptionDetail = NoiseServiceSpec .
# ---------------------------------------------------------------------------
# Specification of target and bind addresses
ServiceSelector = any .
NoiseSpec = {
# The `serviceSelector` to use in a `NoiseStep` for `gatekeeper.Resolve`.
service: ServiceSelector,
# The responder's static public key. If not required (uncommon!), supply the empty ByteString.
key: bytes,
}
& @protocol NoiseProtocol
& @preSharedKeys NoisePreSharedKeys
.
NoiseServiceSpec = @base NoiseSpec & @secretKey SecretKeyField .
SecretKeyField = @present { secretKey: bytes } / @invalid { secretKey: any } / @absent {} .
# If absent, a default of DefaultProtocol is used. Most services will speak the default.
NoiseProtocol = @present { protocol: string } / @invalid { protocol: any } / @absent {} .
DefaultProtocol = "Noise_NK_25519_ChaChaPoly_BLAKE2s" .
# If present, Noise pre-shared-keys (PSKs) are drawn from the sequence as required; if the
# sequence is exhausted or not supplied, an all-zeros key is used each time a PSK is needed.
NoisePreSharedKeys = @present { preSharedKeys: [bytes ...] } / @invalid { preSharedKeys: any } / @absent {} .
# ---------------------------------------------------------------------------
# Handshaking and running a session
# 1. initiator asserts <resolve <noise ServiceSelector> #:A> at Gatekeeper
# 2. gatekeeper asserts <accepted #:B> at #:A
# 3. initiator asserts <initiator #:C> at #:B and then sends `Packet`s to #:B
# 4. responder sends `Packet`s to #:C
#
# Sessions begin with introduction of initiator (#:C) and responder (#:B) to each other, and
# then proceed by sending `Packet`s (from #:C) to #:B and (from #:B) to #:C according to
# the Noise protocol definition. Each `Packet` represents a complete logical unit of
# communication; for example, a complete Turn when layering the Syndicate protocol over Noise.
# Note well the restriction on Noise messages: no individual complete packet or packet fragment
# may exceed 65535 bytes (N.B. not 65536!). When `fragmented`, each portion of a `Packet` is a
# complete Noise "transport message"; when `complete`, the whole thing is likewise a complete
# "transport message".
#
# Retraction of the `Initiator` ends the session from the initiator-side; retraction of the
# `<accepted ...>` assertion ends the session from the responder-side.
SessionItem = Initiator / Packet .
# Assertion
Initiator = <initiator @initiatorSession #:Packet> .
# Message
Packet = @complete bytes / @fragmented [bytes ...] .
# When layering Syndicate protocol over noise,
#
# - the canonical encoding of the serviceSelector is the prologue
# - protocol.Packets MUST be encoded using the machine-oriented Preserves syntax
# - zero or more Turns are permitted per noise.Packet
# - each Turn must fit inside a single noise.Packet (fragment if needed)
# - payloads inside a noise.Packet may be padded at the end with byte 0x80 (128), which
# encodes `#f` in the machine-oriented Preserves syntax.
#
# In summary, each noise.Packet, once (reassembled and) decrypted, will be a sequence of zero
# or more machine-encoded protocol.Packets, followed by zero or more 0x80 bytes.
.

View File

@ -1,6 +1,8 @@
version 1 .
Packet = Turn / Error .
Packet = Turn / Error / Extension .
Extension = <<rec> @label any @fields [any ...]> .
Error = <error @message string @detail any>.
@ -11,7 +13,7 @@ Oid = int .
Turn = [TurnEvent ...].
TurnEvent = [@oid Oid @event Event].
Assert = <assert @assertion Assertion @handle Handle>.
Retract = <retract @handle Handle>.
Message = <message @body Assertion>.
Sync = <sync @peer #!#t>.
Assert = <A @assertion Assertion @handle Handle>.
Retract = <R @handle Handle>.
Message = <M @body Assertion>.
Sync = <S @peer #:#t>.

View File

@ -1,3 +0,0 @@
version 1 .
RacketEvent = <racket-event @source #!any @event #!any>.

View File

@ -1,21 +0,0 @@
version 1 .
embeddedType EntityRef.Cap .
UserId = int .
Join = <joinedUser @uid UserId @handle #!Session>.
Session = @observeUsers <Observe =user @observer #!UserInfo>
/ @observeSpeech <Observe =says @observer #!Says>
/ NickClaim
/ Says
.
NickClaim = <claimNick @uid UserId @name string @k #!NickClaimResponse>.
NickClaimResponse = #t / NickConflict .
UserInfo = <user @uid UserId @name string>.
Says = <says @who UserId @what string>.
NickConflict = <nickConflict>.

View File

@ -1,51 +1,51 @@
version 1 .
embeddedType EntityRef.Cap .
; Asserts that a service should begin (and stay) running after waiting
; for its dependencies and considering reverse-dependencies, blocks,
; and so on.
# Asserts that a service should begin (and stay) running after waiting
# for its dependencies and considering reverse-dependencies, blocks,
# and so on.
RequireService = <require-service @serviceName any>.
; Asserts that a service should begin (and stay) running RIGHT NOW,
; without considering its dependencies.
# Asserts that a service should begin (and stay) running RIGHT NOW,
# without considering its dependencies.
RunService = <run-service @serviceName any>.
; Asserts one or more current states of service `serviceName`. The
; overall state of the service is the union of asserted `state`s.
;
; Only a few combinations make sense:
; - `started`
; - `started` + `ready`
; - `failed`
; - `complete`
;
# Asserts one or more current states of service `serviceName`. The
# overall state of the service is the union of asserted `state`s.
#
# Only a few combinations make sense:
# - `started`
# - `started` + `ready`
# - `failed`
# - `complete`
#
ServiceState = <service-state @serviceName any @state State>.
; A running service publishes zero or more of these. The details of
; the object vary by service.
;
# A running service publishes zero or more of these. The details of
# the object vary by service.
#
ServiceObject = <service-object @serviceName any @object any>.
; Possible service states.
# Possible service states.
State =
/ ; The service has begun its startup routine, and may or may not be
; ready to take requests from other parties.
/ # The service has begun its startup routine, and may or may not be
# ready to take requests from other parties.
=started
/ ; The service is ready to take requests from other parties.
; (This state is special in that it is asserted *in addition* to `started`.)
/ # The service is ready to take requests from other parties.
# (This state is special in that it is asserted *in addition* to `started`.)
=ready
/ ; The service has failed.
/ # The service has failed.
=failed
/ ; The service has completed execution.
/ # The service has completed execution.
=complete
/ # Extension or user-defined state
@userDefined any
.
; Asserts that, when `depender` is `require-service`d, it should not
; be started until `dependee` has been asserted.
# Asserts that, when `depender` is `require-service`d, it should not be started until
# `dependee` has been asserted, and also that `dependee`'s `serviceName` should be
# `require-service`d.
ServiceDependency = <depends-on @depender any @dependee ServiceState>.
; Asserts that the service is a "core" service. If *not* specified for
; a service X, where X is not `<milestone Y>` for some Y, the system
; acts as if `<depends-on X <service-state <milestone core> ready>>`
; were asserted.
CoreService = <core-service @serviceName any>.
# Message. Triggers a service restart.
RestartService = <restart-service @serviceName any>.

View File

@ -1,5 +0,0 @@
version 1 .
embeddedType EntityRef.Cap .
Present = <Present @username string>.
Says = <Says @who string @what string>.

View File

@ -0,0 +1,31 @@
version 1 .
# A "standard" route is
#
# - a collection of websocket urls, for transport.
# - a noise tunnel, for server authentication, confidentiality and integrity.
# - a macaroon, for authorization.
#
# Making these choices allows a compact representation. Encoding a binary-syntax representation
# of a standard route using base64 produces a somewhat-convenient blob of text representing
# access to a network object that users can cut and paste.
#
# A `stdenv.StandardRoute.standard` can be rewritten to a `gatekeeper.Route` like this (with
# `$caveats`, if any, added as appropriate):
#
# <route $transports <noise { service: $service key: $key }> <ref { sig: $sig oid: $oid }>>
#
StandardRoute =
/ @standard [@transports [StandardTransport ...]
@key bytes
@service any
@sig bytes
@oid any
@caveats sturdy.Caveat ...]
/ @general gatekeeper.Route
.
StandardTransport =
/ @wsUrl string
/ @other any
.

View File

@ -1,38 +1,38 @@
version 1 .
embeddedType EntityRef.Cap .
; Assertion:
StreamConnection = <stream-connection @source #!Source @sink #!Sink @spec any>.
# Assertion:
StreamConnection = <stream-connection @source #:Source @sink #:Sink @spec any>.
; Assertions:
# Assertions:
StreamListenerReady = <stream-listener-ready @spec any>.
StreamListenerError = <stream-listener-error @spec any @message string>.
; Assertion:
# Assertion:
StreamError = <error @message string>.
Source =
; Assertions:
/ <sink @controller #!Sink>
# Assertions:
/ <sink @controller #:Sink>
/ StreamError
; Messages:
# Messages:
/ <credit @amount CreditAmount @mode Mode>
.
Sink =
; Assertions:
/ <source @controller #!Source>
# Assertions:
/ <source @controller #:Source>
/ StreamError
; Messages:
# Messages:
/ <data @payload any @mode Mode>
/ <eof>
.
; Value:
# Value:
CreditAmount = @count int / @unbounded =unbounded .
; Value:
# Value:
Mode = =bytes / @lines LineMode / <packet @size int> / <object @description any>.
LineMode = =lf / =crlf .

View File

@ -1,44 +1,70 @@
version 1 .
embeddedType EntityRef.Cap .
; Each Attenuation is a stage. The sequence of Attenuations is run RIGHT-TO-LEFT.
; That is, the newest Attenuations are at the right.
SturdyRef = <ref @oid any @caveatChain [Attenuation ...] @sig bytes>.
# ---------------------------------------------------------------------------
# Binding and connection
; An individual Attenuation is run RIGHT-TO-LEFT.
; That is, the newest Caveats are at the right.
Attenuation = [Caveat ...].
SturdyStepType = =ref .
; embodies 1st-party caveats over assertion structure, but nothing else
; can add 3rd-party caveats and richer predicates later
Caveat = Rewrite / Alts .
Rewrite = <rewrite @pattern Pattern @template Template>.
# In a gatekeeper.Step or gatekeeper.PathStep, use Parameters as detail.
SturdyStepDetail = Parameters .
SturdyPathStepDetail = Parameters .
# In a gatekeeper.Description, use the following detail.
SturdyDescriptionDetail = {
oid: any,
key: bytes,
} .
# ---------------------------------------------------------------------------
# Macaroons
# The sequence of Caveats is run RIGHT-TO-LEFT.
# That is, the newest Caveats are at the right.
#
# Let f(k,d) = HMAC-BLAKE2s-256(k,d)[0..16),
# e = canonical machine-oriented serialization of some preserves value, and
# k = the original secret key for the ref.
#
# The `sig` is then f(f(f(f(k, e(oid)), ...), e(Caveat)), ...).
#
SturdyRef = <ref @parameters Parameters> .
Parameters = {
oid: any,
sig: bytes,
} & @caveats CaveatsField .
CaveatsField = @present { caveats: [Caveat ...] } / @invalid { caveats: any } / @absent {} .
# embodies 1st-party caveats over assertion structure, but nothing else
# can add 3rd-party caveats and richer predicates later
Caveat = Rewrite / Alts / Reject / @unknown any .
Rewrite = <rewrite @pattern Pattern @template Template> .
Reject = <reject @pattern Pattern> .
Alts = <or @alternatives [Rewrite ...]>.
Oid = int .
WireRef = @mine [0 @oid Oid] / @yours [1 @oid Oid @attenuation Caveat ...].
;---------------------------------------------------------------------------
ConstructorSpec = CRec / CArr / CDict .
CRec = <rec @label any @arity int>.
CArr = <arr @arity int>.
CDict = <dict>.
# ---------------------------------------------------------------------------
Lit = <lit @value any>.
Pattern = PDiscard / PAtom / PEmbedded / PBind / PAnd / PNot / Lit / PCompound .
PDiscard = <_>.
PAtom = =Boolean / =Float / =Double / =SignedInteger / =String / =ByteString / =Symbol .
PAtom = =Boolean / =Double / =SignedInteger / =String / =ByteString / =Symbol .
PEmbedded = =Embedded .
PBind = <bind @pattern Pattern>.
PAnd = <and @patterns [Pattern ...]>.
PNot = <not @pattern Pattern>.
PCompound = <compound @ctor ConstructorSpec @members PCompoundMembers>.
PCompoundMembers = { any: Pattern ...:... }.
PCompound =
/ @rec <rec @label any @fields [Pattern ...]>
/ @arr <arr @items [Pattern ...]>
/ @dict <dict @entries { any: Pattern ...:... }> .
Template = TAttenuate / TRef / Lit / TCompound .
TAttenuate = <attenuate @template Template @attenuation Attenuation>.
TAttenuate = <attenuate @template Template @attenuation [Caveat ...]>.
TRef = <ref @binding int>.
TCompound = <compound @ctor ConstructorSpec @members TCompoundMembers>.
TCompoundMembers = { any: Template ...:... }.
TCompound =
/ @rec <rec @label any @fields [Template ...]>
/ @arr <arr @items [Template ...]>
/ @dict <dict @entries { any: Template ...:... }> .

View File

@ -4,4 +4,4 @@ embeddedType EntityRef.Cap .
TcpRemote = <tcp-remote @host string @port int>.
TcpLocal = <tcp-local @host string @port int>.
TcpPeerInfo = <tcp-peer @handle #!any @local TcpLocal @remote TcpRemote>.
TcpPeerInfo = <tcp-peer @handle #:any @local TcpLocal @remote TcpRemote>.

View File

@ -1,7 +1,7 @@
version 1 .
SetTimer = <set-timer @label any @msecs double @kind TimerKind>.
TimerExpired = <timer-expired @label any @msecs double>.
SetTimer = <set-timer @label any @seconds double @kind TimerKind>.
TimerExpired = <timer-expired @label any @seconds double>.
TimerKind = =relative / =absolute / =clear .
LaterThan = <later-than @msecs double>.
LaterThan = <later-than @seconds double>.

View File

@ -0,0 +1,96 @@
version 1 .
embeddedType EntityRef.Cap .
TraceEntry = <trace
@timestamp @"seconds since Unix epoch" double
@actor ActorId
@item ActorActivation> .
ActorActivation =
/ <start @actorName Name>
/ @turn TurnDescription
/ <stop @status ExitStatus>
.
Name =
/ <anonymous>
/ <named @name any>
.
ActorId = any .
FacetId = any .
Oid = any .
TaskId = any .
TurnId = any .
ExitStatus = =ok / protocol.Error .
# Trace information associated with a turn.
TurnDescription = <turn @id TurnId @cause TurnCause @actions [ActionDescription ...]> .
# The cause of a turn.
TurnCause =
/ @turn <caused-by @id TurnId>
/ <cleanup>
/ @linkedTaskRelease <linked-task-release @id TaskId @reason LinkedTaskReleaseReason>
/ @periodicActivation <periodic-activation @"`period` is in seconds" @period double>
/ <delay @causingTurn TurnId @"`amount` is in seconds" @amount double>
/ <external @description any>
.
LinkedTaskReleaseReason = =cancelled / =normal .
# An actual event carried within a turn.
TurnEvent =
/ <assert @assertion AssertionDescription @handle protocol.Handle>
/ <retract @handle protocol.Handle>
/ <message @body AssertionDescription>
/ <sync @peer Target>
/ # A souped-up, disguised, special-purpose `retract` event.
@breakLink <break-link @source ActorId @handle protocol.Handle>
.
TargetedTurnEvent = <event @target Target @detail TurnEvent> .
# An action taken during a turn.
ActionDescription =
/ # The active party is processing a new `event` for `target` from the received Turn.
<dequeue @event TargetedTurnEvent>
/ # The active party has queued a new `event` to be processed later by `target`.
<enqueue @event TargetedTurnEvent>
/ # The active party is processing an internally-queued event for one of its own entities.
@dequeueInternal <dequeue-internal @event TargetedTurnEvent>
/ # The active party has scheduled an internally-queued event for one of its own entities.
@enqueueInternal <enqueue-internal @event TargetedTurnEvent>
/ <spawn @link bool @id ActorId>
/ <link
@parentActor ActorId
@childToParent protocol.Handle
@childActor ActorId
@parentToChild protocol.Handle>
/ @facetStart <facet-start @path [FacetId ...]>
/ @facetStop <facet-stop @path [FacetId ...] @reason FacetStopReason>
/ @linkedTaskStart <linked-task-start @taskName Name @id TaskId>
.
# An assertion or the body of a message: either a Preserves value, or
# some opaque system-internal value, represented according to the
# system concerned.
AssertionDescription =
/ <value @value any>
/ <opaque @description any>
.
FacetStopReason =
/ @explicitAction =explicit-action
/ =inert
/ @parentStopping =parent-stopping
/ @actorStopping =actor-stopping
.
Target = <entity @actor ActorId @facet FacetId @oid Oid> .
# For the future: consider including information about `protocol`-level `Turn`s etc sent to
# peers over e.g. Websockets or TCP/IP, allowing cross-correlation of traces from different
# processes and implementations with each other to form a large overall picture.
.

View File

@ -1,17 +1,20 @@
/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
/// SPDX-FileCopyrightText: Copyright © 2016-2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
import { SyndicateRollup } from '../../rollup.js';
const r = new SyndicateRollup('syndicate', { globalName: 'Syndicate' });
export default [
r.config('lib/index.js', r.umd, {
external: ['@preserves/core', 'crypto'],
output: {
globals: {
'crypto': 'crypto',
'@preserves/core': 'Preserves',
},
},
}),
r.config('lib/index.js', r.es6, {
external: ['@preserves/core'],
resolve: {
moduleDirectories: ['stubs', 'node_modules'],
},

Some files were not shown because too many files have changed in this diff Show More