greybel-languageserver-browser 1.8.0 → 1.8.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. package/index.js +1 -1
  2. package/package.json +4 -4
package/index.js CHANGED
@@ -92,7 +92,7 @@ ${e}
92
92
  ${n.length>0?`switch(token.value) {
93
93
  ${n}
94
94
  }`:""}
95
- return false;`);return Object.defineProperty(o,"name",{value:`selector_group_${t}`,writable:!1}),o.selectors=e,o}te.createSelectorGroup=$n;function MC(t){return t.selectors}te.getSelectorsFromGroup=MC;var Bn;(function(t){t.BlockEndOfLine="BlockEndOfLine",t.AssignmentEndOfExpr="AssignmentEndOfExpr",t.AssignmentShorthand="AssignmentShorthand",t.AssignmentCommandArgs="AssignmentCommandArgs",t.ReturnStatementEnd="ReturnStatementEnd",t.FunctionDeclarationArgEnd="FunctionDeclarationArgEnd",t.ComparisonOperators="ComparisonOperators",t.MultiDivOperators="MultiDivOperators",t.CallArgsEnd="CallArgsEnd"})(Bn=te.SelectorGroupType||(te.SelectorGroupType={}));te.SelectorGroups={BlockEndOfLine:$n(Bn.AssignmentEndOfExpr,[te.Selectors.EndOfLine,te.Selectors.Comment]),AssignmentEndOfExpr:$n(Bn.AssignmentEndOfExpr,[te.Selectors.EndOfFile,te.Selectors.EndOfLine,te.Selectors.Else,te.Selectors.Comment]),AssignmentShorthand:$n(Bn.AssignmentShorthand,[te.Selectors.AddShorthand,te.Selectors.SubtractShorthand,te.Selectors.MultiplyShorthand,te.Selectors.DivideShorthand,te.Selectors.PowerShorthand,te.Selectors.ModuloShorthand]),AssignmentCommandArgs:$n(Bn.AssignmentCommandArgs,[te.Selectors.ArgumentSeperator,te.Selectors.EndOfLine,te.Selectors.EndOfFile]),ReturnStatementEnd:$n(Bn.ReturnStatementEnd,[te.Selectors.EndOfLine,te.Selectors.Else,te.Selectors.Comment]),FunctionDeclarationArgEnd:$n(Bn.FunctionDeclarationArgEnd,[te.Selectors.RParenthesis,te.Selectors.EndOfFile,te.Selectors.EndOfLine]),ComparisonOperators:$n(Bn.ComparisonOperators,[te.Selectors.Equal,te.Selectors.NotEqual,te.Selectors.Greater,te.Selectors.GreaterEqual,te.Selectors.Lesser,te.Selectors.LessEqual]),MultiDivOperators:$n(Bn.MultiDivOperators,[te.Selectors.Times,te.Selectors.Divide,te.Selectors.Mod]),CallArgsEnd:$n(Bn.CallArgsEnd,[te.Selectors.ArgumentSeperator,te.Selectors.RParenthesis])}});var yg=T(Du=>{"use strict";Object.defineProperty(Du,"__esModule",{value:!0});Du.Stack=void 0;var gg=class{constructor(){this._items=[],this._last=null,this._default=null}setDefault(e){this._default=e}push(e){return this._items.push(this._last=e)}pop(){switch(this._items.length){case 0:return this._default;case 1:return this._last=null,this._items.pop()}let e=this._items.pop();return this._last=this._items[this._items.length-1],e}peek(){return this._last||this._default}};Du.Stack=gg});var xg=T(je=>{"use strict";Object.defineProperty(je,"__esModule",{value:!0});je.PendingWhile=je.isPendingWhile=je.PendingIf=je.isPendingIf=je.PendingFunction=je.isPendingFunction=je.PendingFor=je.isPendingFor=je.PendingChunk=je.isPendingChunk=je.PendingBlockType=void 0;var kn;(function(t){t[t.Chunk=0]="Chunk",t[t.For=1]="For",t[t.Function=2]="Function",t[t.If=3]="If",t[t.While=4]="While"})(kn=je.PendingBlockType||(je.PendingBlockType={}));var ti=class{constructor(e,r,n){this.lineRegistry=n,this.block=e,this.body=[],this.type=r,this.onComplete=null}complete(e){var r;(r=this.onComplete)===null||r===void 0||r.call(this,this)}};function qC(t){return t.type===kn.Chunk}je.isPendingChunk=qC;var bg=class extends ti{constructor(e,r){super(e,kn.Chunk,r)}complete(e){this.block.body=this.body,this.block.end=e.end,this.block.range=[this.block.range[0],e.range[1]],super.complete(e)}};je.PendingChunk=bg;function FC(t){return t.type===kn.For}je.isPendingFor=FC;var vg=class extends ti{constructor(e,r){super(e,kn.For,r),this.lineRegistry.addItemToLine(this.block.start.line,this.block)}complete(e){this.block.body=this.body,this.block.end=e.end,this.block.range=[this.block.range[0],e.range[1]],this.lineRegistry.addItemToLine(e.end.line,this.block),super.complete(e)}};je.PendingFor=vg;function NC(t){return t.type===kn.Function}je.isPendingFunction=NC;var _g=class extends ti{constructor(e,r,n){super(e,kn.Function,n),this.base=r,this.lineRegistry.addItemToLine(this.block.start.line,this.block)}complete(e){this.block.body=this.body,this.block.end=e.end,this.block.range=[this.block.range[0],e.range[1]],this.base!==null?(this.base.end=this.block.end,this.base.range[1]=this.block.range[1],this.lineRegistry.addItemToLine(this.base.end.line,this.base)):this.lineRegistry.addItemToLine(this.block.end.line,this.block),super.complete(e)}};je.PendingFunction=_g;function $C(t){return t.type===kn.If}je.isPendingIf=$C;var wg=class extends ti{constructor(e,r,n){super(e,kn.If,n),this.lineRegistry.addItemToLine(this.block.start.line,this.block),this.currentClause=r}addCurrentClauseToLineRegistry(){this.currentClause.start.line!==this.block.start.line&&this.lineRegistry.addItemToLine(this.currentClause.end.line,this.block)}next(e){this.currentClause.body=this.body,this.currentClause.end=e.end,this.currentClause.range=[this.currentClause.range[0],e.range[1]],this.addCurrentClauseToLineRegistry(),this.block.clauses.push(this.currentClause),super.complete(e),this.body=[]}complete(e){this.body.length>0&&this.next(e),this.block.end=e.end,this.block.range=[this.block.range[0],e.range[1]],this.lineRegistry.addItemToLine(this.block.end.line,this.block),super.complete(e)}};je.PendingIf=wg;function BC(t){return t.type===kn.While}je.isPendingWhile=BC;var Sg=class extends ti{constructor(e,r){super(e,kn.While,r),this.lineRegistry.addItemToLine(this.block.start.line,this.block)}complete(e){this.block.body=this.body,this.block.end=e.end,this.block.range=[this.block.range[0],e.range[1]],this.lineRegistry.addItemToLine(e.end.line,this.block),super.complete(e)}};je.PendingWhile=Sg});var Tg=T(Lu=>{"use strict";Object.defineProperty(Lu,"__esModule",{value:!0});Lu.LineRegistry=void 0;var kg=class{constructor(){this._lines={}}get lines(){return this._lines}addItemToLines(e){this.addItemToRange(e.start.line,e.end.line,e)}addItemToLine(e,r){this.addItemToRange(e,e,r)}addItemToRange(e,r,n){let i=this._lines;for(let s=e;s<=r;s++){let o=i[s];o?o.push(n):i[s]=[n]}}};Lu.LineRegistry=kg});var s0=T(Lo=>{"use strict";var i0=Lo&&Lo.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Lo,"__esModule",{value:!0});var UC=i0(um()),hs=Cr(),Xt=cg(),WC=i0(hg()),VC=lu(),Tt=is(),ir=os(),jt=as(),V=mg(),HC=yg(),Un=xg(),zC=Tg(),Ig=class{constructor(e,r={}){let n=this;n.content=e,n.backpatches=new HC.Stack,n.statementErrors=[],n.lexer=r.lexer||new UC.default(e,{unsafe:r.unsafe,tabWidth:r.tabWidth}),n.token=null,n.previousToken=null,n.lineRegistry=new zC.LineRegistry,n.scopes=[],n.currentScope=null,n.currentAssignment=null,n.outerScopes=[],n.literals=[],n.validator=r.validator||new WC.default,n.astProvider=r.astProvider||new Xt.ASTProvider,n.unsafe=r.unsafe||!1,n.errors=[]}next(){this.previousToken=this.token,this.token=this.lexer.next()}isType(e){return this.token!==null&&e===this.token.type}consume(e){return e(this.token)?(this.next(),!0):!1}consumeMany(e){return e(this.token)?(this.next(),!0):!1}requireType(e,r){let n=this.token;return this.token.type!==e?(this.raise(`got ${n} where ${e} is required`,new jt.Range(r||n.start,n.end)),null):(this.next(),n)}requireToken(e,r){let n=this.token;return e(n)?(this.next(),n):(this.raise(`got ${n} where "${(0,V.getSelectorValue)(e)}" is required`,new jt.Range(r||n.start,n.end)),null)}requireTokenOfAny(e,r){let n=this.token;return e(n)?(this.next(),n):(this.raise(`got ${n} where any of ${(0,V.getSelectorsFromGroup)(e).map(i=>`"${(0,V.getSelectorValue)(i)}"`).join(", ")} is required`,new jt.Range(r||n.start,n.end)),null)}skipNewlines(){var e;let r=this,n=0;for(;;){if(V.Selectors.Comment(r.token)){let i=((e=r.previousToken)===null||e===void 0?void 0:e.line)!==r.token.line,s=r.astProvider.comment({value:r.token.value,start:r.token.start,end:r.token.end,range:r.token.range,scope:r.currentScope,isStatement:i});r.lineRegistry.addItemToLines(s)}else if(V.Selectors.EndOfLine(r.token))n++;else break;r.next()}return n}pushScope(e){let r=this;r.currentScope!==null&&(r.scopes.push(e),r.outerScopes.push(r.currentScope)),r.currentScope=e}popScope(){let e=this;e.currentScope=e.outerScopes.pop()}tryToRecover(){let e=this,r=e.statementErrors[0];if(e.errors.push(r),!e.unsafe)throw r;for(e.lexer.recoverFromSnapshot(),e.next();e.token.type!==hs.TokenType.EOL&&e.token.type!==hs.TokenType.EOF;e.next());}finishRemaingScopes(){let e=this,r=e.backpatches.pop();for(;!(0,Un.isPendingChunk)(r);){let n=e.raise(`found open block ${r.block.type}`,new jt.Range(r.block.start,r.block.start));if(r.complete(e.previousToken),e.errors.push(n),!e.unsafe)throw n;r=e.backpatches.pop()}}parseChunk(){let e=this;e.next();let r=e.token.start,n=e.astProvider.chunk({start:r,end:null,range:[e.token.range[0],null]}),i=new Un.PendingChunk(n,e.lineRegistry);for(e.backpatches.setDefault(i),e.pushScope(n);!V.Selectors.EndOfFile(e.token)&&(e.skipNewlines(),!V.Selectors.EndOfFile(e.token));)e.lexer.recordSnapshot(),e.statementErrors=[],e.parseStatement(),e.statementErrors.length>0&&e.tryToRecover();return e.finishRemaingScopes(),e.popScope(),i.complete(e.token),n.literals=e.literals,n.scopes=e.scopes,n.lines=e.lineRegistry.lines,n}parseStatement(){let e=this;if(hs.TokenType.Keyword===e.token.type&&Tt.Keyword.Not!==e.token.value){e.parseKeyword();return}let r=e.backpatches.peek(),n=e.parseAssignment();n.end!==null&&e.lineRegistry.addItemToLines(n),r.body.push(n)}parseKeyword(){let e=this;switch(e.token.value){case Tt.Keyword.Return:{let n=e.backpatches.peek();e.next();let i=e.parseReturnStatement();i.end!==null&&e.lineRegistry.addItemToLines(i),n.body.push(i);return}case Tt.Keyword.If:{e.next(),e.parseIfStatement();return}case Tt.Keyword.ElseIf:{e.next(),e.nextIfClause(Xt.ASTType.ElseifClause);return}case Tt.Keyword.Else:{e.next(),e.nextIfClause(Xt.ASTType.ElseClause);return}case Tt.Keyword.While:{e.next(),e.parseWhileStatement();return}case Tt.Keyword.For:{e.next(),e.parseForStatement();return}case Tt.Keyword.EndFunction:{e.next(),e.finalizeFunction();return}case Tt.Keyword.EndFor:{e.next(),e.finalizeForStatement();return}case Tt.Keyword.EndWhile:{e.next(),e.finalizeWhileStatement();return}case Tt.Keyword.EndIf:{e.next(),e.nextIfClause(null);return}case Tt.Keyword.Continue:{let n=e.backpatches.peek();e.next();let i=e.astProvider.continueStatement({start:e.previousToken.start,end:e.previousToken.end,range:e.previousToken.range,scope:e.currentScope});e.lineRegistry.addItemToLines(i),n.body.push(i);return}case Tt.Keyword.Break:{let n=e.backpatches.peek();e.next();let i=e.astProvider.breakStatement({start:e.previousToken.start,end:e.previousToken.end,range:e.previousToken.range,scope:e.currentScope});e.lineRegistry.addItemToLines(i),n.body.push(i);return}}e.raise(`unexpected keyword ${e.token} at start of line`,new jt.Range(e.token.start,e.token.end))}parseShortcutStatement(){let e=this;if(hs.TokenType.Keyword===e.token.type&&Tt.Keyword.Not!==e.token.value)switch(e.token.value){case Tt.Keyword.Return:return e.next(),e.parseReturnStatement();case Tt.Keyword.Continue:return e.next(),e.astProvider.continueStatement({start:e.previousToken.start,end:e.previousToken.end,range:e.previousToken.range,scope:e.currentScope});case Tt.Keyword.Break:return e.next(),e.astProvider.breakStatement({start:e.previousToken.start,end:e.previousToken.end,range:e.previousToken.range,scope:e.currentScope});default:return e.raise(`unexpected keyword ${e.token} in shorthand statement`,new jt.Range(e.token.start,e.token.end)),e.parseInvalidCode()}return e.parseAssignment()}parseAssignment(){let e=this,r=e.currentScope,n=e.token,i=e.parseExpr(null,!0,!0);if(V.SelectorGroups.AssignmentEndOfExpr(e.token))return i;if(V.Selectors.Assign(e.token)){e.next();let o=e.astProvider.assignmentStatement({variable:i,init:null,start:n.start,range:[n.range[0],null],end:null,scope:r}),l=e.currentAssignment;return e.currentAssignment=o,o.init=e.parseExpr(o),o.end=e.previousToken.end,o.range[1]=e.previousToken.range[1],e.currentAssignment=l,r.definitions.push(o),o}else if(V.SelectorGroups.AssignmentShorthand(e.token)){let o=e.token;e.next();let l=e.astProvider.assignmentStatement({variable:i,init:null,start:n.start,range:[n.range[0],null],end:null,scope:r}),u=e.currentAssignment;e.currentAssignment=l;let a=e.token,c=o.value.charAt(0),p=e.parseExpr(l),d=e.astProvider.parenthesisExpression({start:p.start,end:p.end,range:p.range,expression:p});return l.init=e.astProvider.binaryExpression({operator:c,left:i.clone(),right:d,start:a.start,end:e.previousToken.end,range:[a.range[0],e.previousToken.range[1]],scope:r}),l.end=e.previousToken.end,l.range[1]=e.previousToken.range[1],e.currentAssignment=u,r.definitions.push(l),l}let s=[];for(;!V.Selectors.EndOfFile(e.token);){let o=e.parseExpr(null);if(s.push(o),V.SelectorGroups.BlockEndOfLine(e.token)||V.Selectors.Else(e.token))break;if(V.Selectors.ArgumentSeperator(e.token)){e.next(),e.skipNewlines();continue}let l=e.requireTokenOfAny(V.SelectorGroups.AssignmentCommandArgs,n.start);if(V.Selectors.EndOfLine(l)||V.Selectors.EndOfFile(l))break}return s.length===0?e.astProvider.callStatement({expression:i,start:n.start,end:e.previousToken.end,range:[n.range[0],e.previousToken.range[1]],scope:r}):e.astProvider.callStatement({expression:e.astProvider.callExpression({base:i,arguments:s,start:n.start,end:e.previousToken.end,range:[n.range[0],e.previousToken.range[1]],scope:r}),start:n.start,end:e.previousToken.end,range:[n.range[0],e.previousToken.range[1]],scope:r})}parseReturnStatement(){let e=this,r=e.currentScope,n=e.previousToken,i=null,s=e.astProvider.returnStatement({argument:null,start:n.start,end:null,range:[n.range[0],null],scope:r});return V.SelectorGroups.ReturnStatementEnd(e.token)?(s.end=e.previousToken.end,s.range[1]=e.previousToken.range[1]):(i=e.parseExpr(s),s.end=e.previousToken.end,s.range[1]=e.previousToken.range[1],s.argument=i),r.returns.push(s),s}parseIfStatement(){let e=this,r=e.previousToken,n=e.parseExpr(null);if(e.lineRegistry.addItemToLines(n),e.requireToken(V.Selectors.Then,r.start),!V.SelectorGroups.BlockEndOfLine(e.token)){e.parseIfShortcutStatement(n,r);return}let i=e.astProvider.ifStatement({clauses:[],start:r.start,end:null,range:[r.range[0],null],scope:e.currentScope}),s=e.astProvider.ifClause({condition:n,start:r.start,end:e.token.end,range:[r.range[0],e.token.range[1]],scope:e.currentScope}),o=new Un.PendingIf(i,s,e.lineRegistry);e.backpatches.push(o)}nextIfClause(e){let r=this,n=r.backpatches.peek();if(!(0,Un.isPendingIf)(n)){r.raise("no matching open if block",new jt.Range(r.token.start,r.token.end));return}switch(n.next(r.previousToken),e){case Xt.ASTType.ElseifClause:{let i=r.token,s=r.parseExpr(null);r.requireToken(V.Selectors.Then,i.start),n.currentClause=r.astProvider.elseifClause({condition:s,start:i.start,end:null,range:[i.range[0],null],scope:r.currentScope});break}case Xt.ASTType.ElseClause:{let i=r.token;n.currentClause=r.astProvider.elseClause({start:i.start,end:null,range:[i.range[0],null],scope:r.currentScope});break}}e===null&&(n.complete(r.previousToken),r.backpatches.pop(),r.backpatches.peek().body.push(n.block))}parseIfShortcutStatement(e,r){let n=this,i=[],s=n.backpatches.peek(),o=n.astProvider.ifShortcutStatement({clauses:i,start:r.start,end:null,range:[r.range[0],null],scope:n.currentScope}),l=n.parseShortcutStatement();if(i.push(n.astProvider.ifShortcutClause({condition:e,body:[l],start:r.start,end:n.token.end,range:[r.range[0],n.token.range[1]],scope:n.currentScope})),V.Selectors.Else(n.token)){n.next();let u=n.token,a=n.parseShortcutStatement();i.push(n.astProvider.elseShortcutClause({body:[a],start:u.start,end:n.token.end,range:[u.range[0],n.token.range[1]],scope:n.currentScope}))}o.end=n.token.end,o.range[1]=n.token.range[1],n.lineRegistry.addItemToLines(o),s.body.push(o)}parseWhileStatement(){let e=this,r=e.previousToken,n=e.parseExpr(null);if(!n){e.raise("while requires a condition",new jt.Range(r.start,e.token.end));return}if(!V.SelectorGroups.BlockEndOfLine(e.token))return e.parseWhileShortcutStatement(n,r);let i=e.astProvider.whileStatement({condition:n,start:r.start,end:null,range:[r.range[0],null],scope:e.currentScope}),s=new Un.PendingWhile(i,e.lineRegistry);e.backpatches.push(s)}finalizeWhileStatement(){let e=this,r=e.backpatches.peek();if(!(0,Un.isPendingWhile)(r)){e.raise("no matching open while block",new jt.Range(e.token.start,e.token.end));return}r.complete(e.previousToken),e.backpatches.pop(),e.backpatches.peek().body.push(r.block)}parseWhileShortcutStatement(e,r){let n=this,i=n.backpatches.peek(),s=n.parseShortcutStatement(),o=n.astProvider.whileStatement({condition:e,body:[s],start:r.start,end:n.previousToken.end,range:[r.range[0],n.previousToken.range[1]],scope:n.currentScope});n.lineRegistry.addItemToLines(o),i.body.push(o)}parseForStatement(){let e=this,r=e.currentScope,n=e.previousToken,i=e.parseIdentifier(Xt.ASTIdentifierKind.ForInVariable);e.requireToken(V.Selectors.In,n.start);let s=e.parseExpr(null);if(!s){e.raise("sequence expression expected for 'for' loop",new jt.Range(n.start,e.token.end));return}if(!V.SelectorGroups.BlockEndOfLine(e.token))return e.parseForShortcutStatement(i,s,n);let o=e.astProvider.forGenericStatement({variable:i,iterator:s,start:n.start,end:e.previousToken.end,range:[n.range[0],e.previousToken.range[1]],scope:r});r.definitions.push(o);let l=new Un.PendingFor(o,e.lineRegistry);e.backpatches.push(l)}finalizeForStatement(){let e=this,r=e.backpatches.peek();if(!(0,Un.isPendingFor)(r)){e.raise("no matching open for block",new jt.Range(e.token.start,e.token.end));return}r.complete(e.previousToken),e.backpatches.pop(),e.backpatches.peek().body.push(r.block)}parseForShortcutStatement(e,r,n){let i=this,s=i.currentScope,o=i.backpatches.peek(),l=i.parseShortcutStatement(),u=i.astProvider.forGenericStatement({variable:e,iterator:r,body:[l],start:n.start,end:i.previousToken.end,range:[n.range[0],i.previousToken.range[1]],scope:i.currentScope});s.definitions.push(u),i.lineRegistry.addItemToLines(u),o.body.push(u)}parseExpr(e,r=!1,n=!1){return this.parseFunctionDeclaration(e,r,n)}parseFunctionDeclaration(e,r=!1,n=!1){let i=this;if(!V.Selectors.Function(i.token))return i.parseOr(r,n);i.next();let s=i.previousToken,o=i.astProvider.functionStatement({start:s.start,end:null,range:[s.range[0],null],scope:i.currentScope,parent:i.outerScopes[i.outerScopes.length-1],assignment:i.currentAssignment}),l=[];if(i.pushScope(o),!V.SelectorGroups.BlockEndOfLine(i.token)){for(i.requireToken(V.Selectors.LParenthesis,s.start);!V.SelectorGroups.FunctionDeclarationArgEnd(i.token);){let a=i.parseIdentifier(Xt.ASTIdentifierKind.Argument),c=a;if(i.consume(V.Selectors.Assign)){let p=i.parseExpr(null);if(p instanceof Xt.ASTLiteral){let d=i.astProvider.assignmentStatement({variable:a,init:p,start:c.start,end:i.previousToken.end,range:[c.range[0],i.previousToken.range[1]],scope:i.currentScope});i.currentScope.definitions.push(d),l.push(d)}else i.raise("parameter default value must be a literal value",new jt.Range(c.start,i.token.end)),l.push(i.astProvider.invalidCodeExpression({start:c.start,end:i.previousToken.end,range:[c.range[0],i.previousToken.range[1]]}))}else{let p=i.astProvider.assignmentStatement({variable:a,init:i.astProvider.unknown({start:c.start,end:i.previousToken.end,range:[c.range[0],i.previousToken.range[1]],scope:i.currentScope}),start:c.start,end:i.previousToken.end,range:[c.range[0],i.previousToken.range[1]],scope:i.currentScope});i.currentScope.definitions.push(p),l.push(a)}if(V.Selectors.RParenthesis(i.token))break;if(i.requireToken(V.Selectors.ArgumentSeperator,s.start),V.Selectors.RParenthesis(i.token)){i.raise("expected argument instead received right parenthesis",new jt.Range(i.previousToken.end,i.previousToken.end));break}}i.requireToken(V.Selectors.RParenthesis,s.start)}o.parameters=l;let u=new Un.PendingFunction(o,e,i.lineRegistry);return i.backpatches.push(u),o}finalizeFunction(){let e=this,r=e.backpatches.peek();if(!(0,Un.isPendingFunction)(r)){e.raise("no matching open function block",new jt.Range(e.token.start,e.token.end));return}e.popScope(),r.complete(e.previousToken),e.backpatches.pop()}parseOr(e=!1,r=!1){let n=this,i=n.token,o=n.parseAnd(e,r);for(;V.Selectors.Or(n.token);){n.next(),n.skipNewlines();let l=n.parseAnd();o=n.astProvider.logicalExpression({operator:ir.Operator.Or,left:o,right:l,start:i.start,end:n.previousToken.end,range:[i.range[0],n.previousToken.range[1]],scope:n.currentScope})}return o}parseAnd(e=!1,r=!1){let n=this,i=n.token,o=n.parseNot(e,r);for(;V.Selectors.And(n.token);){n.next(),n.skipNewlines();let l=n.parseNot();o=n.astProvider.logicalExpression({operator:ir.Operator.And,left:o,right:l,start:i.start,end:n.previousToken.end,range:[i.range[0],n.previousToken.range[1]],scope:n.currentScope})}return o}parseNot(e=!1,r=!1){let n=this,i=n.token;if(V.Selectors.Not(n.token)){n.next(),n.skipNewlines();let s=n.parseIsa();return n.astProvider.unaryExpression({operator:ir.Operator.Not,argument:s,start:i.start,end:n.previousToken.end,range:[i.range[0],n.previousToken.range[1]],scope:n.currentScope})}return n.parseIsa(e,r)}parseIsa(e=!1,r=!1){let n=this,i=n.token,s=n.parseComparisons(e,r);if(V.Selectors.Isa(n.token)){n.next(),n.skipNewlines();let o=n.parseComparisons();return n.astProvider.isaExpression({operator:ir.Operator.Isa,left:s,right:o,start:i.start,end:n.previousToken.end,range:[i.range[0],n.previousToken.range[1]],scope:n.currentScope})}return s}parseComparisons(e=!1,r=!1){let n=this,i=n.token,s=n.parseAddSub(e,r);if(!V.SelectorGroups.ComparisonOperators(n.token))return s;let o=[s],l=[];do{let u=n.token;n.next(),n.skipNewlines();let a=n.parseAddSub();l.push(u.value),o.push(a)}while(V.SelectorGroups.ComparisonOperators(n.token));return l.length===1?n.astProvider.binaryExpression({operator:l[0],left:o[0],right:o[1],start:i.start,end:n.previousToken.end,range:[i.range[0],n.previousToken.range[1]],scope:n.currentScope}):n.astProvider.comparisonGroupExpression({operators:l,expressions:o,start:i.start,end:n.previousToken.end,range:[i.range[0],n.previousToken.range[1]],scope:n.currentScope})}parseAddSub(e=!1,r=!1){let n=this,i=n.token,o=n.parseMultDiv(e,r);for(;V.Selectors.Plus(n.token)||V.Selectors.Minus(n.token)&&(!r||!n.token.afterSpace||n.lexer.isAtWhitespace());){let l=n.token;n.next(),n.skipNewlines();let u=n.parseMultDiv();o=n.astProvider.binaryExpression({operator:l.value,left:o,right:u,start:i.start,end:n.previousToken.end,range:[i.range[0],n.previousToken.range[1]],scope:n.currentScope})}return o}parseMultDiv(e=!1,r=!1){let n=this,i=n.token,o=n.parseUnaryMinus(e,r);for(;V.SelectorGroups.MultiDivOperators(n.token);){let l=n.token;n.next(),n.skipNewlines();let u=n.parseUnaryMinus();o=n.astProvider.binaryExpression({operator:l.value,left:o,right:u,start:i.start,end:n.previousToken.end,range:[i.range[0],n.previousToken.range[1]],scope:n.currentScope})}return o}parseUnaryMinus(e=!1,r=!1){let n=this;if(!V.Selectors.Minus(n.token))return n.parseNew(e,r);let i=n.token;n.next(),n.skipNewlines();let s=n.parseNew();return s instanceof Xt.ASTNumericLiteral||s instanceof Xt.ASTBooleanLiteral?(s.negated=!0,s):n.astProvider.unaryExpression({operator:ir.Operator.Minus,argument:s,start:i.start,end:n.previousToken.end,range:[i.range[0],n.previousToken.range[1]],scope:n.currentScope})}parseNew(e=!1,r=!1){let n=this;if(!V.Selectors.New(n.token))return n.parseAddressOf(e,r);let i=n.token;n.next(),n.skipNewlines();let s=n.parseNew();return n.astProvider.unaryExpression({operator:ir.Operator.New,argument:s,start:i.start,end:n.previousToken.end,range:[i.range[0],n.previousToken.range[1]],scope:n.currentScope})}parseAddressOf(e=!1,r=!1){let n=this;if(!V.Selectors.Reference(n.token))return n.parsePower(e,r);let i=n.token;n.next(),n.skipNewlines();let s=n.parsePower(!0,r);return n.astProvider.unaryExpression({operator:ir.Operator.Reference,argument:s,start:i.start,end:n.previousToken.end,range:[i.range[0],n.previousToken.range[1]],scope:n.currentScope})}parsePower(e=!1,r=!1){let n=this,i=n.token,s=n.parseCallExpr(e,r);if(V.Selectors.Power(n.token)){n.next(),n.skipNewlines();let o=n.parseCallExpr();return n.astProvider.binaryExpression({operator:ir.Operator.Power,left:s,right:o,start:i.start,end:n.previousToken.end,range:[i.range[0],n.previousToken.range[1]],scope:n.currentScope})}return s}parseCallExpr(e=!1,r=!1){let n=this,i=n.token,s=n.parseMap(e,r);for(;!V.Selectors.EndOfFile(n.token);)if(V.Selectors.MemberSeperator(n.token)){n.next(),n.skipNewlines();let o=n.parseIdentifier(Xt.ASTIdentifierKind.Property),l=n.astProvider.memberExpression({base:s,indexer:ir.Operator.Member,identifier:o,start:i.start,end:n.previousToken.end,range:[i.range[0],n.previousToken.range[1]],scope:n.currentScope});n.currentScope.namespaces.push(l),s=l}else if(V.Selectors.SLBracket(n.token)&&!n.token.afterSpace){if(n.next(),n.skipNewlines(),V.Selectors.SliceSeperator(n.token)){let o=n.astProvider.emptyExpression({start:n.previousToken.start,end:n.previousToken.end,range:n.previousToken.range,scope:n.currentScope});n.next(),n.skipNewlines();let l=V.Selectors.SRBracket(n.token)?n.astProvider.emptyExpression({start:n.previousToken.start,end:n.previousToken.end,range:n.previousToken.range,scope:n.currentScope}):n.parseExpr(null);s=n.astProvider.sliceExpression({base:s,left:o,right:l,start:i.start,end:n.token.end,range:[i.range[0],n.token.range[1]],scope:n.currentScope})}else{let o=n.parseExpr(null);if(V.Selectors.SliceSeperator(n.token)){n.next(),n.skipNewlines();let l=V.Selectors.SRBracket(n.token)?n.astProvider.emptyExpression({start:n.previousToken.start,end:n.previousToken.end,range:n.previousToken.range,scope:n.currentScope}):n.parseExpr(null);s=n.astProvider.sliceExpression({base:s,left:o,right:l,start:i.start,end:n.token.end,range:[i.range[0],n.token.range[1]],scope:n.currentScope})}else s=n.astProvider.indexExpression({base:s,index:o,isStatementStart:r,start:i.start,end:n.token.end,range:[i.range[0],n.token.range[1]],scope:n.currentScope})}n.requireToken(V.Selectors.SRBracket,i.start)}else if(V.Selectors.LParenthesis(n.token)&&(!e||!n.token.afterSpace)){let o=n.parseCallArgs();s=n.astProvider.callExpression({base:s,arguments:o,start:i.start,end:n.previousToken.end,range:[i.range[0],n.previousToken.range[1]],scope:n.currentScope})}else break;return s}parseCallArgs(){let e=this,r=[];if(V.Selectors.LParenthesis(e.token))if(e.next(),V.Selectors.RParenthesis(e.token))e.next();else for(;!V.Selectors.EndOfFile(e.token);){e.skipNewlines();let n=e.parseExpr(null);if(r.push(n),e.skipNewlines(),V.Selectors.RParenthesis(e.requireTokenOfAny(V.SelectorGroups.CallArgsEnd,n.start)))break}return r}parseMap(e=!1,r=!1){let n=this;if(!V.Selectors.CLBracket(n.token))return n.parseList(e,r);let i=n.currentScope,s=n.token,o=[],l=n.astProvider.mapConstructorExpression({fields:o,start:s.start,end:null,range:[s.range[0],null],scope:i});if(n.next(),V.Selectors.CRBracket(n.token))n.next();else for(n.skipNewlines();!V.Selectors.EndOfFile(n.token);){if(V.Selectors.CRBracket(n.token)){n.next();break}let u=n.astProvider.mapKeyString({key:null,value:null,start:n.token.start,end:null,range:[n.token.range[0],null],scope:i});if(u.key=n.parseExpr(null),n.requireToken(V.Selectors.MapKeyValueSeperator),n.skipNewlines(),u.value=n.parseExpr(u),u.end=n.previousToken.end,u.range[1]=n.previousToken.range[1],o.push(u),V.Selectors.MapSeperator(n.token)&&(n.next(),n.skipNewlines()),V.Selectors.CRBracket(n.token)){n.next();break}}return l.end=n.token.start,l.range[1]=n.token.range[1],l}parseList(e=!1,r=!1){let n=this;if(!V.Selectors.SLBracket(n.token))return n.parseQuantity(e,r);let i=n.currentScope,s=n.token,o=[],l=n.astProvider.listConstructorExpression({fields:o,start:s.start,end:null,range:[s.range[0],null],scope:i});if(n.next(),V.Selectors.SRBracket(n.token))n.next();else for(n.skipNewlines();!V.Selectors.EndOfFile(n.token);){if(V.Selectors.SRBracket(n.token)){n.next();break}let u=n.astProvider.listValue({value:null,start:n.token.start,end:null,range:[n.token.range[0],null],scope:i});if(u.value=n.parseExpr(u),u.end=n.previousToken.end,u.range[1]=n.previousToken.range[1],o.push(u),V.Selectors.MapSeperator(n.token)&&(n.next(),n.skipNewlines()),V.Selectors.SRBracket(n.token)){n.next();break}}return l.end=n.token.start,l.range[1]=n.token.range[1],l}parseQuantity(e=!1,r=!1){let n=this;if(!V.Selectors.LParenthesis(n.token))return n.parseAtom(e,r);let i=n.token;n.next(),n.skipNewlines();let s=n.parseExpr(null);return n.requireToken(V.Selectors.RParenthesis,i.start),n.astProvider.parenthesisExpression({expression:s,start:i.start,end:n.previousToken.end,range:[i.range[0],n.previousToken.range[1]],scope:n.currentScope})}parseAtom(e=!1,r=!1){let n=this;return n.validator.isLiteral(n.token.type)?n.parseLiteral():n.isType(hs.TokenType.Identifier)?n.parseIdentifier(Xt.ASTIdentifierKind.Variable):(n.raise(`got ${n.token} where number, string, or identifier is required`,new jt.Range(n.token.start,n.token.end)),n.parseInvalidCode())}parseLiteral(){let e=this,r=e.token,n=e.token.type,i=e.astProvider.literal(n,{value:e.token.value,raw:e.token.raw,start:r.start,end:e.token.end,range:[r.range[0],e.token.range[1]],scope:e.currentScope});return e.literals.push(i),e.next(),i}parseIdentifier(e){let r=this,n=r.requireType(hs.TokenType.Identifier);if(n===null)return r.parseInvalidCode();let i=r.astProvider.identifier({kind:e,name:n.value,start:n.start,end:n.end,range:n.range,scope:r.currentScope});return e!==Xt.ASTIdentifierKind.Property&&r.currentScope.namespaces.push(i),i}parseInvalidCode(){let e=this,r=e.token,n=e.astProvider.invalidCodeExpression({start:r.start,end:r.end,range:r.range});return e.next(),n}raise(e,r){let n=this,i=new VC.ParserException(e,r);return n.statementErrors.push(i),i}};Lo.default=Ig});var pe=T(ge=>{"use strict";var KC=ge&&ge.__createBinding||(Object.create?function(t,e,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(e,r);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,i)}:function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]}),Tn=ge&&ge.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&KC(e,t,r)},ju=ge&&ge.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(ge,"__esModule",{value:!0});ge.ASTRange=ge.ASTPosition=ge.LineRegistry=ge.ParserValidatorm=ge.Parser=ge.LexerValidator=ge.Lexer=void 0;var GC=um();Object.defineProperty(ge,"Lexer",{enumerable:!0,get:function(){return ju(GC).default}});Tn(Cr(),ge);var YC=Xf();Object.defineProperty(ge,"LexerValidator",{enumerable:!0,get:function(){return ju(YC).default}});var JC=s0();Object.defineProperty(ge,"Parser",{enumerable:!0,get:function(){return ju(JC).default}});Tn(cg(),ge);var QC=hg();Object.defineProperty(ge,"ParserValidatorm",{enumerable:!0,get:function(){return ju(QC).default}});var ZC=Tg();Object.defineProperty(ge,"LineRegistry",{enumerable:!0,get:function(){return ZC.LineRegistry}});Tn(xg(),ge);Tn(yg(),ge);Tn(om(),ge);Tn(au(),ge);Tn(lu(),ge);Tn(is(),ge);Tn(nm(),ge);Tn(os(),ge);var XC=rs();Object.defineProperty(ge,"ASTPosition",{enumerable:!0,get:function(){return XC.Position}});var eA=as();Object.defineProperty(ge,"ASTRange",{enumerable:!0,get:function(){return eA.Range}});Tn(mg(),ge)});var jo=T(Mu=>{"use strict";Object.defineProperty(Mu,"__esModule",{value:!0});Mu.isValidIdentifierLiteral=void 0;var tA=pe(),nA=t=>{if(t.type!==tA.ASTType.StringLiteral)return!1;let e=t.value.toString();return/^[_a-z][_a-z0-9]*$/i.test(e)};Mu.isValidIdentifierLiteral=nA});var Eg=T(Lr=>{"use strict";Object.defineProperty(Lr,"__esModule",{value:!0});Lr.getStringHashCode=Lr.getHashCode=Lr.rotateBits=void 0;function rA(t){return t>>1|t<<31}Lr.rotateBits=rA;function iA(t,e=0){let r=t>>>0;return r=(r>>16^r)*73244475,r=(r>>16^r)*73244475,r=r>>16^r,(e<<5)-e+r|0}Lr.getHashCode=iA;Lr.getStringHashCode=function(){let t=new Map,e=r=>{let n,i;for(n=0,i=0;n<r.length;n++)i=Math.imul(31,i)+r.charCodeAt(n)|0;return i};return r=>{if(r.length===0)return 0;let n=t.get(r);if(n!==void 0)return n;let i=e(r);return t.set(r,i),i}}()});var o0=T(qu=>{"use strict";Object.defineProperty(qu,"__esModule",{value:!0});qu.createExpressionHash=void 0;var Re=pe(),it=Eg(),sA=jo(),It=(t,e)=>t.$$hash=e,oA=t=>{var e;return(e=t.$$hash)!=null?e:null};function $e(t){let e=oA(t);if(e!==null)return e;let r=(0,it.getStringHashCode)(t.type);switch(t.type){case Re.ASTType.BinaryExpression:{let n=t;return r^=(0,it.getStringHashCode)(n.operator),r^=$e(n.left),r^=$e(n.right),It(t,r)}case Re.ASTType.LogicalExpression:{let n=t;return r^=(0,it.getStringHashCode)(n.operator),r^=$e(n.left),r^=$e(n.right),It(t,r)}case Re.ASTType.IsaExpression:{let n=t;return r^=(0,it.getStringHashCode)(n.operator),r^=$e(n.left),r^=$e(n.right),It(t,r)}case Re.ASTType.ComparisonGroupExpression:{let n=t;for(let i=0;i<n.expressions.length;i++)r^=$e(n.expressions[i]);for(let i=0;i<n.operators.length;i++)r^=(0,it.getStringHashCode)(n.operators[i]);return It(t,r)}case Re.ASTType.FunctionDeclaration:{let n=t;r^=(0,it.getHashCode)(n.parameters.length);for(let i=0;i<n.parameters.length;i++){let s=n.parameters[i];if(s.type===Re.ASTType.Identifier){r^=(0,it.getStringHashCode)(s.name);continue}let o=s;r^=(0,it.getStringHashCode)(o.variable.name),r^=$e(o.init)}return It(t,r)}case Re.ASTType.ParenthesisExpression:return $e(t.expression);case Re.ASTType.MemberExpression:{let n=t;if(n.base.type===Re.ASTType.Identifier){let i=n.base.name;if(i==="globals"||i==="locals"||i==="outer")return r=(0,it.getStringHashCode)(Re.ASTType.Identifier),r^=(0,it.getStringHashCode)(n.identifier.name),It(t,r)}return r^=$e(n.base),r^=$e(n.identifier),It(t,r)}case Re.ASTType.IndexExpression:{let n=t;if((0,sA.isValidIdentifierLiteral)(n.index)){if(n.base.type===Re.ASTType.Identifier){let s=n.base.name;if(s==="globals"||s==="locals"||s==="outer")return r=(0,it.getStringHashCode)(Re.ASTType.Identifier),r^=(0,it.getStringHashCode)(n.index.value.toString()),It(t,r)}r=(0,it.getStringHashCode)(Re.ASTType.MemberExpression),r^=$e(n.base);let i=(0,it.getStringHashCode)(Re.ASTType.Identifier);i^=(0,it.getStringHashCode)(n.index.value.toString()),r^=i}else r^=$e(n.base),r^=$e(n.index);return It(t,r)}case Re.ASTType.CallExpression:{let n=t;r^=$e(n.base),r^=(0,it.getHashCode)(n.arguments.length);for(let i=0;i<n.arguments.length;i++){let s=n.arguments[i];r^=$e(s)}return It(t,r)}case Re.ASTType.NegationExpression:case Re.ASTType.BinaryNegatedExpression:case Re.ASTType.UnaryExpression:{let n=t;return r^=n.operator?(0,it.getStringHashCode)(n.operator):1,r^=$e(n.argument),It(t,r)}case Re.ASTType.Identifier:{let n=t;return r^=(0,it.getStringHashCode)(n.name),It(t,r)}case Re.ASTType.BooleanLiteral:case Re.ASTType.NumericLiteral:case Re.ASTType.StringLiteral:case Re.ASTType.NilLiteral:return r^=(0,it.getStringHashCode)(t.value.toString()),It(t,r);case Re.ASTType.MapConstructorExpression:{let n=t;r^=(0,it.getHashCode)(n.fields.length);for(let i=0;i<n.fields.length;i++){let s=n.fields[i];r^=$e(s.key),r^=$e(s.value)}return It(t,r)}case Re.ASTType.ListConstructorExpression:{let n=t;r^=(0,it.getHashCode)(n.fields.length);for(let i=0;i<n.fields.length;i++){let s=n.fields[i];r^=$e(s.value)}return It(t,r)}case Re.ASTType.SliceExpression:{let n=t;return r^=$e(n.base),r^=$e(n.left),r^=$e(n.right),It(t,r)}}return It(t,r)}function aA(t){return $e(t)}qu.createExpressionHash=aA});var Rg=T(Fu=>{"use strict";Object.defineProperty(Fu,"__esModule",{value:!0});Fu.createExpressionId=void 0;var st=pe(),lA=jo(),pt=(t,e)=>t.$$id=e,uA=t=>{var e;return(e=t.$$id)!=null?e:null};function Me(t){let e=uA(t);if(e!==null)return e;switch(t.type){case st.ASTType.BinaryExpression:{let r=t;return pt(t,Me(r.left)+r.operator+Me(r.right))}case st.ASTType.LogicalExpression:{let r=t;return pt(t,Me(r.left)+r.operator+Me(r.right))}case st.ASTType.IsaExpression:{let r=t;return pt(t,Me(r.left)+r.operator+Me(r.right))}case st.ASTType.ComparisonGroupExpression:{let r=t,n=r.expressions.map(s=>Me(s)),i=[n[0]];for(let s=0;s<r.operators.length;s++)i.push(r.operators[s],n[s+1]);return pt(t,i.join(" "))}case st.ASTType.FunctionDeclaration:{let r=t,n="function",i=[];for(let s=0;s<r.parameters.length;s++){let o=r.parameters[s];if(o.type===st.ASTType.Identifier){i.push(o.name);continue}let l=o;i.push(l.variable.name+"="+Me(l.init))}return i.length>0&&(n+="("+i.join(",")+")"),pt(t,n)}case st.ASTType.ParenthesisExpression:return pt(t,Me(t.expression));case st.ASTType.MemberExpression:{let r=t;return pt(t,Me(r.base)+"."+r.identifier.name)}case st.ASTType.IndexExpression:{let r=t;return(0,lA.isValidIdentifierLiteral)(r.index)?pt(t,Me(r.base)+"."+r.index.value.toString()):pt(t,Me(r.base)+"["+Me(r.index)+"]")}case st.ASTType.CallExpression:{let r=t,n=Me(r.base),i=[];for(let s=0;s<r.arguments.length;s++){let o=r.arguments[s];i.push(Me(o))}return i.length>0&&(n+="("+i.join(",")+")"),pt(t,n)}case st.ASTType.NegationExpression:case st.ASTType.BinaryNegatedExpression:case st.ASTType.UnaryExpression:{let r=t;return r.operator==null?pt(t,Me(r.argument)):r.operator==="@"?pt(t,r.operator+Me(r.argument)):pt(t,r.operator+" "+Me(r.argument))}case st.ASTType.Identifier:return pt(t,t.name);case st.ASTType.NumericLiteral:case st.ASTType.BooleanLiteral:case st.ASTType.StringLiteral:case st.ASTType.NilLiteral:return pt(t,t.raw.toString());case st.ASTType.MapConstructorExpression:{let r=t,n=[];for(let i=0;i<r.fields.length;i++){let s=r.fields[i];n.push(Me(s.key)+":"+Me(s.value))}return pt(t,"{"+n.join(",")+"}")}case st.ASTType.ListConstructorExpression:{let r=t,n=[];for(let i=0;i<r.fields.length;i++){let s=r.fields[i];n.push(Me(s.value))}return pt(t,"["+n.join(",")+"]")}case st.ASTType.SliceExpression:{let r=t;return pt(t,Me(r.base)+"["+Me(r.left)+":"+Me(r.right)+"]")}}return pt(t,"")}function cA(t){return Me(t)}Fu.createExpressionId=cA});var fs=T(Mo=>{"use strict";Object.defineProperty(Mo,"__esModule",{value:!0});Mo.Markers=void 0;var pA;(function(t){t.start="/**",t.nostart="/***",t.delim="*",t.end="*/"})(pA=Mo.Markers||(Mo.Markers={}))});var In=T(Ye=>{"use strict";Object.defineProperty(Ye,"__esModule",{value:!0});Ye.rewireSpecs=Ye.rewireSource=Ye.seedTokens=Ye.seedSpec=Ye.seedBlock=Ye.splitLines=Ye.splitSpace=Ye.splitCR=Ye.hasCR=Ye.isSpace=void 0;function dA(t){return/^\s+$/.test(t)}Ye.isSpace=dA;function hA(t){return/\r$/.test(t)}Ye.hasCR=hA;function fA(t){let e=t.match(/\r+$/);return e==null?["",t]:[t.slice(-e[0].length),t.slice(0,-e[0].length)]}Ye.splitCR=fA;function mA(t){let e=t.match(/^\s+/);return e==null?["",t]:[t.slice(0,e[0].length),t.slice(e[0].length)]}Ye.splitSpace=mA;function gA(t){return t.split(/\n/)}Ye.splitLines=gA;function yA(t={}){return Object.assign({description:"",tags:[],source:[],problems:[]},t)}Ye.seedBlock=yA;function bA(t={}){return Object.assign({tag:"",name:"",type:"",optional:!1,description:"",problems:[],source:[]},t)}Ye.seedSpec=bA;function vA(t={}){return Object.assign({start:"",delimiter:"",postDelimiter:"",tag:"",postTag:"",name:"",postName:"",type:"",postType:"",description:"",end:"",lineEnd:""},t)}Ye.seedTokens=vA;function _A(t){let e=t.source.reduce((r,n)=>r.set(n.number,n),new Map);for(let r of t.tags)r.source=r.source.map(n=>e.get(n.number));return t}Ye.rewireSource=_A;function wA(t){let e=t.tags.reduce((r,n)=>n.source.reduce((i,s)=>i.set(s.number,s),r),new Map);return t.source=t.source.map(r=>e.get(r.number)||r),t}Ye.rewireSpecs=wA});var a0=T(Pg=>{"use strict";Object.defineProperty(Pg,"__esModule",{value:!0});var SA=/^@\S+/;function xA({fence:t="```"}={}){let e=kA(t),r=(n,i)=>e(n)?!i:i;return function(i){let s=[[]],o=!1;for(let l of i)SA.test(l.tokens.description)&&!o?s.push([l]):s[s.length-1].push(l),o=r(l.tokens.description,o);return s}}Pg.default=xA;function kA(t){return typeof t=="string"?e=>e.split(t).length%2===0:t}});var l0=T(Cg=>{"use strict";Object.defineProperty(Cg,"__esModule",{value:!0});var TA=fs(),qo=In();function IA({startLine:t=0,markers:e=TA.Markers}={}){let r=null,n=t;return function(s){let o=s,l=(0,qo.seedTokens)();if([l.lineEnd,o]=(0,qo.splitCR)(o),[l.start,o]=(0,qo.splitSpace)(o),r===null&&o.startsWith(e.start)&&!o.startsWith(e.nostart)&&(r=[],l.delimiter=o.slice(0,e.start.length),o=o.slice(e.start.length),[l.postDelimiter,o]=(0,qo.splitSpace)(o)),r===null)return n++,null;let u=o.trimRight().endsWith(e.end);if(l.delimiter===""&&o.startsWith(e.delim)&&!o.startsWith(e.end)&&(l.delimiter=e.delim,o=o.slice(e.delim.length),[l.postDelimiter,o]=(0,qo.splitSpace)(o)),u){let a=o.trimRight();l.end=o.slice(a.length-e.end.length),o=a.slice(0,-e.end.length)}if(l.description=o,r.push({number:n,source:s,tokens:l}),n++,u){let a=r.slice();return r=null,a}return null}}Cg.default=IA});var u0=T(Ag=>{"use strict";Object.defineProperty(Ag,"__esModule",{value:!0});var EA=In();function RA({tokenizers:t}){return function(r){var n;let i=(0,EA.seedSpec)({source:r});for(let s of t)if(i=s(i),!((n=i.problems[i.problems.length-1])===null||n===void 0)&&n.critical)break;return i}}Ag.default=RA});var Dg=T(Og=>{"use strict";Object.defineProperty(Og,"__esModule",{value:!0});function PA(){return t=>{let{tokens:e}=t.source[0],r=e.description.match(/\s*(@(\S+))(\s*)/);return r===null?(t.problems.push({code:"spec:tag:prefix",message:'tag should start with "@" symbol',line:t.source[0].number,critical:!0}),t):(e.tag=r[1],e.postTag=r[3],e.description=e.description.slice(r[0].length),t.tag=r[2],t)}}Og.default=PA});var jg=T(Lg=>{"use strict";Object.defineProperty(Lg,"__esModule",{value:!0});var CA=In();function AA(t="compact"){let e=DA(t);return r=>{let n=0,i=[];for(let[l,{tokens:u}]of r.source.entries()){let a="";if(l===0&&u.description[0]!=="{")return r;for(let c of u.description)if(c==="{"&&n++,c==="}"&&n--,a+=c,n===0)break;if(i.push([u,a]),n===0)break}if(n!==0)return r.problems.push({code:"spec:type:unpaired-curlies",message:"unpaired curlies",line:r.source[0].number,critical:!0}),r;let s=[],o=i[0][0].postDelimiter.length;for(let[l,[u,a]]of i.entries())u.type=a,l>0&&(u.type=u.postDelimiter.slice(o)+a,u.postDelimiter=u.postDelimiter.slice(0,o)),[u.postType,u.description]=(0,CA.splitSpace)(u.description.slice(a.length)),s.push(u.type);return s[0]=s[0].slice(1),s[s.length-1]=s[s.length-1].slice(0,-1),r.type=e(s),r}}Lg.default=AA;var OA=t=>t.trim();function DA(t){return t==="compact"?e=>e.map(OA).join(""):t==="preserve"?e=>e.join(`
95
+ return false;`);return Object.defineProperty(o,"name",{value:`selector_group_${t}`,writable:!1}),o.selectors=e,o}te.createSelectorGroup=$n;function MC(t){return t.selectors}te.getSelectorsFromGroup=MC;var Bn;(function(t){t.BlockEndOfLine="BlockEndOfLine",t.AssignmentEndOfExpr="AssignmentEndOfExpr",t.AssignmentShorthand="AssignmentShorthand",t.AssignmentCommandArgs="AssignmentCommandArgs",t.ReturnStatementEnd="ReturnStatementEnd",t.FunctionDeclarationArgEnd="FunctionDeclarationArgEnd",t.ComparisonOperators="ComparisonOperators",t.MultiDivOperators="MultiDivOperators",t.CallArgsEnd="CallArgsEnd"})(Bn=te.SelectorGroupType||(te.SelectorGroupType={}));te.SelectorGroups={BlockEndOfLine:$n(Bn.AssignmentEndOfExpr,[te.Selectors.EndOfLine,te.Selectors.Comment]),AssignmentEndOfExpr:$n(Bn.AssignmentEndOfExpr,[te.Selectors.EndOfFile,te.Selectors.EndOfLine,te.Selectors.Else,te.Selectors.Comment]),AssignmentShorthand:$n(Bn.AssignmentShorthand,[te.Selectors.AddShorthand,te.Selectors.SubtractShorthand,te.Selectors.MultiplyShorthand,te.Selectors.DivideShorthand,te.Selectors.PowerShorthand,te.Selectors.ModuloShorthand]),AssignmentCommandArgs:$n(Bn.AssignmentCommandArgs,[te.Selectors.ArgumentSeperator,te.Selectors.EndOfLine,te.Selectors.EndOfFile]),ReturnStatementEnd:$n(Bn.ReturnStatementEnd,[te.Selectors.EndOfLine,te.Selectors.Else,te.Selectors.Comment]),FunctionDeclarationArgEnd:$n(Bn.FunctionDeclarationArgEnd,[te.Selectors.RParenthesis,te.Selectors.EndOfFile,te.Selectors.EndOfLine]),ComparisonOperators:$n(Bn.ComparisonOperators,[te.Selectors.Equal,te.Selectors.NotEqual,te.Selectors.Greater,te.Selectors.GreaterEqual,te.Selectors.Lesser,te.Selectors.LessEqual]),MultiDivOperators:$n(Bn.MultiDivOperators,[te.Selectors.Times,te.Selectors.Divide,te.Selectors.Mod]),CallArgsEnd:$n(Bn.CallArgsEnd,[te.Selectors.ArgumentSeperator,te.Selectors.RParenthesis])}});var yg=T(Du=>{"use strict";Object.defineProperty(Du,"__esModule",{value:!0});Du.Stack=void 0;var gg=class{constructor(){this._items=[],this._last=null,this._default=null}setDefault(e){this._default=e}push(e){return this._items.push(this._last=e)}pop(){switch(this._items.length){case 0:return this._default;case 1:return this._last=null,this._items.pop()}let e=this._items.pop();return this._last=this._items[this._items.length-1],e}peek(){return this._last||this._default}};Du.Stack=gg});var xg=T(je=>{"use strict";Object.defineProperty(je,"__esModule",{value:!0});je.PendingWhile=je.isPendingWhile=je.PendingIf=je.isPendingIf=je.PendingFunction=je.isPendingFunction=je.PendingFor=je.isPendingFor=je.PendingChunk=je.isPendingChunk=je.PendingBlockType=void 0;var kn;(function(t){t[t.Chunk=0]="Chunk",t[t.For=1]="For",t[t.Function=2]="Function",t[t.If=3]="If",t[t.While=4]="While"})(kn=je.PendingBlockType||(je.PendingBlockType={}));var ti=class{constructor(e,r,n){this.lineRegistry=n,this.block=e,this.body=[],this.type=r,this.onComplete=null}complete(e){var r;(r=this.onComplete)===null||r===void 0||r.call(this,this)}};function qC(t){return t.type===kn.Chunk}je.isPendingChunk=qC;var bg=class extends ti{constructor(e,r){super(e,kn.Chunk,r)}complete(e){this.block.body=this.body,this.block.end=e.end,this.block.range=[this.block.range[0],e.range[1]],super.complete(e)}};je.PendingChunk=bg;function FC(t){return t.type===kn.For}je.isPendingFor=FC;var vg=class extends ti{constructor(e,r){super(e,kn.For,r),this.lineRegistry.addItemToLine(this.block.start.line,this.block)}complete(e){this.block.body=this.body,this.block.end=e.end,this.block.range=[this.block.range[0],e.range[1]],this.lineRegistry.addItemToLine(e.end.line,this.block),super.complete(e)}};je.PendingFor=vg;function NC(t){return t.type===kn.Function}je.isPendingFunction=NC;var _g=class extends ti{constructor(e,r,n){super(e,kn.Function,n),this.base=r,this.lineRegistry.addItemToLine(this.block.start.line,this.block)}complete(e){this.block.body=this.body,this.block.end=e.end,this.block.range=[this.block.range[0],e.range[1]],this.base!==null?(this.base.end=this.block.end,this.base.range[1]=this.block.range[1],this.lineRegistry.addItemToLine(this.base.end.line,this.base)):this.lineRegistry.addItemToLine(this.block.end.line,this.block),super.complete(e)}};je.PendingFunction=_g;function $C(t){return t.type===kn.If}je.isPendingIf=$C;var wg=class extends ti{constructor(e,r,n){super(e,kn.If,n),this.lineRegistry.addItemToLine(this.block.start.line,this.block),this.currentClause=r}addCurrentClauseToLineRegistry(){this.currentClause.start.line!==this.block.start.line&&this.lineRegistry.addItemToLine(this.currentClause.start.line,this.block)}next(e){this.currentClause.body=this.body,this.currentClause.end=e.end,this.currentClause.range=[this.currentClause.range[0],e.range[1]],this.addCurrentClauseToLineRegistry(),this.block.clauses.push(this.currentClause),super.complete(e),this.body=[]}complete(e){this.body.length>0&&this.next(e),this.block.end=e.end,this.block.range=[this.block.range[0],e.range[1]],this.lineRegistry.addItemToLine(this.block.end.line,this.block),super.complete(e)}};je.PendingIf=wg;function BC(t){return t.type===kn.While}je.isPendingWhile=BC;var Sg=class extends ti{constructor(e,r){super(e,kn.While,r),this.lineRegistry.addItemToLine(this.block.start.line,this.block)}complete(e){this.block.body=this.body,this.block.end=e.end,this.block.range=[this.block.range[0],e.range[1]],this.lineRegistry.addItemToLine(e.end.line,this.block),super.complete(e)}};je.PendingWhile=Sg});var Tg=T(Lu=>{"use strict";Object.defineProperty(Lu,"__esModule",{value:!0});Lu.LineRegistry=void 0;var kg=class{constructor(){this._lines={}}get lines(){return this._lines}addItemToLines(e){this.addItemToRange(e.start.line,e.end.line,e)}addItemToLine(e,r){this.addItemToRange(e,e,r)}addItemToRange(e,r,n){let i=this._lines;for(let s=e;s<=r;s++){let o=i[s];o?o.push(n):i[s]=[n]}}};Lu.LineRegistry=kg});var s0=T(Lo=>{"use strict";var i0=Lo&&Lo.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Lo,"__esModule",{value:!0});var UC=i0(um()),hs=Cr(),Xt=cg(),WC=i0(hg()),VC=lu(),Tt=is(),ir=os(),jt=as(),V=mg(),HC=yg(),Un=xg(),zC=Tg(),Ig=class{constructor(e,r={}){let n=this;n.content=e,n.backpatches=new HC.Stack,n.statementErrors=[],n.lexer=r.lexer||new UC.default(e,{unsafe:r.unsafe,tabWidth:r.tabWidth}),n.token=null,n.previousToken=null,n.lineRegistry=new zC.LineRegistry,n.scopes=[],n.currentScope=null,n.currentAssignment=null,n.outerScopes=[],n.literals=[],n.validator=r.validator||new WC.default,n.astProvider=r.astProvider||new Xt.ASTProvider,n.unsafe=r.unsafe||!1,n.errors=[]}next(){this.previousToken=this.token,this.token=this.lexer.next()}isType(e){return this.token!==null&&e===this.token.type}consume(e){return e(this.token)?(this.next(),!0):!1}consumeMany(e){return e(this.token)?(this.next(),!0):!1}requireType(e,r){let n=this.token;return this.token.type!==e?(this.raise(`got ${n} where ${e} is required`,new jt.Range(r||n.start,n.end)),null):(this.next(),n)}requireToken(e,r){let n=this.token;return e(n)?(this.next(),n):(this.raise(`got ${n} where "${(0,V.getSelectorValue)(e)}" is required`,new jt.Range(r||n.start,n.end)),null)}requireTokenOfAny(e,r){let n=this.token;return e(n)?(this.next(),n):(this.raise(`got ${n} where any of ${(0,V.getSelectorsFromGroup)(e).map(i=>`"${(0,V.getSelectorValue)(i)}"`).join(", ")} is required`,new jt.Range(r||n.start,n.end)),null)}skipNewlines(){var e;let r=this,n=0;for(;;){if(V.Selectors.Comment(r.token)){let i=((e=r.previousToken)===null||e===void 0?void 0:e.line)!==r.token.line,s=r.astProvider.comment({value:r.token.value,start:r.token.start,end:r.token.end,range:r.token.range,scope:r.currentScope,isStatement:i});r.lineRegistry.addItemToLines(s)}else if(V.Selectors.EndOfLine(r.token))n++;else break;r.next()}return n}pushScope(e){let r=this;r.currentScope!==null&&(r.scopes.push(e),r.outerScopes.push(r.currentScope)),r.currentScope=e}popScope(){let e=this;e.currentScope=e.outerScopes.pop()}tryToRecover(){let e=this,r=e.statementErrors[0];if(e.errors.push(r),!e.unsafe)throw r;for(e.lexer.recoverFromSnapshot(),e.next();e.token.type!==hs.TokenType.EOL&&e.token.type!==hs.TokenType.EOF;e.next());}finishRemaingScopes(){let e=this,r=e.backpatches.pop();for(;!(0,Un.isPendingChunk)(r);){let n=e.raise(`found open block ${r.block.type}`,new jt.Range(r.block.start,r.block.start));if(r.complete(e.previousToken),e.errors.push(n),!e.unsafe)throw n;r=e.backpatches.pop()}}parseChunk(){let e=this;e.next();let r=e.token.start,n=e.astProvider.chunk({start:r,end:null,range:[e.token.range[0],null]}),i=new Un.PendingChunk(n,e.lineRegistry);for(e.backpatches.setDefault(i),e.pushScope(n);!V.Selectors.EndOfFile(e.token)&&(e.skipNewlines(),!V.Selectors.EndOfFile(e.token));)e.lexer.recordSnapshot(),e.statementErrors=[],e.parseStatement(),e.statementErrors.length>0&&e.tryToRecover();return e.finishRemaingScopes(),e.popScope(),i.complete(e.token),n.literals=e.literals,n.scopes=e.scopes,n.lines=e.lineRegistry.lines,n}parseStatement(){let e=this;if(hs.TokenType.Keyword===e.token.type&&Tt.Keyword.Not!==e.token.value){e.parseKeyword();return}let r=e.backpatches.peek(),n=e.parseAssignment();n.end!==null&&e.lineRegistry.addItemToLines(n),r.body.push(n)}parseKeyword(){let e=this;switch(e.token.value){case Tt.Keyword.Return:{let n=e.backpatches.peek();e.next();let i=e.parseReturnStatement();i.end!==null&&e.lineRegistry.addItemToLines(i),n.body.push(i);return}case Tt.Keyword.If:{e.next(),e.parseIfStatement();return}case Tt.Keyword.ElseIf:{e.next(),e.nextIfClause(Xt.ASTType.ElseifClause);return}case Tt.Keyword.Else:{e.next(),e.nextIfClause(Xt.ASTType.ElseClause);return}case Tt.Keyword.While:{e.next(),e.parseWhileStatement();return}case Tt.Keyword.For:{e.next(),e.parseForStatement();return}case Tt.Keyword.EndFunction:{e.next(),e.finalizeFunction();return}case Tt.Keyword.EndFor:{e.next(),e.finalizeForStatement();return}case Tt.Keyword.EndWhile:{e.next(),e.finalizeWhileStatement();return}case Tt.Keyword.EndIf:{e.next(),e.nextIfClause(null);return}case Tt.Keyword.Continue:{let n=e.backpatches.peek();e.next();let i=e.astProvider.continueStatement({start:e.previousToken.start,end:e.previousToken.end,range:e.previousToken.range,scope:e.currentScope});e.lineRegistry.addItemToLines(i),n.body.push(i);return}case Tt.Keyword.Break:{let n=e.backpatches.peek();e.next();let i=e.astProvider.breakStatement({start:e.previousToken.start,end:e.previousToken.end,range:e.previousToken.range,scope:e.currentScope});e.lineRegistry.addItemToLines(i),n.body.push(i);return}}e.raise(`unexpected keyword ${e.token} at start of line`,new jt.Range(e.token.start,e.token.end))}parseShortcutStatement(){let e=this;if(hs.TokenType.Keyword===e.token.type&&Tt.Keyword.Not!==e.token.value)switch(e.token.value){case Tt.Keyword.Return:return e.next(),e.parseReturnStatement();case Tt.Keyword.Continue:return e.next(),e.astProvider.continueStatement({start:e.previousToken.start,end:e.previousToken.end,range:e.previousToken.range,scope:e.currentScope});case Tt.Keyword.Break:return e.next(),e.astProvider.breakStatement({start:e.previousToken.start,end:e.previousToken.end,range:e.previousToken.range,scope:e.currentScope});default:return e.raise(`unexpected keyword ${e.token} in shorthand statement`,new jt.Range(e.token.start,e.token.end)),e.parseInvalidCode()}return e.parseAssignment()}parseAssignment(){let e=this,r=e.currentScope,n=e.token,i=e.parseExpr(null,!0,!0);if(V.SelectorGroups.AssignmentEndOfExpr(e.token))return i;if(V.Selectors.Assign(e.token)){e.next();let o=e.astProvider.assignmentStatement({variable:i,init:null,start:n.start,range:[n.range[0],null],end:null,scope:r}),l=e.currentAssignment;return e.currentAssignment=o,o.init=e.parseExpr(o),o.end=e.previousToken.end,o.range[1]=e.previousToken.range[1],e.currentAssignment=l,r.definitions.push(o),o}else if(V.SelectorGroups.AssignmentShorthand(e.token)){let o=e.token;e.next();let l=e.astProvider.assignmentStatement({variable:i,init:null,start:n.start,range:[n.range[0],null],end:null,scope:r}),u=e.currentAssignment;e.currentAssignment=l;let a=e.token,c=o.value.charAt(0),p=e.parseExpr(l),d=e.astProvider.parenthesisExpression({start:p.start,end:p.end,range:p.range,expression:p});return l.init=e.astProvider.binaryExpression({operator:c,left:i.clone(),right:d,start:a.start,end:e.previousToken.end,range:[a.range[0],e.previousToken.range[1]],scope:r}),l.end=e.previousToken.end,l.range[1]=e.previousToken.range[1],e.currentAssignment=u,r.definitions.push(l),l}let s=[];for(;!V.Selectors.EndOfFile(e.token);){let o=e.parseExpr(null);if(s.push(o),V.SelectorGroups.BlockEndOfLine(e.token)||V.Selectors.Else(e.token))break;if(V.Selectors.ArgumentSeperator(e.token)){e.next(),e.skipNewlines();continue}let l=e.requireTokenOfAny(V.SelectorGroups.AssignmentCommandArgs,n.start);if(V.Selectors.EndOfLine(l)||V.Selectors.EndOfFile(l))break}return s.length===0?e.astProvider.callStatement({expression:i,start:n.start,end:e.previousToken.end,range:[n.range[0],e.previousToken.range[1]],scope:r}):e.astProvider.callStatement({expression:e.astProvider.callExpression({base:i,arguments:s,start:n.start,end:e.previousToken.end,range:[n.range[0],e.previousToken.range[1]],scope:r}),start:n.start,end:e.previousToken.end,range:[n.range[0],e.previousToken.range[1]],scope:r})}parseReturnStatement(){let e=this,r=e.currentScope,n=e.previousToken,i=null,s=e.astProvider.returnStatement({argument:null,start:n.start,end:null,range:[n.range[0],null],scope:r});return V.SelectorGroups.ReturnStatementEnd(e.token)?(s.end=e.previousToken.end,s.range[1]=e.previousToken.range[1]):(i=e.parseExpr(s),s.end=e.previousToken.end,s.range[1]=e.previousToken.range[1],s.argument=i),r.returns.push(s),s}parseIfStatement(){let e=this,r=e.previousToken,n=e.parseExpr(null);if(e.lineRegistry.addItemToLines(n),e.requireToken(V.Selectors.Then,r.start),!V.SelectorGroups.BlockEndOfLine(e.token)){e.parseIfShortcutStatement(n,r);return}let i=e.astProvider.ifStatement({clauses:[],start:r.start,end:null,range:[r.range[0],null],scope:e.currentScope}),s=e.astProvider.ifClause({condition:n,start:r.start,end:e.token.end,range:[r.range[0],e.token.range[1]],scope:e.currentScope}),o=new Un.PendingIf(i,s,e.lineRegistry);e.backpatches.push(o)}nextIfClause(e){let r=this,n=r.backpatches.peek();if(!(0,Un.isPendingIf)(n)){r.raise("no matching open if block",new jt.Range(r.token.start,r.token.end));return}switch(n.next(r.previousToken),e){case Xt.ASTType.ElseifClause:{let i=r.token,s=r.parseExpr(null);r.requireToken(V.Selectors.Then,i.start),n.currentClause=r.astProvider.elseifClause({condition:s,start:i.start,end:null,range:[i.range[0],null],scope:r.currentScope});break}case Xt.ASTType.ElseClause:{let i=r.token;n.currentClause=r.astProvider.elseClause({start:i.start,end:null,range:[i.range[0],null],scope:r.currentScope});break}}e===null&&(n.complete(r.previousToken),r.backpatches.pop(),r.backpatches.peek().body.push(n.block))}parseIfShortcutStatement(e,r){let n=this,i=[],s=n.backpatches.peek(),o=n.astProvider.ifShortcutStatement({clauses:i,start:r.start,end:null,range:[r.range[0],null],scope:n.currentScope}),l=n.parseShortcutStatement();if(i.push(n.astProvider.ifShortcutClause({condition:e,body:[l],start:r.start,end:n.token.end,range:[r.range[0],n.token.range[1]],scope:n.currentScope})),V.Selectors.Else(n.token)){n.next();let u=n.token,a=n.parseShortcutStatement();i.push(n.astProvider.elseShortcutClause({body:[a],start:u.start,end:n.token.end,range:[u.range[0],n.token.range[1]],scope:n.currentScope}))}o.end=n.token.end,o.range[1]=n.token.range[1],n.lineRegistry.addItemToLines(o),s.body.push(o)}parseWhileStatement(){let e=this,r=e.previousToken,n=e.parseExpr(null);if(!n){e.raise("while requires a condition",new jt.Range(r.start,e.token.end));return}if(!V.SelectorGroups.BlockEndOfLine(e.token))return e.parseWhileShortcutStatement(n,r);let i=e.astProvider.whileStatement({condition:n,start:r.start,end:null,range:[r.range[0],null],scope:e.currentScope}),s=new Un.PendingWhile(i,e.lineRegistry);e.backpatches.push(s)}finalizeWhileStatement(){let e=this,r=e.backpatches.peek();if(!(0,Un.isPendingWhile)(r)){e.raise("no matching open while block",new jt.Range(e.token.start,e.token.end));return}r.complete(e.previousToken),e.backpatches.pop(),e.backpatches.peek().body.push(r.block)}parseWhileShortcutStatement(e,r){let n=this,i=n.backpatches.peek(),s=n.parseShortcutStatement(),o=n.astProvider.whileStatement({condition:e,body:[s],start:r.start,end:n.previousToken.end,range:[r.range[0],n.previousToken.range[1]],scope:n.currentScope});n.lineRegistry.addItemToLines(o),i.body.push(o)}parseForStatement(){let e=this,r=e.currentScope,n=e.previousToken,i=e.parseIdentifier(Xt.ASTIdentifierKind.ForInVariable);e.requireToken(V.Selectors.In,n.start);let s=e.parseExpr(null);if(!s){e.raise("sequence expression expected for 'for' loop",new jt.Range(n.start,e.token.end));return}if(!V.SelectorGroups.BlockEndOfLine(e.token))return e.parseForShortcutStatement(i,s,n);let o=e.astProvider.forGenericStatement({variable:i,iterator:s,start:n.start,end:e.previousToken.end,range:[n.range[0],e.previousToken.range[1]],scope:r});r.definitions.push(o);let l=new Un.PendingFor(o,e.lineRegistry);e.backpatches.push(l)}finalizeForStatement(){let e=this,r=e.backpatches.peek();if(!(0,Un.isPendingFor)(r)){e.raise("no matching open for block",new jt.Range(e.token.start,e.token.end));return}r.complete(e.previousToken),e.backpatches.pop(),e.backpatches.peek().body.push(r.block)}parseForShortcutStatement(e,r,n){let i=this,s=i.currentScope,o=i.backpatches.peek(),l=i.parseShortcutStatement(),u=i.astProvider.forGenericStatement({variable:e,iterator:r,body:[l],start:n.start,end:i.previousToken.end,range:[n.range[0],i.previousToken.range[1]],scope:i.currentScope});s.definitions.push(u),i.lineRegistry.addItemToLines(u),o.body.push(u)}parseExpr(e,r=!1,n=!1){return this.parseFunctionDeclaration(e,r,n)}parseFunctionDeclaration(e,r=!1,n=!1){let i=this;if(!V.Selectors.Function(i.token))return i.parseOr(r,n);i.next();let s=i.previousToken,o=i.astProvider.functionStatement({start:s.start,end:null,range:[s.range[0],null],scope:i.currentScope,parent:i.outerScopes[i.outerScopes.length-1],assignment:i.currentAssignment}),l=[];if(i.pushScope(o),!V.SelectorGroups.BlockEndOfLine(i.token)){for(i.requireToken(V.Selectors.LParenthesis,s.start);!V.SelectorGroups.FunctionDeclarationArgEnd(i.token);){let a=i.parseIdentifier(Xt.ASTIdentifierKind.Argument),c=a;if(i.consume(V.Selectors.Assign)){let p=i.parseExpr(null);if(p instanceof Xt.ASTLiteral){let d=i.astProvider.assignmentStatement({variable:a,init:p,start:c.start,end:i.previousToken.end,range:[c.range[0],i.previousToken.range[1]],scope:i.currentScope});i.currentScope.definitions.push(d),l.push(d)}else i.raise("parameter default value must be a literal value",new jt.Range(c.start,i.token.end)),l.push(i.astProvider.invalidCodeExpression({start:c.start,end:i.previousToken.end,range:[c.range[0],i.previousToken.range[1]]}))}else{let p=i.astProvider.assignmentStatement({variable:a,init:i.astProvider.unknown({start:c.start,end:i.previousToken.end,range:[c.range[0],i.previousToken.range[1]],scope:i.currentScope}),start:c.start,end:i.previousToken.end,range:[c.range[0],i.previousToken.range[1]],scope:i.currentScope});i.currentScope.definitions.push(p),l.push(a)}if(V.Selectors.RParenthesis(i.token))break;if(i.requireToken(V.Selectors.ArgumentSeperator,s.start),V.Selectors.RParenthesis(i.token)){i.raise("expected argument instead received right parenthesis",new jt.Range(i.previousToken.end,i.previousToken.end));break}}i.requireToken(V.Selectors.RParenthesis,s.start)}o.parameters=l;let u=new Un.PendingFunction(o,e,i.lineRegistry);return i.backpatches.push(u),o}finalizeFunction(){let e=this,r=e.backpatches.peek();if(!(0,Un.isPendingFunction)(r)){e.raise("no matching open function block",new jt.Range(e.token.start,e.token.end));return}e.popScope(),r.complete(e.previousToken),e.backpatches.pop()}parseOr(e=!1,r=!1){let n=this,i=n.token,o=n.parseAnd(e,r);for(;V.Selectors.Or(n.token);){n.next(),n.skipNewlines();let l=n.parseAnd();o=n.astProvider.logicalExpression({operator:ir.Operator.Or,left:o,right:l,start:i.start,end:n.previousToken.end,range:[i.range[0],n.previousToken.range[1]],scope:n.currentScope})}return o}parseAnd(e=!1,r=!1){let n=this,i=n.token,o=n.parseNot(e,r);for(;V.Selectors.And(n.token);){n.next(),n.skipNewlines();let l=n.parseNot();o=n.astProvider.logicalExpression({operator:ir.Operator.And,left:o,right:l,start:i.start,end:n.previousToken.end,range:[i.range[0],n.previousToken.range[1]],scope:n.currentScope})}return o}parseNot(e=!1,r=!1){let n=this,i=n.token;if(V.Selectors.Not(n.token)){n.next(),n.skipNewlines();let s=n.parseIsa();return n.astProvider.unaryExpression({operator:ir.Operator.Not,argument:s,start:i.start,end:n.previousToken.end,range:[i.range[0],n.previousToken.range[1]],scope:n.currentScope})}return n.parseIsa(e,r)}parseIsa(e=!1,r=!1){let n=this,i=n.token,s=n.parseComparisons(e,r);if(V.Selectors.Isa(n.token)){n.next(),n.skipNewlines();let o=n.parseComparisons();return n.astProvider.isaExpression({operator:ir.Operator.Isa,left:s,right:o,start:i.start,end:n.previousToken.end,range:[i.range[0],n.previousToken.range[1]],scope:n.currentScope})}return s}parseComparisons(e=!1,r=!1){let n=this,i=n.token,s=n.parseAddSub(e,r);if(!V.SelectorGroups.ComparisonOperators(n.token))return s;let o=[s],l=[];do{let u=n.token;n.next(),n.skipNewlines();let a=n.parseAddSub();l.push(u.value),o.push(a)}while(V.SelectorGroups.ComparisonOperators(n.token));return l.length===1?n.astProvider.binaryExpression({operator:l[0],left:o[0],right:o[1],start:i.start,end:n.previousToken.end,range:[i.range[0],n.previousToken.range[1]],scope:n.currentScope}):n.astProvider.comparisonGroupExpression({operators:l,expressions:o,start:i.start,end:n.previousToken.end,range:[i.range[0],n.previousToken.range[1]],scope:n.currentScope})}parseAddSub(e=!1,r=!1){let n=this,i=n.token,o=n.parseMultDiv(e,r);for(;V.Selectors.Plus(n.token)||V.Selectors.Minus(n.token)&&(!r||!n.token.afterSpace||n.lexer.isAtWhitespace());){let l=n.token;n.next(),n.skipNewlines();let u=n.parseMultDiv();o=n.astProvider.binaryExpression({operator:l.value,left:o,right:u,start:i.start,end:n.previousToken.end,range:[i.range[0],n.previousToken.range[1]],scope:n.currentScope})}return o}parseMultDiv(e=!1,r=!1){let n=this,i=n.token,o=n.parseUnaryMinus(e,r);for(;V.SelectorGroups.MultiDivOperators(n.token);){let l=n.token;n.next(),n.skipNewlines();let u=n.parseUnaryMinus();o=n.astProvider.binaryExpression({operator:l.value,left:o,right:u,start:i.start,end:n.previousToken.end,range:[i.range[0],n.previousToken.range[1]],scope:n.currentScope})}return o}parseUnaryMinus(e=!1,r=!1){let n=this;if(!V.Selectors.Minus(n.token))return n.parseNew(e,r);let i=n.token;n.next(),n.skipNewlines();let s=n.parseNew();return s instanceof Xt.ASTNumericLiteral||s instanceof Xt.ASTBooleanLiteral?(s.negated=!0,s):n.astProvider.unaryExpression({operator:ir.Operator.Minus,argument:s,start:i.start,end:n.previousToken.end,range:[i.range[0],n.previousToken.range[1]],scope:n.currentScope})}parseNew(e=!1,r=!1){let n=this;if(!V.Selectors.New(n.token))return n.parseAddressOf(e,r);let i=n.token;n.next(),n.skipNewlines();let s=n.parseNew();return n.astProvider.unaryExpression({operator:ir.Operator.New,argument:s,start:i.start,end:n.previousToken.end,range:[i.range[0],n.previousToken.range[1]],scope:n.currentScope})}parseAddressOf(e=!1,r=!1){let n=this;if(!V.Selectors.Reference(n.token))return n.parsePower(e,r);let i=n.token;n.next(),n.skipNewlines();let s=n.parsePower(!0,r);return n.astProvider.unaryExpression({operator:ir.Operator.Reference,argument:s,start:i.start,end:n.previousToken.end,range:[i.range[0],n.previousToken.range[1]],scope:n.currentScope})}parsePower(e=!1,r=!1){let n=this,i=n.token,s=n.parseCallExpr(e,r);if(V.Selectors.Power(n.token)){n.next(),n.skipNewlines();let o=n.parseCallExpr();return n.astProvider.binaryExpression({operator:ir.Operator.Power,left:s,right:o,start:i.start,end:n.previousToken.end,range:[i.range[0],n.previousToken.range[1]],scope:n.currentScope})}return s}parseCallExpr(e=!1,r=!1){let n=this,i=n.token,s=n.parseMap(e,r);for(;!V.Selectors.EndOfFile(n.token);)if(V.Selectors.MemberSeperator(n.token)){n.next(),n.skipNewlines();let o=n.parseIdentifier(Xt.ASTIdentifierKind.Property),l=n.astProvider.memberExpression({base:s,indexer:ir.Operator.Member,identifier:o,start:i.start,end:n.previousToken.end,range:[i.range[0],n.previousToken.range[1]],scope:n.currentScope});n.currentScope.namespaces.push(l),s=l}else if(V.Selectors.SLBracket(n.token)&&!n.token.afterSpace){if(n.next(),n.skipNewlines(),V.Selectors.SliceSeperator(n.token)){let o=n.astProvider.emptyExpression({start:n.previousToken.start,end:n.previousToken.end,range:n.previousToken.range,scope:n.currentScope});n.next(),n.skipNewlines();let l=V.Selectors.SRBracket(n.token)?n.astProvider.emptyExpression({start:n.previousToken.start,end:n.previousToken.end,range:n.previousToken.range,scope:n.currentScope}):n.parseExpr(null);s=n.astProvider.sliceExpression({base:s,left:o,right:l,start:i.start,end:n.token.end,range:[i.range[0],n.token.range[1]],scope:n.currentScope})}else{let o=n.parseExpr(null);if(V.Selectors.SliceSeperator(n.token)){n.next(),n.skipNewlines();let l=V.Selectors.SRBracket(n.token)?n.astProvider.emptyExpression({start:n.previousToken.start,end:n.previousToken.end,range:n.previousToken.range,scope:n.currentScope}):n.parseExpr(null);s=n.astProvider.sliceExpression({base:s,left:o,right:l,start:i.start,end:n.token.end,range:[i.range[0],n.token.range[1]],scope:n.currentScope})}else s=n.astProvider.indexExpression({base:s,index:o,isStatementStart:r,start:i.start,end:n.token.end,range:[i.range[0],n.token.range[1]],scope:n.currentScope})}n.requireToken(V.Selectors.SRBracket,i.start)}else if(V.Selectors.LParenthesis(n.token)&&(!e||!n.token.afterSpace)){let o=n.parseCallArgs();s=n.astProvider.callExpression({base:s,arguments:o,start:i.start,end:n.previousToken.end,range:[i.range[0],n.previousToken.range[1]],scope:n.currentScope})}else break;return s}parseCallArgs(){let e=this,r=[];if(V.Selectors.LParenthesis(e.token))if(e.next(),V.Selectors.RParenthesis(e.token))e.next();else for(;!V.Selectors.EndOfFile(e.token);){e.skipNewlines();let n=e.parseExpr(null);if(r.push(n),e.skipNewlines(),V.Selectors.RParenthesis(e.requireTokenOfAny(V.SelectorGroups.CallArgsEnd,n.start)))break}return r}parseMap(e=!1,r=!1){let n=this;if(!V.Selectors.CLBracket(n.token))return n.parseList(e,r);let i=n.currentScope,s=n.token,o=[],l=n.astProvider.mapConstructorExpression({fields:o,start:s.start,end:null,range:[s.range[0],null],scope:i});if(n.next(),V.Selectors.CRBracket(n.token))n.next();else for(n.skipNewlines();!V.Selectors.EndOfFile(n.token);){if(V.Selectors.CRBracket(n.token)){n.next();break}let u=n.astProvider.mapKeyString({key:null,value:null,start:n.token.start,end:null,range:[n.token.range[0],null],scope:i});if(u.key=n.parseExpr(null),n.requireToken(V.Selectors.MapKeyValueSeperator),n.skipNewlines(),u.value=n.parseExpr(u),u.end=n.previousToken.end,u.range[1]=n.previousToken.range[1],o.push(u),V.Selectors.MapSeperator(n.token)&&(n.next(),n.skipNewlines()),V.Selectors.CRBracket(n.token)){n.next();break}}return l.end=n.token.start,l.range[1]=n.token.range[1],l}parseList(e=!1,r=!1){let n=this;if(!V.Selectors.SLBracket(n.token))return n.parseQuantity(e,r);let i=n.currentScope,s=n.token,o=[],l=n.astProvider.listConstructorExpression({fields:o,start:s.start,end:null,range:[s.range[0],null],scope:i});if(n.next(),V.Selectors.SRBracket(n.token))n.next();else for(n.skipNewlines();!V.Selectors.EndOfFile(n.token);){if(V.Selectors.SRBracket(n.token)){n.next();break}let u=n.astProvider.listValue({value:null,start:n.token.start,end:null,range:[n.token.range[0],null],scope:i});if(u.value=n.parseExpr(u),u.end=n.previousToken.end,u.range[1]=n.previousToken.range[1],o.push(u),V.Selectors.MapSeperator(n.token)&&(n.next(),n.skipNewlines()),V.Selectors.SRBracket(n.token)){n.next();break}}return l.end=n.token.start,l.range[1]=n.token.range[1],l}parseQuantity(e=!1,r=!1){let n=this;if(!V.Selectors.LParenthesis(n.token))return n.parseAtom(e,r);let i=n.token;n.next(),n.skipNewlines();let s=n.parseExpr(null);return n.requireToken(V.Selectors.RParenthesis,i.start),n.astProvider.parenthesisExpression({expression:s,start:i.start,end:n.previousToken.end,range:[i.range[0],n.previousToken.range[1]],scope:n.currentScope})}parseAtom(e=!1,r=!1){let n=this;return n.validator.isLiteral(n.token.type)?n.parseLiteral():n.isType(hs.TokenType.Identifier)?n.parseIdentifier(Xt.ASTIdentifierKind.Variable):(n.raise(`got ${n.token} where number, string, or identifier is required`,new jt.Range(n.token.start,n.token.end)),n.parseInvalidCode())}parseLiteral(){let e=this,r=e.token,n=e.token.type,i=e.astProvider.literal(n,{value:e.token.value,raw:e.token.raw,start:r.start,end:e.token.end,range:[r.range[0],e.token.range[1]],scope:e.currentScope});return e.literals.push(i),e.next(),i}parseIdentifier(e){let r=this,n=r.requireType(hs.TokenType.Identifier);if(n===null)return r.parseInvalidCode();let i=r.astProvider.identifier({kind:e,name:n.value,start:n.start,end:n.end,range:n.range,scope:r.currentScope});return e!==Xt.ASTIdentifierKind.Property&&r.currentScope.namespaces.push(i),i}parseInvalidCode(){let e=this,r=e.token,n=e.astProvider.invalidCodeExpression({start:r.start,end:r.end,range:r.range});return e.next(),n}raise(e,r){let n=this,i=new VC.ParserException(e,r);return n.statementErrors.push(i),i}};Lo.default=Ig});var pe=T(ge=>{"use strict";var KC=ge&&ge.__createBinding||(Object.create?function(t,e,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(e,r);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,i)}:function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]}),Tn=ge&&ge.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&KC(e,t,r)},ju=ge&&ge.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(ge,"__esModule",{value:!0});ge.ASTRange=ge.ASTPosition=ge.LineRegistry=ge.ParserValidatorm=ge.Parser=ge.LexerValidator=ge.Lexer=void 0;var GC=um();Object.defineProperty(ge,"Lexer",{enumerable:!0,get:function(){return ju(GC).default}});Tn(Cr(),ge);var YC=Xf();Object.defineProperty(ge,"LexerValidator",{enumerable:!0,get:function(){return ju(YC).default}});var JC=s0();Object.defineProperty(ge,"Parser",{enumerable:!0,get:function(){return ju(JC).default}});Tn(cg(),ge);var QC=hg();Object.defineProperty(ge,"ParserValidatorm",{enumerable:!0,get:function(){return ju(QC).default}});var ZC=Tg();Object.defineProperty(ge,"LineRegistry",{enumerable:!0,get:function(){return ZC.LineRegistry}});Tn(xg(),ge);Tn(yg(),ge);Tn(om(),ge);Tn(au(),ge);Tn(lu(),ge);Tn(is(),ge);Tn(nm(),ge);Tn(os(),ge);var XC=rs();Object.defineProperty(ge,"ASTPosition",{enumerable:!0,get:function(){return XC.Position}});var eA=as();Object.defineProperty(ge,"ASTRange",{enumerable:!0,get:function(){return eA.Range}});Tn(mg(),ge)});var jo=T(Mu=>{"use strict";Object.defineProperty(Mu,"__esModule",{value:!0});Mu.isValidIdentifierLiteral=void 0;var tA=pe(),nA=t=>{if(t.type!==tA.ASTType.StringLiteral)return!1;let e=t.value.toString();return/^[_a-z][_a-z0-9]*$/i.test(e)};Mu.isValidIdentifierLiteral=nA});var Eg=T(Lr=>{"use strict";Object.defineProperty(Lr,"__esModule",{value:!0});Lr.getStringHashCode=Lr.getHashCode=Lr.rotateBits=void 0;function rA(t){return t>>1|t<<31}Lr.rotateBits=rA;function iA(t,e=0){let r=t>>>0;return r=(r>>16^r)*73244475,r=(r>>16^r)*73244475,r=r>>16^r,(e<<5)-e+r|0}Lr.getHashCode=iA;Lr.getStringHashCode=function(){let t=new Map,e=r=>{let n,i;for(n=0,i=0;n<r.length;n++)i=Math.imul(31,i)+r.charCodeAt(n)|0;return i};return r=>{if(r.length===0)return 0;let n=t.get(r);if(n!==void 0)return n;let i=e(r);return t.set(r,i),i}}()});var o0=T(qu=>{"use strict";Object.defineProperty(qu,"__esModule",{value:!0});qu.createExpressionHash=void 0;var Re=pe(),it=Eg(),sA=jo(),It=(t,e)=>t.$$hash=e,oA=t=>{var e;return(e=t.$$hash)!=null?e:null};function $e(t){let e=oA(t);if(e!==null)return e;let r=(0,it.getStringHashCode)(t.type);switch(t.type){case Re.ASTType.BinaryExpression:{let n=t;return r^=(0,it.getStringHashCode)(n.operator),r^=$e(n.left),r^=$e(n.right),It(t,r)}case Re.ASTType.LogicalExpression:{let n=t;return r^=(0,it.getStringHashCode)(n.operator),r^=$e(n.left),r^=$e(n.right),It(t,r)}case Re.ASTType.IsaExpression:{let n=t;return r^=(0,it.getStringHashCode)(n.operator),r^=$e(n.left),r^=$e(n.right),It(t,r)}case Re.ASTType.ComparisonGroupExpression:{let n=t;for(let i=0;i<n.expressions.length;i++)r^=$e(n.expressions[i]);for(let i=0;i<n.operators.length;i++)r^=(0,it.getStringHashCode)(n.operators[i]);return It(t,r)}case Re.ASTType.FunctionDeclaration:{let n=t;r^=(0,it.getHashCode)(n.parameters.length);for(let i=0;i<n.parameters.length;i++){let s=n.parameters[i];if(s.type===Re.ASTType.Identifier){r^=(0,it.getStringHashCode)(s.name);continue}let o=s;r^=(0,it.getStringHashCode)(o.variable.name),r^=$e(o.init)}return It(t,r)}case Re.ASTType.ParenthesisExpression:return $e(t.expression);case Re.ASTType.MemberExpression:{let n=t;if(n.base.type===Re.ASTType.Identifier){let i=n.base.name;if(i==="globals"||i==="locals"||i==="outer")return r=(0,it.getStringHashCode)(Re.ASTType.Identifier),r^=(0,it.getStringHashCode)(n.identifier.name),It(t,r)}return r^=$e(n.base),r^=$e(n.identifier),It(t,r)}case Re.ASTType.IndexExpression:{let n=t;if((0,sA.isValidIdentifierLiteral)(n.index)){if(n.base.type===Re.ASTType.Identifier){let s=n.base.name;if(s==="globals"||s==="locals"||s==="outer")return r=(0,it.getStringHashCode)(Re.ASTType.Identifier),r^=(0,it.getStringHashCode)(n.index.value.toString()),It(t,r)}r=(0,it.getStringHashCode)(Re.ASTType.MemberExpression),r^=$e(n.base);let i=(0,it.getStringHashCode)(Re.ASTType.Identifier);i^=(0,it.getStringHashCode)(n.index.value.toString()),r^=i}else r^=$e(n.base),r^=$e(n.index);return It(t,r)}case Re.ASTType.CallExpression:{let n=t;r^=$e(n.base),r^=(0,it.getHashCode)(n.arguments.length);for(let i=0;i<n.arguments.length;i++){let s=n.arguments[i];r^=$e(s)}return It(t,r)}case Re.ASTType.NegationExpression:case Re.ASTType.BinaryNegatedExpression:case Re.ASTType.UnaryExpression:{let n=t;return r^=n.operator?(0,it.getStringHashCode)(n.operator):1,r^=$e(n.argument),It(t,r)}case Re.ASTType.Identifier:{let n=t;return r^=(0,it.getStringHashCode)(n.name),It(t,r)}case Re.ASTType.BooleanLiteral:case Re.ASTType.NumericLiteral:case Re.ASTType.StringLiteral:case Re.ASTType.NilLiteral:return r^=(0,it.getStringHashCode)(t.value.toString()),It(t,r);case Re.ASTType.MapConstructorExpression:{let n=t;r^=(0,it.getHashCode)(n.fields.length);for(let i=0;i<n.fields.length;i++){let s=n.fields[i];r^=$e(s.key),r^=$e(s.value)}return It(t,r)}case Re.ASTType.ListConstructorExpression:{let n=t;r^=(0,it.getHashCode)(n.fields.length);for(let i=0;i<n.fields.length;i++){let s=n.fields[i];r^=$e(s.value)}return It(t,r)}case Re.ASTType.SliceExpression:{let n=t;return r^=$e(n.base),r^=$e(n.left),r^=$e(n.right),It(t,r)}}return It(t,r)}function aA(t){return $e(t)}qu.createExpressionHash=aA});var Rg=T(Fu=>{"use strict";Object.defineProperty(Fu,"__esModule",{value:!0});Fu.createExpressionId=void 0;var st=pe(),lA=jo(),pt=(t,e)=>t.$$id=e,uA=t=>{var e;return(e=t.$$id)!=null?e:null};function Me(t){let e=uA(t);if(e!==null)return e;switch(t.type){case st.ASTType.BinaryExpression:{let r=t;return pt(t,Me(r.left)+r.operator+Me(r.right))}case st.ASTType.LogicalExpression:{let r=t;return pt(t,Me(r.left)+r.operator+Me(r.right))}case st.ASTType.IsaExpression:{let r=t;return pt(t,Me(r.left)+r.operator+Me(r.right))}case st.ASTType.ComparisonGroupExpression:{let r=t,n=r.expressions.map(s=>Me(s)),i=[n[0]];for(let s=0;s<r.operators.length;s++)i.push(r.operators[s],n[s+1]);return pt(t,i.join(" "))}case st.ASTType.FunctionDeclaration:{let r=t,n="function",i=[];for(let s=0;s<r.parameters.length;s++){let o=r.parameters[s];if(o.type===st.ASTType.Identifier){i.push(o.name);continue}let l=o;i.push(l.variable.name+"="+Me(l.init))}return i.length>0&&(n+="("+i.join(",")+")"),pt(t,n)}case st.ASTType.ParenthesisExpression:return pt(t,Me(t.expression));case st.ASTType.MemberExpression:{let r=t;return pt(t,Me(r.base)+"."+r.identifier.name)}case st.ASTType.IndexExpression:{let r=t;return(0,lA.isValidIdentifierLiteral)(r.index)?pt(t,Me(r.base)+"."+r.index.value.toString()):pt(t,Me(r.base)+"["+Me(r.index)+"]")}case st.ASTType.CallExpression:{let r=t,n=Me(r.base),i=[];for(let s=0;s<r.arguments.length;s++){let o=r.arguments[s];i.push(Me(o))}return i.length>0&&(n+="("+i.join(",")+")"),pt(t,n)}case st.ASTType.NegationExpression:case st.ASTType.BinaryNegatedExpression:case st.ASTType.UnaryExpression:{let r=t;return r.operator==null?pt(t,Me(r.argument)):r.operator==="@"?pt(t,r.operator+Me(r.argument)):pt(t,r.operator+" "+Me(r.argument))}case st.ASTType.Identifier:return pt(t,t.name);case st.ASTType.NumericLiteral:case st.ASTType.BooleanLiteral:case st.ASTType.StringLiteral:case st.ASTType.NilLiteral:return pt(t,t.raw.toString());case st.ASTType.MapConstructorExpression:{let r=t,n=[];for(let i=0;i<r.fields.length;i++){let s=r.fields[i];n.push(Me(s.key)+":"+Me(s.value))}return pt(t,"{"+n.join(",")+"}")}case st.ASTType.ListConstructorExpression:{let r=t,n=[];for(let i=0;i<r.fields.length;i++){let s=r.fields[i];n.push(Me(s.value))}return pt(t,"["+n.join(",")+"]")}case st.ASTType.SliceExpression:{let r=t;return pt(t,Me(r.base)+"["+Me(r.left)+":"+Me(r.right)+"]")}}return pt(t,"")}function cA(t){return Me(t)}Fu.createExpressionId=cA});var fs=T(Mo=>{"use strict";Object.defineProperty(Mo,"__esModule",{value:!0});Mo.Markers=void 0;var pA;(function(t){t.start="/**",t.nostart="/***",t.delim="*",t.end="*/"})(pA=Mo.Markers||(Mo.Markers={}))});var In=T(Ye=>{"use strict";Object.defineProperty(Ye,"__esModule",{value:!0});Ye.rewireSpecs=Ye.rewireSource=Ye.seedTokens=Ye.seedSpec=Ye.seedBlock=Ye.splitLines=Ye.splitSpace=Ye.splitCR=Ye.hasCR=Ye.isSpace=void 0;function dA(t){return/^\s+$/.test(t)}Ye.isSpace=dA;function hA(t){return/\r$/.test(t)}Ye.hasCR=hA;function fA(t){let e=t.match(/\r+$/);return e==null?["",t]:[t.slice(-e[0].length),t.slice(0,-e[0].length)]}Ye.splitCR=fA;function mA(t){let e=t.match(/^\s+/);return e==null?["",t]:[t.slice(0,e[0].length),t.slice(e[0].length)]}Ye.splitSpace=mA;function gA(t){return t.split(/\n/)}Ye.splitLines=gA;function yA(t={}){return Object.assign({description:"",tags:[],source:[],problems:[]},t)}Ye.seedBlock=yA;function bA(t={}){return Object.assign({tag:"",name:"",type:"",optional:!1,description:"",problems:[],source:[]},t)}Ye.seedSpec=bA;function vA(t={}){return Object.assign({start:"",delimiter:"",postDelimiter:"",tag:"",postTag:"",name:"",postName:"",type:"",postType:"",description:"",end:"",lineEnd:""},t)}Ye.seedTokens=vA;function _A(t){let e=t.source.reduce((r,n)=>r.set(n.number,n),new Map);for(let r of t.tags)r.source=r.source.map(n=>e.get(n.number));return t}Ye.rewireSource=_A;function wA(t){let e=t.tags.reduce((r,n)=>n.source.reduce((i,s)=>i.set(s.number,s),r),new Map);return t.source=t.source.map(r=>e.get(r.number)||r),t}Ye.rewireSpecs=wA});var a0=T(Pg=>{"use strict";Object.defineProperty(Pg,"__esModule",{value:!0});var SA=/^@\S+/;function xA({fence:t="```"}={}){let e=kA(t),r=(n,i)=>e(n)?!i:i;return function(i){let s=[[]],o=!1;for(let l of i)SA.test(l.tokens.description)&&!o?s.push([l]):s[s.length-1].push(l),o=r(l.tokens.description,o);return s}}Pg.default=xA;function kA(t){return typeof t=="string"?e=>e.split(t).length%2===0:t}});var l0=T(Cg=>{"use strict";Object.defineProperty(Cg,"__esModule",{value:!0});var TA=fs(),qo=In();function IA({startLine:t=0,markers:e=TA.Markers}={}){let r=null,n=t;return function(s){let o=s,l=(0,qo.seedTokens)();if([l.lineEnd,o]=(0,qo.splitCR)(o),[l.start,o]=(0,qo.splitSpace)(o),r===null&&o.startsWith(e.start)&&!o.startsWith(e.nostart)&&(r=[],l.delimiter=o.slice(0,e.start.length),o=o.slice(e.start.length),[l.postDelimiter,o]=(0,qo.splitSpace)(o)),r===null)return n++,null;let u=o.trimRight().endsWith(e.end);if(l.delimiter===""&&o.startsWith(e.delim)&&!o.startsWith(e.end)&&(l.delimiter=e.delim,o=o.slice(e.delim.length),[l.postDelimiter,o]=(0,qo.splitSpace)(o)),u){let a=o.trimRight();l.end=o.slice(a.length-e.end.length),o=a.slice(0,-e.end.length)}if(l.description=o,r.push({number:n,source:s,tokens:l}),n++,u){let a=r.slice();return r=null,a}return null}}Cg.default=IA});var u0=T(Ag=>{"use strict";Object.defineProperty(Ag,"__esModule",{value:!0});var EA=In();function RA({tokenizers:t}){return function(r){var n;let i=(0,EA.seedSpec)({source:r});for(let s of t)if(i=s(i),!((n=i.problems[i.problems.length-1])===null||n===void 0)&&n.critical)break;return i}}Ag.default=RA});var Dg=T(Og=>{"use strict";Object.defineProperty(Og,"__esModule",{value:!0});function PA(){return t=>{let{tokens:e}=t.source[0],r=e.description.match(/\s*(@(\S+))(\s*)/);return r===null?(t.problems.push({code:"spec:tag:prefix",message:'tag should start with "@" symbol',line:t.source[0].number,critical:!0}),t):(e.tag=r[1],e.postTag=r[3],e.description=e.description.slice(r[0].length),t.tag=r[2],t)}}Og.default=PA});var jg=T(Lg=>{"use strict";Object.defineProperty(Lg,"__esModule",{value:!0});var CA=In();function AA(t="compact"){let e=DA(t);return r=>{let n=0,i=[];for(let[l,{tokens:u}]of r.source.entries()){let a="";if(l===0&&u.description[0]!=="{")return r;for(let c of u.description)if(c==="{"&&n++,c==="}"&&n--,a+=c,n===0)break;if(i.push([u,a]),n===0)break}if(n!==0)return r.problems.push({code:"spec:type:unpaired-curlies",message:"unpaired curlies",line:r.source[0].number,critical:!0}),r;let s=[],o=i[0][0].postDelimiter.length;for(let[l,[u,a]]of i.entries())u.type=a,l>0&&(u.type=u.postDelimiter.slice(o)+a,u.postDelimiter=u.postDelimiter.slice(0,o)),[u.postType,u.description]=(0,CA.splitSpace)(u.description.slice(a.length)),s.push(u.type);return s[0]=s[0].slice(1),s[s.length-1]=s[s.length-1].slice(0,-1),r.type=e(s),r}}Lg.default=AA;var OA=t=>t.trim();function DA(t){return t==="compact"?e=>e.map(OA).join(""):t==="preserve"?e=>e.join(`
96
96
  `):t}});var Fg=T(qg=>{"use strict";Object.defineProperty(qg,"__esModule",{value:!0});var Mg=In(),LA=t=>t&&t.startsWith('"')&&t.endsWith('"');function jA(){let t=(e,{tokens:r},n)=>r.type===""?e:n;return e=>{let{tokens:r}=e.source[e.source.reduce(t,0)],n=r.description.trimLeft(),i=n.split('"');if(i.length>1&&i[0]===""&&i.length%2===1)return e.name=i[1],r.name=`"${i[1]}"`,[r.postName,r.description]=(0,Mg.splitSpace)(n.slice(r.name.length)),e;let s=0,o="",l=!1,u;for(let c of n){if(s===0&&(0,Mg.isSpace)(c))break;c==="["&&s++,c==="]"&&s--,o+=c}if(s!==0)return e.problems.push({code:"spec:name:unpaired-brackets",message:"unpaired brackets",line:e.source[0].number,critical:!0}),e;let a=o;if(o[0]==="["&&o[o.length-1]==="]"){l=!0,o=o.slice(1,-1);let c=o.split("=");if(o=c[0].trim(),c[1]!==void 0&&(u=c.slice(1).join("=").trim()),o==="")return e.problems.push({code:"spec:name:empty-name",message:"empty name",line:e.source[0].number,critical:!0}),e;if(u==="")return e.problems.push({code:"spec:name:empty-default",message:"empty default value",line:e.source[0].number,critical:!0}),e;if(!LA(u)&&/=(?!>)/.test(u))return e.problems.push({code:"spec:name:invalid-default",message:"invalid default value syntax",line:e.source[0].number,critical:!0}),e}return e.optional=l,e.name=o,r.name=a,u!==void 0&&(e.default=u),[r.postName,r.description]=(0,Mg.splitSpace)(n.slice(r.name.length)),e}}qg.default=jA});var $g=T(Fo=>{"use strict";Object.defineProperty(Fo,"__esModule",{value:!0});Fo.getJoiner=void 0;var Ng=fs();function MA(t="compact",e=Ng.Markers){let r=c0(t);return n=>(n.description=r(n.source,e),n)}Fo.default=MA;function c0(t){return t==="compact"?qA:t==="preserve"?$A:t}Fo.getJoiner=c0;function qA(t,e=Ng.Markers){return t.map(({tokens:{description:r}})=>r.trim()).filter(r=>r!=="").join(" ")}var FA=(t,{tokens:e},r)=>e.type===""?t:r,NA=({tokens:t})=>(t.delimiter===""?t.start:t.postDelimiter.slice(1))+t.description;function $A(t,e=Ng.Markers){if(t.length===0)return"";t[0].tokens.description===""&&t[0].tokens.delimiter===e.start&&(t=t.slice(1));let r=t[t.length-1];return r!==void 0&&r.tokens.description===""&&r.tokens.end.endsWith(e.end)&&(t=t.slice(0,-1)),t=t.slice(t.reduce(FA,0)),t.map(NA).join(`
97
97
  `)}});var d0=T(Bg=>{"use strict";Object.defineProperty(Bg,"__esModule",{value:!0});var BA=fs(),UA=In(),WA=a0(),VA=l0(),HA=u0(),zA=Dg(),KA=jg(),GA=Fg(),p0=$g();function YA({startLine:t=0,fence:e="```",spacing:r="compact",markers:n=BA.Markers,tokenizers:i=[(0,zA.default)(),(0,KA.default)(r),(0,GA.default)(),(0,p0.default)(r)]}={}){if(t<0||t%1>0)throw new Error("Invalid startLine");let s=(0,VA.default)({startLine:t,markers:n}),o=(0,WA.default)({fence:e}),l=(0,HA.default)({tokenizers:i}),u=(0,p0.getJoiner)(r);return function(a){let c=[];for(let p of(0,UA.splitLines)(a)){let d=s(p);if(d===null)continue;let h=o(d),g=h.slice(1).map(l);c.push({description:u(h[0],n),tags:g,source:d,problems:g.reduce((f,m)=>f.concat(m.problems),[])})}return c}}Bg.default=YA});var h0=T(Ug=>{"use strict";Object.defineProperty(Ug,"__esModule",{value:!0});function JA(t){return t.start+t.delimiter+t.postDelimiter+t.tag+t.postTag+t.type+t.postType+t.name+t.postName+t.description+t.end+t.lineEnd}function QA(){return t=>t.source.map(({tokens:e})=>JA(e)).join(`
98
98
  `)}Ug.default=QA});var m0=T(No=>{"use strict";var ZA=No&&No.__rest||function(t,e){var r={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(t);i<n.length;i++)e.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(t,n[i])&&(r[n[i]]=t[n[i]]);return r};Object.defineProperty(No,"__esModule",{value:!0});var f0=fs(),XA=In(),eO={start:0,tag:0,type:0,name:0},tO=(t=f0.Markers)=>(e,{tokens:r})=>({start:r.delimiter===t.start?r.start.length:e.start,tag:Math.max(e.tag,r.tag.length),type:Math.max(e.type,r.type.length),name:Math.max(e.name,r.name.length)}),ni=t=>"".padStart(t," ");function nO(t=f0.Markers){let e=!1,r;function n(i){let s=Object.assign({},i.tokens);s.tag!==""&&(e=!0);let o=s.tag===""&&s.name===""&&s.type===""&&s.description==="";if(s.end===t.end&&o)return s.start=ni(r.start+1),Object.assign(Object.assign({},i),{tokens:s});switch(s.delimiter){case t.start:s.start=ni(r.start);break;case t.delim:s.start=ni(r.start+1);break;default:s.delimiter="",s.start=ni(r.start+2)}if(!e)return s.postDelimiter=s.description===""?"":" ",Object.assign(Object.assign({},i),{tokens:s});let l={delim:!1,tag:!1,type:!1,name:!1};return s.description===""&&(l.name=!0,s.postName="",s.name===""&&(l.type=!0,s.postType="",s.type===""&&(l.tag=!0,s.postTag="",s.tag===""&&(l.delim=!0)))),s.postDelimiter=l.delim?"":" ",l.tag||(s.postTag=ni(r.tag-s.tag.length+1)),l.type||(s.postType=ni(r.type-s.type.length+1)),l.name||(s.postName=ni(r.name-s.name.length+1)),Object.assign(Object.assign({},i),{tokens:s})}return i=>{var{source:s}=i,o=ZA(i,["source"]);return r=s.reduce(tO(t),Object.assign({},eO)),(0,XA.rewireSource)(Object.assign(Object.assign({},o),{source:s.map(n)}))}}No.default=nO});var g0=T($o=>{"use strict";var rO=$o&&$o.__rest||function(t,e){var r={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(t);i<n.length;i++)e.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(t,n[i])&&(r[n[i]]=t[n[i]]);return r};Object.defineProperty($o,"__esModule",{value:!0});var iO=In(),sO=t=>e=>e.slice(t),oO=t=>{let e="".padStart(t," ");return r=>r+e};function aO(t){let e,r=i=>{if(e===void 0){let s=t-i.length;e=s>0?oO(s):sO(-s)}return e(i)},n=i=>Object.assign(Object.assign({},i),{tokens:Object.assign(Object.assign({},i.tokens),{start:r(i.tokens.start)})});return i=>{var{source:s}=i,o=rO(i,["source"]);return(0,iO.rewireSource)(Object.assign(Object.assign({},o),{source:s.map(n)}))}}$o.default=aO});var y0=T(Bo=>{"use strict";var lO=Bo&&Bo.__rest||function(t,e){var r={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(t);i<n.length;i++)e.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(t,n[i])&&(r[n[i]]=t[n[i]]);return r};Object.defineProperty(Bo,"__esModule",{value:!0});var uO=In();function cO(t){function e(r){return Object.assign(Object.assign({},r),{tokens:Object.assign(Object.assign({},r.tokens),{lineEnd:t==="LF"?"":"\r"})})}return r=>{var{source:n}=r,i=lO(r,["source"]);return(0,uO.rewireSource)(Object.assign(Object.assign({},i),{source:n.map(e)}))}}Bo.default=cO});var b0=T(Nu=>{"use strict";Object.defineProperty(Nu,"__esModule",{value:!0});Nu.flow=void 0;function pO(...t){return e=>t.reduce((r,n)=>n(r),e)}Nu.flow=pO});var S0=T(Vg=>{"use strict";Object.defineProperty(Vg,"__esModule",{value:!0});var dO=In(),_0={line:0,start:0,delimiter:0,postDelimiter:0,tag:0,postTag:0,name:0,postName:0,type:0,postType:0,description:0,end:0,lineEnd:0},v0={lineEnd:"CR"},Wg=Object.keys(_0),w0=t=>(0,dO.isSpace)(t)?`{${t.length}}`:t,hO=t=>"|"+t.join("|")+"|",fO=(t,e)=>Object.keys(e).map(r=>w0(e[r]).padEnd(t[r]));function mO({source:t}){var e,r;if(t.length===0)return"";let n=Object.assign({},_0);for(let s of Wg)n[s]=((e=v0[s])!==null&&e!==void 0?e:s).length;for(let{number:s,tokens:o}of t){n.line=Math.max(n.line,s.toString().length);for(let l in o)n[l]=Math.max(n[l],w0(o[l]).length)}let i=[[],[]];for(let s of Wg)i[0].push(((r=v0[s])!==null&&r!==void 0?r:s).padEnd(n[s]));for(let s of Wg)i[1].push("-".padEnd(n[s],"-"));for(let{number:s,tokens:o}of t){let l=s.toString().padStart(n.line);i.push([l,...fO(n,o)])}return i.map(hO).join(`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "greybel-languageserver-browser",
3
- "version": "1.8.0",
3
+ "version": "1.8.1",
4
4
  "description": "Language server for GreyScript",
5
5
  "main": "./index.js",
6
6
  "scripts": {
@@ -70,10 +70,10 @@
70
70
  "typescript": "^4.5.4"
71
71
  },
72
72
  "dependencies": {
73
- "greyscript-core": "~2.5.0",
73
+ "greyscript-core": "~2.5.1",
74
74
  "greyscript-meta": "~4.2.0",
75
- "greyscript-transpiler": "~1.6.0",
76
- "miniscript-type-analyzer": "~0.20.0",
75
+ "greyscript-transpiler": "~1.6.1",
76
+ "miniscript-type-analyzer": "~0.20.1",
77
77
  "greybel-languageserver-core": "~1.8.0"
78
78
  }
79
79
  }