From 82e94573597415951a305420795fda055ec4eb97 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Tue, 26 Jan 2021 22:09:21 +0100 Subject: [PATCH] More fixes --- package.json | 1 + packages/compiler/src/compiler/codegen.ts | 4 +++- packages/compiler/src/compiler/grammar.ts | 1 + packages/core/src/runtime/dataspace.ts | 2 +- packages/core/src/runtime/ground.ts | 2 +- packages/html/src/index.ts | 9 +++++++-- rollup.js | 2 ++ 7 files changed, 16 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index e7edd06..09df0c8 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "lerna": "^3.22.1", "nyc": "^14.1.1", "rollup": "^2.36.1", + "rollup-plugin-sourcemaps": "^0.6.3", "rollup-plugin-terser": "^7.0.2", "ts-jest": "^26.4.4", "ts-node": "^9.1.1", diff --git a/packages/compiler/src/compiler/codegen.ts b/packages/compiler/src/compiler/codegen.ts index 49536f8..7290fff 100644 --- a/packages/compiler/src/compiler/codegen.ts +++ b/packages/compiler/src/compiler/codegen.ts @@ -133,6 +133,7 @@ function binderTypeGuard(t: TemplateFunction): (binder: Binder, index: number) = case 'any': return bind; default: + // TODO: something better than this!! throw new Error(`Unhandled binding type: ${JSON.stringify(typeText)}`); } } @@ -195,10 +196,11 @@ export function expand(tree: Items, ctx: ExpansionContext): Items { } }`; } else { + // TODO: untyped template const sa = compilePattern(s.pattern); const body = ctx.withCollectedFields(s.facetFields, () => walk(s.body)); return t`withSelfDo(function (thisFacet) { - const _Facets = new __SYNDICATE__.Dictionary>(); + const _Facets = new __SYNDICATE__.Dictionary<__SYNDICATE__.Facet>(); on asserted ${patternText(s.pattern)} => react { _Facets.set([${commaJoin(sa.captureBinders.map(t=>[t.id]))}], thisFacet); dataflow { } // TODO: horrible hack to keep the facet alive if no other endpoints diff --git a/packages/compiler/src/compiler/grammar.ts b/packages/compiler/src/compiler/grammar.ts index 6f4a8c0..9478c45 100644 --- a/packages/compiler/src/compiler/grammar.ts +++ b/packages/compiler/src/compiler/grammar.ts @@ -504,6 +504,7 @@ export function compilePattern(pattern: ValuePattern): StaticAnalysis { return [s, eCapture(a)]; } case 'PConstant': + constPaths.push(currentPath.slice()); constVals.push(pattern.value); return [null, pattern.value]; case 'PConstructor': { diff --git a/packages/core/src/runtime/dataspace.ts b/packages/core/src/runtime/dataspace.ts index 782a9c6..d13eb7e 100644 --- a/packages/core/src/runtime/dataspace.ts +++ b/packages/core/src/runtime/dataspace.ts @@ -110,7 +110,7 @@ export abstract class Dataspace { this.pendingTurns = []; turns.forEach((turn) => { turn.actions.forEach((action) => { - // console.log('[DATASPACE]', group.actor && group.actor.toString(), action); + // console.log('[DATASPACE]', turn.actor && turn.actor.toString(), action); action.perform(this, turn.actor); this.runPendingTasks(); }); diff --git a/packages/core/src/runtime/ground.ts b/packages/core/src/runtime/ground.ts index b7f2249..fd34d41 100644 --- a/packages/core/src/runtime/ground.ts +++ b/packages/core/src/runtime/ground.ts @@ -34,7 +34,7 @@ export class Ground extends Dataspace { backgroundTaskCount = 0; constructor(bootProc: ActivationScript) { - super(function (rootFacet) { rootFacet.addStartScript(bootProc); }); + super(function (rootFacet) { rootFacet.addStartScript(() => rootFacet.activate(bootProc)); }); if (typeof window !== 'undefined') { window._ground = this; } diff --git a/packages/html/src/index.ts b/packages/html/src/index.ts index 2421108..6ce895d 100644 --- a/packages/html/src/index.ts +++ b/packages/html/src/index.ts @@ -20,6 +20,8 @@ import { randomId, Facet, Observe, FlexMap, Value, Record } from "@syndicate-lan import * as P from "./protocol"; export * from "./protocol"; + +import { HtmlFragments } from "./html"; export * from "./html"; boot { @@ -484,8 +486,11 @@ export class Anchor { return new Anchor({ fragmentId: this.fragmentId + '__' + extn }); } - html(selector: string, html: string, orderBy: NodeOrderKey = ''): Record { - return P.UIFragment(this.fragmentId, selector, html, orderBy); + html(selector: string, html: HtmlFragments | string, orderBy: NodeOrderKey = ''): Record { + return P.UIFragment(this.fragmentId, + selector, + typeof html === 'string' ? html : html.toString(), + orderBy); } } diff --git a/rollup.js b/rollup.js index 573aa66..c110220 100644 --- a/rollup.js +++ b/rollup.js @@ -1,5 +1,6 @@ import resolve from '@rollup/plugin-node-resolve'; import { terser } from 'rollup-plugin-terser'; +import sourcemaps from 'rollup-plugin-sourcemaps'; export class SyndicateRollup { constructor(packageName, options = {}) { @@ -40,6 +41,7 @@ export class SyndicateRollup { return { input: inputFile, plugins: [ + sourcemaps(), resolve({ preferBuiltins: false, ... options && options.resolve