New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@syndicate-lang/compiler

Package Overview
Dependencies
Maintainers
1
Versions
33
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@syndicate-lang/compiler - npm Package Compare versions

Comparing version 0.21.1 to 0.22.0

1

dist/syndicate-browser-compiler.js

@@ -9,2 +9,3 @@ /// SPDX-License-Identifier: GPL-3.0-or-later

async function translateScripts() {
if (SchemaReady) await SchemaReady;

@@ -11,0 +12,0 @@ const syndicateScripts =

9

dist/syndicate-compiler.es6.min.js

@@ -1,2 +0,2 @@

var t;function e(t){return Array.isArray(t)?{start:t[0].start,end:t[t.length-1].end,synthetic:!0}:t}function n(t,e){return Object.assign(Object.assign({},t),{end:e})}function r(e){return a(e,t.SPACE)||a(e,t.NEWLINE)}function s(t){return t&&"items"in t}function i(t){return t&&"type"in t}function a(t,e){return i(t)&&t.type===e}function o(t,e,n,r){const i=t=>s(t)?n(t,r(t.items.map(i)),i):e(t);return r(t.map(i))}function u(e,n={}){return o(e,(e=>{var r;if(null===(r=n.color)||void 0===r||!r)return e.text;switch(e.type){case t.SPACE:case t.NEWLINE:return""+e.text+"";case t.STRING:return""+e.text+"";default:return e.text}}),((t,e,r)=>{var s;return r(t.open)+e+(t.close?r(t.close):null!==(s=n.missing)&&void 0!==s?s:"")}),(t=>t.join("")))}function l(t){return{line:1,column:0,pos:0,name:t}}function c(t){return Object.assign(Object.assign({},t),{fixed:!0})}function h(t,e){var n;if(null!==(n=t.fixed)&&void 0!==n&&n)return"\n"===e;{let n=!1;switch(t.pos++,e){case"\t":t.column=t.column+8&-8;break;case"\n":t.column=0,t.line++,n=!0;break;case"\r":t.column=0;break;default:t.column++}return n}}!function(t){t[t.SPACE=0]="SPACE",t[t.NEWLINE=1]="NEWLINE",t[t.ATOM=2]="ATOM",t[t.STRING=3]="STRING",t[t.OPEN=4]="OPEN",t[t.CLOSE=5]="CLOSE"}(t||(t={}));const p="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",d=new Map(Object.entries(p).map((([t,e])=>[e,parseInt(t)])));function f(t){const e=[];for(let n of t){n=n<0?-n<<1|1:n<<1;do{const t=31&n;n>>=5;const r=n>0?32|t:t;e.push(p[r])}while(n>0)}return e.join("")}class m{constructor(t,e){this.items=[],this.searchTarget=t,this.start=e}get offset(){return this.searchTarget-this.start}get firstItem(){return this.items[0].item}get lastItem(){return this.items[this.items.length-1].item}}class _{constructor(){this.index=[]}get(t){var e;if(0===this.index.length)return null;let n=0,r=this.index.length;for(;;){if(n===r){if(0===n)return null;const r=this.index[n-1];if(r[0]>t)throw new Error("INTERNAL ERROR: bad binary search (1)");if((null===(e=this.index[n])||void 0===e?void 0:e[0])<=t)throw new Error("INTERNAL ERROR: bad binary search (2)");const s=new m(t,r[0]);return r[1].forEach((([e,n])=>{t<=e&&s.items.push({end:e,item:n})})),s.items.length>0?s:null}const s=n+r>>1;this.index[s][0]<=t?n=s+1:r=s}}}class y{constructor(){this.spans=new Map}add(t,e,n){this.spans.has(t)||this.spans.set(t,[]),this.spans.get(t).push([e,n])}index(){const t=new _;return this.spans.forEach(((e,n)=>{e.sort(((t,e)=>t[0]-e[0])),t.index.push([n,e])})),t.index.sort(((t,e)=>t[0]-e[0])),t}}function S(t){const e=[t.generatedStartColumn];return"sourceIndex"in t&&(e.push(t.sourceIndex),e.push(t.sourceStartLine),e.push(t.sourceStartColumn),"nameIndex"in t&&e.push(t.nameIndex)),e}function v(t,e){return void 0===e?t:t-e}class g{constructor(t){var e;this.sources=[],this.chunks=[],this.mappings=[],this.targetToSourceMap=new y,this.sourceToTargetMap=new y,this.previous={},this.previousPos=null,this.file=t,this.pos=l(null!==(e=this.file)&&void 0!==e?e:"")}get text(){return this.chunks.join("")}get map(){const t=this.mappings.map((t=>t.map(S).map(f).join(","))).join(";"),e={version:3,sources:[...this.sources],names:[],mappings:t};return null!==this.file&&(e.file=this.file),e}finishLine(){this.mappings.push([]),this.previous.generatedStartColumn=void 0,this.previousPos=null}sourceIndexFor(t){let e=this.sources.indexOf(t);return-1===e&&(this.sources.push(t),e=this.sources.length-1),e}addMapping(e,n){const r=this.previousPos;if(!(null!==r&&r.name!==e.name||n!==t.SPACE&&n!==t.NEWLINE))return void(null!==this.previousPos&&(this.previousPos=e));if(this.previousPos=e,(null==r?void 0:r.name)===e.name&&(null===e.name||(null==r?void 0:r.column)===e.column&&(null==r?void 0:r.line)===e.line))return;let s={generatedStartColumn:v(this.pos.column,this.previous.generatedStartColumn)};if(this.previous.generatedStartColumn=this.pos.column,null!==e.name){const t=this.sourceIndexFor(e.name);s=Object.assign(Object.assign({},s),{sourceIndex:v(t,this.previous.sourceIndex),sourceStartColumn:v(e.column,this.previous.sourceStartColumn),sourceStartLine:v(e.line-1,this.previous.sourceStartLine)}),this.previous.sourceIndex=t,this.previous.sourceStartColumn=e.column,this.previous.sourceStartLine=e.line-1}this.mappings[this.mappings.length-1].push(s)}chunk(t,e,n){t=Object.assign({},t),this.chunks.push(e),0===this.mappings.length&&this.finishLine(),this.addMapping(t,n);for(const r of e)h(t,r),h(this.pos,r)&&(this.finishLine(),this.addMapping(t,n))}emit(t){if(Array.isArray(t))t.forEach((t=>this.emit(t)));else if(s(t))this.emit(t.open),this.emit(t.items),t.close&&this.emit(t.close);else if(null===t);else{const e=this.pos.pos;t.synthetic||this.sourceToTargetMap.add(t.start.pos,t.end.pos,e),this.chunk(t.start,t.text,t.type),this.targetToSourceMap.add(e,this.pos.pos,t)}}}function T(t){return null===t.item}function x(t){return null!==t.item}class k{constructor(t,e,n=0){this.context=e,this.index=0,this.items=t,this.index=n}get item(){var t;return null!==(t=this.items[this.index])&&void 0!==t?t:null}get next(){return this.index>=this.items.length?null:new k(this.items,this.context,this.index+1)}toArray(){return this.items.slice(this.index)}[Symbol.iterator](){let t=this;return{next(){if(x(t)){const e=t.item;return t=t.next,{done:!1,value:e}}return{done:!0,value:null}}}}}function C(t,e,n,r){const s=t(new k(e,r));return null===s||x(O(s[1]))?n:s[0]}const b=t=>new k([],t),E=t=>null;function $(t){return e=>[t,e]}const I=t=>[void 0,b(t.context)],D=t=>[t.toArray(),b(t.context)],A=t=>T(O(t))?[void 0,b(t.context)]:null,N=t=>x(t)?[t.item.start,t]:null,w=e=>{for(;x(e)&&a(e.item,t.SPACE);)e=e.next;return x(e)&&a(e.item,t.NEWLINE)?[e.item,e.next]:null};function O(t){for(;x(t)&&r(t.item);)t=t.next;return t}function P(t,e){for(;x(t)&&r(t.item);)e.push(t.item),t=t.next;return t}function Y(t){return e=>t(O(e))}function B(t,e){return n=>null===t(n)?[e,n]:null}function j(...t){return e=>{for(const n of t){const t=n(e);if(null===t)return null;e=t[1]}return[void 0,e]}}function L(...t){return e=>{const n=[];for(const r of t){const t=r(e);if(null===t)return null;n.push(t[0]),e=t[1]}return[n,e]}}function R(...t){return e=>{for(const n of t){const t=n(e);if(null!==t)return t}return null}}function M(t){return e=>{const n=Object.create(null),r=t(n)(e);return null===r?null:[n,r[1]]}}function q(t){return e=>{const n=Object.create(null),r=t(n)(e);return null===r?null:[n.value,r[1]]}}function V(t,e,n){return r=>{const s=n(r);return null===s?null:(t[e]=s[0],s)}}function F(t,e){return n=>{const r=t(n);return null===r?null:[e(r[0]),r[1]]}}function G(t,e){return n=>{const r=t(n);return null===r?null:e(r[0])(r[1])}}function Q(t,e,n={}){return r=>{var i,a;if((null===(i=n.skipSpace)||void 0===i||i)&&(r=O(r)),!x(r))return null;if(!s(r.item))return null;if(r.item.open.text!==t)return null;const o=e(new k(r.item.items,t));return null===o?null:T(o[1])?[o[0],null===(a=n.advance)||void 0===a||a?r.next:r]:null}}function W(t,e={}){return F(U(t,e),(e=>t))}function U(e,n={}){return r=>{var s,a,o;return(null===(s=n.skipSpace)||void 0===s||s)&&(r=O(r)),x(r)&&i(r.item)?r.item.type!==(null!==(a=n.tokenType)&&void 0!==a?a:t.ATOM)||void 0!==e&&r.item.text!==e?null:[r.item,null===(o=n.advance)||void 0===o||o?r.next:r]:null}}function J(t){return e=>{const n=[];for(;;){if(null!==t(e))return[n,e];if(!x(e))break;n.push(e.item),e=e.next}return null}}function z(t,e){return n=>{const r=[];if(null!==A(n))return[r,b(n.context)];for(;;){{const e=t(n);if(null===e)return null;r.push(e[0]),n=e[1]}{const t=e(n);if(null===t)return null!==A(n)?[r,b(n.context)]:null;if(n=t[1],null!==A(n))return[r,b(n.context)]}}}}function H(t,e={}){return n=>{var r;const s=[];let i=!1;const a=()=>{var t;return s.length<(null!==(t=e.min)&&void 0!==t?t:0)?null:[s,n]};for(;;){if(s.length==(null!==(r=e.max)&&void 0!==r?r:1/0))return[s,n];if(i){if(e.separator){const t=e.separator(n);if(null===t)return a();n=t[1]}}else i=!0;const o=t(n);if(null===o)return a();s.push(o[0]),n=o[1]}}}function K(t){return H(t,{max:1})}function X(t,e,n,r,s=(t.length>0?t[t.length-1].end:l(null))){const a=(t,e,s)=>{let o=new k(t,s);const u=[];for(;x(o=P(o,u));){const t=n(o);null!==t?(u.push(...r(t[0],x(o)?o.item.start:e,x(t[1])?t[1].item.start:e)),o=t[1]):i(o.item)?(u.push(o.item),o=o.next):(u.push(Object.assign(Object.assign({},o.item),{items:a(o.item.items,o.item.end,o.item.open.text)})),o=o.next)}return u};return a(t,s,e)}class Z{constructor(t,e){this.charBuffer=null,this.tokenBuffer=null,this.delimiters=" \t\n\r'\"`.,;()[]{}/\\",this.pos=Object.assign({},t),this.synthetic=e}[Symbol.iterator](){return this}peekChar(){return null!==this.charBuffer||(this.charBuffer=this._peekChar()),this.charBuffer}dropChar(){null===this.charBuffer&&this.peekChar(),null!==this.charBuffer&&(this._dropChar(),h(this.pos,this.charBuffer),this.charBuffer=null)}shiftChar(){const t=this.peekChar();return this.dropChar(),t}makeToken(t,e,n){return Object.assign({type:e,start:t,end:this.mark(),text:n},this.synthetic&&{synthetic:!0})}makeGroupInProgress(t,e=[]){return Object.assign({start:t.start,open:t,close:null,items:e},this.synthetic&&{synthetic:!0})}mark(){return Object.assign({},this.pos)}_while(t,e){for(;;){const n=this.peekChar();if(!t(n))return;this.dropChar(),e(n)}}_collectSpace(e="",n=this.mark()){return this._while((t=>null!==t&&this.isSpace(t)),(t=>e+=t)),this.makeToken(n,t.SPACE,e)}_punct(t){return this.makeToken(this.mark(),t,this.shiftChar())}_str(e,n,r){const s=this.mark();let i;for(;;){if(i=this.shiftChar(),null!==i&&(n+=i),null===i||i===e||(r?"$"===i&&"{"===this.peekChar():"\n"===i))return this.makeToken(s,t.STRING,n);"\\"===i&&(i=this.shiftChar(),"\n"===i||null!==i&&(n+=i))}}templateConstantFragment(){if(null!==this.tokenBuffer)throw new Error("Internal error: templateConstantFragment");const t=this._str("`","",!0);return 0===t.text.length?null:t}isSpace(t){return" \t\r".indexOf(t)>=0}isDelimiter(t){return this.delimiters.indexOf(t)>=0}addDelimiters(t){this.delimiters=this.delimiters+t}_atom(e=this.mark(),n=""){let r;for(;;){if(r=this.peekChar(),null===r||this.isDelimiter(r))return this.makeToken(e,t.ATOM,n);n+=r,this.dropChar()}}_maybeComment(){const t=this.mark();let e=this.shiftChar(),n=this.peekChar();if(null===n)return this._collectSpace(e,t);switch(n){case"/":return this._while((t=>null!==t&&"\n"!==t),(t=>e+=t)),this._collectSpace(e,t);case"*":{let r=!1;for(e+=this.shiftChar();n=this.shiftChar(),null!==n&&(e+=n,"/"!==n||!r);)r="*"===n;return this._collectSpace(e,t)}default:return this._atom(t,e)}}_peek(){let e=this.peekChar();if(null===e)return null;switch(e){case" ":case"\t":case"\r":return this._collectSpace();case"\n":return this._punct(t.NEWLINE);case"(":case"[":case"{":return this._punct(t.OPEN);case")":case"]":case"}":return this._punct(t.CLOSE);case"'":case'"':return this.dropChar(),this._str(e,e,!1);case"`":return this.dropChar(),this._str(e,e,!0);case"/":return this._maybeComment();default:return this.isDelimiter(e)?this._punct(t.ATOM):this._atom(this.mark(),this.shiftChar())}}peek(){return null===this.tokenBuffer&&(this.tokenBuffer=this._peek()),this.tokenBuffer}drop(){null===this.tokenBuffer&&this.peek(),this.tokenBuffer=null}shift(){const t=this.peek();return this.drop(),t}next(){const t=this.shift();return null===t?{done:!0,value:null}:{done:!1,value:t}}}class tt extends Z{constructor(t,e,n){super(t,n),this.input=e,this.index=0}_peekChar(){var t;return null!==(t=this.input[this.index])&&void 0!==t?t:null}_dropChar(){this.index++}}class et{constructor(t){this.stack=[],this.scanner=t}[Symbol.iterator](){return this}stackTop(){var t;return null!==(t=this.stack[this.stack.length-1])&&void 0!==t?t:null}popUntilMatch(t){const e=function(t){switch(t){case")":return"(";case"]":return"[";case"}":return"{";default:return null}}(t.text);if(null===e||this.stack.some((t=>t.open.text===e)))for(;this.stack.length>0;){const r=n(this.stack.pop(),t.end);if(r.open.text===e&&(r.close=t),0===this.stack.length)return r;if(this.stackTop().items.push(r),r.open.text===e)return"continue"}else if(this.stack.length>0)return this.stackTop().items.push(t),"continue";return"eof"}_eofClose(){return this.scanner.makeToken(this.scanner.mark(),t.CLOSE,"")}peek(){var t;return null!==(t=this.scanner.peek())&&void 0!==t?t:this._eofClose()}drop(){this.scanner.drop()}inTemplateString(){const t=this.stackTop();return null!==t&&"`"===t.open.text[0]}expectTemplateVariablePart(){const e=this.peek();if(e.type!==t.OPEN||"{"!==e.text)throw new Error("Internal parser error: template string variable part mismatch");this.drop(),this.stack.push(this.scanner.makeGroupInProgress(e))}read(){for(var e;;)if(this.inTemplateString()){const r=null!==(e=this.scanner.templateConstantFragment())&&void 0!==e?e:this._eofClose();switch(r.type){case t.CLOSE:return this.popUntilMatch(r);case t.STRING:if("`"===r.text[r.text.length-1]){const t=n(this.stack.pop(),r.end);if(t.close=r,0===this.stack.length)return t;this.stackTop().items.push(t);break}this.stackTop().items.push(r),this.expectTemplateVariablePart();break;default:throw new Error("Internal error: LaxReader.read()")}}else{let e=this.stackTop();const n=this.peek();switch(n.type){case t.STRING:if("`"===n.text[0]&&"`"!==n.text[n.text.length-1]){this.drop(),this.stack.push(this.scanner.makeGroupInProgress(n)),this.expectTemplateVariablePart();break}case t.SPACE:case t.NEWLINE:case t.ATOM:if(this.drop(),null===e)return n;e.items.push(n);break;case t.OPEN:this.drop(),this.stack.push(this.scanner.makeGroupInProgress(n));break;case t.CLOSE:{this.drop();const t=this.popUntilMatch(n);if("eof"===t)return null;if("continue"===t)break;return t}}}}readToEnd(){return Array.from(this)}next(){const t=this.read();return null===t?{done:!0,value:null}:{done:!1,value:t}}}function nt(t,e={}){var n,r;const s=null!==(n=e.start)&&void 0!==n?n:l(null!==(r=e.name)&&void 0!==r?r:null),i=new tt(s,t,e.synthetic);e.extraDelimiters&&i.addDelimiters(e.extraDelimiters);return new et(i).readToEnd()}const rt=M((t=>j(U("$"),j(V(t,"pos",N),Q("{",A,{skipSpace:!1})))));function st(t,e,n){return"string"==typeof e?nt(e,Object.assign(Object.assign({},t),{start:n,synthetic:!0})):e}class it{constructor(t=l(null),e={}){this.sources={},this.recordSources=!1,this.defaultPos=t,this.readOptions=e}template(t=this.defaultPos,e=null){const n="string"==typeof t?l(t):t;return(t,...r)=>{var s;const i=[t[0]];for(let e=1;e<t.length;e++)i.push("${}"),i.push(t[e]);const a=i.join("");if(this.recordSources&&null!==n.name){if(n.name in this.sources&&this.sources[n.name]!==a)throw new Error(`Duplicate template name: ${n.name}`);this.sources[n.name]=a}let o=0;return X(nt(a,Object.assign(Object.assign({},this.readOptions),{start:n,extraDelimiters:(null!==(s=this.readOptions.extraDelimiters)&&void 0!==s?s:"")+"$",synthetic:!0})),e,rt,(t=>st(this.readOptions,r[o++],t.pos)))}}sourceFor(t){return this.sources[t]}}function at(t,e="",n={}){if(0===t.length)return[];const r=st(n,e,l(null)),s=[...t[0]];for(let e=1;e<t.length;e++)s.push(...r,...t[e]);return s}function ot(t){return at(t,", ")}const ut=(new it).template();var lt=Object.freeze({__proto__:null,CodeWriter:g,atEnd:T,notAtEnd:x,ArrayList:k,match:C,noItems:b,fail:E,succeed:$,discard:I,rest:D,end:A,pos:N,newline:w,skipSpace:O,collectSpace:P,withoutSpace:Y,not:B,follows:function(t){return e=>{const n=t(e);return null===n?null:[n[0],e]}},seq:j,seqTuple:L,alt:R,scope:M,value:q,bind:V,exec:function(t){return e=>(t(e),[void 0,e])},map:F,mapm:G,group:Q,atomString:W,atom:U,anything:function(t={}){return e=>{var n,r;return(null===(n=t.skipSpace)||void 0===n||n)&&(e=O(e)),x(e)?[e.item,null===(r=t.advance)||void 0===r||r?e.next:e]:null}},upTo:J,separatedBy:function(t,e){return n=>{const r=[];if(null!==A(n))return[r,b(n.context)];for(;;){{const e=t(n);if(null===e)return null;r.push(e[0]),n=e[1]}{const t=e(n);if(null===t)return null!==A(n)?[r,b(n.context)]:null;n=t[1]}}}},separatedOrTerminatedBy:z,repeat:H,option:K,replace:X,formatPos:function(t){var e;return t?`${null!==(e=t.name)&&void 0!==e?e:"?"}:${t.line}:${t.column}`:"?"},startPos:l,fixPos:c,advancePos:h,LaxReader:et,laxRead:nt,Scanner:Z,StringScanner:tt,SpanResult:m,SpanIndex:_,SpanInfo:y,Templates:it,joinItems:at,commaJoin:ot,anonymousTemplate:ut,get TokenType(){return t},getRange:e,finishGroup:n,makeGroup:function(t,e,n){return{start:t.start,open:t,end:n.end,close:n,items:e}},isSpace:r,isGroup:s,isToken:i,isTokenType:a,foldItems:o,itemText:u,vlqDecode:function(t){var e;let n=0,r=0;const s=[];for(const i of t){const t=null!==(e=d.get(i))&&void 0!==e?e:0;if(n|=(31&t)<<r,r+=5,!(32&t)){const t=!!(1&n);n>>=1,t&&(n=-n),s.push(n),n=0,r=0}}return s},vlqEncode:f});function ct(t){return q((e=>j(U(":"),V(e,"value",U(t,{skipSpace:!1})))))}class ht{constructor(){this.statementBoundary=R(U(";"),w,j(A,(t=>null===t.context||"{"===t.context?I(t):null))),this.exprBoundary=R(U(";"),U(","),Q("{",I),A),this.identifier=U(),this.defaultBinder=this.binder(),this.type=this.expr,this.headerExpr=this.expr(ct("asserting"),ct("let")),this.spawn=this.turnAction((t=>(t.linkedToken=null,t.parentBinders=[],t.parentInits=[],t.body=[],j(U("spawn"),K(F(U("linked"),(e=>t.linkedToken=e))),K(j(U("named"),V(t,"name",this.headerExpr))),H(R(F(M((t=>j(ct("let"),V(t,"b",this.defaultBinder),U("="),V(t,"init",this.headerExpr)))),(e=>{t.parentBinders.push(e.b),t.parentInits.push(e.init)})))),this.block(t.body))))),this.fieldDeclarationStatement=this.turnAction((t=>j(U("field"),V(t,"field",this.defaultBinder),K(j(U("="),V(t,"init",this.expr()))),this.statementBoundary))),this.assertionEndpointStatement=this.turnAction((t=>(t.isDynamic=!0,j(U("assert"),K(F(ct("snapshot"),(e=>t.isDynamic=!1))),V(t,"template",this.expr(j(U("when"),Q("(",I)))),K(j(U("when"),Q("(",V(t,"test",this.expr())))),this.statementBoundary)))),this.dataflowStatement=this.blockTurnAction(U("dataflow")),this.eventHandlerEndpointStatement=this.turnAction((t=>(t.facetToStop="none",t.once=!1,t.isDynamic=!0,t.body=[],j(R(j(K(j(U("stop"),F(K(this.expr1(U("on"))),(e=>{t.facetToStop=e.length?e[0]:"default"})))),U("on")),F(U("once"),(e=>{t.once=!0,t.facetToStop="once-wrapper"}))),R(j(F(Q("(",V(t,"predicate",this.expr())),(e=>t.triggerType="dataflow")),this.mandatoryIfNotTerminal(t,this.statement(t.body))),G(j(V(t,"triggerType",W("stop")),K(this.statement(t.body))),(e=>"none"!==t.facetToStop||t.once?E:$(e))),j(V(t,"triggerType",R(W("asserted"),W("retracted"),W("message"))),K(F(ct("snapshot"),(e=>t.isDynamic=!1))),V(t,"pattern",this.valuePattern(1,U("=>"))),this.mandatoryIfNotTerminal(t,j(U("=>"),this.statement(t.body))))))))),this.typeDefinitionStatement=M((t=>j(V(t,"expectedUse",R(W("message"),W("assertion"))),U("type"),V(t,"label",this.identifier),Q("(",V(t,"fields",H(this.defaultBinder,{separator:U(",")}))),K(j(U("="),V(t,"wireName",Y(J(this.statementBoundary))))),this.statementBoundary))),this.messageSendStatement=this.turnAction((t=>j(U("send"),U("message"),B(this.statementBoundary),V(t,"expr",Y(J(this.statementBoundary))),this.statementBoundary))),this.duringStatement=this.turnAction((t=>(t.body=[],j(U("during"),V(t,"pattern",this.valuePattern(1,U("=>"),j(U("when"),Q("(",I)))),K(j(U("when"),Q("(",V(t,"test",this.expr())))),j(U("=>"),this.statement(t.body)))))),this.reactStatement=this.turnAction((t=>(t.label=null,t.body=[],j(K(F(L(this.identifier,U(":")),(([e,n])=>t.label=e))),U("react"),this.block(t.body))))),this.stopStatement=this.turnAction((t=>(t.facetToStop="default",t.body=[],j(U("stop"),K(F(this.expr1(),(e=>t.facetToStop=e))),R(this.block(t.body),this.statementBoundary))))),this.atStatement=M((t=>(t.body=[],j(U("at"),V(t,"target",this.expr()),this.block(t.body))))),this.createExpression=M((t=>j(U("create"),V(t,"entity",this.expr())))),this.pCaptureBinder=t=>G(t,(t=>{if(t.id.text.startsWith("$")){const e=Object.assign({},t.id.start);h(e," ");return $({id:Object.assign(Object.assign({},t.id),{start:e,text:t.id.text.slice(1)}),type:t.type})}return E})),this.pCaptureDefaultBinder=this.pCaptureBinder(this.defaultBinder),this.pDiscard=G(this.identifier,(t=>"_"===t.text?$(void 0):E))}block(t){return Q("{",F(D,(e=>(null==t||t.push(...e),e))))}binder(...t){return M((t=>V(t,"id",this.identifier)))}expr(...t){return Y(J(R(this.exprBoundary,...t)))}expr1(...t){return G(this.expr(...t),(t=>t.length?$(t):E))}propertyNameExpr(){const e=ut`"`;return R(F(U(),(t=>[...e,t,...e])),F(U(void 0,{tokenType:t.STRING}),(t=>[t])),Q("[",this.expr()))}statement(t){return R(this.block(t),Y(j(F(J(this.statementBoundary),(e=>t.push(...e))),F(this.statementBoundary,(e=>e?t.push(e):void 0)))))}turnAction(t){return e=>{const n=Object.create(null),r=t(n)(e);return null===r?null:[n,r[1]]}}blockTurnAction(t){return this.turnAction((e=>(e.body=[],j(t,this.block(e.body)))))}mandatoryIfNotTerminal(t,e){return n=>"none"!==t.facetToStop?K(e)(n):e(n)}pUnquote(t,e){return M(1==t?t=>(t.type="POuterUnquote",j(U("\\"),V(t,"outer",this.expr(...e)))):n=>(n.type="PUnquote",j(U("\\"),V(n,"unquoted",this.valuePattern(t-1,...e)))))}pQuote(t,e){return M((n=>(n.type="PQuote",j(ct("pattern"),V(n,"quoted",this.valuePattern(t+1,...e))))))}hasCapturesOrDiscards(t){return o(t,(t=>null!==C(R(this.pCaptureDefaultBinder,this.pDiscard),[t],null,"(")),((t,e,n)=>e),(t=>t.some((t=>t))))}pArray(t){return M((e=>(e.type="PArray",Q("[",G(V(e,"elements",z(this.valuePattern(t),U(","))),(t=>e.elements.every((t=>"PConstant"===t.type))?E:$(t)))))))}pDict(t){return M((e=>(e.type="PDict",Q("{",G(V(e,"elements",z(q((e=>(e.value=[],j(V(e.value,"0",this.propertyNameExpr()),U(":"),V(e.value,"1",this.valuePattern(t)))))),U(","))),(t=>e.elements.every((t=>"PConstant"===t[1].type))?E:$(t)))))))}pConstructor(t,e){return M((n=>(n.type="PConstructor",j(V(n,"ctor",this.expr(...e,Q("(",I))),Q("(",V(n,"arguments",z(this.valuePattern(t,...e),U(","))))))))}valuePattern(t,...e){return Y(R(M((t=>F(this.pDiscard,(e=>t.type="PDiscard")))),this.pArray(t),this.pDict(t),this.pQuote(t,e),this.pUnquote(t,e),G(this.pConstructor(t,e),(t=>{if(this.hasCapturesOrDiscards(t.ctor)){const e=C(this.pCaptureDefaultBinder,t.ctor,null,"(");return null!==e&&1===t.arguments.length?$({type:"PCapture",inner:t.arguments[0],binder:e}):E}return $(t)})),M((t=>(t.type="PCapture",t.inner={type:"PDiscard"},V(t,"binder",this.pCaptureBinder(this.binder(...e)))))),F(this.expr(...e),(t=>({type:"PConstant",value:t})))))}}class pt extends ht{binder(...t){return M((e=>j(V(e,"id",this.identifier),K(j(U(":"),V(e,"type",this.type(U("="),...t)))))))}}function dt(t){const e=[];const n=function t(n){switch(n.type){case"PDiscard":return ut`(__SYNDICATE__.QuasiValue._)`;case"PCapture":return e.push(n.binder),ut`(__SYNDICATE__.QuasiValue.bind(${t(n.inner)}))`;case"PConstant":return ut`(__SYNDICATE__.QuasiValue.lit(__SYNDICATE__.fromJS(${n.value})))`;case"PConstructor":{const e=[ut`${n.ctor}`,...n.arguments.map(t)];return ut`(__SYNDICATE__.QuasiValue.ctor(${ot(e)}))`}case"PArray":{const e=n.elements.map(t);return ut`(__SYNDICATE__.QuasiValue.arr(${ot(e)}))`}case"PDict":{const e=n.elements.map((([e,n])=>ut`[${e}, ${t(n)}]`));return ut`(__SYNDICATE__.QuasiValue.dict(${ot(e)}))`}case"PQuote":return ut`(__SYNDICATE__.QuasiValue.quote(${t(n.quoted)}))`;case"PUnquote":return ut`(__SYNDICATE__.QuasiValue.unquote(${t(n.unquoted)}))`;case"POuterUnquote":return ut`(__SYNDICATE__.QuasiValue.unquote(${n.outer}))`}}(t);return{skeleton:n,captureBinders:e}}var ft=Object.freeze({__proto__:null,SyndicateParser:ht,SyndicateTypedParser:pt,compilePattern:dt});function mt(e){if(e.length>0&&i(e[0])&&e[0].text.startsWith("#!"))for(;e.length>0&&!a(e[0],t.NEWLINE);)e.shift();return e}class _t{constructor(t,e,n){this.nextIdNumber=0,this.parser=e?new pt:new ht,this.moduleType=t,this.typescript=e,this.errorEmitter=n}quasiRandomId(){return"__SYNDICATE__id_"+this.nextIdNumber++}argDecl(t,e,n){return this.typescript?t`${e}: ${n}`:t`${e}`}emitError(t,e){this.errorEmitter(t,e.start,e.end)}}function yt(t){return(e,n)=>{if("_"===e.id.text[0])return t`${`/* Ignoring underscore-prefixed binder ${e.id.text} */`}`;const r=t`__vs[${""+n}]`,s=t`const ${[e.id]} = ${r};`;if(void 0===e.type)return s;{const i=u(e.type);switch(i){case"boolean":case"string":case"number":case"symbol":return t`if (typeof (${r}) !== ${JSON.stringify(i)}) return;\n${s}`;case"any":return s;default:{const s=t`__v_${""+n}`;return t`const ${s} = ${e.type}.__from_preserve__(${r});
var t;function e(t){return Array.isArray(t)?{start:t[0].start,end:t[t.length-1].end,synthetic:!0}:t}function n(t,e){return Object.assign(Object.assign({},t),{end:e})}function r(e){return a(e,t.SPACE)||a(e,t.NEWLINE)}function s(t){return t&&"items"in t}function i(t){return t&&"type"in t}function a(t,e){return i(t)&&t.type===e}function o(t,e,n,r){const i=t=>s(t)?n(t,r(t.items.map(i)),i):e(t);return r(t.map(i))}function u(e,n={}){return o(e,(e=>{var r;if(null===(r=n.color)||void 0===r||!r)return e.text;switch(e.type){case t.SPACE:case t.NEWLINE:return""+e.text+"";case t.STRING:return""+e.text+"";default:return e.text}}),((t,e,r)=>{var s;return r(t.open)+e+(t.close?r(t.close):null!==(s=n.missing)&&void 0!==s?s:"")}),(t=>t.join("")))}function l(t){return{line:1,column:0,pos:0,name:t}}function c(t){return Object.assign(Object.assign({},t),{fixed:!0})}function h(t,e){var n;if(null!==(n=t.fixed)&&void 0!==n&&n)return"\n"===e;{let n=!1;switch(t.pos++,e){case"\t":t.column=t.column+8&-8;break;case"\n":t.column=0,t.line++,n=!0;break;case"\r":t.column=0;break;default:t.column++}return n}}!function(t){t[t.SPACE=0]="SPACE",t[t.NEWLINE=1]="NEWLINE",t[t.ATOM=2]="ATOM",t[t.STRING=3]="STRING",t[t.OPEN=4]="OPEN",t[t.CLOSE=5]="CLOSE"}(t||(t={}));const p="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",d=new Map(Object.entries(p).map((([t,e])=>[e,parseInt(t)])));function f(t){const e=[];for(let n of t){n=n<0?-n<<1|1:n<<1;do{const t=31&n;n>>=5;const r=n>0?32|t:t;e.push(p[r])}while(n>0)}return e.join("")}class m{constructor(t,e){this.items=[],this.searchTarget=t,this.start=e}get offset(){return this.searchTarget-this.start}get firstItem(){return this.items[0].item}get lastItem(){return this.items[this.items.length-1].item}}class _{constructor(){this.index=[]}get(t){var e;if(0===this.index.length)return null;let n=0,r=this.index.length;for(;;){if(n===r){if(0===n)return null;const r=this.index[n-1];if(r[0]>t)throw new Error("INTERNAL ERROR: bad binary search (1)");if((null===(e=this.index[n])||void 0===e?void 0:e[0])<=t)throw new Error("INTERNAL ERROR: bad binary search (2)");const s=new m(t,r[0]);return r[1].forEach((([e,n])=>{t<=e&&s.items.push({end:e,item:n})})),s.items.length>0?s:null}const s=n+r>>1;this.index[s][0]<=t?n=s+1:r=s}}}class y{constructor(){this.spans=new Map}add(t,e,n){this.spans.has(t)||this.spans.set(t,[]),this.spans.get(t).push([e,n])}index(){const t=new _;return this.spans.forEach(((e,n)=>{e.sort(((t,e)=>t[0]-e[0])),t.index.push([n,e])})),t.index.sort(((t,e)=>t[0]-e[0])),t}}function S(t){const e=[t.generatedStartColumn];return"sourceIndex"in t&&(e.push(t.sourceIndex),e.push(t.sourceStartLine),e.push(t.sourceStartColumn),"nameIndex"in t&&e.push(t.nameIndex)),e}function v(t,e){return void 0===e?t:t-e}class g{constructor(t){var e;this.sources=[],this.chunks=[],this.mappings=[],this.targetToSourceMap=new y,this.sourceToTargetMap=new y,this.previous={},this.previousPos=null,this.file=t,this.pos=l(null!==(e=this.file)&&void 0!==e?e:"")}get text(){return this.chunks.join("")}get map(){const t=this.mappings.map((t=>t.map(S).map(f).join(","))).join(";"),e={version:3,sources:[...this.sources],names:[],mappings:t};return null!==this.file&&(e.file=this.file),e}finishLine(){this.mappings.push([]),this.previous.generatedStartColumn=void 0,this.previousPos=null}sourceIndexFor(t){let e=this.sources.indexOf(t);return-1===e&&(this.sources.push(t),e=this.sources.length-1),e}addMapping(e,n){const r=this.previousPos;if(!(null!==r&&r.name!==e.name||n!==t.SPACE&&n!==t.NEWLINE))return void(null!==this.previousPos&&(this.previousPos=e));if(this.previousPos=e,(null==r?void 0:r.name)===e.name&&(null===e.name||(null==r?void 0:r.column)===e.column&&(null==r?void 0:r.line)===e.line))return;let s={generatedStartColumn:v(this.pos.column,this.previous.generatedStartColumn)};if(this.previous.generatedStartColumn=this.pos.column,null!==e.name){const t=this.sourceIndexFor(e.name);s=Object.assign(Object.assign({},s),{sourceIndex:v(t,this.previous.sourceIndex),sourceStartColumn:v(e.column,this.previous.sourceStartColumn),sourceStartLine:v(e.line-1,this.previous.sourceStartLine)}),this.previous.sourceIndex=t,this.previous.sourceStartColumn=e.column,this.previous.sourceStartLine=e.line-1}this.mappings[this.mappings.length-1].push(s)}chunk(t,e,n){t=Object.assign({},t),this.chunks.push(e),0===this.mappings.length&&this.finishLine(),this.addMapping(t,n);for(const r of e)h(t,r),h(this.pos,r)&&(this.finishLine(),this.addMapping(t,n))}emit(t){if(Array.isArray(t))t.forEach((t=>this.emit(t)));else if(s(t))this.emit(t.open),this.emit(t.items),t.close&&this.emit(t.close);else if(null===t);else{const e=this.pos.pos;t.synthetic||this.sourceToTargetMap.add(t.start.pos,t.end.pos,e),this.chunk(t.start,t.text,t.type),this.targetToSourceMap.add(e,this.pos.pos,t)}}}function T(t){return null===t.item}function x(t){return null!==t.item}class k{constructor(t,e,n=0){this.context=e,this.index=0,this.items=t,this.index=n}get item(){var t;return null!==(t=this.items[this.index])&&void 0!==t?t:null}get next(){return this.index>=this.items.length?null:new k(this.items,this.context,this.index+1)}toArray(){return this.items.slice(this.index)}[Symbol.iterator](){let t=this;return{next(){if(x(t)){const e=t.item;return t=t.next,{done:!1,value:e}}return{done:!0,value:null}}}}}function C(t,e,n,r){const s=t(new k(e,r));return null===s||x(O(s[1]))?n:s[0]}const b=t=>new k([],t),E=t=>null;function $(t){return e=>[t,e]}const D=t=>[void 0,b(t.context)],I=t=>[t.toArray(),b(t.context)],A=t=>T(O(t))?[void 0,b(t.context)]:null,N=t=>x(t)?[t.item.start,t]:null,w=e=>{for(;x(e)&&a(e.item,t.SPACE);)e=e.next;return x(e)&&a(e.item,t.NEWLINE)?[e.item,e.next]:null};function O(t){for(;x(t)&&r(t.item);)t=t.next;return t}function P(t,e){for(;x(t)&&r(t.item);)e.push(t.item),t=t.next;return t}function Y(t){return e=>t(O(e))}function B(t,e){return n=>null===t(n)?[e,n]:null}function j(...t){return e=>{for(const n of t){const t=n(e);if(null===t)return null;e=t[1]}return[void 0,e]}}function L(...t){return e=>{const n=[];for(const r of t){const t=r(e);if(null===t)return null;n.push(t[0]),e=t[1]}return[n,e]}}function R(...t){return e=>{for(const n of t){const t=n(e);if(null!==t)return t}return null}}function M(t){return e=>{const n=Object.create(null),r=t(n)(e);return null===r?null:[n,r[1]]}}function q(t){return e=>{const n=Object.create(null),r=t(n)(e);return null===r?null:[n.value,r[1]]}}function V(t,e,n){return r=>{const s=n(r);return null===s?null:(t[e]=s[0],s)}}function F(t,e){return n=>{const r=t(n);return null===r?null:[e(r[0]),r[1]]}}function G(t,e){return n=>{const r=t(n);return null===r?null:e(r[0])(r[1])}}function Q(t,e,n={}){return r=>{var i,a;if((null===(i=n.skipSpace)||void 0===i||i)&&(r=O(r)),!x(r))return null;if(!s(r.item))return null;if(r.item.open.text!==t)return null;const o=e(new k(r.item.items,t));return null===o?null:T(o[1])?[o[0],null===(a=n.advance)||void 0===a||a?r.next:r]:null}}function W(t,e={}){return F(U(t,e),(e=>t))}function U(e,n={}){return r=>{var s,a,o;return(null===(s=n.skipSpace)||void 0===s||s)&&(r=O(r)),x(r)&&i(r.item)?r.item.type!==(null!==(a=n.tokenType)&&void 0!==a?a:t.ATOM)||void 0!==e&&r.item.text!==e?null:[r.item,null===(o=n.advance)||void 0===o||o?r.next:r]:null}}function J(t){return e=>{const n=[];for(;;){if(null!==t(e))return[n,e];if(!x(e))break;n.push(e.item),e=e.next}return null}}function z(t,e){return n=>{const r=[];if(null!==A(n))return[r,b(n.context)];for(;;){{const e=t(n);if(null===e)return null;r.push(e[0]),n=e[1]}{const t=e(n);if(null===t)return null!==A(n)?[r,b(n.context)]:null;if(n=t[1],null!==A(n))return[r,b(n.context)]}}}}function H(t,e={}){return n=>{var r;const s=[];let i=!1;const a=()=>{var t;return s.length<(null!==(t=e.min)&&void 0!==t?t:0)?null:[s,n]};for(;;){if(s.length==(null!==(r=e.max)&&void 0!==r?r:1/0))return[s,n];if(i){if(e.separator){const t=e.separator(n);if(null===t)return a();n=t[1]}}else i=!0;const o=t(n);if(null===o)return a();s.push(o[0]),n=o[1]}}}function K(t){return H(t,{max:1})}function X(t,e,n,r,s=(t.length>0?t[t.length-1].end:l(null))){const a=(t,e,s)=>{let o=new k(t,s);const u=[];for(;x(o=P(o,u));){const t=n(o);null!==t?(u.push(...r(t[0],x(o)?o.item.start:e,x(t[1])?t[1].item.start:e)),o=t[1]):i(o.item)?(u.push(o.item),o=o.next):(u.push(Object.assign(Object.assign({},o.item),{items:a(o.item.items,o.item.end,o.item.open.text)})),o=o.next)}return u};return a(t,s,e)}class Z{constructor(t,e){this.charBuffer=null,this.tokenBuffer=null,this.delimiters=" \t\n\r'\"`.,;()[]{}/\\",this.pos=Object.assign({},t),this.synthetic=e}[Symbol.iterator](){return this}peekChar(){return null!==this.charBuffer||(this.charBuffer=this._peekChar()),this.charBuffer}dropChar(){null===this.charBuffer&&this.peekChar(),null!==this.charBuffer&&(this._dropChar(),h(this.pos,this.charBuffer),this.charBuffer=null)}shiftChar(){const t=this.peekChar();return this.dropChar(),t}makeToken(t,e,n){return Object.assign({type:e,start:t,end:this.mark(),text:n},this.synthetic&&{synthetic:!0})}makeGroupInProgress(t,e=[]){return Object.assign({start:t.start,open:t,close:null,items:e},this.synthetic&&{synthetic:!0})}mark(){return Object.assign({},this.pos)}_while(t,e){for(;;){const n=this.peekChar();if(!t(n))return;this.dropChar(),e(n)}}_collectSpace(e="",n=this.mark()){return this._while((t=>null!==t&&this.isSpace(t)),(t=>e+=t)),this.makeToken(n,t.SPACE,e)}_punct(t){return this.makeToken(this.mark(),t,this.shiftChar())}_str(e,n,r){const s=this.mark();let i;for(;;){if(i=this.shiftChar(),null!==i&&(n+=i),null===i||i===e||(r?"$"===i&&"{"===this.peekChar():"\n"===i))return this.makeToken(s,t.STRING,n);"\\"===i&&(i=this.shiftChar(),"\n"===i||null!==i&&(n+=i))}}templateConstantFragment(){if(null!==this.tokenBuffer)throw new Error("Internal error: templateConstantFragment");const t=this._str("`","",!0);return 0===t.text.length?null:t}isSpace(t){return" \t\r".indexOf(t)>=0}isDelimiter(t){return this.delimiters.indexOf(t)>=0}addDelimiters(t){this.delimiters=this.delimiters+t}_atom(e=this.mark(),n=""){let r;for(;;){if(r=this.peekChar(),null===r||this.isDelimiter(r))return this.makeToken(e,t.ATOM,n);n+=r,this.dropChar()}}_maybeComment(){const t=this.mark();let e=this.shiftChar(),n=this.peekChar();if(null===n)return this._collectSpace(e,t);switch(n){case"/":return this._while((t=>null!==t&&"\n"!==t),(t=>e+=t)),this._collectSpace(e,t);case"*":{let r=!1;for(e+=this.shiftChar();n=this.shiftChar(),null!==n&&(e+=n,"/"!==n||!r);)r="*"===n;return this._collectSpace(e,t)}default:return this._atom(t,e)}}_peek(){let e=this.peekChar();if(null===e)return null;switch(e){case" ":case"\t":case"\r":return this._collectSpace();case"\n":return this._punct(t.NEWLINE);case"(":case"[":case"{":return this._punct(t.OPEN);case")":case"]":case"}":return this._punct(t.CLOSE);case"'":case'"':return this.dropChar(),this._str(e,e,!1);case"`":return this.dropChar(),this._str(e,e,!0);case"/":return this._maybeComment();default:return this.isDelimiter(e)?this._punct(t.ATOM):this._atom(this.mark(),this.shiftChar())}}peek(){return null===this.tokenBuffer&&(this.tokenBuffer=this._peek()),this.tokenBuffer}drop(){null===this.tokenBuffer&&this.peek(),this.tokenBuffer=null}shift(){const t=this.peek();return this.drop(),t}next(){const t=this.shift();return null===t?{done:!0,value:null}:{done:!1,value:t}}}class tt extends Z{constructor(t,e,n){super(t,n),this.input=e,this.index=0}_peekChar(){var t;return null!==(t=this.input[this.index])&&void 0!==t?t:null}_dropChar(){this.index++}}class et{constructor(t){this.stack=[],this.scanner=t}[Symbol.iterator](){return this}stackTop(){var t;return null!==(t=this.stack[this.stack.length-1])&&void 0!==t?t:null}popUntilMatch(t){const e=function(t){switch(t){case")":return"(";case"]":return"[";case"}":return"{";default:return null}}(t.text);if(null===e||this.stack.some((t=>t.open.text===e)))for(;this.stack.length>0;){const r=n(this.stack.pop(),t.end);if(r.open.text===e&&(r.close=t),0===this.stack.length)return r;if(this.stackTop().items.push(r),r.open.text===e)return"continue"}else if(this.stack.length>0)return this.stackTop().items.push(t),"continue";return"eof"}_eofClose(){return this.scanner.makeToken(this.scanner.mark(),t.CLOSE,"")}peek(){var t;return null!==(t=this.scanner.peek())&&void 0!==t?t:this._eofClose()}drop(){this.scanner.drop()}inTemplateString(){const t=this.stackTop();return null!==t&&"`"===t.open.text[0]}expectTemplateVariablePart(){const e=this.peek();if(e.type!==t.OPEN||"{"!==e.text)throw new Error("Internal parser error: template string variable part mismatch");this.drop(),this.stack.push(this.scanner.makeGroupInProgress(e))}read(){for(var e;;)if(this.inTemplateString()){const r=null!==(e=this.scanner.templateConstantFragment())&&void 0!==e?e:this._eofClose();switch(r.type){case t.CLOSE:return this.popUntilMatch(r);case t.STRING:if("`"===r.text[r.text.length-1]){const t=n(this.stack.pop(),r.end);if(t.close=r,0===this.stack.length)return t;this.stackTop().items.push(t);break}this.stackTop().items.push(r),this.expectTemplateVariablePart();break;default:throw new Error("Internal error: LaxReader.read()")}}else{let e=this.stackTop();const n=this.peek();switch(n.type){case t.STRING:if("`"===n.text[0]&&"`"!==n.text[n.text.length-1]){this.drop(),this.stack.push(this.scanner.makeGroupInProgress(n)),this.expectTemplateVariablePart();break}case t.SPACE:case t.NEWLINE:case t.ATOM:if(this.drop(),null===e)return n;e.items.push(n);break;case t.OPEN:this.drop(),this.stack.push(this.scanner.makeGroupInProgress(n));break;case t.CLOSE:{this.drop();const t=this.popUntilMatch(n);if("eof"===t)return null;if("continue"===t)break;return t}}}}readToEnd(){return Array.from(this)}next(){const t=this.read();return null===t?{done:!0,value:null}:{done:!1,value:t}}}function nt(t,e={}){var n,r;const s=null!==(n=e.start)&&void 0!==n?n:l(null!==(r=e.name)&&void 0!==r?r:null),i=new tt(s,t,e.synthetic);e.extraDelimiters&&i.addDelimiters(e.extraDelimiters);return new et(i).readToEnd()}const rt=M((t=>j(U("$"),j(V(t,"pos",N),Q("{",A,{skipSpace:!1})))));function st(t,e,n){return"string"==typeof e?nt(e,Object.assign(Object.assign({},t),{start:n,synthetic:!0})):e}class it{constructor(t=l(null),e={}){this.sources={},this.recordSources=!1,this.defaultPos=t,this.readOptions=e}template(t=this.defaultPos,e=null){const n="string"==typeof t?l(t):t;return(t,...r)=>{var s;const i=[t[0]];for(let e=1;e<t.length;e++)i.push("${}"),i.push(t[e]);const a=i.join("");if(this.recordSources&&null!==n.name){if(n.name in this.sources&&this.sources[n.name]!==a)throw new Error(`Duplicate template name: ${n.name}`);this.sources[n.name]=a}let o=0;return X(nt(a,Object.assign(Object.assign({},this.readOptions),{start:n,extraDelimiters:(null!==(s=this.readOptions.extraDelimiters)&&void 0!==s?s:"")+"$",synthetic:!0})),e,rt,(t=>st(this.readOptions,r[o++],t.pos)))}}sourceFor(t){return this.sources[t]}}function at(t,e="",n={}){if(0===t.length)return[];const r=st(n,e,l(null)),s=[...t[0]];for(let e=1;e<t.length;e++)s.push(...r,...t[e]);return s}function ot(t){return at(t,", ")}const ut=(new it).template();var lt=Object.freeze({__proto__:null,CodeWriter:g,atEnd:T,notAtEnd:x,ArrayList:k,match:C,noItems:b,fail:E,succeed:$,discard:D,rest:I,end:A,pos:N,newline:w,skipSpace:O,collectSpace:P,withoutSpace:Y,not:B,follows:function(t){return e=>{const n=t(e);return null===n?null:[n[0],e]}},seq:j,seqTuple:L,alt:R,scope:M,value:q,bind:V,exec:function(t){return e=>(t(e),[void 0,e])},map:F,mapm:G,group:Q,atomString:W,atom:U,anything:function(t={}){return e=>{var n,r;return(null===(n=t.skipSpace)||void 0===n||n)&&(e=O(e)),x(e)?[e.item,null===(r=t.advance)||void 0===r||r?e.next:e]:null}},upTo:J,separatedBy:function(t,e){return n=>{const r=[];if(null!==A(n))return[r,b(n.context)];for(;;){{const e=t(n);if(null===e)return null;r.push(e[0]),n=e[1]}{const t=e(n);if(null===t)return null!==A(n)?[r,b(n.context)]:null;n=t[1]}}}},separatedOrTerminatedBy:z,repeat:H,option:K,replace:X,formatPos:function(t){var e;return t?`${null!==(e=t.name)&&void 0!==e?e:"?"}:${t.line}:${t.column}`:"?"},startPos:l,fixPos:c,advancePos:h,LaxReader:et,laxRead:nt,Scanner:Z,StringScanner:tt,SpanResult:m,SpanIndex:_,SpanInfo:y,Templates:it,joinItems:at,commaJoin:ot,anonymousTemplate:ut,get TokenType(){return t},getRange:e,finishGroup:n,makeGroup:function(t,e,n){return{start:t.start,open:t,end:n.end,close:n,items:e}},isSpace:r,isGroup:s,isToken:i,isTokenType:a,foldItems:o,itemText:u,vlqDecode:function(t){var e;let n=0,r=0;const s=[];for(const i of t){const t=null!==(e=d.get(i))&&void 0!==e?e:0;if(n|=(31&t)<<r,r+=5,!(32&t)){const t=!!(1&n);n>>=1,t&&(n=-n),s.push(n),n=0,r=0}}return s},vlqEncode:f});function ct(t){return q((e=>j(U(":"),V(e,"value",U(t,{skipSpace:!1})))))}class ht{constructor(){this.statementBoundary=R(U(";"),w,j(A,(t=>null===t.context||"{"===t.context?D(t):null))),this.exprBoundary=R(U(";"),U(","),Q("{",D),A),this.identifier=U(),this.defaultBinder=this.binder(),this.type=this.expr,this.headerExpr=this.expr(ct("asserting"),ct("let")),this.spawn=this.turnAction((t=>(t.linkedToken=null,t.parentBinders=[],t.parentInits=[],t.body=[],j(U("spawn"),K(F(U("linked"),(e=>t.linkedToken=e))),K(j(U("named"),V(t,"name",this.headerExpr))),H(R(F(M((t=>j(ct("let"),V(t,"b",this.defaultBinder),U("="),V(t,"init",this.headerExpr)))),(e=>{t.parentBinders.push(e.b),t.parentInits.push(e.init)})))),this.block(t.body))))),this.fieldDeclarationStatement=this.turnAction((t=>j(U("field"),V(t,"field",this.defaultBinder),K(j(U("="),V(t,"init",this.expr()))),this.statementBoundary))),this.assertionEndpointStatement=this.turnAction((t=>(t.isDynamic=!0,j(U("assert"),K(F(ct("snapshot"),(e=>t.isDynamic=!1))),V(t,"template",this.expr(j(U("when"),Q("(",D)))),K(j(U("when"),Q("(",V(t,"test",this.expr())))),this.statementBoundary)))),this.dataflowStatement=this.blockTurnAction(U("dataflow")),this.eventHandlerEndpointStatement=this.turnAction((t=>(t.facetToStop="none",t.once=!1,t.isDynamic=!0,t.body=[],j(R(j(K(j(U("stop"),F(K(this.expr1(U("on"))),(e=>{t.facetToStop=e.length?e[0]:"default"})))),U("on")),F(U("once"),(e=>{t.once=!0,t.facetToStop="once-wrapper"}))),R(j(F(Q("(",V(t,"predicate",this.expr())),(e=>t.triggerType="dataflow")),this.mandatoryIfNotTerminal(t,this.statement(t.body))),G(j(V(t,"triggerType",W("stop")),K(this.statement(t.body))),(e=>"none"!==t.facetToStop||t.once?E:$(e))),j(V(t,"triggerType",R(W("asserted"),W("retracted"),W("message"))),K(F(ct("snapshot"),(e=>t.isDynamic=!1))),V(t,"pattern",this.valuePattern(1,U("=>"),j(U("when"),Q("(",D)))),K(j(U("when"),Q("(",V(t,"test",this.expr())))),this.mandatoryIfNotTerminal(t,j(U("=>"),this.statement(t.body))))))))),this.typeDefinitionStatement=M((t=>j(V(t,"expectedUse",R(W("message"),W("assertion"))),U("type"),V(t,"label",this.identifier),Q("(",V(t,"fields",H(this.defaultBinder,{separator:U(",")}))),K(j(U("="),V(t,"wireName",Y(J(this.statementBoundary))))),this.statementBoundary))),this.messageSendStatement=this.turnAction((t=>j(U("send"),U("message"),B(this.statementBoundary),V(t,"expr",Y(J(this.statementBoundary))),this.statementBoundary))),this.duringStatement=this.turnAction((t=>(t.body=[],j(U("during"),V(t,"pattern",this.valuePattern(1,U("=>"),j(U("when"),Q("(",D)))),K(j(U("when"),Q("(",V(t,"test",this.expr())))),j(U("=>"),this.statement(t.body)))))),this.reactStatement=this.turnAction((t=>(t.label=null,t.body=[],j(K(F(L(this.identifier,U(":")),(([e,n])=>t.label=e))),U("react"),this.block(t.body))))),this.stopStatement=this.turnAction((t=>(t.facetToStop="default",t.body=[],j(U("stop"),K(F(this.expr1(),(e=>t.facetToStop=e))),R(this.block(t.body),this.statementBoundary))))),this.atStatement=M((t=>(t.body=[],j(U("at"),V(t,"target",this.expr()),this.block(t.body))))),this.createExpression=M((t=>j(U("create"),V(t,"entity",this.expr())))),this.pCaptureBinder=t=>G(t,(t=>{if(t.id.text.startsWith("$")){const e=Object.assign({},t.id.start);h(e," ");return $({id:Object.assign(Object.assign({},t.id),{start:e,text:t.id.text.slice(1)}),type:t.type})}return E})),this.pCaptureDefaultBinder=this.pCaptureBinder(this.defaultBinder),this.pDiscard=G(this.identifier,(t=>"_"===t.text?$(void 0):E))}block(t){return Q("{",F(I,(e=>(null==t||t.push(...e),e))))}binder(...t){return M((t=>V(t,"id",this.identifier)))}expr(...t){return Y(J(R(this.exprBoundary,...t)))}expr1(...t){return G(this.expr(...t),(t=>t.length?$(t):E))}propertyNameExpr(){const e=ut`"`;return R(F(U(),(t=>[...e,t,...e])),F(U(void 0,{tokenType:t.STRING}),(t=>[t])),Q("[",this.expr()))}statement(t){return R(this.block(t),Y(j(F(J(this.statementBoundary),(e=>t.push(...e))),F(this.statementBoundary,(e=>e?t.push(e):void 0)))))}turnAction(t){return e=>{const n=Object.create(null),r=t(n)(e);return null===r?null:[n,r[1]]}}blockTurnAction(t){return this.turnAction((e=>(e.body=[],j(t,this.block(e.body)))))}mandatoryIfNotTerminal(t,e){return n=>"none"!==t.facetToStop?K(e)(n):e(n)}pUnquote(t,e){return M(1==t?t=>(t.type="POuterUnquote",j(U("\\"),V(t,"outer",this.expr(...e)))):n=>(n.type="PUnquote",j(U("\\"),V(n,"unquoted",this.valuePattern(t-1,...e)))))}pQuote(t,e){return M((n=>(n.type="PQuote",j(ct("pattern"),V(n,"quoted",this.valuePattern(t+1,...e))))))}hasCapturesOrDiscards(t){return o(t,(t=>null!==C(R(this.pCaptureDefaultBinder,this.pDiscard),[t],null,"(")),((t,e,n)=>e),(t=>t.some((t=>t))))}pArray(t){return M((e=>(e.type="PArray",Q("[",G(V(e,"elements",z(this.valuePattern(t),U(","))),(t=>e.elements.every((t=>"PConstant"===t.type))?E:$(t)))))))}pDict(t){return M((e=>(e.type="PDict",Q("{",G(V(e,"elements",z(q((e=>(e.value=[],j(V(e.value,"0",this.propertyNameExpr()),U(":"),V(e.value,"1",this.valuePattern(t)))))),U(","))),(t=>e.elements.every((t=>"PConstant"===t[1].type))?E:$(t)))))))}pConstructor(t,e){return M((n=>(n.type="PConstructor",j(V(n,"ctor",this.expr(...e,Q("(",D))),Q("(",V(n,"arguments",z(this.valuePattern(t,...e),U(","))))))))}valuePattern(t,...e){return Y(R(M((t=>F(this.pDiscard,(e=>t.type="PDiscard")))),this.pArray(t),this.pDict(t),this.pQuote(t,e),this.pUnquote(t,e),G(this.pConstructor(t,e),(t=>{if(this.hasCapturesOrDiscards(t.ctor)){const e=C(this.pCaptureDefaultBinder,t.ctor,null,"(");return null!==e&&1===t.arguments.length?$({type:"PCapture",inner:t.arguments[0],binder:e}):E}return $(t)})),M((t=>(t.type="PCapture",t.inner={type:"PDiscard"},V(t,"binder",this.pCaptureBinder(this.binder(...e)))))),F(this.expr(...e),(t=>({type:"PConstant",value:t})))))}}class pt extends ht{binder(...t){return M((e=>j(V(e,"id",this.identifier),K(j(U(":"),V(e,"type",this.type(U("="),...t)))))))}}function dt(t){const e=[];const n=function t(n){switch(n.type){case"PDiscard":return ut`(__SYNDICATE__.QuasiValue._)`;case"PCapture":return e.push(n.binder),ut`(__SYNDICATE__.QuasiValue.bind(${t(n.inner)}))`;case"PConstant":return ut`(__SYNDICATE__.QuasiValue.lit(__SYNDICATE__.fromJS(${n.value})))`;case"PConstructor":{const e=[ut`${n.ctor}`,...n.arguments.map(t)];return ut`(__SYNDICATE__.QuasiValue.ctor(${ot(e)}))`}case"PArray":{const e=n.elements.map(t);return ut`(__SYNDICATE__.QuasiValue.arr(${ot(e)}))`}case"PDict":{const e=n.elements.map((([e,n])=>ut`[${e}, ${t(n)}]`));return ut`(__SYNDICATE__.QuasiValue.dict(${ot(e)}))`}case"PQuote":return ut`(__SYNDICATE__.QuasiValue.quote(${t(n.quoted)}))`;case"PUnquote":return ut`(__SYNDICATE__.QuasiValue.unquote(${t(n.unquoted)}))`;case"POuterUnquote":return ut`(__SYNDICATE__.QuasiValue.unquote(${n.outer}))`}}(t);return{skeleton:n,captureBinders:e}}var ft=Object.freeze({__proto__:null,SyndicateParser:ht,SyndicateTypedParser:pt,compilePattern:dt});function mt(e){if(e.length>0&&i(e[0])&&e[0].text.startsWith("#!"))for(;e.length>0&&!a(e[0],t.NEWLINE);)e.shift();return e}class _t{constructor(t,e,n){this.nextIdNumber=0,this.parser=e?new pt:new ht,this.moduleType=t,this.typescript=e,this.errorEmitter=n}quasiRandomId(){return"__SYNDICATE__id_"+this.nextIdNumber++}argDecl(t,e,n){return this.typescript?t`${e}: ${n}`:t`${e}`}emitError(t,e){this.errorEmitter(t,e.start,e.end)}}function yt(t){return(e,n)=>{if("_"===e.id.text[0])return t`${`/* Ignoring underscore-prefixed binder ${e.id.text} */`}`;const r=t`__vs[${""+n}]`,s=t`const ${[e.id]} = ${r};`;if(void 0===e.type)return s;{const i=u(e.type);switch(i){case"boolean":case"string":case"number":case"symbol":return t`if (typeof (${r}) !== ${JSON.stringify(i)}) return;\n${s}`;case"any":return s;default:{const s=t`__v_${""+n}`;return t`const ${s} = ${e.type}.__from_preserve__(${r});
if (${s} === void 0) return;

@@ -33,6 +33,5 @@ const ${[e.id]} = ${s};`}}}}}function St(n,r){const s=new it(void 0,{extraDelimiters:":"});function i(t,e,n){if("none"===e)return l(n);return t`__SYNDICATE__.Turn.active._stop(${"default"===e?"currentSyndicateFacet":"once-wrapper"===e?"__once_facet":l(e)}, () => {${"once-wrapper"===e?[]:t`const currentSyndicateFacet = __SYNDICATE__.Turn.activeFacet;`}${l(n)}})`}function a(t,e,n){if("once-wrapper"===e)return t`__SYNDICATE__.Turn.active.facet(() => {const __once_facet = __SYNDICATE__.Turn.activeFacet; ${n}});`;return t`__SYNDICATE__.Turn.active.facet(() => {${t`const currentSyndicateFacet = __SYNDICATE__.Turn.activeFacet; `}${"default"===e?[]:t`const ${e.text} = currentSyndicateFacet; `}${n}});`}function o(t,e){n=X(n,null,t,((t,n)=>e(t,s.template(c(n)))))}function u(t,e){o(t,((t,n)=>n`__SYNDICATE__.Turn.active.${e(t,n)}`))}const l=t=>St(t,r),h=t=>void 0===t?t:l(t);function p(t,e,n=[]){const r=e` const currentSyndicateFacet = __SYNDICATE__.Turn.activeFacet;`,s=void 0===t.name?"":e` currentSyndicateFacet.actor.name = ${l(t.name)};`;return e`__SYNDICATE__.Dataspace._spawn${t.linkedToken?"Link":""}(() => {${r}${s}${n}${l(t.body)}});`}return u(r.parser.duringStatement,((t,n)=>{let s=C(r.parser.spawn,t.body,null,null);null!==s&&(null!==s.linkedToken&&r.emitError("during ... spawn doesn't need \"linked\", it's always linked",s.linkedToken),s.linkedToken=e(t.body));let i=null===s?l(t.body):p(s,n,n` __SYNDICATE__.Turn.activeFacet.preventInertCheck();`);const a=dt(t.pattern),o=n`__SYNDICATE__.Observe({

observer: __SYNDICATE__.Turn.ref(${u}),
})`;return t.isDynamic?n(e`__SYNDICATE__.Turn.active.assertDataflow(() => ({
target: currentSyndicateTarget,
assertion: ${c},
}));`):n(e`__SYNDICATE__.Turn.active.replace(currentSyndicateTarget, void 0, ${c});`)})),o(r.parser.typeDefinitionStatement,((t,e)=>{var n;const s=`Symbol.for(${JSON.stringify(t.label.text)})`,i=JSON.stringify(t.fields.map((t=>t.id.text))),a=r.typescript?e`<{${ot(t.fields.map((t=>{var n;return e`${[t.id]}: ${null!==(n=t.type)&&void 0!==n?n:"__SYNDICATE__.AnyValue"}`})))}}, __SYNDICATE__.Ref>`:"";return e`const ${[t.label]} = __SYNDICATE__.Record.makeConstructor${a}()(${null!==(n=h(t.wireName))&&void 0!==n?n:s}, ${i});`})),u(r.parser.messageSendStatement,((t,e)=>e`message(currentSyndicateTarget, ${l(t.expr)});`)),o(r.parser.reactStatement,((t,e)=>{var n;return a(e,null!==(n=t.label)&&void 0!==n?n:"default",t.body)})),o(r.parser.stopStatement,((t,e)=>e`${i(e,t.facetToStop,t.body)};`)),n}function vt(t){var e,n,r,s;const i=null!==(e=t.name)&&void 0!==e?e:"/dev/stdin",a=t.source,o=null!==(n=t.module)&&void 0!==n?n:"es6",u=null!==(r=t.typescript)&&void 0!==r&&r,h=l(i);let p=mt(nt(a,{start:h,extraDelimiters:":"}));const d=new it(void 0,{extraDelimiters:":"});p=St(p,new _t(o,u,t.emitError));const f=d.template(c(h));{const e=null!==(s=t.runtime)&&void 0!==s?s:"@syndicate-lang/core";switch(o){case"es6":p=f`import * as __SYNDICATE__ from ${JSON.stringify(e)};\n${p}`;break;case"require":p=f`const __SYNDICATE__ = require(${JSON.stringify(e)});\n${p}`;break;case"global":p=f`const __SYNDICATE__ = ${e};\n${p}`;break;case"none":break;default:(t=>{throw new Error(`Unsupported ModuleType: ${o}`)})()}}const m=new g(i);m.emit(p);return{text:m.text,map:m.map,targetToSourceMap:m.targetToSourceMap.index(),sourceToTargetMap:m.sourceToTargetMap.index()}}var gt=Object.freeze({__proto__:null,stripShebang:mt,ExpansionContext:_t,expand:St,compile:vt});export{gt as Codegen,ft as Grammar,lt as Syntax,vt as compile};
})`;return t.isDynamic?void 0===t.test?n(e`__SYNDICATE__.Turn.active.assertDataflow(() => ({ target: currentSyndicateTarget, assertion: ${c} }));`):n(e`__SYNDICATE__.Turn.active.assertDataflow(() => (${l(t.test)})
? ({ target: currentSyndicateTarget, assertion: ${c} })
: ({ target: void 0, assertion: void 0 }));`):void 0===t.test?n(e`__SYNDICATE__.Turn.active.replace(currentSyndicateTarget, void 0, ${c});`):n(e`__SYNDICATE__.Turn.active.replace(currentSyndicateTarget, void 0, (${l(t.test)}) ? ${c} : void 0);`)})),o(r.parser.typeDefinitionStatement,((t,e)=>{var n;const s=`Symbol.for(${JSON.stringify(t.label.text)})`,i=JSON.stringify(t.fields.map((t=>t.id.text))),a=r.typescript?e`<{${ot(t.fields.map((t=>{var n;return e`${[t.id]}: ${null!==(n=t.type)&&void 0!==n?n:"__SYNDICATE__.AnyValue"}`})))}}, __SYNDICATE__.Ref>`:"";return e`const ${[t.label]} = __SYNDICATE__.Record.makeConstructor${a}()(${null!==(n=h(t.wireName))&&void 0!==n?n:s}, ${i});`})),u(r.parser.messageSendStatement,((t,e)=>e`message(currentSyndicateTarget, ${l(t.expr)});`)),o(r.parser.reactStatement,((t,e)=>{var n;return a(e,null!==(n=t.label)&&void 0!==n?n:"default",t.body)})),o(r.parser.stopStatement,((t,e)=>e`${i(e,t.facetToStop,t.body)};`)),n}function vt(t){var e,n,r,s;const i=null!==(e=t.name)&&void 0!==e?e:"/dev/stdin",a=t.source,o=null!==(n=t.module)&&void 0!==n?n:"es6",u=null!==(r=t.typescript)&&void 0!==r&&r,h=l(i);let p=mt(nt(a,{start:h,extraDelimiters:":"}));const d=new it(void 0,{extraDelimiters:":"});p=St(p,new _t(o,u,t.emitError));const f=d.template(c(h));{const e=null!==(s=t.runtime)&&void 0!==s?s:"@syndicate-lang/core";switch(o){case"es6":p=f`import * as __SYNDICATE__ from ${JSON.stringify(e)};\n${p}`;break;case"require":p=f`const __SYNDICATE__ = require(${JSON.stringify(e)});\n${p}`;break;case"global":p=f`const __SYNDICATE__ = ${e};\n${p}`;break;case"none":break;default:(t=>{throw new Error(`Unsupported ModuleType: ${o}`)})()}}const m=new g(i);m.emit(p);return{text:m.text,map:m.map,targetToSourceMap:m.targetToSourceMap.index(),sourceToTargetMap:m.sourceToTargetMap.index()}}var gt=Object.freeze({__proto__:null,stripShebang:mt,ExpansionContext:_t,expand:St,compile:vt});export{gt as Codegen,ft as Grammar,lt as Syntax,vt as compile};
//# sourceMappingURL=syndicate-compiler.es6.min.js.map

@@ -1,4 +0,4 @@

!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).SyndicateCompiler={})}(this,(function(t){"use strict";var e;function n(t){return Array.isArray(t)?{start:t[0].start,end:t[t.length-1].end,synthetic:!0}:t}function r(t,e){return Object.assign(Object.assign({},t),{end:e})}function s(t){return o(t,e.SPACE)||o(t,e.NEWLINE)}function i(t){return t&&"items"in t}function a(t){return t&&"type"in t}function o(t,e){return a(t)&&t.type===e}function u(t,e,n,r){const s=t=>i(t)?n(t,r(t.items.map(s)),s):e(t);return r(t.map(s))}function l(t,n={}){return u(t,(t=>{var r;if(null===(r=n.color)||void 0===r||!r)return t.text;switch(t.type){case e.SPACE:case e.NEWLINE:return""+t.text+"";case e.STRING:return""+t.text+"";default:return t.text}}),((t,e,r)=>{var s;return r(t.open)+e+(t.close?r(t.close):null!==(s=n.missing)&&void 0!==s?s:"")}),(t=>t.join("")))}function c(t){return{line:1,column:0,pos:0,name:t}}function h(t){return Object.assign(Object.assign({},t),{fixed:!0})}function p(t,e){var n;if(null!==(n=t.fixed)&&void 0!==n&&n)return"\n"===e;{let n=!1;switch(t.pos++,e){case"\t":t.column=t.column+8&-8;break;case"\n":t.column=0,t.line++,n=!0;break;case"\r":t.column=0;break;default:t.column++}return n}}!function(t){t[t.SPACE=0]="SPACE",t[t.NEWLINE=1]="NEWLINE",t[t.ATOM=2]="ATOM",t[t.STRING=3]="STRING",t[t.OPEN=4]="OPEN",t[t.CLOSE=5]="CLOSE"}(e||(e={}));const d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",f=new Map(Object.entries(d).map((([t,e])=>[e,parseInt(t)])));function m(t){const e=[];for(let n of t){n=n<0?-n<<1|1:n<<1;do{const t=31&n;n>>=5;const r=n>0?32|t:t;e.push(d[r])}while(n>0)}return e.join("")}class _{constructor(t,e){this.items=[],this.searchTarget=t,this.start=e}get offset(){return this.searchTarget-this.start}get firstItem(){return this.items[0].item}get lastItem(){return this.items[this.items.length-1].item}}class y{constructor(){this.index=[]}get(t){var e;if(0===this.index.length)return null;let n=0,r=this.index.length;for(;;){if(n===r){if(0===n)return null;const r=this.index[n-1];if(r[0]>t)throw new Error("INTERNAL ERROR: bad binary search (1)");if((null===(e=this.index[n])||void 0===e?void 0:e[0])<=t)throw new Error("INTERNAL ERROR: bad binary search (2)");const s=new _(t,r[0]);return r[1].forEach((([e,n])=>{t<=e&&s.items.push({end:e,item:n})})),s.items.length>0?s:null}const s=n+r>>1;this.index[s][0]<=t?n=s+1:r=s}}}class S{constructor(){this.spans=new Map}add(t,e,n){this.spans.has(t)||this.spans.set(t,[]),this.spans.get(t).push([e,n])}index(){const t=new y;return this.spans.forEach(((e,n)=>{e.sort(((t,e)=>t[0]-e[0])),t.index.push([n,e])})),t.index.sort(((t,e)=>t[0]-e[0])),t}}function g(t){const e=[t.generatedStartColumn];return"sourceIndex"in t&&(e.push(t.sourceIndex),e.push(t.sourceStartLine),e.push(t.sourceStartColumn),"nameIndex"in t&&e.push(t.nameIndex)),e}function v(t,e){return void 0===e?t:t-e}class T{constructor(t){var e;this.sources=[],this.chunks=[],this.mappings=[],this.targetToSourceMap=new S,this.sourceToTargetMap=new S,this.previous={},this.previousPos=null,this.file=t,this.pos=c(null!==(e=this.file)&&void 0!==e?e:"")}get text(){return this.chunks.join("")}get map(){const t=this.mappings.map((t=>t.map(g).map(m).join(","))).join(";"),e={version:3,sources:[...this.sources],names:[],mappings:t};return null!==this.file&&(e.file=this.file),e}finishLine(){this.mappings.push([]),this.previous.generatedStartColumn=void 0,this.previousPos=null}sourceIndexFor(t){let e=this.sources.indexOf(t);return-1===e&&(this.sources.push(t),e=this.sources.length-1),e}addMapping(t,n){const r=this.previousPos;if(!(null!==r&&r.name!==t.name||n!==e.SPACE&&n!==e.NEWLINE))return void(null!==this.previousPos&&(this.previousPos=t));if(this.previousPos=t,(null==r?void 0:r.name)===t.name&&(null===t.name||(null==r?void 0:r.column)===t.column&&(null==r?void 0:r.line)===t.line))return;let s={generatedStartColumn:v(this.pos.column,this.previous.generatedStartColumn)};if(this.previous.generatedStartColumn=this.pos.column,null!==t.name){const e=this.sourceIndexFor(t.name);s=Object.assign(Object.assign({},s),{sourceIndex:v(e,this.previous.sourceIndex),sourceStartColumn:v(t.column,this.previous.sourceStartColumn),sourceStartLine:v(t.line-1,this.previous.sourceStartLine)}),this.previous.sourceIndex=e,this.previous.sourceStartColumn=t.column,this.previous.sourceStartLine=t.line-1}this.mappings[this.mappings.length-1].push(s)}chunk(t,e,n){t=Object.assign({},t),this.chunks.push(e),0===this.mappings.length&&this.finishLine(),this.addMapping(t,n);for(const r of e)p(t,r),p(this.pos,r)&&(this.finishLine(),this.addMapping(t,n))}emit(t){if(Array.isArray(t))t.forEach((t=>this.emit(t)));else if(i(t))this.emit(t.open),this.emit(t.items),t.close&&this.emit(t.close);else if(null===t);else{const e=this.pos.pos;t.synthetic||this.sourceToTargetMap.add(t.start.pos,t.end.pos,e),this.chunk(t.start,t.text,t.type),this.targetToSourceMap.add(e,this.pos.pos,t)}}}function x(t){return null===t.item}function k(t){return null!==t.item}class b{constructor(t,e,n=0){this.context=e,this.index=0,this.items=t,this.index=n}get item(){var t;return null!==(t=this.items[this.index])&&void 0!==t?t:null}get next(){return this.index>=this.items.length?null:new b(this.items,this.context,this.index+1)}toArray(){return this.items.slice(this.index)}[Symbol.iterator](){let t=this;return{next(){if(k(t)){const e=t.item;return t=t.next,{done:!1,value:e}}return{done:!0,value:null}}}}}function C(t,e,n,r){const s=t(new b(e,r));return null===s||k(P(s[1]))?n:s[0]}const E=t=>new b([],t),$=t=>null;function I(t){return e=>[t,e]}const D=t=>[void 0,E(t.context)],A=t=>[t.toArray(),E(t.context)],N=t=>x(P(t))?[void 0,E(t.context)]:null,w=t=>k(t)?[t.item.start,t]:null,O=t=>{for(;k(t)&&o(t.item,e.SPACE);)t=t.next;return k(t)&&o(t.item,e.NEWLINE)?[t.item,t.next]:null};function P(t){for(;k(t)&&s(t.item);)t=t.next;return t}function Y(t,e){for(;k(t)&&s(t.item);)e.push(t.item),t=t.next;return t}function B(t){return e=>t(P(e))}function j(t,e){return n=>null===t(n)?[e,n]:null}function L(...t){return e=>{for(const n of t){const t=n(e);if(null===t)return null;e=t[1]}return[void 0,e]}}function R(...t){return e=>{const n=[];for(const r of t){const t=r(e);if(null===t)return null;n.push(t[0]),e=t[1]}return[n,e]}}function M(...t){return e=>{for(const n of t){const t=n(e);if(null!==t)return t}return null}}function q(t){return e=>{const n=Object.create(null),r=t(n)(e);return null===r?null:[n,r[1]]}}function V(t){return e=>{const n=Object.create(null),r=t(n)(e);return null===r?null:[n.value,r[1]]}}function F(t,e,n){return r=>{const s=n(r);return null===s?null:(t[e]=s[0],s)}}function G(t,e){return n=>{const r=t(n);return null===r?null:[e(r[0]),r[1]]}}function Q(t,e){return n=>{const r=t(n);return null===r?null:e(r[0])(r[1])}}function W(t,e,n={}){return r=>{var s,a;if((null===(s=n.skipSpace)||void 0===s||s)&&(r=P(r)),!k(r))return null;if(!i(r.item))return null;if(r.item.open.text!==t)return null;const o=e(new b(r.item.items,t));return null===o?null:x(o[1])?[o[0],null===(a=n.advance)||void 0===a||a?r.next:r]:null}}function U(t,e={}){return G(J(t,e),(e=>t))}function J(t,n={}){return r=>{var s,i,o;return(null===(s=n.skipSpace)||void 0===s||s)&&(r=P(r)),k(r)&&a(r.item)?r.item.type!==(null!==(i=n.tokenType)&&void 0!==i?i:e.ATOM)||void 0!==t&&r.item.text!==t?null:[r.item,null===(o=n.advance)||void 0===o||o?r.next:r]:null}}function z(t){return e=>{const n=[];for(;;){if(null!==t(e))return[n,e];if(!k(e))break;n.push(e.item),e=e.next}return null}}function H(t,e){return n=>{const r=[];if(null!==N(n))return[r,E(n.context)];for(;;){{const e=t(n);if(null===e)return null;r.push(e[0]),n=e[1]}{const t=e(n);if(null===t)return null!==N(n)?[r,E(n.context)]:null;if(n=t[1],null!==N(n))return[r,E(n.context)]}}}}function K(t,e={}){return n=>{var r;const s=[];let i=!1;const a=()=>{var t;return s.length<(null!==(t=e.min)&&void 0!==t?t:0)?null:[s,n]};for(;;){if(s.length==(null!==(r=e.max)&&void 0!==r?r:1/0))return[s,n];if(i){if(e.separator){const t=e.separator(n);if(null===t)return a();n=t[1]}}else i=!0;const o=t(n);if(null===o)return a();s.push(o[0]),n=o[1]}}}function X(t){return K(t,{max:1})}function Z(t,e,n,r,s=(t.length>0?t[t.length-1].end:c(null))){const i=(t,e,s)=>{let o=new b(t,s);const u=[];for(;k(o=Y(o,u));){const t=n(o);null!==t?(u.push(...r(t[0],k(o)?o.item.start:e,k(t[1])?t[1].item.start:e)),o=t[1]):a(o.item)?(u.push(o.item),o=o.next):(u.push(Object.assign(Object.assign({},o.item),{items:i(o.item.items,o.item.end,o.item.open.text)})),o=o.next)}return u};return i(t,s,e)}class tt{constructor(t,e){this.charBuffer=null,this.tokenBuffer=null,this.delimiters=" \t\n\r'\"`.,;()[]{}/\\",this.pos=Object.assign({},t),this.synthetic=e}[Symbol.iterator](){return this}peekChar(){return null!==this.charBuffer||(this.charBuffer=this._peekChar()),this.charBuffer}dropChar(){null===this.charBuffer&&this.peekChar(),null!==this.charBuffer&&(this._dropChar(),p(this.pos,this.charBuffer),this.charBuffer=null)}shiftChar(){const t=this.peekChar();return this.dropChar(),t}makeToken(t,e,n){return Object.assign({type:e,start:t,end:this.mark(),text:n},this.synthetic&&{synthetic:!0})}makeGroupInProgress(t,e=[]){return Object.assign({start:t.start,open:t,close:null,items:e},this.synthetic&&{synthetic:!0})}mark(){return Object.assign({},this.pos)}_while(t,e){for(;;){const n=this.peekChar();if(!t(n))return;this.dropChar(),e(n)}}_collectSpace(t="",n=this.mark()){return this._while((t=>null!==t&&this.isSpace(t)),(e=>t+=e)),this.makeToken(n,e.SPACE,t)}_punct(t){return this.makeToken(this.mark(),t,this.shiftChar())}_str(t,n,r){const s=this.mark();let i;for(;;){if(i=this.shiftChar(),null!==i&&(n+=i),null===i||i===t||(r?"$"===i&&"{"===this.peekChar():"\n"===i))return this.makeToken(s,e.STRING,n);"\\"===i&&(i=this.shiftChar(),"\n"===i||null!==i&&(n+=i))}}templateConstantFragment(){if(null!==this.tokenBuffer)throw new Error("Internal error: templateConstantFragment");const t=this._str("`","",!0);return 0===t.text.length?null:t}isSpace(t){return" \t\r".indexOf(t)>=0}isDelimiter(t){return this.delimiters.indexOf(t)>=0}addDelimiters(t){this.delimiters=this.delimiters+t}_atom(t=this.mark(),n=""){let r;for(;;){if(r=this.peekChar(),null===r||this.isDelimiter(r))return this.makeToken(t,e.ATOM,n);n+=r,this.dropChar()}}_maybeComment(){const t=this.mark();let e=this.shiftChar(),n=this.peekChar();if(null===n)return this._collectSpace(e,t);switch(n){case"/":return this._while((t=>null!==t&&"\n"!==t),(t=>e+=t)),this._collectSpace(e,t);case"*":{let r=!1;for(e+=this.shiftChar();n=this.shiftChar(),null!==n&&(e+=n,"/"!==n||!r);)r="*"===n;return this._collectSpace(e,t)}default:return this._atom(t,e)}}_peek(){let t=this.peekChar();if(null===t)return null;switch(t){case" ":case"\t":case"\r":return this._collectSpace();case"\n":return this._punct(e.NEWLINE);case"(":case"[":case"{":return this._punct(e.OPEN);case")":case"]":case"}":return this._punct(e.CLOSE);case"'":case'"':return this.dropChar(),this._str(t,t,!1);case"`":return this.dropChar(),this._str(t,t,!0);case"/":return this._maybeComment();default:return this.isDelimiter(t)?this._punct(e.ATOM):this._atom(this.mark(),this.shiftChar())}}peek(){return null===this.tokenBuffer&&(this.tokenBuffer=this._peek()),this.tokenBuffer}drop(){null===this.tokenBuffer&&this.peek(),this.tokenBuffer=null}shift(){const t=this.peek();return this.drop(),t}next(){const t=this.shift();return null===t?{done:!0,value:null}:{done:!1,value:t}}}class et extends tt{constructor(t,e,n){super(t,n),this.input=e,this.index=0}_peekChar(){var t;return null!==(t=this.input[this.index])&&void 0!==t?t:null}_dropChar(){this.index++}}class nt{constructor(t){this.stack=[],this.scanner=t}[Symbol.iterator](){return this}stackTop(){var t;return null!==(t=this.stack[this.stack.length-1])&&void 0!==t?t:null}popUntilMatch(t){const e=function(t){switch(t){case")":return"(";case"]":return"[";case"}":return"{";default:return null}}(t.text);if(null===e||this.stack.some((t=>t.open.text===e)))for(;this.stack.length>0;){const n=r(this.stack.pop(),t.end);if(n.open.text===e&&(n.close=t),0===this.stack.length)return n;if(this.stackTop().items.push(n),n.open.text===e)return"continue"}else if(this.stack.length>0)return this.stackTop().items.push(t),"continue";return"eof"}_eofClose(){return this.scanner.makeToken(this.scanner.mark(),e.CLOSE,"")}peek(){var t;return null!==(t=this.scanner.peek())&&void 0!==t?t:this._eofClose()}drop(){this.scanner.drop()}inTemplateString(){const t=this.stackTop();return null!==t&&"`"===t.open.text[0]}expectTemplateVariablePart(){const t=this.peek();if(t.type!==e.OPEN||"{"!==t.text)throw new Error("Internal parser error: template string variable part mismatch");this.drop(),this.stack.push(this.scanner.makeGroupInProgress(t))}read(){for(var t;;)if(this.inTemplateString()){const n=null!==(t=this.scanner.templateConstantFragment())&&void 0!==t?t:this._eofClose();switch(n.type){case e.CLOSE:return this.popUntilMatch(n);case e.STRING:if("`"===n.text[n.text.length-1]){const t=r(this.stack.pop(),n.end);if(t.close=n,0===this.stack.length)return t;this.stackTop().items.push(t);break}this.stackTop().items.push(n),this.expectTemplateVariablePart();break;default:throw new Error("Internal error: LaxReader.read()")}}else{let t=this.stackTop();const n=this.peek();switch(n.type){case e.STRING:if("`"===n.text[0]&&"`"!==n.text[n.text.length-1]){this.drop(),this.stack.push(this.scanner.makeGroupInProgress(n)),this.expectTemplateVariablePart();break}case e.SPACE:case e.NEWLINE:case e.ATOM:if(this.drop(),null===t)return n;t.items.push(n);break;case e.OPEN:this.drop(),this.stack.push(this.scanner.makeGroupInProgress(n));break;case e.CLOSE:{this.drop();const t=this.popUntilMatch(n);if("eof"===t)return null;if("continue"===t)break;return t}}}}readToEnd(){return Array.from(this)}next(){const t=this.read();return null===t?{done:!0,value:null}:{done:!1,value:t}}}function rt(t,e={}){var n,r;const s=null!==(n=e.start)&&void 0!==n?n:c(null!==(r=e.name)&&void 0!==r?r:null),i=new et(s,t,e.synthetic);e.extraDelimiters&&i.addDelimiters(e.extraDelimiters);return new nt(i).readToEnd()}const st=q((t=>L(J("$"),L(F(t,"pos",w),W("{",N,{skipSpace:!1})))));function it(t,e,n){return"string"==typeof e?rt(e,Object.assign(Object.assign({},t),{start:n,synthetic:!0})):e}class at{constructor(t=c(null),e={}){this.sources={},this.recordSources=!1,this.defaultPos=t,this.readOptions=e}template(t=this.defaultPos,e=null){const n="string"==typeof t?c(t):t;return(t,...r)=>{var s;const i=[t[0]];for(let e=1;e<t.length;e++)i.push("${}"),i.push(t[e]);const a=i.join("");if(this.recordSources&&null!==n.name){if(n.name in this.sources&&this.sources[n.name]!==a)throw new Error(`Duplicate template name: ${n.name}`);this.sources[n.name]=a}let o=0;return Z(rt(a,Object.assign(Object.assign({},this.readOptions),{start:n,extraDelimiters:(null!==(s=this.readOptions.extraDelimiters)&&void 0!==s?s:"")+"$",synthetic:!0})),e,st,(t=>it(this.readOptions,r[o++],t.pos)))}}sourceFor(t){return this.sources[t]}}function ot(t,e="",n={}){if(0===t.length)return[];const r=it(n,e,c(null)),s=[...t[0]];for(let e=1;e<t.length;e++)s.push(...r,...t[e]);return s}function ut(t){return ot(t,", ")}const lt=(new at).template();var ct=Object.freeze({__proto__:null,CodeWriter:T,atEnd:x,notAtEnd:k,ArrayList:b,match:C,noItems:E,fail:$,succeed:I,discard:D,rest:A,end:N,pos:w,newline:O,skipSpace:P,collectSpace:Y,withoutSpace:B,not:j,follows:function(t){return e=>{const n=t(e);return null===n?null:[n[0],e]}},seq:L,seqTuple:R,alt:M,scope:q,value:V,bind:F,exec:function(t){return e=>(t(e),[void 0,e])},map:G,mapm:Q,group:W,atomString:U,atom:J,anything:function(t={}){return e=>{var n,r;return(null===(n=t.skipSpace)||void 0===n||n)&&(e=P(e)),k(e)?[e.item,null===(r=t.advance)||void 0===r||r?e.next:e]:null}},upTo:z,separatedBy:function(t,e){return n=>{const r=[];if(null!==N(n))return[r,E(n.context)];for(;;){{const e=t(n);if(null===e)return null;r.push(e[0]),n=e[1]}{const t=e(n);if(null===t)return null!==N(n)?[r,E(n.context)]:null;n=t[1]}}}},separatedOrTerminatedBy:H,repeat:K,option:X,replace:Z,formatPos:function(t){var e;return t?`${null!==(e=t.name)&&void 0!==e?e:"?"}:${t.line}:${t.column}`:"?"},startPos:c,fixPos:h,advancePos:p,LaxReader:nt,laxRead:rt,Scanner:tt,StringScanner:et,SpanResult:_,SpanIndex:y,SpanInfo:S,Templates:at,joinItems:ot,commaJoin:ut,anonymousTemplate:lt,get TokenType(){return e},getRange:n,finishGroup:r,makeGroup:function(t,e,n){return{start:t.start,open:t,end:n.end,close:n,items:e}},isSpace:s,isGroup:i,isToken:a,isTokenType:o,foldItems:u,itemText:l,vlqDecode:function(t){var e;let n=0,r=0;const s=[];for(const i of t){const t=null!==(e=f.get(i))&&void 0!==e?e:0;if(n|=(31&t)<<r,r+=5,!(32&t)){const t=!!(1&n);n>>=1,t&&(n=-n),s.push(n),n=0,r=0}}return s},vlqEncode:m});function ht(t){return V((e=>L(J(":"),F(e,"value",J(t,{skipSpace:!1})))))}class pt{constructor(){this.statementBoundary=M(J(";"),O,L(N,(t=>null===t.context||"{"===t.context?D(t):null))),this.exprBoundary=M(J(";"),J(","),W("{",D),N),this.identifier=J(),this.defaultBinder=this.binder(),this.type=this.expr,this.headerExpr=this.expr(ht("asserting"),ht("let")),this.spawn=this.turnAction((t=>(t.linkedToken=null,t.parentBinders=[],t.parentInits=[],t.body=[],L(J("spawn"),X(G(J("linked"),(e=>t.linkedToken=e))),X(L(J("named"),F(t,"name",this.headerExpr))),K(M(G(q((t=>L(ht("let"),F(t,"b",this.defaultBinder),J("="),F(t,"init",this.headerExpr)))),(e=>{t.parentBinders.push(e.b),t.parentInits.push(e.init)})))),this.block(t.body))))),this.fieldDeclarationStatement=this.turnAction((t=>L(J("field"),F(t,"field",this.defaultBinder),X(L(J("="),F(t,"init",this.expr()))),this.statementBoundary))),this.assertionEndpointStatement=this.turnAction((t=>(t.isDynamic=!0,L(J("assert"),X(G(ht("snapshot"),(e=>t.isDynamic=!1))),F(t,"template",this.expr(L(J("when"),W("(",D)))),X(L(J("when"),W("(",F(t,"test",this.expr())))),this.statementBoundary)))),this.dataflowStatement=this.blockTurnAction(J("dataflow")),this.eventHandlerEndpointStatement=this.turnAction((t=>(t.facetToStop="none",t.once=!1,t.isDynamic=!0,t.body=[],L(M(L(X(L(J("stop"),G(X(this.expr1(J("on"))),(e=>{t.facetToStop=e.length?e[0]:"default"})))),J("on")),G(J("once"),(e=>{t.once=!0,t.facetToStop="once-wrapper"}))),M(L(G(W("(",F(t,"predicate",this.expr())),(e=>t.triggerType="dataflow")),this.mandatoryIfNotTerminal(t,this.statement(t.body))),Q(L(F(t,"triggerType",U("stop")),X(this.statement(t.body))),(e=>"none"!==t.facetToStop||t.once?$:I(e))),L(F(t,"triggerType",M(U("asserted"),U("retracted"),U("message"))),X(G(ht("snapshot"),(e=>t.isDynamic=!1))),F(t,"pattern",this.valuePattern(1,J("=>"))),this.mandatoryIfNotTerminal(t,L(J("=>"),this.statement(t.body))))))))),this.typeDefinitionStatement=q((t=>L(F(t,"expectedUse",M(U("message"),U("assertion"))),J("type"),F(t,"label",this.identifier),W("(",F(t,"fields",K(this.defaultBinder,{separator:J(",")}))),X(L(J("="),F(t,"wireName",B(z(this.statementBoundary))))),this.statementBoundary))),this.messageSendStatement=this.turnAction((t=>L(J("send"),J("message"),j(this.statementBoundary),F(t,"expr",B(z(this.statementBoundary))),this.statementBoundary))),this.duringStatement=this.turnAction((t=>(t.body=[],L(J("during"),F(t,"pattern",this.valuePattern(1,J("=>"),L(J("when"),W("(",D)))),X(L(J("when"),W("(",F(t,"test",this.expr())))),L(J("=>"),this.statement(t.body)))))),this.reactStatement=this.turnAction((t=>(t.label=null,t.body=[],L(X(G(R(this.identifier,J(":")),(([e,n])=>t.label=e))),J("react"),this.block(t.body))))),this.stopStatement=this.turnAction((t=>(t.facetToStop="default",t.body=[],L(J("stop"),X(G(this.expr1(),(e=>t.facetToStop=e))),M(this.block(t.body),this.statementBoundary))))),this.atStatement=q((t=>(t.body=[],L(J("at"),F(t,"target",this.expr()),this.block(t.body))))),this.createExpression=q((t=>L(J("create"),F(t,"entity",this.expr())))),this.pCaptureBinder=t=>Q(t,(t=>{if(t.id.text.startsWith("$")){const e=Object.assign({},t.id.start);p(e," ");return I({id:Object.assign(Object.assign({},t.id),{start:e,text:t.id.text.slice(1)}),type:t.type})}return $})),this.pCaptureDefaultBinder=this.pCaptureBinder(this.defaultBinder),this.pDiscard=Q(this.identifier,(t=>"_"===t.text?I(void 0):$))}block(t){return W("{",G(A,(e=>(null==t||t.push(...e),e))))}binder(...t){return q((t=>F(t,"id",this.identifier)))}expr(...t){return B(z(M(this.exprBoundary,...t)))}expr1(...t){return Q(this.expr(...t),(t=>t.length?I(t):$))}propertyNameExpr(){const t=lt`"`;return M(G(J(),(e=>[...t,e,...t])),G(J(void 0,{tokenType:e.STRING}),(t=>[t])),W("[",this.expr()))}statement(t){return M(this.block(t),B(L(G(z(this.statementBoundary),(e=>t.push(...e))),G(this.statementBoundary,(e=>e?t.push(e):void 0)))))}turnAction(t){return e=>{const n=Object.create(null),r=t(n)(e);return null===r?null:[n,r[1]]}}blockTurnAction(t){return this.turnAction((e=>(e.body=[],L(t,this.block(e.body)))))}mandatoryIfNotTerminal(t,e){return n=>"none"!==t.facetToStop?X(e)(n):e(n)}pUnquote(t,e){return q(1==t?t=>(t.type="POuterUnquote",L(J("\\"),F(t,"outer",this.expr(...e)))):n=>(n.type="PUnquote",L(J("\\"),F(n,"unquoted",this.valuePattern(t-1,...e)))))}pQuote(t,e){return q((n=>(n.type="PQuote",L(ht("pattern"),F(n,"quoted",this.valuePattern(t+1,...e))))))}hasCapturesOrDiscards(t){return u(t,(t=>null!==C(M(this.pCaptureDefaultBinder,this.pDiscard),[t],null,"(")),((t,e,n)=>e),(t=>t.some((t=>t))))}pArray(t){return q((e=>(e.type="PArray",W("[",Q(F(e,"elements",H(this.valuePattern(t),J(","))),(t=>e.elements.every((t=>"PConstant"===t.type))?$:I(t)))))))}pDict(t){return q((e=>(e.type="PDict",W("{",Q(F(e,"elements",H(V((e=>(e.value=[],L(F(e.value,"0",this.propertyNameExpr()),J(":"),F(e.value,"1",this.valuePattern(t)))))),J(","))),(t=>e.elements.every((t=>"PConstant"===t[1].type))?$:I(t)))))))}pConstructor(t,e){return q((n=>(n.type="PConstructor",L(F(n,"ctor",this.expr(...e,W("(",D))),W("(",F(n,"arguments",H(this.valuePattern(t,...e),J(","))))))))}valuePattern(t,...e){return B(M(q((t=>G(this.pDiscard,(e=>t.type="PDiscard")))),this.pArray(t),this.pDict(t),this.pQuote(t,e),this.pUnquote(t,e),Q(this.pConstructor(t,e),(t=>{if(this.hasCapturesOrDiscards(t.ctor)){const e=C(this.pCaptureDefaultBinder,t.ctor,null,"(");return null!==e&&1===t.arguments.length?I({type:"PCapture",inner:t.arguments[0],binder:e}):$}return I(t)})),q((t=>(t.type="PCapture",t.inner={type:"PDiscard"},F(t,"binder",this.pCaptureBinder(this.binder(...e)))))),G(this.expr(...e),(t=>({type:"PConstant",value:t})))))}}class dt extends pt{binder(...t){return q((e=>L(F(e,"id",this.identifier),X(L(J(":"),F(e,"type",this.type(J("="),...t)))))))}}function ft(t){const e=[];const n=function t(n){switch(n.type){case"PDiscard":return lt`(__SYNDICATE__.QuasiValue._)`;case"PCapture":return e.push(n.binder),lt`(__SYNDICATE__.QuasiValue.bind(${t(n.inner)}))`;case"PConstant":return lt`(__SYNDICATE__.QuasiValue.lit(__SYNDICATE__.fromJS(${n.value})))`;case"PConstructor":{const e=[lt`${n.ctor}`,...n.arguments.map(t)];return lt`(__SYNDICATE__.QuasiValue.ctor(${ut(e)}))`}case"PArray":{const e=n.elements.map(t);return lt`(__SYNDICATE__.QuasiValue.arr(${ut(e)}))`}case"PDict":{const e=n.elements.map((([e,n])=>lt`[${e}, ${t(n)}]`));return lt`(__SYNDICATE__.QuasiValue.dict(${ut(e)}))`}case"PQuote":return lt`(__SYNDICATE__.QuasiValue.quote(${t(n.quoted)}))`;case"PUnquote":return lt`(__SYNDICATE__.QuasiValue.unquote(${t(n.unquoted)}))`;case"POuterUnquote":return lt`(__SYNDICATE__.QuasiValue.unquote(${n.outer}))`}}(t);return{skeleton:n,captureBinders:e}}var mt=Object.freeze({__proto__:null,SyndicateParser:pt,SyndicateTypedParser:dt,compilePattern:ft});function _t(t){if(t.length>0&&a(t[0])&&t[0].text.startsWith("#!"))for(;t.length>0&&!o(t[0],e.NEWLINE);)t.shift();return t}class yt{constructor(t,e,n){this.nextIdNumber=0,this.parser=e?new dt:new pt,this.moduleType=t,this.typescript=e,this.errorEmitter=n}quasiRandomId(){return"__SYNDICATE__id_"+this.nextIdNumber++}argDecl(t,e,n){return this.typescript?t`${e}: ${n}`:t`${e}`}emitError(t,e){this.errorEmitter(t,e.start,e.end)}}function St(t){return(e,n)=>{if("_"===e.id.text[0])return t`${`/* Ignoring underscore-prefixed binder ${e.id.text} */`}`;const r=t`__vs[${""+n}]`,s=t`const ${[e.id]} = ${r};`;if(void 0===e.type)return s;{const i=l(e.type);switch(i){case"boolean":case"string":case"number":case"symbol":return t`if (typeof (${r}) !== ${JSON.stringify(i)}) return;\n${s}`;case"any":return s;default:{const s=t`__v_${""+n}`;return t`const ${s} = ${e.type}.__from_preserve__(${r});
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).SyndicateCompiler={})}(this,(function(t){"use strict";var e;function n(t){return Array.isArray(t)?{start:t[0].start,end:t[t.length-1].end,synthetic:!0}:t}function r(t,e){return Object.assign(Object.assign({},t),{end:e})}function s(t){return o(t,e.SPACE)||o(t,e.NEWLINE)}function i(t){return t&&"items"in t}function a(t){return t&&"type"in t}function o(t,e){return a(t)&&t.type===e}function u(t,e,n,r){const s=t=>i(t)?n(t,r(t.items.map(s)),s):e(t);return r(t.map(s))}function l(t,n={}){return u(t,(t=>{var r;if(null===(r=n.color)||void 0===r||!r)return t.text;switch(t.type){case e.SPACE:case e.NEWLINE:return""+t.text+"";case e.STRING:return""+t.text+"";default:return t.text}}),((t,e,r)=>{var s;return r(t.open)+e+(t.close?r(t.close):null!==(s=n.missing)&&void 0!==s?s:"")}),(t=>t.join("")))}function c(t){return{line:1,column:0,pos:0,name:t}}function h(t){return Object.assign(Object.assign({},t),{fixed:!0})}function p(t,e){var n;if(null!==(n=t.fixed)&&void 0!==n&&n)return"\n"===e;{let n=!1;switch(t.pos++,e){case"\t":t.column=t.column+8&-8;break;case"\n":t.column=0,t.line++,n=!0;break;case"\r":t.column=0;break;default:t.column++}return n}}!function(t){t[t.SPACE=0]="SPACE",t[t.NEWLINE=1]="NEWLINE",t[t.ATOM=2]="ATOM",t[t.STRING=3]="STRING",t[t.OPEN=4]="OPEN",t[t.CLOSE=5]="CLOSE"}(e||(e={}));const d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",f=new Map(Object.entries(d).map((([t,e])=>[e,parseInt(t)])));function m(t){const e=[];for(let n of t){n=n<0?-n<<1|1:n<<1;do{const t=31&n;n>>=5;const r=n>0?32|t:t;e.push(d[r])}while(n>0)}return e.join("")}class _{constructor(t,e){this.items=[],this.searchTarget=t,this.start=e}get offset(){return this.searchTarget-this.start}get firstItem(){return this.items[0].item}get lastItem(){return this.items[this.items.length-1].item}}class y{constructor(){this.index=[]}get(t){var e;if(0===this.index.length)return null;let n=0,r=this.index.length;for(;;){if(n===r){if(0===n)return null;const r=this.index[n-1];if(r[0]>t)throw new Error("INTERNAL ERROR: bad binary search (1)");if((null===(e=this.index[n])||void 0===e?void 0:e[0])<=t)throw new Error("INTERNAL ERROR: bad binary search (2)");const s=new _(t,r[0]);return r[1].forEach((([e,n])=>{t<=e&&s.items.push({end:e,item:n})})),s.items.length>0?s:null}const s=n+r>>1;this.index[s][0]<=t?n=s+1:r=s}}}class S{constructor(){this.spans=new Map}add(t,e,n){this.spans.has(t)||this.spans.set(t,[]),this.spans.get(t).push([e,n])}index(){const t=new y;return this.spans.forEach(((e,n)=>{e.sort(((t,e)=>t[0]-e[0])),t.index.push([n,e])})),t.index.sort(((t,e)=>t[0]-e[0])),t}}function v(t){const e=[t.generatedStartColumn];return"sourceIndex"in t&&(e.push(t.sourceIndex),e.push(t.sourceStartLine),e.push(t.sourceStartColumn),"nameIndex"in t&&e.push(t.nameIndex)),e}function g(t,e){return void 0===e?t:t-e}class T{constructor(t){var e;this.sources=[],this.chunks=[],this.mappings=[],this.targetToSourceMap=new S,this.sourceToTargetMap=new S,this.previous={},this.previousPos=null,this.file=t,this.pos=c(null!==(e=this.file)&&void 0!==e?e:"")}get text(){return this.chunks.join("")}get map(){const t=this.mappings.map((t=>t.map(v).map(m).join(","))).join(";"),e={version:3,sources:[...this.sources],names:[],mappings:t};return null!==this.file&&(e.file=this.file),e}finishLine(){this.mappings.push([]),this.previous.generatedStartColumn=void 0,this.previousPos=null}sourceIndexFor(t){let e=this.sources.indexOf(t);return-1===e&&(this.sources.push(t),e=this.sources.length-1),e}addMapping(t,n){const r=this.previousPos;if(!(null!==r&&r.name!==t.name||n!==e.SPACE&&n!==e.NEWLINE))return void(null!==this.previousPos&&(this.previousPos=t));if(this.previousPos=t,(null==r?void 0:r.name)===t.name&&(null===t.name||(null==r?void 0:r.column)===t.column&&(null==r?void 0:r.line)===t.line))return;let s={generatedStartColumn:g(this.pos.column,this.previous.generatedStartColumn)};if(this.previous.generatedStartColumn=this.pos.column,null!==t.name){const e=this.sourceIndexFor(t.name);s=Object.assign(Object.assign({},s),{sourceIndex:g(e,this.previous.sourceIndex),sourceStartColumn:g(t.column,this.previous.sourceStartColumn),sourceStartLine:g(t.line-1,this.previous.sourceStartLine)}),this.previous.sourceIndex=e,this.previous.sourceStartColumn=t.column,this.previous.sourceStartLine=t.line-1}this.mappings[this.mappings.length-1].push(s)}chunk(t,e,n){t=Object.assign({},t),this.chunks.push(e),0===this.mappings.length&&this.finishLine(),this.addMapping(t,n);for(const r of e)p(t,r),p(this.pos,r)&&(this.finishLine(),this.addMapping(t,n))}emit(t){if(Array.isArray(t))t.forEach((t=>this.emit(t)));else if(i(t))this.emit(t.open),this.emit(t.items),t.close&&this.emit(t.close);else if(null===t);else{const e=this.pos.pos;t.synthetic||this.sourceToTargetMap.add(t.start.pos,t.end.pos,e),this.chunk(t.start,t.text,t.type),this.targetToSourceMap.add(e,this.pos.pos,t)}}}function x(t){return null===t.item}function k(t){return null!==t.item}class b{constructor(t,e,n=0){this.context=e,this.index=0,this.items=t,this.index=n}get item(){var t;return null!==(t=this.items[this.index])&&void 0!==t?t:null}get next(){return this.index>=this.items.length?null:new b(this.items,this.context,this.index+1)}toArray(){return this.items.slice(this.index)}[Symbol.iterator](){let t=this;return{next(){if(k(t)){const e=t.item;return t=t.next,{done:!1,value:e}}return{done:!0,value:null}}}}}function C(t,e,n,r){const s=t(new b(e,r));return null===s||k(P(s[1]))?n:s[0]}const E=t=>new b([],t),$=t=>null;function D(t){return e=>[t,e]}const I=t=>[void 0,E(t.context)],A=t=>[t.toArray(),E(t.context)],N=t=>x(P(t))?[void 0,E(t.context)]:null,w=t=>k(t)?[t.item.start,t]:null,O=t=>{for(;k(t)&&o(t.item,e.SPACE);)t=t.next;return k(t)&&o(t.item,e.NEWLINE)?[t.item,t.next]:null};function P(t){for(;k(t)&&s(t.item);)t=t.next;return t}function Y(t,e){for(;k(t)&&s(t.item);)e.push(t.item),t=t.next;return t}function B(t){return e=>t(P(e))}function j(t,e){return n=>null===t(n)?[e,n]:null}function L(...t){return e=>{for(const n of t){const t=n(e);if(null===t)return null;e=t[1]}return[void 0,e]}}function R(...t){return e=>{const n=[];for(const r of t){const t=r(e);if(null===t)return null;n.push(t[0]),e=t[1]}return[n,e]}}function M(...t){return e=>{for(const n of t){const t=n(e);if(null!==t)return t}return null}}function q(t){return e=>{const n=Object.create(null),r=t(n)(e);return null===r?null:[n,r[1]]}}function V(t){return e=>{const n=Object.create(null),r=t(n)(e);return null===r?null:[n.value,r[1]]}}function F(t,e,n){return r=>{const s=n(r);return null===s?null:(t[e]=s[0],s)}}function G(t,e){return n=>{const r=t(n);return null===r?null:[e(r[0]),r[1]]}}function Q(t,e){return n=>{const r=t(n);return null===r?null:e(r[0])(r[1])}}function W(t,e,n={}){return r=>{var s,a;if((null===(s=n.skipSpace)||void 0===s||s)&&(r=P(r)),!k(r))return null;if(!i(r.item))return null;if(r.item.open.text!==t)return null;const o=e(new b(r.item.items,t));return null===o?null:x(o[1])?[o[0],null===(a=n.advance)||void 0===a||a?r.next:r]:null}}function U(t,e={}){return G(J(t,e),(e=>t))}function J(t,n={}){return r=>{var s,i,o;return(null===(s=n.skipSpace)||void 0===s||s)&&(r=P(r)),k(r)&&a(r.item)?r.item.type!==(null!==(i=n.tokenType)&&void 0!==i?i:e.ATOM)||void 0!==t&&r.item.text!==t?null:[r.item,null===(o=n.advance)||void 0===o||o?r.next:r]:null}}function z(t){return e=>{const n=[];for(;;){if(null!==t(e))return[n,e];if(!k(e))break;n.push(e.item),e=e.next}return null}}function H(t,e){return n=>{const r=[];if(null!==N(n))return[r,E(n.context)];for(;;){{const e=t(n);if(null===e)return null;r.push(e[0]),n=e[1]}{const t=e(n);if(null===t)return null!==N(n)?[r,E(n.context)]:null;if(n=t[1],null!==N(n))return[r,E(n.context)]}}}}function K(t,e={}){return n=>{var r;const s=[];let i=!1;const a=()=>{var t;return s.length<(null!==(t=e.min)&&void 0!==t?t:0)?null:[s,n]};for(;;){if(s.length==(null!==(r=e.max)&&void 0!==r?r:1/0))return[s,n];if(i){if(e.separator){const t=e.separator(n);if(null===t)return a();n=t[1]}}else i=!0;const o=t(n);if(null===o)return a();s.push(o[0]),n=o[1]}}}function X(t){return K(t,{max:1})}function Z(t,e,n,r,s=(t.length>0?t[t.length-1].end:c(null))){const i=(t,e,s)=>{let o=new b(t,s);const u=[];for(;k(o=Y(o,u));){const t=n(o);null!==t?(u.push(...r(t[0],k(o)?o.item.start:e,k(t[1])?t[1].item.start:e)),o=t[1]):a(o.item)?(u.push(o.item),o=o.next):(u.push(Object.assign(Object.assign({},o.item),{items:i(o.item.items,o.item.end,o.item.open.text)})),o=o.next)}return u};return i(t,s,e)}class tt{constructor(t,e){this.charBuffer=null,this.tokenBuffer=null,this.delimiters=" \t\n\r'\"`.,;()[]{}/\\",this.pos=Object.assign({},t),this.synthetic=e}[Symbol.iterator](){return this}peekChar(){return null!==this.charBuffer||(this.charBuffer=this._peekChar()),this.charBuffer}dropChar(){null===this.charBuffer&&this.peekChar(),null!==this.charBuffer&&(this._dropChar(),p(this.pos,this.charBuffer),this.charBuffer=null)}shiftChar(){const t=this.peekChar();return this.dropChar(),t}makeToken(t,e,n){return Object.assign({type:e,start:t,end:this.mark(),text:n},this.synthetic&&{synthetic:!0})}makeGroupInProgress(t,e=[]){return Object.assign({start:t.start,open:t,close:null,items:e},this.synthetic&&{synthetic:!0})}mark(){return Object.assign({},this.pos)}_while(t,e){for(;;){const n=this.peekChar();if(!t(n))return;this.dropChar(),e(n)}}_collectSpace(t="",n=this.mark()){return this._while((t=>null!==t&&this.isSpace(t)),(e=>t+=e)),this.makeToken(n,e.SPACE,t)}_punct(t){return this.makeToken(this.mark(),t,this.shiftChar())}_str(t,n,r){const s=this.mark();let i;for(;;){if(i=this.shiftChar(),null!==i&&(n+=i),null===i||i===t||(r?"$"===i&&"{"===this.peekChar():"\n"===i))return this.makeToken(s,e.STRING,n);"\\"===i&&(i=this.shiftChar(),"\n"===i||null!==i&&(n+=i))}}templateConstantFragment(){if(null!==this.tokenBuffer)throw new Error("Internal error: templateConstantFragment");const t=this._str("`","",!0);return 0===t.text.length?null:t}isSpace(t){return" \t\r".indexOf(t)>=0}isDelimiter(t){return this.delimiters.indexOf(t)>=0}addDelimiters(t){this.delimiters=this.delimiters+t}_atom(t=this.mark(),n=""){let r;for(;;){if(r=this.peekChar(),null===r||this.isDelimiter(r))return this.makeToken(t,e.ATOM,n);n+=r,this.dropChar()}}_maybeComment(){const t=this.mark();let e=this.shiftChar(),n=this.peekChar();if(null===n)return this._collectSpace(e,t);switch(n){case"/":return this._while((t=>null!==t&&"\n"!==t),(t=>e+=t)),this._collectSpace(e,t);case"*":{let r=!1;for(e+=this.shiftChar();n=this.shiftChar(),null!==n&&(e+=n,"/"!==n||!r);)r="*"===n;return this._collectSpace(e,t)}default:return this._atom(t,e)}}_peek(){let t=this.peekChar();if(null===t)return null;switch(t){case" ":case"\t":case"\r":return this._collectSpace();case"\n":return this._punct(e.NEWLINE);case"(":case"[":case"{":return this._punct(e.OPEN);case")":case"]":case"}":return this._punct(e.CLOSE);case"'":case'"':return this.dropChar(),this._str(t,t,!1);case"`":return this.dropChar(),this._str(t,t,!0);case"/":return this._maybeComment();default:return this.isDelimiter(t)?this._punct(e.ATOM):this._atom(this.mark(),this.shiftChar())}}peek(){return null===this.tokenBuffer&&(this.tokenBuffer=this._peek()),this.tokenBuffer}drop(){null===this.tokenBuffer&&this.peek(),this.tokenBuffer=null}shift(){const t=this.peek();return this.drop(),t}next(){const t=this.shift();return null===t?{done:!0,value:null}:{done:!1,value:t}}}class et extends tt{constructor(t,e,n){super(t,n),this.input=e,this.index=0}_peekChar(){var t;return null!==(t=this.input[this.index])&&void 0!==t?t:null}_dropChar(){this.index++}}class nt{constructor(t){this.stack=[],this.scanner=t}[Symbol.iterator](){return this}stackTop(){var t;return null!==(t=this.stack[this.stack.length-1])&&void 0!==t?t:null}popUntilMatch(t){const e=function(t){switch(t){case")":return"(";case"]":return"[";case"}":return"{";default:return null}}(t.text);if(null===e||this.stack.some((t=>t.open.text===e)))for(;this.stack.length>0;){const n=r(this.stack.pop(),t.end);if(n.open.text===e&&(n.close=t),0===this.stack.length)return n;if(this.stackTop().items.push(n),n.open.text===e)return"continue"}else if(this.stack.length>0)return this.stackTop().items.push(t),"continue";return"eof"}_eofClose(){return this.scanner.makeToken(this.scanner.mark(),e.CLOSE,"")}peek(){var t;return null!==(t=this.scanner.peek())&&void 0!==t?t:this._eofClose()}drop(){this.scanner.drop()}inTemplateString(){const t=this.stackTop();return null!==t&&"`"===t.open.text[0]}expectTemplateVariablePart(){const t=this.peek();if(t.type!==e.OPEN||"{"!==t.text)throw new Error("Internal parser error: template string variable part mismatch");this.drop(),this.stack.push(this.scanner.makeGroupInProgress(t))}read(){for(var t;;)if(this.inTemplateString()){const n=null!==(t=this.scanner.templateConstantFragment())&&void 0!==t?t:this._eofClose();switch(n.type){case e.CLOSE:return this.popUntilMatch(n);case e.STRING:if("`"===n.text[n.text.length-1]){const t=r(this.stack.pop(),n.end);if(t.close=n,0===this.stack.length)return t;this.stackTop().items.push(t);break}this.stackTop().items.push(n),this.expectTemplateVariablePart();break;default:throw new Error("Internal error: LaxReader.read()")}}else{let t=this.stackTop();const n=this.peek();switch(n.type){case e.STRING:if("`"===n.text[0]&&"`"!==n.text[n.text.length-1]){this.drop(),this.stack.push(this.scanner.makeGroupInProgress(n)),this.expectTemplateVariablePart();break}case e.SPACE:case e.NEWLINE:case e.ATOM:if(this.drop(),null===t)return n;t.items.push(n);break;case e.OPEN:this.drop(),this.stack.push(this.scanner.makeGroupInProgress(n));break;case e.CLOSE:{this.drop();const t=this.popUntilMatch(n);if("eof"===t)return null;if("continue"===t)break;return t}}}}readToEnd(){return Array.from(this)}next(){const t=this.read();return null===t?{done:!0,value:null}:{done:!1,value:t}}}function rt(t,e={}){var n,r;const s=null!==(n=e.start)&&void 0!==n?n:c(null!==(r=e.name)&&void 0!==r?r:null),i=new et(s,t,e.synthetic);e.extraDelimiters&&i.addDelimiters(e.extraDelimiters);return new nt(i).readToEnd()}const st=q((t=>L(J("$"),L(F(t,"pos",w),W("{",N,{skipSpace:!1})))));function it(t,e,n){return"string"==typeof e?rt(e,Object.assign(Object.assign({},t),{start:n,synthetic:!0})):e}class at{constructor(t=c(null),e={}){this.sources={},this.recordSources=!1,this.defaultPos=t,this.readOptions=e}template(t=this.defaultPos,e=null){const n="string"==typeof t?c(t):t;return(t,...r)=>{var s;const i=[t[0]];for(let e=1;e<t.length;e++)i.push("${}"),i.push(t[e]);const a=i.join("");if(this.recordSources&&null!==n.name){if(n.name in this.sources&&this.sources[n.name]!==a)throw new Error(`Duplicate template name: ${n.name}`);this.sources[n.name]=a}let o=0;return Z(rt(a,Object.assign(Object.assign({},this.readOptions),{start:n,extraDelimiters:(null!==(s=this.readOptions.extraDelimiters)&&void 0!==s?s:"")+"$",synthetic:!0})),e,st,(t=>it(this.readOptions,r[o++],t.pos)))}}sourceFor(t){return this.sources[t]}}function ot(t,e="",n={}){if(0===t.length)return[];const r=it(n,e,c(null)),s=[...t[0]];for(let e=1;e<t.length;e++)s.push(...r,...t[e]);return s}function ut(t){return ot(t,", ")}const lt=(new at).template();var ct=Object.freeze({__proto__:null,CodeWriter:T,atEnd:x,notAtEnd:k,ArrayList:b,match:C,noItems:E,fail:$,succeed:D,discard:I,rest:A,end:N,pos:w,newline:O,skipSpace:P,collectSpace:Y,withoutSpace:B,not:j,follows:function(t){return e=>{const n=t(e);return null===n?null:[n[0],e]}},seq:L,seqTuple:R,alt:M,scope:q,value:V,bind:F,exec:function(t){return e=>(t(e),[void 0,e])},map:G,mapm:Q,group:W,atomString:U,atom:J,anything:function(t={}){return e=>{var n,r;return(null===(n=t.skipSpace)||void 0===n||n)&&(e=P(e)),k(e)?[e.item,null===(r=t.advance)||void 0===r||r?e.next:e]:null}},upTo:z,separatedBy:function(t,e){return n=>{const r=[];if(null!==N(n))return[r,E(n.context)];for(;;){{const e=t(n);if(null===e)return null;r.push(e[0]),n=e[1]}{const t=e(n);if(null===t)return null!==N(n)?[r,E(n.context)]:null;n=t[1]}}}},separatedOrTerminatedBy:H,repeat:K,option:X,replace:Z,formatPos:function(t){var e;return t?`${null!==(e=t.name)&&void 0!==e?e:"?"}:${t.line}:${t.column}`:"?"},startPos:c,fixPos:h,advancePos:p,LaxReader:nt,laxRead:rt,Scanner:tt,StringScanner:et,SpanResult:_,SpanIndex:y,SpanInfo:S,Templates:at,joinItems:ot,commaJoin:ut,anonymousTemplate:lt,get TokenType(){return e},getRange:n,finishGroup:r,makeGroup:function(t,e,n){return{start:t.start,open:t,end:n.end,close:n,items:e}},isSpace:s,isGroup:i,isToken:a,isTokenType:o,foldItems:u,itemText:l,vlqDecode:function(t){var e;let n=0,r=0;const s=[];for(const i of t){const t=null!==(e=f.get(i))&&void 0!==e?e:0;if(n|=(31&t)<<r,r+=5,!(32&t)){const t=!!(1&n);n>>=1,t&&(n=-n),s.push(n),n=0,r=0}}return s},vlqEncode:m});function ht(t){return V((e=>L(J(":"),F(e,"value",J(t,{skipSpace:!1})))))}class pt{constructor(){this.statementBoundary=M(J(";"),O,L(N,(t=>null===t.context||"{"===t.context?I(t):null))),this.exprBoundary=M(J(";"),J(","),W("{",I),N),this.identifier=J(),this.defaultBinder=this.binder(),this.type=this.expr,this.headerExpr=this.expr(ht("asserting"),ht("let")),this.spawn=this.turnAction((t=>(t.linkedToken=null,t.parentBinders=[],t.parentInits=[],t.body=[],L(J("spawn"),X(G(J("linked"),(e=>t.linkedToken=e))),X(L(J("named"),F(t,"name",this.headerExpr))),K(M(G(q((t=>L(ht("let"),F(t,"b",this.defaultBinder),J("="),F(t,"init",this.headerExpr)))),(e=>{t.parentBinders.push(e.b),t.parentInits.push(e.init)})))),this.block(t.body))))),this.fieldDeclarationStatement=this.turnAction((t=>L(J("field"),F(t,"field",this.defaultBinder),X(L(J("="),F(t,"init",this.expr()))),this.statementBoundary))),this.assertionEndpointStatement=this.turnAction((t=>(t.isDynamic=!0,L(J("assert"),X(G(ht("snapshot"),(e=>t.isDynamic=!1))),F(t,"template",this.expr(L(J("when"),W("(",I)))),X(L(J("when"),W("(",F(t,"test",this.expr())))),this.statementBoundary)))),this.dataflowStatement=this.blockTurnAction(J("dataflow")),this.eventHandlerEndpointStatement=this.turnAction((t=>(t.facetToStop="none",t.once=!1,t.isDynamic=!0,t.body=[],L(M(L(X(L(J("stop"),G(X(this.expr1(J("on"))),(e=>{t.facetToStop=e.length?e[0]:"default"})))),J("on")),G(J("once"),(e=>{t.once=!0,t.facetToStop="once-wrapper"}))),M(L(G(W("(",F(t,"predicate",this.expr())),(e=>t.triggerType="dataflow")),this.mandatoryIfNotTerminal(t,this.statement(t.body))),Q(L(F(t,"triggerType",U("stop")),X(this.statement(t.body))),(e=>"none"!==t.facetToStop||t.once?$:D(e))),L(F(t,"triggerType",M(U("asserted"),U("retracted"),U("message"))),X(G(ht("snapshot"),(e=>t.isDynamic=!1))),F(t,"pattern",this.valuePattern(1,J("=>"),L(J("when"),W("(",I)))),X(L(J("when"),W("(",F(t,"test",this.expr())))),this.mandatoryIfNotTerminal(t,L(J("=>"),this.statement(t.body))))))))),this.typeDefinitionStatement=q((t=>L(F(t,"expectedUse",M(U("message"),U("assertion"))),J("type"),F(t,"label",this.identifier),W("(",F(t,"fields",K(this.defaultBinder,{separator:J(",")}))),X(L(J("="),F(t,"wireName",B(z(this.statementBoundary))))),this.statementBoundary))),this.messageSendStatement=this.turnAction((t=>L(J("send"),J("message"),j(this.statementBoundary),F(t,"expr",B(z(this.statementBoundary))),this.statementBoundary))),this.duringStatement=this.turnAction((t=>(t.body=[],L(J("during"),F(t,"pattern",this.valuePattern(1,J("=>"),L(J("when"),W("(",I)))),X(L(J("when"),W("(",F(t,"test",this.expr())))),L(J("=>"),this.statement(t.body)))))),this.reactStatement=this.turnAction((t=>(t.label=null,t.body=[],L(X(G(R(this.identifier,J(":")),(([e,n])=>t.label=e))),J("react"),this.block(t.body))))),this.stopStatement=this.turnAction((t=>(t.facetToStop="default",t.body=[],L(J("stop"),X(G(this.expr1(),(e=>t.facetToStop=e))),M(this.block(t.body),this.statementBoundary))))),this.atStatement=q((t=>(t.body=[],L(J("at"),F(t,"target",this.expr()),this.block(t.body))))),this.createExpression=q((t=>L(J("create"),F(t,"entity",this.expr())))),this.pCaptureBinder=t=>Q(t,(t=>{if(t.id.text.startsWith("$")){const e=Object.assign({},t.id.start);p(e," ");return D({id:Object.assign(Object.assign({},t.id),{start:e,text:t.id.text.slice(1)}),type:t.type})}return $})),this.pCaptureDefaultBinder=this.pCaptureBinder(this.defaultBinder),this.pDiscard=Q(this.identifier,(t=>"_"===t.text?D(void 0):$))}block(t){return W("{",G(A,(e=>(null==t||t.push(...e),e))))}binder(...t){return q((t=>F(t,"id",this.identifier)))}expr(...t){return B(z(M(this.exprBoundary,...t)))}expr1(...t){return Q(this.expr(...t),(t=>t.length?D(t):$))}propertyNameExpr(){const t=lt`"`;return M(G(J(),(e=>[...t,e,...t])),G(J(void 0,{tokenType:e.STRING}),(t=>[t])),W("[",this.expr()))}statement(t){return M(this.block(t),B(L(G(z(this.statementBoundary),(e=>t.push(...e))),G(this.statementBoundary,(e=>e?t.push(e):void 0)))))}turnAction(t){return e=>{const n=Object.create(null),r=t(n)(e);return null===r?null:[n,r[1]]}}blockTurnAction(t){return this.turnAction((e=>(e.body=[],L(t,this.block(e.body)))))}mandatoryIfNotTerminal(t,e){return n=>"none"!==t.facetToStop?X(e)(n):e(n)}pUnquote(t,e){return q(1==t?t=>(t.type="POuterUnquote",L(J("\\"),F(t,"outer",this.expr(...e)))):n=>(n.type="PUnquote",L(J("\\"),F(n,"unquoted",this.valuePattern(t-1,...e)))))}pQuote(t,e){return q((n=>(n.type="PQuote",L(ht("pattern"),F(n,"quoted",this.valuePattern(t+1,...e))))))}hasCapturesOrDiscards(t){return u(t,(t=>null!==C(M(this.pCaptureDefaultBinder,this.pDiscard),[t],null,"(")),((t,e,n)=>e),(t=>t.some((t=>t))))}pArray(t){return q((e=>(e.type="PArray",W("[",Q(F(e,"elements",H(this.valuePattern(t),J(","))),(t=>e.elements.every((t=>"PConstant"===t.type))?$:D(t)))))))}pDict(t){return q((e=>(e.type="PDict",W("{",Q(F(e,"elements",H(V((e=>(e.value=[],L(F(e.value,"0",this.propertyNameExpr()),J(":"),F(e.value,"1",this.valuePattern(t)))))),J(","))),(t=>e.elements.every((t=>"PConstant"===t[1].type))?$:D(t)))))))}pConstructor(t,e){return q((n=>(n.type="PConstructor",L(F(n,"ctor",this.expr(...e,W("(",I))),W("(",F(n,"arguments",H(this.valuePattern(t,...e),J(","))))))))}valuePattern(t,...e){return B(M(q((t=>G(this.pDiscard,(e=>t.type="PDiscard")))),this.pArray(t),this.pDict(t),this.pQuote(t,e),this.pUnquote(t,e),Q(this.pConstructor(t,e),(t=>{if(this.hasCapturesOrDiscards(t.ctor)){const e=C(this.pCaptureDefaultBinder,t.ctor,null,"(");return null!==e&&1===t.arguments.length?D({type:"PCapture",inner:t.arguments[0],binder:e}):$}return D(t)})),q((t=>(t.type="PCapture",t.inner={type:"PDiscard"},F(t,"binder",this.pCaptureBinder(this.binder(...e)))))),G(this.expr(...e),(t=>({type:"PConstant",value:t})))))}}class dt extends pt{binder(...t){return q((e=>L(F(e,"id",this.identifier),X(L(J(":"),F(e,"type",this.type(J("="),...t)))))))}}function ft(t){const e=[];const n=function t(n){switch(n.type){case"PDiscard":return lt`(__SYNDICATE__.QuasiValue._)`;case"PCapture":return e.push(n.binder),lt`(__SYNDICATE__.QuasiValue.bind(${t(n.inner)}))`;case"PConstant":return lt`(__SYNDICATE__.QuasiValue.lit(__SYNDICATE__.fromJS(${n.value})))`;case"PConstructor":{const e=[lt`${n.ctor}`,...n.arguments.map(t)];return lt`(__SYNDICATE__.QuasiValue.ctor(${ut(e)}))`}case"PArray":{const e=n.elements.map(t);return lt`(__SYNDICATE__.QuasiValue.arr(${ut(e)}))`}case"PDict":{const e=n.elements.map((([e,n])=>lt`[${e}, ${t(n)}]`));return lt`(__SYNDICATE__.QuasiValue.dict(${ut(e)}))`}case"PQuote":return lt`(__SYNDICATE__.QuasiValue.quote(${t(n.quoted)}))`;case"PUnquote":return lt`(__SYNDICATE__.QuasiValue.unquote(${t(n.unquoted)}))`;case"POuterUnquote":return lt`(__SYNDICATE__.QuasiValue.unquote(${n.outer}))`}}(t);return{skeleton:n,captureBinders:e}}var mt=Object.freeze({__proto__:null,SyndicateParser:pt,SyndicateTypedParser:dt,compilePattern:ft});function _t(t){if(t.length>0&&a(t[0])&&t[0].text.startsWith("#!"))for(;t.length>0&&!o(t[0],e.NEWLINE);)t.shift();return t}class yt{constructor(t,e,n){this.nextIdNumber=0,this.parser=e?new dt:new pt,this.moduleType=t,this.typescript=e,this.errorEmitter=n}quasiRandomId(){return"__SYNDICATE__id_"+this.nextIdNumber++}argDecl(t,e,n){return this.typescript?t`${e}: ${n}`:t`${e}`}emitError(t,e){this.errorEmitter(t,e.start,e.end)}}function St(t){return(e,n)=>{if("_"===e.id.text[0])return t`${`/* Ignoring underscore-prefixed binder ${e.id.text} */`}`;const r=t`__vs[${""+n}]`,s=t`const ${[e.id]} = ${r};`;if(void 0===e.type)return s;{const i=l(e.type);switch(i){case"boolean":case"string":case"number":case"symbol":return t`if (typeof (${r}) !== ${JSON.stringify(i)}) return;\n${s}`;case"any":return s;default:{const s=t`__v_${""+n}`;return t`const ${s} = ${e.type}.__from_preserve__(${r});
if (${s} === void 0) return;
const ${[e.id]} = ${s};`}}}}}function gt(t,r){const s=new at(void 0,{extraDelimiters:":"});function i(t,e,n){if("none"===e)return l(n);return t`__SYNDICATE__.Turn.active._stop(${"default"===e?"currentSyndicateFacet":"once-wrapper"===e?"__once_facet":l(e)}, () => {${"once-wrapper"===e?[]:t`const currentSyndicateFacet = __SYNDICATE__.Turn.activeFacet;`}${l(n)}})`}function a(t,e,n){if("once-wrapper"===e)return t`__SYNDICATE__.Turn.active.facet(() => {const __once_facet = __SYNDICATE__.Turn.activeFacet; ${n}});`;return t`__SYNDICATE__.Turn.active.facet(() => {${t`const currentSyndicateFacet = __SYNDICATE__.Turn.activeFacet; `}${"default"===e?[]:t`const ${e.text} = currentSyndicateFacet; `}${n}});`}function o(e,n){t=Z(t,null,e,((t,e)=>n(t,s.template(h(e)))))}function u(t,e){o(t,((t,n)=>n`__SYNDICATE__.Turn.active.${e(t,n)}`))}const l=t=>gt(t,r),c=t=>void 0===t?t:l(t);function p(t,e,n=[]){const r=e` const currentSyndicateFacet = __SYNDICATE__.Turn.activeFacet;`,s=void 0===t.name?"":e` currentSyndicateFacet.actor.name = ${l(t.name)};`;return e`__SYNDICATE__.Dataspace._spawn${t.linkedToken?"Link":""}(() => {${r}${s}${n}${l(t.body)}});`}return u(r.parser.duringStatement,((t,e)=>{let s=C(r.parser.spawn,t.body,null,null);null!==s&&(null!==s.linkedToken&&r.emitError("during ... spawn doesn't need \"linked\", it's always linked",s.linkedToken),s.linkedToken=n(t.body));let i=null===s?l(t.body):p(s,e,e` __SYNDICATE__.Turn.activeFacet.preventInertCheck();`);const a=ft(t.pattern),o=e`__SYNDICATE__.Observe({
const ${[e.id]} = ${s};`}}}}}function vt(t,r){const s=new at(void 0,{extraDelimiters:":"});function i(t,e,n){if("none"===e)return l(n);return t`__SYNDICATE__.Turn.active._stop(${"default"===e?"currentSyndicateFacet":"once-wrapper"===e?"__once_facet":l(e)}, () => {${"once-wrapper"===e?[]:t`const currentSyndicateFacet = __SYNDICATE__.Turn.activeFacet;`}${l(n)}})`}function a(t,e,n){if("once-wrapper"===e)return t`__SYNDICATE__.Turn.active.facet(() => {const __once_facet = __SYNDICATE__.Turn.activeFacet; ${n}});`;return t`__SYNDICATE__.Turn.active.facet(() => {${t`const currentSyndicateFacet = __SYNDICATE__.Turn.activeFacet; `}${"default"===e?[]:t`const ${e.text} = currentSyndicateFacet; `}${n}});`}function o(e,n){t=Z(t,null,e,((t,e)=>n(t,s.template(h(e)))))}function u(t,e){o(t,((t,n)=>n`__SYNDICATE__.Turn.active.${e(t,n)}`))}const l=t=>vt(t,r),c=t=>void 0===t?t:l(t);function p(t,e,n=[]){const r=e` const currentSyndicateFacet = __SYNDICATE__.Turn.activeFacet;`,s=void 0===t.name?"":e` currentSyndicateFacet.actor.name = ${l(t.name)};`;return e`__SYNDICATE__.Dataspace._spawn${t.linkedToken?"Link":""}(() => {${r}${s}${n}${l(t.body)}});`}return u(r.parser.duringStatement,((t,e)=>{let s=C(r.parser.spawn,t.body,null,null);null!==s&&(null!==s.linkedToken&&r.emitError("during ... spawn doesn't need \"linked\", it's always linked",s.linkedToken),s.linkedToken=n(t.body));let i=null===s?l(t.body):p(s,e,e` __SYNDICATE__.Turn.activeFacet.preventInertCheck();`);const a=ft(t.pattern),o=e`__SYNDICATE__.Observe({
pattern: __SYNDICATE__.QuasiValue.finish(${a.skeleton}),

@@ -33,6 +33,5 @@ observer: __SYNDICATE__.Turn.ref(__SYNDICATE__.assertionFacetObserver(

observer: __SYNDICATE__.Turn.ref(${u}),
})`;return t.isDynamic?n(e`__SYNDICATE__.Turn.active.assertDataflow(() => ({
target: currentSyndicateTarget,
assertion: ${c},
}));`):n(e`__SYNDICATE__.Turn.active.replace(currentSyndicateTarget, void 0, ${c});`)})),o(r.parser.typeDefinitionStatement,((t,e)=>{var n;const s=`Symbol.for(${JSON.stringify(t.label.text)})`,i=JSON.stringify(t.fields.map((t=>t.id.text))),a=r.typescript?e`<{${ut(t.fields.map((t=>{var n;return e`${[t.id]}: ${null!==(n=t.type)&&void 0!==n?n:"__SYNDICATE__.AnyValue"}`})))}}, __SYNDICATE__.Ref>`:"";return e`const ${[t.label]} = __SYNDICATE__.Record.makeConstructor${a}()(${null!==(n=c(t.wireName))&&void 0!==n?n:s}, ${i});`})),u(r.parser.messageSendStatement,((t,e)=>e`message(currentSyndicateTarget, ${l(t.expr)});`)),o(r.parser.reactStatement,((t,e)=>{var n;return a(e,null!==(n=t.label)&&void 0!==n?n:"default",t.body)})),o(r.parser.stopStatement,((t,e)=>e`${i(e,t.facetToStop,t.body)};`)),t}function vt(t){var e,n,r,s;const i=null!==(e=t.name)&&void 0!==e?e:"/dev/stdin",a=t.source,o=null!==(n=t.module)&&void 0!==n?n:"es6",u=null!==(r=t.typescript)&&void 0!==r&&r,l=c(i);let p=_t(rt(a,{start:l,extraDelimiters:":"}));const d=new at(void 0,{extraDelimiters:":"});p=gt(p,new yt(o,u,t.emitError));const f=d.template(h(l));{const e=null!==(s=t.runtime)&&void 0!==s?s:"@syndicate-lang/core";switch(o){case"es6":p=f`import * as __SYNDICATE__ from ${JSON.stringify(e)};\n${p}`;break;case"require":p=f`const __SYNDICATE__ = require(${JSON.stringify(e)});\n${p}`;break;case"global":p=f`const __SYNDICATE__ = ${e};\n${p}`;break;case"none":break;default:(t=>{throw new Error(`Unsupported ModuleType: ${o}`)})()}}const m=new T(i);m.emit(p);return{text:m.text,map:m.map,targetToSourceMap:m.targetToSourceMap.index(),sourceToTargetMap:m.sourceToTargetMap.index()}}var Tt=Object.freeze({__proto__:null,stripShebang:_t,ExpansionContext:yt,expand:gt,compile:vt});t.Codegen=Tt,t.Grammar=mt,t.Syntax=ct,t.compile=vt,Object.defineProperty(t,"__esModule",{value:!0})}));
})`;return t.isDynamic?void 0===t.test?n(e`__SYNDICATE__.Turn.active.assertDataflow(() => ({ target: currentSyndicateTarget, assertion: ${c} }));`):n(e`__SYNDICATE__.Turn.active.assertDataflow(() => (${l(t.test)})
? ({ target: currentSyndicateTarget, assertion: ${c} })
: ({ target: void 0, assertion: void 0 }));`):void 0===t.test?n(e`__SYNDICATE__.Turn.active.replace(currentSyndicateTarget, void 0, ${c});`):n(e`__SYNDICATE__.Turn.active.replace(currentSyndicateTarget, void 0, (${l(t.test)}) ? ${c} : void 0);`)})),o(r.parser.typeDefinitionStatement,((t,e)=>{var n;const s=`Symbol.for(${JSON.stringify(t.label.text)})`,i=JSON.stringify(t.fields.map((t=>t.id.text))),a=r.typescript?e`<{${ut(t.fields.map((t=>{var n;return e`${[t.id]}: ${null!==(n=t.type)&&void 0!==n?n:"__SYNDICATE__.AnyValue"}`})))}}, __SYNDICATE__.Ref>`:"";return e`const ${[t.label]} = __SYNDICATE__.Record.makeConstructor${a}()(${null!==(n=c(t.wireName))&&void 0!==n?n:s}, ${i});`})),u(r.parser.messageSendStatement,((t,e)=>e`message(currentSyndicateTarget, ${l(t.expr)});`)),o(r.parser.reactStatement,((t,e)=>{var n;return a(e,null!==(n=t.label)&&void 0!==n?n:"default",t.body)})),o(r.parser.stopStatement,((t,e)=>e`${i(e,t.facetToStop,t.body)};`)),t}function gt(t){var e,n,r,s;const i=null!==(e=t.name)&&void 0!==e?e:"/dev/stdin",a=t.source,o=null!==(n=t.module)&&void 0!==n?n:"es6",u=null!==(r=t.typescript)&&void 0!==r&&r,l=c(i);let p=_t(rt(a,{start:l,extraDelimiters:":"}));const d=new at(void 0,{extraDelimiters:":"});p=vt(p,new yt(o,u,t.emitError));const f=d.template(h(l));{const e=null!==(s=t.runtime)&&void 0!==s?s:"@syndicate-lang/core";switch(o){case"es6":p=f`import * as __SYNDICATE__ from ${JSON.stringify(e)};\n${p}`;break;case"require":p=f`const __SYNDICATE__ = require(${JSON.stringify(e)});\n${p}`;break;case"global":p=f`const __SYNDICATE__ = ${e};\n${p}`;break;case"none":break;default:(t=>{throw new Error(`Unsupported ModuleType: ${o}`)})()}}const m=new T(i);m.emit(p);return{text:m.text,map:m.map,targetToSourceMap:m.targetToSourceMap.index(),sourceToTargetMap:m.sourceToTargetMap.index()}}var Tt=Object.freeze({__proto__:null,stripShebang:_t,ExpansionContext:yt,expand:vt,compile:gt});t.Codegen=Tt,t.Grammar=mt,t.Syntax=ct,t.compile=gt,Object.defineProperty(t,"__esModule",{value:!0})}));
//# sourceMappingURL=syndicate-compiler.min.js.map

@@ -219,9 +219,18 @@ /// SPDX-License-Identifier: GPL-3.0-or-later

if (s.isDynamic) {
return wrap(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 wrap(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);`);
}
}

@@ -228,0 +237,0 @@ });

@@ -52,2 +52,3 @@ import { Token, Items, TokenBase, Pattern } from '../syntax/index';

pattern: ValuePattern;
test?: Expr;
}

@@ -54,0 +55,0 @@ export type EventHandlerEndpointStatement = DataflowEndpointStatement | PseudoEventEndpointStatement | AssertionEventEndpointStatement;

@@ -59,3 +59,3 @@ /// SPDX-License-Identifier: GPL-3.0-or-later

o.facetToStop = 'once-wrapper';
})), alt(seq(map(group('(', bind(o, '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.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, 'pattern', this.valuePattern(1, atom('=>'))), this.mandatoryIfNotTerminal(o, seq(atom('=>'), this.statement(o.body))))));
})), alt(seq(map(group('(', bind(o, '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.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, 'pattern', this.valuePattern(1, atom('=>'), seq(atom('when'), group('(', discard)))), option(seq(atom('when'), group('(', bind(o, 'test', this.expr())))), this.mandatoryIfNotTerminal(o, seq(atom('=>'), this.statement(o.body))))));
});

@@ -62,0 +62,0 @@ // Principal: none

{
"name": "@syndicate-lang/compiler",
"version": "0.21.1",
"version": "0.22.0",
"description": "Syndicate/JS compiler library",

@@ -33,3 +33,3 @@ "homepage": "https://github.com/syndicate-lang/syndicate-js/tree/main/packages/compiler",

"author": "Tony Garnock-Jones <tonyg@leastfixedpoint.com>",
"gitHead": "e0d5e86da8bf6c3cbe93eb1d120faf6f081a2583"
"gitHead": "e3d419deabc5c96f1ecad6660801c4766cf452fe"
}

@@ -299,10 +299,15 @@ /// SPDX-License-Identifier: GPL-3.0-or-later

if (s.isDynamic) {
return wrap(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 wrap(
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);`);
}
}

@@ -309,0 +314,0 @@ });

@@ -78,2 +78,3 @@ /// SPDX-License-Identifier: GPL-3.0-or-later

pattern: ValuePattern;
test?: Expr,
}

@@ -329,3 +330,7 @@

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(

@@ -332,0 +337,0 @@ o, seq(atom('=>'), this.statement(o.body))))));

@@ -9,2 +9,3 @@ /// SPDX-License-Identifier: GPL-3.0-or-later

async function translateScripts() {
if (SchemaReady) await SchemaReady;

@@ -11,0 +12,0 @@ const syndicateScripts =

@@ -190,3 +190,3 @@ /// SPDX-License-Identifier: GPL-3.0-or-later

}),
}),
})
}));

@@ -210,3 +210,3 @@ });`));

}),
}),
})
}));

@@ -216,1 +216,50 @@ });`));

});
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
}));`));
});

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc