@arcgis/arcade-languageservice 4.29.0-beta.48 → 4.29.0-beta.49

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.
Files changed (2) hide show
  1. package/dist/esm/index.js +12 -12
  2. package/package.json +3 -3
package/dist/esm/index.js CHANGED
@@ -1,12 +1,12 @@
1
- function he(e){return!!e&&e.type!=="dictionary"}function Oe(e){return e?.type==="dictionary"}var ge=(e=>(e.False="false",e.Null="null",e.True="true",e))(ge||{}),xe=(e=>(e.Break="break",e.Continue="continue",e.Else="else",e.For="for",e.From="from",e.Function="function",e.If="if",e.Import="import",e.Export="export",e.In="in",e.Return="return",e.Var="var",e.While="while",e))(xe||{}),c=(e=>(e.AssignmentExpression="AssignmentExpression",e.ArrayExpression="ArrayExpression",e.BlockComment="BlockComment",e.BlockStatement="BlockStatement",e.BinaryExpression="BinaryExpression",e.BreakStatement="BreakStatement",e.CallExpression="CallExpression",e.ContinueStatement="ContinueStatement",e.EmptyStatement="EmptyStatement",e.ExpressionStatement="ExpressionStatement",e.ExportNamedDeclaration="ExportNamedDeclaration",e.ExportSpecifier="ExportSpecifier",e.ForStatement="ForStatement",e.ForInStatement="ForInStatement",e.FunctionDeclaration="FunctionDeclaration",e.Identifier="Identifier",e.IfStatement="IfStatement",e.ImportDeclaration="ImportDeclaration",e.ImportDefaultSpecifier="ImportDefaultSpecifier",e.LineComment="LineComment",e.Literal="Literal",e.LogicalExpression="LogicalExpression",e.MemberExpression="MemberExpression",e.ObjectExpression="ObjectExpression",e.Program="Program",e.Property="Property",e.ReturnStatement="ReturnStatement",e.TemplateElement="TemplateElement",e.TemplateLiteral="TemplateLiteral",e.UnaryExpression="UnaryExpression",e.UpdateExpression="UpdateExpression",e.VariableDeclaration="VariableDeclaration",e.VariableDeclarator="VariableDeclarator",e.WhileStatement="WhileStatement",e))(c||{}),De=["++","--"],We=["-","+","!","~"],qe=["=","/=","*=","%=","+=","-="],He=["||","&&"],bt=["|","&",">>","<<",">>>","^","==","!=","<","<=",">",">=","+","-","*","/","%"],Q={"||":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":10,"/":10,"%":10},It=(e=>(e[e.Unknown=0]="Unknown",e[e.BooleanLiteral=1]="BooleanLiteral",e[e.EOF=2]="EOF",e[e.Identifier=3]="Identifier",e[e.Keyword=4]="Keyword",e[e.NullLiteral=5]="NullLiteral",e[e.NumericLiteral=6]="NumericLiteral",e[e.Punctuator=7]="Punctuator",e[e.StringLiteral=8]="StringLiteral",e[e.Template=10]="Template",e))(It||{}),Ge=["Unknown","Boolean","<end>","Identifier","Keyword","Null","Numeric","Punctuator","String","RegularExpression","Template"],kt=(e=>(e.InvalidModuleUri="InvalidModuleUri",e.ForInOfLoopInitializer="ForInOfLoopInitializer",e.IdentiferExpected="IdentiferExpected",e.InvalidEscapedReservedWord="InvalidEscapedReservedWord",e.InvalidExpression="InvalidExpression",e.InvalidFunctionIdentifier="InvalidFunctionIdentifier",e.InvalidHexEscapeSequence="InvalidHexEscapeSequence",e.InvalidLeftHandSideInAssignment="InvalidLeftHandSideInAssignment",e.InvalidLeftHandSideInForIn="InvalidLeftHandSideInForIn",e.InvalidTemplateHead="InvalidTemplateHead",e.InvalidVariableAssignment="InvalidVariableAssignment",e.KeyMustBeString="KeyMustBeString",e.NoFunctionInsideBlock="NoFunctionInsideBlock",e.NoFunctionInsideFunction="NoFunctionInsideFunction",e.ModuleExportRootOnly="ModuleExportRootOnly",e.ModuleImportRootOnly="ModuleImportRootOnly",e.PunctuatorExpected="PunctuatorExpected",e.TemplateOctalLiteral="TemplateOctalLiteral",e.UnexpectedBoolean="UnexpectedBoolean",e.UnexpectedEndOfScript="UnexpectedEndOfScript",e.UnexpectedIdentifier="UnexpectedIdentifier",e.UnexpectedKeyword="UnexpectedKeyword",e.UnexpectedNull="UnexpectedNull",e.UnexpectedNumber="UnexpectedNumber",e.UnexpectedPunctuator="UnexpectedPunctuator",e.UnexpectedString="UnexpectedString",e.UnexpectedTemplate="UnexpectedTemplate",e.UnexpectedToken="UnexpectedToken",e))(kt||{}),j={InvalidModuleUri:"Module uri must be a text literal.",ForInOfLoopInitializer:"for-in loop variable declaration may not have an initializer.",IdentiferExpected:"'${value}' is an invalid identifier.",InvalidEscapedReservedWord:"Keyword cannot contain escaped characters.",InvalidExpression:"Invalid expression.",InvalidFunctionIdentifier:"'${value}' is an invalid function identifier.",InvalidHexEscapeSequence:"Invalid hexadecimal escape sequence.",InvalidLeftHandSideInAssignment:"Invalid left-hand side in assignment.",InvalidLeftHandSideInForIn:"Invalid left-hand side in for-in.",InvalidTemplateHead:"Invalid template structure.",InvalidVariableAssignment:"Invalid variable assignment.",KeyMustBeString:"Object property keys must be a word starting with a letter.",NoFunctionInsideBlock:"Functions cannot be declared inside of code blocks.",NoFunctionInsideFunction:"Functions cannot be declared inside another function.",ModuleExportRootOnly:"Module exports cannot be declared inside of code blocks.",ModuleImportRootOnly:"Module import cannot be declared inside of code blocks.",PunctuatorExpected:"'${value}' expected.",TemplateOctalLiteral:"Octal literals are not allowed in template literals.",UnexpectedBoolean:"Unexpected boolean literal.",UnexpectedEndOfScript:"Unexpected end of Arcade expression.",UnexpectedIdentifier:"Unexpected identifier.",UnexpectedKeyword:"Unexpected keyword.",UnexpectedNull:"Unexpected null literal.",UnexpectedNumber:"Unexpected number.",UnexpectedPunctuator:"Unexpected ponctuator.",UnexpectedString:"Unexpected text literal.",UnexpectedTemplate:"Unexpected quasi '${value}'.",UnexpectedToken:"Unexpected token '${value}'."},J=class Je extends Error{constructor({code:t,index:i,line:r,column:n,len:s=0,description:a,data:o}){super(`${a??t}`),this.declaredRootClass="esri.arcade.lib.diagnostic",this.name="ParsingError",this.code=t,this.index=i,this.line=r,this.column=n,this.len=s,this.data=o,this.description=a,this.range={start:{line:r,column:n-1},end:{line:r,column:n+s}},Error.captureStackTrace?.(this,Je)}};function Bt(e){return e?.type==="Program"}function x(e){return e?.type==="BlockStatement"}function Lt(e){return e?.type==="BlockComment"}function R(e){return e?.type==="EmptyStatement"}function Qe(e){return e?.type==="ExpressionStatement"}function Ce(e){return e?.type==="FunctionDeclaration"}function X(e){return e?.type==="IfStatement"}function N(e){return e?.type==="VariableDeclaration"}function _(e){return e?.type==="ArrayExpression"}function $(e){return e?.type==="BinaryExpression"}function C(e){return e?.type==="Identifier"}function Ee(e){return e?.type==="Literal"}function K(e){return e?.type==="LogicalExpression"}function Fe(e){return e?.type==="ObjectExpression"}function Ae(e){return e?.type==="MemberExpression"}function Xe(e){return e?.type==="UnaryExpression"}function Ze(e){return e?.type==="UpdateExpression"}function ye(e){return e?.type==="VariableDeclarator"}function Ye(e){return e?.type==="Property"}function de(e,t){return t?t.loc.end.line===e.loc.start.line&&t.loc.end.column<=e.loc.start.column:!1}function Ve(e,t){return e.range[0]>=t.range[0]&&e.range[1]<=t.range[1]}var vt=class{constructor(){this.comments=[],this._nodeStack=[],this._newComments=[]}insertInnerComments(e){if(!x(e)||e.body.length!==0)return;let t=[];for(let i=this._newComments.length-1;i>=0;--i){let r=this._newComments[i];e.range[1]>=r.range[0]&&(t.unshift(r),this._newComments.splice(i,1))}t.length&&(e.innerComments=t)}attachTrailingComments(e){if(!e)return;let t=this._nodeStack[this._nodeStack.length-1];if(x(e)&&Ve(t,e))for(let r=this._newComments.length-1;r>=0;--r){let n=this._newComments[r];Ve(n,e)&&(t.trailingComments=[...t.trailingComments??[],n],this._newComments.splice(r,1))}let i=[];if(this._newComments.length>0)for(let r=this._newComments.length-1;r>=0;--r){let n=this._newComments[r];de(n,t)?(t.trailingComments=[...t.trailingComments??[],n],this._newComments.splice(r,1)):de(n,e)&&(i.unshift(n),this._newComments.splice(r,1))}if(t?.trailingComments){let r=t.trailingComments[0];de(r,e)&&(i=[...i,...t.trailingComments],delete t.trailingComments)}i.length>0&&(e.trailingComments=i)}attachLeadingComments(e){if(!e)return;let t;for(;this._nodeStack.length>0;){let n=this._nodeStack[this._nodeStack.length-1];if(e.range[0]<=n.range[0]){t=n,this._nodeStack.pop();continue}break}let i=[],r=[];if(t!=null){if(!t.leadingComments)return;for(let n=t.leadingComments.length-1;n>=0;--n){let s=t.leadingComments[n];if(e.range[0]>=s.range[1]){i.unshift(s),t.leadingComments.splice(n,1);continue}ye(e)&&!Lt(s)&&(r.unshift(s),t.leadingComments.splice(n,1))}t.leadingComments?.length===0&&delete t.leadingComments,i.length&&(e.leadingComments=i),r.length&&(e.trailingComments=[...r,...e.trailingComments??[]]);return}for(let n=this._newComments.length-1;n>=0;--n){let s=this._newComments[n];e.range[0]>=s.range[0]&&(i.unshift(s),this._newComments.splice(n,1))}i.length&&(e.leadingComments=i)}attachComments(e){if(Bt(e)&&e.body.length>0){let t=this._nodeStack[this._nodeStack.length-1];if(t){t.trailingComments=[...t.trailingComments??[],...this._newComments],this._newComments.length=0,this._nodeStack.pop();return}e.trailingComments=[...this._newComments],this._newComments.length=0;return}this.attachTrailingComments(e),this.attachLeadingComments(e),this.insertInnerComments(e),this._nodeStack.push(e)}collectComment(e){this.comments.push(e),this._newComments.push(e)}};function fe(e,t){let i=j[e];return t?i.replace(/\${(.*?)}/g,(r,n)=>t[n]?.toString()??""):i}var et=class{constructor(e=!1){this.tolerant=e,this.errors=[]}recordError(e){this.errors.push(e)}tolerate(e){if(this.tolerant)this.recordError(e);else throw e}throwError(e){throw e.description=e.description??fe(e.code,e.data),new J(e)}tolerateError(e){e.description=e.description??fe(e.code,e.data);let t=new J(e);if(this.tolerant)this.recordError(t);else throw t}};function ze(e,t){if(!e)throw new Error("ASSERT: "+t)}var je={NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEF\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7C6\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB67\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDEC0-\uDEEB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,NonAsciiIdentifierPart:/[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05EF-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u07FD\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D3-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u09FE\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1878\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CD0-\u1CD2\u1CD4-\u1CFA\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEF\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7C6\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB67\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD27\uDD30-\uDD39\uDF00-\uDF1C\uDF27\uDF30-\uDF50\uDFE0-\uDFF6]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD44-\uDD46\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDC9-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3B-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC5E\uDC5F\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDC00-\uDC3A\uDCA0-\uDCE9\uDCFF\uDDA0-\uDDA7\uDDAA-\uDDD7\uDDDA-\uDDE1\uDDE3\uDDE4\uDE00-\uDE3E\uDE47\uDE50-\uDE99\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD8E\uDD90\uDD91\uDD93-\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF6]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF4F-\uDF87\uDF8F-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A\uDD00-\uDD2C\uDD30-\uDD3D\uDD40-\uDD49\uDD4E\uDEC0-\uDEF9]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4B\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/},h={fromCodePoint(e){return e<65536?String.fromCharCode(e):String.fromCharCode(55296+(e-65536>>10))+String.fromCharCode(56320+(e-65536&1023))},isWhiteSpace(e){return e===32||e===9||e===11||e===12||e===160||e>=5760&&[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].includes(e)},isLineTerminator(e){return e===10||e===13||e===8232||e===8233},isIdentifierStart(e){return e===36||e===95||e>=65&&e<=90||e>=97&&e<=122||e===92||e>=128&&je.NonAsciiIdentifierStart.test(h.fromCodePoint(e))},isIdentifierPart(e){return e===36||e===95||e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||e===92||e>=128&&je.NonAsciiIdentifierPart.test(h.fromCodePoint(e))},isDecimalDigit(e){return e>=48&&e<=57},isHexDigit(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102},isOctalDigit(e){return e>=48&&e<=55}};function Re(e){return"0123456789abcdef".indexOf(e.toLowerCase())}function me(e){return"01234567".indexOf(e)}var v=[[],[],[]];De.forEach(e=>v[e.length-1].push(e));We.forEach(e=>v[e.length-1].push(e));He.forEach(e=>v[e.length-1].push(e));qe.forEach(e=>v[e.length-1].push(e));bt.forEach(e=>v[e.length-1].push(e));var tt=class{constructor(e,t){this.source=e,this.errorHandler=t,this._length=e.length,this.index=0,this.lineNumber=1,this.lineStart=0,this.curlyStack=[]}saveState(){return{index:this.index,lineNumber:this.lineNumber,lineStart:this.lineStart,curlyStack:this.curlyStack.slice()}}restoreState(e){this.index=e.index,this.lineNumber=e.lineNumber,this.lineStart=e.lineStart,this.curlyStack=e.curlyStack}eof(){return this.index>=this._length}throwUnexpectedToken(e="UnexpectedToken"){this.errorHandler.throwError({code:e,index:this.index,line:this.lineNumber,column:this.index-this.lineStart+1,data:{value:this.source.charAt(this.index)}})}tolerateUnexpectedToken(e="UnexpectedToken"){this.errorHandler.tolerateError({code:e,index:this.index,line:this.lineNumber,column:this.index-this.lineStart+1})}skipSingleLineComment(e){let t=[],i=this.index-e,r={start:{line:this.lineNumber,column:this.index-this.lineStart-e},end:{line:0,column:0}};for(;!this.eof();){let n=this.source.charCodeAt(this.index);if(++this.index,h.isLineTerminator(n)){if(r){r.end={line:this.lineNumber,column:this.index-this.lineStart-1};let s={multiLine:!1,start:i+e,end:this.index-1,range:[i,this.index-1],loc:r};t.push(s)}return n===13&&this.source.charCodeAt(this.index)===10&&++this.index,++this.lineNumber,this.lineStart=this.index,t}}if(r){r.end={line:this.lineNumber,column:this.index-this.lineStart};let n={multiLine:!1,start:i+e,end:this.index,range:[i,this.index],loc:r};t.push(n)}return t}skipMultiLineComment(){let e=[],t=this.index-2,i={start:{line:this.lineNumber,column:this.index-this.lineStart-2},end:{line:0,column:0}};for(;!this.eof();){let r=this.source.charCodeAt(this.index);if(h.isLineTerminator(r))r===13&&this.source.charCodeAt(this.index+1)===10&&++this.index,++this.lineNumber,++this.index,this.lineStart=this.index;else if(r===42){if(this.source.charCodeAt(this.index+1)===47){if(this.index+=2,i){i.end={line:this.lineNumber,column:this.index-this.lineStart};let n={multiLine:!0,start:t+2,end:this.index-2,range:[t,this.index],loc:i};e.push(n)}return e}++this.index}else++this.index}if(i){i.end={line:this.lineNumber,column:this.index-this.lineStart};let r={multiLine:!0,start:t+2,end:this.index,range:[t,this.index],loc:i};e.push(r)}return this.tolerateUnexpectedToken(),e}scanComments(){let e=[];for(;!this.eof();){let t=this.source.charCodeAt(this.index);if(h.isWhiteSpace(t))++this.index;else if(h.isLineTerminator(t))++this.index,t===13&&this.source.charCodeAt(this.index)===10&&++this.index,++this.lineNumber,this.lineStart=this.index;else if(t===47)if(t=this.source.charCodeAt(this.index+1),t===47){this.index+=2;let i=this.skipSingleLineComment(2);e=[...e,...i]}else if(t===42){this.index+=2;let i=this.skipMultiLineComment();e=[...e,...i]}else break;else break}return e}isKeyword(e){switch(e=e.toLowerCase(),e.length){case 2:return e==="if"||e==="in";case 3:return e==="var"||e==="for";case 4:return e==="else";case 5:return e==="break"||e==="while";case 6:return e==="return"||e==="import"||e==="export";case 8:return e==="function"||e==="continue";default:return!1}}codePointAt(e){let t=this.source.charCodeAt(e);if(t>=55296&&t<=56319){let i=this.source.charCodeAt(e+1);i>=56320&&i<=57343&&(t=(t-55296)*1024+i-56320+65536)}return t}scanHexEscape(e){let t=e==="u"?4:2,i=0;for(let r=0;r<t;++r)if(!this.eof()&&h.isHexDigit(this.source.charCodeAt(this.index)))i=i*16+Re(this.source[this.index++]);else return null;return String.fromCharCode(i)}scanUnicodeCodePointEscape(){let e=this.source[this.index],t=0;for(e==="}"&&this.throwUnexpectedToken();!this.eof()&&(e=this.source[this.index++],!!h.isHexDigit(e.charCodeAt(0)));)t=t*16+Re(e);return(t>1114111||e!=="}")&&this.throwUnexpectedToken(),h.fromCodePoint(t)}getIdentifier(){let e=this.index++;for(;!this.eof();){let t=this.source.charCodeAt(this.index);if(t===92)return this.index=e,this.getComplexIdentifier();if(t>=55296&&t<57343)return this.index=e,this.getComplexIdentifier();if(h.isIdentifierPart(t))++this.index;else break}return this.source.slice(e,this.index)}getComplexIdentifier(){let e=this.codePointAt(this.index),t=h.fromCodePoint(e);this.index+=t.length;let i;for(e===92&&(this.source.charCodeAt(this.index)!==117&&this.throwUnexpectedToken(),++this.index,this.source[this.index]==="{"?(++this.index,i=this.scanUnicodeCodePointEscape()):(i=this.scanHexEscape("u"),(i===null||i==="\\"||!h.isIdentifierStart(i.charCodeAt(0)))&&this.throwUnexpectedToken()),t=i);!this.eof()&&(e=this.codePointAt(this.index),!!h.isIdentifierPart(e));)i=h.fromCodePoint(e),t+=i,this.index+=i.length,e===92&&(t=t.substring(0,t.length-1),this.source.charCodeAt(this.index)!==117&&this.throwUnexpectedToken(),++this.index,this.source[this.index]==="{"?(++this.index,i=this.scanUnicodeCodePointEscape()):(i=this.scanHexEscape("u"),(i===null||i==="\\"||!h.isIdentifierPart(i.charCodeAt(0)))&&this.throwUnexpectedToken()),t+=i);return t}octalToDecimal(e){let t=e!=="0",i=me(e);return!this.eof()&&h.isOctalDigit(this.source.charCodeAt(this.index))&&(t=!0,i=i*8+me(this.source[this.index++]),"0123".includes(e)&&!this.eof()&&h.isOctalDigit(this.source.charCodeAt(this.index))&&(i=i*8+me(this.source[this.index++]))),{code:i,octal:t}}scanIdentifier(){let e,t=this.index,i=this.source.charCodeAt(t)===92?this.getComplexIdentifier():this.getIdentifier();if(i.length===1?e=3:this.isKeyword(i)?e=4:i.toLowerCase()==="null"?e=5:i.toLowerCase()==="true"||i.toLowerCase()==="false"?e=1:e=3,e!==3&&t+i.length!==this.index){let r=this.index;this.index=t,this.tolerateUnexpectedToken("InvalidEscapedReservedWord"),this.index=r}return{type:e,value:i,lineNumber:this.lineNumber,lineStart:this.lineStart,start:t,end:this.index}}scanPunctuator(){let e=this.index,t=this.source[this.index];switch(t){case"(":case"{":t==="{"&&this.curlyStack.push("{"),++this.index;break;case".":++this.index;break;case"}":++this.index,this.curlyStack.pop();break;case")":case";":case",":case"[":case"]":case":":case"?":case"~":++this.index;break;default:for(let i=v.length;i>0;i--)if(t=this.source.substring(this.index,this.index+i),v[i-1].includes(t)){this.index+=i;break}}return this.index===e&&this.throwUnexpectedToken(),{type:7,value:t,lineNumber:this.lineNumber,lineStart:this.lineStart,start:e,end:this.index}}scanHexLiteral(e){let t="";for(;!this.eof()&&h.isHexDigit(this.source.charCodeAt(this.index));)t+=this.source[this.index++];return t.length===0&&this.throwUnexpectedToken(),h.isIdentifierStart(this.source.charCodeAt(this.index))&&this.throwUnexpectedToken(),{type:6,value:parseInt("0x"+t,16),lineNumber:this.lineNumber,lineStart:this.lineStart,start:e,end:this.index}}scanBinaryLiteral(e){let t="";for(;!this.eof();){let i=this.source[this.index];if(i!=="0"&&i!=="1")break;t+=this.source[this.index++]}if(t.length===0&&this.throwUnexpectedToken(),!this.eof()){let i=this.source.charCodeAt(this.index);(h.isIdentifierStart(i)||h.isDecimalDigit(i))&&this.throwUnexpectedToken()}return{type:6,value:parseInt(t,2),lineNumber:this.lineNumber,lineStart:this.lineStart,start:e,end:this.index}}scanOctalLiteral(e,t){let i="",r=!1;for(h.isOctalDigit(e.charCodeAt(0))?(r=!0,i="0"+this.source[this.index++]):++this.index;!this.eof()&&h.isOctalDigit(this.source.charCodeAt(this.index));)i+=this.source[this.index++];return!r&&i.length===0&&this.throwUnexpectedToken(),(h.isIdentifierStart(this.source.charCodeAt(this.index))||h.isDecimalDigit(this.source.charCodeAt(this.index)))&&this.throwUnexpectedToken(),{type:6,value:parseInt(i,8),lineNumber:this.lineNumber,lineStart:this.lineStart,start:t,end:this.index}}scanNumericLiteral(){let e=this.index,t=this.source[e];ze(h.isDecimalDigit(t.charCodeAt(0))||t===".","Numeric literal must start with a decimal digit or a decimal point");let i="";if(t!=="."){if(i=this.source[this.index++],t=this.source[this.index],i==="0"){if(t==="x"||t==="X")return++this.index,this.scanHexLiteral(e);if(t==="b"||t==="B")return++this.index,this.scanBinaryLiteral(e);if(t==="o"||t==="O")return this.scanOctalLiteral(t,e)}for(;h.isDecimalDigit(this.source.charCodeAt(this.index));)i+=this.source[this.index++];t=this.source[this.index]}if(t==="."){for(i+=this.source[this.index++];h.isDecimalDigit(this.source.charCodeAt(this.index));)i+=this.source[this.index++];t=this.source[this.index]}if(t==="e"||t==="E")if(i+=this.source[this.index++],t=this.source[this.index],(t==="+"||t==="-")&&(i+=this.source[this.index++]),h.isDecimalDigit(this.source.charCodeAt(this.index)))for(;h.isDecimalDigit(this.source.charCodeAt(this.index));)i+=this.source[this.index++];else this.throwUnexpectedToken();return h.isIdentifierStart(this.source.charCodeAt(this.index))&&this.throwUnexpectedToken(),{type:6,value:parseFloat(i),lineNumber:this.lineNumber,lineStart:this.lineStart,start:e,end:this.index}}scanStringLiteral(){let e=this.index,t=this.source[e];ze(t==="'"||t==='"',"String literal must starts with a quote"),++this.index;let i=!1,r="";for(;!this.eof();){let n=this.source[this.index++];if(n===t){t="";break}if(n==="\\")if(n=this.source[this.index++],!n||!h.isLineTerminator(n.charCodeAt(0)))switch(n){case"u":if(this.source[this.index]==="{")++this.index,r+=this.scanUnicodeCodePointEscape();else{let s=this.scanHexEscape(n);s===null&&this.throwUnexpectedToken(),r+=s}break;case"x":{let s=this.scanHexEscape(n);s===null&&this.throwUnexpectedToken("InvalidHexEscapeSequence"),r+=s;break}case"n":r+=`
2
- `;break;case"r":r+="\r";break;case"t":r+=" ";break;case"b":r+="\b";break;case"f":r+="\f";break;case"v":r+="\v";break;case"8":case"9":r+=n,this.tolerateUnexpectedToken();break;default:if(n&&h.isOctalDigit(n.charCodeAt(0))){let s=this.octalToDecimal(n);i=s.octal||i,r+=String.fromCharCode(s.code)}else r+=n;break}else++this.lineNumber,n==="\r"&&this.source[this.index]===`
3
- `&&++this.index,this.lineStart=this.index;else{if(h.isLineTerminator(n.charCodeAt(0)))break;r+=n}}return t!==""&&(this.index=e,this.throwUnexpectedToken()),{type:8,value:r,lineNumber:this.lineNumber,lineStart:this.lineStart,start:e,end:this.index}}scanTemplate(){let e="",t=!1,i=this.index,r=this.source[i]==="`",n=!1,s=2;for(++this.index;!this.eof();){let a=this.source[this.index++];if(a==="`"){s=1,n=!0,t=!0;break}if(a==="$"){if(this.source[this.index]==="{"){this.curlyStack.push("${"),++this.index,t=!0;break}e+=a;continue}if(a==="\\"){if(a=this.source[this.index++],h.isLineTerminator(a.charCodeAt(0)))++this.lineNumber,a==="\r"&&this.source[this.index]===`
4
- `&&++this.index,this.lineStart=this.index;else switch(a){case"n":e+=`
5
- `;break;case"r":e+="\r";break;case"t":e+=" ";break;case"u":if(this.source[this.index]==="{")++this.index,e+=this.scanUnicodeCodePointEscape();else{let o=this.index,u=this.scanHexEscape(a);u!==null?e+=u:(this.index=o,e+=a)}break;case"x":{let o=this.scanHexEscape(a);o===null&&this.throwUnexpectedToken("InvalidHexEscapeSequence"),e+=o;break}case"b":e+="\b";break;case"f":e+="\f";break;case"v":e+="\v";break;default:a==="0"?(h.isDecimalDigit(this.source.charCodeAt(this.index))&&this.throwUnexpectedToken("TemplateOctalLiteral"),e+="\0"):h.isOctalDigit(a.charCodeAt(0))?this.throwUnexpectedToken("TemplateOctalLiteral"):e+=a;break}continue}if(h.isLineTerminator(a.charCodeAt(0))){++this.lineNumber,a==="\r"&&this.source[this.index]===`
6
- `&&++this.index,this.lineStart=this.index,e+=`
7
- `;continue}e+=a}return t||this.throwUnexpectedToken(),r||this.curlyStack.pop(),{type:10,value:this.source.slice(i+1,this.index-s),cooked:e,head:r,tail:n,lineNumber:this.lineNumber,lineStart:this.lineStart,start:i,end:this.index}}lex(){if(this.eof())return{type:2,value:"",lineNumber:this.lineNumber,lineStart:this.lineStart,start:this.index,end:this.index};let e=this.source.charCodeAt(this.index);return h.isIdentifierStart(e)?this.scanIdentifier():e===40||e===41||e===59?this.scanPunctuator():e===39||e===34?this.scanStringLiteral():e===46?h.isDecimalDigit(this.source.charCodeAt(this.index+1))?this.scanNumericLiteral():this.scanPunctuator():h.isDecimalDigit(e)?this.scanNumericLiteral():e===96||e===125&&this.curlyStack[this.curlyStack.length-1]==="${"?this.scanTemplate():e>=55296&&e<57343&&h.isIdentifierStart(this.codePointAt(this.index))?this.scanIdentifier():this.scanPunctuator()}};function _e(e,t=0){let i=e.start-e.lineStart,r=e.lineNumber;return i<0&&(i+=t,r--),{index:e.start,line:r,column:i}}function $e(e){return[{index:e.range[0],...e.loc.start},{index:e.range[1],...e.loc.end}]}function Ke(e){return Q[e]??0}var wt=class{constructor(e,t={},i){this.delegate=i,this.hasLineTerminator=!1,this.options={tokens:typeof t.tokens=="boolean"&&t.tokens,comments:typeof t.comments=="boolean"&&t.comments,tolerant:typeof t.tolerant=="boolean"&&t.tolerant},this.options.comments&&(this.commentHandler=new vt),this.errorHandler=new et(this.options.tolerant),this.scanner=new tt(e,this.errorHandler),this.context={isAssignmentTarget:!1,blockContext:0,curlyParsingType:0},this.rawToken={type:2,value:"",lineNumber:this.scanner.lineNumber,lineStart:0,start:0,end:0},this.tokens=[],this.startMarker={index:0,line:this.scanner.lineNumber,column:0},this.endMarker={index:0,line:this.scanner.lineNumber,column:0},this.readNextRawToken(),this.endMarker={index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}}throwIfInvalidType(e,t,{validTypes:i,invalidTypes:r}){i?.some(n=>e.type===n)||r?.some(n=>e.type===n)&&this.throwError("InvalidExpression",t)}throwError(e,t,i=this.endMarker){let{index:r,line:n,column:s}=t,a=i.index-r-1;this.errorHandler.throwError({code:e,index:r,line:n,column:s+1,len:a})}tolerateError(e,t){throw new Error("######################################### !!!")}unexpectedTokenError(e={}){let{rawToken:t}=e,{code:i,data:r}=e,n;if(t){if(!i)switch(t.type){case 2:i="UnexpectedEndOfScript";break;case 3:i="UnexpectedIdentifier";break;case 6:i="UnexpectedNumber";break;case 8:i="UnexpectedString";break;case 10:i="UnexpectedTemplate";break}n=t.value.toString()}else n="ILLEGAL";i=i??"UnexpectedToken",r||(r={value:n});let s=fe(i,r);if(t){let u=t.start,l=t.lineNumber,d=t.start-t.lineStart+1;return new J({code:i,index:u,line:l,column:d,len:t.end-t.start-1,data:r,description:s})}let{index:a,line:o}=this.endMarker;return new J({code:i,index:a,line:o,column:this.endMarker.column+1,data:r,description:s})}throwUnexpectedToken(e={}){throw e.rawToken=e.rawToken??this.rawToken,this.unexpectedTokenError(e)}collectComments(e){let{commentHandler:t}=this;!t||!e.length||e.forEach(i=>{let r={type:i.multiLine?"BlockComment":"LineComment",value:this.getSourceValue(i),range:i.range,loc:i.loc};t.collectComment(r)})}peekAhead(e){let t=()=>(this.scanner.scanComments(),this.scanner.lex()),i=this.scanner.saveState(),r=e.call(this,t);return this.scanner.restoreState(i),r}getSourceValue(e){return this.scanner.source.slice(e.start,e.end)}convertToToken(e){return{type:Ge[e.type],value:this.getSourceValue(e),range:[e.start,e.end],loc:{start:{line:this.startMarker.line,column:this.startMarker.column},end:{line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}}}}readNextRawToken(){this.endMarker.index=this.scanner.index,this.endMarker.line=this.scanner.lineNumber,this.endMarker.column=this.scanner.index-this.scanner.lineStart;let e=this.rawToken;this.collectComments(this.scanner.scanComments()),this.scanner.index!==this.startMarker.index&&(this.startMarker.index=this.scanner.index,this.startMarker.line=this.scanner.lineNumber,this.startMarker.column=this.scanner.index-this.scanner.lineStart),this.rawToken=this.scanner.lex(),this.hasLineTerminator=e.lineNumber!==this.rawToken.lineNumber,this.options.tokens&&this.rawToken.type!==2&&this.tokens.push(this.convertToToken(this.rawToken))}captureStartMarker(){return{index:this.startMarker.index,line:this.startMarker.line,column:this.startMarker.column}}getItemLocation(e){return{range:[e.index,this.endMarker.index],loc:{start:{line:e.line,column:e.column},end:{line:this.endMarker.line,column:this.endMarker.column}}}}finalize(e){return(this.delegate||this.commentHandler)&&(this.commentHandler?.attachComments(e),this.delegate?.(e)),e}expectPunctuator(e){let t=this.rawToken;if(this.matchPunctuator(e)){this.readNextRawToken();return}this.throwUnexpectedToken({rawToken:t,code:"PunctuatorExpected",data:{value:e}})}expectKeyword(e){if(this.rawToken.type===4&&this.rawToken.value.toLowerCase()===e){this.readNextRawToken();return}this.throwUnexpectedToken({rawToken:this.rawToken})}expectContextualKeyword(e){if(this.rawToken.type===3&&this.rawToken.value.toLowerCase()===e){this.readNextRawToken();return}this.throwUnexpectedToken({rawToken:this.rawToken})}matchKeyword(e){return this.rawToken.type===4&&this.rawToken.value.toLowerCase()===e}matchContextualKeyword(e){return this.rawToken.type===3&&this.rawToken.value===e}matchPunctuator(e){return this.rawToken.type===7&&this.rawToken.value===e}getMatchingPunctuator(e){if(typeof e=="string"&&(e=e.split("")),!(this.rawToken.type!==7||!e?.length))return e.find(this.matchPunctuator,this)}isolateCoverGrammar(e){let t=this.context.isAssignmentTarget;this.context.isAssignmentTarget=!0;let i=e.call(this);return this.context.isAssignmentTarget=t,i}inheritCoverGrammar(e){let t=this.context.isAssignmentTarget;this.context.isAssignmentTarget=!0;let i=e.call(this);return this.context.isAssignmentTarget=this.context.isAssignmentTarget&&t,i}withBlockContext(e,t){let i=this.context.blockContext;this.context.blockContext=this.context.blockContext|e;let r=this.context.curlyParsingType;this.context.curlyParsingType=1;let n=t.call(this);return this.context.blockContext=i,this.context.curlyParsingType=r,n}consumeSemicolon(){if(this.matchPunctuator(";")){this.readNextRawToken();return}if(!this.hasLineTerminator){if(this.rawToken.type===2||this.matchPunctuator("}")){this.endMarker.index=this.startMarker.index,this.endMarker.line=this.startMarker.line,this.endMarker.column=this.startMarker.column;return}this.throwUnexpectedToken({rawToken:this.rawToken})}}parsePrimaryExpression(){let e=this.captureStartMarker(),t=this.rawToken;switch(t.type){case 3:return this.readNextRawToken(),this.finalize({type:"Identifier",name:t.value,...this.getItemLocation(e)});case 6:case 8:return this.context.isAssignmentTarget=!1,this.readNextRawToken(),this.finalize({type:"Literal",value:t.value,raw:this.getSourceValue(t),isString:typeof t.value=="string",...this.getItemLocation(e)});case 1:return this.context.isAssignmentTarget=!1,this.readNextRawToken(),this.finalize({type:"Literal",value:t.value.toLowerCase()==="true",raw:this.getSourceValue(t),isString:!1,...this.getItemLocation(e)});case 5:return this.context.isAssignmentTarget=!1,this.readNextRawToken(),this.finalize({type:"Literal",value:null,raw:this.getSourceValue(t),isString:!1,...this.getItemLocation(e)});case 10:return this.parseTemplateLiteral();case 7:switch(t.value){case"(":return this.inheritCoverGrammar(this.parseGroupExpression);case"[":return this.inheritCoverGrammar(this.parseArrayInitializer);case"{":return this.inheritCoverGrammar(this.parseObjectExpression);default:return this.throwUnexpectedToken({rawToken:this.rawToken})}case 4:return this.context.isAssignmentTarget=!1,this.throwUnexpectedToken({rawToken:this.rawToken});default:return this.throwUnexpectedToken({rawToken:this.rawToken})}}parseArrayInitializer(){let e=this.captureStartMarker();this.expectPunctuator("[");let t=[];for(;!this.matchPunctuator("]");){let i=this.captureStartMarker();this.matchPunctuator(",")?(this.readNextRawToken(),this.throwError("InvalidExpression",i)):(t.push(this.inheritCoverGrammar(this.parseAssignmentExpression)),this.matchPunctuator("]")||this.expectPunctuator(","))}return this.expectPunctuator("]"),this.finalize({type:"ArrayExpression",elements:t,...this.getItemLocation(e)})}parseObjectPropertyKey(){let e=this.captureStartMarker(),t=this.rawToken;switch(t.type){case 8:return this.readNextRawToken(),this.finalize({type:"Literal",value:t.value,raw:this.getSourceValue(t),isString:!0,...this.getItemLocation(e)});case 3:case 1:case 5:case 4:return this.readNextRawToken(),this.finalize({type:"Identifier",name:t.value,...this.getItemLocation(e)});default:this.throwError("KeyMustBeString",e)}}parseObjectProperty(){let e=this.rawToken,t=this.captureStartMarker(),i=this.parseObjectPropertyKey(),r=!1,n=null;return this.matchPunctuator(":")?(this.readNextRawToken(),n=this.inheritCoverGrammar(this.parseAssignmentExpression)):e.type===3?(r=!0,n=this.finalize({type:"Identifier",name:e.value,...this.getItemLocation(t)})):this.throwUnexpectedToken({rawToken:this.rawToken}),this.finalize({type:"Property",kind:"init",key:i,value:n,shorthand:r,...this.getItemLocation(t)})}parseObjectExpression(){let e=this.captureStartMarker();this.expectPunctuator("{");let t=[];for(;!this.matchPunctuator("}");)t.push(this.parseObjectProperty()),this.matchPunctuator("}")||this.expectPunctuator(",");return this.expectPunctuator("}"),this.finalize({type:"ObjectExpression",properties:t,...this.getItemLocation(e)})}parseTemplateElement(e=!1){let t=this.rawToken;t.type!==10&&this.throwUnexpectedToken({rawToken:t}),e&&!t.head&&this.throwUnexpectedToken({code:"InvalidTemplateHead",rawToken:t});let i=this.captureStartMarker();this.readNextRawToken();let{value:r,cooked:n,tail:s}=t,a=this.finalize({type:"TemplateElement",value:{raw:r,cooked:n},tail:s,...this.getItemLocation(i)});return a.loc.start.column++,a.loc.end.column=a.loc.end.column-(s?1:2),a}parseTemplateLiteral(){let e=this.captureStartMarker(),t=[],i=[],r=this.parseTemplateElement(!0);for(i.push(r);!r.tail;)t.push(this.parseExpression()),r=this.parseTemplateElement(),i.push(r);return this.finalize({type:"TemplateLiteral",quasis:i,expressions:t,...this.getItemLocation(e)})}parseGroupExpression(){this.expectPunctuator("(");let e=this.inheritCoverGrammar(this.parseAssignmentExpression);return this.expectPunctuator(")"),e}parseArguments(){this.expectPunctuator("(");let e=[];if(!this.matchPunctuator(")"))for(;;){let t=this.isolateCoverGrammar(this.parseAssignmentExpression);if(e.push(t),this.matchPunctuator(")")||(this.expectPunctuator(","),this.matchPunctuator(")")))break}return this.expectPunctuator(")"),e}parseMemberName(){let e=this.rawToken,t=this.captureStartMarker();return this.readNextRawToken(),e.type!==5&&e.type!==3&&e.type!==4&&e.type!==1&&this.throwUnexpectedToken({rawToken:e}),this.finalize({type:"Identifier",name:e.value,...this.getItemLocation(t)})}parseLeftHandSideExpression(){let e=this.captureStartMarker(),t=this.inheritCoverGrammar(this.parsePrimaryExpression),i=this.captureStartMarker(),r;for(;r=this.getMatchingPunctuator("([.");)switch(r){case"(":{this.context.isAssignmentTarget=!1,t.type!=="Identifier"&&t.type!=="MemberExpression"&&this.throwError("IdentiferExpected",e,i);let n=this.parseArguments();t=this.finalize({type:"CallExpression",callee:t,arguments:n,...this.getItemLocation(e)});continue}case"[":{this.context.isAssignmentTarget=!0,this.expectPunctuator("[");let n=this.isolateCoverGrammar(this.parseExpression);this.expectPunctuator("]"),t=this.finalize({type:"MemberExpression",computed:!0,object:t,property:n,...this.getItemLocation(e)});continue}case".":{this.context.isAssignmentTarget=!0,this.expectPunctuator(".");let n=this.parseMemberName();t=this.finalize({type:"MemberExpression",computed:!1,object:t,property:n,...this.getItemLocation(e)});continue}default:break}return t}parseUpdateExpression(){let e=this.captureStartMarker(),t=this.getMatchingPunctuator(De);if(t){this.readNextRawToken();let s=this.captureStartMarker(),a=this.inheritCoverGrammar(this.parseUnaryExpression);return a.type!=="Identifier"&&a.type!=="MemberExpression"&&a.type!=="CallExpression"&&this.throwError("InvalidExpression",s),this.context.isAssignmentTarget||this.tolerateError("InvalidLeftHandSideInAssignment",e),this.context.isAssignmentTarget=!1,this.finalize({type:"UpdateExpression",operator:t,argument:a,prefix:!0,...this.getItemLocation(e)})}let i=this.captureStartMarker(),r=this.inheritCoverGrammar(this.parseLeftHandSideExpression),n=this.captureStartMarker();return this.hasLineTerminator||(t=this.getMatchingPunctuator(De),!t)?r:(r.type!=="Identifier"&&r.type!=="MemberExpression"&&this.throwError("InvalidExpression",i,n),this.context.isAssignmentTarget||this.tolerateError("InvalidLeftHandSideInAssignment",e),this.readNextRawToken(),this.context.isAssignmentTarget=!1,this.finalize({type:"UpdateExpression",operator:t,argument:r,prefix:!1,...this.getItemLocation(e)}))}parseUnaryExpression(){let e=this.getMatchingPunctuator(We);if(e){let t=this.captureStartMarker();this.readNextRawToken();let i=this.inheritCoverGrammar(this.parseUnaryExpression);return this.context.isAssignmentTarget=!1,this.finalize({type:"UnaryExpression",operator:e,argument:i,prefix:!0,...this.getItemLocation(t)})}return this.parseUpdateExpression()}parseBinaryExpression(){let e=this.rawToken,t=this.inheritCoverGrammar(this.parseUnaryExpression);if(this.rawToken.type!==7)return t;let i=this.rawToken.value,r=Ke(i);if(r===0)return t;this.readNextRawToken(),this.context.isAssignmentTarget=!1;let n=[e,this.rawToken],s=t,a=this.inheritCoverGrammar(this.parseUnaryExpression),o=[s,i,a],u=[r];for(;this.rawToken.type===7&&(r=Ke(this.rawToken.value))>0;){for(;o.length>2&&r<=u[u.length-1];){a=o.pop();let g=o.pop();u.pop(),s=o.pop(),n.pop();let L=n[n.length-1],pe=_e(L,L.lineStart);o.push(this.finalize(this.createBinaryOrLogicalExpression(pe,g,s,a)))}o.push(this.rawToken.value),u.push(r),n.push(this.rawToken),this.readNextRawToken(),o.push(this.inheritCoverGrammar(this.parseUnaryExpression))}let l=o.length-1;t=o[l];let d=n.pop();for(;l>1;){let g=n.pop();if(!g)break;let L=d?.lineStart,pe=_e(g,L),Pt=o[l-1];t=this.finalize(this.createBinaryOrLogicalExpression(pe,Pt,o[l-2],t)),l-=2,d=g}return t}createBinaryOrLogicalExpression(e,t,i,r){let n=He.includes(t)?"LogicalExpression":"BinaryExpression";return n==="BinaryExpression"?{type:n,operator:t,left:i,right:r,...this.getItemLocation(e)}:((i.type==="AssignmentExpression"||i.type==="UpdateExpression")&&this.throwError("InvalidExpression",...$e(i)),(r.type==="AssignmentExpression"||r.type==="UpdateExpression")&&this.throwError("InvalidExpression",...$e(i)),{type:n,operator:t,left:i,right:r,...this.getItemLocation(e)})}parseAssignmentExpression(){let e=this.captureStartMarker(),t=this.inheritCoverGrammar(this.parseBinaryExpression),i=this.captureStartMarker(),r=this.getMatchingPunctuator(qe);if(!r)return t;t.type!=="Identifier"&&t.type!=="MemberExpression"&&this.throwError("InvalidExpression",e,i),this.context.isAssignmentTarget||this.tolerateError("InvalidLeftHandSideInAssignment",e),this.matchPunctuator("=")||(this.context.isAssignmentTarget=!1),this.readNextRawToken();let n=this.isolateCoverGrammar(this.parseAssignmentExpression);return this.finalize({type:"AssignmentExpression",left:t,operator:r,right:n,...this.getItemLocation(e)})}parseExpression(){return this.isolateCoverGrammar(this.parseAssignmentExpression)}parseStatements(e){let t=[];for(;this.rawToken.type!==2&&!this.matchPunctuator(e);){let i=this.parseStatementListItem();R(i)||t.push(i)}return t}parseStatementListItem(){return this.context.isAssignmentTarget=!0,this.matchKeyword("function")?this.parseFunctionDeclaration():this.matchKeyword("export")?this.parseExportDeclaration():this.matchKeyword("import")?this.parseImportDeclaration():this.parseStatement()}parseBlock(){let e=this.captureStartMarker();this.expectPunctuator("{");let t=this.parseStatements("}");return this.expectPunctuator("}"),this.finalize({type:"BlockStatement",body:t,...this.getItemLocation(e)})}parseObjectStatement(){let e=this.captureStartMarker(),t=this.parseObjectExpression();return this.finalize({type:"ExpressionStatement",expression:t,...this.getItemLocation(e)})}parseBlockOrObjectStatement(){return this.context.curlyParsingType===0?this.parseObjectStatement():this.peekAhead(e=>{let t=e();return!(t.type!==3&&t.type!==8||(t=e(),t.type!==7||t.value!==":"))})?this.parseObjectStatement():this.parseBlock()}parseIdentifier(){let e=this.rawToken;if(e.type!==3)return null;let t=this.captureStartMarker();return this.readNextRawToken(),this.finalize({type:"Identifier",name:e.value,...this.getItemLocation(t)})}parseVariableDeclarator(){let e=this.captureStartMarker(),t=this.parseIdentifier();t||this.throwUnexpectedToken({code:"IdentiferExpected"});let i=null;if(this.matchPunctuator("=")){this.readNextRawToken();let r=this.rawToken;try{i=this.isolateCoverGrammar(this.parseAssignmentExpression)}catch{this.throwUnexpectedToken({rawToken:r,code:"InvalidVariableAssignment"})}}return this.finalize({type:"VariableDeclarator",id:t,init:i,...this.getItemLocation(e)})}parseVariableDeclarationList(){let e=[this.parseVariableDeclarator()];for(;this.matchPunctuator(",");)this.readNextRawToken(),e.push(this.parseVariableDeclarator());return e}parseVariableDeclaration(){let e=this.captureStartMarker();this.expectKeyword("var");let t=this.parseVariableDeclarationList();return this.consumeSemicolon(),this.finalize({type:"VariableDeclaration",declarations:t,kind:"var",...this.getItemLocation(e)})}parseEmptyStatement(){let e=this.captureStartMarker();return this.expectPunctuator(";"),this.finalize({type:"EmptyStatement",...this.getItemLocation(e)})}parseExpressionStatement(){let e=this.captureStartMarker(),t=this.parseExpression();return this.consumeSemicolon(),this.finalize({type:"ExpressionStatement",expression:t,...this.getItemLocation(e)})}parseIfClause(){return this.withBlockContext(2,this.parseStatement)}parseIfStatement(){let e=this.captureStartMarker();this.expectKeyword("if"),this.expectPunctuator("(");let t=this.captureStartMarker(),i=this.parseExpression(),r=this.captureStartMarker();this.expectPunctuator(")"),(i.type==="AssignmentExpression"||i.type==="UpdateExpression")&&this.throwError("InvalidExpression",t,r);let n=this.parseIfClause(),s=null;return this.matchKeyword("else")&&(this.readNextRawToken(),s=this.parseIfClause()),this.finalize({type:"IfStatement",test:i,consequent:n,alternate:s,...this.getItemLocation(e)})}parseWhileStatement(){let e=this.captureStartMarker();this.expectKeyword("while"),this.expectPunctuator("(");let t=this.captureStartMarker(),i=this.parseExpression(),r=this.captureStartMarker();this.expectPunctuator(")"),(i.type==="AssignmentExpression"||i.type==="UpdateExpression")&&this.throwError("InvalidExpression",t,r);let n=this.withBlockContext(8,this.parseStatement);return this.finalize({type:"WhileStatement",test:i,body:n,...this.getItemLocation(e)})}parseForStatement(){let e=null,t=null,i=null,r=null,n=null,s=this.captureStartMarker();if(this.expectKeyword("for"),this.expectPunctuator("("),this.matchPunctuator(";"))this.readNextRawToken();else if(this.matchKeyword("var")){let o=this.captureStartMarker();this.readNextRawToken();let u=this.parseVariableDeclarationList();u.length===1&&this.matchKeyword("in")?(u[0].init&&this.throwError("ForInOfLoopInitializer",o),r=this.finalize({type:"VariableDeclaration",declarations:u,kind:"var",...this.getItemLocation(o)}),this.readNextRawToken(),n=this.parseExpression()):(this.matchKeyword("in")&&this.throwError("InvalidLeftHandSideInForIn",o),e=this.finalize({type:"VariableDeclaration",declarations:u,kind:"var",...this.getItemLocation(o)}),this.expectPunctuator(";"))}else{let o=this.context.isAssignmentTarget,u=this.captureStartMarker();e=this.inheritCoverGrammar(this.parseAssignmentExpression),this.matchKeyword("in")?(this.context.isAssignmentTarget||this.tolerateError("InvalidLeftHandSideInForIn",u),e.type!=="Identifier"&&this.throwError("InvalidLeftHandSideInForIn",u),this.readNextRawToken(),r=e,n=this.parseExpression(),e=null):(this.context.isAssignmentTarget=o,this.expectPunctuator(";"))}r||(this.matchPunctuator(";")||(t=this.isolateCoverGrammar(this.parseExpression)),this.expectPunctuator(";"),this.matchPunctuator(")")||(i=this.isolateCoverGrammar(this.parseExpression))),this.expectPunctuator(")");let a=this.withBlockContext(4,()=>this.isolateCoverGrammar(this.parseStatement));return r&&n?this.finalize({type:"ForInStatement",left:r,right:n,body:a,...this.getItemLocation(s)}):this.finalize({type:"ForStatement",init:e,test:t,update:i,body:a,...this.getItemLocation(s)})}parseContinueStatement(){let e=this.captureStartMarker();return this.expectKeyword("continue"),this.consumeSemicolon(),this.finalize({type:"ContinueStatement",...this.getItemLocation(e)})}parseBreakStatement(){let e=this.captureStartMarker();return this.expectKeyword("break"),this.consumeSemicolon(),this.finalize({type:"BreakStatement",...this.getItemLocation(e)})}parseReturnStatement(){let e=this.captureStartMarker();this.expectKeyword("return");let t=!this.matchPunctuator(";")&&!this.matchPunctuator("}")&&!this.hasLineTerminator&&this.rawToken.type!==2||this.rawToken.type===8||this.rawToken.type===10?this.parseExpression():null;return this.consumeSemicolon(),this.finalize({type:"ReturnStatement",argument:t,...this.getItemLocation(e)})}parseStatement(){switch(this.rawToken.type){case 1:case 5:case 6:case 8:case 10:case 3:return this.parseExpressionStatement();case 7:return this.rawToken.value==="{"?this.parseBlockOrObjectStatement():this.rawToken.value==="("?this.parseExpressionStatement():this.rawToken.value===";"?this.parseEmptyStatement():this.parseExpressionStatement();case 4:switch(this.rawToken.value.toLowerCase()){case"break":return this.parseBreakStatement();case"continue":return this.parseContinueStatement();case"for":return this.parseForStatement();case"function":return this.parseFunctionDeclaration();case"if":return this.parseIfStatement();case"return":return this.parseReturnStatement();case"var":return this.parseVariableDeclaration();case"while":return this.parseWhileStatement();default:return this.parseExpressionStatement()}default:return this.throwUnexpectedToken({rawToken:this.rawToken})}}parseFormalParameters(){let e=[];if(this.expectPunctuator("("),!this.matchPunctuator(")"))for(;this.rawToken.type!==2;){let t=this.parseIdentifier();if(t||this.throwUnexpectedToken({rawToken:this.rawToken,code:"IdentiferExpected"}),e.push(t),this.matchPunctuator(")")||(this.expectPunctuator(","),this.matchPunctuator(")")))break}return this.expectPunctuator(")"),e}parseFunctionDeclaration(){(this.context.blockContext&1)===1&&this.throwUnexpectedToken({code:"NoFunctionInsideFunction"}),((this.context.blockContext&8)===8||(this.context.blockContext&2)===2)&&this.throwUnexpectedToken({code:"NoFunctionInsideBlock"});let e=this.captureStartMarker();this.expectKeyword("function");let t=this.parseIdentifier();t||this.throwUnexpectedToken({code:"InvalidFunctionIdentifier"});let i=this.parseFormalParameters(),r=this.context.blockContext;this.context.blockContext=this.context.blockContext|1;let n=this.parseBlock();return this.context.blockContext=r,this.finalize({type:"FunctionDeclaration",id:t,params:i,body:n,...this.getItemLocation(e)})}parseScript(){let e=this.captureStartMarker(),t=this.parseStatements(),i=this.finalize({type:"Program",body:t,...this.getItemLocation(e)});return this.options.tokens&&(i.tokens=this.tokens),this.options.tolerant&&(i.errors=this.errorHandler.errors),i}parseExportDeclaration(){this.context.blockContext!==0&&this.throwUnexpectedToken({code:"ModuleExportRootOnly"});let e=null,t=this.captureStartMarker();return this.expectKeyword("export"),this.matchKeyword("var")?e=this.parseVariableDeclaration():this.matchKeyword("function")?e=this.parseFunctionDeclaration():this.throwUnexpectedToken({code:"InvalidExpression"}),this.finalize({type:"ExportNamedDeclaration",declaration:e,specifiers:[],source:null,...this.getItemLocation(t)})}parseModuleSpecifier(){let e=this.captureStartMarker(),t=this.rawToken;if(t.type===8)return this.readNextRawToken(),this.finalize({type:"Literal",value:t.value,raw:this.getSourceValue(t),isString:!0,...this.getItemLocation(e)});this.throwError("InvalidModuleUri",e)}parseDefaultSpecifier(){let e=this.captureStartMarker(),t=this.parseIdentifier();return t||this.throwUnexpectedToken({code:"IdentiferExpected"}),this.finalize({type:"ImportDefaultSpecifier",local:t,...this.getItemLocation(e)})}parseImportDeclaration(){this.context.blockContext!==0&&this.throwUnexpectedToken({code:"ModuleImportRootOnly"});let e=this.captureStartMarker();this.expectKeyword("import");let t=this.parseDefaultSpecifier();this.expectContextualKeyword("from");let i=this.parseModuleSpecifier();return this.finalize({type:"ImportDeclaration",specifiers:[t],source:i,...this.getItemLocation(e)})}},Tt=class{constructor(e,t){this.errorHandler=new et,this.errorHandler.tolerant=t?typeof t.tolerant=="boolean"&&t.tolerant:!1,this.scanner=new tt(e,this.errorHandler),this.trackComments=t?typeof t.comment=="boolean"&&t.comment:!1,this.buffer=[]}errors(){return this.errorHandler.errors}getNextToken(){if(this.buffer.length===0){let e=this.scanner.scanComments();if(this.trackComments&&e.forEach(t=>{let i=this.scanner.source.slice(t.start,t.end),r={type:t.multiLine?"BlockComment":"LineComment",value:i,range:t.range,loc:t.loc};this.buffer.push(r)}),!this.scanner.eof()){let t={line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart},i=this.scanner.lex(),r={line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart},n={type:Ge[i.type],value:this.scanner.source.slice(i.start,i.end),range:[i.start,i.end],loc:{start:t,end:r}};this.buffer.push(n)}}return this.buffer.shift()}};function W(e,t,i){return new wt(e,t,i).parseScript()}function it(e,t,i){let r=new Tt(e,t),n=[],s;try{let a;for(;a=r.getNextToken();)i&&(a=i(a)),n.push(a)}catch(a){r.errorHandler.tolerate(a)}return r.errorHandler.tolerant&&(s=r.errors()),{tokens:n,errors:s}}import{DiagnosticSeverity as f}from"vscode-languageserver-types";var rt=(D=>(D.AlreadyDefined="AlreadyDefined",D.ApiConflict="ApiConflict",D.AssignedNeverUsed="AssignedNeverUsed",D.DefinedNeverAssigned="DefinedNeverAssigned",D.DefinedNeverUsed="DefinedNeverUsed",D.EmptyBlockStatement="EmptyBlockStatement",D.ExecutionError="ExecutionError",D.InvalidApiFunctionUsage="InvalidApiFunctionUsage",D.InvalidConstantIdentifier="InvalidConstantIdentifier",D.InvalidPropertyIdentifier="InvalidPropertyIdentifier",D.NoArgumentExpected="NoArgumentExpected",D.NotADictionary="NotADictionary",D.NotDefined="NotDefined",D.NotEnoughArguments="NotEnoughArguments",D.ProfileVariablesAreImmutable="ProfileVariablesAreImmutable",D.ProfileVariablesConflict="ProfileVariablesConflict",D.ReservedKeyword="ReservedKeyword",D.TooManyArguments="TooManyArguments",D.UnexpectedEmptyFunction="UnexpectedEmptyFunction",D.UnexpectedPropertyIdentifier="UnexpectedPropertyIdentifier",D.UnknownPropertyIdentifier="UnknownPropertyIdentifier",D))(rt||{}),nt={AlreadyDefined:"'${identifier}' is already defined.",ApiConflict:"'${identifier}' is already defined as an Arcade constant or function.",AssignedNeverUsed:"'${identifier}' is assigned but never used.",DefinedNeverAssigned:"'${identifier}' is defined but never assigned.",DefinedNeverUsed:"'${identifier}' is defined but never used.",EmptyBlockStatement:"Empty block statement.",ExecutionError:"Execution Error: '${stack}'",InvalidApiFunctionUsage:"Arcade function '${identifier}' not used in a call expression.",InvalidConstantIdentifier:"Invalid constant identifier, expecting ${list}.",InvalidPropertyIdentifier:"Invalid property identifier, expecting ${list}.",NoArgumentExpected:"Expecting no argument.",NotADictionary:"'${identifier}' doesn't have properties.",NotDefined:"'${identifier}' is not defined.",NotEnoughArguments:"Expecting at least ${min} argument(s).",ProfileVariablesAreImmutable:"Profile variables cannot be modified.",ProfileVariablesConflict:"'${identifier}' is already defined as a profile variable.",ReservedKeyword:"'${identifier}' is a reserved keyword.",TooManyArguments:"Too many arguments, expecting ${max}.",UnexpectedEmptyFunction:"Unexpected empty function '${identifier}'.",UnexpectedPropertyIdentifier:"Unexpected property identifier.",UnknownPropertyIdentifier:"Unknown property identifier '${identifier}'.",...j};var st=Object.values(xe),at=Object.values(ge),ot=["case","catch","debugger","switch","try"];import{CompletionItemKind as ut,InsertTextFormat as Nt,InsertTextMode as Mt,MarkupKind as Ut}from"vscode-languageserver-types";var ct=new Map;function Ot(e){return Array.isArray(e?.testSdkCategories)}function Vt(e,t){return`${e}/api/arcade-api.t9n.${t}.json`}var Z=class{constructor(t={}){this._settings=t}async getApiDatabase(t){let{locale:i="en"}=t,r=ct.get(i);if(!r){let{assetsPath:n}=this._settings;if(!n)return{categories:[],functionDefinitions:new Map,constantDefinitions:new Map};r=this.loadSdkApiLibrary(i,n),ct.set(i,r)}return this.filterApi(r,t)}async getApiLibrary(t){let{categories:i}=await this.getApiDatabase(t);return i}async filterApi(t,i){try{let r=await t,n=new Map,s=new Map,a=[],o=zt(i);return r.forEach(u=>{let l=[];u.items.forEach(d=>jt(l,s,n,o,d)),l.length&&a.push({...u,items:l})}),{categories:a,functionDefinitions:n,constantDefinitions:s}}catch{return{categories:[],functionDefinitions:new Map,constantDefinitions:new Map}}}async loadSdkApiLibrary(t="en",i=""){if(Ot(this._settings))return this._settings.testSdkCategories;if(i=i.replace(/\/$/,""),!i)return[];try{let r=await fetch(Vt(i,t));return r.ok?r.json():t==="en"?[]:this.loadSdkApiLibrary("en",i)}catch{return[]}}};function zt(e){let{profile:{apiVersion:t,bundles:i,hiddenApiItems:r=[]}={}}=e,n=pt(t),s=Array.isArray(i)&&i.length>0?new Set(["core",...i]):void 0;return a=>_t(n,a.sinceVersion)&&(!s||s.has(a.bundle))&&!r.includes(a.name)}function jt(e,t,i,r,n){if(Array.isArray(n)){n.forEach(s=>lt(e,i,r,s));return}if(n.type==="constant")return Rt(e,t,r,n);lt(e,i,r,n)}function lt(e,t,i,r){if(!i(r))return;r.disableDocumentation||e.push(r);let{completion:{label:n}}=r,s=n.toLowerCase(),a=t.get(s);a||(a={type:"functionDefinition",key:s,overloads:[]},t.set(s,a)),a.overloads.push(r)}function Rt(e,t,i,r){if(!i(r))return;e.push(r);let{completion:{label:n}}=r,s=n.toLowerCase();t.set(s,r);let[a,o]=r.completion.label.split(".");if(!o)return;let u=a.toLowerCase(),l=t.get(u);l||(l={type:"namespace",key:u,members:[],completion:{label:a,detail:a,insertText:a,insertTextMode:Mt.adjustIndentation,insertTextFormat:Nt.PlainText,kind:ut.Enum}},t.set(u,l));let d=JSON.parse(JSON.stringify(r));d.key=o.toLowerCase(),d.name=o,d.completion.label=o,d.completion.insertText=o,d.completion.kind=ut.Constant,l.members.push(d),l.completion.documentation=l.members.reduce((g,L)=>(g.value=`${g.value}${g.value?`
1
+ function he(e){return!!e&&e.type!=="dictionary"}function Oe(e){return e?.type==="dictionary"}var ge=(e=>(e.False="false",e.Null="null",e.True="true",e))(ge||{}),xe=(e=>(e.Break="break",e.Continue="continue",e.Else="else",e.For="for",e.From="from",e.Function="function",e.If="if",e.Import="import",e.Export="export",e.In="in",e.Return="return",e.Var="var",e.While="while",e))(xe||{}),c=(e=>(e.AssignmentExpression="AssignmentExpression",e.ArrayExpression="ArrayExpression",e.BlockComment="BlockComment",e.BlockStatement="BlockStatement",e.BinaryExpression="BinaryExpression",e.BreakStatement="BreakStatement",e.CallExpression="CallExpression",e.ContinueStatement="ContinueStatement",e.EmptyStatement="EmptyStatement",e.ExpressionStatement="ExpressionStatement",e.ExportNamedDeclaration="ExportNamedDeclaration",e.ExportSpecifier="ExportSpecifier",e.ForStatement="ForStatement",e.ForInStatement="ForInStatement",e.FunctionDeclaration="FunctionDeclaration",e.Identifier="Identifier",e.IfStatement="IfStatement",e.ImportDeclaration="ImportDeclaration",e.ImportDefaultSpecifier="ImportDefaultSpecifier",e.LineComment="LineComment",e.Literal="Literal",e.LogicalExpression="LogicalExpression",e.MemberExpression="MemberExpression",e.ObjectExpression="ObjectExpression",e.Program="Program",e.Property="Property",e.ReturnStatement="ReturnStatement",e.TemplateElement="TemplateElement",e.TemplateLiteral="TemplateLiteral",e.UnaryExpression="UnaryExpression",e.UpdateExpression="UpdateExpression",e.VariableDeclaration="VariableDeclaration",e.VariableDeclarator="VariableDeclarator",e.WhileStatement="WhileStatement",e))(c||{}),De=["++","--"],We=["-","+","!","~"],qe=["=","/=","*=","%=","+=","-="],He=["||","&&"],bt=["|","&",">>","<<",">>>","^","==","!=","<","<=",">",">=","+","-","*","/","%"],Q={"||":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":10,"/":10,"%":10},It=(e=>(e[e.Unknown=0]="Unknown",e[e.BooleanLiteral=1]="BooleanLiteral",e[e.EOF=2]="EOF",e[e.Identifier=3]="Identifier",e[e.Keyword=4]="Keyword",e[e.NullLiteral=5]="NullLiteral",e[e.NumericLiteral=6]="NumericLiteral",e[e.Punctuator=7]="Punctuator",e[e.StringLiteral=8]="StringLiteral",e[e.Template=10]="Template",e))(It||{}),Ge=["Unknown","Boolean","<end>","Identifier","Keyword","Null","Numeric","Punctuator","String","RegularExpression","Template"],kt=(e=>(e.InvalidModuleUri="InvalidModuleUri",e.ForInOfLoopInitializer="ForInOfLoopInitializer",e.IdentiferExpected="IdentiferExpected",e.InvalidEscapedReservedWord="InvalidEscapedReservedWord",e.InvalidExpression="InvalidExpression",e.InvalidFunctionIdentifier="InvalidFunctionIdentifier",e.InvalidHexEscapeSequence="InvalidHexEscapeSequence",e.InvalidLeftHandSideInAssignment="InvalidLeftHandSideInAssignment",e.InvalidLeftHandSideInForIn="InvalidLeftHandSideInForIn",e.InvalidTemplateHead="InvalidTemplateHead",e.InvalidVariableAssignment="InvalidVariableAssignment",e.KeyMustBeString="KeyMustBeString",e.NoFunctionInsideBlock="NoFunctionInsideBlock",e.NoFunctionInsideFunction="NoFunctionInsideFunction",e.ModuleExportRootOnly="ModuleExportRootOnly",e.ModuleImportRootOnly="ModuleImportRootOnly",e.PunctuatorExpected="PunctuatorExpected",e.TemplateOctalLiteral="TemplateOctalLiteral",e.UnexpectedBoolean="UnexpectedBoolean",e.UnexpectedEndOfScript="UnexpectedEndOfScript",e.UnexpectedIdentifier="UnexpectedIdentifier",e.UnexpectedKeyword="UnexpectedKeyword",e.UnexpectedNull="UnexpectedNull",e.UnexpectedNumber="UnexpectedNumber",e.UnexpectedPunctuator="UnexpectedPunctuator",e.UnexpectedString="UnexpectedString",e.UnexpectedTemplate="UnexpectedTemplate",e.UnexpectedToken="UnexpectedToken",e))(kt||{}),j={InvalidModuleUri:"Module uri must be a text literal.",ForInOfLoopInitializer:"for-in loop variable declaration may not have an initializer.",IdentiferExpected:"'${value}' is an invalid identifier.",InvalidEscapedReservedWord:"Keyword cannot contain escaped characters.",InvalidExpression:"Invalid expression.",InvalidFunctionIdentifier:"'${value}' is an invalid function identifier.",InvalidHexEscapeSequence:"Invalid hexadecimal escape sequence.",InvalidLeftHandSideInAssignment:"Invalid left-hand side in assignment.",InvalidLeftHandSideInForIn:"Invalid left-hand side in for-in.",InvalidTemplateHead:"Invalid template structure.",InvalidVariableAssignment:"Invalid variable assignment.",KeyMustBeString:"Object property keys must be a word starting with a letter.",NoFunctionInsideBlock:"Functions cannot be declared inside of code blocks.",NoFunctionInsideFunction:"Functions cannot be declared inside another function.",ModuleExportRootOnly:"Module exports cannot be declared inside of code blocks.",ModuleImportRootOnly:"Module import cannot be declared inside of code blocks.",PunctuatorExpected:"'${value}' expected.",TemplateOctalLiteral:"Octal literals are not allowed in template literals.",UnexpectedBoolean:"Unexpected boolean literal.",UnexpectedEndOfScript:"Unexpected end of Arcade expression.",UnexpectedIdentifier:"Unexpected identifier.",UnexpectedKeyword:"Unexpected keyword.",UnexpectedNull:"Unexpected null literal.",UnexpectedNumber:"Unexpected number.",UnexpectedPunctuator:"Unexpected ponctuator.",UnexpectedString:"Unexpected text literal.",UnexpectedTemplate:"Unexpected quasi '${value}'.",UnexpectedToken:"Unexpected token '${value}'."},J=class Je extends Error{constructor({code:t,index:i,line:r,column:n,len:s=0,description:a,data:o}){super(`${a??t}`),this.declaredRootClass="esri.arcade.lib.diagnostic",this.name="ParsingError",this.code=t,this.index=i,this.line=r,this.column=n,this.len=s,this.data=o,this.description=a,this.range={start:{line:r,column:n-1},end:{line:r,column:n+s}},Error.captureStackTrace?.(this,Je)}};function Bt(e){return e?.type==="Program"}function x(e){return e?.type==="BlockStatement"}function Lt(e){return e?.type==="BlockComment"}function R(e){return e?.type==="EmptyStatement"}function Qe(e){return e?.type==="ExpressionStatement"}function Ce(e){return e?.type==="FunctionDeclaration"}function X(e){return e?.type==="IfStatement"}function N(e){return e?.type==="VariableDeclaration"}function $(e){return e?.type==="ArrayExpression"}function _(e){return e?.type==="BinaryExpression"}function C(e){return e?.type==="Identifier"}function Ee(e){return e?.type==="Literal"}function K(e){return e?.type==="LogicalExpression"}function Fe(e){return e?.type==="ObjectExpression"}function Ae(e){return e?.type==="MemberExpression"}function Xe(e){return e?.type==="UnaryExpression"}function Ze(e){return e?.type==="UpdateExpression"}function ye(e){return e?.type==="VariableDeclarator"}function Ye(e){return e?.type==="Property"}function de(e,t){return t?t.loc.end.line===e.loc.start.line&&t.loc.end.column<=e.loc.start.column:!1}function Ve(e,t){return e.range[0]>=t.range[0]&&e.range[1]<=t.range[1]}var vt=class{constructor(){this.comments=[],this._nodeStack=[],this._newComments=[]}insertInnerComments(e){if(!x(e)||e.body.length!==0)return;let t=[];for(let i=this._newComments.length-1;i>=0;i-=1){let r=this._newComments[i];e.range[1]>=r.range[0]&&(t.unshift(r),this._newComments.splice(i,1))}t.length&&(e.innerComments=t)}attachTrailingComments(e){if(!e)return;let t=this._nodeStack[this._nodeStack.length-1];if(x(e)&&Ve(t,e))for(let r=this._newComments.length-1;r>=0;r-=1){let n=this._newComments[r];Ve(n,e)&&(t.trailingComments=[...t.trailingComments??[],n],this._newComments.splice(r,1))}let i=[];if(this._newComments.length>0)for(let r=this._newComments.length-1;r>=0;r-=1){let n=this._newComments[r];de(n,t)?(t.trailingComments=[...t.trailingComments??[],n],this._newComments.splice(r,1)):de(n,e)&&(i.unshift(n),this._newComments.splice(r,1))}if(t?.trailingComments){let r=t.trailingComments[0];de(r,e)&&(i=[...i,...t.trailingComments],delete t.trailingComments)}i.length>0&&(e.trailingComments=i)}attachLeadingComments(e){if(!e)return;let t;for(;this._nodeStack.length>0;){let n=this._nodeStack[this._nodeStack.length-1];if(e.range[0]<=n.range[0]){t=n,this._nodeStack.pop();continue}break}let i=[],r=[];if(t!=null){if(!t.leadingComments)return;for(let n=t.leadingComments.length-1;n>=0;n-=1){let s=t.leadingComments[n];if(e.range[0]>=s.range[1]){i.unshift(s),t.leadingComments.splice(n,1);continue}ye(e)&&!Lt(s)&&(r.unshift(s),t.leadingComments.splice(n,1))}t.leadingComments?.length===0&&delete t.leadingComments,i.length&&(e.leadingComments=i),r.length&&(e.trailingComments=[...r,...e.trailingComments??[]]);return}for(let n=this._newComments.length-1;n>=0;n-=1){let s=this._newComments[n];e.range[0]>=s.range[0]&&(i.unshift(s),this._newComments.splice(n,1))}i.length&&(e.leadingComments=i)}attachComments(e){if(Bt(e)&&e.body.length>0){let t=this._nodeStack[this._nodeStack.length-1];if(t){t.trailingComments=[...t.trailingComments??[],...this._newComments],this._newComments.length=0,this._nodeStack.pop();return}e.trailingComments=[...this._newComments],this._newComments.length=0;return}this.attachTrailingComments(e),this.attachLeadingComments(e),this.insertInnerComments(e),this._nodeStack.push(e)}collectComment(e){this.comments.push(e),this._newComments.push(e)}};function fe(e,t){let i=j[e];return t?i.replace(/\$\{(.*?)\}/gu,(r,n)=>t[n]?.toString()??""):i}var et=class{constructor(e=!1){this.tolerant=e,this.errors=[]}recordError(e){this.errors.push(e)}tolerate(e){if(this.tolerant)this.recordError(e);else throw e}throwError(e){throw e.description??(e.description=fe(e.code,e.data)),new J(e)}tolerateError(e){e.description??(e.description=fe(e.code,e.data));let t=new J(e);if(this.tolerant)this.recordError(t);else throw t}};function ze(e,t){if(!e)throw new Error(`ASSERT: ${t}`)}var je={NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEF\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7C6\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB67\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDEC0-\uDEEB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/u,NonAsciiIdentifierPart:/[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05EF-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u07FD\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D3-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u09FE\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1878\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CD0-\u1CD2\u1CD4-\u1CFA\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEF\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7C6\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB67\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD27\uDD30-\uDD39\uDF00-\uDF1C\uDF27\uDF30-\uDF50\uDFE0-\uDFF6]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD44-\uDD46\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDC9-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3B-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC5E\uDC5F\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDC00-\uDC3A\uDCA0-\uDCE9\uDCFF\uDDA0-\uDDA7\uDDAA-\uDDD7\uDDDA-\uDDE1\uDDE3\uDDE4\uDE00-\uDE3E\uDE47\uDE50-\uDE99\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD8E\uDD90\uDD91\uDD93-\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF6]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF4F-\uDF87\uDF8F-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A\uDD00-\uDD2C\uDD30-\uDD3D\uDD40-\uDD49\uDD4E\uDEC0-\uDEF9]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4B\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/u},h={fromCodePoint(e){return e<65536?String.fromCharCode(e):String.fromCharCode(55296+(e-65536>>10))+String.fromCharCode(56320+(e-65536&1023))},isWhiteSpace(e){return e===32||e===9||e===11||e===12||e===160||e>=5760&&[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].includes(e)},isLineTerminator(e){return e===10||e===13||e===8232||e===8233},isIdentifierStart(e){return e===36||e===95||e>=65&&e<=90||e>=97&&e<=122||e===92||e>=128&&je.NonAsciiIdentifierStart.test(h.fromCodePoint(e))},isIdentifierPart(e){return e===36||e===95||e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||e===92||e>=128&&je.NonAsciiIdentifierPart.test(h.fromCodePoint(e))},isDecimalDigit(e){return e>=48&&e<=57},isHexDigit(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102},isOctalDigit(e){return e>=48&&e<=55}};function Re(e){return"0123456789abcdef".indexOf(e.toLowerCase())}function me(e){return"01234567".indexOf(e)}var v=[[],[],[]];De.forEach(e=>v[e.length-1].push(e));We.forEach(e=>v[e.length-1].push(e));He.forEach(e=>v[e.length-1].push(e));qe.forEach(e=>v[e.length-1].push(e));bt.forEach(e=>v[e.length-1].push(e));var tt=class{constructor(e,t){this.source=e,this.errorHandler=t,this._length=e.length,this.index=0,this.lineNumber=1,this.lineStart=0,this.curlyStack=[]}saveState(){return{index:this.index,lineNumber:this.lineNumber,lineStart:this.lineStart,curlyStack:this.curlyStack.slice()}}restoreState(e){this.index=e.index,this.lineNumber=e.lineNumber,this.lineStart=e.lineStart,this.curlyStack=e.curlyStack}eof(){return this.index>=this._length}throwUnexpectedToken(e="UnexpectedToken"){this.errorHandler.throwError({code:e,index:this.index,line:this.lineNumber,column:this.index-this.lineStart+1,data:{value:this.source.charAt(this.index)}})}tolerateUnexpectedToken(e="UnexpectedToken"){this.errorHandler.tolerateError({code:e,index:this.index,line:this.lineNumber,column:this.index-this.lineStart+1})}skipSingleLineComment(e){let t=[],i=this.index-e,r={start:{line:this.lineNumber,column:this.index-this.lineStart-e},end:{line:0,column:0}};for(;!this.eof();){let n=this.source.charCodeAt(this.index);if(this.index+=1,h.isLineTerminator(n)){if(r){r.end={line:this.lineNumber,column:this.index-this.lineStart-1};let s={multiLine:!1,start:i+e,end:this.index-1,range:[i,this.index-1],loc:r};t.push(s)}return n===13&&this.source.charCodeAt(this.index)===10&&(this.index+=1),this.lineNumber+=1,this.lineStart=this.index,t}}if(r){r.end={line:this.lineNumber,column:this.index-this.lineStart};let n={multiLine:!1,start:i+e,end:this.index,range:[i,this.index],loc:r};t.push(n)}return t}skipMultiLineComment(){let e=[],t=this.index-2,i={start:{line:this.lineNumber,column:this.index-this.lineStart-2},end:{line:0,column:0}};for(;!this.eof();){let r=this.source.charCodeAt(this.index);if(h.isLineTerminator(r))r===13&&this.source.charCodeAt(this.index+1)===10&&(this.index+=1),this.lineNumber+=1,this.index+=1,this.lineStart=this.index;else if(r===42){if(this.source.charCodeAt(this.index+1)===47){if(this.index+=2,i){i.end={line:this.lineNumber,column:this.index-this.lineStart};let n={multiLine:!0,start:t+2,end:this.index-2,range:[t,this.index],loc:i};e.push(n)}return e}this.index+=1}else this.index+=1}if(i){i.end={line:this.lineNumber,column:this.index-this.lineStart};let r={multiLine:!0,start:t+2,end:this.index,range:[t,this.index],loc:i};e.push(r)}return this.tolerateUnexpectedToken(),e}scanComments(){let e=[];for(;!this.eof();){let t=this.source.charCodeAt(this.index);if(h.isWhiteSpace(t))this.index+=1;else if(h.isLineTerminator(t))this.index+=1,t===13&&this.source.charCodeAt(this.index)===10&&(this.index+=1),this.lineNumber+=1,this.lineStart=this.index;else if(t===47)if(t=this.source.charCodeAt(this.index+1),t===47){this.index+=2;let i=this.skipSingleLineComment(2);e=[...e,...i]}else if(t===42){this.index+=2;let i=this.skipMultiLineComment();e=[...e,...i]}else break;else break}return e}isKeyword(e){switch(e=e.toLowerCase(),e.length){case 2:return e==="if"||e==="in";case 3:return e==="var"||e==="for";case 4:return e==="else";case 5:return e==="break"||e==="while";case 6:return e==="return"||e==="import"||e==="export";case 8:return e==="function"||e==="continue";default:return!1}}codePointAt(e){let t=this.source.charCodeAt(e);if(t>=55296&&t<=56319){let i=this.source.charCodeAt(e+1);i>=56320&&i<=57343&&(t=(t-55296)*1024+i-56320+65536)}return t}scanHexEscape(e){let t=e==="u"?4:2,i=0;for(let r=0;r<t;r+=1)if(!this.eof()&&h.isHexDigit(this.source.charCodeAt(this.index)))i=i*16+Re(this.source[this.index]),this.index+=1;else return null;return String.fromCharCode(i)}scanUnicodeCodePointEscape(){let e=this.source[this.index],t=0;for(e==="}"&&this.throwUnexpectedToken();!this.eof()&&(e=this.source[this.index],this.index+=1,!!h.isHexDigit(e.charCodeAt(0)));)t=t*16+Re(e);return(t>1114111||e!=="}")&&this.throwUnexpectedToken(),h.fromCodePoint(t)}getIdentifier(){let e=this.index;for(this.index+=1;!this.eof();){let t=this.source.charCodeAt(this.index);if(t===92)return this.index=e,this.getComplexIdentifier();if(t>=55296&&t<57343)return this.index=e,this.getComplexIdentifier();if(h.isIdentifierPart(t))this.index+=1;else break}return this.source.slice(e,this.index)}getComplexIdentifier(){let e=this.codePointAt(this.index),t=h.fromCodePoint(e);this.index+=t.length;let i;for(e===92&&(this.source.charCodeAt(this.index)!==117&&this.throwUnexpectedToken(),this.index+=1,this.source[this.index]==="{"?(this.index+=1,i=this.scanUnicodeCodePointEscape()):(i=this.scanHexEscape("u"),(i===null||i==="\\"||!h.isIdentifierStart(i.charCodeAt(0)))&&this.throwUnexpectedToken()),t=i);!this.eof()&&(e=this.codePointAt(this.index),!!h.isIdentifierPart(e));)i=h.fromCodePoint(e),t+=i,this.index+=i.length,e===92&&(t=t.substring(0,t.length-1),this.source.charCodeAt(this.index)!==117&&this.throwUnexpectedToken(),this.index+=1,this.source[this.index]==="{"?(this.index+=1,i=this.scanUnicodeCodePointEscape()):(i=this.scanHexEscape("u"),(i===null||i==="\\"||!h.isIdentifierPart(i.charCodeAt(0)))&&this.throwUnexpectedToken()),t+=i);return t}octalToDecimal(e){let t=e!=="0",i=me(e);return!this.eof()&&h.isOctalDigit(this.source.charCodeAt(this.index))&&(t=!0,i=i*8+me(this.source[this.index]),this.index+=1,"0123".includes(e)&&!this.eof()&&h.isOctalDigit(this.source.charCodeAt(this.index))&&(i=i*8+me(this.source[this.index]),this.index+=1)),{code:i,octal:t}}scanIdentifier(){let e,t=this.index,i=this.source.charCodeAt(t)===92?this.getComplexIdentifier():this.getIdentifier();if(i.length===1?e=3:this.isKeyword(i)?e=4:i.toLowerCase()==="null"?e=5:i.toLowerCase()==="true"||i.toLowerCase()==="false"?e=1:e=3,e!==3&&t+i.length!==this.index){let r=this.index;this.index=t,this.tolerateUnexpectedToken("InvalidEscapedReservedWord"),this.index=r}return{type:e,value:i,lineNumber:this.lineNumber,lineStart:this.lineStart,start:t,end:this.index}}scanPunctuator(){let e=this.index,t=this.source[this.index];switch(t){case"(":case"{":t==="{"&&this.curlyStack.push("{"),this.index+=1;break;case".":this.index+=1;break;case"}":this.index+=1,this.curlyStack.pop();break;case")":case";":case",":case"[":case"]":case":":case"?":case"~":this.index+=1;break;default:for(let i=v.length;i>0;i-=1)if(t=this.source.substring(this.index,this.index+i),v[i-1].includes(t)){this.index+=i;break}}return this.index===e&&this.throwUnexpectedToken(),{type:7,value:t,lineNumber:this.lineNumber,lineStart:this.lineStart,start:e,end:this.index}}scanHexLiteral(e){let t="";for(;!this.eof()&&h.isHexDigit(this.source.charCodeAt(this.index));)t+=this.source[this.index],this.index+=1;return t.length===0&&this.throwUnexpectedToken(),h.isIdentifierStart(this.source.charCodeAt(this.index))&&this.throwUnexpectedToken(),{type:6,value:Number.parseInt(`0x${t}`,16),lineNumber:this.lineNumber,lineStart:this.lineStart,start:e,end:this.index}}scanBinaryLiteral(e){let t="";for(;!this.eof();){let i=this.source[this.index];if(i!=="0"&&i!=="1")break;t+=this.source[this.index],this.index+=1}if(t.length===0&&this.throwUnexpectedToken(),!this.eof()){let i=this.source.charCodeAt(this.index);(h.isIdentifierStart(i)||h.isDecimalDigit(i))&&this.throwUnexpectedToken()}return{type:6,value:Number.parseInt(t,2),lineNumber:this.lineNumber,lineStart:this.lineStart,start:e,end:this.index}}scanOctalLiteral(e,t){let i="",r=!1;for(h.isOctalDigit(e.charCodeAt(0))&&(r=!0,i=`0${this.source[this.index]}`),this.index+=1;!this.eof()&&h.isOctalDigit(this.source.charCodeAt(this.index));)i+=this.source[this.index],this.index+=1;return!r&&i.length===0&&this.throwUnexpectedToken(),(h.isIdentifierStart(this.source.charCodeAt(this.index))||h.isDecimalDigit(this.source.charCodeAt(this.index)))&&this.throwUnexpectedToken(),{type:6,value:Number.parseInt(i,8),lineNumber:this.lineNumber,lineStart:this.lineStart,start:t,end:this.index}}scanNumericLiteral(){let e=this.index,t=this.source[e];ze(h.isDecimalDigit(t.charCodeAt(0))||t===".","Numeric literal must start with a decimal digit or a decimal point");let i="";if(t!=="."){if(i=this.source[this.index],this.index+=1,t=this.source[this.index],i==="0"){if(t==="x"||t==="X")return this.index+=1,this.scanHexLiteral(e);if(t==="b"||t==="B")return this.index+=1,this.scanBinaryLiteral(e);if(t==="o"||t==="O")return this.scanOctalLiteral(t,e)}for(;h.isDecimalDigit(this.source.charCodeAt(this.index));)i+=this.source[this.index],this.index+=1;t=this.source[this.index]}if(t==="."){for(i+=this.source[this.index],this.index+=1;h.isDecimalDigit(this.source.charCodeAt(this.index));)i+=this.source[this.index],this.index+=1;t=this.source[this.index]}if(t==="e"||t==="E")if(i+=this.source[this.index],this.index+=1,t=this.source[this.index],(t==="+"||t==="-")&&(i+=this.source[this.index],this.index+=1),h.isDecimalDigit(this.source.charCodeAt(this.index)))for(;h.isDecimalDigit(this.source.charCodeAt(this.index));)i+=this.source[this.index],this.index+=1;else this.throwUnexpectedToken();return h.isIdentifierStart(this.source.charCodeAt(this.index))&&this.throwUnexpectedToken(),{type:6,value:Number.parseFloat(i),lineNumber:this.lineNumber,lineStart:this.lineStart,start:e,end:this.index}}scanStringLiteral(){let e=this.index,t=this.source[e];ze(t==="'"||t==='"',"String literal must starts with a quote"),this.index+=1;let i=!1,r="";for(;!this.eof();){let n=this.source[this.index];if(this.index+=1,n===t){t="";break}if(n==="\\")if(n=this.source[this.index],this.index+=1,!n||!h.isLineTerminator(n.charCodeAt(0)))switch(n){case"u":if(this.source[this.index]==="{")this.index+=1,r+=this.scanUnicodeCodePointEscape();else{let s=this.scanHexEscape(n);s===null&&this.throwUnexpectedToken(),r+=s}break;case"x":{let s=this.scanHexEscape(n);s===null&&this.throwUnexpectedToken("InvalidHexEscapeSequence"),r+=s;break}case"n":r+=`
2
+ `;break;case"r":r+="\r";break;case"t":r+=" ";break;case"b":r+="\b";break;case"f":r+="\f";break;case"v":r+="\v";break;case"8":case"9":r+=n,this.tolerateUnexpectedToken();break;default:if(n&&h.isOctalDigit(n.charCodeAt(0))){let s=this.octalToDecimal(n);i=s.octal||i,r+=String.fromCharCode(s.code)}else r+=n;break}else this.lineNumber+=1,n==="\r"&&this.source[this.index]===`
3
+ `&&(this.index+=1),this.lineStart=this.index;else{if(h.isLineTerminator(n.charCodeAt(0)))break;r+=n}}return t!==""&&(this.index=e,this.throwUnexpectedToken()),{type:8,value:r,lineNumber:this.lineNumber,lineStart:this.lineStart,start:e,end:this.index}}scanTemplate(){let e="",t=!1,i=this.index,r=this.source[i]==="`",n=!1,s=2;for(this.index+=1;!this.eof();){let a=this.source[this.index];if(this.index+=1,a==="`"){s=1,n=!0,t=!0;break}if(a==="$"){if(this.source[this.index]==="{"){this.curlyStack.push("${"),this.index+=1,t=!0;break}e+=a;continue}if(a==="\\"){if(a=this.source[this.index],this.index+=1,h.isLineTerminator(a.charCodeAt(0)))this.lineNumber+=1,a==="\r"&&this.source[this.index]===`
4
+ `&&(this.index+=1),this.lineStart=this.index;else switch(a){case"n":e+=`
5
+ `;break;case"r":e+="\r";break;case"t":e+=" ";break;case"u":if(this.source[this.index]==="{")this.index+=1,e+=this.scanUnicodeCodePointEscape();else{let o=this.index,u=this.scanHexEscape(a);u!==null?e+=u:(this.index=o,e+=a)}break;case"x":{let o=this.scanHexEscape(a);o===null&&this.throwUnexpectedToken("InvalidHexEscapeSequence"),e+=o;break}case"b":e+="\b";break;case"f":e+="\f";break;case"v":e+="\v";break;default:a==="0"?(h.isDecimalDigit(this.source.charCodeAt(this.index))&&this.throwUnexpectedToken("TemplateOctalLiteral"),e+="\0"):h.isOctalDigit(a.charCodeAt(0))?this.throwUnexpectedToken("TemplateOctalLiteral"):e+=a;break}continue}if(h.isLineTerminator(a.charCodeAt(0))){this.lineNumber+=1,a==="\r"&&this.source[this.index]===`
6
+ `&&(this.index+=1),this.lineStart=this.index,e+=`
7
+ `;continue}e+=a}return t||this.throwUnexpectedToken(),r||this.curlyStack.pop(),{type:10,value:this.source.slice(i+1,this.index-s),cooked:e,head:r,tail:n,lineNumber:this.lineNumber,lineStart:this.lineStart,start:i,end:this.index}}lex(){if(this.eof())return{type:2,value:"",lineNumber:this.lineNumber,lineStart:this.lineStart,start:this.index,end:this.index};let e=this.source.charCodeAt(this.index);return h.isIdentifierStart(e)?this.scanIdentifier():e===40||e===41||e===59?this.scanPunctuator():e===39||e===34?this.scanStringLiteral():e===46?h.isDecimalDigit(this.source.charCodeAt(this.index+1))?this.scanNumericLiteral():this.scanPunctuator():h.isDecimalDigit(e)?this.scanNumericLiteral():e===96||e===125&&this.curlyStack[this.curlyStack.length-1]==="${"?this.scanTemplate():e>=55296&&e<57343&&h.isIdentifierStart(this.codePointAt(this.index))?this.scanIdentifier():this.scanPunctuator()}};function $e(e,t=0){let i=e.start-e.lineStart,r=e.lineNumber;return i<0&&(i+=t,r-=1),{index:e.start,line:r,column:i}}function _e(e){return[{index:e.range[0],...e.loc.start},{index:e.range[1],...e.loc.end}]}function Ke(e){return Q[e]??0}var wt=class{constructor(e,t={},i){this.delegate=i,this.hasLineTerminator=!1,this.options={tokens:typeof t.tokens=="boolean"&&t.tokens,comments:typeof t.comments=="boolean"&&t.comments,tolerant:typeof t.tolerant=="boolean"&&t.tolerant},this.options.comments&&(this.commentHandler=new vt),this.errorHandler=new et(this.options.tolerant),this.scanner=new tt(e,this.errorHandler),this.context={isAssignmentTarget:!1,blockContext:0,curlyParsingType:0},this.rawToken={type:2,value:"",lineNumber:this.scanner.lineNumber,lineStart:0,start:0,end:0},this.tokens=[],this.startMarker={index:0,line:this.scanner.lineNumber,column:0},this.endMarker={index:0,line:this.scanner.lineNumber,column:0},this.readNextRawToken(),this.endMarker={index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}}throwIfInvalidType(e,t,{validTypes:i,invalidTypes:r}){i?.some(n=>e.type===n)||r?.some(n=>e.type===n)&&this.throwError("InvalidExpression",t)}throwError(e,t,i=this.endMarker){let{index:r,line:n,column:s}=t,a=i.index-r-1;this.errorHandler.throwError({code:e,index:r,line:n,column:s+1,len:a})}tolerateError(e,t){throw new Error("######################################### !!!")}unexpectedTokenError(e={}){let{rawToken:t}=e,{code:i,data:r}=e,n;if(t){if(!i)switch(t.type){case 2:i="UnexpectedEndOfScript";break;case 3:i="UnexpectedIdentifier";break;case 6:i="UnexpectedNumber";break;case 8:i="UnexpectedString";break;case 10:i="UnexpectedTemplate";break}n=t.value.toString()}else n="ILLEGAL";i??(i="UnexpectedToken"),r||(r={value:n});let s=fe(i,r);if(t){let u=t.start,l=t.lineNumber,d=t.start-t.lineStart+1;return new J({code:i,index:u,line:l,column:d,len:t.end-t.start-1,data:r,description:s})}let{index:a,line:o}=this.endMarker;return new J({code:i,index:a,line:o,column:this.endMarker.column+1,data:r,description:s})}throwUnexpectedToken(e={}){throw e.rawToken??(e.rawToken=this.rawToken),this.unexpectedTokenError(e)}collectComments(e){let{commentHandler:t}=this;!t||!e.length||e.forEach(i=>{let r={type:i.multiLine?"BlockComment":"LineComment",value:this.getSourceValue(i),range:i.range,loc:i.loc};t.collectComment(r)})}peekAhead(e){let t=()=>(this.scanner.scanComments(),this.scanner.lex()),i=this.scanner.saveState(),r=e.call(this,t);return this.scanner.restoreState(i),r}getSourceValue(e){return this.scanner.source.slice(e.start,e.end)}convertToToken(e){return{type:Ge[e.type],value:this.getSourceValue(e),range:[e.start,e.end],loc:{start:{line:this.startMarker.line,column:this.startMarker.column},end:{line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}}}}readNextRawToken(){this.endMarker.index=this.scanner.index,this.endMarker.line=this.scanner.lineNumber,this.endMarker.column=this.scanner.index-this.scanner.lineStart;let e=this.rawToken;this.collectComments(this.scanner.scanComments()),this.scanner.index!==this.startMarker.index&&(this.startMarker.index=this.scanner.index,this.startMarker.line=this.scanner.lineNumber,this.startMarker.column=this.scanner.index-this.scanner.lineStart),this.rawToken=this.scanner.lex(),this.hasLineTerminator=e.lineNumber!==this.rawToken.lineNumber,this.options.tokens&&this.rawToken.type!==2&&this.tokens.push(this.convertToToken(this.rawToken))}captureStartMarker(){return{index:this.startMarker.index,line:this.startMarker.line,column:this.startMarker.column}}getItemLocation(e){return{range:[e.index,this.endMarker.index],loc:{start:{line:e.line,column:e.column},end:{line:this.endMarker.line,column:this.endMarker.column}}}}finalize(e){return(this.delegate||this.commentHandler)&&(this.commentHandler?.attachComments(e),this.delegate?.(e)),e}expectPunctuator(e){let t=this.rawToken;if(this.matchPunctuator(e)){this.readNextRawToken();return}this.throwUnexpectedToken({rawToken:t,code:"PunctuatorExpected",data:{value:e}})}expectKeyword(e){if(this.rawToken.type===4&&this.rawToken.value.toLowerCase()===e){this.readNextRawToken();return}this.throwUnexpectedToken({rawToken:this.rawToken})}expectContextualKeyword(e){if(this.rawToken.type===3&&this.rawToken.value.toLowerCase()===e){this.readNextRawToken();return}this.throwUnexpectedToken({rawToken:this.rawToken})}matchKeyword(e){return this.rawToken.type===4&&this.rawToken.value.toLowerCase()===e}matchContextualKeyword(e){return this.rawToken.type===3&&this.rawToken.value===e}matchPunctuator(e){return this.rawToken.type===7&&this.rawToken.value===e}getMatchingPunctuator(e){if(typeof e=="string"&&(e=e.split("")),!(this.rawToken.type!==7||!e?.length))return e.find(this.matchPunctuator,this)}isolateCoverGrammar(e){let t=this.context.isAssignmentTarget;this.context.isAssignmentTarget=!0;let i=e.call(this);return this.context.isAssignmentTarget=t,i}inheritCoverGrammar(e){var t;let i=this.context.isAssignmentTarget;this.context.isAssignmentTarget=!0;let r=e.call(this);return(t=this.context).isAssignmentTarget&&(t.isAssignmentTarget=i),r}withBlockContext(e,t){let i=this.context.blockContext;this.context.blockContext|=e;let r=this.context.curlyParsingType;this.context.curlyParsingType=1;let n=t.call(this);return this.context.blockContext=i,this.context.curlyParsingType=r,n}consumeSemicolon(){if(this.matchPunctuator(";")){this.readNextRawToken();return}if(!this.hasLineTerminator){if(this.rawToken.type===2||this.matchPunctuator("}")){this.endMarker.index=this.startMarker.index,this.endMarker.line=this.startMarker.line,this.endMarker.column=this.startMarker.column;return}this.throwUnexpectedToken({rawToken:this.rawToken})}}parsePrimaryExpression(){let e=this.captureStartMarker(),t=this.rawToken;switch(t.type){case 3:return this.readNextRawToken(),this.finalize({type:"Identifier",name:t.value,...this.getItemLocation(e)});case 6:case 8:return this.context.isAssignmentTarget=!1,this.readNextRawToken(),this.finalize({type:"Literal",value:t.value,raw:this.getSourceValue(t),isString:typeof t.value=="string",...this.getItemLocation(e)});case 1:return this.context.isAssignmentTarget=!1,this.readNextRawToken(),this.finalize({type:"Literal",value:t.value.toLowerCase()==="true",raw:this.getSourceValue(t),isString:!1,...this.getItemLocation(e)});case 5:return this.context.isAssignmentTarget=!1,this.readNextRawToken(),this.finalize({type:"Literal",value:null,raw:this.getSourceValue(t),isString:!1,...this.getItemLocation(e)});case 10:return this.parseTemplateLiteral();case 7:switch(t.value){case"(":return this.inheritCoverGrammar(this.parseGroupExpression);case"[":return this.inheritCoverGrammar(this.parseArrayInitializer);case"{":return this.inheritCoverGrammar(this.parseObjectExpression);default:return this.throwUnexpectedToken({rawToken:this.rawToken})}case 4:return this.context.isAssignmentTarget=!1,this.throwUnexpectedToken({rawToken:this.rawToken});default:return this.throwUnexpectedToken({rawToken:this.rawToken})}}parseArrayInitializer(){let e=this.captureStartMarker();this.expectPunctuator("[");let t=[];for(;!this.matchPunctuator("]");){let i=this.captureStartMarker();this.matchPunctuator(",")?(this.readNextRawToken(),this.throwError("InvalidExpression",i)):(t.push(this.inheritCoverGrammar(this.parseAssignmentExpression)),this.matchPunctuator("]")||this.expectPunctuator(","))}return this.expectPunctuator("]"),this.finalize({type:"ArrayExpression",elements:t,...this.getItemLocation(e)})}parseObjectPropertyKey(){let e=this.captureStartMarker(),t=this.rawToken;switch(t.type){case 8:return this.readNextRawToken(),this.finalize({type:"Literal",value:t.value,raw:this.getSourceValue(t),isString:!0,...this.getItemLocation(e)});case 3:case 1:case 5:case 4:return this.readNextRawToken(),this.finalize({type:"Identifier",name:t.value,...this.getItemLocation(e)});default:this.throwError("KeyMustBeString",e)}}parseObjectProperty(){let e=this.rawToken,t=this.captureStartMarker(),i=this.parseObjectPropertyKey(),r=!1,n=null;return this.matchPunctuator(":")?(this.readNextRawToken(),n=this.inheritCoverGrammar(this.parseAssignmentExpression)):e.type===3?(r=!0,n=this.finalize({type:"Identifier",name:e.value,...this.getItemLocation(t)})):this.throwUnexpectedToken({rawToken:this.rawToken}),this.finalize({type:"Property",kind:"init",key:i,value:n,shorthand:r,...this.getItemLocation(t)})}parseObjectExpression(){let e=this.captureStartMarker();this.expectPunctuator("{");let t=[];for(;!this.matchPunctuator("}");)t.push(this.parseObjectProperty()),this.matchPunctuator("}")||this.expectPunctuator(",");return this.expectPunctuator("}"),this.finalize({type:"ObjectExpression",properties:t,...this.getItemLocation(e)})}parseTemplateElement(e=!1){let t=this.rawToken;t.type!==10&&this.throwUnexpectedToken({rawToken:t}),e&&!t.head&&this.throwUnexpectedToken({code:"InvalidTemplateHead",rawToken:t});let i=this.captureStartMarker();this.readNextRawToken();let{value:r,cooked:n,tail:s}=t,a=this.finalize({type:"TemplateElement",value:{raw:r,cooked:n},tail:s,...this.getItemLocation(i)});return a.loc.start.column+=1,a.loc.end.column-=s?1:2,a}parseTemplateLiteral(){let e=this.captureStartMarker(),t=[],i=[],r=this.parseTemplateElement(!0);for(i.push(r);!r.tail;)t.push(this.parseExpression()),r=this.parseTemplateElement(),i.push(r);return this.finalize({type:"TemplateLiteral",quasis:i,expressions:t,...this.getItemLocation(e)})}parseGroupExpression(){this.expectPunctuator("(");let e=this.inheritCoverGrammar(this.parseAssignmentExpression);return this.expectPunctuator(")"),e}parseArguments(){this.expectPunctuator("(");let e=[];if(!this.matchPunctuator(")"))for(;;){let t=this.isolateCoverGrammar(this.parseAssignmentExpression);if(e.push(t),this.matchPunctuator(")")||(this.expectPunctuator(","),this.matchPunctuator(")")))break}return this.expectPunctuator(")"),e}parseMemberName(){let e=this.rawToken,t=this.captureStartMarker();return this.readNextRawToken(),e.type!==5&&e.type!==3&&e.type!==4&&e.type!==1&&this.throwUnexpectedToken({rawToken:e}),this.finalize({type:"Identifier",name:e.value,...this.getItemLocation(t)})}parseLeftHandSideExpression(){let e=this.captureStartMarker(),t=this.inheritCoverGrammar(this.parsePrimaryExpression),i=this.captureStartMarker(),r;for(;r=this.getMatchingPunctuator("([.");)switch(r){case"(":{this.context.isAssignmentTarget=!1,t.type!=="Identifier"&&t.type!=="MemberExpression"&&this.throwError("IdentiferExpected",e,i);let n=this.parseArguments();t=this.finalize({type:"CallExpression",callee:t,arguments:n,...this.getItemLocation(e)});continue}case"[":{this.context.isAssignmentTarget=!0,this.expectPunctuator("[");let n=this.isolateCoverGrammar(this.parseExpression);this.expectPunctuator("]"),t=this.finalize({type:"MemberExpression",computed:!0,object:t,property:n,...this.getItemLocation(e)});continue}case".":{this.context.isAssignmentTarget=!0,this.expectPunctuator(".");let n=this.parseMemberName();t=this.finalize({type:"MemberExpression",computed:!1,object:t,property:n,...this.getItemLocation(e)});continue}default:break}return t}parseUpdateExpression(){let e=this.captureStartMarker(),t=this.getMatchingPunctuator(De);if(t){this.readNextRawToken();let s=this.captureStartMarker(),a=this.inheritCoverGrammar(this.parseUnaryExpression);return a.type!=="Identifier"&&a.type!=="MemberExpression"&&a.type!=="CallExpression"&&this.throwError("InvalidExpression",s),this.context.isAssignmentTarget||this.tolerateError("InvalidLeftHandSideInAssignment",e),this.context.isAssignmentTarget=!1,this.finalize({type:"UpdateExpression",operator:t,argument:a,prefix:!0,...this.getItemLocation(e)})}let i=this.captureStartMarker(),r=this.inheritCoverGrammar(this.parseLeftHandSideExpression),n=this.captureStartMarker();return this.hasLineTerminator||(t=this.getMatchingPunctuator(De),!t)?r:(r.type!=="Identifier"&&r.type!=="MemberExpression"&&this.throwError("InvalidExpression",i,n),this.context.isAssignmentTarget||this.tolerateError("InvalidLeftHandSideInAssignment",e),this.readNextRawToken(),this.context.isAssignmentTarget=!1,this.finalize({type:"UpdateExpression",operator:t,argument:r,prefix:!1,...this.getItemLocation(e)}))}parseUnaryExpression(){let e=this.getMatchingPunctuator(We);if(e){let t=this.captureStartMarker();this.readNextRawToken();let i=this.inheritCoverGrammar(this.parseUnaryExpression);return this.context.isAssignmentTarget=!1,this.finalize({type:"UnaryExpression",operator:e,argument:i,prefix:!0,...this.getItemLocation(t)})}return this.parseUpdateExpression()}parseBinaryExpression(){let e=this.rawToken,t=this.inheritCoverGrammar(this.parseUnaryExpression);if(this.rawToken.type!==7)return t;let i=this.rawToken.value,r=Ke(i);if(r===0)return t;this.readNextRawToken(),this.context.isAssignmentTarget=!1;let n=[e,this.rawToken],s=t,a=this.inheritCoverGrammar(this.parseUnaryExpression),o=[s,i,a],u=[r];for(;this.rawToken.type===7&&(r=Ke(this.rawToken.value))>0;){for(;o.length>2&&r<=u[u.length-1];){a=o.pop();let g=o.pop();u.pop(),s=o.pop(),n.pop();let L=n[n.length-1],pe=$e(L,L.lineStart);o.push(this.finalize(this.createBinaryOrLogicalExpression(pe,g,s,a)))}o.push(this.rawToken.value),u.push(r),n.push(this.rawToken),this.readNextRawToken(),o.push(this.inheritCoverGrammar(this.parseUnaryExpression))}let l=o.length-1;t=o[l];let d=n.pop();for(;l>1;){let g=n.pop();if(!g)break;let L=d?.lineStart,pe=$e(g,L),Pt=o[l-1];t=this.finalize(this.createBinaryOrLogicalExpression(pe,Pt,o[l-2],t)),l-=2,d=g}return t}createBinaryOrLogicalExpression(e,t,i,r){let n=He.includes(t)?"LogicalExpression":"BinaryExpression";return n==="BinaryExpression"?{type:n,operator:t,left:i,right:r,...this.getItemLocation(e)}:((i.type==="AssignmentExpression"||i.type==="UpdateExpression")&&this.throwError("InvalidExpression",..._e(i)),(r.type==="AssignmentExpression"||r.type==="UpdateExpression")&&this.throwError("InvalidExpression",..._e(i)),{type:n,operator:t,left:i,right:r,...this.getItemLocation(e)})}parseAssignmentExpression(){let e=this.captureStartMarker(),t=this.inheritCoverGrammar(this.parseBinaryExpression),i=this.captureStartMarker(),r=this.getMatchingPunctuator(qe);if(!r)return t;t.type!=="Identifier"&&t.type!=="MemberExpression"&&this.throwError("InvalidExpression",e,i),this.context.isAssignmentTarget||this.tolerateError("InvalidLeftHandSideInAssignment",e),this.matchPunctuator("=")||(this.context.isAssignmentTarget=!1),this.readNextRawToken();let n=this.isolateCoverGrammar(this.parseAssignmentExpression);return this.finalize({type:"AssignmentExpression",left:t,operator:r,right:n,...this.getItemLocation(e)})}parseExpression(){return this.isolateCoverGrammar(this.parseAssignmentExpression)}parseStatements(e){let t=[];for(;this.rawToken.type!==2&&!this.matchPunctuator(e);){let i=this.parseStatementListItem();R(i)||t.push(i)}return t}parseStatementListItem(){return this.context.isAssignmentTarget=!0,this.matchKeyword("function")?this.parseFunctionDeclaration():this.matchKeyword("export")?this.parseExportDeclaration():this.matchKeyword("import")?this.parseImportDeclaration():this.parseStatement()}parseBlock(){let e=this.captureStartMarker();this.expectPunctuator("{");let t=this.parseStatements("}");return this.expectPunctuator("}"),this.finalize({type:"BlockStatement",body:t,...this.getItemLocation(e)})}parseObjectStatement(){let e=this.captureStartMarker(),t=this.parseObjectExpression();return this.finalize({type:"ExpressionStatement",expression:t,...this.getItemLocation(e)})}parseBlockOrObjectStatement(){return this.context.curlyParsingType===0?this.parseObjectStatement():this.peekAhead(e=>{let t=e();return!(t.type!==3&&t.type!==8||(t=e(),t.type!==7||t.value!==":"))})?this.parseObjectStatement():this.parseBlock()}parseIdentifier(){let e=this.rawToken;if(e.type!==3)return null;let t=this.captureStartMarker();return this.readNextRawToken(),this.finalize({type:"Identifier",name:e.value,...this.getItemLocation(t)})}parseVariableDeclarator(){let e=this.captureStartMarker(),t=this.parseIdentifier();t||this.throwUnexpectedToken({code:"IdentiferExpected"});let i=null;if(this.matchPunctuator("=")){this.readNextRawToken();let r=this.rawToken;try{i=this.isolateCoverGrammar(this.parseAssignmentExpression)}catch{this.throwUnexpectedToken({rawToken:r,code:"InvalidVariableAssignment"})}}return this.finalize({type:"VariableDeclarator",id:t,init:i,...this.getItemLocation(e)})}parseVariableDeclarationList(){let e=[this.parseVariableDeclarator()];for(;this.matchPunctuator(",");)this.readNextRawToken(),e.push(this.parseVariableDeclarator());return e}parseVariableDeclaration(){let e=this.captureStartMarker();this.expectKeyword("var");let t=this.parseVariableDeclarationList();return this.consumeSemicolon(),this.finalize({type:"VariableDeclaration",declarations:t,kind:"var",...this.getItemLocation(e)})}parseEmptyStatement(){let e=this.captureStartMarker();return this.expectPunctuator(";"),this.finalize({type:"EmptyStatement",...this.getItemLocation(e)})}parseExpressionStatement(){let e=this.captureStartMarker(),t=this.parseExpression();return this.consumeSemicolon(),this.finalize({type:"ExpressionStatement",expression:t,...this.getItemLocation(e)})}parseIfClause(){return this.withBlockContext(2,this.parseStatement)}parseIfStatement(){let e=this.captureStartMarker();this.expectKeyword("if"),this.expectPunctuator("(");let t=this.captureStartMarker(),i=this.parseExpression(),r=this.captureStartMarker();this.expectPunctuator(")"),(i.type==="AssignmentExpression"||i.type==="UpdateExpression")&&this.throwError("InvalidExpression",t,r);let n=this.parseIfClause(),s=null;return this.matchKeyword("else")&&(this.readNextRawToken(),s=this.parseIfClause()),this.finalize({type:"IfStatement",test:i,consequent:n,alternate:s,...this.getItemLocation(e)})}parseWhileStatement(){let e=this.captureStartMarker();this.expectKeyword("while"),this.expectPunctuator("(");let t=this.captureStartMarker(),i=this.parseExpression(),r=this.captureStartMarker();this.expectPunctuator(")"),(i.type==="AssignmentExpression"||i.type==="UpdateExpression")&&this.throwError("InvalidExpression",t,r);let n=this.withBlockContext(8,this.parseStatement);return this.finalize({type:"WhileStatement",test:i,body:n,...this.getItemLocation(e)})}parseForStatement(){let e=null,t=null,i=null,r=null,n=null,s=this.captureStartMarker();if(this.expectKeyword("for"),this.expectPunctuator("("),this.matchPunctuator(";"))this.readNextRawToken();else if(this.matchKeyword("var")){let o=this.captureStartMarker();this.readNextRawToken();let u=this.parseVariableDeclarationList();u.length===1&&this.matchKeyword("in")?(u[0].init&&this.throwError("ForInOfLoopInitializer",o),r=this.finalize({type:"VariableDeclaration",declarations:u,kind:"var",...this.getItemLocation(o)}),this.readNextRawToken(),n=this.parseExpression()):(this.matchKeyword("in")&&this.throwError("InvalidLeftHandSideInForIn",o),e=this.finalize({type:"VariableDeclaration",declarations:u,kind:"var",...this.getItemLocation(o)}),this.expectPunctuator(";"))}else{let o=this.context.isAssignmentTarget,u=this.captureStartMarker();e=this.inheritCoverGrammar(this.parseAssignmentExpression),this.matchKeyword("in")?(this.context.isAssignmentTarget||this.tolerateError("InvalidLeftHandSideInForIn",u),e.type!=="Identifier"&&this.throwError("InvalidLeftHandSideInForIn",u),this.readNextRawToken(),r=e,n=this.parseExpression(),e=null):(this.context.isAssignmentTarget=o,this.expectPunctuator(";"))}r||(this.matchPunctuator(";")||(t=this.isolateCoverGrammar(this.parseExpression)),this.expectPunctuator(";"),this.matchPunctuator(")")||(i=this.isolateCoverGrammar(this.parseExpression))),this.expectPunctuator(")");let a=this.withBlockContext(4,()=>this.isolateCoverGrammar(this.parseStatement));return r&&n?this.finalize({type:"ForInStatement",left:r,right:n,body:a,...this.getItemLocation(s)}):this.finalize({type:"ForStatement",init:e,test:t,update:i,body:a,...this.getItemLocation(s)})}parseContinueStatement(){let e=this.captureStartMarker();return this.expectKeyword("continue"),this.consumeSemicolon(),this.finalize({type:"ContinueStatement",...this.getItemLocation(e)})}parseBreakStatement(){let e=this.captureStartMarker();return this.expectKeyword("break"),this.consumeSemicolon(),this.finalize({type:"BreakStatement",...this.getItemLocation(e)})}parseReturnStatement(){let e=this.captureStartMarker();this.expectKeyword("return");let t=!this.matchPunctuator(";")&&!this.matchPunctuator("}")&&!this.hasLineTerminator&&this.rawToken.type!==2||this.rawToken.type===8||this.rawToken.type===10?this.parseExpression():null;return this.consumeSemicolon(),this.finalize({type:"ReturnStatement",argument:t,...this.getItemLocation(e)})}parseStatement(){switch(this.rawToken.type){case 1:case 5:case 6:case 8:case 10:case 3:return this.parseExpressionStatement();case 7:return this.rawToken.value==="{"?this.parseBlockOrObjectStatement():this.rawToken.value==="("?this.parseExpressionStatement():this.rawToken.value===";"?this.parseEmptyStatement():this.parseExpressionStatement();case 4:switch(this.rawToken.value.toLowerCase()){case"break":return this.parseBreakStatement();case"continue":return this.parseContinueStatement();case"for":return this.parseForStatement();case"function":return this.parseFunctionDeclaration();case"if":return this.parseIfStatement();case"return":return this.parseReturnStatement();case"var":return this.parseVariableDeclaration();case"while":return this.parseWhileStatement();default:return this.parseExpressionStatement()}default:return this.throwUnexpectedToken({rawToken:this.rawToken})}}parseFormalParameters(){let e=[];if(this.expectPunctuator("("),!this.matchPunctuator(")"))for(;this.rawToken.type!==2;){let t=this.parseIdentifier();if(t||this.throwUnexpectedToken({rawToken:this.rawToken,code:"IdentiferExpected"}),e.push(t),this.matchPunctuator(")")||(this.expectPunctuator(","),this.matchPunctuator(")")))break}return this.expectPunctuator(")"),e}parseFunctionDeclaration(){(this.context.blockContext&1)===1&&this.throwUnexpectedToken({code:"NoFunctionInsideFunction"}),((this.context.blockContext&8)===8||(this.context.blockContext&2)===2)&&this.throwUnexpectedToken({code:"NoFunctionInsideBlock"});let e=this.captureStartMarker();this.expectKeyword("function");let t=this.parseIdentifier();t||this.throwUnexpectedToken({code:"InvalidFunctionIdentifier"});let i=this.parseFormalParameters(),r=this.context.blockContext;this.context.blockContext|=1;let n=this.parseBlock();return this.context.blockContext=r,this.finalize({type:"FunctionDeclaration",id:t,params:i,body:n,...this.getItemLocation(e)})}parseScript(){let e=this.captureStartMarker(),t=this.parseStatements(),i=this.finalize({type:"Program",body:t,...this.getItemLocation(e)});return this.options.tokens&&(i.tokens=this.tokens),this.options.tolerant&&(i.errors=this.errorHandler.errors),i}parseExportDeclaration(){this.context.blockContext!==0&&this.throwUnexpectedToken({code:"ModuleExportRootOnly"});let e=null,t=this.captureStartMarker();return this.expectKeyword("export"),this.matchKeyword("var")?e=this.parseVariableDeclaration():this.matchKeyword("function")?e=this.parseFunctionDeclaration():this.throwUnexpectedToken({code:"InvalidExpression"}),this.finalize({type:"ExportNamedDeclaration",declaration:e,specifiers:[],source:null,...this.getItemLocation(t)})}parseModuleSpecifier(){let e=this.captureStartMarker(),t=this.rawToken;if(t.type===8)return this.readNextRawToken(),this.finalize({type:"Literal",value:t.value,raw:this.getSourceValue(t),isString:!0,...this.getItemLocation(e)});this.throwError("InvalidModuleUri",e)}parseDefaultSpecifier(){let e=this.captureStartMarker(),t=this.parseIdentifier();return t||this.throwUnexpectedToken({code:"IdentiferExpected"}),this.finalize({type:"ImportDefaultSpecifier",local:t,...this.getItemLocation(e)})}parseImportDeclaration(){this.context.blockContext!==0&&this.throwUnexpectedToken({code:"ModuleImportRootOnly"});let e=this.captureStartMarker();this.expectKeyword("import");let t=this.parseDefaultSpecifier();this.expectContextualKeyword("from");let i=this.parseModuleSpecifier();return this.finalize({type:"ImportDeclaration",specifiers:[t],source:i,...this.getItemLocation(e)})}},Tt=class{constructor(e,t){this.errorHandler=new et,this.errorHandler.tolerant=t?typeof t.tolerant=="boolean"&&t.tolerant:!1,this.scanner=new tt(e,this.errorHandler),this.trackComments=t?typeof t.comment=="boolean"&&t.comment:!1,this.buffer=[]}errors(){return this.errorHandler.errors}getNextToken(){if(this.buffer.length===0){let e=this.scanner.scanComments();if(this.trackComments&&e.forEach(t=>{let i=this.scanner.source.slice(t.start,t.end),r={type:t.multiLine?"BlockComment":"LineComment",value:i,range:t.range,loc:t.loc};this.buffer.push(r)}),!this.scanner.eof()){let t={line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart},i=this.scanner.lex(),r={line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart},n={type:Ge[i.type],value:this.scanner.source.slice(i.start,i.end),range:[i.start,i.end],loc:{start:t,end:r}};this.buffer.push(n)}}return this.buffer.shift()}};function W(e,t,i){return new wt(e,t,i).parseScript()}function it(e,t,i){let r=new Tt(e,t),n=[],s;try{let a;for(;a=r.getNextToken();)i&&(a=i(a)),n.push(a)}catch(a){r.errorHandler.tolerate(a)}return r.errorHandler.tolerant&&(s=r.errors()),{tokens:n,errors:s}}import{DiagnosticSeverity as f}from"vscode-languageserver-types";var rt=(D=>(D.AlreadyDefined="AlreadyDefined",D.ApiConflict="ApiConflict",D.AssignedNeverUsed="AssignedNeverUsed",D.DefinedNeverAssigned="DefinedNeverAssigned",D.DefinedNeverUsed="DefinedNeverUsed",D.EmptyBlockStatement="EmptyBlockStatement",D.ExecutionError="ExecutionError",D.InvalidApiFunctionUsage="InvalidApiFunctionUsage",D.InvalidConstantIdentifier="InvalidConstantIdentifier",D.InvalidPropertyIdentifier="InvalidPropertyIdentifier",D.NoArgumentExpected="NoArgumentExpected",D.NotADictionary="NotADictionary",D.NotDefined="NotDefined",D.NotEnoughArguments="NotEnoughArguments",D.ProfileVariablesAreImmutable="ProfileVariablesAreImmutable",D.ProfileVariablesConflict="ProfileVariablesConflict",D.ReservedKeyword="ReservedKeyword",D.TooManyArguments="TooManyArguments",D.UnexpectedEmptyFunction="UnexpectedEmptyFunction",D.UnexpectedPropertyIdentifier="UnexpectedPropertyIdentifier",D.UnknownPropertyIdentifier="UnknownPropertyIdentifier",D))(rt||{}),nt={AlreadyDefined:"'${identifier}' is already defined.",ApiConflict:"'${identifier}' is already defined as an Arcade constant or function.",AssignedNeverUsed:"'${identifier}' is assigned but never used.",DefinedNeverAssigned:"'${identifier}' is defined but never assigned.",DefinedNeverUsed:"'${identifier}' is defined but never used.",EmptyBlockStatement:"Empty block statement.",ExecutionError:"Execution Error: '${stack}'",InvalidApiFunctionUsage:"Arcade function '${identifier}' not used in a call expression.",InvalidConstantIdentifier:"Invalid constant identifier, expecting ${list}.",InvalidPropertyIdentifier:"Invalid property identifier, expecting ${list}.",NoArgumentExpected:"Expecting no argument.",NotADictionary:"'${identifier}' doesn't have properties.",NotDefined:"'${identifier}' is not defined.",NotEnoughArguments:"Expecting at least ${min} argument(s).",ProfileVariablesAreImmutable:"Profile variables cannot be modified.",ProfileVariablesConflict:"'${identifier}' is already defined as a profile variable.",ReservedKeyword:"'${identifier}' is a reserved keyword.",TooManyArguments:"Too many arguments, expecting ${max}.",UnexpectedEmptyFunction:"Unexpected empty function '${identifier}'.",UnexpectedPropertyIdentifier:"Unexpected property identifier.",UnknownPropertyIdentifier:"Unknown property identifier '${identifier}'.",...j};var st=Object.values(xe),at=Object.values(ge),ot=["case","catch","debugger","switch","try"];import{CompletionItemKind as ut,InsertTextFormat as Nt,InsertTextMode as Mt,MarkupKind as Ut}from"vscode-languageserver-types";var ct=new Map;function Ot(e){return Array.isArray(e?.testSdkCategories)}function Vt(e,t){return`${e}/api/arcade-api.t9n.${t}.json`}var Z=class{constructor(t={}){this._settings=t}async getApiDatabase(t){let{locale:i="en"}=t,r=ct.get(i);if(!r){let{assetsPath:n}=this._settings;if(!n)return{categories:[],functionDefinitions:new Map,constantDefinitions:new Map};r=this.loadSdkApiLibrary(i,n),ct.set(i,r)}return this.filterApi(r,t)}async getApiLibrary(t){let{categories:i}=await this.getApiDatabase(t);return i}async filterApi(t,i){try{let r=await t,n=new Map,s=new Map,a=[],o=zt(i);return r.forEach(u=>{let l=[];u.items.forEach(d=>jt(l,s,n,o,d)),l.length&&a.push({...u,items:l})}),{categories:a,functionDefinitions:n,constantDefinitions:s}}catch{return{categories:[],functionDefinitions:new Map,constantDefinitions:new Map}}}async loadSdkApiLibrary(t="en",i=""){if(Ot(this._settings))return this._settings.testSdkCategories;if(i=i.replace(/\/$/u,""),!i)return[];try{let r=await fetch(Vt(i,t));return r.ok?r.json():t==="en"?[]:this.loadSdkApiLibrary("en",i)}catch{return[]}}};function zt(e){let{profile:{apiVersion:t,bundles:i,hiddenApiItems:r=[]}={}}=e,n=pt(t),s=Array.isArray(i)&&i.length>0?new Set(["core",...i]):void 0;return a=>$t(n,a.sinceVersion)&&(!s||s.has(a.bundle))&&!r.includes(a.name)}function jt(e,t,i,r,n){if(Array.isArray(n)){n.forEach(s=>lt(e,i,r,s));return}if(n.type==="constant")return Rt(e,t,r,n);lt(e,i,r,n)}function lt(e,t,i,r){if(!i(r))return;r.disableDocumentation||e.push(r);let{completion:{label:n}}=r,s=n.toLowerCase(),a=t.get(s);a||(a={type:"functionDefinition",key:s,overloads:[]},t.set(s,a)),a.overloads.push(r)}function Rt(e,t,i,r){if(!i(r))return;e.push(r);let{completion:{label:n}}=r,s=n.toLowerCase();t.set(s,r);let[a,o]=r.completion.label.split(".");if(!o)return;let u=a.toLowerCase(),l=t.get(u);l||(l={type:"namespace",key:u,members:[],completion:{label:a,detail:a,insertText:a,insertTextMode:Mt.adjustIndentation,insertTextFormat:Nt.PlainText,kind:ut.Enum}},t.set(u,l));let d=JSON.parse(JSON.stringify(r));d.key=o.toLowerCase(),d.name=o,d.completion.label=o,d.completion.insertText=o,d.completion.kind=ut.Constant,l.members.push(d),l.completion.documentation=l.members.reduce((g,L)=>(g.value=`${g.value}${g.value?`
8
8
 
9
- `:""}**${L.completion.label}**: ${L.description}`,g),{kind:Ut.Markdown,value:""})}function pt(e){if(!e||typeof e!="string")return null;let t=e.split(".").map(n=>parseInt(n));if(t.some(isNaN))return console.error("Arcade: invalid API version string",e),null;let[i,r]=t.slice(0,2);return{major:i,minor:r}}function _t(e,t){if(!e)return!0;let i=pt(t);return i?e.major>i.major?!1:e.minor===void 0||i.minor===void 0?!0:i.minor<=e.minor:!0}import{CompletionItemKind as te,InsertTextFormat as gt,InsertTextMode as xt}from"vscode-languageserver-types";import{CompletionItemKind as E,InsertTextFormat as y,InsertTextMode as S}from"vscode-languageserver-types";var ht=at.map(e=>({label:e,kind:E.Constant})),dt=st.map(e=>({label:e,kind:E.Keyword})),mt=[{label:"exportfunction",kind:E.Snippet,detail:"Export Function Statement",insertText:`export function \${1:functionName} ($2) {
9
+ `:""}**${L.completion.label}**: ${L.description}`,g),{kind:Ut.Markdown,value:""})}function pt(e){if(!e||typeof e!="string")return null;let t=e.split(".").map(n=>Number.parseInt(n));if(t.some(Number.isNaN))return console.error("Arcade: invalid API version string",e),null;let[i,r]=t.slice(0,2);return{major:i,minor:r}}function $t(e,t){if(!e)return!0;let i=pt(t);return i?e.major>i.major?!1:e.minor===void 0||i.minor===void 0?!0:i.minor<=e.minor:!0}import{CompletionItemKind as te,InsertTextFormat as gt,InsertTextMode as xt}from"vscode-languageserver-types";import{CompletionItemKind as E,InsertTextFormat as y,InsertTextMode as S}from"vscode-languageserver-types";var ht=at.map(e=>({label:e,kind:E.Constant})),dt=st.map(e=>({label:e,kind:E.Keyword})),mt=[{label:"exportfunction",kind:E.Snippet,detail:"Export Function Statement",insertText:`export function \${1:functionName} ($2) {
10
10
  $0
11
11
  }`,insertTextMode:S.adjustIndentation,insertTextFormat:y.Snippet},{label:"exportvar",kind:E.Snippet,detail:"Export Variable Statement",insertText:"export var ${0:variableName}\n",insertTextMode:S.adjustIndentation,insertTextFormat:y.Snippet},{label:"for",kind:E.Snippet,detail:"For Loop Statement",insertText:"for (var ${1:i} = 0; ${1:i} < ${2:array.length}; ${1:i}++) {\n $0\n}",insertTextMode:S.adjustIndentation,insertTextFormat:y.Snippet},{label:"forin",kind:E.Snippet,detail:"For-In Loop Statement",insertText:"for (var ${1:i} in ${2:arrayOrObject}) {\n $0\n}",insertTextMode:S.adjustIndentation,insertTextFormat:y.Snippet},{label:"function",kind:E.Snippet,detail:"Function Statement",insertText:`function \${1:functionName} ($2) {
12
12
  $0
@@ -20,13 +20,13 @@ function he(e){return!!e&&e.type!=="dictionary"}function Oe(e){return e?.type===
20
20
  $0
21
21
  }`,insertTextMode:S.adjustIndentation,insertTextFormat:y.Snippet},{label:"import",kind:E.Snippet,detail:"Import Statement",insertText:'import ${1:namespace} from "${0:uri}"',insertTextMode:S.adjustIndentation,insertTextFormat:y.Snippet},{label:"while",kind:E.Snippet,detail:"While Loop Statement",insertText:`while (\${1:false}) {
22
22
  $0
23
- }`,insertTextMode:S.adjustIndentation,insertTextFormat:y.Snippet}];import{CompletionItemKind as $i,InsertTextFormat as Ki,InsertTextMode as Wi}from"vscode-languageserver-types";function P(e,t){return t?e.replace(/\${(.*?)}/g,(i,r)=>t[r]?.toString()??""):e}var Y=/[-[\]/{}()*+?.\\^$|]/g;function $t(e,t){return e.line>t.end.line}function Kt(e,t){return e.line<t.start.line}function Se(e,t){return!(!t||Kt(e,t)||$t(e,t)||e.line===t.start.line&&e.column<t.start.column||e.line===t.end.line&&e.column>t.end.column)}var b={identifiers:"a",profileVariables:"aa",constants:"ab",literals:"ab",functions:"ac",snippets:"b",keywords:"c"};async function Ct(e,t,i,r={}){let n=e.getText({start:{line:0,character:0},end:t}),{tokens:s,errors:a=[]}=it(n,{loc:!0,tolerant:!0});if(a.length)return{isIncomplete:!1,items:[]};let o=s[s.length-1],u="",l=ii(t);o?.type==="Identifier"&&Se(l,o.loc)&&(u=o.value??"",s.pop(),o=s[s.length-1]);let d={variables:r.profile?.variables??[],additionalCompletionItems:(r.snippets??[]).map(g=>({kind:te.Snippet,insertTextMode:xt.adjustIndentation,insertTextFormat:gt.Snippet,...g})),apiDatabase:i};return o?.type==="Punctuator"&&o.value==="."?qt(s,u,d):Wt(s,u,l,d)}async function Wt(e,t,i,r){let n=Jt(e,i);if(n===0)return{isIncomplete:!1,items:[]};let s=Xt(e),a=[],o=new RegExp(t.replaceAll(Y,"\\$&"),"i");return s.forEach((u,l)=>{o.test(l)&&a.push({...u,sortText:b.identifiers})}),r.variables.forEach(u=>{o.test(u.name)&&u.completion&&a.push({...u.completion,sortText:b.profileVariables})}),Dt(n)&&mt.forEach(u=>{u.label.startsWith(t)&&a.push({...u,sortText:b.snippets})}),r.additionalCompletionItems.forEach(u=>{o.test(u.label)&&a.push({...u,sortText:b.snippets})}),Dt(n)&&dt.forEach(u=>{o.test(u.label)&&a.push({...u,sortText:b.keywords})}),ht.forEach(u=>{o.test(u.label)&&a.push({...u,sortText:b.literals})}),r.apiDatabase.constantDefinitions.forEach((u,l)=>{u.type==="constant"&&u.disableDocumentation||!o.test(l)||a.push({...u.completion,sortText:b.constants})}),r.apiDatabase.functionDefinitions.forEach((u,l)=>{o.test(l)&&u.overloads.forEach(d=>{d.disableDocumentation||a.push({...d.completion,sortText:b.functions})})}),{isIncomplete:!1,items:a}}async function qt(e,t,i){let r=[...e],n=r.pop(),s=n,a=[];for(;n&&!(n?.type!=="Punctuator"||n.value!=="."||(n=r.pop(),n?.type!=="Identifier"));)a=[n.value.toLowerCase(),...a],n=r.pop();if(a.length===0||!s)return{isIncomplete:!1,items:[]};let o=await Ht(a,t,i);return o||(o=Gt(a,t,s,i),o)?o:{isIncomplete:!1,items:[]}}async function Ht(e,t,i){if(e.length>1)return null;let r=i.apiDatabase.constantDefinitions.get(e[0]);if(!r)return null;if(r.type!=="namespace")return{isIncomplete:!1,items:[]};let n=[],s=new RegExp(t.replaceAll(Y,"\\$&"),"i");return r.members.forEach(a=>{a.disableDocumentation||!s.test(a.name)||n.push(a.completion)}),{isIncomplete:!1,items:n}}function Gt(e,t,i,r){if(!r.variables?.length||!e.length)return null;let n=e.shift(),s=r.variables;for(;n;){let l=s?.find(d=>d.name.toLowerCase()===n);if(!Oe(l))return null;s=l.properties,n=e.shift()}let a=[],o=new RegExp(t.replaceAll(Y,"\\$&"),"i"),u=ri(i.loc.start);return s.forEach(l=>{o.test(l.name)&&l.completion&&a.push(ti(u,l.completion))}),{isIncomplete:!1,items:a}}function Dt(e){return(e&1)===1}function Jt(e,t){if(!e.length)return 255;let i=e[e.length-1];switch(i.type){case"Identifier":return 255;case"Keyword":return["return","in","else"].includes(i.value)?254:0;case"Punctuator":return Qt(e);case"Template":return i.value.endsWith("${")?254:255;default:return Se(t,i.loc)?0:255}}function Qt(e){let t=[...e],i=t.pop();if(!i)return 255;if(i.type!=="Punctuator")return 0;if(i.value!=="("&&i.value!==",")return 255;if(i.value==="(")return ft(t);let r=0;for(i=t.pop();i;){if(i.type==="Keyword")return 0;if(i.type!=="Punctuator"){i=t.pop();continue}if(i.value===")"||i.value==="]"){r--,i=t.pop();continue}if(i.value==="["){if(r===0)return 254;r++,i=t.pop();continue}if(i.value==="("){if(r===0)return ft(t);r++,i=t.pop();continue}i=t.pop()}return 0}function ft(e){let t=[...e],i=t.pop();return i?i.type==="Keyword"?i.value.toLowerCase()==="for"?255:254:i.type!=="Identifier"?255:(i=t.pop(),i?.type==="Keyword"&&i.value.toLowerCase()==="function"?0:254):255}var Pe=class{constructor(t){this.tokens=t;this.currentIndex=0}increment(){if(!(this.currentIndex>=this.tokens.length))return this.tokens[++this.currentIndex]}get next(){return this.tokens[this.currentIndex+1]}get previous(){return this.tokens[this.currentIndex-1]}get current(){return this.tokens[this.currentIndex]}},ee={parameterFormat:"(parameter) ${name}",variableFormat:"var ${name}",functionFormat:"function ${name} (${paramsDetail})"};function Xt(e){let t=new Map;if(!e.length)return t;let i=new Pe(e);for(;i.current;){if(i.current.type==="Keyword"){if(i.current.value.toLowerCase()==="var"){i.increment(),Zt(i,t);continue}if(i.current.value.toLowerCase()==="function"){i.increment(),Yt(i,t);continue}}i.increment()}return t}function Zt(e,t){for(;e.current;){if(e.current?.type!=="Identifier")return;let i=e.current.value,r=i.toLowerCase();t.set(r,{label:i,kind:te.Variable,detail:P(ee.variableFormat,{name:i})});let n=e.increment();if(n?.type!=="Punctuator")return;if(n.value===","){e.increment();continue}if(n.value==="="){e.increment(),ei(e);continue}}}function Yt(e,t){for(;e.current;){if(e.current?.type!=="Identifier")return;let i=e.current.value,r=i.toLowerCase(),n={label:i,kind:te.Function,detail:P(ee.functionFormat,{name:i,paramsDetail:""}),insertText:`${i}()`,insertTextMode:xt.adjustIndentation,insertTextFormat:gt.Snippet};t.set(r,n);let s=e.increment();if(!T(s,"("))return;s=e.increment();let a=[];for(;s&&!(s.type!=="Identifier"||(a.push(s.value),s=e.increment(),!T(s,",")));)s=e.increment();if(a.length){n.detail=P(ee.functionFormat,{name:n.label,paramsDetail:a.join(", ")});let l=a.map((d,g)=>`\${${g+1}:${d}}`).join(", ");n.insertText=`${n.label}(${l})`}if(!T(s,")")||(s=e.increment(),!T(s,"{")))return;s=e.increment();let o=e.currentIndex,u=1;for(;s&&u>0;)T(s,"{")?u++:T(s,"}")&&u--,s=e.increment();if(u===0)return;e.currentIndex=o,a.forEach(l=>{let d=l.toLowerCase();t.set(d,{label:l,kind:te.Variable,detail:P(ee.parameterFormat,{name:l})})})}}function T(e,t){return e?.type==="Punctuator"&&e.value===t}function ei(e){let t=0;for(;e.current;){if(e.current.type==="Keyword"){if(T(e.previous,".")){e.increment();continue}return}if(e.current.type==="Punctuator"&&e.current.value===";")return;if(e.current.type==="Template"&&e.current.value.startsWith("`")){t++,e.increment();continue}if(e.current.type==="Punctuator"&&["(","[","{"].includes(e.current.value)){t++,e.increment();continue}if(e.current.type==="Template"&&e.current.value.endsWith("`")){t--,e.increment();continue}if(e.current.type==="Punctuator"&&[")","]","}"].includes(e.current.value)){t--,e.increment();continue}if(!t&&e.current.type==="Punctuator"&&e.current.value===","){e.increment();return}e.increment()}}function ti(e,t){return t.insertText&&t.insertText.startsWith("[")&&(t.additionalTextEdits=[{newText:"",range:{start:{...e},end:{line:e.line,character:e.character+1}}}]),t}function ii(e){return{line:e.line+1,column:e.character}}function ri(e){return{line:e.line-1,character:e.column}}function ie(e,t){return e.line-t.line||e.column-t.column}function Et(e,t){let i={start:e.loc.start,end:e.loc.end};function r(n){ni(i,n.loc)}return ie(i.start,i.end)<0&&(i.start={...i.start},t.skipSpaces(i.start),ie(i.start,i.end)<0&&(i.end={...i.end},t.skipSpaces(i.end,!0))),e.leadingComments?.forEach(r),e.trailingComments?.forEach(r),i}function ni(e,t){e&&t&&(ie(t.start,e.start)<0&&(e.start=t.start),ie(e.end,t.end)<0&&(e.end=t.end))}function q(e){return!/\S/.test(e??"")}var be={indentWidth:2,wrapColumn:80,quote:null};function M(e){return{indentWidth:e?.indentWidth??be.indentWidth,wrapColumn:e?.wrapColumn??be.wrapColumn,quote:e?.quote??be.quote}}var si=/^\s*/,ai=/\u000D\u000A|\u000D(?!\u000A)|\u000A|\u2028|\u2029/,re=class e{constructor(t){this.lineRecords=t;this.length=t.length}static fromString(t,i){if(typeof t!="string")return t;let r=i?.indentWidth;return new e(t.split(ai).map(function(s){let a=si.exec(s)?.[0]??"";return{line:s,indentation:oi(a,r),locked:!1,sliceStart:a.length,sliceEnd:s.length}}))}toString(){return this.sliceString(this.firstPos(),this.lastPos())}charAt(t){let{line:i,column:r}=t,n=this.lineRecords[i-1];if(typeof n>"u"||r<0)return"";let s=this.getIndentationAt(i);if(r<s)return" ";let a=r+n.sliceStart-s;return a===n.sliceEnd&&i<this.length?`
23
+ }`,insertTextMode:S.adjustIndentation,insertTextFormat:y.Snippet}];import{CompletionItemKind as Ki,InsertTextFormat as Wi,InsertTextMode as qi}from"vscode-languageserver-types";function P(e,t){return t?e.replace(/\$\{(.*?)\}/gu,(i,r)=>t[r]?.toString()??""):e}var Y=/[-[\]/{}()*+?.\\^$|]/gu;function _t(e,t){return e.line>t.end.line}function Kt(e,t){return e.line<t.start.line}function Se(e,t){return!(!t||Kt(e,t)||_t(e,t)||e.line===t.start.line&&e.column<t.start.column||e.line===t.end.line&&e.column>t.end.column)}var b={identifiers:"a",profileVariables:"aa",constants:"ab",literals:"ab",functions:"ac",snippets:"b",keywords:"c"};async function Ct(e,t,i,r={}){let n=e.getText({start:{line:0,character:0},end:t}),{tokens:s,errors:a=[]}=it(n,{loc:!0,tolerant:!0});if(a.length)return{isIncomplete:!1,items:[]};let o=s[s.length-1],u="",l=ii(t);o?.type==="Identifier"&&Se(l,o.loc)&&(u=o.value??"",s.pop(),o=s[s.length-1]);let d={variables:r.profile?.variables??[],additionalCompletionItems:(r.snippets??[]).map(g=>({kind:te.Snippet,insertTextMode:xt.adjustIndentation,insertTextFormat:gt.Snippet,...g})),apiDatabase:i};return o?.type==="Punctuator"&&o.value==="."?qt(s,u,d):Wt(s,u,l,d)}async function Wt(e,t,i,r){let n=Jt(e,i);if(n===0)return{isIncomplete:!1,items:[]};let s=Xt(e),a=[],o=new RegExp(t.replaceAll(Y,"\\$&"),"i");return s.forEach((u,l)=>{o.test(l)&&a.push({...u,sortText:b.identifiers})}),r.variables.forEach(u=>{o.test(u.name)&&u.completion&&a.push({...u.completion,sortText:b.profileVariables})}),Dt(n)&&mt.forEach(u=>{u.label.startsWith(t)&&a.push({...u,sortText:b.snippets})}),r.additionalCompletionItems.forEach(u=>{o.test(u.label)&&a.push({...u,sortText:b.snippets})}),Dt(n)&&dt.forEach(u=>{o.test(u.label)&&a.push({...u,sortText:b.keywords})}),ht.forEach(u=>{o.test(u.label)&&a.push({...u,sortText:b.literals})}),r.apiDatabase.constantDefinitions.forEach((u,l)=>{u.type==="constant"&&u.disableDocumentation||!o.test(l)||a.push({...u.completion,sortText:b.constants})}),r.apiDatabase.functionDefinitions.forEach((u,l)=>{o.test(l)&&u.overloads.forEach(d=>{d.disableDocumentation||a.push({...d.completion,sortText:b.functions})})}),{isIncomplete:!1,items:a}}async function qt(e,t,i){let r=[...e],n=r.pop(),s=n,a=[];for(;n&&!(n?.type!=="Punctuator"||n.value!=="."||(n=r.pop(),n?.type!=="Identifier"));)a=[n.value.toLowerCase(),...a],n=r.pop();if(a.length===0||!s)return{isIncomplete:!1,items:[]};let o=await Ht(a,t,i);return o||(o=Gt(a,t,s,i),o)?o:{isIncomplete:!1,items:[]}}async function Ht(e,t,i){if(e.length>1)return null;let r=i.apiDatabase.constantDefinitions.get(e[0]);if(!r)return null;if(r.type!=="namespace")return{isIncomplete:!1,items:[]};let n=[],s=new RegExp(t.replaceAll(Y,"\\$&"),"i");return r.members.forEach(a=>{a.disableDocumentation||!s.test(a.name)||n.push(a.completion)}),{isIncomplete:!1,items:n}}function Gt(e,t,i,r){if(!r.variables?.length||!e.length)return null;let n=e.shift(),s=r.variables;for(;n;){let l=s?.find(d=>d.name.toLowerCase()===n);if(!Oe(l))return null;s=l.properties,n=e.shift()}let a=[],o=new RegExp(t.replaceAll(Y,"\\$&"),"i"),u=ri(i.loc.start);return s.forEach(l=>{o.test(l.name)&&l.completion&&a.push(ti(u,l.completion))}),{isIncomplete:!1,items:a}}function Dt(e){return(e&1)===1}function Jt(e,t){if(!e.length)return 255;let i=e[e.length-1];switch(i.type){case"Identifier":return 255;case"Keyword":return["return","in","else"].includes(i.value)?254:0;case"Punctuator":return Qt(e);case"Template":return i.value.endsWith("${")?254:255;default:return Se(t,i.loc)?0:255}}function Qt(e){let t=[...e],i=t.pop();if(!i)return 255;if(i.type!=="Punctuator")return 0;if(i.value!=="("&&i.value!==",")return 255;if(i.value==="(")return ft(t);let r=0;for(i=t.pop();i;){if(i.type==="Keyword")return 0;if(i.type!=="Punctuator"){i=t.pop();continue}if(i.value===")"||i.value==="]"){r-=1,i=t.pop();continue}if(i.value==="["){if(r===0)return 254;r+=1,i=t.pop();continue}if(i.value==="("){if(r===0)return ft(t);r+=1,i=t.pop();continue}i=t.pop()}return 0}function ft(e){let t=[...e],i=t.pop();return i?i.type==="Keyword"?i.value.toLowerCase()==="for"?255:254:i.type!=="Identifier"?255:(i=t.pop(),i?.type==="Keyword"&&i.value.toLowerCase()==="function"?0:254):255}var Pe=class{constructor(t){this.tokens=t;this.currentIndex=0}increment(){if(!(this.currentIndex>=this.tokens.length))return this.currentIndex+=1,this.tokens[this.currentIndex]}get next(){return this.tokens[this.currentIndex+1]}get previous(){return this.tokens[this.currentIndex-1]}get current(){return this.tokens[this.currentIndex]}},ee={parameterFormat:"(parameter) ${name}",variableFormat:"var ${name}",functionFormat:"function ${name} (${paramsDetail})"};function Xt(e){let t=new Map;if(!e.length)return t;let i=new Pe(e);for(;i.current;){if(i.current.type==="Keyword"){if(i.current.value.toLowerCase()==="var"){i.increment(),Zt(i,t);continue}if(i.current.value.toLowerCase()==="function"){i.increment(),Yt(i,t);continue}}i.increment()}return t}function Zt(e,t){for(;e.current;){if(e.current?.type!=="Identifier")return;let i=e.current.value,r=i.toLowerCase();t.set(r,{label:i,kind:te.Variable,detail:P(ee.variableFormat,{name:i})});let n=e.increment();if(n?.type!=="Punctuator")return;if(n.value===","){e.increment();continue}if(n.value==="="){e.increment(),ei(e);continue}}}function Yt(e,t){for(;e.current;){if(e.current?.type!=="Identifier")return;let i=e.current.value,r=i.toLowerCase(),n={label:i,kind:te.Function,detail:P(ee.functionFormat,{name:i,paramsDetail:""}),insertText:`${i}()`,insertTextMode:xt.adjustIndentation,insertTextFormat:gt.Snippet};t.set(r,n);let s=e.increment();if(!T(s,"("))return;s=e.increment();let a=[];for(;s&&!(s.type!=="Identifier"||(a.push(s.value),s=e.increment(),!T(s,",")));)s=e.increment();if(a.length){n.detail=P(ee.functionFormat,{name:n.label,paramsDetail:a.join(", ")});let l=a.map((d,g)=>`\${${g+1}:${d}}`).join(", ");n.insertText=`${n.label}(${l})`}if(!T(s,")")||(s=e.increment(),!T(s,"{")))return;s=e.increment();let o=e.currentIndex,u=1;for(;s&&u>0;)T(s,"{")?u+=1:T(s,"}")&&(u-=1),s=e.increment();if(u===0)return;e.currentIndex=o,a.forEach(l=>{let d=l.toLowerCase();t.set(d,{label:l,kind:te.Variable,detail:P(ee.parameterFormat,{name:l})})})}}function T(e,t){return e?.type==="Punctuator"&&e.value===t}function ei(e){let t=0;for(;e.current;){if(e.current.type==="Keyword"){if(T(e.previous,".")){e.increment();continue}return}if(e.current.type==="Punctuator"&&e.current.value===";")return;if(e.current.type==="Template"&&e.current.value.startsWith("`")){t+=1,e.increment();continue}if(e.current.type==="Punctuator"&&["(","[","{"].includes(e.current.value)){t+=1,e.increment();continue}if(e.current.type==="Template"&&e.current.value.endsWith("`")){t-=1,e.increment();continue}if(e.current.type==="Punctuator"&&[")","]","}"].includes(e.current.value)){t-=1,e.increment();continue}if(!t&&e.current.type==="Punctuator"&&e.current.value===","){e.increment();return}e.increment()}}function ti(e,t){return t.insertText&&t.insertText.startsWith("[")&&(t.additionalTextEdits=[{newText:"",range:{start:{...e},end:{line:e.line,character:e.character+1}}}]),t}function ii(e){return{line:e.line+1,column:e.character}}function ri(e){return{line:e.line-1,character:e.column}}function ie(e,t){return e.line-t.line||e.column-t.column}function Et(e,t){let i={start:e.loc.start,end:e.loc.end};function r(n){ni(i,n.loc)}return ie(i.start,i.end)<0&&(i.start={...i.start},t.skipSpaces(i.start),ie(i.start,i.end)<0&&(i.end={...i.end},t.skipSpaces(i.end,!0))),e.leadingComments?.forEach(r),e.trailingComments?.forEach(r),i}function ni(e,t){e&&t&&(ie(t.start,e.start)<0&&(e.start=t.start),ie(e.end,t.end)<0&&(e.end=t.end))}var si=/\S/u;function q(e){return!si.test(e??"")}var be={indentWidth:2,wrapColumn:80,quote:null};function M(e){return{indentWidth:e?.indentWidth??be.indentWidth,wrapColumn:e?.wrapColumn??be.wrapColumn,quote:e?.quote??be.quote}}var ai=/^\s*/u,oi=/\u000D\u000A|\u000D(?!\u000A)|\u000A|\u2028|\u2029/u,re=class e{constructor(t){this.lineRecords=t;this.length=t.length}static fromString(t,i){if(typeof t!="string")return t;let r=i?.indentWidth;return new e(t.split(oi).map(s=>{let a=ai.exec(s)?.[0]??"";return{line:s,indentation:ui(a,r),locked:!1,sliceStart:a.length,sliceEnd:s.length}}))}toString(){return this.sliceString(this.firstPos(),this.lastPos())}charAt(t){let{line:i,column:r}=t,n=this.lineRecords[i-1];if(typeof n>"u"||r<0)return"";let s=this.getIndentationAt(i);if(r<s)return" ";let a=r+n.sliceStart-s;return a===n.sliceEnd&&i<this.length?`
24
24
  `:a>=n.sliceEnd?"":n.line.charAt(a)}getIndentationAt(t){return Math.max(this.lineRecords[t-1].indentation,0)}getLineLength(t){let i=this.lineRecords[t-1];return this.getIndentationAt(t)+i.sliceEnd-i.sliceStart}getStatementLineSeparators(t){let i=this.slice(t,this.skipSpaces({...t})||this.lastPos());return i.length===1||!q(i.lineRecords[1].line)?[`
25
25
  `]:[`
26
26
  `,`
27
27
  `]}getLeadingCommentSeparators(t){let i=this.slice(t,this.skipSpaces({...t})||this.lastPos());return i.length===1?[" "]:q(i.lineRecords[1].line)?[`
28
28
  `,`
29
29
  `]:[`
30
- `]}nextPos(t,i=!1){let r=Math.max(t.line,0);return Math.max(t.column,0)<this.getLineLength(r)?(t.column+=1,i?!!this.skipSpaces(t):!0):r<this.length?(t.line+=1,t.column=0,i?!!this.skipSpaces(t):!0):!1}prevPos(t,i=!1){let r=t.line,n=t.column;if(n<1){if(r-=1,r<1)return!1;n=this.getLineLength(r)}else n=Math.min(n-1,this.getLineLength(r));return t.line=r,t.column=n,i?!!this.skipSpaces(t,!0):!0}firstPos(){return{line:1,column:0}}lastPos(){return{line:this.length,column:this.getLineLength(this.length)}}skipSpaces(t,i=!1){if(t||(t=i?this.lastPos():this.firstPos()),i){for(;this.prevPos(t);)if(!q(this.charAt(t))&&this.nextPos(t))return t;return null}else{for(;q(this.charAt(t));)if(!this.nextPos(t))return null;return t}}slice(t,i){if(!i&&!t)return this;if(i=i??this.lastPos(),!t)throw new Error("cannot slice with end but not start");let r=this.lineRecords.slice(t.line-1,i.line);return t.line===i.line?r[0]=U(r[0],t.column,i.column):(r[0]=U(r[0],t.column),r.push(U(r.pop()??r[0],0,i.column))),new e(r)}sliceString(t=this.firstPos(),i=this.lastPos()){let r=[];for(let n=t.line;n<=i.line;++n){let s=this.lineRecords[n-1];n===t.line?n===i.line?s=U(s,t.column,i.column):s=U(s,t.column):n===i.line&&(s=U(s,0,i.column));let a="",o=Math.max(s.indentation,0);o>0&&(a+=new Array(o+1).join(" ")),a+=s.line.slice(s.sliceStart,s.sliceEnd),r.push(a)}return r.join(`
31
- `)}};function oi(e,t=2){let i=0,r=e.length;for(let n=0;n<r;++n)switch(e.charCodeAt(n)){case 9:{let s=Math.ceil(i/t)*t;s===i?i+=t:i=s;break}case 11:case 12:case 13:case 65279:break;case 32:default:i+=1;break}return i}function U(e,t,i){let r=e.sliceStart,n=e.sliceEnd,s=Math.max(e.indentation,0),a=s+n-r;return i=i??a,t=Math.max(t,0),i=Math.min(i,a),i=Math.max(i,t),i<s?(s=i,n=r):n-=a-i,a=i,a-=t,t<s?s-=t:(t-=s,s=0,r+=t),e.indentation===s&&e.sliceStart===r&&e.sliceEnd===n?e:{line:e.line,indentation:s,sliceStart:r,sliceEnd:n}}function Ft(e,t,i){return!e&&!i?"":e?i?e+(t??"")+i:e:i}var ui=/\u000D\u000A|\u000D(?!\u000A)|\u000A|\u2028|\u2029/,p=class e{constructor(t=[]){this.lines=t}static fromString(t){return new e(t.split(ui))}static appendLines(t=[]){let i=new e;return t.forEach(r=>{r!=null&&(typeof r=="string"?i.lines.push(r):i.lines.push(...r.lines))}),i}static joinLines(t=[],i=""){let r=new e;return t.forEach(n=>{if(n==null)return;let s=r.lines.pop()??"";typeof n=="string"?r.lines.push(Ft(s,i,n)):(r.lines.push(Ft(s,i,n.lines.slice(0)[0])),r.lines.push(...n.lines.slice(1)))}),r}static aggregateLines(t,i,r,n,s){if(!r||r.isEmpty)return t;if(!i||!t||t.isEmpty)return r.indentFirstLine(s);let a=n.start.line-i.end.line;if(a===0)return e.joinLines([t," ",r]);let o=a===1?void 0:"";return e.appendLines([t,o,r.indentFirstLine(s)])}get isEmpty(){return this.lines.length===0||this.lines.length===1&&this.lines[0].length===0}get maxLineLength(){return this.lines.reduce((t,i)=>Math.max(t,i.length),0)}get firstLinelength(){return(this.lines[0]??"").length}get lastLinelength(){return(this.lines[this.lines.length-1]??"").length}surroundWith(t="",i=""){return!t&&!i?this:this.isEmpty?new e([t+i]):this.lines.length===1?new e([t+this.lines[0]+i]):e.joinLines([t,this,i])}indentFirstLine(t=""){return this.isEmpty?this:(this.lines[0]=t+this.lines[0],this)}suffixWith(t){return this.surroundWith("",t)}toString(t=`
32
- `){return this.lines.join(t)}};function Le(e,t){return e*(t.indentWidth??2)}function I(e=0,t){let{indentWidth:i=2}=M(t);return new Array(e*i+1).join(" ")}function ne(e){return e.replace(/['"]/g,t=>t==='"'?"'":'"')}function ci(e,t){if(!e||!t)return!1;switch(e.type){case c.UnaryExpression:return Ae(t)&&t.object===e;case c.BinaryExpression:case c.LogicalExpression:switch(t.type){case c.UnaryExpression:return!0;case c.MemberExpression:return t.object===e;case c.BinaryExpression:case c.LogicalExpression:return Q[t.operator]>Q[e.operator];default:return!1}case c.Literal:return Ae(t)&&typeof e.value=="number"&&t.object===e;case c.AssignmentExpression:switch(t.type){case c.UnaryExpression:case c.BinaryExpression:case c.LogicalExpression:case c.ReturnStatement:return!0;case c.MemberExpression:return t.object===e;default:return!1}default:return!1}}function m(e,t,i){switch(e?.type){case c.BinaryExpression:case c.LogicalExpression:return li(e,t,i);case c.AssignmentExpression:return new G(e,t,i);case c.MemberExpression:return new oe(e,t,i);case c.Identifier:return new H(e,t,i);case c.CallExpression:return new Ie(e,t,i);case c.ObjectExpression:return k(e,t,i);case c.ArrayExpression:return k(e,t,i);case c.Literal:return new H(e,t,i);case c.UpdateExpression:case c.UnaryExpression:return new ae(e,t,i);case c.TemplateLiteral:return new Be(e,t,i);case c.VariableDeclaration:return new V(e,t,i);default:throw new Error("unknown type: "+JSON.stringify(e))}}function k(e,t,i){let r=new O(e,t,i);switch(e?.type){case c.ArrayExpression:return r.setupCollection(e.elements.map(n=>m(n,e,i)),"SquareBrackets"),r;case c.ObjectExpression:return r.setupCollection(e.properties?.map(n=>new ke(n,e,i)),"CurlyBrackets"),r;case c.VariableDeclaration:return r.prefix="var ",r.setupCollection(e.declarations?.map(n=>At(n,e,i)),"None"),r;case c.FunctionDeclaration:return r.prefix=`function ${e.id.name}`,r.setupCollection(e.params.map(n=>m(n,e,i)),"Parentheses"),r;case c.ForStatement:return r.prefix="for ",r.setupCollection([m(e.init,e,i),m(e.test,e,i),m(e.update,e,i)],"Parentheses",";"),r;case c.ForInStatement:return r.prefix="for ",r.setupCollection([new G(e,t,i)],"Parentheses",""),r;case c.IfStatement:return r.prefix="if ",r.setupCollection([m(e.test,e,i)],"Parentheses",""),r;case c.WhileStatement:return r.prefix="while ",r.setupCollection([m(e.test,e,i)],"Parentheses",""),r;default:return r}}function At(e,t,i){return e.init?new G(e,t,i):new H(e.id,t,i)}function li(e,t,i){let n=[...se(e.left,e.operator),...se(e.right,e.operator)].map(a=>m(a,e,i)),s=new O(e,t,i);return s.setupCollection(n,"None"," "+e.operator),s}function se(e,t){return e.type!==c.BinaryExpression&&e.type!==c.LogicalExpression?[e]:e.operator!==t?[e]:[...se(e.left,t),...se(e.right,t)]}var F=class{constructor(t,i,r){this.node=t;this.parent=i;this.options=r;this.prefix="";this.suffix="";this.groupingParentheses=!1;this.groupingParentheses=ci(t,i)}get openingParenthesis(){return this.groupingParentheses?"(":""}get closingParenthesis(){return this.groupingParentheses?")":""}get leadingString(){return[this.prefix,this.openingParenthesis].join("")}get trailingString(){return[this.closingParenthesis,this.suffix].join("")}finalize(t){return typeof t=="string"&&(t=p.fromString(t)),t.surroundWith(this.leadingString,this.trailingString)}},O=class extends F{constructor(i,r,n){super(i,r,n);this.node=i;this.parent=r;this.options=n;this.type="CollectionPrinter";this.bracketsType="None";this.separator=",";this.printers=[]}setupCollection(i=[],r="None",n){return this.bracketsType=r??this.bracketsType,this.separator=n??this.separator,this.printers=i,this}getOpeningBracket(i=!1,r="singleLine"){if(this.bracketsType==="None")return"";if(this.bracketsType==="CurlyBrackets")return"{"+(i||r==="multiline"?"":" ");switch(this.bracketsType){case"Parentheses":return"(";case"SquareBrackets":return"[";default:return""}}getClosingBracket(i=!1,r="singleLine"){if(this.bracketsType==="None")return"";if(this.bracketsType==="CurlyBrackets")return(i||r==="multiline"?"":" ")+"}";switch(this.bracketsType){case"Parentheses":return")";case"SquareBrackets":return"]";default:return""}}getLinesLevel(i=0){return this.bracketsType!=="None"||Qe(this.parent)||ye(this.parent)||(K(this.node)||$(this.node))&&(K(this.parent)||$(this.parent))?i+1:i}finalize(i,r="singleLine",n=0){if(this.bracketsType==="None")return super.finalize(i);let s=this.getOpeningBracket(i.isEmpty,r),a=this.getClosingBracket(i.isEmpty,r);if(r==="singleLine")return super.finalize(i.surroundWith(s,a));let o=I(n,this.options);return super.finalize(p.appendLines([s,i,o+a]))}singleLineFormat(i=0){let r=this.printers.length-1;return p.joinLines(this.printers.map((n,s)=>n.format("singleLine",i).suffixWith(s<r?this.separator:""))," ")}optimizedPrinterFormat(i,r,n=0){let s=this.getLinesLevel(n),a=I(s,this.options),o=this.bracketsType==="None"&&r===0?"":a,u=r<this.printers.length-1?this.separator:"",l=i.format("singleLine",s).suffixWith(u);return l.maxLineLength+a.length<=this.options.wrapColumn?l.indentFirstLine(o):i.format("multiline",s).suffixWith(u).indentFirstLine(o)}multilineFormat(i=0){return p.appendLines(this.printers.map((r,n)=>this.optimizedPrinterFormat(r,n,i)))}format(i="singleLine",r=0){if(this.printers.length===0){let s=this.getOpeningBracket(!0,i),a=this.getClosingBracket(!0,i);return super.finalize(p.fromString(s+a))}if(i==="singleLine"){let s=this.singleLineFormat(r);return this.finalize(s,i,r)}let n=this.multilineFormat(r);return this.finalize(n,i,r)}},pi=/^[a-zA-Z_$][a-zA-Z_$0-9]*$/,H=class extends F{constructor(i,r,n){super(i,r,n);this.node=i;this.parent=r;this.options=n;this.type="StringPrinter"}format(){if(C(this.node))return this.finalize(this.node.name??"");if(typeof this.node.value!="string")return this.finalize(this.node.raw??"");if(Ye(this.parent)&&this.parent.key==this.node&&Ee(this.node)&&typeof this.node.value=="string"&&pi.test(this.node.value))return this.finalize(this.node.value);switch(this.options.quote){case"auto":{let i=JSON.stringify(this.node.value),r=ne(JSON.stringify(ne(this.node.value)));return this.finalize(i.length>r.length?r:i)}case"single":return this.finalize(ne(JSON.stringify(ne(this.node.value))));default:return this.finalize(JSON.stringify(this.node.value))}}},ae=class extends F{constructor(i,r,n){super(i,r,n);this.node=i;this.parent=r;this.options=n;this.type="SingleExpressionPrinter";let s=Xe(i),a=Ze(i);if(s||a){this.prefix=s&&i.prefix?i.operator:"",this.suffix=a&&!i.prefix?i.operator:"",this.printer=m(i.argument,i,this.options);return}this.printer=m(i,r,this.options)}format(i="singleLine",r=0){return this.printer?this.finalize(this.printer.format(i,r)):new p}},V=class extends F{constructor(i,r,n){super(i,r,n);this.node=i;this.parent=r;this.options=n;this.type="VariableDeclaratorsPrinter";i.declarations.length===1?(this.printer=At(i.declarations[0],i,this.options),this.printer.prefix="var "):this.printer=k(i,r,this.options)}format(i="singleLine",r=0){return this.finalize(this.printer.format(i,r))}},Ie=class extends F{constructor(i,r,n){super(i,r,n);this.node=i;this.parent=r;this.options=n;this.type="CallExpressionPrinter";this.argumentsPrinter=new O(i,r,n),this.argumentsPrinter.setupCollection(i.arguments?.map(s=>m(s,i,n)),"Parentheses"),C(i.callee)?this.argumentsPrinter.prefix=i.callee.name:this.memberExpressionPrinter=new oe(i.callee,r,n)}format(i="singleLine",r=0){if(!this.memberExpressionPrinter)return this.finalize(this.argumentsPrinter.format(i,r));let n=this.memberExpressionPrinter.format("singleLine",r),s=this.argumentsPrinter.format("singleLine",r);if(i==="singleLine")return this.finalize(p.joinLines([n,s]));let a=Le(r,this.options)+this.leadingString.length+n.firstLinelength;return a+1<this.options.wrapColumn?(s=this.argumentsPrinter.format("multiline",r),this.finalize(p.joinLines([n,s]))):(n=this.memberExpressionPrinter.format("multiline",r),a=n.lastLinelength,a+s.maxLineLength>this.options.wrapColumn&&(s=this.argumentsPrinter.format("multiline",r+1)),this.finalize(p.joinLines([n,s])))}},oe=class extends F{constructor(i,r,n){super(i,r,n);this.node=i;this.parent=r;this.options=n;this.type="MemberExpressionPrinter";if(this.objectPrinter=m(i.object,i,this.options),i.computed){let s=new O(i.property,i,this.options);s.setupCollection([m(i.property,i,this.options)],"SquareBrackets"),this.propertyPrinter=s}else{let s=new ae(i.property,i,this.options);s.prefix=".",this.propertyPrinter=s}}format(i="singleLine",r=0){let n=this.objectPrinter.format("singleLine",r),s=this.propertyPrinter.format("singleLine",r);if(i==="singleLine")return this.finalize(p.joinLines([n,s]));let a=Le(r,this.options)+this.leadingString.length+n.firstLinelength;a>this.options.wrapColumn&&(n=this.objectPrinter.format("multiline",r),a=n.lastLinelength);let o=s.firstLinelength+this.trailingString.length;if(a+o<this.options.wrapColumn)return this.finalize(p.joinLines([n,s]));if(this.node.computed)return this.finalize(p.joinLines([n,this.propertyPrinter.format("multiline",r)]));let u=r+1,l=I(u,this.options);return s=this.propertyPrinter.format("singleLine",r),o=l.length+s.lastLinelength+this.trailingString.length,o>this.options.wrapColumn&&(s=this.propertyPrinter.format("multiline",u)),this.finalize(p.appendLines([n,s.indentFirstLine(l)]))}},ke=class extends F{constructor(i,r,n){super(i,r,n);this.node=i;this.parent=r;this.options=n;this.type="PropertyPrinter";this.key=m(i.key,i,this.options),i.shorthand||(this.key.suffix=":",this.value=m(i.value,i,this.options))}format(i="singleLine",r=0){if(this.node.shorthand||!this.value)return this.finalize(this.key.format(i,r));let n=this.key.format("singleLine",r);if(i==="singleLine"){let u=this.value.format("singleLine",r);return this.finalize(p.joinLines([n,u]," "))}if(_(this.node.value)||_(this.node.value)){let u=this.value.format("multiline",r);return this.finalize(p.joinLines([n,u]," "))}let s=I(r+1,this.options),a=this.value.format("singleLine",r+1).indentFirstLine(s);return a.maxLineLength+this.trailingString.length+1<=this.options.wrapColumn?this.finalize(p.appendLines([n,a])):(a=this.value.format("multiline",r+1).indentFirstLine(s),this.finalize(p.appendLines([n,a])))}},G=class extends F{constructor(i,r,n){super(i,r,n);this.node=i;this.parent=r;this.options=n;this.type="OperationPrinter";this.operator="";this.noNewLineWrapping=!1;switch(i?.type){case c.AssignmentExpression:this.leftPrinter=m(i.left,i,this.options),this.operator=" "+i.operator,this.rightPrinter=m(i.right,i,this.options),this.noNewLineWrapping=(C(i.left)||Ee(i.left))&&(_(i.right)||Fe(i.right));return;case c.VariableDeclarator:this.leftPrinter=m(i.id,i,this.options),i.init&&(this.operator=" =",this.rightPrinter=m(i.init,i,this.options)),this.noNewLineWrapping=_(i.init)||Fe(i.init);return;case c.ForInStatement:this.leftPrinter=m(i.left,i,this.options),this.operator=" in",this.rightPrinter=m(i.right,i,this.options);return;case c.BinaryExpression:case c.LogicalExpression:this.leftPrinter=m(i.left,i,this.options),this.operator=" "+i.operator,this.rightPrinter=m(i.right,i,this.options);return}}format(i="singleLine",r=0){if(!this.rightPrinter)return this.finalize(this.leftPrinter.format(i,r));let n=this.leftPrinter.format("singleLine",r).suffixWith(this.operator),s=this.rightPrinter.format("singleLine",r);if(i==="singleLine")return this.finalize(p.joinLines([n,s]," "));let a=Le(r,this.options)+this.leadingString.length+n.maxLineLength+1;a>this.options.wrapColumn&&(n=this.leftPrinter.format("multiline",r).suffixWith(this.operator),a=n.lastLinelength+1);let o=s.firstLinelength+this.trailingString.length+1;if(a+o<this.options.wrapColumn)return this.finalize(p.joinLines([n,s]," "));let u=this.rightPrinter.format("multiline",r);return u.firstLinelength+this.trailingString.length+1+a<this.options.wrapColumn||this.noNewLineWrapping?this.finalize(p.joinLines([n,u]," ")):(o>this.options.wrapColumn&&(s=this.rightPrinter.format("multiline",r+1)),s=s.indentFirstLine(I(r+1)),this.finalize(p.appendLines([n,s])))}},Be=class extends F{constructor(i,r,n){super(i,r,n);this.node=i;this.parent=r;this.options=n;this.type="TemplateLiteralPrinter";this.parts=[];let s=i.expressions?.map(a=>m(a,i,this.options))??[];this.parts.push("`"),i.quasis?.forEach((a,o)=>{this.parts.push(a.value.raw),o<s.length&&(this.parts.push("${"),this.parts.push(s[o]),this.parts.push("}"))}),this.parts.push("`")}format(i="singleLine",r=0){return this.finalize(p.joinLines(this.parts.map(n=>typeof n=="string"?n:n.format(i,r))))}};function hi(e){let t={...e.leadingComments?.slice(0,1)[0]?.loc.start??e.loc.start},i={...e.trailingComments?.slice(-1)[0]?.loc.end??e.loc.end};return{start:t,end:i}}function di(e){return e.trailingComments?.slice(-1)[0]?.type===c.LineComment}var A=class{constructor(t,i,r){this.node=t;this.parent=i;this.options=r;this.indentStatementFirstLine=!0;this.externalOffset=0;this.options=M(this.options)}createStatementPrinter(t){switch(t.type){case c.Program:return new B(t,this.node,this.options);case c.ImportDeclaration:return new Ue(t,this.node,this.options);case c.ExpressionStatement:return new Ne(t,this.node,this.options);case c.FunctionDeclaration:return new ce(t,this.node,this.options);case c.ExportNamedDeclaration:return N(t)?new ue(t,this.node,this.options):new ce(t,this.node,this.options);case c.BlockStatement:return new B(t,this.node,this.options);case c.ReturnStatement:return new Me(t,this.node,this.options);case c.VariableDeclaration:return new ue(t,this.node,this.options);case c.IfStatement:return new we(t,this.node,this.options);case c.ForStatement:case c.ForInStatement:case c.WhileStatement:return new Te(t,this.node,this.options);case c.EmptyStatement:case c.BreakStatement:case c.ContinueStatement:return new ve(t,this.node,this.options);default:throw new Error("unknown type: "+JSON.stringify(t))}}getFormattedBody(t,i=0){if(this.cachedBody&&this.cachedBody.level===i)return this.cachedBody.body;let r=t.format(i);return this.cachedBody={body:r,level:i},r}getStatementIndentation(t=0){return this.indentStatementFirstLine?I(t,this.options):""}getStatementIndentationLength(t=0){return this.indentStatementFirstLine?t*(this.options.indentWidth??2):0}getIndentation(t=0){return I(t,this.options)}addComments(t,i=0){let r=this.getStatementIndentation(i);if(!this.node.leadingComments?.length&&!this.node.trailingComments?.length)return t.indentFirstLine(r);let n=(this.node.leadingComments??[]).reduce((o,u)=>{let l=this.formatComment(u);return{formattedLines:p.aggregateLines(o.formattedLines,o.location,l,u.loc,r),location:u.loc}},{formattedLines:new p}),s=p.aggregateLines(n.formattedLines,n?.location,t,this.node.loc,r);return(this.node.trailingComments?.reduce((o,u)=>{let l=this.formatComment(u);return{formattedLines:p.aggregateLines(o?.formattedLines,o?.location,l,u.loc,r),location:u.loc}},{formattedLines:s,location:this.node.loc})??{formattedLines:s}).formattedLines}formatInnerComments(t=0){if(!x(this.node)||!Array.isArray(this.node.innerComments)||!this.node.innerComments.length)return new p;let i=this.getIndentation(t);return(this.node.innerComments?.reduce((n,s)=>{let a=this.formatComment(s);return{formattedLines:p.aggregateLines(n.formattedLines,n.location,a,s.loc,i),location:s.loc}},{formattedLines:new p})).formattedLines}formatComment(t){switch(t.type){case c.BlockComment:return p.fromString(t.value).surroundWith("/*","*/");default:return p.fromString(t.value.trimEnd()).surroundWith("//")}}canFitSingleLine(t,i=0,r=0){return this.externalOffset+r+this.getStatementIndentationLength(i)+t.lastLinelength<=this.options.wrapColumn}},B=class extends A{constructor(i,r,n){super(i,r,n);this.node=i;this.printers=[];this.printers=i.body.map(s=>this.createStatementPrinter(s))}format(i=0){if(this.printers.length===0)return this.formatEmptyBlock(i);let r=[],n=x(this.node);n&&r.push("{");let s=n?i+1:i,a;return this.printers.forEach(o=>{if(R(o.node))return;let u=hi(o.node);a&&u.start.line-a.end.line>1&&r.push(""),a=u,r.push(o.format(s))}),n&&r.push(this.getIndentation(i)+"}"),this.addComments(p.appendLines(r),i)}formatEmptyBlock(i=0){if(!x(this.node))return this.addComments(p.fromString(""),i);let r=this.formatInnerComments(i+1),n="{",s=this.getIndentation(i)+"}";return r.isEmpty?X(this.parent)?this.addComments(p.appendLines([n,s]),i):this.addComments(p.fromString("{}"),i):this.addComments(p.appendLines([n,r,s]),i)}},ve=class extends A{constructor(i,r,n){super(i,r,n);this.node=i;this.keyword="";switch(this.node.type){case c.ContinueStatement:this.keyword="continue;";break;case c.BreakStatement:this.keyword="break;";break;default:this.keyword=";"}}format(i=0){return this.addComments(p.fromString(this.keyword),i)}},ue=class extends A{constructor(i,r,n){super(i,r,n);this.node=i;if(N(i))this.printer=new V(i,r,n);else if(N(i.declaration))this.printer=new V(i.declaration,r,n),this.printer.prefix="export ";else throw new Error("invalid type: "+JSON.stringify(i))}format(i=0,r="optimized"){if(r==="singleLine"||r==="optimized"){let n=this.printer.format("singleLine",i).suffixWith(";");if(r==="singleLine"||this.canFitSingleLine(n,i))return this.addComments(n,i)}return this.addComments(this.printer.format("multiline",i).suffixWith(";"),i)}},ce=class extends A{constructor(i,r,n){super(i,r,n);this.node=i;if(Ce(i))this.header=k(i,r,n),this.body=new B(i.body,i,n);else if(Ce(i.declaration))this.header=k(i.declaration,r,n),this.header.prefix="export ",this.body=new B(i.declaration.body,i,n);else throw new Error("invalid type: "+JSON.stringify(i))}format(i=0,r="optimized"){this.body.indentStatementFirstLine=!1;let n=this.getFormattedBody(this.body,i);if(r==="singleLine"||r==="optimized"){let a=this.header.format("singleLine",i);if(r==="singleLine"||this.canFitSingleLine(a,i,n.firstLinelength+1))return this.addComments(p.joinLines([a,n]," "),i)}let s=this.header.format("multiline",i);return this.addComments(p.joinLines([s,n]," "),i)}},we=class extends A{constructor(i,r,n){super(i,r,n);this.node=i;this.header=k(i,r,n),this.consequent=this.createStatementPrinter(i.consequent),this.consequent.indentStatementFirstLine=!1,i.alternate&&(this.alternate=this.createStatementPrinter(i.alternate),this.alternate.indentStatementFirstLine=!1)}format(i=0,r="optimized"){let n=!1,s;if(r==="singleLine"||r==="optimized"){let l=this.header.format("singleLine",i),d=x(this.node.consequent)?2:0;(r==="singleLine"||this.canFitSingleLine(l,i,d))&&(s=l)}s||(n=!0,s=this.header.format("multiline",i));let a;if(x(this.node.consequent)){let l=this.consequent.format(i,"optimized");a=p.joinLines([s," ",l])}else if(n||X(this.node.consequent)){this.consequent.indentStatementFirstLine=!0;let l=this.consequent.format(i+1,"singleLine");this.canFitSingleLine(l,i+1)||(l=this.consequent.format(i+1,"multiline")),a=p.appendLines([s,l])}else{this.consequent.indentStatementFirstLine=!1;let l=this.consequent.format(i,"singleLine");this.canFitSingleLine(l,0,s.lastLinelength+1)?a=p.joinLines([s," ",l]):(this.consequent.indentStatementFirstLine=!0,l=this.consequent.format(i+1,"optimized"),a=p.appendLines([s,l]))}if(!this.alternate)return this.addComments(a,i);let o=di(this.node.consequent)||!x(this.node.consequent),u;if(this.alternate.externalOffset=0,x(this.node.alternate)||X(this.node.alternate))this.alternate.indentStatementFirstLine=!1,this.alternate.externalOffset=o?5:a.lastLinelength+6,u=this.alternate.format(i,"optimized"),u=p.joinLines(["else ",u]);else{let l=o?4:a.lastLinelength+4;this.alternate.indentStatementFirstLine=!1,u=this.alternate.format(i,"singleLine"),this.canFitSingleLine(u,i,l+1)?u=p.joinLines(["else ",u]):(this.alternate.indentStatementFirstLine=!0,u=this.alternate.format(i+1,"optimized"),u=p.appendLines(["else",u]))}return o?a=p.appendLines([a,u.indentFirstLine(this.getIndentation(i))]):a=p.joinLines([a,u]," "),this.addComments(a,i)}},Te=class extends A{constructor(i,r,n){super(i,r,n);this.node=i;this.header=k(i,r,n),this.body=this.createStatementPrinter(i.body)}format(i=0,r="optimized"){this.body.indentStatementFirstLine=!1;let n=this.getFormattedBody(this.body,i);if(r==="singleLine"||r==="optimized"){let a=this.header.format("singleLine",i);if(r==="singleLine"||this.canFitSingleLine(a,i,n.firstLinelength+1))return this.addComments(p.joinLines([a,n]," "),i)}let s=this.header.format("multiline",i);return this.addComments(p.joinLines([s,n]," "),i)}},Ne=class extends A{constructor(i,r,n){super(i,r,n);this.node=i;this.expression=m(i.expression,i,n)}format(i=0,r="optimized"){if(r==="singleLine"||r==="optimized"){let n=this.expression.format("singleLine",i).suffixWith(";");if(r==="singleLine"||this.canFitSingleLine(n,i))return this.addComments(n,i)}return this.addComments(this.expression.format("multiline",i).suffixWith(";"),i)}},Me=class extends A{constructor(i,r,n){super(i,r,n);this.node=i;this.argument=m(i.argument,i,n)}format(i=0,r="optimized"){if(!this.argument)return this.addComments(p.fromString("return;"),i);if(r==="singleLine"||r==="optimized"){let o=this.argument.format("singleLine",i).surroundWith("return ",";");if(r==="singleLine"||this.canFitSingleLine(o,i))return this.addComments(o,i)}if(!K(this.node.argument)&&!$(this.node.argument)){let o=this.argument.format("multiline",i).surroundWith("return ",";");return this.addComments(o,i)}let n=this.getIndentation(i+1),s=this.argument.format("multiline",i+1).indentFirstLine(n),a=this.getIndentation(i);return this.addComments(p.appendLines(["return (",s,a+");"]),i)}},Ue=class extends A{constructor(i,r,n){super(i,r,n);this.node=i;this.libname=m(i.specifiers[0].local,i,n),this.libsource=m(i.source,i,n)}format(i=0){return this.addComments(p.joinLines(["import"," ",this.libname.format("singleLine",i)," from ",this.libsource.format("singleLine")]).suffixWith(";"),i)}};var mi={quote:"auto"};function yt(e,t={}){try{let i=e.getText(),r=e.positionAt(i.length),n={start:{line:0,character:0},end:r},s={...mi,...t.formattingOptions??{}},a=Di(i,s);return[{range:n,newText:a}]}catch(i){return console.error("Arcade Formatting Error:",i),[]}}function Di(e,t){if(!e)return"";let i=M(t),r=re.fromString(e,i),n=r.toString(),s=W(n,{tolerant:!0,comments:!0}),a=Et(s,r);return s.loc.start=a.start,s.loc.end=a.end,new B(s,null,i).format().toString()}var le=class{constructor(t,i=[]){this._apiDefinitions=t;this._profileVariables=i;this._isInBlock=!1;this._isInCallExpression=!1;this._identifierBeingAssigned=void 0;this._assignmentValidationMode="disabled";this._scriptScopeIdentifiers=new Map;this._diagnostics=[];this._undeclaredIdentifiersInFunctions=new Map}validateScript(t){if(!t)return{diagnostics:[],program:null};this._isInBlock=!1,this._identifierBeingAssigned=void 0,this._assignmentValidationMode="disabled",this._diagnostics=[],this._scriptScopeIdentifiers.clear(),this._undeclaredIdentifiersInFunctions.clear(),this._functionScopeIdentifiers=void 0;let i=null;try{i=W(t,{tolerant:!0}),this.handleErrors(i.errors),i.body.forEach(r=>this.validateStatement(r)),this.diagnoseIdentifiers(),this._undeclaredIdentifiersInFunctions.size>0&&this._undeclaredIdentifiersInFunctions.forEach(r=>{for(let n of r)this.logDiagnostic(n.node.loc,{code:"NotDefined",data:{identifier:n.node.name}})})}catch(r){this.handleException(r)}return{diagnostics:this._diagnostics,program:i}}disableRecordIdentifierAssignment(t,i){let r=this._assignmentValidationMode;this._assignmentValidationMode="disabled",t.call(this,i),this._assignmentValidationMode=r}inBlock(t,i){let r=this._isInBlock;this._isInBlock=!0,t.call(this,i),this._isInBlock=r}get _isInFunctionScope(){return!!this._functionScopeIdentifiers}inFunctionScope(t){this._functionScopeIdentifiers=new Map,t.call(this),this.diagnoseIdentifiers(),this._functionScopeIdentifiers=void 0}logDiagnostic(t,i){let r={severity:f.Error,...i,message:P(nt[i.code]??j[i.code],i.data),range:{start:{line:t.start.line-1,character:t.start.column},end:{line:t.end.line-1,character:t.end.column}}};this._diagnostics.push(r)}handleErrors(t){(t??[]).forEach(this.handleException,this)}handleException(t){if(fi(t)){let{range:i,code:r,data:n}=t;this.logDiagnostic(i,{code:r,data:n})}else this.logDiagnostic({start:{line:1,column:0},end:{line:1,column:0}},{code:"ExecutionError",data:{stack:t.stack??""}})}getIdentifierInfo(t){return this._functionScopeIdentifiers?.get(t)??this._scriptScopeIdentifiers.get(t)}setIdentiferInfo(t,i){if(this._functionScopeIdentifiers){this._functionScopeIdentifiers.set(t,i);return}(this._functionScopeIdentifiers??this._scriptScopeIdentifiers).set(t,i),this._functionScopeIdentifiers||this._undeclaredIdentifiersInFunctions.has(t)&&(this._undeclaredIdentifiersInFunctions.delete(t),i.used=!0)}isProfileVariable(t){return(this._profileVariables??[]).some(i=>i.name.toLowerCase()===t)}isApiConstant(t){return!!this._apiDefinitions?.constantDefinitions?.get(t)}isApiFunction(t){return!!this._apiDefinitions?.functionDefinitions?.get(t)}isApiItem(t){return this.isApiConstant(t)||this.isApiFunction(t)}validateStatement(t){if(t)switch(t.type){case c.BlockStatement:t.body.forEach(i=>this.validateStatement(i));return;case c.VariableDeclaration:t.declarations.forEach(i=>this.validateVariableDeclarator(i));return;case c.FunctionDeclaration:this.validateFunctionDeclaration(t);return;case c.ExportNamedDeclaration:this.validateExportDeclaration(t);return;case c.ImportDeclaration:this.validateImportDeclaration(t);return;case c.WhileStatement:this.validateWhileStatement(t);return;case c.ForStatement:this.validateForStatement(t);return;case c.ForInStatement:this.validateForInStatement(t);return;case c.IfStatement:this.validateIfStatement(t);return;case c.ReturnStatement:this.validateExpression(t.argument);return;case c.ExpressionStatement:this.validateExpression(t.expression);return;case c.BreakStatement:case c.ContinueStatement:case c.EmptyStatement:return}}validateVariableDeclarator(t){this.validateExpression(t.init),this.recordVariableIdentifier(t.id,{initialized:!!t.init})}validateFunctionDeclaration(t){this.recordFunctionIdentifier(t),this.inFunctionScope(()=>{t.params.forEach(i=>this.recordParamAsIdentifier(i)),z(t.body)&&this.logDiagnostic(t.body.loc,{code:"UnexpectedEmptyFunction",data:{identifier:t.id.name},severity:f.Warning}),this.validateStatement(t.body)})}validateExportDeclaration(t){this.validateStatement(t.declaration)}validateImportDeclaration(t){this.recordImportIdentifier(t)}validateForStatement(t){N(t.init)?this.inBlock(this.validateStatement,t.init):this.validateExpression(t.init),this.validateExpression(t.update),this.validateExpression(t.test),z(t.body)&&this.logDiagnostic(t.body.loc,{code:"EmptyBlockStatement",severity:f.Warning}),this.inBlock(this.validateStatement,t.body)}validateWhileStatement(t){this.validateExpression(t.test),z(t.body)&&this.logDiagnostic(t.body.loc,{code:"EmptyBlockStatement",severity:f.Warning}),this.inBlock(this.validateStatement,t.body)}validateForInStatement(t){C(t.left)?this.validateExpression(t.left):this.recordVariableIdentifier(t.left.declarations[0].id,{initialized:!0,inBlock:!0}),this.validateExpression(t.right),z(t.body)&&this.logDiagnostic(t.body.loc,{code:"EmptyBlockStatement",severity:f.Warning}),this.validateStatement(t.body)}validateIfStatement(t){this.validateExpression(t.test),z(t.consequent)&&this.logDiagnostic(t.consequent.loc,{code:"EmptyBlockStatement",severity:f.Warning}),t.alternate&&z(t.alternate)&&this.logDiagnostic(t.alternate.loc,{code:"EmptyBlockStatement",severity:f.Warning}),this.inBlock(this.validateStatement,t.consequent),this.inBlock(this.validateStatement,t.alternate)}validateExpression(t){if(t)switch(t.type){case c.AssignmentExpression:this.validateAssignmentExpression(t);return;case c.CallExpression:this.validateCallExpression(t);return;case c.Identifier:this.validateIdentifier(t);return;case c.Literal:this.validateLiteral(t);return;case c.ArrayExpression:t.elements.forEach(i=>this.validateExpression(i));return;case c.ObjectExpression:this.validateObjectExpression(t);return;case c.UnaryExpression:this.validateUnaryExpression(t);return;case c.UpdateExpression:this.validateUpdateExpression(t);return;case c.BinaryExpression:case c.LogicalExpression:this.validateBinaryAndLogicalExpression(t);return;case c.MemberExpression:this.validateMemberExpression(t);return;case c.TemplateLiteral:t.expressions.forEach(i=>this.validateExpression(i));return;default:return}}validateAssignmentExpression(t){let i=this._identifierBeingAssigned,r=this._assignmentValidationMode;C(t.left)&&(this._identifierBeingAssigned=t.left.name.toLowerCase(),this._assignmentValidationMode="left"),this.validateExpression(t.left),C(t.left)&&(this._assignmentValidationMode="right"),this.validateExpression(t.right),this._identifierBeingAssigned=i,this._assignmentValidationMode=r}validateCallExpression(t){let i=this._isInCallExpression;if(this._isInCallExpression=!0,this.validateExpression(t.callee),C(t.callee)){let r=t.callee.name.toLowerCase(),n=this.getIdentifierInfo(r),s=this._apiDefinitions?.functionDefinitions?.get(r);if(!n&&s){let a=gi(s,t.arguments.length);a&&this.logDiagnostic(t.loc,a)}}t.arguments.forEach(r=>this.validateExpression(r)),this._isInCallExpression=i}validateIdentifier(t){let i=t.name.toLowerCase(),r=this.getIdentifierInfo(i);if(r){if(this._assignmentValidationMode==="left"&&this._identifierBeingAssigned===i){r.initialized=!0;return}if(this._assignmentValidationMode==="right"&&this._identifierBeingAssigned===i)return;r.used=!0;return}if(!(this.isProfileVariable(i)||this.isApiConstant(i))){if(this.isApiFunction(i)){if(this._isInCallExpression)return;this.logDiagnostic(t.loc,{code:"InvalidApiFunctionUsage",data:{identifier:t.name}});return}if(this._isInFunctionScope){let n=this._undeclaredIdentifiersInFunctions.get(i);n||(n=[],this._undeclaredIdentifiersInFunctions.set(i,n)),n.push({node:t,identifier:i});return}this.logDiagnostic(t.loc,{code:"NotDefined",data:{identifier:t.name}})}}validateLiteral(t){Ci(t.raw).forEach(i=>{let r=this.getIdentifierInfo(i.toLowerCase());r&&(r.used=!0)})}logProfileOrApiConflict(t){let i=t.name.toLowerCase(),r=this.isProfileVariable(i),n=this.isApiItem(i);!r&&!n||this.logDiagnostic(t.loc,{code:r?"ProfileVariablesConflict":"ApiConflict",severity:f.Warning,data:{identifier:t.name}})}logReservedKeywordsConflict(t){let i=t.name.toLowerCase();ot.includes(i)&&this.logDiagnostic(t.loc,{code:"ReservedKeyword",severity:f.Warning,data:{identifier:t.name}})}validateObjectExpression(t){t.properties.forEach(i=>{this.validateExpression(i.value)})}validateUnaryExpression(t){this.validateExpression(t.argument)}validateUpdateExpression(t){this.validateExpression(t.argument)}validateBinaryAndLogicalExpression(t){this.validateExpression(t.left),this.validateExpression(t.right)}validateMemberExpression(t){let i=this.flattenMemberExpressionAndValidate(t),r=i[0].object;this.disableRecordIdentifierAssignment(this.validateExpression,r),C(r)&&(this.getIdentifierInfo(r.name.toLowerCase())||this.validateMemberExpressionWithProfile(i)||this.validateConstantMemberExpression(i))}flattenMemberExpressionAndValidate(t){switch(t.type){case c.MemberExpression:return(!C(t.property)||t.computed)&&this.validateExpression(t.property),[...this.flattenMemberExpressionAndValidate(t.object),t];default:return[]}}extractAndValidatePropertyName(t){switch(t.type){case"Identifier":return t.name.toLowerCase();case"Literal":return typeof t.value!="string"?(this.logDiagnostic(t.loc,{code:"UnexpectedPropertyIdentifier"}),null):t.value.toLowerCase();default:return this.logDiagnostic(t.loc,{code:"UnexpectedPropertyIdentifier"}),null}}validateConstantMemberExpression(t){let i=t[0];if(!C(i.object))return!1;let r=i.object.name.toLowerCase(),n=this._apiDefinitions?.constantDefinitions?.get(r);if(!n)return!1;if(n.type!=="namespace")return this.logDiagnostic(i.property.loc,{code:"NotADictionary",data:{identifier:r}}),!0;let s=this.extractAndValidatePropertyName(i.property);if(!s)return!0;if(!n.members.some(a=>a.key===s)){let a=n.members.reduce((o,u)=>`${o}${o?" | ":""}${u.completion.label.split(".").pop()}`,"");this.logDiagnostic(i.property.loc,{code:"InvalidConstantIdentifier",data:{list:a}})}return t.length>1&&this.logDiagnostic(t[1].property.loc,{code:"UnexpectedPropertyIdentifier"}),!0}validateMemberExpressionWithProfile(t){let i=t[0];if(i.object.type!==c.Identifier)return!1;let r=i.object.name.toLowerCase(),n=this._profileVariables?.find(a=>a.key===r);if(!n)return!1;if(he(n))return this.logDiagnostic(i.object.loc,{code:"NotADictionary",data:{identifier:n.name}}),!0;if(this._identifierBeingAssigned===r)return this.logDiagnostic(i.loc,{code:"ProfileVariablesAreImmutable"}),!0;let s=n;for(let a=0;a<t.length;a++){if(t[a].computed)return!0;if(he(s))return this.logDiagnostic(t[a-1]?.property.loc??t[a].object.loc,{code:"NotADictionary",data:{identifier:s.name}}),!0;let o=this.extractAndValidatePropertyName(t[a].property);if(!o)return!0;if(s.properties.length===0)return this.logDiagnostic(t[a].property.loc,{code:"UnknownPropertyIdentifier",data:{identifier:o},severity:f.Warning}),!0;let u=s.properties.find(l=>l.name.toLowerCase()===o);if(!u){let l=s.properties.reduce((d,g)=>`${d}${d?" | ":""}${g.name.split(".").pop()}`,"");return this.logDiagnostic(t[a].property.loc,{code:"InvalidPropertyIdentifier",data:{list:l}}),!0}s=u}return!0}recordVariableIdentifier(t,i){this.logReservedKeywordsConflict(t),this.logProfileOrApiConflict(t);let r=t.name.toLowerCase(),n=this.getIdentifierInfo(r),s=n&&this._isInFunctionScope&&n.scope==="function",a=n&&!this._isInFunctionScope&&n.scope==="script";(s||a)&&this.logDiagnostic(t.loc,{code:"AlreadyDefined",data:{identifier:t.name},severity:f.Warning});let o=i.inBlock??this._isInBlock,{initialized:u}=i;if(!n||this._isInFunctionScope&&n.scope!=="function"){let l=this._isInFunctionScope?"function":o?"block":"script";n={node:t,used:!1,initialized:u,scope:l}}else n.node=t,n.used=!1,n.initialized=u;return n.scope==="block"&&!o&&(n.scope="script",this.logDiagnostic(t.loc,{code:"AlreadyDefined",data:{identifier:t.name},severity:f.Warning})),this.setIdentiferInfo(r,n),!1}recordImportIdentifier(t){let i=t.specifiers[0].local;this.logProfileOrApiConflict(i);let r=i.name.toLowerCase(),n=this.getIdentifierInfo(r);n?.scope&&this.logDiagnostic(t.specifiers[0].local.loc,{code:"AlreadyDefined",data:{identifier:t.specifiers[0].local.name},severity:f.Warning}),n={node:t.specifiers[0].local,used:!1,...n,scope:"script",initialized:!0},this.setIdentiferInfo(r,n)}recordFunctionIdentifier(t){this.logProfileOrApiConflict(t.id);let i=t.id.name.toLowerCase(),r=this.getIdentifierInfo(i);r?.scope&&this.logDiagnostic(t.id.loc,{code:"AlreadyDefined",data:{identifier:t.id.name},severity:f.Warning}),r={node:t.id,used:!1,...r,scope:"script",initialized:!0},this.setIdentiferInfo(i,r)}recordParamAsIdentifier(t){return this.recordVariableIdentifier(t,{initialized:!0})}diagnoseIdentifiers(){(this._functionScopeIdentifiers??this._scriptScopeIdentifiers).forEach(t=>{t.node&&(t.used?t.initialized||this.logDiagnostic(t.node.loc,{code:"DefinedNeverAssigned",data:{identifier:t.node.name},severity:f.Warning}):this.logDiagnostic(t.node.loc,{code:t.initialized?"AssignedNeverUsed":"DefinedNeverUsed",data:{identifier:t.node.name},severity:f.Warning}))})}};function fi(e){return e?.name==="ParsingError"}function z(e){return R(e)||x(e)&&!e?.body.length}function gi(e,t){if(!e||t===void 0||t===null||t<0)return null;let{min:i,max:r}=e.overloads.reduce((n,s)=>{let{min:a,max:o}=s.parametersInfo;return n.min>=0&&(n.min=Math.min(a,n.min)),n.max>=0&&(n.max=o<0?o:Math.max(o,n.max)),n},{min:1/0,max:0});return t<i?i>0?{code:"NotEnoughArguments",data:{min:i}}:{code:"NoArgumentExpected"}:r>=0&&t>r?{code:"TooManyArguments",data:{max:r}}:null}var xi=new RegExp(/\B@\w+/g);function Ci(e){return Array.from((e??"").matchAll(xi),t=>t[0].slice(1))}var St=class{constructor(){this.languageOptions={}}configure(t={}){this.languageOptions=t??{},this.apiService=new Z(this.languageOptions)}async doValidation(t,i){if(!this.apiService)return[];let r=await this.apiService.getApiDatabase(i),{profile:{variables:n=[]}={}}=i,{diagnostics:s}=new le(r,n).validateScript(t.getText());return s}async doComplete(t,i,r){if(!this.apiService)return{isIncomplete:!1,items:[]};let n=await this.apiService.getApiDatabase(r);return await Ct(t,i,n,r)??{isIncomplete:!1,items:[]}}doFormat(t,i){return yt(t,i)}async getApiLibrary(t){return this.apiService?(await this.apiService.getApiDatabase(t)).categories??[]:[]}};export{st as ArcadeKeywords,St as ArcadeLanguageService,at as ArcadeLiterals,ot as ArcadeReservedKeywords,nt as DiagnosticMessages,f as DiagnosticSeverity,rt as ValidationDiagnosticCodes,Oe as isDictionaryVariable,he as isValueVariable};
30
+ `]}nextPos(t,i=!1){let r=Math.max(t.line,0);return Math.max(t.column,0)<this.getLineLength(r)?(t.column+=1,i?!!this.skipSpaces(t):!0):r<this.length?(t.line+=1,t.column=0,i?!!this.skipSpaces(t):!0):!1}prevPos(t,i=!1){let r=t.line,n=t.column;if(n<1){if(r-=1,r<1)return!1;n=this.getLineLength(r)}else n=Math.min(n-1,this.getLineLength(r));return t.line=r,t.column=n,i?!!this.skipSpaces(t,!0):!0}firstPos(){return{line:1,column:0}}lastPos(){return{line:this.length,column:this.getLineLength(this.length)}}skipSpaces(t,i=!1){if(t||(t=i?this.lastPos():this.firstPos()),i){for(;this.prevPos(t);)if(!q(this.charAt(t))&&this.nextPos(t))return t;return null}else{for(;q(this.charAt(t));)if(!this.nextPos(t))return null;return t}}slice(t,i){if(!i&&!t)return this;if(i??(i=this.lastPos()),!t)throw new Error("cannot slice with end but not start");let r=this.lineRecords.slice(t.line-1,i.line);return t.line===i.line?r[0]=U(r[0],t.column,i.column):(r[0]=U(r[0],t.column),r.push(U(r.pop()??r[0],0,i.column))),new e(r)}sliceString(t=this.firstPos(),i=this.lastPos()){let r=[];for(let n=t.line;n<=i.line;n+=1){let s=this.lineRecords[n-1];n===t.line?n===i.line?s=U(s,t.column,i.column):s=U(s,t.column):n===i.line&&(s=U(s,0,i.column));let a="",o=Math.max(s.indentation,0);o>0&&(a+=new Array(o+1).join(" ")),a+=s.line.slice(s.sliceStart,s.sliceEnd),r.push(a)}return r.join(`
31
+ `)}};function ui(e,t=2){let i=0,r=e.length;for(let n=0;n<r;n+=1)switch(e.charCodeAt(n)){case 9:{let s=Math.ceil(i/t)*t;s===i?i+=t:i=s;break}case 11:case 12:case 13:case 65279:break;case 32:default:i+=1;break}return i}function U(e,t,i){let r=e.sliceStart,n=e.sliceEnd,s=Math.max(e.indentation,0),a=s+n-r;return i??(i=a),t=Math.max(t,0),i=Math.min(i,a),i=Math.max(i,t),i<s?(s=i,n=r):n-=a-i,a=i,a-=t,t<s?s-=t:(t-=s,s=0,r+=t),e.indentation===s&&e.sliceStart===r&&e.sliceEnd===n?e:{line:e.line,indentation:s,sliceStart:r,sliceEnd:n}}function Ft(e,t,i){return!e&&!i?"":e?i?e+(t??"")+i:e:i}var ci=/\u000D\u000A|\u000D(?!\u000A)|\u000A|\u2028|\u2029/u,p=class e{constructor(t=[]){this.lines=t}static fromString(t){return new e(t.split(ci))}static appendLines(t=[]){let i=new e;return t.forEach(r=>{r!=null&&(typeof r=="string"?i.lines.push(r):i.lines.push(...r.lines))}),i}static joinLines(t=[],i=""){let r=new e;return t.forEach(n=>{if(n==null)return;let s=r.lines.pop()??"";typeof n=="string"?r.lines.push(Ft(s,i,n)):(r.lines.push(Ft(s,i,n.lines.slice(0)[0])),r.lines.push(...n.lines.slice(1)))}),r}static aggregateLines(t,i,r,n,s){if(!r||r.isEmpty)return t;if(!i||!t||t.isEmpty)return r.indentFirstLine(s);let a=n.start.line-i.end.line;if(a===0)return e.joinLines([t," ",r]);let o=a===1?void 0:"";return e.appendLines([t,o,r.indentFirstLine(s)])}get isEmpty(){return this.lines.length===0||this.lines.length===1&&this.lines[0].length===0}get maxLineLength(){return this.lines.reduce((t,i)=>Math.max(t,i.length),0)}get firstLinelength(){return(this.lines[0]??"").length}get lastLinelength(){return(this.lines[this.lines.length-1]??"").length}surroundWith(t="",i=""){return!t&&!i?this:this.isEmpty?new e([t+i]):this.lines.length===1?new e([t+this.lines[0]+i]):e.joinLines([t,this,i])}indentFirstLine(t=""){return this.isEmpty?this:(this.lines[0]=t+this.lines[0],this)}suffixWith(t){return this.surroundWith("",t)}toString(t=`
32
+ `){return this.lines.join(t)}};function Le(e,t){return e*(t.indentWidth??2)}function I(e=0,t){let{indentWidth:i=2}=M(t);return new Array(e*i+1).join(" ")}function ne(e){return e.replace(/['"]/gu,t=>t==='"'?"'":'"')}function li(e,t){if(!e||!t)return!1;switch(e.type){case c.UnaryExpression:return Ae(t)&&t.object===e;case c.BinaryExpression:case c.LogicalExpression:switch(t.type){case c.UnaryExpression:return!0;case c.MemberExpression:return t.object===e;case c.BinaryExpression:case c.LogicalExpression:return Q[t.operator]>Q[e.operator];default:return!1}case c.Literal:return Ae(t)&&typeof e.value=="number"&&t.object===e;case c.AssignmentExpression:switch(t.type){case c.UnaryExpression:case c.BinaryExpression:case c.LogicalExpression:case c.ReturnStatement:return!0;case c.MemberExpression:return t.object===e;default:return!1}default:return!1}}function m(e,t,i){switch(e?.type){case c.BinaryExpression:case c.LogicalExpression:return pi(e,t,i);case c.AssignmentExpression:return new G(e,t,i);case c.MemberExpression:return new oe(e,t,i);case c.Identifier:return new H(e,t,i);case c.CallExpression:return new Ie(e,t,i);case c.ObjectExpression:return k(e,t,i);case c.ArrayExpression:return k(e,t,i);case c.Literal:return new H(e,t,i);case c.UpdateExpression:case c.UnaryExpression:return new ae(e,t,i);case c.TemplateLiteral:return new Be(e,t,i);case c.VariableDeclaration:return new V(e,t,i);default:throw new Error(`unknown type: ${JSON.stringify(e)}`)}}function k(e,t,i){let r=new O(e,t,i);switch(e?.type){case c.ArrayExpression:return r.setupCollection(e.elements.map(n=>m(n,e,i)),"SquareBrackets"),r;case c.ObjectExpression:return r.setupCollection(e.properties?.map(n=>new ke(n,e,i)),"CurlyBrackets"),r;case c.VariableDeclaration:return r.prefix="var ",r.setupCollection(e.declarations?.map(n=>At(n,e,i)),"None"),r;case c.FunctionDeclaration:return r.prefix=`function ${e.id.name}`,r.setupCollection(e.params.map(n=>m(n,e,i)),"Parentheses"),r;case c.ForStatement:return r.prefix="for ",r.setupCollection([m(e.init,e,i),m(e.test,e,i),m(e.update,e,i)],"Parentheses",";"),r;case c.ForInStatement:return r.prefix="for ",r.setupCollection([new G(e,t,i)],"Parentheses",""),r;case c.IfStatement:return r.prefix="if ",r.setupCollection([m(e.test,e,i)],"Parentheses",""),r;case c.WhileStatement:return r.prefix="while ",r.setupCollection([m(e.test,e,i)],"Parentheses",""),r;default:return r}}function At(e,t,i){return e.init?new G(e,t,i):new H(e.id,t,i)}function pi(e,t,i){let n=[...se(e.left,e.operator),...se(e.right,e.operator)].map(a=>m(a,e,i)),s=new O(e,t,i);return s.setupCollection(n,"None",` ${e.operator}`),s}function se(e,t){return e.type!==c.BinaryExpression&&e.type!==c.LogicalExpression?[e]:e.operator!==t?[e]:[...se(e.left,t),...se(e.right,t)]}var F=class{constructor(t,i,r){this.node=t;this.parent=i;this.options=r;this.prefix="";this.suffix="";this.groupingParentheses=!1;this.groupingParentheses=li(t,i)}get openingParenthesis(){return this.groupingParentheses?"(":""}get closingParenthesis(){return this.groupingParentheses?")":""}get leadingString(){return[this.prefix,this.openingParenthesis].join("")}get trailingString(){return[this.closingParenthesis,this.suffix].join("")}finalize(t){return typeof t=="string"&&(t=p.fromString(t)),t.surroundWith(this.leadingString,this.trailingString)}},O=class extends F{constructor(i,r,n){super(i,r,n);this.node=i;this.parent=r;this.options=n;this.type="CollectionPrinter";this.bracketsType="None";this.separator=",";this.printers=[]}setupCollection(i=[],r="None",n){return this.bracketsType=r??this.bracketsType,this.separator=n??this.separator,this.printers=i,this}getOpeningBracket(i=!1,r="singleLine"){if(this.bracketsType==="None")return"";if(this.bracketsType==="CurlyBrackets")return`{${i||r==="multiline"?"":" "}`;switch(this.bracketsType){case"Parentheses":return"(";case"SquareBrackets":return"[";default:return""}}getClosingBracket(i=!1,r="singleLine"){if(this.bracketsType==="None")return"";if(this.bracketsType==="CurlyBrackets")return`${i||r==="multiline"?"":" "}}`;switch(this.bracketsType){case"Parentheses":return")";case"SquareBrackets":return"]";default:return""}}getLinesLevel(i=0){return this.bracketsType!=="None"||Qe(this.parent)||ye(this.parent)||(K(this.node)||_(this.node))&&(K(this.parent)||_(this.parent))?i+1:i}finalize(i,r="singleLine",n=0){if(this.bracketsType==="None")return super.finalize(i);let s=this.getOpeningBracket(i.isEmpty,r),a=this.getClosingBracket(i.isEmpty,r);if(r==="singleLine")return super.finalize(i.surroundWith(s,a));let o=I(n,this.options);return super.finalize(p.appendLines([s,i,o+a]))}singleLineFormat(i=0){let r=this.printers.length-1;return p.joinLines(this.printers.map((n,s)=>n.format("singleLine",i).suffixWith(s<r?this.separator:""))," ")}optimizedPrinterFormat(i,r,n=0){let s=this.getLinesLevel(n),a=I(s,this.options),o=this.bracketsType==="None"&&r===0?"":a,u=r<this.printers.length-1?this.separator:"",l=i.format("singleLine",s).suffixWith(u);return l.maxLineLength+a.length<=this.options.wrapColumn?l.indentFirstLine(o):i.format("multiline",s).suffixWith(u).indentFirstLine(o)}multilineFormat(i=0){return p.appendLines(this.printers.map((r,n)=>this.optimizedPrinterFormat(r,n,i)))}format(i="singleLine",r=0){if(this.printers.length===0){let s=this.getOpeningBracket(!0,i),a=this.getClosingBracket(!0,i);return super.finalize(p.fromString(s+a))}if(i==="singleLine"){let s=this.singleLineFormat(r);return this.finalize(s,i,r)}let n=this.multilineFormat(r);return this.finalize(n,i,r)}},hi=/^[a-zA-Z_$][a-zA-Z_$0-9]*$/u,H=class extends F{constructor(i,r,n){super(i,r,n);this.node=i;this.parent=r;this.options=n;this.type="StringPrinter"}format(){if(C(this.node))return this.finalize(this.node.name??"");if(typeof this.node.value!="string")return this.finalize(this.node.raw??"");if(Ye(this.parent)&&this.parent.key===this.node&&Ee(this.node)&&typeof this.node.value=="string"&&hi.test(this.node.value))return this.finalize(this.node.value);switch(this.options.quote){case"auto":{let i=JSON.stringify(this.node.value),r=ne(JSON.stringify(ne(this.node.value)));return this.finalize(i.length>r.length?r:i)}case"single":return this.finalize(ne(JSON.stringify(ne(this.node.value))));default:return this.finalize(JSON.stringify(this.node.value))}}},ae=class extends F{constructor(i,r,n){super(i,r,n);this.node=i;this.parent=r;this.options=n;this.type="SingleExpressionPrinter";let s=Xe(i),a=Ze(i);if(s||a){this.prefix=s&&i.prefix?i.operator:"",this.suffix=a&&!i.prefix?i.operator:"",this.printer=m(i.argument,i,this.options);return}this.printer=m(i,r,this.options)}format(i="singleLine",r=0){return this.printer?this.finalize(this.printer.format(i,r)):new p}},V=class extends F{constructor(i,r,n){super(i,r,n);this.node=i;this.parent=r;this.options=n;this.type="VariableDeclaratorsPrinter";i.declarations.length===1?(this.printer=At(i.declarations[0],i,this.options),this.printer.prefix="var "):this.printer=k(i,r,this.options)}format(i="singleLine",r=0){return this.finalize(this.printer.format(i,r))}},Ie=class extends F{constructor(i,r,n){super(i,r,n);this.node=i;this.parent=r;this.options=n;this.type="CallExpressionPrinter";this.argumentsPrinter=new O(i,r,n),this.argumentsPrinter.setupCollection(i.arguments?.map(s=>m(s,i,n)),"Parentheses"),C(i.callee)?this.argumentsPrinter.prefix=i.callee.name:this.memberExpressionPrinter=new oe(i.callee,r,n)}format(i="singleLine",r=0){if(!this.memberExpressionPrinter)return this.finalize(this.argumentsPrinter.format(i,r));let n=this.memberExpressionPrinter.format("singleLine",r),s=this.argumentsPrinter.format("singleLine",r);if(i==="singleLine")return this.finalize(p.joinLines([n,s]));let a=Le(r,this.options)+this.leadingString.length+n.firstLinelength;return a+1<this.options.wrapColumn?(s=this.argumentsPrinter.format("multiline",r),this.finalize(p.joinLines([n,s]))):(n=this.memberExpressionPrinter.format("multiline",r),a=n.lastLinelength,a+s.maxLineLength>this.options.wrapColumn&&(s=this.argumentsPrinter.format("multiline",r+1)),this.finalize(p.joinLines([n,s])))}},oe=class extends F{constructor(i,r,n){super(i,r,n);this.node=i;this.parent=r;this.options=n;this.type="MemberExpressionPrinter";if(this.objectPrinter=m(i.object,i,this.options),i.computed){let s=new O(i.property,i,this.options);s.setupCollection([m(i.property,i,this.options)],"SquareBrackets"),this.propertyPrinter=s}else{let s=new ae(i.property,i,this.options);s.prefix=".",this.propertyPrinter=s}}format(i="singleLine",r=0){let n=this.objectPrinter.format("singleLine",r),s=this.propertyPrinter.format("singleLine",r);if(i==="singleLine")return this.finalize(p.joinLines([n,s]));let a=Le(r,this.options)+this.leadingString.length+n.firstLinelength;a>this.options.wrapColumn&&(n=this.objectPrinter.format("multiline",r),a=n.lastLinelength);let o=s.firstLinelength+this.trailingString.length;if(a+o<this.options.wrapColumn)return this.finalize(p.joinLines([n,s]));if(this.node.computed)return this.finalize(p.joinLines([n,this.propertyPrinter.format("multiline",r)]));let u=r+1,l=I(u,this.options);return s=this.propertyPrinter.format("singleLine",r),o=l.length+s.lastLinelength+this.trailingString.length,o>this.options.wrapColumn&&(s=this.propertyPrinter.format("multiline",u)),this.finalize(p.appendLines([n,s.indentFirstLine(l)]))}},ke=class extends F{constructor(i,r,n){super(i,r,n);this.node=i;this.parent=r;this.options=n;this.type="PropertyPrinter";this.key=m(i.key,i,this.options),i.shorthand||(this.key.suffix=":",this.value=m(i.value,i,this.options))}format(i="singleLine",r=0){if(this.node.shorthand||!this.value)return this.finalize(this.key.format(i,r));let n=this.key.format("singleLine",r);if(i==="singleLine"){let u=this.value.format("singleLine",r);return this.finalize(p.joinLines([n,u]," "))}if($(this.node.value)||$(this.node.value)){let u=this.value.format("multiline",r);return this.finalize(p.joinLines([n,u]," "))}let s=I(r+1,this.options),a=this.value.format("singleLine",r+1).indentFirstLine(s);return a.maxLineLength+this.trailingString.length+1<=this.options.wrapColumn?this.finalize(p.appendLines([n,a])):(a=this.value.format("multiline",r+1).indentFirstLine(s),this.finalize(p.appendLines([n,a])))}},G=class extends F{constructor(i,r,n){super(i,r,n);this.node=i;this.parent=r;this.options=n;this.type="OperationPrinter";this.operator="";this.noNewLineWrapping=!1;switch(i?.type){case c.AssignmentExpression:this.leftPrinter=m(i.left,i,this.options),this.operator=` ${i.operator}`,this.rightPrinter=m(i.right,i,this.options),this.noNewLineWrapping=(C(i.left)||Ee(i.left))&&($(i.right)||Fe(i.right));return;case c.VariableDeclarator:this.leftPrinter=m(i.id,i,this.options),i.init&&(this.operator=" =",this.rightPrinter=m(i.init,i,this.options)),this.noNewLineWrapping=$(i.init)||Fe(i.init);return;case c.ForInStatement:this.leftPrinter=m(i.left,i,this.options),this.operator=" in",this.rightPrinter=m(i.right,i,this.options);return;case c.BinaryExpression:case c.LogicalExpression:this.leftPrinter=m(i.left,i,this.options),this.operator=` ${i.operator}`,this.rightPrinter=m(i.right,i,this.options);return}}format(i="singleLine",r=0){if(!this.rightPrinter)return this.finalize(this.leftPrinter.format(i,r));let n=this.leftPrinter.format("singleLine",r).suffixWith(this.operator),s=this.rightPrinter.format("singleLine",r);if(i==="singleLine")return this.finalize(p.joinLines([n,s]," "));let a=Le(r,this.options)+this.leadingString.length+n.maxLineLength+1;a>this.options.wrapColumn&&(n=this.leftPrinter.format("multiline",r).suffixWith(this.operator),a=n.lastLinelength+1);let o=s.firstLinelength+this.trailingString.length+1;if(a+o<this.options.wrapColumn)return this.finalize(p.joinLines([n,s]," "));let u=this.rightPrinter.format("multiline",r);return u.firstLinelength+this.trailingString.length+1+a<this.options.wrapColumn||this.noNewLineWrapping?this.finalize(p.joinLines([n,u]," ")):(o>this.options.wrapColumn&&(s=this.rightPrinter.format("multiline",r+1)),s=s.indentFirstLine(I(r+1)),this.finalize(p.appendLines([n,s])))}},Be=class extends F{constructor(i,r,n){super(i,r,n);this.node=i;this.parent=r;this.options=n;this.type="TemplateLiteralPrinter";this.parts=[];let s=i.expressions?.map(a=>m(a,i,this.options))??[];this.parts.push("`"),i.quasis?.forEach((a,o)=>{this.parts.push(a.value.raw),o<s.length&&(this.parts.push("${"),this.parts.push(s[o]),this.parts.push("}"))}),this.parts.push("`")}format(i="singleLine",r=0){return this.finalize(p.joinLines(this.parts.map(n=>typeof n=="string"?n:n.format(i,r))))}};function di(e){let t={...e.leadingComments?.slice(0,1)[0]?.loc.start??e.loc.start},i={...e.trailingComments?.slice(-1)[0]?.loc.end??e.loc.end};return{start:t,end:i}}function mi(e){return e.trailingComments?.slice(-1)[0]?.type===c.LineComment}var A=class{constructor(t,i,r){this.node=t;this.parent=i;this.options=r;this.indentStatementFirstLine=!0;this.externalOffset=0;this.options=M(this.options)}createStatementPrinter(t){switch(t.type){case c.Program:return new B(t,this.node,this.options);case c.ImportDeclaration:return new Ue(t,this.node,this.options);case c.ExpressionStatement:return new Ne(t,this.node,this.options);case c.FunctionDeclaration:return new ce(t,this.node,this.options);case c.ExportNamedDeclaration:return N(t)?new ue(t,this.node,this.options):new ce(t,this.node,this.options);case c.BlockStatement:return new B(t,this.node,this.options);case c.ReturnStatement:return new Me(t,this.node,this.options);case c.VariableDeclaration:return new ue(t,this.node,this.options);case c.IfStatement:return new we(t,this.node,this.options);case c.ForStatement:case c.ForInStatement:case c.WhileStatement:return new Te(t,this.node,this.options);case c.EmptyStatement:case c.BreakStatement:case c.ContinueStatement:return new ve(t,this.node,this.options);default:throw new Error(`unknown type: ${JSON.stringify(t)}`)}}getFormattedBody(t,i=0){if(this.cachedBody&&this.cachedBody.level===i)return this.cachedBody.body;let r=t.format(i);return this.cachedBody={body:r,level:i},r}getStatementIndentation(t=0){return this.indentStatementFirstLine?I(t,this.options):""}getStatementIndentationLength(t=0){return this.indentStatementFirstLine?t*(this.options.indentWidth??2):0}getIndentation(t=0){return I(t,this.options)}addComments(t,i=0){let r=this.getStatementIndentation(i);if(!this.node.leadingComments?.length&&!this.node.trailingComments?.length)return t.indentFirstLine(r);let n=(this.node.leadingComments??[]).reduce((o,u)=>{let l=this.formatComment(u);return{formattedLines:p.aggregateLines(o.formattedLines,o.location,l,u.loc,r),location:u.loc}},{formattedLines:new p}),s=p.aggregateLines(n.formattedLines,n?.location,t,this.node.loc,r);return(this.node.trailingComments?.reduce((o,u)=>{let l=this.formatComment(u);return{formattedLines:p.aggregateLines(o?.formattedLines,o?.location,l,u.loc,r),location:u.loc}},{formattedLines:s,location:this.node.loc})??{formattedLines:s}).formattedLines}formatInnerComments(t=0){if(!x(this.node)||!Array.isArray(this.node.innerComments)||!this.node.innerComments.length)return new p;let i=this.getIndentation(t);return(this.node.innerComments?.reduce((n,s)=>{let a=this.formatComment(s);return{formattedLines:p.aggregateLines(n.formattedLines,n.location,a,s.loc,i),location:s.loc}},{formattedLines:new p})).formattedLines}formatComment(t){switch(t.type){case c.BlockComment:return p.fromString(t.value).surroundWith("/*","*/");default:return p.fromString(t.value.trimEnd()).surroundWith("//")}}canFitSingleLine(t,i=0,r=0){return this.externalOffset+r+this.getStatementIndentationLength(i)+t.lastLinelength<=this.options.wrapColumn}},B=class extends A{constructor(i,r,n){super(i,r,n);this.node=i;this.printers=[];this.printers=i.body.map(s=>this.createStatementPrinter(s))}format(i=0){if(this.printers.length===0)return this.formatEmptyBlock(i);let r=[],n=x(this.node);n&&r.push("{");let s=n?i+1:i,a;return this.printers.forEach(o=>{if(R(o.node))return;let u=di(o.node);a&&u.start.line-a.end.line>1&&r.push(""),a=u,r.push(o.format(s))}),n&&r.push(`${this.getIndentation(i)}}`),this.addComments(p.appendLines(r),i)}formatEmptyBlock(i=0){if(!x(this.node))return this.addComments(p.fromString(""),i);let r=this.formatInnerComments(i+1),n="{",s=`${this.getIndentation(i)}}`;return r.isEmpty?X(this.parent)?this.addComments(p.appendLines([n,s]),i):this.addComments(p.fromString("{}"),i):this.addComments(p.appendLines([n,r,s]),i)}},ve=class extends A{constructor(i,r,n){super(i,r,n);this.node=i;this.keyword="";switch(this.node.type){case c.ContinueStatement:this.keyword="continue;";break;case c.BreakStatement:this.keyword="break;";break;default:this.keyword=";"}}format(i=0){return this.addComments(p.fromString(this.keyword),i)}},ue=class extends A{constructor(i,r,n){super(i,r,n);this.node=i;if(N(i))this.printer=new V(i,r,n);else if(N(i.declaration))this.printer=new V(i.declaration,r,n),this.printer.prefix="export ";else throw new Error(`invalid type: ${JSON.stringify(i)}`)}format(i=0,r="optimized"){if(r==="singleLine"||r==="optimized"){let n=this.printer.format("singleLine",i).suffixWith(";");if(r==="singleLine"||this.canFitSingleLine(n,i))return this.addComments(n,i)}return this.addComments(this.printer.format("multiline",i).suffixWith(";"),i)}},ce=class extends A{constructor(i,r,n){super(i,r,n);this.node=i;if(Ce(i))this.header=k(i,r,n),this.body=new B(i.body,i,n);else if(Ce(i.declaration))this.header=k(i.declaration,r,n),this.header.prefix="export ",this.body=new B(i.declaration.body,i,n);else throw new Error(`invalid type: ${JSON.stringify(i)}`)}format(i=0,r="optimized"){this.body.indentStatementFirstLine=!1;let n=this.getFormattedBody(this.body,i);if(r==="singleLine"||r==="optimized"){let a=this.header.format("singleLine",i);if(r==="singleLine"||this.canFitSingleLine(a,i,n.firstLinelength+1))return this.addComments(p.joinLines([a,n]," "),i)}let s=this.header.format("multiline",i);return this.addComments(p.joinLines([s,n]," "),i)}},we=class extends A{constructor(i,r,n){super(i,r,n);this.node=i;this.header=k(i,r,n),this.consequent=this.createStatementPrinter(i.consequent),this.consequent.indentStatementFirstLine=!1,i.alternate&&(this.alternate=this.createStatementPrinter(i.alternate),this.alternate.indentStatementFirstLine=!1)}format(i=0,r="optimized"){let n=!1,s;if(r==="singleLine"||r==="optimized"){let l=this.header.format("singleLine",i),d=x(this.node.consequent)?2:0;(r==="singleLine"||this.canFitSingleLine(l,i,d))&&(s=l)}s||(n=!0,s=this.header.format("multiline",i));let a;if(x(this.node.consequent)){let l=this.consequent.format(i,"optimized");a=p.joinLines([s," ",l])}else if(n||X(this.node.consequent)){this.consequent.indentStatementFirstLine=!0;let l=this.consequent.format(i+1,"singleLine");this.canFitSingleLine(l,i+1)||(l=this.consequent.format(i+1,"multiline")),a=p.appendLines([s,l])}else{this.consequent.indentStatementFirstLine=!1;let l=this.consequent.format(i,"singleLine");this.canFitSingleLine(l,0,s.lastLinelength+1)?a=p.joinLines([s," ",l]):(this.consequent.indentStatementFirstLine=!0,l=this.consequent.format(i+1,"optimized"),a=p.appendLines([s,l]))}if(!this.alternate)return this.addComments(a,i);let o=mi(this.node.consequent)||!x(this.node.consequent),u;if(this.alternate.externalOffset=0,x(this.node.alternate)||X(this.node.alternate))this.alternate.indentStatementFirstLine=!1,this.alternate.externalOffset=o?5:a.lastLinelength+6,u=this.alternate.format(i,"optimized"),u=p.joinLines(["else ",u]);else{let l=o?4:a.lastLinelength+4;this.alternate.indentStatementFirstLine=!1,u=this.alternate.format(i,"singleLine"),this.canFitSingleLine(u,i,l+1)?u=p.joinLines(["else ",u]):(this.alternate.indentStatementFirstLine=!0,u=this.alternate.format(i+1,"optimized"),u=p.appendLines(["else",u]))}return o?a=p.appendLines([a,u.indentFirstLine(this.getIndentation(i))]):a=p.joinLines([a,u]," "),this.addComments(a,i)}},Te=class extends A{constructor(i,r,n){super(i,r,n);this.node=i;this.header=k(i,r,n),this.body=this.createStatementPrinter(i.body)}format(i=0,r="optimized"){this.body.indentStatementFirstLine=!1;let n=this.getFormattedBody(this.body,i);if(r==="singleLine"||r==="optimized"){let a=this.header.format("singleLine",i);if(r==="singleLine"||this.canFitSingleLine(a,i,n.firstLinelength+1))return this.addComments(p.joinLines([a,n]," "),i)}let s=this.header.format("multiline",i);return this.addComments(p.joinLines([s,n]," "),i)}},Ne=class extends A{constructor(i,r,n){super(i,r,n);this.node=i;this.expression=m(i.expression,i,n)}format(i=0,r="optimized"){if(r==="singleLine"||r==="optimized"){let n=this.expression.format("singleLine",i).suffixWith(";");if(r==="singleLine"||this.canFitSingleLine(n,i))return this.addComments(n,i)}return this.addComments(this.expression.format("multiline",i).suffixWith(";"),i)}},Me=class extends A{constructor(i,r,n){super(i,r,n);this.node=i;this.argument=m(i.argument,i,n)}format(i=0,r="optimized"){if(!this.argument)return this.addComments(p.fromString("return;"),i);if(r==="singleLine"||r==="optimized"){let o=this.argument.format("singleLine",i).surroundWith("return ",";");if(r==="singleLine"||this.canFitSingleLine(o,i))return this.addComments(o,i)}if(!K(this.node.argument)&&!_(this.node.argument)){let o=this.argument.format("multiline",i).surroundWith("return ",";");return this.addComments(o,i)}let n=this.getIndentation(i+1),s=this.argument.format("multiline",i+1).indentFirstLine(n),a=this.getIndentation(i);return this.addComments(p.appendLines(["return (",s,`${a});`]),i)}},Ue=class extends A{constructor(i,r,n){super(i,r,n);this.node=i;this.libname=m(i.specifiers[0].local,i,n),this.libsource=m(i.source,i,n)}format(i=0){return this.addComments(p.joinLines(["import"," ",this.libname.format("singleLine",i)," from ",this.libsource.format("singleLine")]).suffixWith(";"),i)}};var Di={quote:"auto"};function yt(e,t={}){try{let i=e.getText(),r=e.positionAt(i.length),n={start:{line:0,character:0},end:r},s={...Di,...t.formattingOptions??{}},a=fi(i,s);return[{range:n,newText:a}]}catch(i){return console.error("Arcade Formatting Error:",i),[]}}function fi(e,t){if(!e)return"";let i=M(t),r=re.fromString(e,i),n=r.toString(),s=W(n,{tolerant:!0,comments:!0}),a=Et(s,r);return s.loc.start=a.start,s.loc.end=a.end,new B(s,null,i).format().toString()}var le=class{constructor(t,i=[]){this._apiDefinitions=t;this._profileVariables=i;this._isInBlock=!1;this._isInCallExpression=!1;this._identifierBeingAssigned=void 0;this._assignmentValidationMode="disabled";this._scriptScopeIdentifiers=new Map;this._diagnostics=[];this._undeclaredIdentifiersInFunctions=new Map}validateScript(t){if(!t)return{diagnostics:[],program:null};this._isInBlock=!1,this._identifierBeingAssigned=void 0,this._assignmentValidationMode="disabled",this._diagnostics=[],this._scriptScopeIdentifiers.clear(),this._undeclaredIdentifiersInFunctions.clear(),this._functionScopeIdentifiers=void 0;let i=null;try{i=W(t,{tolerant:!0}),this.handleErrors(i.errors),i.body.forEach(r=>this.validateStatement(r)),this.diagnoseIdentifiers(),this._undeclaredIdentifiersInFunctions.size>0&&this._undeclaredIdentifiersInFunctions.forEach(r=>{for(let n of r)this.logDiagnostic(n.node.loc,{code:"NotDefined",data:{identifier:n.node.name}})})}catch(r){this.handleException(r)}return{diagnostics:this._diagnostics,program:i}}disableRecordIdentifierAssignment(t,i){let r=this._assignmentValidationMode;this._assignmentValidationMode="disabled",t.call(this,i),this._assignmentValidationMode=r}inBlock(t,i){let r=this._isInBlock;this._isInBlock=!0,t.call(this,i),this._isInBlock=r}get _isInFunctionScope(){return!!this._functionScopeIdentifiers}inFunctionScope(t){this._functionScopeIdentifiers=new Map,t.call(this),this.diagnoseIdentifiers(),this._functionScopeIdentifiers=void 0}logDiagnostic(t,i){let r={severity:f.Error,...i,message:P(nt[i.code]??j[i.code],i.data),range:{start:{line:t.start.line-1,character:t.start.column},end:{line:t.end.line-1,character:t.end.column}}};this._diagnostics.push(r)}handleErrors(t){(t??[]).forEach(this.handleException,this)}handleException(t){if(gi(t)){let{range:i,code:r,data:n}=t;this.logDiagnostic(i,{code:r,data:n})}else this.logDiagnostic({start:{line:1,column:0},end:{line:1,column:0}},{code:"ExecutionError",data:{stack:t.stack??""}})}getIdentifierInfo(t){return this._functionScopeIdentifiers?.get(t)??this._scriptScopeIdentifiers.get(t)}setIdentiferInfo(t,i){if(this._functionScopeIdentifiers){this._functionScopeIdentifiers.set(t,i);return}(this._functionScopeIdentifiers??this._scriptScopeIdentifiers).set(t,i),this._functionScopeIdentifiers||this._undeclaredIdentifiersInFunctions.has(t)&&(this._undeclaredIdentifiersInFunctions.delete(t),i.used=!0)}isProfileVariable(t){return(this._profileVariables??[]).some(i=>i.name.toLowerCase()===t)}isApiConstant(t){return!!this._apiDefinitions?.constantDefinitions?.get(t)}isApiFunction(t){return!!this._apiDefinitions?.functionDefinitions?.get(t)}isApiItem(t){return this.isApiConstant(t)||this.isApiFunction(t)}validateStatement(t){if(t)switch(t.type){case c.BlockStatement:t.body.forEach(i=>this.validateStatement(i));return;case c.VariableDeclaration:t.declarations.forEach(i=>this.validateVariableDeclarator(i));return;case c.FunctionDeclaration:this.validateFunctionDeclaration(t);return;case c.ExportNamedDeclaration:this.validateExportDeclaration(t);return;case c.ImportDeclaration:this.validateImportDeclaration(t);return;case c.WhileStatement:this.validateWhileStatement(t);return;case c.ForStatement:this.validateForStatement(t);return;case c.ForInStatement:this.validateForInStatement(t);return;case c.IfStatement:this.validateIfStatement(t);return;case c.ReturnStatement:this.validateExpression(t.argument);return;case c.ExpressionStatement:this.validateExpression(t.expression);return;case c.BreakStatement:case c.ContinueStatement:case c.EmptyStatement:return}}validateVariableDeclarator(t){this.validateExpression(t.init),this.recordVariableIdentifier(t.id,{initialized:!!t.init})}validateFunctionDeclaration(t){this.recordFunctionIdentifier(t),this.inFunctionScope(()=>{t.params.forEach(i=>this.recordParamAsIdentifier(i)),z(t.body)&&this.logDiagnostic(t.body.loc,{code:"UnexpectedEmptyFunction",data:{identifier:t.id.name},severity:f.Warning}),this.validateStatement(t.body)})}validateExportDeclaration(t){this.validateStatement(t.declaration)}validateImportDeclaration(t){this.recordImportIdentifier(t)}validateForStatement(t){N(t.init)?this.inBlock(this.validateStatement,t.init):this.validateExpression(t.init),this.validateExpression(t.update),this.validateExpression(t.test),z(t.body)&&this.logDiagnostic(t.body.loc,{code:"EmptyBlockStatement",severity:f.Warning}),this.inBlock(this.validateStatement,t.body)}validateWhileStatement(t){this.validateExpression(t.test),z(t.body)&&this.logDiagnostic(t.body.loc,{code:"EmptyBlockStatement",severity:f.Warning}),this.inBlock(this.validateStatement,t.body)}validateForInStatement(t){C(t.left)?this.validateExpression(t.left):this.recordVariableIdentifier(t.left.declarations[0].id,{initialized:!0,inBlock:!0}),this.validateExpression(t.right),z(t.body)&&this.logDiagnostic(t.body.loc,{code:"EmptyBlockStatement",severity:f.Warning}),this.validateStatement(t.body)}validateIfStatement(t){this.validateExpression(t.test),z(t.consequent)&&this.logDiagnostic(t.consequent.loc,{code:"EmptyBlockStatement",severity:f.Warning}),t.alternate&&z(t.alternate)&&this.logDiagnostic(t.alternate.loc,{code:"EmptyBlockStatement",severity:f.Warning}),this.inBlock(this.validateStatement,t.consequent),this.inBlock(this.validateStatement,t.alternate)}validateExpression(t){if(t)switch(t.type){case c.AssignmentExpression:this.validateAssignmentExpression(t);return;case c.CallExpression:this.validateCallExpression(t);return;case c.Identifier:this.validateIdentifier(t);return;case c.Literal:this.validateLiteral(t);return;case c.ArrayExpression:t.elements.forEach(i=>this.validateExpression(i));return;case c.ObjectExpression:this.validateObjectExpression(t);return;case c.UnaryExpression:this.validateUnaryExpression(t);return;case c.UpdateExpression:this.validateUpdateExpression(t);return;case c.BinaryExpression:case c.LogicalExpression:this.validateBinaryAndLogicalExpression(t);return;case c.MemberExpression:this.validateMemberExpression(t);return;case c.TemplateLiteral:t.expressions.forEach(i=>this.validateExpression(i));return;default:return}}validateAssignmentExpression(t){let i=this._identifierBeingAssigned,r=this._assignmentValidationMode;C(t.left)&&(this._identifierBeingAssigned=t.left.name.toLowerCase(),this._assignmentValidationMode="left"),this.validateExpression(t.left),C(t.left)&&(this._assignmentValidationMode="right"),this.validateExpression(t.right),this._identifierBeingAssigned=i,this._assignmentValidationMode=r}validateCallExpression(t){let i=this._isInCallExpression;if(this._isInCallExpression=!0,this.validateExpression(t.callee),C(t.callee)){let r=t.callee.name.toLowerCase(),n=this.getIdentifierInfo(r),s=this._apiDefinitions?.functionDefinitions?.get(r);if(!n&&s){let a=xi(s,t.arguments.length);a&&this.logDiagnostic(t.loc,a)}}t.arguments.forEach(r=>this.validateExpression(r)),this._isInCallExpression=i}validateIdentifier(t){let i=t.name.toLowerCase(),r=this.getIdentifierInfo(i);if(r){if(this._assignmentValidationMode==="left"&&this._identifierBeingAssigned===i){r.initialized=!0;return}if(this._assignmentValidationMode==="right"&&this._identifierBeingAssigned===i)return;r.used=!0;return}if(!(this.isProfileVariable(i)||this.isApiConstant(i))){if(this.isApiFunction(i)){if(this._isInCallExpression)return;this.logDiagnostic(t.loc,{code:"InvalidApiFunctionUsage",data:{identifier:t.name}});return}if(this._isInFunctionScope){let n=this._undeclaredIdentifiersInFunctions.get(i);n||(n=[],this._undeclaredIdentifiersInFunctions.set(i,n)),n.push({node:t,identifier:i});return}this.logDiagnostic(t.loc,{code:"NotDefined",data:{identifier:t.name}})}}validateLiteral(t){Ei(t.raw).forEach(i=>{let r=this.getIdentifierInfo(i.toLowerCase());r&&(r.used=!0)})}logProfileOrApiConflict(t){let i=t.name.toLowerCase(),r=this.isProfileVariable(i),n=this.isApiItem(i);!r&&!n||this.logDiagnostic(t.loc,{code:r?"ProfileVariablesConflict":"ApiConflict",severity:f.Warning,data:{identifier:t.name}})}logReservedKeywordsConflict(t){let i=t.name.toLowerCase();ot.includes(i)&&this.logDiagnostic(t.loc,{code:"ReservedKeyword",severity:f.Warning,data:{identifier:t.name}})}validateObjectExpression(t){t.properties.forEach(i=>{this.validateExpression(i.value)})}validateUnaryExpression(t){this.validateExpression(t.argument)}validateUpdateExpression(t){this.validateExpression(t.argument)}validateBinaryAndLogicalExpression(t){this.validateExpression(t.left),this.validateExpression(t.right)}validateMemberExpression(t){let i=this.flattenMemberExpressionAndValidate(t),r=i[0].object;this.disableRecordIdentifierAssignment(this.validateExpression,r),C(r)&&(this.getIdentifierInfo(r.name.toLowerCase())||this.validateMemberExpressionWithProfile(i)||this.validateConstantMemberExpression(i))}flattenMemberExpressionAndValidate(t){switch(t.type){case c.MemberExpression:return(!C(t.property)||t.computed)&&this.validateExpression(t.property),[...this.flattenMemberExpressionAndValidate(t.object),t];default:return[]}}extractAndValidatePropertyName(t){switch(t.type){case"Identifier":return t.name.toLowerCase();case"Literal":return typeof t.value!="string"?(this.logDiagnostic(t.loc,{code:"UnexpectedPropertyIdentifier"}),null):t.value.toLowerCase();default:return this.logDiagnostic(t.loc,{code:"UnexpectedPropertyIdentifier"}),null}}validateConstantMemberExpression(t){let i=t[0];if(!C(i.object))return!1;let r=i.object.name.toLowerCase(),n=this._apiDefinitions?.constantDefinitions?.get(r);if(!n)return!1;if(n.type!=="namespace")return this.logDiagnostic(i.property.loc,{code:"NotADictionary",data:{identifier:r}}),!0;let s=this.extractAndValidatePropertyName(i.property);if(!s)return!0;if(!n.members.some(a=>a.key===s)){let a=n.members.reduce((o,u)=>`${o}${o?" | ":""}${u.completion.label.split(".").pop()}`,"");this.logDiagnostic(i.property.loc,{code:"InvalidConstantIdentifier",data:{list:a}})}return t.length>1&&this.logDiagnostic(t[1].property.loc,{code:"UnexpectedPropertyIdentifier"}),!0}validateMemberExpressionWithProfile(t){let i=t[0];if(i.object.type!==c.Identifier)return!1;let r=i.object.name.toLowerCase(),n=this._profileVariables?.find(a=>a.key===r);if(!n)return!1;if(he(n))return this.logDiagnostic(i.object.loc,{code:"NotADictionary",data:{identifier:n.name}}),!0;if(this._identifierBeingAssigned===r)return this.logDiagnostic(i.loc,{code:"ProfileVariablesAreImmutable"}),!0;let s=n;for(let a=0;a<t.length;a+=1){if(t[a].computed)return!0;if(he(s))return this.logDiagnostic(t[a-1]?.property.loc??t[a].object.loc,{code:"NotADictionary",data:{identifier:s.name}}),!0;let o=this.extractAndValidatePropertyName(t[a].property);if(!o)return!0;if(s.properties.length===0)return this.logDiagnostic(t[a].property.loc,{code:"UnknownPropertyIdentifier",data:{identifier:o},severity:f.Warning}),!0;let u=s.properties.find(l=>l.name.toLowerCase()===o);if(!u){let l=s.properties.reduce((d,g)=>`${d}${d?" | ":""}${g.name.split(".").pop()}`,"");return this.logDiagnostic(t[a].property.loc,{code:"InvalidPropertyIdentifier",data:{list:l}}),!0}s=u}return!0}recordVariableIdentifier(t,i){this.logReservedKeywordsConflict(t),this.logProfileOrApiConflict(t);let r=t.name.toLowerCase(),n=this.getIdentifierInfo(r),s=n&&this._isInFunctionScope&&n.scope==="function",a=n&&!this._isInFunctionScope&&n.scope==="script";(s||a)&&this.logDiagnostic(t.loc,{code:"AlreadyDefined",data:{identifier:t.name},severity:f.Warning});let o=i.inBlock??this._isInBlock,{initialized:u}=i;if(!n||this._isInFunctionScope&&n.scope!=="function"){let l=this._isInFunctionScope?"function":o?"block":"script";n={node:t,used:!1,initialized:u,scope:l}}else n.node=t,n.used=!1,n.initialized=u;return n.scope==="block"&&!o&&(n.scope="script",this.logDiagnostic(t.loc,{code:"AlreadyDefined",data:{identifier:t.name},severity:f.Warning})),this.setIdentiferInfo(r,n),!1}recordImportIdentifier(t){let i=t.specifiers[0].local;this.logProfileOrApiConflict(i);let r=i.name.toLowerCase(),n=this.getIdentifierInfo(r);n?.scope&&this.logDiagnostic(t.specifiers[0].local.loc,{code:"AlreadyDefined",data:{identifier:t.specifiers[0].local.name},severity:f.Warning}),n={node:t.specifiers[0].local,used:!1,...n,scope:"script",initialized:!0},this.setIdentiferInfo(r,n)}recordFunctionIdentifier(t){this.logProfileOrApiConflict(t.id);let i=t.id.name.toLowerCase(),r=this.getIdentifierInfo(i);r?.scope&&this.logDiagnostic(t.id.loc,{code:"AlreadyDefined",data:{identifier:t.id.name},severity:f.Warning}),r={node:t.id,used:!1,...r,scope:"script",initialized:!0},this.setIdentiferInfo(i,r)}recordParamAsIdentifier(t){return this.recordVariableIdentifier(t,{initialized:!0})}diagnoseIdentifiers(){(this._functionScopeIdentifiers??this._scriptScopeIdentifiers).forEach(t=>{t.node&&(t.used?t.initialized||this.logDiagnostic(t.node.loc,{code:"DefinedNeverAssigned",data:{identifier:t.node.name},severity:f.Warning}):this.logDiagnostic(t.node.loc,{code:t.initialized?"AssignedNeverUsed":"DefinedNeverUsed",data:{identifier:t.node.name},severity:f.Warning}))})}};function gi(e){return e?.name==="ParsingError"}function z(e){return R(e)||x(e)&&!e?.body.length}function xi(e,t){if(!e||t===void 0||t===null||t<0)return null;let{min:i,max:r}=e.overloads.reduce((n,s)=>{let{min:a,max:o}=s.parametersInfo;return n.min>=0&&(n.min=Math.min(a,n.min)),n.max>=0&&(n.max=o<0?o:Math.max(o,n.max)),n},{min:Number.POSITIVE_INFINITY,max:0});return t<i?i>0?{code:"NotEnoughArguments",data:{min:i}}:{code:"NoArgumentExpected"}:r>=0&&t>r?{code:"TooManyArguments",data:{max:r}}:null}var Ci=/\B@\w+/gu;function Ei(e){return Array.from((e??"").matchAll(Ci),t=>t[0].slice(1))}var St=class{constructor(){this.languageOptions={}}configure(t={}){this.languageOptions=t??{},this.apiService=new Z(this.languageOptions)}async doValidation(t,i){if(!this.apiService)return[];let r=await this.apiService.getApiDatabase(i),{profile:{variables:n=[]}={}}=i,{diagnostics:s}=new le(r,n).validateScript(t.getText());return s}async doComplete(t,i,r){if(!this.apiService)return{isIncomplete:!1,items:[]};let n=await this.apiService.getApiDatabase(r);return await Ct(t,i,n,r)??{isIncomplete:!1,items:[]}}doFormat(t,i){return yt(t,i)}async getApiLibrary(t){return this.apiService?(await this.apiService.getApiDatabase(t)).categories??[]:[]}};export{st as ArcadeKeywords,St as ArcadeLanguageService,at as ArcadeLiterals,ot as ArcadeReservedKeywords,nt as DiagnosticMessages,f as DiagnosticSeverity,rt as ValidationDiagnosticCodes,Oe as isDictionaryVariable,he as isValueVariable};
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@arcgis/arcade-languageservice",
3
3
  "description": "Arcade Language Service",
4
4
  "homepage": "https://developers.arcgis.com/javascript/latest/",
5
- "version": "4.29.0-beta.48",
5
+ "version": "4.29.0-beta.49",
6
6
  "type": "module",
7
7
  "module": "dist/esm/index.js",
8
8
  "main": "dist/esm/index.js",
@@ -31,7 +31,7 @@
31
31
  "@arcgis/arcade-parser": "1.20.5",
32
32
  "@arcgis/arcade-sdk": "~1.24.0",
33
33
  "@arcgis/arcade-tests": "^1.20.0",
34
- "@arcgis/components-plugins": "4.29.0-beta.48",
34
+ "@arcgis/components-plugins": "4.29.0-beta.49",
35
35
  "@arcgis/typescript-config": "1.0.0",
36
36
  "@types/fs-extra": "^11.0.1",
37
37
  "@types/jest": "^29.5.0",
@@ -48,5 +48,5 @@
48
48
  "tsup": "^7.3.0",
49
49
  "typescript": "5.2.2"
50
50
  },
51
- "gitHead": "04c852ee7431b18b1f6663d03d3a225b12fc206d"
51
+ "gitHead": "346c710a59323519e7fbabc4d208f70b68a21946"
52
52
  }