miniscript-languageserver 1.9.0 → 1.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +1 -1
- package/package.json +4 -4
package/index.js
CHANGED
@@ -93,7 +93,7 @@ ${e}
|
|
93
93
|
${r.length>0?`switch(token.value) {
|
94
94
|
${r}
|
95
95
|
}`:""}
|
96
|
-
return false;`);return Object.defineProperty(o,"name",{value:`selector_group_${t}`,writable:!1}),o.selectors=e,o}ue.createSelectorGroup=qr;function qM(t){return t.selectors}ue.getSelectorsFromGroup=qM;var jr;(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"})(jr=ue.SelectorGroupType||(ue.SelectorGroupType={}));ue.SelectorGroups={BlockEndOfLine:qr(jr.AssignmentEndOfExpr,[ue.Selectors.EndOfLine,ue.Selectors.Comment]),AssignmentEndOfExpr:qr(jr.AssignmentEndOfExpr,[ue.Selectors.EndOfFile,ue.Selectors.EndOfLine,ue.Selectors.Else,ue.Selectors.Comment]),AssignmentShorthand:qr(jr.AssignmentShorthand,[ue.Selectors.AddShorthand,ue.Selectors.SubtractShorthand,ue.Selectors.MultiplyShorthand,ue.Selectors.DivideShorthand,ue.Selectors.PowerShorthand,ue.Selectors.ModuloShorthand]),AssignmentCommandArgs:qr(jr.AssignmentCommandArgs,[ue.Selectors.ArgumentSeperator,ue.Selectors.EndOfLine,ue.Selectors.EndOfFile]),ReturnStatementEnd:qr(jr.ReturnStatementEnd,[ue.Selectors.EndOfLine,ue.Selectors.Else,ue.Selectors.Comment]),FunctionDeclarationArgEnd:qr(jr.FunctionDeclarationArgEnd,[ue.Selectors.RParenthesis,ue.Selectors.EndOfFile,ue.Selectors.EndOfLine]),ComparisonOperators:qr(jr.ComparisonOperators,[ue.Selectors.Equal,ue.Selectors.NotEqual,ue.Selectors.Greater,ue.Selectors.GreaterEqual,ue.Selectors.Lesser,ue.Selectors.LessEqual]),MultiDivOperators:qr(jr.MultiDivOperators,[ue.Selectors.Times,ue.Selectors.Divide,ue.Selectors.Mod]),CallArgsEnd:qr(jr.CallArgsEnd,[ue.Selectors.ArgumentSeperator,ue.Selectors.RParenthesis])}});var Qy=m(Ah=>{"use strict";Object.defineProperty(Ah,"__esModule",{value:!0});Ah.Stack=void 0;var Jy=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}};Ah.Stack=Jy});var ib=m(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 Sr;(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"})(Sr=Je.PendingBlockType||(Je.PendingBlockType={}));var Ss=class{constructor(e,n,r){this.lineRegistry=r,this.block=e,this.body=[],this.type=n,this.onComplete=null}complete(e){var n;(n=this.onComplete)===null||n===void 0||n.call(this,this)}};function jM(t){return t.type===Sr.Chunk}Je.isPendingChunk=jM;var Zy=class extends Ss{constructor(e,n){super(e,Sr.Chunk,n)}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=Zy;function FM(t){return t.type===Sr.For}Je.isPendingFor=FM;var eb=class extends Ss{constructor(e,n){super(e,Sr.For,n),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=eb;function $M(t){return t.type===Sr.Function}Je.isPendingFunction=$M;var tb=class extends Ss{constructor(e,n,r){super(e,Sr.Function,r),this.base=n,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=tb;function BM(t){return t.type===Sr.If}Je.isPendingIf=BM;var nb=class extends Ss{constructor(e,n,r){super(e,Sr.If,r),this.lineRegistry.addItemToLine(this.block.start.line,this.block),this.currentClause=n}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=nb;function WM(t){return t.type===Sr.While}Je.isPendingWhile=WM;var rb=class extends Ss{constructor(e,n){super(e,Sr.While,n),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=rb});var ob=m(Ch=>{"use strict";Object.defineProperty(Ch,"__esModule",{value:!0});Ch.LineRegistry=void 0;var sb=class{constructor(){this._lines={}}get lines(){return this._lines}addItemToLines(e){this.addItemToRange(e.start.line,e.end.line,e)}addItemToLine(e,n){this.addItemToRange(e,e,n)}addItemToRange(e,n,r){let i=this._lines;for(let s=e;s<=n;s++){let o=i[s];o?o.push(r):i[s]=[r]}}};Ch.LineRegistry=sb});var mk=m(ru=>{"use strict";var gk=ru&&ru.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(ru,"__esModule",{value:!0});var UM=gk(Hm()),Lo=Fi(),In=Gy(),HM=gk(Vy()),GM=nh(),Xt=Ao(),ui=Oo(),ln=Ya(),X=Yy(),zM=Qy(),Fr=ib(),KM=ob(),ab=class{constructor(e,n={}){let r=this;r.content=e,r.backpatches=new zM.Stack,r.statementErrors=[],r.lexer=n.lexer||new UM.default(e,{unsafe:n.unsafe,tabWidth:n.tabWidth}),r.token=null,r.previousToken=null,r.lineRegistry=new KM.LineRegistry,r.scopes=[],r.currentScope=null,r.currentAssignment=null,r.outerScopes=[],r.literals=[],r.validator=n.validator||new HM.default,r.astProvider=n.astProvider||new In.ASTProvider,r.unsafe=n.unsafe||!1,r.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,n){let r=this.token;return this.token.type!==e?(this.raise(`got ${r} where ${e} is required`,new ln.Range(n||r.start,r.end)),null):(this.next(),r)}requireToken(e,n){let r=this.token;return e(r)?(this.next(),r):(this.raise(`got ${r} where "${(0,X.getSelectorValue)(e)}" is required`,new ln.Range(n||r.start,r.end)),null)}requireTokenOfAny(e,n){let r=this.token;return e(r)?(this.next(),r):(this.raise(`got ${r} where any of ${(0,X.getSelectorsFromGroup)(e).map(i=>`"${(0,X.getSelectorValue)(i)}"`).join(", ")} is required`,new ln.Range(n||r.start,r.end)),null)}skipNewlines(){var e;let n=this,r=0;for(;;){if(X.Selectors.Comment(n.token)){let i=((e=n.previousToken)===null||e===void 0?void 0:e.line)!==n.token.line,s=n.astProvider.comment({value:n.token.value,start:n.token.start,end:n.token.end,range:n.token.range,scope:n.currentScope,isStatement:i});n.lineRegistry.addItemToLines(s)}else if(X.Selectors.EndOfLine(n.token))r++;else break;n.next()}return r}pushScope(e){let n=this;n.currentScope!==null&&(n.scopes.push(e),n.outerScopes.push(n.currentScope)),n.currentScope=e}popScope(){let e=this;e.currentScope=e.outerScopes.pop()}tryToRecover(){let e=this,n=e.statementErrors[0];if(e.errors.push(n),!e.unsafe)throw n;for(e.lexer.recoverFromSnapshot(),e.next();e.token.type!==Lo.TokenType.EOL&&e.token.type!==Lo.TokenType.EOF;e.next());}finishRemaingScopes(){let e=this,n=e.backpatches.pop();for(;!(0,Fr.isPendingChunk)(n);){let r=e.raise(`found open block ${n.block.type}`,new ln.Range(n.block.start,n.block.start));if(n.complete(e.previousToken),e.errors.push(r),!e.unsafe)throw r;n=e.backpatches.pop()}}parseChunk(){let e=this;e.next();let n=e.token.start,r=e.astProvider.chunk({start:n,end:null,range:[e.token.range[0],null]}),i=new Fr.PendingChunk(r,e.lineRegistry);for(e.backpatches.setDefault(i),e.pushScope(r);!X.Selectors.EndOfFile(e.token)&&(e.skipNewlines(),!X.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),r.literals=e.literals,r.scopes=e.scopes,r.lines=e.lineRegistry.lines,r}parseStatement(){let e=this;if(Lo.TokenType.Keyword===e.token.type&&Xt.Keyword.Not!==e.token.value){e.parseKeyword();return}let n=e.backpatches.peek(),r=e.parseAssignment();r.end!==null&&e.lineRegistry.addItemToLines(r),n.body.push(r)}parseKeyword(){let e=this;switch(e.token.value){case Xt.Keyword.Return:{let r=e.backpatches.peek();e.next();let i=e.parseReturnStatement();i.end!==null&&e.lineRegistry.addItemToLines(i),r.body.push(i);return}case Xt.Keyword.If:{e.next(),e.parseIfStatement();return}case Xt.Keyword.ElseIf:{e.next(),e.nextIfClause(In.ASTType.ElseifClause);return}case Xt.Keyword.Else:{e.next(),e.nextIfClause(In.ASTType.ElseClause);return}case Xt.Keyword.While:{e.next(),e.parseWhileStatement();return}case Xt.Keyword.For:{e.next(),e.parseForStatement();return}case Xt.Keyword.EndFunction:{e.next(),e.finalizeFunction();return}case Xt.Keyword.EndFor:{e.next(),e.finalizeForStatement();return}case Xt.Keyword.EndWhile:{e.next(),e.finalizeWhileStatement();return}case Xt.Keyword.EndIf:{e.next(),e.nextIfClause(null);return}case Xt.Keyword.Continue:{let r=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),r.body.push(i);return}case Xt.Keyword.Break:{let r=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),r.body.push(i);return}}e.raise(`unexpected keyword ${e.token} at start of line`,new ln.Range(e.token.start,e.token.end))}parseShortcutStatement(){let e=this;if(Lo.TokenType.Keyword===e.token.type&&Xt.Keyword.Not!==e.token.value)switch(e.token.value){case Xt.Keyword.Return:return e.next(),e.parseReturnStatement();case Xt.Keyword.Continue:return e.next(),e.astProvider.continueStatement({start:e.previousToken.start,end:e.previousToken.end,range:e.previousToken.range,scope:e.currentScope});case Xt.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 ln.Range(e.token.start,e.token.end)),e.parseInvalidCode()}return e.parseAssignment()}parseAssignment(){let e=this,n=e.currentScope,r=e.token,i=e.parseExpr(null,!0,!0);if(X.SelectorGroups.AssignmentEndOfExpr(e.token))return i;if(X.Selectors.Assign(e.token)){e.next();let o=e.astProvider.assignmentStatement({variable:i,init:null,start:r.start,range:[r.range[0],null],end:null,scope:n}),a=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=a,n.definitions.push(o),o}else if(X.SelectorGroups.AssignmentShorthand(e.token)){let o=e.token;e.next();let a=e.astProvider.assignmentStatement({variable:i,init:null,start:r.start,range:[r.range[0],null],end:null,scope:n}),u=e.currentAssignment;e.currentAssignment=a;let c=e.token,l=o.value.charAt(0),h=e.parseExpr(a),d=e.astProvider.parenthesisExpression({start:h.start,end:h.end,range:h.range,expression:h});return a.init=e.astProvider.binaryExpression({operator:l,left:i.clone(),right:d,start:c.start,end:e.previousToken.end,range:[c.range[0],e.previousToken.range[1]],scope:n}),a.end=e.previousToken.end,a.range[1]=e.previousToken.range[1],e.currentAssignment=u,n.definitions.push(a),a}let s=[];for(;!X.Selectors.EndOfFile(e.token);){let o=e.parseExpr(null);if(s.push(o),X.SelectorGroups.BlockEndOfLine(e.token)||X.Selectors.Else(e.token))break;if(X.Selectors.ArgumentSeperator(e.token)){e.next(),e.skipNewlines();continue}let a=e.requireTokenOfAny(X.SelectorGroups.AssignmentCommandArgs,r.start);if(X.Selectors.EndOfLine(a)||X.Selectors.EndOfFile(a))break}return s.length===0?e.astProvider.callStatement({expression:i,start:r.start,end:e.previousToken.end,range:[r.range[0],e.previousToken.range[1]],scope:n}):e.astProvider.callStatement({expression:e.astProvider.callExpression({base:i,arguments:s,start:r.start,end:e.previousToken.end,range:[r.range[0],e.previousToken.range[1]],scope:n}),start:r.start,end:e.previousToken.end,range:[r.range[0],e.previousToken.range[1]],scope:n})}parseReturnStatement(){let e=this,n=e.currentScope,r=e.previousToken,i=null,s=e.astProvider.returnStatement({argument:null,start:r.start,end:null,range:[r.range[0],null],scope:n});return X.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),n.returns.push(s),s}parseIfStatement(){let e=this,n=e.previousToken,r=e.parseExpr(null);if(e.lineRegistry.addItemToLines(r),e.requireToken(X.Selectors.Then,n.start),!X.SelectorGroups.BlockEndOfLine(e.token)){e.parseIfShortcutStatement(r,n);return}let i=e.astProvider.ifStatement({clauses:[],start:n.start,end:null,range:[n.range[0],null],scope:e.currentScope}),s=e.astProvider.ifClause({condition:r,start:n.start,end:e.token.end,range:[n.range[0],e.token.range[1]],scope:e.currentScope}),o=new Fr.PendingIf(i,s,e.lineRegistry);e.backpatches.push(o)}nextIfClause(e){let n=this,r=n.backpatches.peek();if(!(0,Fr.isPendingIf)(r)){n.raise("no matching open if block",new ln.Range(n.token.start,n.token.end));return}switch(r.next(n.previousToken),e){case In.ASTType.ElseifClause:{let i=n.token,s=n.parseExpr(null);n.requireToken(X.Selectors.Then,i.start),r.currentClause=n.astProvider.elseifClause({condition:s,start:i.start,end:null,range:[i.range[0],null],scope:n.currentScope});break}case In.ASTType.ElseClause:{let i=n.token;r.currentClause=n.astProvider.elseClause({start:i.start,end:null,range:[i.range[0],null],scope:n.currentScope});break}}e===null&&(r.complete(n.previousToken),n.backpatches.pop(),n.backpatches.peek().body.push(r.block))}parseIfShortcutStatement(e,n){let r=this,i=[],s=r.backpatches.peek(),o=r.astProvider.ifShortcutStatement({clauses:i,start:n.start,end:null,range:[n.range[0],null],scope:r.currentScope}),a=r.parseShortcutStatement();if(i.push(r.astProvider.ifShortcutClause({condition:e,body:[a],start:n.start,end:r.token.end,range:[n.range[0],r.token.range[1]],scope:r.currentScope})),X.Selectors.Else(r.token)){r.next();let u=r.token,c=r.parseShortcutStatement();i.push(r.astProvider.elseShortcutClause({body:[c],start:u.start,end:r.token.end,range:[u.range[0],r.token.range[1]],scope:r.currentScope}))}o.end=r.token.end,o.range[1]=r.token.range[1],r.lineRegistry.addItemToLines(o),s.body.push(o)}parseWhileStatement(){let e=this,n=e.previousToken,r=e.parseExpr(null);if(!r){e.raise("while requires a condition",new ln.Range(n.start,e.token.end));return}if(!X.SelectorGroups.BlockEndOfLine(e.token))return e.parseWhileShortcutStatement(r,n);let i=e.astProvider.whileStatement({condition:r,start:n.start,end:null,range:[n.range[0],null],scope:e.currentScope}),s=new Fr.PendingWhile(i,e.lineRegistry);e.backpatches.push(s)}finalizeWhileStatement(){let e=this,n=e.backpatches.peek();if(!(0,Fr.isPendingWhile)(n)){e.raise("no matching open while block",new ln.Range(e.token.start,e.token.end));return}n.complete(e.previousToken),e.backpatches.pop(),e.backpatches.peek().body.push(n.block)}parseWhileShortcutStatement(e,n){let r=this,i=r.backpatches.peek(),s=r.parseShortcutStatement(),o=r.astProvider.whileStatement({condition:e,body:[s],start:n.start,end:r.previousToken.end,range:[n.range[0],r.previousToken.range[1]],scope:r.currentScope});r.lineRegistry.addItemToLines(o),i.body.push(o)}parseForStatement(){let e=this,n=e.currentScope,r=e.previousToken,i=e.parseIdentifier(In.ASTIdentifierKind.ForInVariable);e.requireToken(X.Selectors.In,r.start);let s=e.parseExpr(null);if(!s){e.raise("sequence expression expected for 'for' loop",new ln.Range(r.start,e.token.end));return}if(!X.SelectorGroups.BlockEndOfLine(e.token))return e.parseForShortcutStatement(i,s,r);let o=e.astProvider.forGenericStatement({variable:i,iterator:s,start:r.start,end:e.previousToken.end,range:[r.range[0],e.previousToken.range[1]],scope:n});n.definitions.push(o);let a=new Fr.PendingFor(o,e.lineRegistry);e.backpatches.push(a)}finalizeForStatement(){let e=this,n=e.backpatches.peek();if(!(0,Fr.isPendingFor)(n)){e.raise("no matching open for block",new ln.Range(e.token.start,e.token.end));return}n.complete(e.previousToken),e.backpatches.pop(),e.backpatches.peek().body.push(n.block)}parseForShortcutStatement(e,n,r){let i=this,s=i.currentScope,o=i.backpatches.peek(),a=i.parseShortcutStatement(),u=i.astProvider.forGenericStatement({variable:e,iterator:n,body:[a],start:r.start,end:i.previousToken.end,range:[r.range[0],i.previousToken.range[1]],scope:i.currentScope});s.definitions.push(u),i.lineRegistry.addItemToLines(u),o.body.push(u)}parseExpr(e,n=!1,r=!1){return this.parseFunctionDeclaration(e,n,r)}parseFunctionDeclaration(e,n=!1,r=!1){let i=this;if(!X.Selectors.Function(i.token))return i.parseOr(n,r);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}),a=[];if(i.pushScope(o),!X.SelectorGroups.BlockEndOfLine(i.token)){for(i.requireToken(X.Selectors.LParenthesis,s.start);!X.SelectorGroups.FunctionDeclarationArgEnd(i.token);){let c=i.parseIdentifier(In.ASTIdentifierKind.Argument),l=c;if(i.consume(X.Selectors.Assign)){let h=i.parseExpr(null);if(h instanceof In.ASTLiteral){let d=i.astProvider.assignmentStatement({variable:c,init:h,start:l.start,end:i.previousToken.end,range:[l.range[0],i.previousToken.range[1]],scope:i.currentScope});i.currentScope.definitions.push(d),a.push(d)}else i.raise("parameter default value must be a literal value",new ln.Range(l.start,i.token.end)),a.push(i.astProvider.invalidCodeExpression({start:l.start,end:i.previousToken.end,range:[l.range[0],i.previousToken.range[1]]}))}else{let h=i.astProvider.assignmentStatement({variable:c,init:i.astProvider.unknown({start:l.start,end:i.previousToken.end,range:[l.range[0],i.previousToken.range[1]],scope:i.currentScope}),start:l.start,end:i.previousToken.end,range:[l.range[0],i.previousToken.range[1]],scope:i.currentScope});i.currentScope.definitions.push(h),a.push(c)}if(X.Selectors.RParenthesis(i.token))break;if(i.requireToken(X.Selectors.ArgumentSeperator,s.start),X.Selectors.RParenthesis(i.token)){i.raise("expected argument instead received right parenthesis",new ln.Range(i.previousToken.end,i.previousToken.end));break}}i.requireToken(X.Selectors.RParenthesis,s.start)}o.parameters=a;let u=new Fr.PendingFunction(o,e,i.lineRegistry);return i.backpatches.push(u),o}finalizeFunction(){let e=this,n=e.backpatches.peek();if(!(0,Fr.isPendingFunction)(n)){e.raise("no matching open function block",new ln.Range(e.token.start,e.token.end));return}e.popScope(),n.complete(e.previousToken),e.backpatches.pop()}parseOr(e=!1,n=!1){let r=this,i=r.token,o=r.parseAnd(e,n);for(;X.Selectors.Or(r.token);){r.next(),r.skipNewlines();let a=r.parseAnd();o=r.astProvider.logicalExpression({operator:ui.Operator.Or,left:o,right:a,start:i.start,end:r.previousToken.end,range:[i.range[0],r.previousToken.range[1]],scope:r.currentScope})}return o}parseAnd(e=!1,n=!1){let r=this,i=r.token,o=r.parseNot(e,n);for(;X.Selectors.And(r.token);){r.next(),r.skipNewlines();let a=r.parseNot();o=r.astProvider.logicalExpression({operator:ui.Operator.And,left:o,right:a,start:i.start,end:r.previousToken.end,range:[i.range[0],r.previousToken.range[1]],scope:r.currentScope})}return o}parseNot(e=!1,n=!1){let r=this,i=r.token;if(X.Selectors.Not(r.token)){r.next(),r.skipNewlines();let s=r.parseIsa();return r.astProvider.unaryExpression({operator:ui.Operator.Not,argument:s,start:i.start,end:r.previousToken.end,range:[i.range[0],r.previousToken.range[1]],scope:r.currentScope})}return r.parseIsa(e,n)}parseIsa(e=!1,n=!1){let r=this,i=r.token,s=r.parseComparisons(e,n);if(X.Selectors.Isa(r.token)){r.next(),r.skipNewlines();let o=r.parseComparisons();return r.astProvider.isaExpression({operator:ui.Operator.Isa,left:s,right:o,start:i.start,end:r.previousToken.end,range:[i.range[0],r.previousToken.range[1]],scope:r.currentScope})}return s}parseComparisons(e=!1,n=!1){let r=this,i=r.token,s=r.parseAddSub(e,n);if(!X.SelectorGroups.ComparisonOperators(r.token))return s;let o=[s],a=[];do{let u=r.token;r.next(),r.skipNewlines();let c=r.parseAddSub();a.push(u.value),o.push(c)}while(X.SelectorGroups.ComparisonOperators(r.token));return a.length===1?r.astProvider.binaryExpression({operator:a[0],left:o[0],right:o[1],start:i.start,end:r.previousToken.end,range:[i.range[0],r.previousToken.range[1]],scope:r.currentScope}):r.astProvider.comparisonGroupExpression({operators:a,expressions:o,start:i.start,end:r.previousToken.end,range:[i.range[0],r.previousToken.range[1]],scope:r.currentScope})}parseAddSub(e=!1,n=!1){let r=this,i=r.token,o=r.parseMultDiv(e,n);for(;X.Selectors.Plus(r.token)||X.Selectors.Minus(r.token)&&(!n||!r.token.afterSpace||r.lexer.isAtWhitespace());){let a=r.token;r.next(),r.skipNewlines();let u=r.parseMultDiv();o=r.astProvider.binaryExpression({operator:a.value,left:o,right:u,start:i.start,end:r.previousToken.end,range:[i.range[0],r.previousToken.range[1]],scope:r.currentScope})}return o}parseMultDiv(e=!1,n=!1){let r=this,i=r.token,o=r.parseUnaryMinus(e,n);for(;X.SelectorGroups.MultiDivOperators(r.token);){let a=r.token;r.next(),r.skipNewlines();let u=r.parseUnaryMinus();o=r.astProvider.binaryExpression({operator:a.value,left:o,right:u,start:i.start,end:r.previousToken.end,range:[i.range[0],r.previousToken.range[1]],scope:r.currentScope})}return o}parseUnaryMinus(e=!1,n=!1){let r=this;if(!X.Selectors.Minus(r.token))return r.parseNew(e,n);let i=r.token;r.next(),r.skipNewlines();let s=r.parseNew();return s instanceof In.ASTNumericLiteral||s instanceof In.ASTBooleanLiteral?(s.negated=!0,s):r.astProvider.unaryExpression({operator:ui.Operator.Minus,argument:s,start:i.start,end:r.previousToken.end,range:[i.range[0],r.previousToken.range[1]],scope:r.currentScope})}parseNew(e=!1,n=!1){let r=this;if(!X.Selectors.New(r.token))return r.parseAddressOf(e,n);let i=r.token;r.next(),r.skipNewlines();let s=r.parseNew();return r.astProvider.unaryExpression({operator:ui.Operator.New,argument:s,start:i.start,end:r.previousToken.end,range:[i.range[0],r.previousToken.range[1]],scope:r.currentScope})}parseAddressOf(e=!1,n=!1){let r=this;if(!X.Selectors.Reference(r.token))return r.parsePower(e,n);let i=r.token;r.next(),r.skipNewlines();let s=r.parsePower(!0,n);return r.astProvider.unaryExpression({operator:ui.Operator.Reference,argument:s,start:i.start,end:r.previousToken.end,range:[i.range[0],r.previousToken.range[1]],scope:r.currentScope})}parsePower(e=!1,n=!1){let r=this,i=r.token,s=r.parseCallExpr(e,n);if(X.Selectors.Power(r.token)){r.next(),r.skipNewlines();let o=r.parseCallExpr();return r.astProvider.binaryExpression({operator:ui.Operator.Power,left:s,right:o,start:i.start,end:r.previousToken.end,range:[i.range[0],r.previousToken.range[1]],scope:r.currentScope})}return s}parseCallExpr(e=!1,n=!1){let r=this,i=r.token,s=r.parseMap(e,n);for(;!X.Selectors.EndOfFile(r.token);)if(X.Selectors.MemberSeperator(r.token)){r.next(),r.skipNewlines();let o=r.parseIdentifier(In.ASTIdentifierKind.Property),a=r.astProvider.memberExpression({base:s,indexer:ui.Operator.Member,identifier:o,start:i.start,end:r.previousToken.end,range:[i.range[0],r.previousToken.range[1]],scope:r.currentScope});r.currentScope.namespaces.push(a),s=a}else if(X.Selectors.SLBracket(r.token)&&!r.token.afterSpace){if(r.next(),r.skipNewlines(),X.Selectors.SliceSeperator(r.token)){let o=r.astProvider.emptyExpression({start:r.previousToken.start,end:r.previousToken.end,range:r.previousToken.range,scope:r.currentScope});r.next(),r.skipNewlines();let a=X.Selectors.SRBracket(r.token)?r.astProvider.emptyExpression({start:r.previousToken.start,end:r.previousToken.end,range:r.previousToken.range,scope:r.currentScope}):r.parseExpr(null);s=r.astProvider.sliceExpression({base:s,left:o,right:a,start:i.start,end:r.token.end,range:[i.range[0],r.token.range[1]],scope:r.currentScope})}else{let o=r.parseExpr(null);if(X.Selectors.SliceSeperator(r.token)){r.next(),r.skipNewlines();let a=X.Selectors.SRBracket(r.token)?r.astProvider.emptyExpression({start:r.previousToken.start,end:r.previousToken.end,range:r.previousToken.range,scope:r.currentScope}):r.parseExpr(null);s=r.astProvider.sliceExpression({base:s,left:o,right:a,start:i.start,end:r.token.end,range:[i.range[0],r.token.range[1]],scope:r.currentScope})}else s=r.astProvider.indexExpression({base:s,index:o,isStatementStart:n,start:i.start,end:r.token.end,range:[i.range[0],r.token.range[1]],scope:r.currentScope})}r.requireToken(X.Selectors.SRBracket,i.start)}else if(X.Selectors.LParenthesis(r.token)&&(!e||!r.token.afterSpace)){let o=r.parseCallArgs();s=r.astProvider.callExpression({base:s,arguments:o,start:i.start,end:r.previousToken.end,range:[i.range[0],r.previousToken.range[1]],scope:r.currentScope})}else break;return s}parseCallArgs(){let e=this,n=[];if(X.Selectors.LParenthesis(e.token))if(e.next(),X.Selectors.RParenthesis(e.token))e.next();else for(;!X.Selectors.EndOfFile(e.token);){e.skipNewlines();let r=e.parseExpr(null);if(n.push(r),e.skipNewlines(),X.Selectors.RParenthesis(e.requireTokenOfAny(X.SelectorGroups.CallArgsEnd,r.start)))break}return n}parseMap(e=!1,n=!1){let r=this;if(!X.Selectors.CLBracket(r.token))return r.parseList(e,n);let i=r.currentScope,s=r.token,o=[],a=r.astProvider.mapConstructorExpression({fields:o,start:s.start,end:null,range:[s.range[0],null],scope:i});if(r.next(),X.Selectors.CRBracket(r.token))r.next();else for(r.skipNewlines();!X.Selectors.EndOfFile(r.token);){if(X.Selectors.CRBracket(r.token)){r.next();break}let u=r.astProvider.mapKeyString({key:null,value:null,start:r.token.start,end:null,range:[r.token.range[0],null],scope:i});if(u.key=r.parseExpr(null),r.requireToken(X.Selectors.MapKeyValueSeperator),r.skipNewlines(),u.value=r.parseExpr(u),u.end=r.previousToken.end,u.range[1]=r.previousToken.range[1],o.push(u),X.Selectors.MapSeperator(r.token)&&(r.next(),r.skipNewlines()),X.Selectors.CRBracket(r.token)){r.next();break}}return a.end=r.token.start,a.range[1]=r.token.range[1],a}parseList(e=!1,n=!1){let r=this;if(!X.Selectors.SLBracket(r.token))return r.parseQuantity(e,n);let i=r.currentScope,s=r.token,o=[],a=r.astProvider.listConstructorExpression({fields:o,start:s.start,end:null,range:[s.range[0],null],scope:i});if(r.next(),X.Selectors.SRBracket(r.token))r.next();else for(r.skipNewlines();!X.Selectors.EndOfFile(r.token);){if(X.Selectors.SRBracket(r.token)){r.next();break}let u=r.astProvider.listValue({value:null,start:r.token.start,end:null,range:[r.token.range[0],null],scope:i});if(u.value=r.parseExpr(u),u.end=r.previousToken.end,u.range[1]=r.previousToken.range[1],o.push(u),X.Selectors.MapSeperator(r.token)&&(r.next(),r.skipNewlines()),X.Selectors.SRBracket(r.token)){r.next();break}}return a.end=r.token.start,a.range[1]=r.token.range[1],a}parseQuantity(e=!1,n=!1){let r=this;if(!X.Selectors.LParenthesis(r.token))return r.parseAtom(e,n);let i=r.token;r.next(),r.skipNewlines();let s=r.parseExpr(null);return r.requireToken(X.Selectors.RParenthesis,i.start),r.astProvider.parenthesisExpression({expression:s,start:i.start,end:r.previousToken.end,range:[i.range[0],r.previousToken.range[1]],scope:r.currentScope})}parseAtom(e=!1,n=!1){let r=this;return r.validator.isLiteral(r.token.type)?r.parseLiteral():r.isType(Lo.TokenType.Identifier)?r.parseIdentifier(In.ASTIdentifierKind.Variable):(r.raise(`got ${r.token} where number, string, or identifier is required`,new ln.Range(r.token.start,r.token.end)),r.parseInvalidCode())}parseLiteral(){let e=this,n=e.token,r=e.token.type,i=e.astProvider.literal(r,{value:e.token.value,raw:e.token.raw,start:n.start,end:e.token.end,range:[n.range[0],e.token.range[1]],scope:e.currentScope});return e.literals.push(i),e.next(),i}parseIdentifier(e){let n=this,r=n.requireType(Lo.TokenType.Identifier);if(r===null)return n.parseInvalidCode();let i=n.astProvider.identifier({kind:e,name:r.value,start:r.start,end:r.end,range:r.range,scope:n.currentScope});return e!==In.ASTIdentifierKind.Property&&n.currentScope.namespaces.push(i),i}parseInvalidCode(){let e=this,n=e.token,r=e.astProvider.invalidCodeExpression({start:n.start,end:n.end,range:n.range});return e.next(),r}raise(e,n){let r=this,i=new GM.ParserException(e,n);return r.statementErrors.push(i),i}};ru.default=ab});var ke=m(Re=>{"use strict";var VM=Re&&Re.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),wr=Re&&Re.__exportStar||function(t,e){for(var n in t)n!=="default"&&!Object.prototype.hasOwnProperty.call(e,n)&&VM(e,t,n)},Oh=Re&&Re.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Re,"__esModule",{value:!0});Re.ASTRange=Re.ASTPosition=Re.LineRegistry=Re.ParserValidatorm=Re.Parser=Re.LexerValidator=Re.Lexer=void 0;var XM=Hm();Object.defineProperty(Re,"Lexer",{enumerable:!0,get:function(){return Oh(XM).default}});wr(Fi(),Re);var YM=Mm();Object.defineProperty(Re,"LexerValidator",{enumerable:!0,get:function(){return Oh(YM).default}});var JM=mk();Object.defineProperty(Re,"Parser",{enumerable:!0,get:function(){return Oh(JM).default}});wr(Gy(),Re);var QM=Vy();Object.defineProperty(Re,"ParserValidatorm",{enumerable:!0,get:function(){return Oh(QM).default}});var ZM=ob();Object.defineProperty(Re,"LineRegistry",{enumerable:!0,get:function(){return ZM.LineRegistry}});wr(ib(),Re);wr(Qy(),Re);wr(Bm(),Re);wr(th(),Re);wr(nh(),Re);wr(Ao(),Re);wr(qm(),Re);wr(Oo(),Re);var eL=Ha();Object.defineProperty(Re,"ASTPosition",{enumerable:!0,get:function(){return eL.Position}});var tL=Ya();Object.defineProperty(Re,"ASTRange",{enumerable:!0,get:function(){return tL.Range}});wr(Yy(),Re)});var iu=m(Rh=>{"use strict";Object.defineProperty(Rh,"__esModule",{value:!0});Rh.isValidIdentifierLiteral=void 0;var nL=ke(),rL=t=>{if(t.type!==nL.ASTType.StringLiteral)return!1;let e=t.value.toString();return/^[_a-z][_a-z0-9]*$/i.test(e)};Rh.isValidIdentifierLiteral=rL});var ub=m(Ui=>{"use strict";Object.defineProperty(Ui,"__esModule",{value:!0});Ui.getStringHashCode=Ui.getHashCode=Ui.rotateBits=void 0;function iL(t){return t>>1|t<<31}Ui.rotateBits=iL;function sL(t,e=0){let n=t>>>0;return n=(n>>16^n)*73244475,n=(n>>16^n)*73244475,n=n>>16^n,(e<<5)-e+n|0}Ui.getHashCode=sL;Ui.getStringHashCode=function(){let t=new Map,e=n=>{let r,i;for(r=0,i=0;r<n.length;r++)i=Math.imul(31,i)+n.charCodeAt(r)|0;return i};return n=>{if(n.length===0)return 0;let r=t.get(n);if(r!==void 0)return r;let i=e(n);return t.set(n,i),i}}()});var yk=m(Ph=>{"use strict";Object.defineProperty(Ph,"__esModule",{value:!0});Ph.createExpressionHash=void 0;var ze=ke(),wt=ub(),oL=iu(),Yt=(t,e)=>t.$$hash=e,aL=t=>t.$$hash??null;function st(t){let e=aL(t);if(e!==null)return e;let n=(0,wt.getStringHashCode)(t.type);switch(t.type){case ze.ASTType.BinaryExpression:{let r=t;return n^=(0,wt.getStringHashCode)(r.operator),n^=st(r.left),n^=st(r.right),Yt(t,n)}case ze.ASTType.LogicalExpression:{let r=t;return n^=(0,wt.getStringHashCode)(r.operator),n^=st(r.left),n^=st(r.right),Yt(t,n)}case ze.ASTType.IsaExpression:{let r=t;return n^=(0,wt.getStringHashCode)(r.operator),n^=st(r.left),n^=st(r.right),Yt(t,n)}case ze.ASTType.ComparisonGroupExpression:{let r=t;for(let i=0;i<r.expressions.length;i++)n^=st(r.expressions[i]);for(let i=0;i<r.operators.length;i++)n^=(0,wt.getStringHashCode)(r.operators[i]);return Yt(t,n)}case ze.ASTType.FunctionDeclaration:{let r=t;n^=(0,wt.getHashCode)(r.parameters.length);for(let i=0;i<r.parameters.length;i++){let s=r.parameters[i];if(s.type===ze.ASTType.Identifier){n^=(0,wt.getStringHashCode)(s.name);continue}let o=s;n^=(0,wt.getStringHashCode)(o.variable.name),n^=st(o.init)}return Yt(t,n)}case ze.ASTType.ParenthesisExpression:return st(t.expression);case ze.ASTType.MemberExpression:{let r=t;if(r.base.type===ze.ASTType.Identifier){let i=r.base.name;if(i==="globals"||i==="locals"||i==="outer")return n=(0,wt.getStringHashCode)(ze.ASTType.Identifier),n^=(0,wt.getStringHashCode)(r.identifier.name),Yt(t,n)}return n^=st(r.base),n^=st(r.identifier),Yt(t,n)}case ze.ASTType.IndexExpression:{let r=t;if((0,oL.isValidIdentifierLiteral)(r.index)){if(r.base.type===ze.ASTType.Identifier){let s=r.base.name;if(s==="globals"||s==="locals"||s==="outer")return n=(0,wt.getStringHashCode)(ze.ASTType.Identifier),n^=(0,wt.getStringHashCode)(r.index.value.toString()),Yt(t,n)}n=(0,wt.getStringHashCode)(ze.ASTType.MemberExpression),n^=st(r.base);let i=(0,wt.getStringHashCode)(ze.ASTType.Identifier);i^=(0,wt.getStringHashCode)(r.index.value.toString()),n^=i}else n^=st(r.base),n^=st(r.index);return Yt(t,n)}case ze.ASTType.CallExpression:{let r=t;n^=st(r.base),n^=(0,wt.getHashCode)(r.arguments.length);for(let i=0;i<r.arguments.length;i++){let s=r.arguments[i];n^=st(s)}return Yt(t,n)}case ze.ASTType.NegationExpression:case ze.ASTType.BinaryNegatedExpression:case ze.ASTType.UnaryExpression:{let r=t;return n^=r.operator?(0,wt.getStringHashCode)(r.operator):1,n^=st(r.argument),Yt(t,n)}case ze.ASTType.Identifier:{let r=t;return n^=(0,wt.getStringHashCode)(r.name),Yt(t,n)}case ze.ASTType.BooleanLiteral:case ze.ASTType.NumericLiteral:case ze.ASTType.StringLiteral:case ze.ASTType.NilLiteral:return n^=(0,wt.getStringHashCode)(t.value.toString()),Yt(t,n);case ze.ASTType.MapConstructorExpression:{let r=t;n^=(0,wt.getHashCode)(r.fields.length);for(let i=0;i<r.fields.length;i++){let s=r.fields[i];n^=st(s.key),n^=st(s.value)}return Yt(t,n)}case ze.ASTType.ListConstructorExpression:{let r=t;n^=(0,wt.getHashCode)(r.fields.length);for(let i=0;i<r.fields.length;i++){let s=r.fields[i];n^=st(s.value)}return Yt(t,n)}case ze.ASTType.SliceExpression:{let r=t;return n^=st(r.base),n^=st(r.left),n^=st(r.right),Yt(t,n)}}return Yt(t,n)}function uL(t){return st(t)}Ph.createExpressionHash=uL});var cb=m(Dh=>{"use strict";Object.defineProperty(Dh,"__esModule",{value:!0});Dh.createExpressionId=void 0;var Tt=ke(),cL=iu(),Pt=(t,e)=>t.$$id=e,lL=t=>t.$$id??null;function Qe(t){let e=lL(t);if(e!==null)return e;switch(t.type){case Tt.ASTType.BinaryExpression:{let n=t;return Pt(t,Qe(n.left)+n.operator+Qe(n.right))}case Tt.ASTType.LogicalExpression:{let n=t;return Pt(t,Qe(n.left)+n.operator+Qe(n.right))}case Tt.ASTType.IsaExpression:{let n=t;return Pt(t,Qe(n.left)+n.operator+Qe(n.right))}case Tt.ASTType.ComparisonGroupExpression:{let n=t,r=n.expressions.map(s=>Qe(s)),i=[r[0]];for(let s=0;s<n.operators.length;s++)i.push(n.operators[s],r[s+1]);return Pt(t,i.join(" "))}case Tt.ASTType.FunctionDeclaration:{let n=t,r="function",i=[];for(let s=0;s<n.parameters.length;s++){let o=n.parameters[s];if(o.type===Tt.ASTType.Identifier){i.push(o.name);continue}let a=o;i.push(a.variable.name+"="+Qe(a.init))}return i.length>0&&(r+="("+i.join(",")+")"),Pt(t,r)}case Tt.ASTType.ParenthesisExpression:return Pt(t,Qe(t.expression));case Tt.ASTType.MemberExpression:{let n=t;return Pt(t,Qe(n.base)+"."+n.identifier.name)}case Tt.ASTType.IndexExpression:{let n=t;return(0,cL.isValidIdentifierLiteral)(n.index)?Pt(t,Qe(n.base)+"."+n.index.value.toString()):Pt(t,Qe(n.base)+"["+Qe(n.index)+"]")}case Tt.ASTType.CallExpression:{let n=t,r=Qe(n.base),i=[];for(let s=0;s<n.arguments.length;s++){let o=n.arguments[s];i.push(Qe(o))}return i.length>0&&(r+="("+i.join(",")+")"),Pt(t,r)}case Tt.ASTType.NegationExpression:case Tt.ASTType.BinaryNegatedExpression:case Tt.ASTType.UnaryExpression:{let n=t;return n.operator==null?Pt(t,Qe(n.argument)):n.operator==="@"?Pt(t,n.operator+Qe(n.argument)):Pt(t,n.operator+" "+Qe(n.argument))}case Tt.ASTType.Identifier:return Pt(t,t.name);case Tt.ASTType.NumericLiteral:case Tt.ASTType.BooleanLiteral:case Tt.ASTType.StringLiteral:case Tt.ASTType.NilLiteral:return Pt(t,t.raw.toString());case Tt.ASTType.MapConstructorExpression:{let n=t,r=[];for(let i=0;i<n.fields.length;i++){let s=n.fields[i];r.push(Qe(s.key)+":"+Qe(s.value))}return Pt(t,"{"+r.join(",")+"}")}case Tt.ASTType.ListConstructorExpression:{let n=t,r=[];for(let i=0;i<n.fields.length;i++){let s=n.fields[i];r.push(Qe(s.value))}return Pt(t,"["+r.join(",")+"]")}case Tt.ASTType.SliceExpression:{let n=t;return Pt(t,Qe(n.base)+"["+Qe(n.left)+":"+Qe(n.right)+"]")}}return Pt(t,"")}function hL(t){return Qe(t)}Dh.createExpressionId=hL});var No=m(su=>{"use strict";Object.defineProperty(su,"__esModule",{value:!0});su.Markers=void 0;var dL;(function(t){t.start="/**",t.nostart="/***",t.delim="*",t.end="*/"})(dL=su.Markers||(su.Markers={}))});var Tr=m(gt=>{"use strict";Object.defineProperty(gt,"__esModule",{value:!0});gt.rewireSpecs=gt.rewireSource=gt.seedTokens=gt.seedSpec=gt.seedBlock=gt.splitLines=gt.splitSpace=gt.splitCR=gt.hasCR=gt.isSpace=void 0;function fL(t){return/^\s+$/.test(t)}gt.isSpace=fL;function pL(t){return/\r$/.test(t)}gt.hasCR=pL;function gL(t){let e=t.match(/\r+$/);return e==null?["",t]:[t.slice(-e[0].length),t.slice(0,-e[0].length)]}gt.splitCR=gL;function mL(t){let e=t.match(/^\s+/);return e==null?["",t]:[t.slice(0,e[0].length),t.slice(e[0].length)]}gt.splitSpace=mL;function yL(t){return t.split(/\n/)}gt.splitLines=yL;function bL(t={}){return Object.assign({description:"",tags:[],source:[],problems:[]},t)}gt.seedBlock=bL;function _L(t={}){return Object.assign({tag:"",name:"",type:"",optional:!1,description:"",problems:[],source:[]},t)}gt.seedSpec=_L;function vL(t={}){return Object.assign({start:"",delimiter:"",postDelimiter:"",tag:"",postTag:"",name:"",postName:"",type:"",postType:"",description:"",end:"",lineEnd:""},t)}gt.seedTokens=vL;function SL(t){let e=t.source.reduce((n,r)=>n.set(r.number,r),new Map);for(let n of t.tags)n.source=n.source.map(r=>e.get(r.number));return t}gt.rewireSource=SL;function wL(t){let e=t.tags.reduce((n,r)=>r.source.reduce((i,s)=>i.set(s.number,s),n),new Map);return t.source=t.source.map(n=>e.get(n.number)||n),t}gt.rewireSpecs=wL});var bk=m(lb=>{"use strict";Object.defineProperty(lb,"__esModule",{value:!0});var TL=/^@\S+/;function EL({fence:t="```"}={}){let e=xL(t),n=(r,i)=>e(r)?!i:i;return function(i){let s=[[]],o=!1;for(let a of i)TL.test(a.tokens.description)&&!o?s.push([a]):s[s.length-1].push(a),o=n(a.tokens.description,o);return s}}lb.default=EL;function xL(t){return typeof t=="string"?e=>e.split(t).length%2===0:t}});var _k=m(hb=>{"use strict";Object.defineProperty(hb,"__esModule",{value:!0});var kL=No(),ou=Tr();function AL({startLine:t=0,markers:e=kL.Markers}={}){let n=null,r=t;return function(s){let o=s,a=(0,ou.seedTokens)();if([a.lineEnd,o]=(0,ou.splitCR)(o),[a.start,o]=(0,ou.splitSpace)(o),n===null&&o.startsWith(e.start)&&!o.startsWith(e.nostart)&&(n=[],a.delimiter=o.slice(0,e.start.length),o=o.slice(e.start.length),[a.postDelimiter,o]=(0,ou.splitSpace)(o)),n===null)return r++,null;let u=o.trimRight().endsWith(e.end);if(a.delimiter===""&&o.startsWith(e.delim)&&!o.startsWith(e.end)&&(a.delimiter=e.delim,o=o.slice(e.delim.length),[a.postDelimiter,o]=(0,ou.splitSpace)(o)),u){let c=o.trimRight();a.end=o.slice(c.length-e.end.length),o=c.slice(0,-e.end.length)}if(a.description=o,n.push({number:r,source:s,tokens:a}),r++,u){let c=n.slice();return n=null,c}return null}}hb.default=AL});var vk=m(db=>{"use strict";Object.defineProperty(db,"__esModule",{value:!0});var CL=Tr();function OL({tokenizers:t}){return function(n){var r;let i=(0,CL.seedSpec)({source:n});for(let s of t)if(i=s(i),!((r=i.problems[i.problems.length-1])===null||r===void 0)&&r.critical)break;return i}}db.default=OL});var pb=m(fb=>{"use strict";Object.defineProperty(fb,"__esModule",{value:!0});function RL(){return t=>{let{tokens:e}=t.source[0],n=e.description.match(/\s*(@(\S+))(\s*)/);return n===null?(t.problems.push({code:"spec:tag:prefix",message:'tag should start with "@" symbol',line:t.source[0].number,critical:!0}),t):(e.tag=n[1],e.postTag=n[3],e.description=e.description.slice(n[0].length),t.tag=n[2],t)}}fb.default=RL});var mb=m(gb=>{"use strict";Object.defineProperty(gb,"__esModule",{value:!0});var PL=Tr();function DL(t="compact"){let e=ML(t);return n=>{let r=0,i=[];for(let[a,{tokens:u}]of n.source.entries()){let c="";if(a===0&&u.description[0]!=="{")return n;for(let l of u.description)if(l==="{"&&r++,l==="}"&&r--,c+=l,r===0)break;if(i.push([u,c]),r===0)break}if(r!==0)return n.problems.push({code:"spec:type:unpaired-curlies",message:"unpaired curlies",line:n.source[0].number,critical:!0}),n;let s=[],o=i[0][0].postDelimiter.length;for(let[a,[u,c]]of i.entries())u.type=c,a>0&&(u.type=u.postDelimiter.slice(o)+c,u.postDelimiter=u.postDelimiter.slice(0,o)),[u.postType,u.description]=(0,PL.splitSpace)(u.description.slice(c.length)),s.push(u.type);return s[0]=s[0].slice(1),s[s.length-1]=s[s.length-1].slice(0,-1),n.type=e(s),n}}gb.default=DL;var IL=t=>t.trim();function ML(t){return t==="compact"?e=>e.map(IL).join(""):t==="preserve"?e=>e.join(`
|
96
|
+
return false;`);return Object.defineProperty(o,"name",{value:`selector_group_${t}`,writable:!1}),o.selectors=e,o}ue.createSelectorGroup=qr;function qM(t){return t.selectors}ue.getSelectorsFromGroup=qM;var jr;(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"})(jr=ue.SelectorGroupType||(ue.SelectorGroupType={}));ue.SelectorGroups={BlockEndOfLine:qr(jr.AssignmentEndOfExpr,[ue.Selectors.EndOfLine,ue.Selectors.Comment]),AssignmentEndOfExpr:qr(jr.AssignmentEndOfExpr,[ue.Selectors.EndOfFile,ue.Selectors.EndOfLine,ue.Selectors.Else,ue.Selectors.Comment]),AssignmentShorthand:qr(jr.AssignmentShorthand,[ue.Selectors.AddShorthand,ue.Selectors.SubtractShorthand,ue.Selectors.MultiplyShorthand,ue.Selectors.DivideShorthand,ue.Selectors.PowerShorthand,ue.Selectors.ModuloShorthand]),AssignmentCommandArgs:qr(jr.AssignmentCommandArgs,[ue.Selectors.ArgumentSeperator,ue.Selectors.EndOfLine,ue.Selectors.EndOfFile]),ReturnStatementEnd:qr(jr.ReturnStatementEnd,[ue.Selectors.EndOfLine,ue.Selectors.Else,ue.Selectors.Comment]),FunctionDeclarationArgEnd:qr(jr.FunctionDeclarationArgEnd,[ue.Selectors.RParenthesis,ue.Selectors.EndOfFile,ue.Selectors.EndOfLine]),ComparisonOperators:qr(jr.ComparisonOperators,[ue.Selectors.Equal,ue.Selectors.NotEqual,ue.Selectors.Greater,ue.Selectors.GreaterEqual,ue.Selectors.Lesser,ue.Selectors.LessEqual]),MultiDivOperators:qr(jr.MultiDivOperators,[ue.Selectors.Times,ue.Selectors.Divide,ue.Selectors.Mod]),CallArgsEnd:qr(jr.CallArgsEnd,[ue.Selectors.ArgumentSeperator,ue.Selectors.RParenthesis])}});var Qy=m(Ah=>{"use strict";Object.defineProperty(Ah,"__esModule",{value:!0});Ah.Stack=void 0;var Jy=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}};Ah.Stack=Jy});var ib=m(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 Sr;(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"})(Sr=Je.PendingBlockType||(Je.PendingBlockType={}));var Ss=class{constructor(e,n,r){this.lineRegistry=r,this.block=e,this.body=[],this.type=n,this.onComplete=null}complete(e){var n;(n=this.onComplete)===null||n===void 0||n.call(this,this)}};function jM(t){return t.type===Sr.Chunk}Je.isPendingChunk=jM;var Zy=class extends Ss{constructor(e,n){super(e,Sr.Chunk,n)}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=Zy;function FM(t){return t.type===Sr.For}Je.isPendingFor=FM;var eb=class extends Ss{constructor(e,n){super(e,Sr.For,n),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=eb;function $M(t){return t.type===Sr.Function}Je.isPendingFunction=$M;var tb=class extends Ss{constructor(e,n,r){super(e,Sr.Function,r),this.base=n,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=tb;function BM(t){return t.type===Sr.If}Je.isPendingIf=BM;var nb=class extends Ss{constructor(e,n,r){super(e,Sr.If,r),this.lineRegistry.addItemToLine(this.block.start.line,this.block),this.currentClause=n}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=nb;function WM(t){return t.type===Sr.While}Je.isPendingWhile=WM;var rb=class extends Ss{constructor(e,n){super(e,Sr.While,n),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=rb});var ob=m(Ch=>{"use strict";Object.defineProperty(Ch,"__esModule",{value:!0});Ch.LineRegistry=void 0;var sb=class{constructor(){this._lines={}}get lines(){return this._lines}addItemToLines(e){this.addItemToRange(e.start.line,e.end.line,e)}addItemToLine(e,n){this.addItemToRange(e,e,n)}addItemToRange(e,n,r){let i=this._lines;for(let s=e;s<=n;s++){let o=i[s];o?o.push(r):i[s]=[r]}}};Ch.LineRegistry=sb});var mk=m(ru=>{"use strict";var gk=ru&&ru.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(ru,"__esModule",{value:!0});var UM=gk(Hm()),Lo=Fi(),In=Gy(),HM=gk(Vy()),GM=nh(),Xt=Ao(),ui=Oo(),ln=Ya(),X=Yy(),zM=Qy(),Fr=ib(),KM=ob(),ab=class{constructor(e,n={}){let r=this;r.content=e,r.backpatches=new zM.Stack,r.statementErrors=[],r.lexer=n.lexer||new UM.default(e,{unsafe:n.unsafe,tabWidth:n.tabWidth}),r.token=null,r.previousToken=null,r.lineRegistry=new KM.LineRegistry,r.scopes=[],r.currentScope=null,r.currentAssignment=null,r.outerScopes=[],r.literals=[],r.validator=n.validator||new HM.default,r.astProvider=n.astProvider||new In.ASTProvider,r.unsafe=n.unsafe||!1,r.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,n){let r=this.token;return this.token.type!==e?(this.raise(`got ${r} where ${e} is required`,new ln.Range(n||r.start,r.end)),null):(this.next(),r)}requireToken(e,n){let r=this.token;return e(r)?(this.next(),r):(this.raise(`got ${r} where "${(0,X.getSelectorValue)(e)}" is required`,new ln.Range(n||r.start,r.end)),null)}requireTokenOfAny(e,n){let r=this.token;return e(r)?(this.next(),r):(this.raise(`got ${r} where any of ${(0,X.getSelectorsFromGroup)(e).map(i=>`"${(0,X.getSelectorValue)(i)}"`).join(", ")} is required`,new ln.Range(n||r.start,r.end)),null)}skipNewlines(){var e;let n=this,r=0;for(;;){if(X.Selectors.Comment(n.token)){let i=((e=n.previousToken)===null||e===void 0?void 0:e.line)!==n.token.line,s=n.astProvider.comment({value:n.token.value,start:n.token.start,end:n.token.end,range:n.token.range,scope:n.currentScope,isStatement:i});n.lineRegistry.addItemToLines(s)}else if(X.Selectors.EndOfLine(n.token))r++;else break;n.next()}return r}pushScope(e){let n=this;n.currentScope!==null&&(n.scopes.push(e),n.outerScopes.push(n.currentScope)),n.currentScope=e}popScope(){let e=this;e.currentScope=e.outerScopes.pop()}tryToRecover(){let e=this,n=e.statementErrors[0];if(e.errors.push(n),!e.unsafe)throw n;for(e.lexer.recoverFromSnapshot(),e.next();e.token.type!==Lo.TokenType.EOL&&e.token.type!==Lo.TokenType.EOF;e.next());}finishRemaingScopes(){let e=this,n=e.backpatches.pop();for(;!(0,Fr.isPendingChunk)(n);){let r=e.raise(`found open block ${n.block.type}`,new ln.Range(n.block.start,n.block.start));if(n.complete(e.previousToken),e.errors.push(r),!e.unsafe)throw r;n=e.backpatches.pop()}}parseChunk(){let e=this;e.next();let n=e.token.start,r=e.astProvider.chunk({start:n,end:null,range:[e.token.range[0],null]}),i=new Fr.PendingChunk(r,e.lineRegistry);for(e.backpatches.setDefault(i),e.pushScope(r);!X.Selectors.EndOfFile(e.token)&&(e.skipNewlines(),!X.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),r.literals=e.literals,r.scopes=e.scopes,r.lines=e.lineRegistry.lines,r}parseStatement(){let e=this;if(Lo.TokenType.Keyword===e.token.type&&Xt.Keyword.Not!==e.token.value){e.parseKeyword();return}let n=e.backpatches.peek(),r=e.parseAssignment();r.end!==null&&e.lineRegistry.addItemToLines(r),n.body.push(r)}parseKeyword(){let e=this;switch(e.token.value){case Xt.Keyword.Return:{let r=e.backpatches.peek();e.next();let i=e.parseReturnStatement();i.end!==null&&e.lineRegistry.addItemToLines(i),r.body.push(i);return}case Xt.Keyword.If:{e.next(),e.parseIfStatement();return}case Xt.Keyword.ElseIf:{e.next(),e.nextIfClause(In.ASTType.ElseifClause);return}case Xt.Keyword.Else:{e.next(),e.nextIfClause(In.ASTType.ElseClause);return}case Xt.Keyword.While:{e.next(),e.parseWhileStatement();return}case Xt.Keyword.For:{e.next(),e.parseForStatement();return}case Xt.Keyword.EndFunction:{e.next(),e.finalizeFunction();return}case Xt.Keyword.EndFor:{e.next(),e.finalizeForStatement();return}case Xt.Keyword.EndWhile:{e.next(),e.finalizeWhileStatement();return}case Xt.Keyword.EndIf:{e.next(),e.nextIfClause(null);return}case Xt.Keyword.Continue:{let r=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),r.body.push(i);return}case Xt.Keyword.Break:{let r=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),r.body.push(i);return}}e.raise(`unexpected keyword ${e.token} at start of line`,new ln.Range(e.token.start,e.token.end))}parseShortcutStatement(){let e=this;if(Lo.TokenType.Keyword===e.token.type&&Xt.Keyword.Not!==e.token.value)switch(e.token.value){case Xt.Keyword.Return:return e.next(),e.parseReturnStatement();case Xt.Keyword.Continue:return e.next(),e.astProvider.continueStatement({start:e.previousToken.start,end:e.previousToken.end,range:e.previousToken.range,scope:e.currentScope});case Xt.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 ln.Range(e.token.start,e.token.end)),e.parseInvalidCode()}return e.parseAssignment()}parseAssignment(){let e=this,n=e.currentScope,r=e.token,i=e.parseExpr(null,!0,!0);if(X.SelectorGroups.AssignmentEndOfExpr(e.token))return i;if(X.Selectors.Assign(e.token)){e.next();let o=e.astProvider.assignmentStatement({variable:i,init:null,start:r.start,range:[r.range[0],null],end:null,scope:n}),a=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=a,n.definitions.push(o),o}else if(X.SelectorGroups.AssignmentShorthand(e.token)){let o=e.token;e.next();let a=e.astProvider.assignmentStatement({variable:i,init:null,start:r.start,range:[r.range[0],null],end:null,scope:n}),u=e.currentAssignment;e.currentAssignment=a;let c=e.token,l=o.value.charAt(0),h=e.parseExpr(a),d=e.astProvider.parenthesisExpression({start:h.start,end:h.end,range:h.range,expression:h});return a.init=e.astProvider.binaryExpression({operator:l,left:i.clone(),right:d,start:c.start,end:e.previousToken.end,range:[c.range[0],e.previousToken.range[1]],scope:n}),a.end=e.previousToken.end,a.range[1]=e.previousToken.range[1],e.currentAssignment=u,n.definitions.push(a),a}let s=[];for(;!X.Selectors.EndOfFile(e.token);){let o=e.parseExpr(null);if(s.push(o),X.SelectorGroups.BlockEndOfLine(e.token)||X.Selectors.Else(e.token))break;if(X.Selectors.ArgumentSeperator(e.token)){e.next(),e.skipNewlines();continue}let a=e.requireTokenOfAny(X.SelectorGroups.AssignmentCommandArgs,r.start);if(X.Selectors.EndOfLine(a)||X.Selectors.EndOfFile(a))break}return s.length===0?e.astProvider.callStatement({expression:i,start:r.start,end:e.previousToken.end,range:[r.range[0],e.previousToken.range[1]],scope:n}):e.astProvider.callStatement({expression:e.astProvider.callExpression({base:i,arguments:s,start:r.start,end:e.previousToken.end,range:[r.range[0],e.previousToken.range[1]],scope:n}),start:r.start,end:e.previousToken.end,range:[r.range[0],e.previousToken.range[1]],scope:n})}parseReturnStatement(){let e=this,n=e.currentScope,r=e.previousToken,i=null,s=e.astProvider.returnStatement({argument:null,start:r.start,end:null,range:[r.range[0],null],scope:n});return X.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),n.returns.push(s),s}parseIfStatement(){let e=this,n=e.previousToken,r=e.parseExpr(null);if(e.lineRegistry.addItemToLines(r),e.requireToken(X.Selectors.Then,n.start),!X.SelectorGroups.BlockEndOfLine(e.token)){e.parseIfShortcutStatement(r,n);return}let i=e.astProvider.ifStatement({clauses:[],start:n.start,end:null,range:[n.range[0],null],scope:e.currentScope}),s=e.astProvider.ifClause({condition:r,start:n.start,end:e.token.end,range:[n.range[0],e.token.range[1]],scope:e.currentScope}),o=new Fr.PendingIf(i,s,e.lineRegistry);e.backpatches.push(o)}nextIfClause(e){let n=this,r=n.backpatches.peek();if(!(0,Fr.isPendingIf)(r)){n.raise("no matching open if block",new ln.Range(n.token.start,n.token.end));return}switch(r.next(n.previousToken),e){case In.ASTType.ElseifClause:{let i=n.token,s=n.parseExpr(null);n.requireToken(X.Selectors.Then,i.start),r.currentClause=n.astProvider.elseifClause({condition:s,start:i.start,end:null,range:[i.range[0],null],scope:n.currentScope});break}case In.ASTType.ElseClause:{let i=n.token;r.currentClause=n.astProvider.elseClause({start:i.start,end:null,range:[i.range[0],null],scope:n.currentScope});break}}e===null&&(r.complete(n.previousToken),n.backpatches.pop(),n.backpatches.peek().body.push(r.block))}parseIfShortcutStatement(e,n){let r=this,i=[],s=r.backpatches.peek(),o=r.astProvider.ifShortcutStatement({clauses:i,start:n.start,end:null,range:[n.range[0],null],scope:r.currentScope}),a=r.parseShortcutStatement();if(i.push(r.astProvider.ifShortcutClause({condition:e,body:[a],start:n.start,end:r.token.end,range:[n.range[0],r.token.range[1]],scope:r.currentScope})),X.Selectors.Else(r.token)){r.next();let u=r.token,c=r.parseShortcutStatement();i.push(r.astProvider.elseShortcutClause({body:[c],start:u.start,end:r.token.end,range:[u.range[0],r.token.range[1]],scope:r.currentScope}))}o.end=r.token.end,o.range[1]=r.token.range[1],r.lineRegistry.addItemToLines(o),s.body.push(o)}parseWhileStatement(){let e=this,n=e.previousToken,r=e.parseExpr(null);if(!r){e.raise("while requires a condition",new ln.Range(n.start,e.token.end));return}if(!X.SelectorGroups.BlockEndOfLine(e.token))return e.parseWhileShortcutStatement(r,n);let i=e.astProvider.whileStatement({condition:r,start:n.start,end:null,range:[n.range[0],null],scope:e.currentScope}),s=new Fr.PendingWhile(i,e.lineRegistry);e.backpatches.push(s)}finalizeWhileStatement(){let e=this,n=e.backpatches.peek();if(!(0,Fr.isPendingWhile)(n)){e.raise("no matching open while block",new ln.Range(e.token.start,e.token.end));return}n.complete(e.previousToken),e.backpatches.pop(),e.backpatches.peek().body.push(n.block)}parseWhileShortcutStatement(e,n){let r=this,i=r.backpatches.peek(),s=r.parseShortcutStatement(),o=r.astProvider.whileStatement({condition:e,body:[s],start:n.start,end:r.previousToken.end,range:[n.range[0],r.previousToken.range[1]],scope:r.currentScope});r.lineRegistry.addItemToLines(o),i.body.push(o)}parseForStatement(){let e=this,n=e.currentScope,r=e.previousToken,i=e.parseIdentifier(In.ASTIdentifierKind.ForInVariable);e.requireToken(X.Selectors.In,r.start);let s=e.parseExpr(null);if(!s){e.raise("sequence expression expected for 'for' loop",new ln.Range(r.start,e.token.end));return}if(!X.SelectorGroups.BlockEndOfLine(e.token))return e.parseForShortcutStatement(i,s,r);let o=e.astProvider.forGenericStatement({variable:i,iterator:s,start:r.start,end:e.previousToken.end,range:[r.range[0],e.previousToken.range[1]],scope:n});n.definitions.push(o);let a=new Fr.PendingFor(o,e.lineRegistry);e.backpatches.push(a)}finalizeForStatement(){let e=this,n=e.backpatches.peek();if(!(0,Fr.isPendingFor)(n)){e.raise("no matching open for block",new ln.Range(e.token.start,e.token.end));return}n.complete(e.previousToken),e.backpatches.pop(),e.backpatches.peek().body.push(n.block)}parseForShortcutStatement(e,n,r){let i=this,s=i.currentScope,o=i.backpatches.peek(),a=i.parseShortcutStatement(),u=i.astProvider.forGenericStatement({variable:e,iterator:n,body:[a],start:r.start,end:i.previousToken.end,range:[r.range[0],i.previousToken.range[1]],scope:i.currentScope});s.definitions.push(u),i.lineRegistry.addItemToLines(u),o.body.push(u)}parseExpr(e,n=!1,r=!1){return this.parseFunctionDeclaration(e,n,r)}parseFunctionDeclaration(e,n=!1,r=!1){let i=this;if(!X.Selectors.Function(i.token))return i.parseOr(n,r);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}),a=[];if(i.pushScope(o),!X.SelectorGroups.BlockEndOfLine(i.token)){for(i.requireToken(X.Selectors.LParenthesis,s.start);!X.SelectorGroups.FunctionDeclarationArgEnd(i.token);){let c=i.parseIdentifier(In.ASTIdentifierKind.Argument),l=c;if(i.consume(X.Selectors.Assign)){let h=i.parseExpr(null);if(h instanceof In.ASTLiteral){let d=i.astProvider.assignmentStatement({variable:c,init:h,start:l.start,end:i.previousToken.end,range:[l.range[0],i.previousToken.range[1]],scope:i.currentScope});i.currentScope.definitions.push(d),a.push(d)}else i.raise("parameter default value must be a literal value",new ln.Range(l.start,i.token.end)),a.push(i.astProvider.invalidCodeExpression({start:l.start,end:i.previousToken.end,range:[l.range[0],i.previousToken.range[1]]}))}else{let h=i.astProvider.assignmentStatement({variable:c,init:i.astProvider.unknown({start:l.start,end:i.previousToken.end,range:[l.range[0],i.previousToken.range[1]],scope:i.currentScope}),start:l.start,end:i.previousToken.end,range:[l.range[0],i.previousToken.range[1]],scope:i.currentScope});i.currentScope.definitions.push(h),a.push(c)}if(X.Selectors.RParenthesis(i.token))break;if(i.requireToken(X.Selectors.ArgumentSeperator,s.start),X.Selectors.RParenthesis(i.token)){i.raise("expected argument instead received right parenthesis",new ln.Range(i.previousToken.end,i.previousToken.end));break}}i.requireToken(X.Selectors.RParenthesis,s.start)}o.parameters=a;let u=new Fr.PendingFunction(o,e,i.lineRegistry);return i.backpatches.push(u),o}finalizeFunction(){let e=this,n=e.backpatches.peek();if(!(0,Fr.isPendingFunction)(n)){e.raise("no matching open function block",new ln.Range(e.token.start,e.token.end));return}e.popScope(),n.complete(e.previousToken),e.backpatches.pop()}parseOr(e=!1,n=!1){let r=this,i=r.token,o=r.parseAnd(e,n);for(;X.Selectors.Or(r.token);){r.next(),r.skipNewlines();let a=r.parseAnd();o=r.astProvider.logicalExpression({operator:ui.Operator.Or,left:o,right:a,start:i.start,end:r.previousToken.end,range:[i.range[0],r.previousToken.range[1]],scope:r.currentScope})}return o}parseAnd(e=!1,n=!1){let r=this,i=r.token,o=r.parseNot(e,n);for(;X.Selectors.And(r.token);){r.next(),r.skipNewlines();let a=r.parseNot();o=r.astProvider.logicalExpression({operator:ui.Operator.And,left:o,right:a,start:i.start,end:r.previousToken.end,range:[i.range[0],r.previousToken.range[1]],scope:r.currentScope})}return o}parseNot(e=!1,n=!1){let r=this,i=r.token;if(X.Selectors.Not(r.token)){r.next(),r.skipNewlines();let s=r.parseIsa();return r.astProvider.unaryExpression({operator:ui.Operator.Not,argument:s,start:i.start,end:r.previousToken.end,range:[i.range[0],r.previousToken.range[1]],scope:r.currentScope})}return r.parseIsa(e,n)}parseIsa(e=!1,n=!1){let r=this,i=r.token,s=r.parseComparisons(e,n);if(X.Selectors.Isa(r.token)){r.next(),r.skipNewlines();let o=r.parseComparisons();return r.astProvider.isaExpression({operator:ui.Operator.Isa,left:s,right:o,start:i.start,end:r.previousToken.end,range:[i.range[0],r.previousToken.range[1]],scope:r.currentScope})}return s}parseComparisons(e=!1,n=!1){let r=this,i=r.token,s=r.parseAddSub(e,n);if(!X.SelectorGroups.ComparisonOperators(r.token))return s;let o=[s],a=[];do{let u=r.token;r.next(),r.skipNewlines();let c=r.parseAddSub();a.push(u.value),o.push(c)}while(X.SelectorGroups.ComparisonOperators(r.token));return a.length===1?r.astProvider.binaryExpression({operator:a[0],left:o[0],right:o[1],start:i.start,end:r.previousToken.end,range:[i.range[0],r.previousToken.range[1]],scope:r.currentScope}):r.astProvider.comparisonGroupExpression({operators:a,expressions:o,start:i.start,end:r.previousToken.end,range:[i.range[0],r.previousToken.range[1]],scope:r.currentScope})}parseAddSub(e=!1,n=!1){let r=this,i=r.token,o=r.parseMultDiv(e,n);for(;X.Selectors.Plus(r.token)||X.Selectors.Minus(r.token)&&(!n||!r.token.afterSpace||r.lexer.isAtWhitespace());){let a=r.token;r.next(),r.skipNewlines();let u=r.parseMultDiv();o=r.astProvider.binaryExpression({operator:a.value,left:o,right:u,start:i.start,end:r.previousToken.end,range:[i.range[0],r.previousToken.range[1]],scope:r.currentScope})}return o}parseMultDiv(e=!1,n=!1){let r=this,i=r.token,o=r.parseUnaryMinus(e,n);for(;X.SelectorGroups.MultiDivOperators(r.token);){let a=r.token;r.next(),r.skipNewlines();let u=r.parseUnaryMinus();o=r.astProvider.binaryExpression({operator:a.value,left:o,right:u,start:i.start,end:r.previousToken.end,range:[i.range[0],r.previousToken.range[1]],scope:r.currentScope})}return o}parseUnaryMinus(e=!1,n=!1){let r=this;if(!X.Selectors.Minus(r.token))return r.parseNew(e,n);let i=r.token;r.next(),r.skipNewlines();let s=r.parseNew();return s instanceof In.ASTNumericLiteral||s instanceof In.ASTBooleanLiteral?(s.negated=!0,s):r.astProvider.unaryExpression({operator:ui.Operator.Minus,argument:s,start:i.start,end:r.previousToken.end,range:[i.range[0],r.previousToken.range[1]],scope:r.currentScope})}parseNew(e=!1,n=!1){let r=this;if(!X.Selectors.New(r.token))return r.parseAddressOf(e,n);let i=r.token;r.next(),r.skipNewlines();let s=r.parseNew();return r.astProvider.unaryExpression({operator:ui.Operator.New,argument:s,start:i.start,end:r.previousToken.end,range:[i.range[0],r.previousToken.range[1]],scope:r.currentScope})}parseAddressOf(e=!1,n=!1){let r=this;if(!X.Selectors.Reference(r.token))return r.parsePower(e,n);let i=r.token;r.next(),r.skipNewlines();let s=r.parsePower(!0,n);return r.astProvider.unaryExpression({operator:ui.Operator.Reference,argument:s,start:i.start,end:r.previousToken.end,range:[i.range[0],r.previousToken.range[1]],scope:r.currentScope})}parsePower(e=!1,n=!1){let r=this,i=r.token,s=r.parseCallExpr(e,n);if(X.Selectors.Power(r.token)){r.next(),r.skipNewlines();let o=r.parseCallExpr();return r.astProvider.binaryExpression({operator:ui.Operator.Power,left:s,right:o,start:i.start,end:r.previousToken.end,range:[i.range[0],r.previousToken.range[1]],scope:r.currentScope})}return s}parseCallExpr(e=!1,n=!1){let r=this,i=r.token,s=r.parseMap(e,n);for(;!X.Selectors.EndOfFile(r.token);)if(X.Selectors.MemberSeperator(r.token)){r.next(),r.skipNewlines();let o=r.parseIdentifier(In.ASTIdentifierKind.Property),a=r.astProvider.memberExpression({base:s,indexer:ui.Operator.Member,identifier:o,start:i.start,end:r.previousToken.end,range:[i.range[0],r.previousToken.range[1]],scope:r.currentScope});r.currentScope.namespaces.push(a),s=a}else if(X.Selectors.SLBracket(r.token)&&!r.token.afterSpace){if(r.next(),r.skipNewlines(),X.Selectors.SliceSeperator(r.token)){let o=r.astProvider.emptyExpression({start:r.previousToken.start,end:r.previousToken.end,range:r.previousToken.range,scope:r.currentScope});r.next(),r.skipNewlines();let a=X.Selectors.SRBracket(r.token)?r.astProvider.emptyExpression({start:r.previousToken.start,end:r.previousToken.end,range:r.previousToken.range,scope:r.currentScope}):r.parseExpr(null);s=r.astProvider.sliceExpression({base:s,left:o,right:a,start:i.start,end:r.token.end,range:[i.range[0],r.token.range[1]],scope:r.currentScope})}else{let o=r.parseExpr(null);if(X.Selectors.SliceSeperator(r.token)){r.next(),r.skipNewlines();let a=X.Selectors.SRBracket(r.token)?r.astProvider.emptyExpression({start:r.previousToken.start,end:r.previousToken.end,range:r.previousToken.range,scope:r.currentScope}):r.parseExpr(null);s=r.astProvider.sliceExpression({base:s,left:o,right:a,start:i.start,end:r.token.end,range:[i.range[0],r.token.range[1]],scope:r.currentScope})}else s=r.astProvider.indexExpression({base:s,index:o,isStatementStart:n,start:i.start,end:r.token.end,range:[i.range[0],r.token.range[1]],scope:r.currentScope})}r.requireToken(X.Selectors.SRBracket,i.start)}else if(X.Selectors.LParenthesis(r.token)&&(!e||!r.token.afterSpace)){let o=r.parseCallArgs();s=r.astProvider.callExpression({base:s,arguments:o,start:i.start,end:r.previousToken.end,range:[i.range[0],r.previousToken.range[1]],scope:r.currentScope})}else break;return s}parseCallArgs(){let e=this,n=[];if(X.Selectors.LParenthesis(e.token))if(e.next(),X.Selectors.RParenthesis(e.token))e.next();else for(;!X.Selectors.EndOfFile(e.token);){e.skipNewlines();let r=e.parseExpr(null);if(n.push(r),e.skipNewlines(),X.Selectors.RParenthesis(e.requireTokenOfAny(X.SelectorGroups.CallArgsEnd,r.start)))break}return n}parseMap(e=!1,n=!1){let r=this;if(!X.Selectors.CLBracket(r.token))return r.parseList(e,n);let i=r.currentScope,s=r.token,o=[],a=r.astProvider.mapConstructorExpression({fields:o,start:s.start,end:null,range:[s.range[0],null],scope:i});if(r.next(),X.Selectors.CRBracket(r.token))r.next();else for(r.skipNewlines();!X.Selectors.EndOfFile(r.token);){if(X.Selectors.CRBracket(r.token)){r.next();break}let u=r.astProvider.mapKeyString({key:null,value:null,start:r.token.start,end:null,range:[r.token.range[0],null],scope:i});if(u.key=r.parseExpr(null),r.requireToken(X.Selectors.MapKeyValueSeperator),r.skipNewlines(),u.value=r.parseExpr(u),u.end=r.previousToken.end,u.range[1]=r.previousToken.range[1],o.push(u),X.Selectors.MapSeperator(r.token)&&(r.next(),r.skipNewlines()),X.Selectors.CRBracket(r.token)){r.next();break}}return a.end=r.token.start,a.range[1]=r.token.range[1],a}parseList(e=!1,n=!1){let r=this;if(!X.Selectors.SLBracket(r.token))return r.parseQuantity(e,n);let i=r.currentScope,s=r.token,o=[],a=r.astProvider.listConstructorExpression({fields:o,start:s.start,end:null,range:[s.range[0],null],scope:i});if(r.next(),X.Selectors.SRBracket(r.token))r.next();else for(r.skipNewlines();!X.Selectors.EndOfFile(r.token);){if(X.Selectors.SRBracket(r.token)){r.next();break}let u=r.astProvider.listValue({value:null,start:r.token.start,end:null,range:[r.token.range[0],null],scope:i});if(u.value=r.parseExpr(u),u.end=r.previousToken.end,u.range[1]=r.previousToken.range[1],o.push(u),X.Selectors.MapSeperator(r.token)&&(r.next(),r.skipNewlines()),X.Selectors.SRBracket(r.token)){r.next();break}}return a.end=r.token.start,a.range[1]=r.token.range[1],a}parseQuantity(e=!1,n=!1){let r=this;if(!X.Selectors.LParenthesis(r.token))return r.parseAtom(e,n);let i=r.token;r.next(),r.skipNewlines();let s=r.parseExpr(null);return r.requireToken(X.Selectors.RParenthesis,i.start),r.astProvider.parenthesisExpression({expression:s,start:i.start,end:r.previousToken.end,range:[i.range[0],r.previousToken.range[1]],scope:r.currentScope})}parseAtom(e=!1,n=!1){let r=this;return r.validator.isLiteral(r.token.type)?r.parseLiteral():r.isType(Lo.TokenType.Identifier)?r.parseIdentifier(In.ASTIdentifierKind.Variable):(r.raise(`got ${r.token} where number, string, or identifier is required`,new ln.Range(r.token.start,r.token.end)),r.parseInvalidCode())}parseLiteral(){let e=this,n=e.token,r=e.token.type,i=e.astProvider.literal(r,{value:e.token.value,raw:e.token.raw,start:n.start,end:e.token.end,range:[n.range[0],e.token.range[1]],scope:e.currentScope});return e.literals.push(i),e.next(),i}parseIdentifier(e){let n=this,r=n.requireType(Lo.TokenType.Identifier);if(r===null)return n.parseInvalidCode();let i=n.astProvider.identifier({kind:e,name:r.value,start:r.start,end:r.end,range:r.range,scope:n.currentScope});return e!==In.ASTIdentifierKind.Property&&n.currentScope.namespaces.push(i),i}parseInvalidCode(){let e=this,n=e.token,r=e.astProvider.invalidCodeExpression({start:n.start,end:n.end,range:n.range});return e.next(),r}raise(e,n){let r=this,i=new GM.ParserException(e,n);return r.statementErrors.push(i),i}};ru.default=ab});var ke=m(Re=>{"use strict";var VM=Re&&Re.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),wr=Re&&Re.__exportStar||function(t,e){for(var n in t)n!=="default"&&!Object.prototype.hasOwnProperty.call(e,n)&&VM(e,t,n)},Oh=Re&&Re.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Re,"__esModule",{value:!0});Re.ASTRange=Re.ASTPosition=Re.LineRegistry=Re.ParserValidatorm=Re.Parser=Re.LexerValidator=Re.Lexer=void 0;var XM=Hm();Object.defineProperty(Re,"Lexer",{enumerable:!0,get:function(){return Oh(XM).default}});wr(Fi(),Re);var YM=Mm();Object.defineProperty(Re,"LexerValidator",{enumerable:!0,get:function(){return Oh(YM).default}});var JM=mk();Object.defineProperty(Re,"Parser",{enumerable:!0,get:function(){return Oh(JM).default}});wr(Gy(),Re);var QM=Vy();Object.defineProperty(Re,"ParserValidatorm",{enumerable:!0,get:function(){return Oh(QM).default}});var ZM=ob();Object.defineProperty(Re,"LineRegistry",{enumerable:!0,get:function(){return ZM.LineRegistry}});wr(ib(),Re);wr(Qy(),Re);wr(Bm(),Re);wr(th(),Re);wr(nh(),Re);wr(Ao(),Re);wr(qm(),Re);wr(Oo(),Re);var eL=Ha();Object.defineProperty(Re,"ASTPosition",{enumerable:!0,get:function(){return eL.Position}});var tL=Ya();Object.defineProperty(Re,"ASTRange",{enumerable:!0,get:function(){return tL.Range}});wr(Yy(),Re)});var iu=m(Rh=>{"use strict";Object.defineProperty(Rh,"__esModule",{value:!0});Rh.isValidIdentifierLiteral=void 0;var nL=ke(),rL=t=>{if(t.type!==nL.ASTType.StringLiteral)return!1;let e=t.value.toString();return/^[_a-z][_a-z0-9]*$/i.test(e)};Rh.isValidIdentifierLiteral=rL});var ub=m(Ui=>{"use strict";Object.defineProperty(Ui,"__esModule",{value:!0});Ui.getStringHashCode=Ui.getHashCode=Ui.rotateBits=void 0;function iL(t){return t>>1|t<<31}Ui.rotateBits=iL;function sL(t,e=0){let n=t>>>0;return n=(n>>16^n)*73244475,n=(n>>16^n)*73244475,n=n>>16^n,(e<<5)-e+n|0}Ui.getHashCode=sL;Ui.getStringHashCode=function(){let t=new Map,e=n=>{let r,i;for(r=0,i=0;r<n.length;r++)i=Math.imul(31,i)+n.charCodeAt(r)|0;return i};return n=>{if(n.length===0)return 0;let r=t.get(n);if(r!==void 0)return r;let i=e(n);return t.set(n,i),i}}()});var yk=m(Ph=>{"use strict";Object.defineProperty(Ph,"__esModule",{value:!0});Ph.createExpressionHash=void 0;var ze=ke(),wt=ub(),oL=iu(),Yt=(t,e)=>t.$$hash=e,aL=t=>t.$$hash??null;function st(t){let e=aL(t);if(e!==null)return e;let n=(0,wt.getStringHashCode)(t.type);switch(t.type){case ze.ASTType.BinaryExpression:{let r=t;return n^=(0,wt.getStringHashCode)(r.operator),n^=st(r.left),n^=st(r.right),Yt(t,n)}case ze.ASTType.LogicalExpression:{let r=t;return n^=(0,wt.getStringHashCode)(r.operator),n^=st(r.left),n^=st(r.right),Yt(t,n)}case ze.ASTType.IsaExpression:{let r=t;return n^=(0,wt.getStringHashCode)(r.operator),n^=st(r.left),n^=st(r.right),Yt(t,n)}case ze.ASTType.ComparisonGroupExpression:{let r=t;for(let i=0;i<r.expressions.length;i++)n^=st(r.expressions[i]);for(let i=0;i<r.operators.length;i++)n^=(0,wt.getStringHashCode)(r.operators[i]);return Yt(t,n)}case ze.ASTType.FunctionDeclaration:{let r=t;n^=(0,wt.getHashCode)(r.parameters.length);for(let i=0;i<r.parameters.length;i++){let s=r.parameters[i];if(s.type===ze.ASTType.Identifier){n^=(0,wt.getStringHashCode)(s.name);continue}let o=s;n^=(0,wt.getStringHashCode)(o.variable.name),n^=st(o.init)}return Yt(t,n)}case ze.ASTType.ParenthesisExpression:return st(t.expression);case ze.ASTType.MemberExpression:{let r=t;if(r.base.type===ze.ASTType.Identifier){let i=r.base.name;if(i==="globals"||i==="locals"||i==="outer")return n=(0,wt.getStringHashCode)(ze.ASTType.Identifier),n^=(0,wt.getStringHashCode)(r.identifier.name),Yt(t,n)}return n^=st(r.base),n^=st(r.identifier),Yt(t,n)}case ze.ASTType.IndexExpression:{let r=t;if((0,oL.isValidIdentifierLiteral)(r.index)){if(r.base.type===ze.ASTType.Identifier){let s=r.base.name;if(s==="globals"||s==="locals"||s==="outer")return n=(0,wt.getStringHashCode)(ze.ASTType.Identifier),n^=(0,wt.getStringHashCode)(r.index.value.toString()),Yt(t,n)}n=(0,wt.getStringHashCode)(ze.ASTType.MemberExpression),n^=st(r.base);let i=(0,wt.getStringHashCode)(ze.ASTType.Identifier);i^=(0,wt.getStringHashCode)(r.index.value.toString()),n^=i}else n^=st(r.base),n^=st(r.index);return Yt(t,n)}case ze.ASTType.CallExpression:{let r=t;n^=st(r.base),n^=(0,wt.getHashCode)(r.arguments.length);for(let i=0;i<r.arguments.length;i++){let s=r.arguments[i];n^=st(s)}return Yt(t,n)}case ze.ASTType.NegationExpression:case ze.ASTType.BinaryNegatedExpression:case ze.ASTType.UnaryExpression:{let r=t;return n^=r.operator?(0,wt.getStringHashCode)(r.operator):1,n^=st(r.argument),Yt(t,n)}case ze.ASTType.Identifier:{let r=t;return n^=(0,wt.getStringHashCode)(r.name),Yt(t,n)}case ze.ASTType.BooleanLiteral:case ze.ASTType.NumericLiteral:case ze.ASTType.StringLiteral:case ze.ASTType.NilLiteral:return n^=(0,wt.getStringHashCode)(t.value.toString()),Yt(t,n);case ze.ASTType.MapConstructorExpression:{let r=t;n^=(0,wt.getHashCode)(r.fields.length);for(let i=0;i<r.fields.length;i++){let s=r.fields[i];n^=st(s.key),n^=st(s.value)}return Yt(t,n)}case ze.ASTType.ListConstructorExpression:{let r=t;n^=(0,wt.getHashCode)(r.fields.length);for(let i=0;i<r.fields.length;i++){let s=r.fields[i];n^=st(s.value)}return Yt(t,n)}case ze.ASTType.SliceExpression:{let r=t;return n^=st(r.base),n^=st(r.left),n^=st(r.right),Yt(t,n)}}return Yt(t,n)}function uL(t){return st(t)}Ph.createExpressionHash=uL});var cb=m(Dh=>{"use strict";Object.defineProperty(Dh,"__esModule",{value:!0});Dh.createExpressionId=void 0;var Tt=ke(),cL=iu(),Pt=(t,e)=>t.$$id=e,lL=t=>t.$$id??null;function Qe(t){let e=lL(t);if(e!==null)return e;switch(t.type){case Tt.ASTType.BinaryExpression:{let n=t;return Pt(t,Qe(n.left)+n.operator+Qe(n.right))}case Tt.ASTType.LogicalExpression:{let n=t;return Pt(t,Qe(n.left)+n.operator+Qe(n.right))}case Tt.ASTType.IsaExpression:{let n=t;return Pt(t,Qe(n.left)+n.operator+Qe(n.right))}case Tt.ASTType.ComparisonGroupExpression:{let n=t,r=n.expressions.map(s=>Qe(s)),i=[r[0]];for(let s=0;s<n.operators.length;s++)i.push(n.operators[s],r[s+1]);return Pt(t,i.join(" "))}case Tt.ASTType.FunctionDeclaration:{let n=t,r="function",i=[];for(let s=0;s<n.parameters.length;s++){let o=n.parameters[s];if(o.type===Tt.ASTType.Identifier){i.push(o.name);continue}let a=o;i.push(a.variable.name+"="+Qe(a.init))}return i.length>0&&(r+="("+i.join(",")+")"),Pt(t,r)}case Tt.ASTType.ParenthesisExpression:return Pt(t,Qe(t.expression));case Tt.ASTType.MemberExpression:{let n=t;return Pt(t,Qe(n.base)+"."+n.identifier.name)}case Tt.ASTType.IndexExpression:{let n=t;return(0,cL.isValidIdentifierLiteral)(n.index)?Pt(t,Qe(n.base)+"."+n.index.value.toString()):Pt(t,Qe(n.base)+"["+Qe(n.index)+"]")}case Tt.ASTType.CallExpression:{let n=t,r=Qe(n.base),i=[];for(let s=0;s<n.arguments.length;s++){let o=n.arguments[s];i.push(Qe(o))}return i.length>0&&(r+="("+i.join(",")+")"),Pt(t,r)}case Tt.ASTType.NegationExpression:case Tt.ASTType.BinaryNegatedExpression:case Tt.ASTType.UnaryExpression:{let n=t;return n.operator==null?Pt(t,Qe(n.argument)):n.operator==="@"?Pt(t,n.operator+Qe(n.argument)):Pt(t,n.operator+" "+Qe(n.argument))}case Tt.ASTType.Identifier:return Pt(t,t.name);case Tt.ASTType.NumericLiteral:case Tt.ASTType.BooleanLiteral:case Tt.ASTType.StringLiteral:case Tt.ASTType.NilLiteral:return Pt(t,t.raw.toString());case Tt.ASTType.MapConstructorExpression:{let n=t,r=[];for(let i=0;i<n.fields.length;i++){let s=n.fields[i];r.push(Qe(s.key)+":"+Qe(s.value))}return Pt(t,"{"+r.join(",")+"}")}case Tt.ASTType.ListConstructorExpression:{let n=t,r=[];for(let i=0;i<n.fields.length;i++){let s=n.fields[i];r.push(Qe(s.value))}return Pt(t,"["+r.join(",")+"]")}case Tt.ASTType.SliceExpression:{let n=t;return Pt(t,Qe(n.base)+"["+Qe(n.left)+":"+Qe(n.right)+"]")}}return Pt(t,"")}function hL(t){return Qe(t)}Dh.createExpressionId=hL});var No=m(su=>{"use strict";Object.defineProperty(su,"__esModule",{value:!0});su.Markers=void 0;var dL;(function(t){t.start="/**",t.nostart="/***",t.delim="*",t.end="*/"})(dL=su.Markers||(su.Markers={}))});var Tr=m(gt=>{"use strict";Object.defineProperty(gt,"__esModule",{value:!0});gt.rewireSpecs=gt.rewireSource=gt.seedTokens=gt.seedSpec=gt.seedBlock=gt.splitLines=gt.splitSpace=gt.splitCR=gt.hasCR=gt.isSpace=void 0;function fL(t){return/^\s+$/.test(t)}gt.isSpace=fL;function pL(t){return/\r$/.test(t)}gt.hasCR=pL;function gL(t){let e=t.match(/\r+$/);return e==null?["",t]:[t.slice(-e[0].length),t.slice(0,-e[0].length)]}gt.splitCR=gL;function mL(t){let e=t.match(/^\s+/);return e==null?["",t]:[t.slice(0,e[0].length),t.slice(e[0].length)]}gt.splitSpace=mL;function yL(t){return t.split(/\n/)}gt.splitLines=yL;function bL(t={}){return Object.assign({description:"",tags:[],source:[],problems:[]},t)}gt.seedBlock=bL;function _L(t={}){return Object.assign({tag:"",name:"",type:"",optional:!1,description:"",problems:[],source:[]},t)}gt.seedSpec=_L;function vL(t={}){return Object.assign({start:"",delimiter:"",postDelimiter:"",tag:"",postTag:"",name:"",postName:"",type:"",postType:"",description:"",end:"",lineEnd:""},t)}gt.seedTokens=vL;function SL(t){let e=t.source.reduce((n,r)=>n.set(r.number,r),new Map);for(let n of t.tags)n.source=n.source.map(r=>e.get(r.number));return t}gt.rewireSource=SL;function wL(t){let e=t.tags.reduce((n,r)=>r.source.reduce((i,s)=>i.set(s.number,s),n),new Map);return t.source=t.source.map(n=>e.get(n.number)||n),t}gt.rewireSpecs=wL});var bk=m(lb=>{"use strict";Object.defineProperty(lb,"__esModule",{value:!0});var TL=/^@\S+/;function EL({fence:t="```"}={}){let e=xL(t),n=(r,i)=>e(r)?!i:i;return function(i){let s=[[]],o=!1;for(let a of i)TL.test(a.tokens.description)&&!o?s.push([a]):s[s.length-1].push(a),o=n(a.tokens.description,o);return s}}lb.default=EL;function xL(t){return typeof t=="string"?e=>e.split(t).length%2===0:t}});var _k=m(hb=>{"use strict";Object.defineProperty(hb,"__esModule",{value:!0});var kL=No(),ou=Tr();function AL({startLine:t=0,markers:e=kL.Markers}={}){let n=null,r=t;return function(s){let o=s,a=(0,ou.seedTokens)();if([a.lineEnd,o]=(0,ou.splitCR)(o),[a.start,o]=(0,ou.splitSpace)(o),n===null&&o.startsWith(e.start)&&!o.startsWith(e.nostart)&&(n=[],a.delimiter=o.slice(0,e.start.length),o=o.slice(e.start.length),[a.postDelimiter,o]=(0,ou.splitSpace)(o)),n===null)return r++,null;let u=o.trimRight().endsWith(e.end);if(a.delimiter===""&&o.startsWith(e.delim)&&!o.startsWith(e.end)&&(a.delimiter=e.delim,o=o.slice(e.delim.length),[a.postDelimiter,o]=(0,ou.splitSpace)(o)),u){let c=o.trimRight();a.end=o.slice(c.length-e.end.length),o=c.slice(0,-e.end.length)}if(a.description=o,n.push({number:r,source:s,tokens:a}),r++,u){let c=n.slice();return n=null,c}return null}}hb.default=AL});var vk=m(db=>{"use strict";Object.defineProperty(db,"__esModule",{value:!0});var CL=Tr();function OL({tokenizers:t}){return function(n){var r;let i=(0,CL.seedSpec)({source:n});for(let s of t)if(i=s(i),!((r=i.problems[i.problems.length-1])===null||r===void 0)&&r.critical)break;return i}}db.default=OL});var pb=m(fb=>{"use strict";Object.defineProperty(fb,"__esModule",{value:!0});function RL(){return t=>{let{tokens:e}=t.source[0],n=e.description.match(/\s*(@(\S+))(\s*)/);return n===null?(t.problems.push({code:"spec:tag:prefix",message:'tag should start with "@" symbol',line:t.source[0].number,critical:!0}),t):(e.tag=n[1],e.postTag=n[3],e.description=e.description.slice(n[0].length),t.tag=n[2],t)}}fb.default=RL});var mb=m(gb=>{"use strict";Object.defineProperty(gb,"__esModule",{value:!0});var PL=Tr();function DL(t="compact"){let e=ML(t);return n=>{let r=0,i=[];for(let[a,{tokens:u}]of n.source.entries()){let c="";if(a===0&&u.description[0]!=="{")return n;for(let l of u.description)if(l==="{"&&r++,l==="}"&&r--,c+=l,r===0)break;if(i.push([u,c]),r===0)break}if(r!==0)return n.problems.push({code:"spec:type:unpaired-curlies",message:"unpaired curlies",line:n.source[0].number,critical:!0}),n;let s=[],o=i[0][0].postDelimiter.length;for(let[a,[u,c]]of i.entries())u.type=c,a>0&&(u.type=u.postDelimiter.slice(o)+c,u.postDelimiter=u.postDelimiter.slice(0,o)),[u.postType,u.description]=(0,PL.splitSpace)(u.description.slice(c.length)),s.push(u.type);return s[0]=s[0].slice(1),s[s.length-1]=s[s.length-1].slice(0,-1),n.type=e(s),n}}gb.default=DL;var IL=t=>t.trim();function ML(t){return t==="compact"?e=>e.map(IL).join(""):t==="preserve"?e=>e.join(`
|
97
97
|
`):t}});var _b=m(bb=>{"use strict";Object.defineProperty(bb,"__esModule",{value:!0});var yb=Tr(),LL=t=>t&&t.startsWith('"')&&t.endsWith('"');function NL(){let t=(e,{tokens:n},r)=>n.type===""?e:r;return e=>{let{tokens:n}=e.source[e.source.reduce(t,0)],r=n.description.trimLeft(),i=r.split('"');if(i.length>1&&i[0]===""&&i.length%2===1)return e.name=i[1],n.name=`"${i[1]}"`,[n.postName,n.description]=(0,yb.splitSpace)(r.slice(n.name.length)),e;let s=0,o="",a=!1,u;for(let l of r){if(s===0&&(0,yb.isSpace)(l))break;l==="["&&s++,l==="]"&&s--,o+=l}if(s!==0)return e.problems.push({code:"spec:name:unpaired-brackets",message:"unpaired brackets",line:e.source[0].number,critical:!0}),e;let c=o;if(o[0]==="["&&o[o.length-1]==="]"){a=!0,o=o.slice(1,-1);let l=o.split("=");if(o=l[0].trim(),l[1]!==void 0&&(u=l.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(!LL(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=a,e.name=o,n.name=c,u!==void 0&&(e.default=u),[n.postName,n.description]=(0,yb.splitSpace)(r.slice(n.name.length)),e}}bb.default=NL});var Sb=m(au=>{"use strict";Object.defineProperty(au,"__esModule",{value:!0});au.getJoiner=void 0;var vb=No();function qL(t="compact",e=vb.Markers){let n=Sk(t);return r=>(r.description=n(r.source,e),r)}au.default=qL;function Sk(t){return t==="compact"?jL:t==="preserve"?BL:t}au.getJoiner=Sk;function jL(t,e=vb.Markers){return t.map(({tokens:{description:n}})=>n.trim()).filter(n=>n!=="").join(" ")}var FL=(t,{tokens:e},n)=>e.type===""?t:n,$L=({tokens:t})=>(t.delimiter===""?t.start:t.postDelimiter.slice(1))+t.description;function BL(t,e=vb.Markers){if(t.length===0)return"";t[0].tokens.description===""&&t[0].tokens.delimiter===e.start&&(t=t.slice(1));let n=t[t.length-1];return n!==void 0&&n.tokens.description===""&&n.tokens.end.endsWith(e.end)&&(t=t.slice(0,-1)),t=t.slice(t.reduce(FL,0)),t.map($L).join(`
|
98
98
|
`)}});var Tk=m(wb=>{"use strict";Object.defineProperty(wb,"__esModule",{value:!0});var WL=No(),UL=Tr(),HL=bk(),GL=_k(),zL=vk(),KL=pb(),VL=mb(),XL=_b(),wk=Sb();function YL({startLine:t=0,fence:e="```",spacing:n="compact",markers:r=WL.Markers,tokenizers:i=[(0,KL.default)(),(0,VL.default)(n),(0,XL.default)(),(0,wk.default)(n)]}={}){if(t<0||t%1>0)throw new Error("Invalid startLine");let s=(0,GL.default)({startLine:t,markers:r}),o=(0,HL.default)({fence:e}),a=(0,zL.default)({tokenizers:i}),u=(0,wk.getJoiner)(n);return function(c){let l=[];for(let h of(0,UL.splitLines)(c)){let d=s(h);if(d===null)continue;let g=o(d),y=g.slice(1).map(a);l.push({description:u(g[0],r),tags:y,source:d,problems:y.reduce((_,C)=>_.concat(C.problems),[])})}return l}}wb.default=YL});var Ek=m(Tb=>{"use strict";Object.defineProperty(Tb,"__esModule",{value:!0});function JL(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 QL(){return t=>t.source.map(({tokens:e})=>JL(e)).join(`
|
99
99
|
`)}Tb.default=QL});var kk=m(uu=>{"use strict";var ZL=uu&&uu.__rest||function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,r=Object.getOwnPropertySymbols(t);i<r.length;i++)e.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(t,r[i])&&(n[r[i]]=t[r[i]]);return n};Object.defineProperty(uu,"__esModule",{value:!0});var xk=No(),eN=Tr(),tN={start:0,tag:0,type:0,name:0},nN=(t=xk.Markers)=>(e,{tokens:n})=>({start:n.delimiter===t.start?n.start.length:e.start,tag:Math.max(e.tag,n.tag.length),type:Math.max(e.type,n.type.length),name:Math.max(e.name,n.name.length)}),ws=t=>"".padStart(t," ");function rN(t=xk.Markers){let e=!1,n;function r(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=ws(n.start+1),Object.assign(Object.assign({},i),{tokens:s});switch(s.delimiter){case t.start:s.start=ws(n.start);break;case t.delim:s.start=ws(n.start+1);break;default:s.delimiter="",s.start=ws(n.start+2)}if(!e)return s.postDelimiter=s.description===""?"":" ",Object.assign(Object.assign({},i),{tokens:s});let a={delim:!1,tag:!1,type:!1,name:!1};return s.description===""&&(a.name=!0,s.postName="",s.name===""&&(a.type=!0,s.postType="",s.type===""&&(a.tag=!0,s.postTag="",s.tag===""&&(a.delim=!0)))),s.postDelimiter=a.delim?"":" ",a.tag||(s.postTag=ws(n.tag-s.tag.length+1)),a.type||(s.postType=ws(n.type-s.type.length+1)),a.name||(s.postName=ws(n.name-s.name.length+1)),Object.assign(Object.assign({},i),{tokens:s})}return i=>{var{source:s}=i,o=ZL(i,["source"]);return n=s.reduce(nN(t),Object.assign({},tN)),(0,eN.rewireSource)(Object.assign(Object.assign({},o),{source:s.map(r)}))}}uu.default=rN});var Ak=m(cu=>{"use strict";var iN=cu&&cu.__rest||function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,r=Object.getOwnPropertySymbols(t);i<r.length;i++)e.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(t,r[i])&&(n[r[i]]=t[r[i]]);return n};Object.defineProperty(cu,"__esModule",{value:!0});var sN=Tr(),oN=t=>e=>e.slice(t),aN=t=>{let e="".padStart(t," ");return n=>n+e};function uN(t){let e,n=i=>{if(e===void 0){let s=t-i.length;e=s>0?aN(s):oN(-s)}return e(i)},r=i=>Object.assign(Object.assign({},i),{tokens:Object.assign(Object.assign({},i.tokens),{start:n(i.tokens.start)})});return i=>{var{source:s}=i,o=iN(i,["source"]);return(0,sN.rewireSource)(Object.assign(Object.assign({},o),{source:s.map(r)}))}}cu.default=uN});var Ck=m(lu=>{"use strict";var cN=lu&&lu.__rest||function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,r=Object.getOwnPropertySymbols(t);i<r.length;i++)e.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(t,r[i])&&(n[r[i]]=t[r[i]]);return n};Object.defineProperty(lu,"__esModule",{value:!0});var lN=Tr();function hN(t){function e(n){return Object.assign(Object.assign({},n),{tokens:Object.assign(Object.assign({},n.tokens),{lineEnd:t==="LF"?"":"\r"})})}return n=>{var{source:r}=n,i=cN(n,["source"]);return(0,lN.rewireSource)(Object.assign(Object.assign({},i),{source:r.map(e)}))}}lu.default=hN});var Ok=m(Ih=>{"use strict";Object.defineProperty(Ih,"__esModule",{value:!0});Ih.flow=void 0;function dN(...t){return e=>t.reduce((n,r)=>r(n),e)}Ih.flow=dN});var Ik=m(xb=>{"use strict";Object.defineProperty(xb,"__esModule",{value:!0});var fN=Tr(),Pk={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},Rk={lineEnd:"CR"},Eb=Object.keys(Pk),Dk=t=>(0,fN.isSpace)(t)?`{${t.length}}`:t,pN=t=>"|"+t.join("|")+"|",gN=(t,e)=>Object.keys(e).map(n=>Dk(e[n]).padEnd(t[n]));function mN({source:t}){var e,n;if(t.length===0)return"";let r=Object.assign({},Pk);for(let s of Eb)r[s]=((e=Rk[s])!==null&&e!==void 0?e:s).length;for(let{number:s,tokens:o}of t){r.line=Math.max(r.line,s.toString().length);for(let a in o)r[a]=Math.max(r[a],Dk(o[a]).length)}let i=[[],[]];for(let s of Eb)i[0].push(((n=Rk[s])!==null&&n!==void 0?n:s).padEnd(r[s]));for(let s of Eb)i[1].push("-".padEnd(r[s],"-"));for(let{number:s,tokens:o}of t){let a=s.toString().padStart(r.line);i.push([a,...gN(r,o)])}return i.map(pN).join(`
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "miniscript-languageserver",
|
3
|
-
"version": "1.9.
|
3
|
+
"version": "1.9.1",
|
4
4
|
"description": "Language server for MiniScript",
|
5
5
|
"main": "./index.js",
|
6
6
|
"scripts": {
|
@@ -68,10 +68,10 @@
|
|
68
68
|
},
|
69
69
|
"dependencies": {
|
70
70
|
"glob": "^11.0.0",
|
71
|
-
"greybel-core": "~2.5.
|
72
|
-
"greybel-transpiler": "~3.6.
|
71
|
+
"greybel-core": "~2.5.1",
|
72
|
+
"greybel-transpiler": "~3.6.1",
|
73
73
|
"miniscript-languageserver-core": "^1.8.0",
|
74
74
|
"miniscript-meta": "~1.3.1",
|
75
|
-
"miniscript-type-analyzer": "~0.20.
|
75
|
+
"miniscript-type-analyzer": "~0.20.1"
|
76
76
|
}
|
77
77
|
}
|