@arcgis/arcade-languageservice 4.30.0 → 4.31.0-next.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/index.d.ts +173 -96
- package/dist/esm/index.js +7 -7
- package/package.json +13 -10
package/dist/esm/index.d.ts
CHANGED
|
@@ -2,6 +2,73 @@ import { CompletionItem, Range, DiagnosticSeverity, TextEdit, Position, Completi
|
|
|
2
2
|
export { DiagnosticSeverity } from 'vscode-languageserver-types';
|
|
3
3
|
import { TextDocument } from 'vscode-languageserver-textdocument';
|
|
4
4
|
|
|
5
|
+
var layer = "Layer";
|
|
6
|
+
var featureservice = "Feature service";
|
|
7
|
+
var mapservice = "Map service";
|
|
8
|
+
var map = "Web Map";
|
|
9
|
+
var webmap = "Web Map";
|
|
10
|
+
var webscene = "Web Scene";
|
|
11
|
+
var webmapformat = "Web map: {webMapTitle}";
|
|
12
|
+
var item = "Item";
|
|
13
|
+
var invoking = "Invoking";
|
|
14
|
+
var fields = "Field names";
|
|
15
|
+
var values = "Values";
|
|
16
|
+
var relationships = "Related features";
|
|
17
|
+
var layers = "Layers";
|
|
18
|
+
var tables = "Tables";
|
|
19
|
+
var geometry = "Geometry";
|
|
20
|
+
var dictionary = "Dictionary";
|
|
21
|
+
var feature = "Feature";
|
|
22
|
+
var featureset = "Feature set";
|
|
23
|
+
var featuresetcollection = "Feature set collection";
|
|
24
|
+
var oid = "Feature ID";
|
|
25
|
+
var number = "Number";
|
|
26
|
+
var string = "String";
|
|
27
|
+
var date = "Date";
|
|
28
|
+
var blob = "Binary";
|
|
29
|
+
var raster = "Raster";
|
|
30
|
+
var guid = "GUID";
|
|
31
|
+
var xml = "XML";
|
|
32
|
+
var domainvalues = "Domain values";
|
|
33
|
+
var subtypes = "Subtypes";
|
|
34
|
+
var domainvaluesfortypeformat = "{fieldName} - Domain values for type '{typeName}'";
|
|
35
|
+
var domainvaluesbysubtypes = "Domain values by subtypes";
|
|
36
|
+
var ProfileSettingsStrings = {
|
|
37
|
+
layer: layer,
|
|
38
|
+
featureservice: featureservice,
|
|
39
|
+
mapservice: mapservice,
|
|
40
|
+
map: map,
|
|
41
|
+
webmap: webmap,
|
|
42
|
+
webscene: webscene,
|
|
43
|
+
webmapformat: webmapformat,
|
|
44
|
+
item: item,
|
|
45
|
+
invoking: invoking,
|
|
46
|
+
fields: fields,
|
|
47
|
+
values: values,
|
|
48
|
+
relationships: relationships,
|
|
49
|
+
layers: layers,
|
|
50
|
+
tables: tables,
|
|
51
|
+
geometry: geometry,
|
|
52
|
+
dictionary: dictionary,
|
|
53
|
+
feature: feature,
|
|
54
|
+
featureset: featureset,
|
|
55
|
+
featuresetcollection: featuresetcollection,
|
|
56
|
+
oid: oid,
|
|
57
|
+
number: number,
|
|
58
|
+
string: string,
|
|
59
|
+
date: date,
|
|
60
|
+
blob: blob,
|
|
61
|
+
raster: raster,
|
|
62
|
+
guid: guid,
|
|
63
|
+
"global-id": "Global ID",
|
|
64
|
+
xml: xml,
|
|
65
|
+
"function": "Function",
|
|
66
|
+
domainvalues: domainvalues,
|
|
67
|
+
subtypes: subtypes,
|
|
68
|
+
domainvaluesfortypeformat: domainvaluesfortypeformat,
|
|
69
|
+
domainvaluesbysubtypes: domainvaluesbysubtypes
|
|
70
|
+
};
|
|
71
|
+
|
|
5
72
|
/**
|
|
6
73
|
* Supported function bundles
|
|
7
74
|
*/
|
|
@@ -147,34 +214,6 @@ interface SdkFunction extends SdkItemBase {
|
|
|
147
214
|
*/
|
|
148
215
|
type SdkItem = SdkConstant | SdkFunction | SdkFunction[];
|
|
149
216
|
|
|
150
|
-
/**
|
|
151
|
-
* Describes the formatting options
|
|
152
|
-
*/
|
|
153
|
-
interface FormattingOptions {
|
|
154
|
-
/**
|
|
155
|
-
* Number of spaces the formatter should use for indentation.
|
|
156
|
-
* If you do not pass this option explicitly, it will be
|
|
157
|
-
* (quite reliably!) inferred from the original code.
|
|
158
|
-
* @default 2
|
|
159
|
-
*/
|
|
160
|
-
indentWidth?: number;
|
|
161
|
-
/**
|
|
162
|
-
* Some of the formatter code (such as that for printing function
|
|
163
|
-
* parameter lists) makes a valiant attempt to prevent really long
|
|
164
|
-
* lines. You can adjust the limit by changing this option; however,
|
|
165
|
-
* there is no guarantee that line length will fit inside this limit.
|
|
166
|
-
* @default 80
|
|
167
|
-
*/
|
|
168
|
-
wrapColumn?: number;
|
|
169
|
-
/**
|
|
170
|
-
* If you want to override the quotes used in string literals, specify
|
|
171
|
-
* either "single", "double", or "auto" here ("auto" will select the one
|
|
172
|
-
* which results in the shorter literal) Otherwise, use double quotes.
|
|
173
|
-
* @default null
|
|
174
|
-
*/
|
|
175
|
-
quote?: "auto" | "double" | "single" | null;
|
|
176
|
-
}
|
|
177
|
-
|
|
178
217
|
/**
|
|
179
218
|
* The editor can be extended with custom snippets
|
|
180
219
|
*/
|
|
@@ -211,11 +250,7 @@ interface ApiContext {
|
|
|
211
250
|
*/
|
|
212
251
|
locale?: string;
|
|
213
252
|
/**
|
|
214
|
-
*
|
|
215
|
-
*/
|
|
216
|
-
formattingOptions?: FormattingOptions;
|
|
217
|
-
/**
|
|
218
|
-
* Allows to augment the arcade snippets with a collection of snippets
|
|
253
|
+
* Allows to augment the language snippets with a collection of snippets
|
|
219
254
|
*/
|
|
220
255
|
snippets?: ApiSnippet[];
|
|
221
256
|
}
|
|
@@ -282,14 +317,106 @@ interface ApiValueVariable extends ApiVariableBase {
|
|
|
282
317
|
* The profile variable type
|
|
283
318
|
*/
|
|
284
319
|
type ApiVariable = ApiDictionaryVariable | ApiValueVariable;
|
|
320
|
+
|
|
285
321
|
/**
|
|
286
|
-
*
|
|
322
|
+
* Represent items stored in the library
|
|
287
323
|
*/
|
|
288
|
-
|
|
324
|
+
type ApiItem = SdkConstant | SdkFunction;
|
|
289
325
|
/**
|
|
290
|
-
*
|
|
326
|
+
* Represent a category of api items in the api library
|
|
291
327
|
*/
|
|
292
|
-
|
|
328
|
+
interface ApiCategory extends SdkCategory {
|
|
329
|
+
items: ApiItem[];
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
/**
|
|
333
|
+
* Language service settings
|
|
334
|
+
*/
|
|
335
|
+
interface LanguageServiceSettings {
|
|
336
|
+
/**
|
|
337
|
+
* The path to the assets folder where the api files are stored
|
|
338
|
+
*/
|
|
339
|
+
assetsPath?: string;
|
|
340
|
+
/**
|
|
341
|
+
* A template string for constructing the path to the api definition
|
|
342
|
+
* example: `${assetsPath}/api/arcade-api.t9n.${locale}.json`
|
|
343
|
+
*/
|
|
344
|
+
apiPathTemplate: string;
|
|
345
|
+
/**
|
|
346
|
+
* The language id
|
|
347
|
+
*/
|
|
348
|
+
languageId: string;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
type ApiConstantNamespace = {
|
|
352
|
+
type: "namespace";
|
|
353
|
+
key: string;
|
|
354
|
+
members: SdkConstant[];
|
|
355
|
+
completion: CompletionItem;
|
|
356
|
+
};
|
|
357
|
+
type ApiConstantDefinition = SdkConstant | ApiConstantNamespace;
|
|
358
|
+
type ApiFunctionDefinition = {
|
|
359
|
+
type: "functionDefinition";
|
|
360
|
+
key: string;
|
|
361
|
+
overloads: SdkFunction[];
|
|
362
|
+
};
|
|
363
|
+
/**
|
|
364
|
+
* Describes the API properties
|
|
365
|
+
*/
|
|
366
|
+
interface ApiDatabase {
|
|
367
|
+
categories: ApiCategory[];
|
|
368
|
+
functionDefinitions: Map<string, ApiFunctionDefinition>;
|
|
369
|
+
constantDefinitions: Map<string, ApiConstantDefinition>;
|
|
370
|
+
}
|
|
371
|
+
declare class ApiService<TApiContext extends ApiContext = ApiContext> {
|
|
372
|
+
private _settings;
|
|
373
|
+
private sdkCategoriesCache;
|
|
374
|
+
constructor(_settings: LanguageServiceSettings);
|
|
375
|
+
/**
|
|
376
|
+
* Returns the API defintions for the given settings: definitions, constant definitions, and function definitons
|
|
377
|
+
*/
|
|
378
|
+
getApiDatabase(context: TApiContext): Promise<ApiDatabase>;
|
|
379
|
+
/**
|
|
380
|
+
* Returns the API definitions
|
|
381
|
+
*/
|
|
382
|
+
getApiLibrary(context: TApiContext): Promise<ApiCategory[]>;
|
|
383
|
+
private loadSdkApiLibrary;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
/**
|
|
387
|
+
* Describes the formatting options
|
|
388
|
+
*/
|
|
389
|
+
interface FormattingOptions {
|
|
390
|
+
/**
|
|
391
|
+
* Number of spaces the formatter should use for indentation.
|
|
392
|
+
* If you do not pass this option explicitly, it will be
|
|
393
|
+
* (quite reliably!) inferred from the original code.
|
|
394
|
+
* @default 2
|
|
395
|
+
*/
|
|
396
|
+
indentWidth?: number;
|
|
397
|
+
/**
|
|
398
|
+
* Some of the formatter code (such as that for printing function
|
|
399
|
+
* parameter lists) makes a valiant attempt to prevent really long
|
|
400
|
+
* lines. You can adjust the limit by changing this option; however,
|
|
401
|
+
* there is no guarantee that line length will fit inside this limit.
|
|
402
|
+
* @default 80
|
|
403
|
+
*/
|
|
404
|
+
wrapColumn?: number;
|
|
405
|
+
/**
|
|
406
|
+
* If you want to override the quotes used in string literals, specify
|
|
407
|
+
* either "single", "double", or "auto" here ("auto" will select the one
|
|
408
|
+
* which results in the shorter literal) Otherwise, use double quotes.
|
|
409
|
+
* @default null
|
|
410
|
+
*/
|
|
411
|
+
quote?: "auto" | "double" | "single" | null;
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
interface ArcadeApiContext extends ApiContext {
|
|
415
|
+
/**
|
|
416
|
+
* Options to control how the script should be formatted
|
|
417
|
+
*/
|
|
418
|
+
formattingOptions?: FormattingOptions;
|
|
419
|
+
}
|
|
293
420
|
|
|
294
421
|
/**
|
|
295
422
|
* Arcade diagnostic error codes.
|
|
@@ -442,18 +569,12 @@ declare const DiagnosticMessages: {
|
|
|
442
569
|
readonly UnknownPropertyIdentifier: "Unknown property identifier '${identifier}'.";
|
|
443
570
|
};
|
|
444
571
|
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
type ApiItem = SdkConstant | SdkFunction;
|
|
449
|
-
/**
|
|
450
|
-
* Represent a category of api items in the api library
|
|
451
|
-
*/
|
|
452
|
-
interface ApiCategory extends SdkCategory {
|
|
453
|
-
items: ApiItem[];
|
|
572
|
+
type ArcadeLanguageServiceSettings = Pick<LanguageServiceSettings, "assetsPath">;
|
|
573
|
+
declare class ArcadeApiService extends ApiService {
|
|
574
|
+
constructor(settings: ArcadeLanguageServiceSettings);
|
|
454
575
|
}
|
|
455
576
|
|
|
456
|
-
declare function arcadeFormat(document: TextDocument, context?:
|
|
577
|
+
declare function arcadeFormat(document: TextDocument, context?: ArcadeApiContext): TextEdit[];
|
|
457
578
|
/**
|
|
458
579
|
* Format code using options.
|
|
459
580
|
*/
|
|
@@ -463,59 +584,15 @@ declare const ArcadeKeywords: ("function" | "else" | "import" | "break" | "conti
|
|
|
463
584
|
declare const ArcadeLiterals: ("false" | "null" | "true")[];
|
|
464
585
|
declare const ArcadeReservedKeywords: string[];
|
|
465
586
|
|
|
466
|
-
/**
|
|
467
|
-
* Language service settings
|
|
468
|
-
*/
|
|
469
|
-
interface ArcadeLanguageServiceSettings {
|
|
470
|
-
/**
|
|
471
|
-
* The path to the assets folder where the arcade api files are stored
|
|
472
|
-
*/
|
|
473
|
-
assetsPath?: string;
|
|
474
|
-
}
|
|
475
|
-
|
|
476
587
|
declare class ArcadeLanguageService {
|
|
477
588
|
private languageOptions;
|
|
478
589
|
private apiService;
|
|
479
590
|
configure(languageOptions?: ArcadeLanguageServiceSettings): void;
|
|
480
|
-
doValidation(document: TextDocument, context:
|
|
481
|
-
doComplete(document: TextDocument, position: Position, context:
|
|
482
|
-
getApiLibrary(context:
|
|
591
|
+
doValidation(document: TextDocument, context: ArcadeApiContext): Promise<Diagnostic[]>;
|
|
592
|
+
doComplete(document: TextDocument, position: Position, context: ArcadeApiContext): Promise<CompletionList>;
|
|
593
|
+
getApiLibrary(context: ArcadeApiContext): Promise<ApiCategory[]>;
|
|
483
594
|
}
|
|
484
595
|
|
|
485
|
-
type ProfileStrings =
|
|
486
|
-
layer: string;
|
|
487
|
-
featureservice: string;
|
|
488
|
-
mapservice: string;
|
|
489
|
-
map: string;
|
|
490
|
-
webmap: string;
|
|
491
|
-
webscene: string;
|
|
492
|
-
webmapformat: string;
|
|
493
|
-
item: string;
|
|
494
|
-
invoking: string;
|
|
495
|
-
fields: string;
|
|
496
|
-
values: string;
|
|
497
|
-
relationships: string;
|
|
498
|
-
layers: string;
|
|
499
|
-
tables: string;
|
|
500
|
-
geometry: string;
|
|
501
|
-
dictionary: string;
|
|
502
|
-
feature: string;
|
|
503
|
-
featureset: string;
|
|
504
|
-
featuresetcollection: string;
|
|
505
|
-
oid: string;
|
|
506
|
-
number: string;
|
|
507
|
-
string: string;
|
|
508
|
-
date: string;
|
|
509
|
-
blob: string;
|
|
510
|
-
raster: string;
|
|
511
|
-
guid: string;
|
|
512
|
-
"global-id": string;
|
|
513
|
-
xml: string;
|
|
514
|
-
function: string;
|
|
515
|
-
domainvalues: string;
|
|
516
|
-
subtypes: string;
|
|
517
|
-
domainvaluesfortypeformat: string;
|
|
518
|
-
domainvaluesbysubtypes: string;
|
|
519
|
-
};
|
|
596
|
+
type ProfileStrings = typeof ProfileSettingsStrings;
|
|
520
597
|
|
|
521
|
-
export { type ApiCategory, type
|
|
598
|
+
export { type ApiCategory, type ApiContext, type ApiItem, type ApiProfile, type ApiSnippet, type ApiValueVariable, type ApiValueVariableType, type ApiVariable, type SdkVariableType as ApiVariableType, type ArcadeApiContext, ArcadeApiService, ArcadeKeywords, ArcadeLanguageService, type ArcadeLanguageServiceSettings, ArcadeLiterals, ArcadeReservedKeywords, type BundleType, type Diagnostic, type DiagnosticCodes, type DiagnosticData, DiagnosticMessages, type LanguageServiceSettings, type ProfileId, type ProfileStrings, type SdkPredefinedProfile, ValidationDiagnosticCodes, arcadeFormat, format };
|
package/dist/esm/index.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
function ge(t){return!!t&&t.type!=="dictionary"}function $e(t){return t?.type==="dictionary"}var j={False:"false",Null:"null",True:"true"},f={Break:"break",Continue:"continue",Else:"else",For:"for",From:"from",Function:"function",If:"if",Import:"import",Export:"export",In:"in",Return:"return",Var:"var",While:"while"},o={AssignmentExpression:"AssignmentExpression",ArrayExpression:"ArrayExpression",BlockComment:"BlockComment",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",ContinueStatement:"ContinueStatement",EmptyStatement:"EmptyStatement",ExpressionStatement:"ExpressionStatement",ExportNamedDeclaration:"ExportNamedDeclaration",ExportSpecifier:"ExportSpecifier",ForStatement:"ForStatement",ForInStatement:"ForInStatement",FunctionDeclaration:"FunctionDeclaration",Identifier:"Identifier",IfStatement:"IfStatement",ImportDeclaration:"ImportDeclaration",ImportDefaultSpecifier:"ImportDefaultSpecifier",LineComment:"LineComment",Literal:"Literal",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",ObjectExpression:"ObjectExpression",Program:"Program",Property:"Property",ReturnStatement:"ReturnStatement",TemplateElement:"TemplateElement",TemplateLiteral:"TemplateLiteral",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement"},Fe=["++","--"],Qe=["-","+","!","~"],Ze=["=","/=","*=","%=","+=","-="],Xe=["||","&&"],Lt=["|","&",">>","<<",">>>","^","==","!=","<","<=",">",">=","+","-","*","/","%"],q={"||":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":10,"/":10,"%":10},h={Unknown:0,BooleanLiteral:1,EOF:2,Identifier:3,Keyword:4,NullLiteral:5,NumericLiteral:6,Punctuator:7,StringLiteral:8,Template:10},Ye=["Unknown","Boolean","<end>","Identifier","Keyword","Null","Numeric","Punctuator","String","RegularExpression","Template"],p={InvalidModuleUri:"InvalidModuleUri",ForInOfLoopInitializer:"ForInOfLoopInitializer",IdentiferExpected:"IdentiferExpected",InvalidEscapedReservedWord:"InvalidEscapedReservedWord",InvalidExpression:"InvalidExpression",InvalidFunctionIdentifier:"InvalidFunctionIdentifier",InvalidHexEscapeSequence:"InvalidHexEscapeSequence",InvalidLeftHandSideInAssignment:"InvalidLeftHandSideInAssignment",InvalidLeftHandSideInForIn:"InvalidLeftHandSideInForIn",InvalidTemplateHead:"InvalidTemplateHead",InvalidVariableAssignment:"InvalidVariableAssignment",KeyMustBeString:"KeyMustBeString",NoFunctionInsideBlock:"NoFunctionInsideBlock",NoFunctionInsideFunction:"NoFunctionInsideFunction",ModuleExportRootOnly:"ModuleExportRootOnly",ModuleImportRootOnly:"ModuleImportRootOnly",PunctuatorExpected:"PunctuatorExpected",TemplateOctalLiteral:"TemplateOctalLiteral",UnexpectedBoolean:"UnexpectedBoolean",UnexpectedEndOfScript:"UnexpectedEndOfScript",UnexpectedIdentifier:"UnexpectedIdentifier",UnexpectedKeyword:"UnexpectedKeyword",UnexpectedNull:"UnexpectedNull",UnexpectedNumber:"UnexpectedNumber",UnexpectedPunctuator:"UnexpectedPunctuator",UnexpectedString:"UnexpectedString",UnexpectedTemplate:"UnexpectedTemplate",UnexpectedToken:"UnexpectedToken"},Ae={[p.InvalidModuleUri]:"Module uri must be a text literal.",[p.ForInOfLoopInitializer]:"for-in loop variable declaration may not have an initializer.",[p.IdentiferExpected]:"'${value}' is an invalid identifier.",[p.InvalidEscapedReservedWord]:"Keyword cannot contain escaped characters.",[p.InvalidExpression]:"Invalid expression.",[p.InvalidFunctionIdentifier]:"'${value}' is an invalid function identifier.",[p.InvalidHexEscapeSequence]:"Invalid hexadecimal escape sequence.",[p.InvalidLeftHandSideInAssignment]:"Invalid left-hand side in assignment.",[p.InvalidLeftHandSideInForIn]:"Invalid left-hand side in for-in.",[p.InvalidTemplateHead]:"Invalid template structure.",[p.InvalidVariableAssignment]:"Invalid variable assignment.",[p.KeyMustBeString]:"Object property keys must be a word starting with a letter.",[p.NoFunctionInsideBlock]:"Functions cannot be declared inside of code blocks.",[p.NoFunctionInsideFunction]:"Functions cannot be declared inside another function.",[p.ModuleExportRootOnly]:"Module exports cannot be declared inside of code blocks.",[p.ModuleImportRootOnly]:"Module import cannot be declared inside of code blocks.",[p.PunctuatorExpected]:"'${value}' expected.",[p.TemplateOctalLiteral]:"Octal literals are not allowed in template literals.",[p.UnexpectedBoolean]:"Unexpected boolean literal.",[p.UnexpectedEndOfScript]:"Unexpected end of Arcade expression.",[p.UnexpectedIdentifier]:"Unexpected identifier.",[p.UnexpectedKeyword]:"Unexpected keyword.",[p.UnexpectedNull]:"Unexpected null literal.",[p.UnexpectedNumber]:"Unexpected number.",[p.UnexpectedPunctuator]:"Unexpected ponctuator.",[p.UnexpectedString]:"Unexpected text literal.",[p.UnexpectedTemplate]:"Unexpected quasi '${value}'.",[p.UnexpectedToken]:"Unexpected token '${value}'."},te=class et extends Error{constructor({code:e,index:i,line:r,column:n,len:s=0,description:a,data:u}){super(a??e),this.declaredRootClass="esri.arcade.lib.diagnostic",this.name="ParsingError",this.code=e,this.index=i,this.line=r,this.column=n,this.len=s,this.data=u,this.description=a,this.range={start:{line:r,column:n-1},end:{line:r,column:n+s}},Error.captureStackTrace?.(this,et)}};function kt(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.Program}function A(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.BlockStatement}function vt(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.BlockComment}function H(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.EmptyStatement}function tt(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.ExpressionStatement}function Pe(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.FunctionDeclaration}function ie(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.IfStatement}function z(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.VariableDeclaration}function G(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.ArrayExpression}function J(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.BinaryExpression}function P(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.Identifier}function be(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.Literal}function Q(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.LogicalExpression}function Se(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.ObjectExpression}function Ie(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.MemberExpression}function it(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.UnaryExpression}function rt(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.UpdateExpression}function Be(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.VariableDeclarator}function nt(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.Property}function Ce(t,e){return e.loc.end.line===t.loc.start.line&&e.loc.end.column<=t.loc.start.column}function _e(t,e){return t.range[0]>=e.range[0]&&t.range[1]<=e.range[1]}var wt=class{constructor(){this.comments=[],this._nodeStack=[],this._newComments=[]}insertInnerComments(t){if(!A(t)||t.body.length!==0)return;let e=[];for(let i=this._newComments.length-1;i>=0;i--){let r=this._newComments[i];t.range[1]>=r.range[0]&&(e.unshift(r),this._newComments.splice(i,1))}e.length&&(t.innerComments=e)}attachTrailingComments(t){let e=this._nodeStack.at(-1);if(!e)return;if(A(t)&&_e(e,t))for(let r=this._newComments.length-1;r>=0;r--){let n=this._newComments[r];_e(n,t)&&(e.trailingComments=[...e.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];Ce(n,e)?(e.trailingComments=[...e.trailingComments??[],n],this._newComments.splice(r,1)):Ce(n,t)&&(i.unshift(n),this._newComments.splice(r,1))}if(e.trailingComments){let r=e.trailingComments[0];Ce(r,t)&&(i=[...i,...e.trailingComments],delete e.trailingComments)}i.length>0&&(t.trailingComments=i)}attachLeadingComments(t){let e;for(;this._nodeStack.length>0;){let n=this._nodeStack[this._nodeStack.length-1];if(t.range[0]<=n.range[0]){e=n,this._nodeStack.pop();continue}break}let i=[],r=[];if(e!=null){if(!e.leadingComments)return;for(let n=e.leadingComments.length-1;n>=0;n--){let s=e.leadingComments[n];if(t.range[0]>=s.range[1]){i.unshift(s),e.leadingComments.splice(n,1);continue}Be(t)&&!vt(s)&&(r.unshift(s),e.leadingComments.splice(n,1))}e.leadingComments.length===0&&delete e.leadingComments,i.length&&(t.leadingComments=i),r.length&&(t.trailingComments=[...r,...t.trailingComments??[]]);return}for(let n=this._newComments.length-1;n>=0;n--){let s=this._newComments[n];t.range[0]>=s.range[0]&&(i.unshift(s),this._newComments.splice(n,1))}i.length&&(t.leadingComments=i)}attachComments(t){if(kt(t)&&t.body.length>0){let e=this._nodeStack.at(-1);if(e){e.trailingComments=[...e.trailingComments??[],...this._newComments],this._newComments.length=0,this._nodeStack.pop();return}t.trailingComments=[...this._newComments],this._newComments.length=0;return}this.attachTrailingComments(t),this.attachLeadingComments(t),this.insertInnerComments(t),this._nodeStack.push(t)}collectComment(t){this.comments.push(t),this._newComments.push(t)}},Tt=/\$\{(.*?)\}/gu;function ye(t,e){let i=Ae[t];return e?i.replace(Tt,(r,n)=>e[n]?.toString()??""):i}var st=class{constructor(t=!1){this.tolerant=t,this.errors=[]}recordError(t){this.errors.push(t)}tolerate(t){if(this.tolerant)this.recordError(t);else throw t}throwError(t){throw t.description??(t.description=ye(t.code,t.data)),new te(t)}tolerateError(t){t.description??(t.description=ye(t.code,t.data));let e=new te(t);if(this.tolerant)this.recordError(e);else throw e}};function We(t,e){if(!t)throw new Error(`ASSERT: ${e}`)}var Ke={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},D={fromCodePoint(t){return t<65536?String.fromCharCode(t):String.fromCharCode(55296+(t-65536>>10))+String.fromCharCode(56320+(t-65536&1023))},isWhiteSpace(t){return t===32||t===9||t===11||t===12||t===160||t>=5760&&[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].includes(t)},isLineTerminator(t){return t===10||t===13||t===8232||t===8233},isIdentifierStart(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t===92||t>=128&&Ke.NonAsciiIdentifierStart.test(D.fromCodePoint(t))},isIdentifierPart(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===92||t>=128&&Ke.NonAsciiIdentifierPart.test(D.fromCodePoint(t))},isDecimalDigit(t){return t>=48&&t<=57},isHexDigit(t){return t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102},isOctalDigit(t){return t>=48&&t<=55}};function qe(t){return"0123456789abcdef".indexOf(t.toLowerCase())}function xe(t){return"01234567".indexOf(t)}var U=[[],[],[]];Fe.forEach(t=>U[t.length-1]?.push(t));Qe.forEach(t=>U[t.length-1]?.push(t));Xe.forEach(t=>U[t.length-1]?.push(t));Ze.forEach(t=>U[t.length-1]?.push(t));Lt.forEach(t=>U[t.length-1]?.push(t));var at=class{constructor(t,e){this.source=t,this.errorHandler=e,this._length=t.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(t){this.index=t.index,this.lineNumber=t.lineNumber,this.lineStart=t.lineStart,this.curlyStack=t.curlyStack}eof(){return this.index>=this._length}throwUnexpectedToken(t=p.UnexpectedToken){this.errorHandler.throwError({code:t,index:this.index,line:this.lineNumber,column:this.index-this.lineStart+1,data:{value:this.source.charAt(this.index)}})}tolerateUnexpectedToken(t=p.UnexpectedToken){this.errorHandler.tolerateError({code:t,index:this.index,line:this.lineNumber,column:this.index-this.lineStart+1})}skipSingleLineComment(t){let e=[],i=this.index-t,r={start:{line:this.lineNumber,column:this.index-this.lineStart-t},end:{line:0,column:0}};for(;!this.eof();){let s=this.source.charCodeAt(this.index);if(this.index+=1,D.isLineTerminator(s)){r.end={line:this.lineNumber,column:this.index-this.lineStart-1};let a={multiLine:!1,start:i+t,end:this.index-1,range:[i,this.index-1],loc:r};return e.push(a),s===13&&this.source.charCodeAt(this.index)===10&&(this.index+=1),this.lineNumber+=1,this.lineStart=this.index,e}}r.end={line:this.lineNumber,column:this.index-this.lineStart};let n={multiLine:!1,start:i+t,end:this.index,range:[i,this.index],loc:r};return e.push(n),e}skipMultiLineComment(){let t=[],e=this.index-2,i={start:{line:this.lineNumber,column:this.index-this.lineStart-2},end:{line:0,column:0}};for(;!this.eof();){let n=this.source.charCodeAt(this.index);if(D.isLineTerminator(n))n===13&&this.source.charCodeAt(this.index+1)===10&&(this.index+=1),this.lineNumber+=1,this.index+=1,this.lineStart=this.index;else if(n===42){if(this.source.charCodeAt(this.index+1)===47){this.index+=2,i.end={line:this.lineNumber,column:this.index-this.lineStart};let s={multiLine:!0,start:e+2,end:this.index-2,range:[e,this.index],loc:i};return t.push(s),t}this.index+=1}else this.index+=1}i.end={line:this.lineNumber,column:this.index-this.lineStart};let r={multiLine:!0,start:e+2,end:this.index,range:[e,this.index],loc:i};return t.push(r),this.tolerateUnexpectedToken(),t}scanComments(){let t=[];for(;!this.eof();){let e=this.source.charCodeAt(this.index);if(D.isWhiteSpace(e))this.index+=1;else if(D.isLineTerminator(e))this.index+=1,e===13&&this.source.charCodeAt(this.index)===10&&(this.index+=1),this.lineNumber+=1,this.lineStart=this.index;else if(e===47)if(e=this.source.charCodeAt(this.index+1),e===47){this.index+=2;let i=this.skipSingleLineComment(2);t=[...t,...i]}else if(e===42){this.index+=2;let i=this.skipMultiLineComment();t=[...t,...i]}else break;else break}return t}isKeyword(t){switch(t=t.toLowerCase(),t.length){case 2:return t===f.If||t===f.In;case 3:return t===f.Var||t===f.For;case 4:return t===f.Else;case 5:return t===f.Break||t===f.While;case 6:return t===f.Return||t===f.Import||t===f.Export;case 8:return t===f.Function||t===f.Continue;default:return!1}}codePointAt(t){let e=this.source.charCodeAt(t);if(e>=55296&&e<=56319){let i=this.source.charCodeAt(t+1);i>=56320&&i<=57343&&(e=(e-55296)*1024+i-56320+65536)}return e}scanHexEscape(t){let e=t==="u"?4:2,i=0;for(let r=0;r<e;r++)if(!this.eof()&&D.isHexDigit(this.source.charCodeAt(this.index)))i=i*16+qe(this.source[this.index]??""),this.index+=1;else return null;return String.fromCharCode(i)}scanUnicodeCodePointEscape(){let t=this.source[this.index],e=0;for(t==="}"&&this.throwUnexpectedToken();!this.eof()&&(t=this.source[this.index]??"",this.index+=1,!!D.isHexDigit(t.charCodeAt(0)));)e=e*16+qe(t);return(e>1114111||t!=="}")&&this.throwUnexpectedToken(),D.fromCodePoint(e)}getIdentifier(){let t=this.index;for(this.index+=1;!this.eof();){let e=this.source.charCodeAt(this.index);if(e===92)return this.index=t,this.getComplexIdentifier();if(e>=55296&&e<57343)return this.index=t,this.getComplexIdentifier();if(D.isIdentifierPart(e))this.index+=1;else break}return this.source.slice(t,this.index)}getComplexIdentifier(){let t=this.codePointAt(this.index),e=D.fromCodePoint(t);this.index+=e.length;let i;for(t===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==="\\"||!D.isIdentifierStart(i.charCodeAt(0)))&&this.throwUnexpectedToken()),e=i);!this.eof()&&(t=this.codePointAt(this.index),!!D.isIdentifierPart(t));)i=D.fromCodePoint(t),e+=i,this.index+=i.length,t===92&&(e=e.substring(0,e.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==="\\"||!D.isIdentifierPart(i.charCodeAt(0)))&&this.throwUnexpectedToken()),e+=i);return e}octalToDecimal(t){let e=t!=="0",i=xe(t);return!this.eof()&&D.isOctalDigit(this.source.charCodeAt(this.index))&&(e=!0,i=i*8+xe(this.source[this.index]??""),this.index+=1,"0123".includes(t)&&!this.eof()&&D.isOctalDigit(this.source.charCodeAt(this.index))&&(i=i*8+xe(this.source[this.index]??""),this.index+=1)),{code:i,octal:e}}scanIdentifier(){let t,e=this.index,i=this.source.charCodeAt(e)===92?this.getComplexIdentifier():this.getIdentifier();if(i.length===1?t=h.Identifier:this.isKeyword(i)?t=h.Keyword:i.toLowerCase()===j.Null?t=h.NullLiteral:i.toLowerCase()===j.True||i.toLowerCase()===j.False?t=h.BooleanLiteral:t=h.Identifier,t!==h.Identifier&&e+i.length!==this.index){let r=this.index;this.index=e,this.tolerateUnexpectedToken(p.InvalidEscapedReservedWord),this.index=r}return{type:t,value:i,lineNumber:this.lineNumber,lineStart:this.lineStart,start:e,end:this.index}}scanPunctuator(){let t=this.index,e=this.source[this.index]??"";switch(e){case"(":case"{":e==="{"&&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=U.length;i>0;i--)if(e=this.source.substring(this.index,this.index+i),U[i-1]?.includes(e)){this.index+=i;break}}return this.index===t&&this.throwUnexpectedToken(),{type:h.Punctuator,value:e,lineNumber:this.lineNumber,lineStart:this.lineStart,start:t,end:this.index}}scanHexLiteral(t){let e="";for(;!this.eof()&&D.isHexDigit(this.source.charCodeAt(this.index));)e+=this.source[this.index],this.index+=1;return e.length===0&&this.throwUnexpectedToken(),D.isIdentifierStart(this.source.charCodeAt(this.index))&&this.throwUnexpectedToken(),{type:h.NumericLiteral,value:Number.parseInt(`0x${e}`,16),lineNumber:this.lineNumber,lineStart:this.lineStart,start:t,end:this.index}}scanBinaryLiteral(t){let e="";for(;!this.eof();){let i=this.source[this.index];if(i!=="0"&&i!=="1")break;e+=this.source[this.index],this.index+=1}if(e.length===0&&this.throwUnexpectedToken(),!this.eof()){let i=this.source.charCodeAt(this.index);(D.isIdentifierStart(i)||D.isDecimalDigit(i))&&this.throwUnexpectedToken()}return{type:h.NumericLiteral,value:Number.parseInt(e,2),lineNumber:this.lineNumber,lineStart:this.lineStart,start:t,end:this.index}}scanOctalLiteral(t,e){let i="",r=!1;for(D.isOctalDigit(t.charCodeAt(0))&&(r=!0,i=`0${this.source[this.index]}`),this.index+=1;!this.eof()&&D.isOctalDigit(this.source.charCodeAt(this.index));)i+=this.source[this.index],this.index+=1;return!r&&i.length===0&&this.throwUnexpectedToken(),(D.isIdentifierStart(this.source.charCodeAt(this.index))||D.isDecimalDigit(this.source.charCodeAt(this.index)))&&this.throwUnexpectedToken(),{type:h.NumericLiteral,value:Number.parseInt(i,8),lineNumber:this.lineNumber,lineStart:this.lineStart,start:e,end:this.index}}scanNumericLiteral(){let t=this.index,e=this.source[t]??"";We(D.isDecimalDigit(e.charCodeAt(0))||e===".","Numeric literal must start with a decimal digit or a decimal point");let i="";if(e!=="."){if(i=this.source[this.index]??"",this.index+=1,e=this.source[this.index]??"",i==="0"){if(e==="x"||e==="X")return this.index+=1,this.scanHexLiteral(t);if(e==="b"||e==="B")return this.index+=1,this.scanBinaryLiteral(t);if(e==="o"||e==="O")return this.scanOctalLiteral(e,t)}for(;D.isDecimalDigit(this.source.charCodeAt(this.index));)i+=this.source[this.index],this.index+=1;e=this.source[this.index]??""}if(e==="."){for(i+=this.source[this.index],this.index+=1;D.isDecimalDigit(this.source.charCodeAt(this.index));)i+=this.source[this.index],this.index+=1;e=this.source[this.index]??""}if(e==="e"||e==="E")if(i+=this.source[this.index],this.index+=1,e=this.source[this.index]??"",(e==="+"||e==="-")&&(i+=this.source[this.index],this.index+=1),D.isDecimalDigit(this.source.charCodeAt(this.index)))for(;D.isDecimalDigit(this.source.charCodeAt(this.index));)i+=this.source[this.index],this.index+=1;else this.throwUnexpectedToken();return D.isIdentifierStart(this.source.charCodeAt(this.index))&&this.throwUnexpectedToken(),{type:h.NumericLiteral,value:Number.parseFloat(i),lineNumber:this.lineNumber,lineStart:this.lineStart,start:t,end:this.index}}scanStringLiteral(){let t=this.index,e=this.source[t];We(e==="'"||e==='"',"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===e){e="";break}if(n==="\\")if(n=this.source[this.index]??"",this.index+=1,!n||!D.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(p.InvalidHexEscapeSequence),r+=s;break}case"n":r+=`
|
|
1
|
+
var V={False:"false",Null:"null",True:"true"},f={Break:"break",Continue:"continue",Else:"else",For:"for",From:"from",Function:"function",If:"if",Import:"import",Export:"export",In:"in",Return:"return",Var:"var",While:"while"},o={AssignmentExpression:"AssignmentExpression",ArrayExpression:"ArrayExpression",BlockComment:"BlockComment",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",ContinueStatement:"ContinueStatement",EmptyStatement:"EmptyStatement",ExpressionStatement:"ExpressionStatement",ExportNamedDeclaration:"ExportNamedDeclaration",ExportSpecifier:"ExportSpecifier",ForStatement:"ForStatement",ForInStatement:"ForInStatement",FunctionDeclaration:"FunctionDeclaration",Identifier:"Identifier",IfStatement:"IfStatement",ImportDeclaration:"ImportDeclaration",ImportDefaultSpecifier:"ImportDefaultSpecifier",LineComment:"LineComment",Literal:"Literal",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",ObjectExpression:"ObjectExpression",Program:"Program",Property:"Property",ReturnStatement:"ReturnStatement",TemplateElement:"TemplateElement",TemplateLiteral:"TemplateLiteral",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement"},Ee=["++","--"],Je=["-","+","!","~"],Qe=["=","/=","*=","%=","+=","-="],Ze=["||","&&"],Lt=["|","&",">>","<<",">>>","^","==","!=","<","<=",">",">=","+","-","*","/","%"],q={"||":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":10,"/":10,"%":10},h={Unknown:0,BooleanLiteral:1,EOF:2,Identifier:3,Keyword:4,NullLiteral:5,NumericLiteral:6,Punctuator:7,StringLiteral:8,Template:10},Xe=["Unknown","Boolean","<end>","Identifier","Keyword","Null","Numeric","Punctuator","String","RegularExpression","Template"],p={InvalidModuleUri:"InvalidModuleUri",ForInOfLoopInitializer:"ForInOfLoopInitializer",IdentiferExpected:"IdentiferExpected",InvalidEscapedReservedWord:"InvalidEscapedReservedWord",InvalidExpression:"InvalidExpression",InvalidFunctionIdentifier:"InvalidFunctionIdentifier",InvalidHexEscapeSequence:"InvalidHexEscapeSequence",InvalidLeftHandSideInAssignment:"InvalidLeftHandSideInAssignment",InvalidLeftHandSideInForIn:"InvalidLeftHandSideInForIn",InvalidTemplateHead:"InvalidTemplateHead",InvalidVariableAssignment:"InvalidVariableAssignment",KeyMustBeString:"KeyMustBeString",NoFunctionInsideBlock:"NoFunctionInsideBlock",NoFunctionInsideFunction:"NoFunctionInsideFunction",ModuleExportRootOnly:"ModuleExportRootOnly",ModuleImportRootOnly:"ModuleImportRootOnly",PunctuatorExpected:"PunctuatorExpected",TemplateOctalLiteral:"TemplateOctalLiteral",UnexpectedBoolean:"UnexpectedBoolean",UnexpectedEndOfScript:"UnexpectedEndOfScript",UnexpectedIdentifier:"UnexpectedIdentifier",UnexpectedKeyword:"UnexpectedKeyword",UnexpectedNull:"UnexpectedNull",UnexpectedNumber:"UnexpectedNumber",UnexpectedPunctuator:"UnexpectedPunctuator",UnexpectedString:"UnexpectedString",UnexpectedTemplate:"UnexpectedTemplate",UnexpectedToken:"UnexpectedToken"},ye={[p.InvalidModuleUri]:"Module uri must be a text literal.",[p.ForInOfLoopInitializer]:"for-in loop variable declaration may not have an initializer.",[p.IdentiferExpected]:"'${value}' is an invalid identifier.",[p.InvalidEscapedReservedWord]:"Keyword cannot contain escaped characters.",[p.InvalidExpression]:"Invalid expression.",[p.InvalidFunctionIdentifier]:"'${value}' is an invalid function identifier.",[p.InvalidHexEscapeSequence]:"Invalid hexadecimal escape sequence.",[p.InvalidLeftHandSideInAssignment]:"Invalid left-hand side in assignment.",[p.InvalidLeftHandSideInForIn]:"Invalid left-hand side in for-in.",[p.InvalidTemplateHead]:"Invalid template structure.",[p.InvalidVariableAssignment]:"Invalid variable assignment.",[p.KeyMustBeString]:"Object property keys must be a word starting with a letter.",[p.NoFunctionInsideBlock]:"Functions cannot be declared inside of code blocks.",[p.NoFunctionInsideFunction]:"Functions cannot be declared inside another function.",[p.ModuleExportRootOnly]:"Module exports cannot be declared inside of code blocks.",[p.ModuleImportRootOnly]:"Module import cannot be declared inside of code blocks.",[p.PunctuatorExpected]:"'${value}' expected.",[p.TemplateOctalLiteral]:"Octal literals are not allowed in template literals.",[p.UnexpectedBoolean]:"Unexpected boolean literal.",[p.UnexpectedEndOfScript]:"Unexpected end of Arcade expression.",[p.UnexpectedIdentifier]:"Unexpected identifier.",[p.UnexpectedKeyword]:"Unexpected keyword.",[p.UnexpectedNull]:"Unexpected null literal.",[p.UnexpectedNumber]:"Unexpected number.",[p.UnexpectedPunctuator]:"Unexpected ponctuator.",[p.UnexpectedString]:"Unexpected text literal.",[p.UnexpectedTemplate]:"Unexpected quasi '${value}'.",[p.UnexpectedToken]:"Unexpected token '${value}'."},te=class Ye extends Error{constructor({code:e,index:i,line:r,column:n,len:s=0,description:a,data:u}){super(a??e),this.declaredRootClass="esri.arcade.lib.diagnostic",this.name="ParsingError",this.code=e,this.index=i,this.line=r,this.column=n,this.len=s,this.data=u,this.description=a,this.range={start:{line:r,column:n-1},end:{line:r,column:n+s}},Error.captureStackTrace?.(this,Ye)}};function kt(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.Program}function A(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.BlockStatement}function vt(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.BlockComment}function H(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.EmptyStatement}function et(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.ExpressionStatement}function Ae(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.FunctionDeclaration}function ie(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.IfStatement}function z(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.VariableDeclaration}function G(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.ArrayExpression}function J(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.BinaryExpression}function P(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.Identifier}function Pe(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.Literal}function Q(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.LogicalExpression}function be(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.ObjectExpression}function Se(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.MemberExpression}function tt(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.UnaryExpression}function it(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.UpdateExpression}function Ie(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.VariableDeclarator}function rt(t){return!!t&&typeof t=="object"&&"type"in t&&t.type===o.Property}function ge(t,e){return e.loc.end.line===t.loc.start.line&&e.loc.end.column<=t.loc.start.column}function $e(t,e){return t.range[0]>=e.range[0]&&t.range[1]<=e.range[1]}var wt=class{constructor(){this.comments=[],this._nodeStack=[],this._newComments=[]}insertInnerComments(t){if(!A(t)||t.body.length!==0)return;let e=[];for(let i=this._newComments.length-1;i>=0;i--){let r=this._newComments[i];t.range[1]>=r.range[0]&&(e.unshift(r),this._newComments.splice(i,1))}e.length&&(t.innerComments=e)}attachTrailingComments(t){let e=this._nodeStack.at(-1);if(!e)return;if(A(t)&&$e(e,t))for(let r=this._newComments.length-1;r>=0;r--){let n=this._newComments[r];$e(n,t)&&(e.trailingComments=[...e.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];ge(n,e)?(e.trailingComments=[...e.trailingComments??[],n],this._newComments.splice(r,1)):ge(n,t)&&(i.unshift(n),this._newComments.splice(r,1))}if(e.trailingComments){let r=e.trailingComments[0];ge(r,t)&&(i=[...i,...e.trailingComments],delete e.trailingComments)}i.length>0&&(t.trailingComments=i)}attachLeadingComments(t){let e;for(;this._nodeStack.length>0;){let n=this._nodeStack[this._nodeStack.length-1];if(t.range[0]<=n.range[0]){e=n,this._nodeStack.pop();continue}break}let i=[],r=[];if(e!=null){if(!e.leadingComments)return;for(let n=e.leadingComments.length-1;n>=0;n--){let s=e.leadingComments[n];if(t.range[0]>=s.range[1]){i.unshift(s),e.leadingComments.splice(n,1);continue}Ie(t)&&!vt(s)&&(r.unshift(s),e.leadingComments.splice(n,1))}e.leadingComments.length===0&&delete e.leadingComments,i.length&&(t.leadingComments=i),r.length&&(t.trailingComments=[...r,...t.trailingComments??[]]);return}for(let n=this._newComments.length-1;n>=0;n--){let s=this._newComments[n];t.range[0]>=s.range[0]&&(i.unshift(s),this._newComments.splice(n,1))}i.length&&(t.leadingComments=i)}attachComments(t){if(kt(t)&&t.body.length>0){let e=this._nodeStack.at(-1);if(e){e.trailingComments=[...e.trailingComments??[],...this._newComments],this._newComments.length=0,this._nodeStack.pop();return}t.trailingComments=[...this._newComments],this._newComments.length=0;return}this.attachTrailingComments(t),this.attachLeadingComments(t),this.insertInnerComments(t),this._nodeStack.push(t)}collectComment(t){this.comments.push(t),this._newComments.push(t)}},Tt=/\$\{(.*?)\}/gu;function Fe(t,e){let i=ye[t];return e?i.replace(Tt,(r,n)=>e[n]?.toString()??""):i}var nt=class{constructor(t=!1){this.tolerant=t,this.errors=[]}recordError(t){this.errors.push(t)}tolerate(t){if(this.tolerant)this.recordError(t);else throw t}throwError(t){throw t.description??(t.description=Fe(t.code,t.data)),new te(t)}tolerateError(t){t.description??(t.description=Fe(t.code,t.data));let e=new te(t);if(this.tolerant)this.recordError(e);else throw e}};function _e(t,e){if(!t)throw new Error(`ASSERT: ${e}`)}var We={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},D={fromCodePoint(t){return t<65536?String.fromCharCode(t):String.fromCharCode(55296+(t-65536>>10))+String.fromCharCode(56320+(t-65536&1023))},isWhiteSpace(t){return t===32||t===9||t===11||t===12||t===160||t>=5760&&[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].includes(t)},isLineTerminator(t){return t===10||t===13||t===8232||t===8233},isIdentifierStart(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t===92||t>=128&&We.NonAsciiIdentifierStart.test(D.fromCodePoint(t))},isIdentifierPart(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===92||t>=128&&We.NonAsciiIdentifierPart.test(D.fromCodePoint(t))},isDecimalDigit(t){return t>=48&&t<=57},isHexDigit(t){return t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102},isOctalDigit(t){return t>=48&&t<=55}};function Ke(t){return"0123456789abcdef".indexOf(t.toLowerCase())}function Ce(t){return"01234567".indexOf(t)}var U=[[],[],[]];Ee.forEach(t=>U[t.length-1]?.push(t));Je.forEach(t=>U[t.length-1]?.push(t));Ze.forEach(t=>U[t.length-1]?.push(t));Qe.forEach(t=>U[t.length-1]?.push(t));Lt.forEach(t=>U[t.length-1]?.push(t));var st=class{constructor(t,e){this.source=t,this.errorHandler=e,this._length=t.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(t){this.index=t.index,this.lineNumber=t.lineNumber,this.lineStart=t.lineStart,this.curlyStack=t.curlyStack}eof(){return this.index>=this._length}throwUnexpectedToken(t=p.UnexpectedToken){this.errorHandler.throwError({code:t,index:this.index,line:this.lineNumber,column:this.index-this.lineStart+1,data:{value:this.source.charAt(this.index)}})}tolerateUnexpectedToken(t=p.UnexpectedToken){this.errorHandler.tolerateError({code:t,index:this.index,line:this.lineNumber,column:this.index-this.lineStart+1})}skipSingleLineComment(t){let e=[],i=this.index-t,r={start:{line:this.lineNumber,column:this.index-this.lineStart-t},end:{line:0,column:0}};for(;!this.eof();){let s=this.source.charCodeAt(this.index);if(this.index+=1,D.isLineTerminator(s)){r.end={line:this.lineNumber,column:this.index-this.lineStart-1};let a={multiLine:!1,start:i+t,end:this.index-1,range:[i,this.index-1],loc:r};return e.push(a),s===13&&this.source.charCodeAt(this.index)===10&&(this.index+=1),this.lineNumber+=1,this.lineStart=this.index,e}}r.end={line:this.lineNumber,column:this.index-this.lineStart};let n={multiLine:!1,start:i+t,end:this.index,range:[i,this.index],loc:r};return e.push(n),e}skipMultiLineComment(){let t=[],e=this.index-2,i={start:{line:this.lineNumber,column:this.index-this.lineStart-2},end:{line:0,column:0}};for(;!this.eof();){let n=this.source.charCodeAt(this.index);if(D.isLineTerminator(n))n===13&&this.source.charCodeAt(this.index+1)===10&&(this.index+=1),this.lineNumber+=1,this.index+=1,this.lineStart=this.index;else if(n===42){if(this.source.charCodeAt(this.index+1)===47){this.index+=2,i.end={line:this.lineNumber,column:this.index-this.lineStart};let s={multiLine:!0,start:e+2,end:this.index-2,range:[e,this.index],loc:i};return t.push(s),t}this.index+=1}else this.index+=1}i.end={line:this.lineNumber,column:this.index-this.lineStart};let r={multiLine:!0,start:e+2,end:this.index,range:[e,this.index],loc:i};return t.push(r),this.tolerateUnexpectedToken(),t}scanComments(){let t=[];for(;!this.eof();){let e=this.source.charCodeAt(this.index);if(D.isWhiteSpace(e))this.index+=1;else if(D.isLineTerminator(e))this.index+=1,e===13&&this.source.charCodeAt(this.index)===10&&(this.index+=1),this.lineNumber+=1,this.lineStart=this.index;else if(e===47)if(e=this.source.charCodeAt(this.index+1),e===47){this.index+=2;let i=this.skipSingleLineComment(2);t=[...t,...i]}else if(e===42){this.index+=2;let i=this.skipMultiLineComment();t=[...t,...i]}else break;else break}return t}isKeyword(t){switch(t=t.toLowerCase(),t.length){case 2:return t===f.If||t===f.In;case 3:return t===f.Var||t===f.For;case 4:return t===f.Else;case 5:return t===f.Break||t===f.While;case 6:return t===f.Return||t===f.Import||t===f.Export;case 8:return t===f.Function||t===f.Continue;default:return!1}}codePointAt(t){let e=this.source.charCodeAt(t);if(e>=55296&&e<=56319){let i=this.source.charCodeAt(t+1);i>=56320&&i<=57343&&(e=(e-55296)*1024+i-56320+65536)}return e}scanHexEscape(t){let e=t==="u"?4:2,i=0;for(let r=0;r<e;r++)if(!this.eof()&&D.isHexDigit(this.source.charCodeAt(this.index)))i=i*16+Ke(this.source[this.index]??""),this.index+=1;else return null;return String.fromCharCode(i)}scanUnicodeCodePointEscape(){let t=this.source[this.index],e=0;for(t==="}"&&this.throwUnexpectedToken();!this.eof()&&(t=this.source[this.index]??"",this.index+=1,!!D.isHexDigit(t.charCodeAt(0)));)e=e*16+Ke(t);return(e>1114111||t!=="}")&&this.throwUnexpectedToken(),D.fromCodePoint(e)}getIdentifier(){let t=this.index;for(this.index+=1;!this.eof();){let e=this.source.charCodeAt(this.index);if(e===92)return this.index=t,this.getComplexIdentifier();if(e>=55296&&e<57343)return this.index=t,this.getComplexIdentifier();if(D.isIdentifierPart(e))this.index+=1;else break}return this.source.slice(t,this.index)}getComplexIdentifier(){let t=this.codePointAt(this.index),e=D.fromCodePoint(t);this.index+=e.length;let i;for(t===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==="\\"||!D.isIdentifierStart(i.charCodeAt(0)))&&this.throwUnexpectedToken()),e=i);!this.eof()&&(t=this.codePointAt(this.index),!!D.isIdentifierPart(t));)i=D.fromCodePoint(t),e+=i,this.index+=i.length,t===92&&(e=e.substring(0,e.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==="\\"||!D.isIdentifierPart(i.charCodeAt(0)))&&this.throwUnexpectedToken()),e+=i);return e}octalToDecimal(t){let e=t!=="0",i=Ce(t);return!this.eof()&&D.isOctalDigit(this.source.charCodeAt(this.index))&&(e=!0,i=i*8+Ce(this.source[this.index]??""),this.index+=1,"0123".includes(t)&&!this.eof()&&D.isOctalDigit(this.source.charCodeAt(this.index))&&(i=i*8+Ce(this.source[this.index]??""),this.index+=1)),{code:i,octal:e}}scanIdentifier(){let t,e=this.index,i=this.source.charCodeAt(e)===92?this.getComplexIdentifier():this.getIdentifier();if(i.length===1?t=h.Identifier:this.isKeyword(i)?t=h.Keyword:i.toLowerCase()===V.Null?t=h.NullLiteral:i.toLowerCase()===V.True||i.toLowerCase()===V.False?t=h.BooleanLiteral:t=h.Identifier,t!==h.Identifier&&e+i.length!==this.index){let r=this.index;this.index=e,this.tolerateUnexpectedToken(p.InvalidEscapedReservedWord),this.index=r}return{type:t,value:i,lineNumber:this.lineNumber,lineStart:this.lineStart,start:e,end:this.index}}scanPunctuator(){let t=this.index,e=this.source[this.index]??"";switch(e){case"(":case"{":e==="{"&&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=U.length;i>0;i--)if(e=this.source.substring(this.index,this.index+i),U[i-1]?.includes(e)){this.index+=i;break}}return this.index===t&&this.throwUnexpectedToken(),{type:h.Punctuator,value:e,lineNumber:this.lineNumber,lineStart:this.lineStart,start:t,end:this.index}}scanHexLiteral(t){let e="";for(;!this.eof()&&D.isHexDigit(this.source.charCodeAt(this.index));)e+=this.source[this.index],this.index+=1;return e.length===0&&this.throwUnexpectedToken(),D.isIdentifierStart(this.source.charCodeAt(this.index))&&this.throwUnexpectedToken(),{type:h.NumericLiteral,value:Number.parseInt(`0x${e}`,16),lineNumber:this.lineNumber,lineStart:this.lineStart,start:t,end:this.index}}scanBinaryLiteral(t){let e="";for(;!this.eof();){let i=this.source[this.index];if(i!=="0"&&i!=="1")break;e+=this.source[this.index],this.index+=1}if(e.length===0&&this.throwUnexpectedToken(),!this.eof()){let i=this.source.charCodeAt(this.index);(D.isIdentifierStart(i)||D.isDecimalDigit(i))&&this.throwUnexpectedToken()}return{type:h.NumericLiteral,value:Number.parseInt(e,2),lineNumber:this.lineNumber,lineStart:this.lineStart,start:t,end:this.index}}scanOctalLiteral(t,e){let i="",r=!1;for(D.isOctalDigit(t.charCodeAt(0))&&(r=!0,i=`0${this.source[this.index]}`),this.index+=1;!this.eof()&&D.isOctalDigit(this.source.charCodeAt(this.index));)i+=this.source[this.index],this.index+=1;return!r&&i.length===0&&this.throwUnexpectedToken(),(D.isIdentifierStart(this.source.charCodeAt(this.index))||D.isDecimalDigit(this.source.charCodeAt(this.index)))&&this.throwUnexpectedToken(),{type:h.NumericLiteral,value:Number.parseInt(i,8),lineNumber:this.lineNumber,lineStart:this.lineStart,start:e,end:this.index}}scanNumericLiteral(){let t=this.index,e=this.source[t]??"";_e(D.isDecimalDigit(e.charCodeAt(0))||e===".","Numeric literal must start with a decimal digit or a decimal point");let i="";if(e!=="."){if(i=this.source[this.index]??"",this.index+=1,e=this.source[this.index]??"",i==="0"){if(e==="x"||e==="X")return this.index+=1,this.scanHexLiteral(t);if(e==="b"||e==="B")return this.index+=1,this.scanBinaryLiteral(t);if(e==="o"||e==="O")return this.scanOctalLiteral(e,t)}for(;D.isDecimalDigit(this.source.charCodeAt(this.index));)i+=this.source[this.index],this.index+=1;e=this.source[this.index]??""}if(e==="."){for(i+=this.source[this.index],this.index+=1;D.isDecimalDigit(this.source.charCodeAt(this.index));)i+=this.source[this.index],this.index+=1;e=this.source[this.index]??""}if(e==="e"||e==="E")if(i+=this.source[this.index],this.index+=1,e=this.source[this.index]??"",(e==="+"||e==="-")&&(i+=this.source[this.index],this.index+=1),D.isDecimalDigit(this.source.charCodeAt(this.index)))for(;D.isDecimalDigit(this.source.charCodeAt(this.index));)i+=this.source[this.index],this.index+=1;else this.throwUnexpectedToken();return D.isIdentifierStart(this.source.charCodeAt(this.index))&&this.throwUnexpectedToken(),{type:h.NumericLiteral,value:Number.parseFloat(i),lineNumber:this.lineNumber,lineStart:this.lineStart,start:t,end:this.index}}scanStringLiteral(){let t=this.index,e=this.source[t];_e(e==="'"||e==='"',"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===e){e="";break}if(n==="\\")if(n=this.source[this.index]??"",this.index+=1,!n||!D.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(p.InvalidHexEscapeSequence),r+=s;break}case"n":r+=`
|
|
2
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&&D.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
3
|
`&&(this.index+=1),this.lineStart=this.index;else{if(D.isLineTerminator(n.charCodeAt(0)))break;r+=n}}return e!==""&&(this.index=t,this.throwUnexpectedToken()),{type:h.StringLiteral,value:r,lineNumber:this.lineNumber,lineStart:this.lineStart,start:t,end:this.index}}scanTemplate(){let t="",e=!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,e=!0;break}if(a==="$"){if(this.source[this.index]==="{"){this.curlyStack.push("${"),this.index+=1,e=!0;break}t+=a;continue}if(a==="\\"){if(a=this.source[this.index]??"",this.index+=1,D.isLineTerminator(a.charCodeAt(0)))this.lineNumber+=1,a==="\r"&&this.source[this.index]===`
|
|
4
4
|
`&&(this.index+=1),this.lineStart=this.index;else switch(a){case"n":t+=`
|
|
5
5
|
`;break;case"r":t+="\r";break;case"t":t+=" ";break;case"u":if(this.source[this.index]==="{")this.index+=1,t+=this.scanUnicodeCodePointEscape();else{let u=this.index,c=this.scanHexEscape(a);c!==null?t+=c:(this.index=u,t+=a)}break;case"x":{let u=this.scanHexEscape(a);u===null&&this.throwUnexpectedToken(p.InvalidHexEscapeSequence),t+=u;break}case"b":t+="\b";break;case"f":t+="\f";break;case"v":t+="\v";break;default:a==="0"?(D.isDecimalDigit(this.source.charCodeAt(this.index))&&this.throwUnexpectedToken(p.TemplateOctalLiteral),t+="\0"):D.isOctalDigit(a.charCodeAt(0))?this.throwUnexpectedToken(p.TemplateOctalLiteral):t+=a;break}continue}if(D.isLineTerminator(a.charCodeAt(0))){this.lineNumber+=1,a==="\r"&&this.source[this.index]===`
|
|
6
6
|
`&&(this.index+=1),this.lineStart=this.index,t+=`
|
|
7
|
-
`;continue}t+=a}return e||this.throwUnexpectedToken(),r||this.curlyStack.pop(),{type:h.Template,value:this.source.slice(i+1,this.index-s),cooked:t,head:r,tail:n,lineNumber:this.lineNumber,lineStart:this.lineStart,start:i,end:this.index}}lex(){if(this.eof())return{type:h.EOF,value:"",lineNumber:this.lineNumber,lineStart:this.lineStart,start:this.index,end:this.index};let t=this.source.charCodeAt(this.index);return D.isIdentifierStart(t)?this.scanIdentifier():t===40||t===41||t===59?this.scanPunctuator():t===39||t===34?this.scanStringLiteral():t===46?D.isDecimalDigit(this.source.charCodeAt(this.index+1))?this.scanNumericLiteral():this.scanPunctuator():D.isDecimalDigit(t)?this.scanNumericLiteral():t===96||t===125&&this.curlyStack[this.curlyStack.length-1]==="${"?this.scanTemplate():t>=55296&&t<57343&&D.isIdentifierStart(this.codePointAt(this.index))?this.scanIdentifier():this.scanPunctuator()}},y={None:0,Function:1,IfClause:2,ForLoop:4,WhileLoop:8},Ee={AsObject:0,Automatic:1};function He(t,e=0){let i=t.start-t.lineStart,r=t.lineNumber;return i<0&&(i+=e,r-=1),{index:t.start,line:r,column:i}}function Ge(t){return[{index:t.range[0],...t.loc.start},{index:t.range[1],...t.loc.end}]}function Je(t){return t in q?q[t]:0}var Nt=class{constructor(t,e={},i){this.delegate=i,this.hasLineTerminator=!1,this.options={tokens:typeof e.tokens=="boolean"&&e.tokens,comments:typeof e.comments=="boolean"&&e.comments,tolerant:typeof e.tolerant=="boolean"&&e.tolerant},this.options.comments&&(this.commentHandler=new wt),this.errorHandler=new st(this.options.tolerant),this.scanner=new at(t,this.errorHandler),this.context={isAssignmentTarget:!1,blockContext:y.None,curlyParsingType:Ee.AsObject},this.rawToken={type:h.EOF,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(t,e,{validTypes:i,invalidTypes:r}){i?.some(n=>t.type===n)||r?.some(n=>t.type===n)&&this.throwError(p.InvalidExpression,e)}throwError(t,e,i=this.endMarker){let{index:r,line:n,column:s}=e,a=i.index-r-1;this.errorHandler.throwError({code:t,index:r,line:n,column:s+1,len:a})}tolerateError(t,e){throw new Error("######################################### !!!")}unexpectedTokenError(t={}){let{rawToken:e}=t,{code:i,data:r}=t,n;if(e){if(!i)switch(e.type){case h.EOF:i=p.UnexpectedEndOfScript;break;case h.Identifier:i=p.UnexpectedIdentifier;break;case h.NumericLiteral:i=p.UnexpectedNumber;break;case h.StringLiteral:i=p.UnexpectedString;break;case h.Template:i=p.UnexpectedTemplate;break;default:}n=e.value.toString()}else n="ILLEGAL";i??(i=p.UnexpectedToken),r||(r={value:n});let s=ye(i,r);if(e){let c=e.start,l=e.lineNumber,C=e.start-e.lineStart+1;return new te({code:i,index:c,line:l,column:C,len:e.end-e.start-1,data:r,description:s})}let{index:a,line:u}=this.endMarker;return new te({code:i,index:a,line:u,column:this.endMarker.column+1,data:r,description:s})}throwUnexpectedToken(t={}){throw t.rawToken??(t.rawToken=this.rawToken),this.unexpectedTokenError(t)}collectComments(t){let{commentHandler:e}=this;!e||!t.length||t.forEach(i=>{let r={type:i.multiLine?o.BlockComment:o.LineComment,value:this.getSourceValue(i),range:i.range,loc:i.loc};e.collectComment(r)})}peekAhead(t){let e=()=>(this.scanner.scanComments(),this.scanner.lex()),i=this.scanner.saveState(),r=t.call(this,e);return this.scanner.restoreState(i),r}getSourceValue(t){return this.scanner.source.slice(t.start,t.end)}convertToToken(t){return{type:Ye[t.type],value:this.getSourceValue(t),range:[t.start,t.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 t=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=t.lineNumber!==this.rawToken.lineNumber,this.options.tokens&&this.rawToken.type!==h.EOF&&this.tokens.push(this.convertToToken(this.rawToken))}captureStartMarker(){return{index:this.startMarker.index,line:this.startMarker.line,column:this.startMarker.column}}getItemLocation(t){return{range:[t.index,this.endMarker.index],loc:{start:{line:t.line,column:t.column},end:{line:this.endMarker.line,column:this.endMarker.column}}}}finalize(t){return(this.delegate??this.commentHandler)&&(this.commentHandler?.attachComments(t),this.delegate?.(t)),t}expectPunctuator(t){let e=this.rawToken;if(this.matchPunctuator(t)){this.readNextRawToken();return}this.throwUnexpectedToken({rawToken:e,code:p.PunctuatorExpected,data:{value:t}})}expectKeyword(t){if(this.rawToken.type===h.Keyword&&this.rawToken.value.toLowerCase()===t.toString()){this.readNextRawToken();return}this.throwUnexpectedToken({rawToken:this.rawToken})}expectContextualKeyword(t){if(this.rawToken.type===h.Identifier&&this.rawToken.value.toLowerCase()===t){this.readNextRawToken();return}this.throwUnexpectedToken({rawToken:this.rawToken})}matchKeyword(t){return this.rawToken.type===h.Keyword&&this.rawToken.value.toLowerCase()===t}matchContextualKeyword(t){return this.rawToken.type===h.Identifier&&this.rawToken.value===t}matchPunctuator(t){return this.rawToken.type===h.Punctuator&&this.rawToken.value===t}getMatchingPunctuator(t){if(typeof t=="string"&&(t=t.split("")),!(this.rawToken.type!==h.Punctuator||!t.length))return t.find(this.matchPunctuator.bind(this))}isolateCoverGrammar(t){let e=this.context.isAssignmentTarget;this.context.isAssignmentTarget=!0;let i=t.call(this);return this.context.isAssignmentTarget=e,i}inheritCoverGrammar(t){var e;let i=this.context.isAssignmentTarget;this.context.isAssignmentTarget=!0;let r=t.call(this);return(e=this.context).isAssignmentTarget&&(e.isAssignmentTarget=i),r}withBlockContext(t,e){let i=this.context.blockContext;this.context.blockContext|=t;let r=this.context.curlyParsingType;this.context.curlyParsingType=Ee.Automatic;let n=e.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===h.EOF||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 t=this.captureStartMarker(),e=this.rawToken;switch(e.type){case h.Identifier:return this.readNextRawToken(),this.finalize({type:o.Identifier,name:e.value,...this.getItemLocation(t)});case h.NumericLiteral:case h.StringLiteral:return this.context.isAssignmentTarget=!1,this.readNextRawToken(),this.finalize({type:o.Literal,value:e.value,raw:this.getSourceValue(e),isString:typeof e.value=="string",...this.getItemLocation(t)});case h.BooleanLiteral:return this.context.isAssignmentTarget=!1,this.readNextRawToken(),this.finalize({type:o.Literal,value:e.value.toLowerCase()===j.True,raw:this.getSourceValue(e),isString:!1,...this.getItemLocation(t)});case h.NullLiteral:return this.context.isAssignmentTarget=!1,this.readNextRawToken(),this.finalize({type:o.Literal,value:null,raw:this.getSourceValue(e),isString:!1,...this.getItemLocation(t)});case h.Template:return this.parseTemplateLiteral();case h.Punctuator:switch(e.value){case"(":return this.inheritCoverGrammar(this.parseGroupExpression.bind(this));case"[":return this.inheritCoverGrammar(this.parseArrayInitializer.bind(this));case"{":return this.inheritCoverGrammar(this.parseObjectExpression.bind(this));default:return this.throwUnexpectedToken({rawToken:this.rawToken})}case h.Keyword:return this.context.isAssignmentTarget=!1,this.throwUnexpectedToken({rawToken:this.rawToken});default:return this.throwUnexpectedToken({rawToken:this.rawToken})}}parseArrayInitializer(){let t=this.captureStartMarker();this.expectPunctuator("[");let e=[];for(;!this.matchPunctuator("]");){let i=this.captureStartMarker();this.matchPunctuator(",")?(this.readNextRawToken(),this.throwError(p.InvalidExpression,i)):(e.push(this.inheritCoverGrammar(this.parseAssignmentExpression.bind(this))),this.matchPunctuator("]")||this.expectPunctuator(","))}return this.expectPunctuator("]"),this.finalize({type:o.ArrayExpression,elements:e,...this.getItemLocation(t)})}parseObjectPropertyKey(){let t=this.captureStartMarker(),e=this.rawToken;switch(e.type){case h.StringLiteral:return this.readNextRawToken(),this.finalize({type:o.Literal,value:e.value,raw:this.getSourceValue(e),isString:!0,...this.getItemLocation(t)});case h.Identifier:case h.BooleanLiteral:case h.NullLiteral:case h.Keyword:return this.readNextRawToken(),this.finalize({type:o.Identifier,name:e.value,...this.getItemLocation(t)});default:this.throwError(p.KeyMustBeString,t)}}parseObjectProperty(){let t=this.rawToken,e=this.captureStartMarker(),i=this.parseObjectPropertyKey(),r=!1,n=null;return this.matchPunctuator(":")?(this.readNextRawToken(),n=this.inheritCoverGrammar(this.parseAssignmentExpression.bind(this))):t.type===h.Identifier?(r=!0,n=this.finalize({type:o.Identifier,name:t.value,...this.getItemLocation(e)})):this.throwUnexpectedToken({rawToken:this.rawToken}),this.finalize({type:o.Property,kind:"init",key:i,value:n,shorthand:r,...this.getItemLocation(e)})}parseObjectExpression(){let t=this.captureStartMarker();this.expectPunctuator("{");let e=[];for(;!this.matchPunctuator("}");)e.push(this.parseObjectProperty()),this.matchPunctuator("}")||this.expectPunctuator(",");return this.expectPunctuator("}"),this.finalize({type:o.ObjectExpression,properties:e,...this.getItemLocation(t)})}parseTemplateElement(t=!1){let e=this.rawToken;e.type!==h.Template&&this.throwUnexpectedToken({rawToken:e}),t&&!e.head&&this.throwUnexpectedToken({code:p.InvalidTemplateHead,rawToken:e});let i=this.captureStartMarker();this.readNextRawToken();let{value:r,cooked:n,tail:s}=e,a=this.finalize({type:o.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 t=this.captureStartMarker(),e=[],i=[],r=this.parseTemplateElement(!0);for(i.push(r);!r.tail;)e.push(this.parseExpression()),r=this.parseTemplateElement(),i.push(r);return this.finalize({type:o.TemplateLiteral,quasis:i,expressions:e,...this.getItemLocation(t)})}parseGroupExpression(){this.expectPunctuator("(");let t=this.inheritCoverGrammar(this.parseAssignmentExpression.bind(this));return this.expectPunctuator(")"),t}parseArguments(){this.expectPunctuator("(");let t=[];if(!this.matchPunctuator(")"))for(;;){let e=this.isolateCoverGrammar(this.parseAssignmentExpression.bind(this));if(t.push(e),this.matchPunctuator(")")||(this.expectPunctuator(","),this.matchPunctuator(")")))break}return this.expectPunctuator(")"),t}parseMemberName(){let t=this.rawToken,e=this.captureStartMarker();return this.readNextRawToken(),t.type!==h.NullLiteral&&t.type!==h.Identifier&&t.type!==h.Keyword&&t.type!==h.BooleanLiteral&&this.throwUnexpectedToken({rawToken:t}),this.finalize({type:o.Identifier,name:t.value,...this.getItemLocation(e)})}parseLeftHandSideExpression(){let t=this.captureStartMarker(),e=this.inheritCoverGrammar(this.parsePrimaryExpression.bind(this)),i=this.captureStartMarker(),r;for(;r=this.getMatchingPunctuator("([.");)switch(r){case"(":{this.context.isAssignmentTarget=!1,e.type!==o.Identifier&&e.type!==o.MemberExpression&&this.throwError(p.IdentiferExpected,t,i);let n=this.parseArguments();e=this.finalize({type:o.CallExpression,callee:e,arguments:n,...this.getItemLocation(t)});continue}case"[":{this.context.isAssignmentTarget=!0,this.expectPunctuator("[");let n=this.isolateCoverGrammar(()=>this.parseExpression());this.expectPunctuator("]"),e=this.finalize({type:o.MemberExpression,computed:!0,object:e,property:n,...this.getItemLocation(t)});continue}case".":{this.context.isAssignmentTarget=!0,this.expectPunctuator(".");let n=this.parseMemberName();e=this.finalize({type:o.MemberExpression,computed:!1,object:e,property:n,...this.getItemLocation(t)});continue}default:break}return e}parseUpdateExpression(){let t=this.captureStartMarker(),e=this.getMatchingPunctuator(Fe);if(e){this.readNextRawToken();let s=this.captureStartMarker(),a=this.inheritCoverGrammar(this.parseUnaryExpression.bind(this));return a.type!==o.Identifier&&a.type!==o.MemberExpression&&a.type!==o.CallExpression&&this.throwError(p.InvalidExpression,s),this.context.isAssignmentTarget||this.tolerateError(p.InvalidLeftHandSideInAssignment,t),this.context.isAssignmentTarget=!1,this.finalize({type:o.UpdateExpression,operator:e,argument:a,prefix:!0,...this.getItemLocation(t)})}let i=this.captureStartMarker(),r=this.inheritCoverGrammar(this.parseLeftHandSideExpression.bind(this)),n=this.captureStartMarker();return this.hasLineTerminator||(e=this.getMatchingPunctuator(Fe),!e)?r:(r.type!==o.Identifier&&r.type!==o.MemberExpression&&this.throwError(p.InvalidExpression,i,n),this.context.isAssignmentTarget||this.tolerateError(p.InvalidLeftHandSideInAssignment,t),this.readNextRawToken(),this.context.isAssignmentTarget=!1,this.finalize({type:o.UpdateExpression,operator:e,argument:r,prefix:!1,...this.getItemLocation(t)}))}parseUnaryExpression(){let t=this.getMatchingPunctuator(Qe);if(t){let e=this.captureStartMarker();this.readNextRawToken();let i=this.inheritCoverGrammar(this.parseUnaryExpression.bind(this));return this.context.isAssignmentTarget=!1,this.finalize({type:o.UnaryExpression,operator:t,argument:i,prefix:!0,...this.getItemLocation(e)})}return this.parseUpdateExpression()}parseBinaryExpression(){let t=this.rawToken,e=this.inheritCoverGrammar(this.parseUnaryExpression.bind(this));if(this.rawToken.type!==h.Punctuator)return e;let i=this.rawToken.value,r=Je(i);if(r===0)return e;this.readNextRawToken(),this.context.isAssignmentTarget=!1;let n=[t,this.rawToken],s=e,a=this.inheritCoverGrammar(this.parseUnaryExpression.bind(this)),u=[s,i,a],c=[r];for(;this.rawToken.type===h.Punctuator&&(r=Je(this.rawToken.value))>0;){for(;u.length>2&&r<=c[c.length-1];){a=u.pop();let F=u.pop();c.pop(),s=u.pop(),n.pop();let M=n[n.length-1],fe=He(M,M.lineStart);u.push(this.finalize(this.createBinaryOrLogicalExpression(fe,F,s,a)))}u.push(this.rawToken.value),c.push(r),n.push(this.rawToken),this.readNextRawToken(),u.push(this.inheritCoverGrammar(this.parseUnaryExpression.bind(this)))}let l=u.length-1;e=u[l];let C=n.pop();for(;l>1;){let F=n.pop();if(!F)break;let M=C?.lineStart,fe=He(F,M),Bt=u[l-1];e=this.finalize(this.createBinaryOrLogicalExpression(fe,Bt,u[l-2],e)),l-=2,C=F}return e}createBinaryOrLogicalExpression(t,e,i,r){let n=Xe.includes(e)?o.LogicalExpression:o.BinaryExpression;return n===o.BinaryExpression?{type:n,operator:e,left:i,right:r,...this.getItemLocation(t)}:((i.type===o.AssignmentExpression||i.type===o.UpdateExpression)&&this.throwError(p.InvalidExpression,...Ge(i)),(r.type===o.AssignmentExpression||r.type===o.UpdateExpression)&&this.throwError(p.InvalidExpression,...Ge(i)),{type:n,operator:e,left:i,right:r,...this.getItemLocation(t)})}parseAssignmentExpression(){let t=this.captureStartMarker(),e=this.inheritCoverGrammar(this.parseBinaryExpression.bind(this)),i=this.captureStartMarker(),r=this.getMatchingPunctuator(Ze);if(!r)return e;e.type!==o.Identifier&&e.type!==o.MemberExpression&&this.throwError(p.InvalidExpression,t,i),this.context.isAssignmentTarget||this.tolerateError(p.InvalidLeftHandSideInAssignment,t),this.matchPunctuator("=")||(this.context.isAssignmentTarget=!1),this.readNextRawToken();let n=this.isolateCoverGrammar(this.parseAssignmentExpression.bind(this));return this.finalize({type:o.AssignmentExpression,left:e,operator:r,right:n,...this.getItemLocation(t)})}parseExpression(){return this.isolateCoverGrammar(this.parseAssignmentExpression.bind(this))}parseStatements(t){let e=[];for(;this.rawToken.type!==h.EOF&&!this.matchPunctuator(t);){let i=this.parseStatementListItem();H(i)||e.push(i)}return e}parseStatementListItem(){return this.context.isAssignmentTarget=!0,this.matchKeyword(f.Function)?this.parseFunctionDeclaration():this.matchKeyword(f.Export)?this.parseExportDeclaration():this.matchKeyword(f.Import)?this.parseImportDeclaration():this.parseStatement()}parseBlock(){let t=this.captureStartMarker();this.expectPunctuator("{");let e=this.parseStatements("}");return this.expectPunctuator("}"),this.finalize({type:o.BlockStatement,body:e,...this.getItemLocation(t)})}parseObjectStatement(){let t=this.captureStartMarker(),e=this.parseObjectExpression();return this.finalize({type:o.ExpressionStatement,expression:e,...this.getItemLocation(t)})}parseBlockOrObjectStatement(){return this.context.curlyParsingType===Ee.AsObject?this.parseObjectStatement():this.peekAhead(t=>{let e=t();return!(e.type!==h.Identifier&&e.type!==h.StringLiteral||(e=t(),e.type!==h.Punctuator||e.value!==":"))})?this.parseObjectStatement():this.parseBlock()}parseIdentifier(){let t=this.rawToken;if(t.type!==h.Identifier)return null;let e=this.captureStartMarker();return this.readNextRawToken(),this.finalize({type:o.Identifier,name:t.value,...this.getItemLocation(e)})}parseVariableDeclarator(){let t=this.captureStartMarker(),e=this.parseIdentifier();e||this.throwUnexpectedToken({code:p.IdentiferExpected});let i=null;if(this.matchPunctuator("=")){this.readNextRawToken();let r=this.rawToken;try{i=this.isolateCoverGrammar(this.parseAssignmentExpression.bind(this))}catch{this.throwUnexpectedToken({rawToken:r,code:p.InvalidVariableAssignment})}}return this.finalize({type:o.VariableDeclarator,id:e,init:i,...this.getItemLocation(t)})}parseVariableDeclarationList(){let t=[this.parseVariableDeclarator()];for(;this.matchPunctuator(",");)this.readNextRawToken(),t.push(this.parseVariableDeclarator());return t}parseVariableDeclaration(){let t=this.captureStartMarker();this.expectKeyword(f.Var);let e=this.parseVariableDeclarationList();return this.consumeSemicolon(),this.finalize({type:o.VariableDeclaration,declarations:e,kind:"var",...this.getItemLocation(t)})}parseEmptyStatement(){let t=this.captureStartMarker();return this.expectPunctuator(";"),this.finalize({type:o.EmptyStatement,...this.getItemLocation(t)})}parseExpressionStatement(){let t=this.captureStartMarker(),e=this.parseExpression();return this.consumeSemicolon(),this.finalize({type:o.ExpressionStatement,expression:e,...this.getItemLocation(t)})}parseIfClause(){return this.withBlockContext(y.IfClause,this.parseStatement.bind(this))}parseIfStatement(){let t=this.captureStartMarker();this.expectKeyword(f.If),this.expectPunctuator("(");let e=this.captureStartMarker(),i=this.parseExpression(),r=this.captureStartMarker();this.expectPunctuator(")"),(i.type===o.AssignmentExpression||i.type===o.UpdateExpression)&&this.throwError(p.InvalidExpression,e,r);let n=this.parseIfClause(),s=null;return this.matchKeyword(f.Else)&&(this.readNextRawToken(),s=this.parseIfClause()),this.finalize({type:o.IfStatement,test:i,consequent:n,alternate:s,...this.getItemLocation(t)})}parseWhileStatement(){let t=this.captureStartMarker();this.expectKeyword(f.While),this.expectPunctuator("(");let e=this.captureStartMarker(),i=this.parseExpression(),r=this.captureStartMarker();this.expectPunctuator(")"),(i.type===o.AssignmentExpression||i.type===o.UpdateExpression)&&this.throwError(p.InvalidExpression,e,r);let n=this.withBlockContext(y.WhileLoop,this.parseStatement.bind(this));return this.finalize({type:o.WhileStatement,test:i,body:n,...this.getItemLocation(t)})}parseForStatement(){let t=null,e=null,i=null,r=null,n=null,s=this.captureStartMarker();if(this.expectKeyword(f.For),this.expectPunctuator("("),this.matchPunctuator(";"))this.readNextRawToken();else if(this.matchKeyword(f.Var)){let u=this.captureStartMarker();this.readNextRawToken();let c=this.parseVariableDeclarationList();c.length===1&&this.matchKeyword(f.In)?(c[0].init&&this.throwError(p.ForInOfLoopInitializer,u),r=this.finalize({type:o.VariableDeclaration,declarations:c,kind:"var",...this.getItemLocation(u)}),this.readNextRawToken(),n=this.parseExpression()):(this.matchKeyword(f.In)&&this.throwError(p.InvalidLeftHandSideInForIn,u),t=this.finalize({type:o.VariableDeclaration,declarations:c,kind:"var",...this.getItemLocation(u)}),this.expectPunctuator(";"))}else{let u=this.context.isAssignmentTarget,c=this.captureStartMarker();t=this.inheritCoverGrammar(this.parseAssignmentExpression.bind(this)),this.matchKeyword(f.In)?(this.context.isAssignmentTarget||this.tolerateError(p.InvalidLeftHandSideInForIn,c),t.type!==o.Identifier&&this.throwError(p.InvalidLeftHandSideInForIn,c),this.readNextRawToken(),r=t,n=this.parseExpression(),t=null):(this.context.isAssignmentTarget=u,this.expectPunctuator(";"))}r||(this.matchPunctuator(";")||(e=this.isolateCoverGrammar(this.parseExpression.bind(this))),this.expectPunctuator(";"),this.matchPunctuator(")")||(i=this.isolateCoverGrammar(this.parseExpression.bind(this)))),this.expectPunctuator(")");let a=this.withBlockContext(y.ForLoop,()=>this.isolateCoverGrammar(this.parseStatement.bind(this)));return r&&n?this.finalize({type:o.ForInStatement,left:r,right:n,body:a,...this.getItemLocation(s)}):this.finalize({type:o.ForStatement,init:t,test:e,update:i,body:a,...this.getItemLocation(s)})}parseContinueStatement(){let t=this.captureStartMarker();return this.expectKeyword(f.Continue),this.consumeSemicolon(),this.finalize({type:o.ContinueStatement,...this.getItemLocation(t)})}parseBreakStatement(){let t=this.captureStartMarker();return this.expectKeyword(f.Break),this.consumeSemicolon(),this.finalize({type:o.BreakStatement,...this.getItemLocation(t)})}parseReturnStatement(){let t=this.captureStartMarker();this.expectKeyword(f.Return);let e=!this.matchPunctuator(";")&&!this.matchPunctuator("}")&&!this.hasLineTerminator&&this.rawToken.type!==h.EOF||this.rawToken.type===h.StringLiteral||this.rawToken.type===h.Template?this.parseExpression():null;return this.consumeSemicolon(),this.finalize({type:o.ReturnStatement,argument:e,...this.getItemLocation(t)})}parseStatement(){switch(this.rawToken.type){case h.BooleanLiteral:case h.NullLiteral:case h.NumericLiteral:case h.StringLiteral:case h.Template:case h.Identifier:return this.parseExpressionStatement();case h.Punctuator:return this.rawToken.value==="{"?this.parseBlockOrObjectStatement():this.rawToken.value==="("?this.parseExpressionStatement():this.rawToken.value===";"?this.parseEmptyStatement():this.parseExpressionStatement();case h.Keyword:switch(this.rawToken.value.toLowerCase()){case f.Break:return this.parseBreakStatement();case f.Continue:return this.parseContinueStatement();case f.For:return this.parseForStatement();case f.Function:return this.parseFunctionDeclaration();case f.If:return this.parseIfStatement();case f.Return:return this.parseReturnStatement();case f.Var:return this.parseVariableDeclaration();case f.While:return this.parseWhileStatement();default:return this.parseExpressionStatement()}default:return this.throwUnexpectedToken({rawToken:this.rawToken})}}parseFormalParameters(){let t=[];if(this.expectPunctuator("("),!this.matchPunctuator(")"))for(;this.rawToken.type!==h.EOF;){let e=this.parseIdentifier();if(e||this.throwUnexpectedToken({rawToken:this.rawToken,code:p.IdentiferExpected}),t.push(e),this.matchPunctuator(")")||(this.expectPunctuator(","),this.matchPunctuator(")")))break}return this.expectPunctuator(")"),t}parseFunctionDeclaration(){(this.context.blockContext&y.Function)===y.Function&&this.throwUnexpectedToken({code:p.NoFunctionInsideFunction}),((this.context.blockContext&y.WhileLoop)===y.WhileLoop||(this.context.blockContext&y.IfClause)===y.IfClause)&&this.throwUnexpectedToken({code:p.NoFunctionInsideBlock});let t=this.captureStartMarker();this.expectKeyword(f.Function);let e=this.parseIdentifier();e||this.throwUnexpectedToken({code:p.InvalidFunctionIdentifier});let i=this.parseFormalParameters(),r=this.context.blockContext;this.context.blockContext|=y.Function;let n=this.parseBlock();return this.context.blockContext=r,this.finalize({type:o.FunctionDeclaration,id:e,params:i,body:n,...this.getItemLocation(t)})}parseScript(){let t=this.captureStartMarker(),e=this.parseStatements(),i=this.finalize({type:o.Program,body:e,...this.getItemLocation(t)});return this.options.tokens&&(i.tokens=this.tokens),this.options.tolerant&&(i.errors=this.errorHandler.errors),i}parseExportDeclaration(){this.context.blockContext!==y.None&&this.throwUnexpectedToken({code:p.ModuleExportRootOnly});let t=null,e=this.captureStartMarker();return this.expectKeyword(f.Export),this.matchKeyword(f.Var)?t=this.parseVariableDeclaration():this.matchKeyword("function")?t=this.parseFunctionDeclaration():this.throwUnexpectedToken({code:p.InvalidExpression}),this.finalize({type:o.ExportNamedDeclaration,declaration:t,specifiers:[],source:null,...this.getItemLocation(e)})}parseModuleSpecifier(){let t=this.captureStartMarker(),e=this.rawToken;if(e.type===h.StringLiteral)return this.readNextRawToken(),this.finalize({type:o.Literal,value:e.value,raw:this.getSourceValue(e),isString:!0,...this.getItemLocation(t)});this.throwError(p.InvalidModuleUri,t)}parseDefaultSpecifier(){let t=this.captureStartMarker(),e=this.parseIdentifier();return e||this.throwUnexpectedToken({code:p.IdentiferExpected}),this.finalize({type:o.ImportDefaultSpecifier,local:e,...this.getItemLocation(t)})}parseImportDeclaration(){this.context.blockContext!==y.None&&this.throwUnexpectedToken({code:p.ModuleImportRootOnly});let t=this.captureStartMarker();this.expectKeyword(f.Import);let e=this.parseDefaultSpecifier();this.expectContextualKeyword(f.From);let i=this.parseModuleSpecifier();return this.finalize({type:o.ImportDeclaration,specifiers:[e],source:i,...this.getItemLocation(t)})}},Mt=class{constructor(t,e){this.errorHandler=new st,this.errorHandler.tolerant=e?typeof e.tolerant=="boolean"&&e.tolerant:!1,this.scanner=new at(t,this.errorHandler),this.trackComments=e?typeof e.comment=="boolean"&&e.comment:!1,this.buffer=[]}errors(){return this.errorHandler.errors}getNextToken(){if(this.buffer.length===0){let t=this.scanner.scanComments();if(this.trackComments&&t.forEach(e=>{let i=this.scanner.source.slice(e.start,e.end),r={type:e.multiLine?o.BlockComment:o.LineComment,value:i,range:e.range,loc:e.loc};this.buffer.push(r)}),!this.scanner.eof()){let e={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:Ye[i.type],value:this.scanner.source.slice(i.start,i.end),range:[i.start,i.end],loc:{start:e,end:r}};this.buffer.push(n)}}return this.buffer.shift()}};function Z(t,e,i){return new Nt(t,e,i).parseScript()}function ot(t,e,i){let r=new Mt(t,e),n=[],s;try{let a;for(;a=r.getNextToken();)i&&(a=i(a)),n.push(a)}catch(a){a instanceof Error&&r.errorHandler.tolerate(a)}return r.errorHandler.tolerant&&(s=r.errors()),{tokens:n,errors:s}}import{DiagnosticSeverity as E}from"vscode-languageserver-types";var d={AlreadyDefined:"AlreadyDefined",ApiConflict:"ApiConflict",AssignedNeverUsed:"AssignedNeverUsed",DefinedNeverAssigned:"DefinedNeverAssigned",DefinedNeverUsed:"DefinedNeverUsed",EmptyBlockStatement:"EmptyBlockStatement",ExecutionError:"ExecutionError",InvalidApiFunctionUsage:"InvalidApiFunctionUsage",InvalidConstantIdentifier:"InvalidConstantIdentifier",InvalidPropertyIdentifier:"InvalidPropertyIdentifier",NoArgumentExpected:"NoArgumentExpected",NotADictionary:"NotADictionary",NotDefined:"NotDefined",NotEnoughArguments:"NotEnoughArguments",ProfileVariablesAreImmutable:"ProfileVariablesAreImmutable",ProfileVariablesConflict:"ProfileVariablesConflict",ReservedKeyword:"ReservedKeyword",TooManyArguments:"TooManyArguments",UnexpectedEmptyFunction:"UnexpectedEmptyFunction",UnexpectedPropertyIdentifier:"UnexpectedPropertyIdentifier",UnknownPropertyIdentifier:"UnknownPropertyIdentifier"},ut={[d.AlreadyDefined]:"'${identifier}' is already defined.",[d.ApiConflict]:"'${identifier}' is already defined as an Arcade constant or function.",[d.AssignedNeverUsed]:"'${identifier}' is assigned but never used.",[d.DefinedNeverAssigned]:"'${identifier}' is defined but never assigned.",[d.DefinedNeverUsed]:"'${identifier}' is defined but never used.",[d.EmptyBlockStatement]:"Empty block statement.",[d.ExecutionError]:"Execution Error: '${stack}'",[d.InvalidApiFunctionUsage]:"Arcade function '${identifier}' not used in a call expression.",[d.InvalidConstantIdentifier]:"Invalid constant identifier, expecting ${list}.",[d.InvalidPropertyIdentifier]:"Invalid property identifier, expecting ${list}.",[d.NoArgumentExpected]:"Expecting no argument.",[d.NotADictionary]:"'${identifier}' doesn't have properties.",[d.NotDefined]:"'${identifier}' is not defined.",[d.NotEnoughArguments]:"Expecting at least ${min} argument(s).",[d.ProfileVariablesAreImmutable]:"Profile variables cannot be modified.",[d.ProfileVariablesConflict]:"'${identifier}' is already defined as a profile variable.",[d.ReservedKeyword]:"'${identifier}' is a reserved keyword.",[d.TooManyArguments]:"Too many arguments, expecting ${max}.",[d.UnexpectedEmptyFunction]:"Unexpected empty function '${identifier}'.",[d.UnexpectedPropertyIdentifier]:"Unexpected property identifier.",[d.UnknownPropertyIdentifier]:"Unknown property identifier '${identifier}'.",...Ae};function re(t,e){return t.line-e.line||t.column-e.column}function ct(t,e){let i={start:t.loc.start,end:t.loc.end},r=n=>Ut(i,n.loc);return re(i.start,i.end)<0&&(i.start={...i.start},e.skipSpaces(i.start),re(i.start,i.end)<0&&(i.end={...i.end},e.skipSpaces(i.end,!0))),t.leadingComments?.forEach(r),t.trailingComments?.forEach(r),i}function Ut(t,e){re(e.start,t.start)<0&&(t.start=e.start),re(t.end,e.end)<0&&(t.end=e.end)}var Ot=/\S/u;function X(t=""){return!Ot.test(t)}var Le={indentWidth:2,wrapColumn:80,quote:null};function R(t){return{indentWidth:t?.indentWidth??Le.indentWidth,wrapColumn:t?.wrapColumn??Le.wrapColumn,quote:t?.quote??Le.quote}}var Vt=/^\s*/u,jt=/\u000D\u000A|\u000D(?!\u000A)|\u000A|\u2028|\u2029/u,ne=class t{constructor(e){this.lineRecords=e;this.length=e.length}static fromString(e,i){if(typeof e!="string")return e;let r=i?.indentWidth;return new t(e.split(jt).map(s=>{let a=Vt.exec(s)?.[0]??"";return{line:s,indentation:zt(a,r),locked:!1,sliceStart:a.length,sliceEnd:s.length}}))}toString(){return this.sliceString(this.firstPos(),this.lastPos())}charAt(e){let{line:i,column:r}=e,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?`
|
|
7
|
+
`;continue}t+=a}return e||this.throwUnexpectedToken(),r||this.curlyStack.pop(),{type:h.Template,value:this.source.slice(i+1,this.index-s),cooked:t,head:r,tail:n,lineNumber:this.lineNumber,lineStart:this.lineStart,start:i,end:this.index}}lex(){if(this.eof())return{type:h.EOF,value:"",lineNumber:this.lineNumber,lineStart:this.lineStart,start:this.index,end:this.index};let t=this.source.charCodeAt(this.index);return D.isIdentifierStart(t)?this.scanIdentifier():t===40||t===41||t===59?this.scanPunctuator():t===39||t===34?this.scanStringLiteral():t===46?D.isDecimalDigit(this.source.charCodeAt(this.index+1))?this.scanNumericLiteral():this.scanPunctuator():D.isDecimalDigit(t)?this.scanNumericLiteral():t===96||t===125&&this.curlyStack[this.curlyStack.length-1]==="${"?this.scanTemplate():t>=55296&&t<57343&&D.isIdentifierStart(this.codePointAt(this.index))?this.scanIdentifier():this.scanPunctuator()}},y={None:0,Function:1,IfClause:2,ForLoop:4,WhileLoop:8},xe={AsObject:0,Automatic:1};function qe(t,e=0){let i=t.start-t.lineStart,r=t.lineNumber;return i<0&&(i+=e,r-=1),{index:t.start,line:r,column:i}}function He(t){return[{index:t.range[0],...t.loc.start},{index:t.range[1],...t.loc.end}]}function Ge(t){return t in q?q[t]:0}var Nt=class{constructor(t,e={},i){this.delegate=i,this.hasLineTerminator=!1,this.options={tokens:typeof e.tokens=="boolean"&&e.tokens,comments:typeof e.comments=="boolean"&&e.comments,tolerant:typeof e.tolerant=="boolean"&&e.tolerant},this.options.comments&&(this.commentHandler=new wt),this.errorHandler=new nt(this.options.tolerant),this.scanner=new st(t,this.errorHandler),this.context={isAssignmentTarget:!1,blockContext:y.None,curlyParsingType:xe.AsObject},this.rawToken={type:h.EOF,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(t,e,{validTypes:i,invalidTypes:r}){i?.some(n=>t.type===n)||r?.some(n=>t.type===n)&&this.throwError(p.InvalidExpression,e)}throwError(t,e,i=this.endMarker){let{index:r,line:n,column:s}=e,a=i.index-r-1;this.errorHandler.throwError({code:t,index:r,line:n,column:s+1,len:a})}tolerateError(t,e){throw new Error("######################################### !!!")}unexpectedTokenError(t={}){let{rawToken:e}=t,{code:i,data:r}=t,n;if(e){if(!i)switch(e.type){case h.EOF:i=p.UnexpectedEndOfScript;break;case h.Identifier:i=p.UnexpectedIdentifier;break;case h.NumericLiteral:i=p.UnexpectedNumber;break;case h.StringLiteral:i=p.UnexpectedString;break;case h.Template:i=p.UnexpectedTemplate;break;default:}n=e.value.toString()}else n="ILLEGAL";i??(i=p.UnexpectedToken),r||(r={value:n});let s=Fe(i,r);if(e){let c=e.start,l=e.lineNumber,C=e.start-e.lineStart+1;return new te({code:i,index:c,line:l,column:C,len:e.end-e.start-1,data:r,description:s})}let{index:a,line:u}=this.endMarker;return new te({code:i,index:a,line:u,column:this.endMarker.column+1,data:r,description:s})}throwUnexpectedToken(t={}){throw t.rawToken??(t.rawToken=this.rawToken),this.unexpectedTokenError(t)}collectComments(t){let{commentHandler:e}=this;!e||!t.length||t.forEach(i=>{let r={type:i.multiLine?o.BlockComment:o.LineComment,value:this.getSourceValue(i),range:i.range,loc:i.loc};e.collectComment(r)})}peekAhead(t){let e=()=>(this.scanner.scanComments(),this.scanner.lex()),i=this.scanner.saveState(),r=t.call(this,e);return this.scanner.restoreState(i),r}getSourceValue(t){return this.scanner.source.slice(t.start,t.end)}convertToToken(t){return{type:Xe[t.type],value:this.getSourceValue(t),range:[t.start,t.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 t=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=t.lineNumber!==this.rawToken.lineNumber,this.options.tokens&&this.rawToken.type!==h.EOF&&this.tokens.push(this.convertToToken(this.rawToken))}captureStartMarker(){return{index:this.startMarker.index,line:this.startMarker.line,column:this.startMarker.column}}getItemLocation(t){return{range:[t.index,this.endMarker.index],loc:{start:{line:t.line,column:t.column},end:{line:this.endMarker.line,column:this.endMarker.column}}}}finalize(t){return(this.delegate??this.commentHandler)&&(this.commentHandler?.attachComments(t),this.delegate?.(t)),t}expectPunctuator(t){let e=this.rawToken;if(this.matchPunctuator(t)){this.readNextRawToken();return}this.throwUnexpectedToken({rawToken:e,code:p.PunctuatorExpected,data:{value:t}})}expectKeyword(t){if(this.rawToken.type===h.Keyword&&this.rawToken.value.toLowerCase()===t.toString()){this.readNextRawToken();return}this.throwUnexpectedToken({rawToken:this.rawToken})}expectContextualKeyword(t){if(this.rawToken.type===h.Identifier&&this.rawToken.value.toLowerCase()===t){this.readNextRawToken();return}this.throwUnexpectedToken({rawToken:this.rawToken})}matchKeyword(t){return this.rawToken.type===h.Keyword&&this.rawToken.value.toLowerCase()===t}matchContextualKeyword(t){return this.rawToken.type===h.Identifier&&this.rawToken.value===t}matchPunctuator(t){return this.rawToken.type===h.Punctuator&&this.rawToken.value===t}getMatchingPunctuator(t){if(typeof t=="string"&&(t=t.split("")),!(this.rawToken.type!==h.Punctuator||!t.length))return t.find(this.matchPunctuator.bind(this))}isolateCoverGrammar(t){let e=this.context.isAssignmentTarget;this.context.isAssignmentTarget=!0;let i=t.call(this);return this.context.isAssignmentTarget=e,i}inheritCoverGrammar(t){var e;let i=this.context.isAssignmentTarget;this.context.isAssignmentTarget=!0;let r=t.call(this);return(e=this.context).isAssignmentTarget&&(e.isAssignmentTarget=i),r}withBlockContext(t,e){let i=this.context.blockContext;this.context.blockContext|=t;let r=this.context.curlyParsingType;this.context.curlyParsingType=xe.Automatic;let n=e.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===h.EOF||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 t=this.captureStartMarker(),e=this.rawToken;switch(e.type){case h.Identifier:return this.readNextRawToken(),this.finalize({type:o.Identifier,name:e.value,...this.getItemLocation(t)});case h.NumericLiteral:case h.StringLiteral:return this.context.isAssignmentTarget=!1,this.readNextRawToken(),this.finalize({type:o.Literal,value:e.value,raw:this.getSourceValue(e),isString:typeof e.value=="string",...this.getItemLocation(t)});case h.BooleanLiteral:return this.context.isAssignmentTarget=!1,this.readNextRawToken(),this.finalize({type:o.Literal,value:e.value.toLowerCase()===V.True,raw:this.getSourceValue(e),isString:!1,...this.getItemLocation(t)});case h.NullLiteral:return this.context.isAssignmentTarget=!1,this.readNextRawToken(),this.finalize({type:o.Literal,value:null,raw:this.getSourceValue(e),isString:!1,...this.getItemLocation(t)});case h.Template:return this.parseTemplateLiteral();case h.Punctuator:switch(e.value){case"(":return this.inheritCoverGrammar(this.parseGroupExpression.bind(this));case"[":return this.inheritCoverGrammar(this.parseArrayInitializer.bind(this));case"{":return this.inheritCoverGrammar(this.parseObjectExpression.bind(this));default:return this.throwUnexpectedToken({rawToken:this.rawToken})}case h.Keyword:return this.context.isAssignmentTarget=!1,this.throwUnexpectedToken({rawToken:this.rawToken});default:return this.throwUnexpectedToken({rawToken:this.rawToken})}}parseArrayInitializer(){let t=this.captureStartMarker();this.expectPunctuator("[");let e=[];for(;!this.matchPunctuator("]");){let i=this.captureStartMarker();this.matchPunctuator(",")?(this.readNextRawToken(),this.throwError(p.InvalidExpression,i)):(e.push(this.inheritCoverGrammar(this.parseAssignmentExpression.bind(this))),this.matchPunctuator("]")||this.expectPunctuator(","))}return this.expectPunctuator("]"),this.finalize({type:o.ArrayExpression,elements:e,...this.getItemLocation(t)})}parseObjectPropertyKey(){let t=this.captureStartMarker(),e=this.rawToken;switch(e.type){case h.StringLiteral:return this.readNextRawToken(),this.finalize({type:o.Literal,value:e.value,raw:this.getSourceValue(e),isString:!0,...this.getItemLocation(t)});case h.Identifier:case h.BooleanLiteral:case h.NullLiteral:case h.Keyword:return this.readNextRawToken(),this.finalize({type:o.Identifier,name:e.value,...this.getItemLocation(t)});default:this.throwError(p.KeyMustBeString,t)}}parseObjectProperty(){let t=this.rawToken,e=this.captureStartMarker(),i=this.parseObjectPropertyKey(),r=!1,n=null;return this.matchPunctuator(":")?(this.readNextRawToken(),n=this.inheritCoverGrammar(this.parseAssignmentExpression.bind(this))):t.type===h.Identifier?(r=!0,n=this.finalize({type:o.Identifier,name:t.value,...this.getItemLocation(e)})):this.throwUnexpectedToken({rawToken:this.rawToken}),this.finalize({type:o.Property,kind:"init",key:i,value:n,shorthand:r,...this.getItemLocation(e)})}parseObjectExpression(){let t=this.captureStartMarker();this.expectPunctuator("{");let e=[];for(;!this.matchPunctuator("}");)e.push(this.parseObjectProperty()),this.matchPunctuator("}")||this.expectPunctuator(",");return this.expectPunctuator("}"),this.finalize({type:o.ObjectExpression,properties:e,...this.getItemLocation(t)})}parseTemplateElement(t=!1){let e=this.rawToken;e.type!==h.Template&&this.throwUnexpectedToken({rawToken:e}),t&&!e.head&&this.throwUnexpectedToken({code:p.InvalidTemplateHead,rawToken:e});let i=this.captureStartMarker();this.readNextRawToken();let{value:r,cooked:n,tail:s}=e,a=this.finalize({type:o.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 t=this.captureStartMarker(),e=[],i=[],r=this.parseTemplateElement(!0);for(i.push(r);!r.tail;)e.push(this.parseExpression()),r=this.parseTemplateElement(),i.push(r);return this.finalize({type:o.TemplateLiteral,quasis:i,expressions:e,...this.getItemLocation(t)})}parseGroupExpression(){this.expectPunctuator("(");let t=this.inheritCoverGrammar(this.parseAssignmentExpression.bind(this));return this.expectPunctuator(")"),t}parseArguments(){this.expectPunctuator("(");let t=[];if(!this.matchPunctuator(")"))for(;;){let e=this.isolateCoverGrammar(this.parseAssignmentExpression.bind(this));if(t.push(e),this.matchPunctuator(")")||(this.expectPunctuator(","),this.matchPunctuator(")")))break}return this.expectPunctuator(")"),t}parseMemberName(){let t=this.rawToken,e=this.captureStartMarker();return this.readNextRawToken(),t.type!==h.NullLiteral&&t.type!==h.Identifier&&t.type!==h.Keyword&&t.type!==h.BooleanLiteral&&this.throwUnexpectedToken({rawToken:t}),this.finalize({type:o.Identifier,name:t.value,...this.getItemLocation(e)})}parseLeftHandSideExpression(){let t=this.captureStartMarker(),e=this.inheritCoverGrammar(this.parsePrimaryExpression.bind(this)),i=this.captureStartMarker(),r;for(;r=this.getMatchingPunctuator("([.");)switch(r){case"(":{this.context.isAssignmentTarget=!1,e.type!==o.Identifier&&e.type!==o.MemberExpression&&this.throwError(p.IdentiferExpected,t,i);let n=this.parseArguments();e=this.finalize({type:o.CallExpression,callee:e,arguments:n,...this.getItemLocation(t)});continue}case"[":{this.context.isAssignmentTarget=!0,this.expectPunctuator("[");let n=this.isolateCoverGrammar(()=>this.parseExpression());this.expectPunctuator("]"),e=this.finalize({type:o.MemberExpression,computed:!0,object:e,property:n,...this.getItemLocation(t)});continue}case".":{this.context.isAssignmentTarget=!0,this.expectPunctuator(".");let n=this.parseMemberName();e=this.finalize({type:o.MemberExpression,computed:!1,object:e,property:n,...this.getItemLocation(t)});continue}default:break}return e}parseUpdateExpression(){let t=this.captureStartMarker(),e=this.getMatchingPunctuator(Ee);if(e){this.readNextRawToken();let s=this.captureStartMarker(),a=this.inheritCoverGrammar(this.parseUnaryExpression.bind(this));return a.type!==o.Identifier&&a.type!==o.MemberExpression&&a.type!==o.CallExpression&&this.throwError(p.InvalidExpression,s),this.context.isAssignmentTarget||this.tolerateError(p.InvalidLeftHandSideInAssignment,t),this.context.isAssignmentTarget=!1,this.finalize({type:o.UpdateExpression,operator:e,argument:a,prefix:!0,...this.getItemLocation(t)})}let i=this.captureStartMarker(),r=this.inheritCoverGrammar(this.parseLeftHandSideExpression.bind(this)),n=this.captureStartMarker();return this.hasLineTerminator||(e=this.getMatchingPunctuator(Ee),!e)?r:(r.type!==o.Identifier&&r.type!==o.MemberExpression&&this.throwError(p.InvalidExpression,i,n),this.context.isAssignmentTarget||this.tolerateError(p.InvalidLeftHandSideInAssignment,t),this.readNextRawToken(),this.context.isAssignmentTarget=!1,this.finalize({type:o.UpdateExpression,operator:e,argument:r,prefix:!1,...this.getItemLocation(t)}))}parseUnaryExpression(){let t=this.getMatchingPunctuator(Je);if(t){let e=this.captureStartMarker();this.readNextRawToken();let i=this.inheritCoverGrammar(this.parseUnaryExpression.bind(this));return this.context.isAssignmentTarget=!1,this.finalize({type:o.UnaryExpression,operator:t,argument:i,prefix:!0,...this.getItemLocation(e)})}return this.parseUpdateExpression()}parseBinaryExpression(){let t=this.rawToken,e=this.inheritCoverGrammar(this.parseUnaryExpression.bind(this));if(this.rawToken.type!==h.Punctuator)return e;let i=this.rawToken.value,r=Ge(i);if(r===0)return e;this.readNextRawToken(),this.context.isAssignmentTarget=!1;let n=[t,this.rawToken],s=e,a=this.inheritCoverGrammar(this.parseUnaryExpression.bind(this)),u=[s,i,a],c=[r];for(;this.rawToken.type===h.Punctuator&&(r=Ge(this.rawToken.value))>0;){for(;u.length>2&&r<=c[c.length-1];){a=u.pop();let F=u.pop();c.pop(),s=u.pop(),n.pop();let M=n[n.length-1],fe=qe(M,M.lineStart);u.push(this.finalize(this.createBinaryOrLogicalExpression(fe,F,s,a)))}u.push(this.rawToken.value),c.push(r),n.push(this.rawToken),this.readNextRawToken(),u.push(this.inheritCoverGrammar(this.parseUnaryExpression.bind(this)))}let l=u.length-1;e=u[l];let C=n.pop();for(;l>1;){let F=n.pop();if(!F)break;let M=C?.lineStart,fe=qe(F,M),Bt=u[l-1];e=this.finalize(this.createBinaryOrLogicalExpression(fe,Bt,u[l-2],e)),l-=2,C=F}return e}createBinaryOrLogicalExpression(t,e,i,r){let n=Ze.includes(e)?o.LogicalExpression:o.BinaryExpression;return n===o.BinaryExpression?{type:n,operator:e,left:i,right:r,...this.getItemLocation(t)}:((i.type===o.AssignmentExpression||i.type===o.UpdateExpression)&&this.throwError(p.InvalidExpression,...He(i)),(r.type===o.AssignmentExpression||r.type===o.UpdateExpression)&&this.throwError(p.InvalidExpression,...He(i)),{type:n,operator:e,left:i,right:r,...this.getItemLocation(t)})}parseAssignmentExpression(){let t=this.captureStartMarker(),e=this.inheritCoverGrammar(this.parseBinaryExpression.bind(this)),i=this.captureStartMarker(),r=this.getMatchingPunctuator(Qe);if(!r)return e;e.type!==o.Identifier&&e.type!==o.MemberExpression&&this.throwError(p.InvalidExpression,t,i),this.context.isAssignmentTarget||this.tolerateError(p.InvalidLeftHandSideInAssignment,t),this.matchPunctuator("=")||(this.context.isAssignmentTarget=!1),this.readNextRawToken();let n=this.isolateCoverGrammar(this.parseAssignmentExpression.bind(this));return this.finalize({type:o.AssignmentExpression,left:e,operator:r,right:n,...this.getItemLocation(t)})}parseExpression(){return this.isolateCoverGrammar(this.parseAssignmentExpression.bind(this))}parseStatements(t){let e=[];for(;this.rawToken.type!==h.EOF&&!this.matchPunctuator(t);){let i=this.parseStatementListItem();H(i)||e.push(i)}return e}parseStatementListItem(){return this.context.isAssignmentTarget=!0,this.matchKeyword(f.Function)?this.parseFunctionDeclaration():this.matchKeyword(f.Export)?this.parseExportDeclaration():this.matchKeyword(f.Import)?this.parseImportDeclaration():this.parseStatement()}parseBlock(){let t=this.captureStartMarker();this.expectPunctuator("{");let e=this.parseStatements("}");return this.expectPunctuator("}"),this.finalize({type:o.BlockStatement,body:e,...this.getItemLocation(t)})}parseObjectStatement(){let t=this.captureStartMarker(),e=this.parseObjectExpression();return this.finalize({type:o.ExpressionStatement,expression:e,...this.getItemLocation(t)})}parseBlockOrObjectStatement(){return this.context.curlyParsingType===xe.AsObject?this.parseObjectStatement():this.peekAhead(t=>{let e=t();return!(e.type!==h.Identifier&&e.type!==h.StringLiteral||(e=t(),e.type!==h.Punctuator||e.value!==":"))})?this.parseObjectStatement():this.parseBlock()}parseIdentifier(){let t=this.rawToken;if(t.type!==h.Identifier)return null;let e=this.captureStartMarker();return this.readNextRawToken(),this.finalize({type:o.Identifier,name:t.value,...this.getItemLocation(e)})}parseVariableDeclarator(){let t=this.captureStartMarker(),e=this.parseIdentifier();e||this.throwUnexpectedToken({code:p.IdentiferExpected});let i=null;if(this.matchPunctuator("=")){this.readNextRawToken();let r=this.rawToken;try{i=this.isolateCoverGrammar(this.parseAssignmentExpression.bind(this))}catch{this.throwUnexpectedToken({rawToken:r,code:p.InvalidVariableAssignment})}}return this.finalize({type:o.VariableDeclarator,id:e,init:i,...this.getItemLocation(t)})}parseVariableDeclarationList(){let t=[this.parseVariableDeclarator()];for(;this.matchPunctuator(",");)this.readNextRawToken(),t.push(this.parseVariableDeclarator());return t}parseVariableDeclaration(){let t=this.captureStartMarker();this.expectKeyword(f.Var);let e=this.parseVariableDeclarationList();return this.consumeSemicolon(),this.finalize({type:o.VariableDeclaration,declarations:e,kind:"var",...this.getItemLocation(t)})}parseEmptyStatement(){let t=this.captureStartMarker();return this.expectPunctuator(";"),this.finalize({type:o.EmptyStatement,...this.getItemLocation(t)})}parseExpressionStatement(){let t=this.captureStartMarker(),e=this.parseExpression();return this.consumeSemicolon(),this.finalize({type:o.ExpressionStatement,expression:e,...this.getItemLocation(t)})}parseIfClause(){return this.withBlockContext(y.IfClause,this.parseStatement.bind(this))}parseIfStatement(){let t=this.captureStartMarker();this.expectKeyword(f.If),this.expectPunctuator("(");let e=this.captureStartMarker(),i=this.parseExpression(),r=this.captureStartMarker();this.expectPunctuator(")"),(i.type===o.AssignmentExpression||i.type===o.UpdateExpression)&&this.throwError(p.InvalidExpression,e,r);let n=this.parseIfClause(),s=null;return this.matchKeyword(f.Else)&&(this.readNextRawToken(),s=this.parseIfClause()),this.finalize({type:o.IfStatement,test:i,consequent:n,alternate:s,...this.getItemLocation(t)})}parseWhileStatement(){let t=this.captureStartMarker();this.expectKeyword(f.While),this.expectPunctuator("(");let e=this.captureStartMarker(),i=this.parseExpression(),r=this.captureStartMarker();this.expectPunctuator(")"),(i.type===o.AssignmentExpression||i.type===o.UpdateExpression)&&this.throwError(p.InvalidExpression,e,r);let n=this.withBlockContext(y.WhileLoop,this.parseStatement.bind(this));return this.finalize({type:o.WhileStatement,test:i,body:n,...this.getItemLocation(t)})}parseForStatement(){let t=null,e=null,i=null,r=null,n=null,s=this.captureStartMarker();if(this.expectKeyword(f.For),this.expectPunctuator("("),this.matchPunctuator(";"))this.readNextRawToken();else if(this.matchKeyword(f.Var)){let u=this.captureStartMarker();this.readNextRawToken();let c=this.parseVariableDeclarationList();c.length===1&&this.matchKeyword(f.In)?(c[0].init&&this.throwError(p.ForInOfLoopInitializer,u),r=this.finalize({type:o.VariableDeclaration,declarations:c,kind:"var",...this.getItemLocation(u)}),this.readNextRawToken(),n=this.parseExpression()):(this.matchKeyword(f.In)&&this.throwError(p.InvalidLeftHandSideInForIn,u),t=this.finalize({type:o.VariableDeclaration,declarations:c,kind:"var",...this.getItemLocation(u)}),this.expectPunctuator(";"))}else{let u=this.context.isAssignmentTarget,c=this.captureStartMarker();t=this.inheritCoverGrammar(this.parseAssignmentExpression.bind(this)),this.matchKeyword(f.In)?(this.context.isAssignmentTarget||this.tolerateError(p.InvalidLeftHandSideInForIn,c),t.type!==o.Identifier&&this.throwError(p.InvalidLeftHandSideInForIn,c),this.readNextRawToken(),r=t,n=this.parseExpression(),t=null):(this.context.isAssignmentTarget=u,this.expectPunctuator(";"))}r||(this.matchPunctuator(";")||(e=this.isolateCoverGrammar(this.parseExpression.bind(this))),this.expectPunctuator(";"),this.matchPunctuator(")")||(i=this.isolateCoverGrammar(this.parseExpression.bind(this)))),this.expectPunctuator(")");let a=this.withBlockContext(y.ForLoop,()=>this.isolateCoverGrammar(this.parseStatement.bind(this)));return r&&n?this.finalize({type:o.ForInStatement,left:r,right:n,body:a,...this.getItemLocation(s)}):this.finalize({type:o.ForStatement,init:t,test:e,update:i,body:a,...this.getItemLocation(s)})}parseContinueStatement(){let t=this.captureStartMarker();return this.expectKeyword(f.Continue),this.consumeSemicolon(),this.finalize({type:o.ContinueStatement,...this.getItemLocation(t)})}parseBreakStatement(){let t=this.captureStartMarker();return this.expectKeyword(f.Break),this.consumeSemicolon(),this.finalize({type:o.BreakStatement,...this.getItemLocation(t)})}parseReturnStatement(){let t=this.captureStartMarker();this.expectKeyword(f.Return);let e=!this.matchPunctuator(";")&&!this.matchPunctuator("}")&&!this.hasLineTerminator&&this.rawToken.type!==h.EOF||this.rawToken.type===h.StringLiteral||this.rawToken.type===h.Template?this.parseExpression():null;return this.consumeSemicolon(),this.finalize({type:o.ReturnStatement,argument:e,...this.getItemLocation(t)})}parseStatement(){switch(this.rawToken.type){case h.BooleanLiteral:case h.NullLiteral:case h.NumericLiteral:case h.StringLiteral:case h.Template:case h.Identifier:return this.parseExpressionStatement();case h.Punctuator:return this.rawToken.value==="{"?this.parseBlockOrObjectStatement():this.rawToken.value==="("?this.parseExpressionStatement():this.rawToken.value===";"?this.parseEmptyStatement():this.parseExpressionStatement();case h.Keyword:switch(this.rawToken.value.toLowerCase()){case f.Break:return this.parseBreakStatement();case f.Continue:return this.parseContinueStatement();case f.For:return this.parseForStatement();case f.Function:return this.parseFunctionDeclaration();case f.If:return this.parseIfStatement();case f.Return:return this.parseReturnStatement();case f.Var:return this.parseVariableDeclaration();case f.While:return this.parseWhileStatement();default:return this.parseExpressionStatement()}default:return this.throwUnexpectedToken({rawToken:this.rawToken})}}parseFormalParameters(){let t=[];if(this.expectPunctuator("("),!this.matchPunctuator(")"))for(;this.rawToken.type!==h.EOF;){let e=this.parseIdentifier();if(e||this.throwUnexpectedToken({rawToken:this.rawToken,code:p.IdentiferExpected}),t.push(e),this.matchPunctuator(")")||(this.expectPunctuator(","),this.matchPunctuator(")")))break}return this.expectPunctuator(")"),t}parseFunctionDeclaration(){(this.context.blockContext&y.Function)===y.Function&&this.throwUnexpectedToken({code:p.NoFunctionInsideFunction}),((this.context.blockContext&y.WhileLoop)===y.WhileLoop||(this.context.blockContext&y.IfClause)===y.IfClause)&&this.throwUnexpectedToken({code:p.NoFunctionInsideBlock});let t=this.captureStartMarker();this.expectKeyword(f.Function);let e=this.parseIdentifier();e||this.throwUnexpectedToken({code:p.InvalidFunctionIdentifier});let i=this.parseFormalParameters(),r=this.context.blockContext;this.context.blockContext|=y.Function;let n=this.parseBlock();return this.context.blockContext=r,this.finalize({type:o.FunctionDeclaration,id:e,params:i,body:n,...this.getItemLocation(t)})}parseScript(){let t=this.captureStartMarker(),e=this.parseStatements(),i=this.finalize({type:o.Program,body:e,...this.getItemLocation(t)});return this.options.tokens&&(i.tokens=this.tokens),this.options.tolerant&&(i.errors=this.errorHandler.errors),i}parseExportDeclaration(){this.context.blockContext!==y.None&&this.throwUnexpectedToken({code:p.ModuleExportRootOnly});let t=null,e=this.captureStartMarker();return this.expectKeyword(f.Export),this.matchKeyword(f.Var)?t=this.parseVariableDeclaration():this.matchKeyword("function")?t=this.parseFunctionDeclaration():this.throwUnexpectedToken({code:p.InvalidExpression}),this.finalize({type:o.ExportNamedDeclaration,declaration:t,specifiers:[],source:null,...this.getItemLocation(e)})}parseModuleSpecifier(){let t=this.captureStartMarker(),e=this.rawToken;if(e.type===h.StringLiteral)return this.readNextRawToken(),this.finalize({type:o.Literal,value:e.value,raw:this.getSourceValue(e),isString:!0,...this.getItemLocation(t)});this.throwError(p.InvalidModuleUri,t)}parseDefaultSpecifier(){let t=this.captureStartMarker(),e=this.parseIdentifier();return e||this.throwUnexpectedToken({code:p.IdentiferExpected}),this.finalize({type:o.ImportDefaultSpecifier,local:e,...this.getItemLocation(t)})}parseImportDeclaration(){this.context.blockContext!==y.None&&this.throwUnexpectedToken({code:p.ModuleImportRootOnly});let t=this.captureStartMarker();this.expectKeyword(f.Import);let e=this.parseDefaultSpecifier();this.expectContextualKeyword(f.From);let i=this.parseModuleSpecifier();return this.finalize({type:o.ImportDeclaration,specifiers:[e],source:i,...this.getItemLocation(t)})}},Mt=class{constructor(t,e){this.errorHandler=new nt,this.errorHandler.tolerant=e?typeof e.tolerant=="boolean"&&e.tolerant:!1,this.scanner=new st(t,this.errorHandler),this.trackComments=e?typeof e.comment=="boolean"&&e.comment:!1,this.buffer=[]}errors(){return this.errorHandler.errors}getNextToken(){if(this.buffer.length===0){let t=this.scanner.scanComments();if(this.trackComments&&t.forEach(e=>{let i=this.scanner.source.slice(e.start,e.end),r={type:e.multiLine?o.BlockComment:o.LineComment,value:i,range:e.range,loc:e.loc};this.buffer.push(r)}),!this.scanner.eof()){let e={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:Xe[i.type],value:this.scanner.source.slice(i.start,i.end),range:[i.start,i.end],loc:{start:e,end:r}};this.buffer.push(n)}}return this.buffer.shift()}};function Z(t,e,i){return new Nt(t,e,i).parseScript()}function at(t,e,i){let r=new Mt(t,e),n=[],s;try{let a;for(;a=r.getNextToken();)i&&(a=i(a)),n.push(a)}catch(a){a instanceof Error&&r.errorHandler.tolerate(a)}return r.errorHandler.tolerant&&(s=r.errors()),{tokens:n,errors:s}}import{DiagnosticSeverity as E}from"vscode-languageserver-types";var d={AlreadyDefined:"AlreadyDefined",ApiConflict:"ApiConflict",AssignedNeverUsed:"AssignedNeverUsed",DefinedNeverAssigned:"DefinedNeverAssigned",DefinedNeverUsed:"DefinedNeverUsed",EmptyBlockStatement:"EmptyBlockStatement",ExecutionError:"ExecutionError",InvalidApiFunctionUsage:"InvalidApiFunctionUsage",InvalidConstantIdentifier:"InvalidConstantIdentifier",InvalidPropertyIdentifier:"InvalidPropertyIdentifier",NoArgumentExpected:"NoArgumentExpected",NotADictionary:"NotADictionary",NotDefined:"NotDefined",NotEnoughArguments:"NotEnoughArguments",ProfileVariablesAreImmutable:"ProfileVariablesAreImmutable",ProfileVariablesConflict:"ProfileVariablesConflict",ReservedKeyword:"ReservedKeyword",TooManyArguments:"TooManyArguments",UnexpectedEmptyFunction:"UnexpectedEmptyFunction",UnexpectedPropertyIdentifier:"UnexpectedPropertyIdentifier",UnknownPropertyIdentifier:"UnknownPropertyIdentifier"},ot={[d.AlreadyDefined]:"'${identifier}' is already defined.",[d.ApiConflict]:"'${identifier}' is already defined as an Arcade constant or function.",[d.AssignedNeverUsed]:"'${identifier}' is assigned but never used.",[d.DefinedNeverAssigned]:"'${identifier}' is defined but never assigned.",[d.DefinedNeverUsed]:"'${identifier}' is defined but never used.",[d.EmptyBlockStatement]:"Empty block statement.",[d.ExecutionError]:"Execution Error: '${stack}'",[d.InvalidApiFunctionUsage]:"Arcade function '${identifier}' not used in a call expression.",[d.InvalidConstantIdentifier]:"Invalid constant identifier, expecting ${list}.",[d.InvalidPropertyIdentifier]:"Invalid property identifier, expecting ${list}.",[d.NoArgumentExpected]:"Expecting no argument.",[d.NotADictionary]:"'${identifier}' doesn't have properties.",[d.NotDefined]:"'${identifier}' is not defined.",[d.NotEnoughArguments]:"Expecting at least ${min} argument(s).",[d.ProfileVariablesAreImmutable]:"Profile variables cannot be modified.",[d.ProfileVariablesConflict]:"'${identifier}' is already defined as a profile variable.",[d.ReservedKeyword]:"'${identifier}' is a reserved keyword.",[d.TooManyArguments]:"Too many arguments, expecting ${max}.",[d.UnexpectedEmptyFunction]:"Unexpected empty function '${identifier}'.",[d.UnexpectedPropertyIdentifier]:"Unexpected property identifier.",[d.UnknownPropertyIdentifier]:"Unknown property identifier '${identifier}'.",...ye};import{CompletionItemKind as ut,InsertTextFormat as Ut,InsertTextMode as Ot,MarkupKind as jt}from"vscode-languageserver-types";function Vt(t){return Array.isArray(t.testSdkCategories)}async function zt(t,e){try{let i=await t,r=new Map,n=new Map,s=[],a=Rt(e);return i.forEach(u=>{let c=[];u.items.forEach(l=>$t(c,n,r,a,l)),c.length&&s.push({...u,items:c})}),{categories:s,functionDefinitions:r,constantDefinitions:n}}catch{return{categories:[],functionDefinitions:new Map,constantDefinitions:new Map}}}var lt=class{constructor(t){this._settings=t,this.sdkCategoriesCache=new Map}async getApiDatabase(t){let{locale:e="en"}=t,i=this.sdkCategoriesCache.get(e);if(!i){let{assetsPath:r}=this._settings;if(!r)return{categories:[],functionDefinitions:new Map,constantDefinitions:new Map};i=this.loadSdkApiLibrary(e,r),this.sdkCategoriesCache.set(e,i)}return await zt(i,t)}async getApiLibrary(t){let{categories:e}=await this.getApiDatabase(t);return e}async loadSdkApiLibrary(t="en",e=""){if(Vt(this._settings))return this._settings.testSdkCategories;if(e=e.replace(/\/$/u,""),!e)return[];try{let i=this._settings.apiPathTemplate.replace("${assetsPath}",e).replace("${locale}",t),r=await fetch(i);return r.ok?await r.json():t==="en"?[]:await this.loadSdkApiLibrary("en",e)}catch{return[]}}};function Rt(t){let{profile:{apiVersion:e,bundles:i,hiddenApiItems:r=[]}={}}=t,n=pt(e),s=Array.isArray(i)&&i.length>0?new Set(["core",...i]):void 0;return a=>Wt(n,a.sinceVersion)&&(!s||s.has(a.bundle))&&!r.includes(a.name)}function $t(t,e,i,r,n){if(Array.isArray(n)){n.forEach(s=>ct(t,i,r,s));return}n.type==="constant"?_t(t,e,r,n):ct(t,i,r,n)}function ct(t,e,i,r){if(!i(r))return;r.disableDocumentation||t.push(r);let{completion:{label:n}}=r,s=n.toLowerCase(),a=e.get(s);a||(a={type:"functionDefinition",key:s,overloads:[]},e.set(s,a)),a.overloads.push(r)}function _t(t,e,i,r){if(!i(r))return;t.push(r);let{completion:{label:n}}=r,s=n.toLowerCase();e.set(s,r);let[a,u]=r.completion.label.split(".");if(!u)return;let c=a.toLowerCase(),l=e.get(c);l||(l={type:"namespace",key:c,members:[],completion:{label:a,detail:a,insertText:a,insertTextMode:Ot.adjustIndentation,insertTextFormat:Ut.PlainText,kind:ut.Enum}},e.set(c,l));let C=structuredClone(r);C.name=u,C.completion.label=u,C.completion.insertText=u,C.completion.kind=ut.Constant,l.members.push(C),l.completion.documentation=l.members.reduce((F,M)=>(F.value=`${F.value}${F.value?`
|
|
8
|
+
|
|
9
|
+
`:""}**${M.completion.label}**: ${M.description}`,F),{kind:jt.Markdown,value:""})}function pt(t){if(!t||typeof t!="string")return null;let e=t.split(".").map(n=>Number.parseInt(n));if(e.some(Number.isNaN))return console.error("Invalid API version string",t),null;let[i,r]=e.slice(0,2);return{major:i,minor:r}}function Wt(t,e){if(!t)return!0;let i=pt(e);return i?t.major>i.major?!1:t.minor===void 0||i.minor===void 0?!0:i.minor<=t.minor:!0}function Be(t){return!!t&&t.type!=="dictionary"}function ht(t){return t?.type==="dictionary"}var Kt="${assetsPath}/api/arcade-api.t9n.${locale}.json",qt="arcade",re=class extends lt{constructor(e){let i={...e,languageId:qt,apiPathTemplate:Kt};super(i)}};function ne(t,e){return t.line-e.line||t.column-e.column}function dt(t,e){let i={start:t.loc.start,end:t.loc.end},r=n=>Ht(i,n.loc);return ne(i.start,i.end)<0&&(i.start={...i.start},e.skipSpaces(i.start),ne(i.start,i.end)<0&&(i.end={...i.end},e.skipSpaces(i.end,!0))),t.leadingComments?.forEach(r),t.trailingComments?.forEach(r),i}function Ht(t,e){ne(e.start,t.start)<0&&(t.start=e.start),ne(t.end,e.end)<0&&(t.end=e.end)}var Gt=/\S/u;function X(t=""){return!Gt.test(t)}var Le={indentWidth:2,wrapColumn:80,quote:null};function R(t){return{indentWidth:t?.indentWidth??Le.indentWidth,wrapColumn:t?.wrapColumn??Le.wrapColumn,quote:t?.quote??Le.quote}}var Jt=/^\s*/u,Qt=/\u000D\u000A|\u000D(?!\u000A)|\u000A|\u2028|\u2029/u,se=class t{constructor(e){this.lineRecords=e;this.length=e.length}static fromString(e,i){if(typeof e!="string")return e;let r=i?.indentWidth;return new t(e.split(Qt).map(s=>{let a=Jt.exec(s)?.[0]??"";return{line:s,indentation:Zt(a,r),locked:!1,sliceStart:a.length,sliceEnd:s.length}}))}toString(){return this.sliceString(this.firstPos(),this.lastPos())}charAt(e){let{line:i,column:r}=e,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?`
|
|
8
10
|
`:a>=n.sliceEnd?"":n.line.charAt(a)}getIndentationAt(e){return Math.max(this.lineRecords[e-1].indentation,0)}getLineLength(e){let i=this.lineRecords[e-1];return this.getIndentationAt(e)+i.sliceEnd-i.sliceStart}getStatementLineSeparators(e){let i=this.slice(e,this.skipSpaces({...e})??this.lastPos());return i.length===1||!X(i.lineRecords[1].line)?[`
|
|
9
11
|
`]:[`
|
|
10
12
|
`,`
|
|
@@ -12,10 +14,8 @@ function ge(t){return!!t&&t.type!=="dictionary"}function $e(t){return t?.type===
|
|
|
12
14
|
`,`
|
|
13
15
|
`]:[`
|
|
14
16
|
`]}nextPos(e,i=!1){let r=Math.max(e.line,0);return Math.max(e.column,0)<this.getLineLength(r)?(e.column+=1,i?!!this.skipSpaces(e):!0):r<this.length?(e.line+=1,e.column=0,i?!!this.skipSpaces(e):!0):!1}prevPos(e,i=!1){let r=e.line,n=e.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 e.line=r,e.column=n,i?!!this.skipSpaces(e,!0):!0}firstPos(){return{line:1,column:0}}lastPos(){return{line:this.length,column:this.getLineLength(this.length)}}skipSpaces(e,i=!1){if(i){for(;this.prevPos(e);)if(!X(this.charAt(e))&&this.nextPos(e))return e;return null}else{for(;X(this.charAt(e));)if(!this.nextPos(e))return null;return e}}slice(e,i){if(!i&&!e)return this;if(i??(i=this.lastPos()),!e)throw new Error("cannot slice with end but not start");let r=this.lineRecords.slice(e.line-1,i.line);return e.line===i.line?r[0]=$(r[0],e.column,i.column):(r[0]=$(r[0],e.column),r.push($(r.pop()??r[0],0,i.column))),new t(r)}sliceString(e=this.firstPos(),i=this.lastPos()){let r=[];for(let n=e.line;n<=i.line;n++){let s=this.lineRecords[n-1];n===e.line?n===i.line?s=$(s,e.column,i.column):s=$(s,e.column):n===i.line&&(s=$(s,0,i.column));let a="",u=Math.max(s.indentation,0);u>0&&(a+=new Array(u+1).join(" ")),a+=s.line.slice(s.sliceStart,s.sliceEnd),r.push(a)}return r.join(`
|
|
15
|
-
`)}};function
|
|
16
|
-
`){return this.lines.join(e)}};function Te(t,e){return t*(e.indentWidth??2)}function k(t=0,e){let{indentWidth:i=2}=R(e);return new Array(t*i+1).join(" ")}function se(t){return t.replace(/['"]/gu,e=>e==='"'?"'":'"')}function $t(t,e){switch(t.type){case o.UnaryExpression:return Ie(e)&&e.object===t;case o.BinaryExpression:case o.LogicalExpression:switch(e.type){case o.UnaryExpression:return!0;case o.MemberExpression:return e.object===t;case o.BinaryExpression:case o.LogicalExpression:return q[e.operator]>q[t.operator];default:return!1}case o.Literal:return Ie(e)&&typeof t.value=="number"&&e.object===t;case o.AssignmentExpression:switch(e.type){case o.UnaryExpression:case o.BinaryExpression:case o.LogicalExpression:case o.ReturnStatement:return!0;case o.MemberExpression:return e.object===t;default:return!1}default:return!1}}function g(t,e,i){switch(t?.type){case o.BinaryExpression:case o.LogicalExpression:return _t(t,e,i);case o.AssignmentExpression:return new ee(t,e,i);case o.MemberExpression:return new ue(t,e,i);case o.Identifier:return new Y(t,e,i);case o.CallExpression:return new ke(t,e,i);case o.ObjectExpression:return v(t,e,i);case o.ArrayExpression:return v(t,e,i);case o.Literal:return new Y(t,e,i);case o.UpdateExpression:case o.UnaryExpression:return new oe(t,e,i);case o.TemplateLiteral:return new we(t,e,i);case o.VariableDeclaration:return new W(t,e,i);default:throw new Error(`unknown type: ${JSON.stringify(t)}`)}}function v(t,e,i){let r=new _(t,e,i);switch(t.type){case o.ArrayExpression:return r.setupCollection(t.elements.map(n=>g(n,t,i)),"SquareBrackets"),r;case o.ObjectExpression:return r.setupCollection(t.properties.map(n=>new ve(n,t,i)),"CurlyBrackets"),r;case o.VariableDeclaration:return r.prefix="var ",r.setupCollection(t.declarations.map(n=>pt(n,t,i)),"None"),r;case o.FunctionDeclaration:return r.prefix=`function ${t.id.name}`,r.setupCollection(t.params.map(n=>g(n,t,i)),"Parentheses"),r;case o.ForStatement:return r.prefix="for ",r.setupCollection([g(t.init,t,i),g(t.test,t,i),g(t.update,t,i)],"Parentheses",";"),r;case o.ForInStatement:return r.prefix="for ",r.setupCollection([new ee(t,e,i)],"Parentheses",""),r;case o.IfStatement:return r.prefix="if ",r.setupCollection([g(t.test,t,i)],"Parentheses",""),r;case o.WhileStatement:return r.prefix="while ",r.setupCollection([g(t.test,t,i)],"Parentheses",""),r;default:return r}}function pt(t,e,i){return t.init?new ee(t,e,i):new Y(t.id,e,i)}function _t(t,e,i){let n=[...ae(t.left,t.operator),...ae(t.right,t.operator)].map(a=>g(a,t,i)),s=new _(t,e,i);return s.setupCollection(n,"None",` ${t.operator}`),s}function ae(t,e){return t.type!==o.BinaryExpression&&t.type!==o.LogicalExpression?[t]:t.operator!==e?[t]:[...ae(t.left,e),...ae(t.right,e)]}var S=class{constructor(e,i,r){this.node=e;this.parent=i;this.options=r;this.prefix="";this.suffix="";this.groupingParentheses=!1;this.groupingParentheses=$t(e,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(e){return typeof e=="string"&&(e=m.fromString(e)),e.surroundWith(this.leadingString,this.trailingString)}},_=class extends S{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.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"||tt(this.parent)||Be(this.parent)||(Q(this.node)||J(this.node))&&(Q(this.parent)||J(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 u=k(n,this.options);return super.finalize(m.appendLines([s,i,u+a]))}singleLineFormat(i=0){let r=this.printers.length-1;return m.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=k(s,this.options),u=this.bracketsType==="None"&&r===0?"":a,c=r<this.printers.length-1?this.separator:"",l=i.format("singleLine",s).suffixWith(c);return l.maxLineLength+a.length<=this.options.wrapColumn?l.indentFirstLine(u):i.format("multiline",s).suffixWith(c).indentFirstLine(u)}multilineFormat(i=0){return m.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(m.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)}},Wt=/^[a-zA-Z_$][a-zA-Z_$0-9]*$/u,Y=class extends S{constructor(i,r,n){super(i,r,n);this.node=i;this.parent=r;this.options=n;this.type="StringPrinter"}format(){if(P(this.node))return this.finalize(this.node.name);if(typeof this.node.value!="string")return this.finalize(this.node.raw);if(nt(this.parent)&&this.parent.key===this.node&&be(this.node)&&typeof this.node.value=="string"&&Wt.test(this.node.value))return this.finalize(this.node.value);switch(this.options.quote){case"auto":{let i=JSON.stringify(this.node.value),r=se(JSON.stringify(se(this.node.value)));return this.finalize(i.length>r.length?r:i)}case"single":return this.finalize(se(JSON.stringify(se(this.node.value))));default:return this.finalize(JSON.stringify(this.node.value))}}},oe=class extends S{constructor(i,r,n){super(i,r,n);this.node=i;this.parent=r;this.options=n;this.type="SingleExpressionPrinter";let s=it(i),a=rt(i);if(s||a){this.prefix=s?i.operator:"",this.suffix=a&&!i.prefix?i.operator:"",this.printer=g(i.argument,i,this.options);return}this.printer=g(i,r,this.options)}format(i="singleLine",r=0){return this.finalize(this.printer.format(i,r))}},W=class extends S{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=pt(i.declarations[0],i,this.options),this.printer.prefix="var "):this.printer=v(i,r,this.options)}format(i="singleLine",r=0){return this.finalize(this.printer.format(i,r))}},ke=class extends S{constructor(i,r,n){super(i,r,n);this.node=i;this.parent=r;this.options=n;this.type="CallExpressionPrinter";this.argumentsPrinter=new _(i,r,n),this.argumentsPrinter.setupCollection(i.arguments.map(s=>g(s,i,n)),"Parentheses"),P(i.callee)?this.argumentsPrinter.prefix=i.callee.name:this.memberExpressionPrinter=new ue(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(m.joinLines([n,s]));let a=Te(r,this.options)+this.leadingString.length+n.firstLinelength;return a+1<this.options.wrapColumn?(s=this.argumentsPrinter.format("multiline",r),this.finalize(m.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(m.joinLines([n,s])))}},ue=class extends S{constructor(i,r,n){super(i,r,n);this.node=i;this.parent=r;this.options=n;this.type="MemberExpressionPrinter";if(this.objectPrinter=g(i.object,i,this.options),i.computed){let s=new _(i.property,i,this.options);s.setupCollection([g(i.property,i,this.options)],"SquareBrackets"),this.propertyPrinter=s}else{let s=new oe(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(m.joinLines([n,s]));let a=Te(r,this.options)+this.leadingString.length+n.firstLinelength;a>this.options.wrapColumn&&(n=this.objectPrinter.format("multiline",r),a=n.lastLinelength);let u=s.firstLinelength+this.trailingString.length;if(a+u<this.options.wrapColumn)return this.finalize(m.joinLines([n,s]));if(this.node.computed)return this.finalize(m.joinLines([n,this.propertyPrinter.format("multiline",r)]));let c=r+1,l=k(c,this.options);return s=this.propertyPrinter.format("singleLine",r),u=l.length+s.lastLinelength+this.trailingString.length,u>this.options.wrapColumn&&(s=this.propertyPrinter.format("multiline",c)),this.finalize(m.appendLines([n,s.indentFirstLine(l)]))}},ve=class extends S{constructor(i,r,n){super(i,r,n);this.node=i;this.parent=r;this.options=n;this.type="PropertyPrinter";this.key=g(i.key,i,this.options),i.shorthand||(this.key.suffix=":",this.value=g(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 c=this.value.format("singleLine",r);return this.finalize(m.joinLines([n,c]," "))}if(G(this.node.value)||G(this.node.value)){let c=this.value.format("multiline",r);return this.finalize(m.joinLines([n,c]," "))}let s=k(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(m.appendLines([n,a])):(a=this.value.format("multiline",r+1).indentFirstLine(s),this.finalize(m.appendLines([n,a])))}},ee=class extends S{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 o.AssignmentExpression:this.leftPrinter=g(i.left,i,this.options),this.operator=` ${i.operator}`,this.rightPrinter=g(i.right,i,this.options),this.noNewLineWrapping=(P(i.left)||be(i.left))&&(G(i.right)||Se(i.right));return;case o.VariableDeclarator:this.leftPrinter=g(i.id,i,this.options),i.init&&(this.operator=" =",this.rightPrinter=g(i.init,i,this.options)),this.noNewLineWrapping=G(i.init)||Se(i.init);return;case o.ForInStatement:this.leftPrinter=g(i.left,i,this.options),this.operator=" in",this.rightPrinter=g(i.right,i,this.options);return;case o.BinaryExpression:case o.LogicalExpression:this.leftPrinter=g(i.left,i,this.options),this.operator=` ${i.operator}`,this.rightPrinter=g(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(m.joinLines([n,s]," "));let a=Te(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 u=s.firstLinelength+this.trailingString.length+1;if(a+u<this.options.wrapColumn)return this.finalize(m.joinLines([n,s]," "));let c=this.rightPrinter.format("multiline",r);return c.firstLinelength+this.trailingString.length+1+a<this.options.wrapColumn||this.noNewLineWrapping?this.finalize(m.joinLines([n,c]," ")):(u>this.options.wrapColumn&&(s=this.rightPrinter.format("multiline",r+1)),s=s.indentFirstLine(k(r+1)),this.finalize(m.appendLines([n,s])))}},we=class extends S{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=>g(a,i,this.options));this.parts.push("`"),i.quasis.forEach((a,u)=>{this.parts.push(a.value.raw),u<s.length&&(this.parts.push("${"),this.parts.push(s[u]),this.parts.push("}"))}),this.parts.push("`")}format(i="singleLine",r=0){return this.finalize(m.joinLines(this.parts.map(n=>typeof n=="string"?n:n.format(i,r))))}};function Kt(t){let e={...t.leadingComments?.slice(0,1)[0]?.loc.start??t.loc.start},i={...t.trailingComments?.slice(-1)[0]?.loc.end??t.loc.end};return{start:e,end:i}}function qt(t){return t.trailingComments?.slice(-1)[0]?.type===o.LineComment}var I=class{constructor(e,i,r){this.node=e;this.parent=i;this.options=r;this.indentStatementFirstLine=!0;this.externalOffset=0;this.options=R(this.options)}createStatementPrinter(e){switch(e.type){case o.Program:return new w(e,this.node,this.options);case o.ImportDeclaration:return new je(e,this.node,this.options);case o.ExpressionStatement:return new Oe(e,this.node,this.options);case o.FunctionDeclaration:return new le(e,this.node,this.options);case o.ExportNamedDeclaration:return z(e)?new ce(e,this.node,this.options):new le(e,this.node,this.options);case o.BlockStatement:return new w(e,this.node,this.options);case o.ReturnStatement:return new Ve(e,this.node,this.options);case o.VariableDeclaration:return new ce(e,this.node,this.options);case o.IfStatement:return new Me(e,this.node,this.options);case o.ForStatement:case o.ForInStatement:case o.WhileStatement:return new Ue(e,this.node,this.options);case o.EmptyStatement:case o.BreakStatement:case o.ContinueStatement:return new Ne(e,this.node,this.options);default:throw new Error(`unknown type: ${JSON.stringify(e)}`)}}getFormattedBody(e,i=0){if(this.cachedBody&&this.cachedBody.level===i)return this.cachedBody.body;let r=e.format(i);return this.cachedBody={body:r,level:i},r}getStatementIndentation(e=0){return this.indentStatementFirstLine?k(e,this.options):""}getStatementIndentationLength(e=0){return this.indentStatementFirstLine?e*this.options.indentWidth:0}getIndentation(e=0){return k(e,this.options)}addComments(e,i=0){let r=this.getStatementIndentation(i);if(!this.node.leadingComments?.length&&!this.node.trailingComments?.length)return e.indentFirstLine(r);let n=(this.node.leadingComments??[]).reduce((u,c)=>{let l=this.formatComment(c);return{formattedLines:m.aggregateLines(u.formattedLines,u.location,l,c.loc,r),location:c.loc}},{formattedLines:new m}),s=m.aggregateLines(n.formattedLines,n.location,e,this.node.loc,r);return(this.node.trailingComments?.reduce((u,c)=>{let l=this.formatComment(c);return{formattedLines:m.aggregateLines(u.formattedLines,u.location,l,c.loc,r),location:c.loc}},{formattedLines:s,location:this.node.loc})??{formattedLines:s}).formattedLines}formatInnerComments(e=0){if(!A(this.node)||!Array.isArray(this.node.innerComments)||!this.node.innerComments.length)return new m;let i=this.getIndentation(e);return this.node.innerComments.reduce((n,s)=>{let a=this.formatComment(s);return{formattedLines:m.aggregateLines(n.formattedLines,n.location,a,s.loc,i),location:s.loc}},{formattedLines:new m}).formattedLines}formatComment(e){switch(e.type){case o.BlockComment:return m.fromString(e.value).surroundWith("/*","*/");default:return m.fromString(e.value.trimEnd()).surroundWith("//")}}canFitSingleLine(e,i=0,r=0){return this.externalOffset+r+this.getStatementIndentationLength(i)+e.lastLinelength<=this.options.wrapColumn}},w=class extends I{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=A(this.node);n&&r.push("{");let s=n?i+1:i,a;return this.printers.forEach(u=>{if(H(u.node))return;let c=Kt(u.node);a&&c.start.line-a.end.line>1&&r.push(""),a=c,r.push(u.format(s))}),n&&r.push(`${this.getIndentation(i)}}`),this.addComments(m.appendLines(r),i)}formatEmptyBlock(i=0){if(!A(this.node))return this.addComments(m.fromString(""),i);let r=this.formatInnerComments(i+1),n="{",s=`${this.getIndentation(i)}}`;return r.isEmpty?ie(this.parent)?this.addComments(m.appendLines([n,s]),i):this.addComments(m.fromString("{}"),i):this.addComments(m.appendLines([n,r,s]),i)}},Ne=class extends I{constructor(i,r,n){super(i,r,n);this.node=i;this.keyword="";switch(this.node.type){case o.ContinueStatement:this.keyword="continue;";break;case o.BreakStatement:this.keyword="break;";break;default:this.keyword=";"}}format(i=0){return this.addComments(m.fromString(this.keyword),i)}},ce=class extends I{constructor(i,r,n){super(i,r,n);this.node=i;if(z(i))this.printer=new W(i,r,n);else if(z(i.declaration))this.printer=new W(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)}},le=class extends I{constructor(i,r,n){super(i,r,n);this.node=i;if(Pe(i))this.header=v(i,r,n),this.body=new w(i.body,i,n);else if(Pe(i.declaration))this.header=v(i.declaration,r,n),this.header.prefix="export ",this.body=new w(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(m.joinLines([a,n]," "),i)}let s=this.header.format("multiline",i);return this.addComments(m.joinLines([s,n]," "),i)}},Me=class extends I{constructor(i,r,n){super(i,r,n);this.node=i;this.header=v(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),C=A(this.node.consequent)?2:0;(r==="singleLine"||this.canFitSingleLine(l,i,C))&&(s=l)}s||(n=!0,s=this.header.format("multiline",i));let a;if(A(this.node.consequent)){let l=this.consequent.format(i,"optimized");a=m.joinLines([s," ",l])}else if(n||ie(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=m.appendLines([s,l])}else{this.consequent.indentStatementFirstLine=!1;let l=this.consequent.format(i,"singleLine");this.canFitSingleLine(l,0,s.lastLinelength+1)?a=m.joinLines([s," ",l]):(this.consequent.indentStatementFirstLine=!0,l=this.consequent.format(i+1,"optimized"),a=m.appendLines([s,l]))}if(!this.alternate)return this.addComments(a,i);let u=qt(this.node.consequent)||!A(this.node.consequent),c;if(this.alternate.externalOffset=0,A(this.node.alternate)||ie(this.node.alternate))this.alternate.indentStatementFirstLine=!1,this.alternate.externalOffset=u?5:a.lastLinelength+6,c=this.alternate.format(i,"optimized"),c=m.joinLines(["else ",c]);else{let l=u?4:a.lastLinelength+4;this.alternate.indentStatementFirstLine=!1,c=this.alternate.format(i,"singleLine"),this.canFitSingleLine(c,i,l+1)?c=m.joinLines(["else ",c]):(this.alternate.indentStatementFirstLine=!0,c=this.alternate.format(i+1,"optimized"),c=m.appendLines(["else",c]))}return u?a=m.appendLines([a,c.indentFirstLine(this.getIndentation(i))]):a=m.joinLines([a,c]," "),this.addComments(a,i)}},Ue=class extends I{constructor(i,r,n){super(i,r,n);this.node=i;this.header=v(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(m.joinLines([a,n]," "),i)}let s=this.header.format("multiline",i);return this.addComments(m.joinLines([s,n]," "),i)}},Oe=class extends I{constructor(i,r,n){super(i,r,n);this.node=i;this.expression=g(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)}},Ve=class extends I{constructor(i,r,n){super(i,r,n);this.node=i;this.argument=g(i.argument,i,n)}format(i=0,r="optimized"){if(r==="singleLine"||r==="optimized"){let u=this.argument.format("singleLine",i).surroundWith("return ",";");if(r==="singleLine"||this.canFitSingleLine(u,i))return this.addComments(u,i)}if(!Q(this.node.argument)&&!J(this.node.argument)){let u=this.argument.format("multiline",i).surroundWith("return ",";");return this.addComments(u,i)}let n=this.getIndentation(i+1),s=this.argument.format("multiline",i+1).indentFirstLine(n),a=this.getIndentation(i);return this.addComments(m.appendLines(["return (",s,`${a});`]),i)}},je=class extends I{constructor(i,r,n){super(i,r,n);this.node=i;this.libname=g(i.specifiers[0].local,i,n),this.libsource=g(i.source,i,n)}format(i=0){return this.addComments(m.joinLines(["import"," ",this.libname.format("singleLine",i)," from ",this.libsource.format("singleLine")]).suffixWith(";"),i)}};var Ht={quote:"auto"};function qi(t,e={}){try{let i=t.getText(),r=t.positionAt(i.length),n={start:{line:0,character:0},end:r},s={...Ht,...e.formattingOptions??{}},a=Gt(i,s);return[{range:n,newText:a}]}catch(i){return console.error("Arcade Formatting Error:",i),[]}}function Gt(t,e){if(!t)return"";let i=R(e),r=ne.fromString(t,i),n=r.toString(),s=Z(n,{tolerant:!0,comments:!0}),a=ct(s,r);return s.loc.start=a.start,s.loc.end=a.end,new w(s,null,i).format().toString()}var ht=Object.values(f),dt=Object.values(j),mt=["case","catch","debugger","switch","try"];import{CompletionItemKind as Dt,InsertTextFormat as Jt,InsertTextMode as Qt,MarkupKind as Zt}from"vscode-languageserver-types";var ft=new Map;function Xt(t){return Array.isArray(t.testSdkCategories)}var Yt=(t,e)=>`${t}/api/arcade-api.t9n.${e}.json`;async function ei(t,e){try{let i=await t,r=new Map,n=new Map,s=[],a=ti(e);return i.forEach(u=>{let c=[];u.items.forEach(l=>ii(c,n,r,a,l)),c.length&&s.push({...u,items:c})}),{categories:s,functionDefinitions:r,constantDefinitions:n}}catch{return{categories:[],functionDefinitions:new Map,constantDefinitions:new Map}}}var pe=class{constructor(e={}){this._settings=e}async getApiDatabase(e){let{locale:i="en"}=e,r=ft.get(i);if(!r){let{assetsPath:n}=this._settings;if(!n)return{categories:[],functionDefinitions:new Map,constantDefinitions:new Map};r=this.loadSdkApiLibrary(i,n),ft.set(i,r)}return await ei(r,e)}async getApiLibrary(e){let{categories:i}=await this.getApiDatabase(e);return i}async loadSdkApiLibrary(e="en",i=""){if(Xt(this._settings))return this._settings.testSdkCategories;if(i=i.replace(/\/$/u,""),!i)return[];try{let r=await fetch(Yt(i,e));return r.ok?await r.json():e==="en"?[]:await this.loadSdkApiLibrary("en",i)}catch{return[]}}};function ti(t){let{profile:{apiVersion:e,bundles:i,hiddenApiItems:r=[]}={}}=t,n=Ct(e),s=Array.isArray(i)&&i.length>0?new Set(["core",...i]):void 0;return a=>ni(n,a.sinceVersion)&&(!s||s.has(a.bundle))&&!r.includes(a.name)}function ii(t,e,i,r,n){if(Array.isArray(n)){n.forEach(s=>gt(t,i,r,s));return}n.type==="constant"?ri(t,e,r,n):gt(t,i,r,n)}function gt(t,e,i,r){if(!i(r))return;r.disableDocumentation||t.push(r);let{completion:{label:n}}=r,s=n.toLowerCase(),a=e.get(s);a||(a={type:"functionDefinition",key:s,overloads:[]},e.set(s,a)),a.overloads.push(r)}function ri(t,e,i,r){if(!i(r))return;t.push(r);let{completion:{label:n}}=r,s=n.toLowerCase();e.set(s,r);let[a,u]=r.completion.label.split(".");if(!u)return;let c=a.toLowerCase(),l=e.get(c);l||(l={type:"namespace",key:c,members:[],completion:{label:a,detail:a,insertText:a,insertTextMode:Qt.adjustIndentation,insertTextFormat:Jt.PlainText,kind:Dt.Enum}},e.set(c,l));let C=structuredClone(r);C.name=u,C.completion.label=u,C.completion.insertText=u,C.completion.kind=Dt.Constant,l.members.push(C),l.completion.documentation=l.members.reduce((F,M)=>(F.value=`${F.value}${F.value?`
|
|
17
|
-
|
|
18
|
-
`:""}**${M.completion.label}**: ${M.description}`,F),{kind:Zt.Markdown,value:""})}function Ct(t){if(!t||typeof t!="string")return null;let e=t.split(".").map(n=>Number.parseInt(n));if(e.some(Number.isNaN))return console.error("Arcade: invalid API version string",t),null;let[i,r]=e.slice(0,2);return{major:i,minor:r}}function ni(t,e){if(!t)return!0;let i=Ct(e);return i?t.major>i.major?!1:t.minor===void 0||i.minor===void 0?!0:i.minor<=t.minor:!0}import{CompletionItemKind as me,InsertTextFormat as Pt,InsertTextMode as bt}from"vscode-languageserver-types";import{CompletionItemKind as b,InsertTextFormat as B,InsertTextMode as L}from"vscode-languageserver-types";var xt=dt.map(t=>({label:t,kind:b.Constant})),Et=ht.map(t=>({label:t,kind:b.Keyword})),Ft=[{label:"exportfunction",kind:b.Snippet,detail:"Export Function Statement",insertText:`export function \${1:functionName} ($2) {
|
|
17
|
+
`)}};function Zt(t,e=2){let i=0,r=t.length;for(let n=0;n<r;n++)switch(t.charCodeAt(n)){case 9:{let s=Math.ceil(i/e)*e;s===i?i+=e:i=s;break}case 11:case 12:case 13:case 65279:break;case 32:default:i+=1;break}return i}function $(t,e,i){let r=t.sliceStart,n=t.sliceEnd,s=Math.max(t.indentation,0),a=s+n-r;return i??(i=a),e=Math.max(e,0),i=Math.min(i,a),i=Math.max(i,e),i<s?(s=i,n=r):n-=a-i,a=i,a-=e,e<s?s-=e:(e-=s,s=0,r+=e),t.indentation===s&&t.sliceStart===r&&t.sliceEnd===n?t:{line:t.line,indentation:s,sliceStart:r,sliceEnd:n}}function mt(t,e,i){return!t&&!i?"":t?i?`${t}${e}${i}`:t:i}var Xt=/\u000D\u000A|\u000D(?!\u000A)|\u000A|\u2028|\u2029/u,m=class t{constructor(e=[]){this.lines=e}static fromString(e){return new t(e.split(Xt))}static appendLines(e=[]){let i=new t;return e.forEach(r=>{r!=null&&(typeof r=="string"?i.lines.push(r):i.lines.push(...r.lines))}),i}static joinLines(e=[],i=""){let r=new t;return e.forEach(n=>{if(n==null)return;let s=r.lines.pop()??"";typeof n=="string"?r.lines.push(mt(s,i,n)):(r.lines.push(mt(s,i,n.lines.slice(0)[0])),r.lines.push(...n.lines.slice(1)))}),r}static aggregateLines(e,i,r,n,s){if(r.isEmpty)return e;if(!i||e.isEmpty)return r.indentFirstLine(s);let a=n.start.line-i.end.line;if(a===0)return t.joinLines([e," ",r]);let u=a===1?void 0:"";return t.appendLines([e,u,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((e,i)=>Math.max(e,i.length),0)}get firstLinelength(){return(this.lines[0]??"").length}get lastLinelength(){return(this.lines[this.lines.length-1]??"").length}surroundWith(e="",i=""){return!e&&!i?this:this.isEmpty?new t([e+i]):this.lines.length===1?new t([e+this.lines[0]+i]):t.joinLines([e,this,i])}indentFirstLine(e=""){return this.isEmpty?this:(this.lines[0]=e+this.lines[0],this)}suffixWith(e){return this.surroundWith("",e)}toString(e=`
|
|
18
|
+
`){return this.lines.join(e)}};function Te(t,e){return t*(e.indentWidth??2)}function k(t=0,e){let{indentWidth:i=2}=R(e);return new Array(t*i+1).join(" ")}function ae(t){return t.replace(/['"]/gu,e=>e==='"'?"'":'"')}function Yt(t,e){switch(t.type){case o.UnaryExpression:return Se(e)&&e.object===t;case o.BinaryExpression:case o.LogicalExpression:switch(e.type){case o.UnaryExpression:return!0;case o.MemberExpression:return e.object===t;case o.BinaryExpression:case o.LogicalExpression:return q[e.operator]>q[t.operator];default:return!1}case o.Literal:return Se(e)&&typeof t.value=="number"&&e.object===t;case o.AssignmentExpression:switch(e.type){case o.UnaryExpression:case o.BinaryExpression:case o.LogicalExpression:case o.ReturnStatement:return!0;case o.MemberExpression:return e.object===t;default:return!1}default:return!1}}function g(t,e,i){switch(t?.type){case o.BinaryExpression:case o.LogicalExpression:return ei(t,e,i);case o.AssignmentExpression:return new ee(t,e,i);case o.MemberExpression:return new ce(t,e,i);case o.Identifier:return new Y(t,e,i);case o.CallExpression:return new ke(t,e,i);case o.ObjectExpression:return v(t,e,i);case o.ArrayExpression:return v(t,e,i);case o.Literal:return new Y(t,e,i);case o.UpdateExpression:case o.UnaryExpression:return new ue(t,e,i);case o.TemplateLiteral:return new we(t,e,i);case o.VariableDeclaration:return new W(t,e,i);default:throw new Error(`unknown type: ${JSON.stringify(t)}`)}}function v(t,e,i){let r=new _(t,e,i);switch(t.type){case o.ArrayExpression:return r.setupCollection(t.elements.map(n=>g(n,t,i)),"SquareBrackets"),r;case o.ObjectExpression:return r.setupCollection(t.properties.map(n=>new ve(n,t,i)),"CurlyBrackets"),r;case o.VariableDeclaration:return r.prefix="var ",r.setupCollection(t.declarations.map(n=>Dt(n,t,i)),"None"),r;case o.FunctionDeclaration:return r.prefix=`function ${t.id.name}`,r.setupCollection(t.params.map(n=>g(n,t,i)),"Parentheses"),r;case o.ForStatement:return r.prefix="for ",r.setupCollection([g(t.init,t,i),g(t.test,t,i),g(t.update,t,i)],"Parentheses",";"),r;case o.ForInStatement:return r.prefix="for ",r.setupCollection([new ee(t,e,i)],"Parentheses",""),r;case o.IfStatement:return r.prefix="if ",r.setupCollection([g(t.test,t,i)],"Parentheses",""),r;case o.WhileStatement:return r.prefix="while ",r.setupCollection([g(t.test,t,i)],"Parentheses",""),r;default:return r}}function Dt(t,e,i){return t.init?new ee(t,e,i):new Y(t.id,e,i)}function ei(t,e,i){let n=[...oe(t.left,t.operator),...oe(t.right,t.operator)].map(a=>g(a,t,i)),s=new _(t,e,i);return s.setupCollection(n,"None",` ${t.operator}`),s}function oe(t,e){return t.type!==o.BinaryExpression&&t.type!==o.LogicalExpression?[t]:t.operator!==e?[t]:[...oe(t.left,e),...oe(t.right,e)]}var S=class{constructor(e,i,r){this.node=e;this.parent=i;this.options=r;this.prefix="";this.suffix="";this.groupingParentheses=!1;this.groupingParentheses=Yt(e,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(e){return typeof e=="string"&&(e=m.fromString(e)),e.surroundWith(this.leadingString,this.trailingString)}},_=class extends S{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.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"||et(this.parent)||Ie(this.parent)||(Q(this.node)||J(this.node))&&(Q(this.parent)||J(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 u=k(n,this.options);return super.finalize(m.appendLines([s,i,u+a]))}singleLineFormat(i=0){let r=this.printers.length-1;return m.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=k(s,this.options),u=this.bracketsType==="None"&&r===0?"":a,c=r<this.printers.length-1?this.separator:"",l=i.format("singleLine",s).suffixWith(c);return l.maxLineLength+a.length<=this.options.wrapColumn?l.indentFirstLine(u):i.format("multiline",s).suffixWith(c).indentFirstLine(u)}multilineFormat(i=0){return m.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(m.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)}},ti=/^[a-zA-Z_$][a-zA-Z_$0-9]*$/u,Y=class extends S{constructor(i,r,n){super(i,r,n);this.node=i;this.parent=r;this.options=n;this.type="StringPrinter"}format(){if(P(this.node))return this.finalize(this.node.name);if(typeof this.node.value!="string")return this.finalize(this.node.raw);if(rt(this.parent)&&this.parent.key===this.node&&Pe(this.node)&&typeof this.node.value=="string"&&ti.test(this.node.value))return this.finalize(this.node.value);switch(this.options.quote){case"auto":{let i=JSON.stringify(this.node.value),r=ae(JSON.stringify(ae(this.node.value)));return this.finalize(i.length>r.length?r:i)}case"single":return this.finalize(ae(JSON.stringify(ae(this.node.value))));default:return this.finalize(JSON.stringify(this.node.value))}}},ue=class extends S{constructor(i,r,n){super(i,r,n);this.node=i;this.parent=r;this.options=n;this.type="SingleExpressionPrinter";let s=tt(i),a=it(i);if(s||a){this.prefix=s?i.operator:"",this.suffix=a&&!i.prefix?i.operator:"",this.printer=g(i.argument,i,this.options);return}this.printer=g(i,r,this.options)}format(i="singleLine",r=0){return this.finalize(this.printer.format(i,r))}},W=class extends S{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=Dt(i.declarations[0],i,this.options),this.printer.prefix="var "):this.printer=v(i,r,this.options)}format(i="singleLine",r=0){return this.finalize(this.printer.format(i,r))}},ke=class extends S{constructor(i,r,n){super(i,r,n);this.node=i;this.parent=r;this.options=n;this.type="CallExpressionPrinter";this.argumentsPrinter=new _(i,r,n),this.argumentsPrinter.setupCollection(i.arguments.map(s=>g(s,i,n)),"Parentheses"),P(i.callee)?this.argumentsPrinter.prefix=i.callee.name:this.memberExpressionPrinter=new ce(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(m.joinLines([n,s]));let a=Te(r,this.options)+this.leadingString.length+n.firstLinelength;return a+1<this.options.wrapColumn?(s=this.argumentsPrinter.format("multiline",r),this.finalize(m.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(m.joinLines([n,s])))}},ce=class extends S{constructor(i,r,n){super(i,r,n);this.node=i;this.parent=r;this.options=n;this.type="MemberExpressionPrinter";if(this.objectPrinter=g(i.object,i,this.options),i.computed){let s=new _(i.property,i,this.options);s.setupCollection([g(i.property,i,this.options)],"SquareBrackets"),this.propertyPrinter=s}else{let s=new ue(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(m.joinLines([n,s]));let a=Te(r,this.options)+this.leadingString.length+n.firstLinelength;a>this.options.wrapColumn&&(n=this.objectPrinter.format("multiline",r),a=n.lastLinelength);let u=s.firstLinelength+this.trailingString.length;if(a+u<this.options.wrapColumn)return this.finalize(m.joinLines([n,s]));if(this.node.computed)return this.finalize(m.joinLines([n,this.propertyPrinter.format("multiline",r)]));let c=r+1,l=k(c,this.options);return s=this.propertyPrinter.format("singleLine",r),u=l.length+s.lastLinelength+this.trailingString.length,u>this.options.wrapColumn&&(s=this.propertyPrinter.format("multiline",c)),this.finalize(m.appendLines([n,s.indentFirstLine(l)]))}},ve=class extends S{constructor(i,r,n){super(i,r,n);this.node=i;this.parent=r;this.options=n;this.type="PropertyPrinter";this.key=g(i.key,i,this.options),i.shorthand||(this.key.suffix=":",this.value=g(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 c=this.value.format("singleLine",r);return this.finalize(m.joinLines([n,c]," "))}if(G(this.node.value)||G(this.node.value)){let c=this.value.format("multiline",r);return this.finalize(m.joinLines([n,c]," "))}let s=k(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(m.appendLines([n,a])):(a=this.value.format("multiline",r+1).indentFirstLine(s),this.finalize(m.appendLines([n,a])))}},ee=class extends S{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 o.AssignmentExpression:this.leftPrinter=g(i.left,i,this.options),this.operator=` ${i.operator}`,this.rightPrinter=g(i.right,i,this.options),this.noNewLineWrapping=(P(i.left)||Pe(i.left))&&(G(i.right)||be(i.right));return;case o.VariableDeclarator:this.leftPrinter=g(i.id,i,this.options),i.init&&(this.operator=" =",this.rightPrinter=g(i.init,i,this.options)),this.noNewLineWrapping=G(i.init)||be(i.init);return;case o.ForInStatement:this.leftPrinter=g(i.left,i,this.options),this.operator=" in",this.rightPrinter=g(i.right,i,this.options);return;case o.BinaryExpression:case o.LogicalExpression:this.leftPrinter=g(i.left,i,this.options),this.operator=` ${i.operator}`,this.rightPrinter=g(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(m.joinLines([n,s]," "));let a=Te(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 u=s.firstLinelength+this.trailingString.length+1;if(a+u<this.options.wrapColumn)return this.finalize(m.joinLines([n,s]," "));let c=this.rightPrinter.format("multiline",r);return c.firstLinelength+this.trailingString.length+1+a<this.options.wrapColumn||this.noNewLineWrapping?this.finalize(m.joinLines([n,c]," ")):(u>this.options.wrapColumn&&(s=this.rightPrinter.format("multiline",r+1)),s=s.indentFirstLine(k(r+1)),this.finalize(m.appendLines([n,s])))}},we=class extends S{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=>g(a,i,this.options));this.parts.push("`"),i.quasis.forEach((a,u)=>{this.parts.push(a.value.raw),u<s.length&&(this.parts.push("${"),this.parts.push(s[u]),this.parts.push("}"))}),this.parts.push("`")}format(i="singleLine",r=0){return this.finalize(m.joinLines(this.parts.map(n=>typeof n=="string"?n:n.format(i,r))))}};function ii(t){let e={...t.leadingComments?.slice(0,1)[0]?.loc.start??t.loc.start},i={...t.trailingComments?.slice(-1)[0]?.loc.end??t.loc.end};return{start:e,end:i}}function ri(t){return t.trailingComments?.slice(-1)[0]?.type===o.LineComment}var I=class{constructor(e,i,r){this.node=e;this.parent=i;this.options=r;this.indentStatementFirstLine=!0;this.externalOffset=0;this.options=R(this.options)}createStatementPrinter(e){switch(e.type){case o.Program:return new w(e,this.node,this.options);case o.ImportDeclaration:return new Ve(e,this.node,this.options);case o.ExpressionStatement:return new Oe(e,this.node,this.options);case o.FunctionDeclaration:return new pe(e,this.node,this.options);case o.ExportNamedDeclaration:return z(e)?new le(e,this.node,this.options):new pe(e,this.node,this.options);case o.BlockStatement:return new w(e,this.node,this.options);case o.ReturnStatement:return new je(e,this.node,this.options);case o.VariableDeclaration:return new le(e,this.node,this.options);case o.IfStatement:return new Me(e,this.node,this.options);case o.ForStatement:case o.ForInStatement:case o.WhileStatement:return new Ue(e,this.node,this.options);case o.EmptyStatement:case o.BreakStatement:case o.ContinueStatement:return new Ne(e,this.node,this.options);default:throw new Error(`unknown type: ${JSON.stringify(e)}`)}}getFormattedBody(e,i=0){if(this.cachedBody&&this.cachedBody.level===i)return this.cachedBody.body;let r=e.format(i);return this.cachedBody={body:r,level:i},r}getStatementIndentation(e=0){return this.indentStatementFirstLine?k(e,this.options):""}getStatementIndentationLength(e=0){return this.indentStatementFirstLine?e*this.options.indentWidth:0}getIndentation(e=0){return k(e,this.options)}addComments(e,i=0){let r=this.getStatementIndentation(i);if(!this.node.leadingComments?.length&&!this.node.trailingComments?.length)return e.indentFirstLine(r);let n=(this.node.leadingComments??[]).reduce((u,c)=>{let l=this.formatComment(c);return{formattedLines:m.aggregateLines(u.formattedLines,u.location,l,c.loc,r),location:c.loc}},{formattedLines:new m}),s=m.aggregateLines(n.formattedLines,n.location,e,this.node.loc,r);return(this.node.trailingComments?.reduce((u,c)=>{let l=this.formatComment(c);return{formattedLines:m.aggregateLines(u.formattedLines,u.location,l,c.loc,r),location:c.loc}},{formattedLines:s,location:this.node.loc})??{formattedLines:s}).formattedLines}formatInnerComments(e=0){if(!A(this.node)||!Array.isArray(this.node.innerComments)||!this.node.innerComments.length)return new m;let i=this.getIndentation(e);return this.node.innerComments.reduce((n,s)=>{let a=this.formatComment(s);return{formattedLines:m.aggregateLines(n.formattedLines,n.location,a,s.loc,i),location:s.loc}},{formattedLines:new m}).formattedLines}formatComment(e){switch(e.type){case o.BlockComment:return m.fromString(e.value).surroundWith("/*","*/");default:return m.fromString(e.value.trimEnd()).surroundWith("//")}}canFitSingleLine(e,i=0,r=0){return this.externalOffset+r+this.getStatementIndentationLength(i)+e.lastLinelength<=this.options.wrapColumn}},w=class extends I{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=A(this.node);n&&r.push("{");let s=n?i+1:i,a;return this.printers.forEach(u=>{if(H(u.node))return;let c=ii(u.node);a&&c.start.line-a.end.line>1&&r.push(""),a=c,r.push(u.format(s))}),n&&r.push(`${this.getIndentation(i)}}`),this.addComments(m.appendLines(r),i)}formatEmptyBlock(i=0){if(!A(this.node))return this.addComments(m.fromString(""),i);let r=this.formatInnerComments(i+1),n="{",s=`${this.getIndentation(i)}}`;return r.isEmpty?ie(this.parent)?this.addComments(m.appendLines([n,s]),i):this.addComments(m.fromString("{}"),i):this.addComments(m.appendLines([n,r,s]),i)}},Ne=class extends I{constructor(i,r,n){super(i,r,n);this.node=i;this.keyword="";switch(this.node.type){case o.ContinueStatement:this.keyword="continue;";break;case o.BreakStatement:this.keyword="break;";break;default:this.keyword=";"}}format(i=0){return this.addComments(m.fromString(this.keyword),i)}},le=class extends I{constructor(i,r,n){super(i,r,n);this.node=i;if(z(i))this.printer=new W(i,r,n);else if(z(i.declaration))this.printer=new W(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)}},pe=class extends I{constructor(i,r,n){super(i,r,n);this.node=i;if(Ae(i))this.header=v(i,r,n),this.body=new w(i.body,i,n);else if(Ae(i.declaration))this.header=v(i.declaration,r,n),this.header.prefix="export ",this.body=new w(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(m.joinLines([a,n]," "),i)}let s=this.header.format("multiline",i);return this.addComments(m.joinLines([s,n]," "),i)}},Me=class extends I{constructor(i,r,n){super(i,r,n);this.node=i;this.header=v(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),C=A(this.node.consequent)?2:0;(r==="singleLine"||this.canFitSingleLine(l,i,C))&&(s=l)}s||(n=!0,s=this.header.format("multiline",i));let a;if(A(this.node.consequent)){let l=this.consequent.format(i,"optimized");a=m.joinLines([s," ",l])}else if(n||ie(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=m.appendLines([s,l])}else{this.consequent.indentStatementFirstLine=!1;let l=this.consequent.format(i,"singleLine");this.canFitSingleLine(l,0,s.lastLinelength+1)?a=m.joinLines([s," ",l]):(this.consequent.indentStatementFirstLine=!0,l=this.consequent.format(i+1,"optimized"),a=m.appendLines([s,l]))}if(!this.alternate)return this.addComments(a,i);let u=ri(this.node.consequent)||!A(this.node.consequent),c;if(this.alternate.externalOffset=0,A(this.node.alternate)||ie(this.node.alternate))this.alternate.indentStatementFirstLine=!1,this.alternate.externalOffset=u?5:a.lastLinelength+6,c=this.alternate.format(i,"optimized"),c=m.joinLines(["else ",c]);else{let l=u?4:a.lastLinelength+4;this.alternate.indentStatementFirstLine=!1,c=this.alternate.format(i,"singleLine"),this.canFitSingleLine(c,i,l+1)?c=m.joinLines(["else ",c]):(this.alternate.indentStatementFirstLine=!0,c=this.alternate.format(i+1,"optimized"),c=m.appendLines(["else",c]))}return u?a=m.appendLines([a,c.indentFirstLine(this.getIndentation(i))]):a=m.joinLines([a,c]," "),this.addComments(a,i)}},Ue=class extends I{constructor(i,r,n){super(i,r,n);this.node=i;this.header=v(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(m.joinLines([a,n]," "),i)}let s=this.header.format("multiline",i);return this.addComments(m.joinLines([s,n]," "),i)}},Oe=class extends I{constructor(i,r,n){super(i,r,n);this.node=i;this.expression=g(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)}},je=class extends I{constructor(i,r,n){super(i,r,n);this.node=i;this.argument=g(i.argument,i,n)}format(i=0,r="optimized"){if(r==="singleLine"||r==="optimized"){let u=this.argument.format("singleLine",i).surroundWith("return ",";");if(r==="singleLine"||this.canFitSingleLine(u,i))return this.addComments(u,i)}if(!Q(this.node.argument)&&!J(this.node.argument)){let u=this.argument.format("multiline",i).surroundWith("return ",";");return this.addComments(u,i)}let n=this.getIndentation(i+1),s=this.argument.format("multiline",i+1).indentFirstLine(n),a=this.getIndentation(i);return this.addComments(m.appendLines(["return (",s,`${a});`]),i)}},Ve=class extends I{constructor(i,r,n){super(i,r,n);this.node=i;this.libname=g(i.specifiers[0].local,i,n),this.libsource=g(i.source,i,n)}format(i=0){return this.addComments(m.joinLines(["import"," ",this.libname.format("singleLine",i)," from ",this.libsource.format("singleLine")]).suffixWith(";"),i)}};var ni={quote:"auto"};function Yi(t,e={}){try{let i=t.getText(),r=t.positionAt(i.length),n={start:{line:0,character:0},end:r},s={...ni,...e.formattingOptions??{}},a=si(i,s);return[{range:n,newText:a}]}catch(i){return console.error("Arcade Formatting Error:",i),[]}}function si(t,e){if(!t)return"";let i=R(e),r=se.fromString(t,i),n=r.toString(),s=Z(n,{tolerant:!0,comments:!0}),a=dt(s,r);return s.loc.start=a.start,s.loc.end=a.end,new w(s,null,i).format().toString()}var ft=Object.values(f),gt=Object.values(V),Ct=["case","catch","debugger","switch","try"];import{CompletionItemKind as me,InsertTextFormat as Pt,InsertTextMode as bt}from"vscode-languageserver-types";import{CompletionItemKind as b,InsertTextFormat as B,InsertTextMode as L}from"vscode-languageserver-types";var xt=gt.map(t=>({label:t,kind:b.Constant})),Et=ft.map(t=>({label:t,kind:b.Keyword})),Ft=[{label:"exportfunction",kind:b.Snippet,detail:"Export Function Statement",insertText:`export function \${1:functionName} ($2) {
|
|
19
19
|
$0
|
|
20
20
|
}`,insertTextMode:L.adjustIndentation,insertTextFormat:B.Snippet},{label:"exportvar",kind:b.Snippet,detail:"Export Variable Statement",insertText:"export var ${0:variableName}\n",insertTextMode:L.adjustIndentation,insertTextFormat:B.Snippet},{label:"for",kind:b.Snippet,detail:"For Loop Statement",insertText:"for (var ${1:i} = 0; ${1:i} < ${2:array.length}; ${1:i}++) {\n $0\n}",insertTextMode:L.adjustIndentation,insertTextFormat:B.Snippet},{label:"forin",kind:b.Snippet,detail:"For-In Loop Statement",insertText:"for (var ${1:i} in ${2:arrayOrObject}) {\n $0\n}",insertTextMode:L.adjustIndentation,insertTextFormat:B.Snippet},{label:"function",kind:b.Snippet,detail:"Function Statement",insertText:`function \${1:functionName} ($2) {
|
|
21
21
|
$0
|
|
@@ -29,4 +29,4 @@ function ge(t){return!!t&&t.type!=="dictionary"}function $e(t){return t?.type===
|
|
|
29
29
|
$0
|
|
30
30
|
}`,insertTextMode:L.adjustIndentation,insertTextFormat:B.Snippet},{label:"import",kind:b.Snippet,detail:"Import Statement",insertText:'import ${1:namespace} from "${0:uri}"',insertTextMode:L.adjustIndentation,insertTextFormat:B.Snippet},{label:"while",kind:b.Snippet,detail:"While Loop Statement",insertText:`while (\${1:false}) {
|
|
31
31
|
$0
|
|
32
|
-
}`,insertTextMode:L.adjustIndentation,insertTextFormat:B.Snippet}];import{CompletionItemKind as or,InsertTextFormat as ur,InsertTextMode as cr}from"vscode-languageserver-types";var si=/\$\{(.*?)\}/gu;function T(t,e){return e?t.replace(si,(i,r)=>e[r].toString()):t}var he=/[-[\]/{}()*+?.\\^$|]/gu;function ai(t,e){return t.line>e.end.line}function oi(t,e){return t.line<e.start.line}function ze(t,e){return!(oi(t,e)||ai(t,e)||t.line===e.start.line&&t.column<e.start.column||t.line===e.end.line&&t.column>e.end.column)}var x={None:0,Keywords:1,All:255,NoKeywords:254},N={identifiers:"a",profileVariables:"aa",constants:"ab",literals:"ab",functions:"ac",snippets:"b",keywords:"c"};function St(t,e,i,r={}){let n=t.getText({start:{line:0,character:0},end:e}),{tokens:s,errors:a=[]}=ot(n,{loc:!0,tolerant:!0});if(a.length)return{isIncomplete:!1,items:[]};let u=s.at(s.length-1),c="",l=xi(e);u?.type==="Identifier"&&ze(l,u.loc)&&(c=u.value,s.pop(),u=s[s.length-1]);let C={variables:r.profile?.variables??[],additionalCompletionItems:(r.snippets??[]).map(F=>({kind:me.Snippet,insertTextMode:bt.adjustIndentation,insertTextFormat:Pt.Snippet,...F})),apiDatabase:i};return u?.type==="Punctuator"&&u.value==="."?ci(s,c,C):ui(s,c,l,C)}function ui(t,e,i,r){let n=hi(t,i);if(n===x.None)return{isIncomplete:!1,items:[]};let s=mi(t),a=[],u=new RegExp(e.replaceAll(he,"\\$&"),"i");return s.forEach((c,l)=>{u.test(l)&&a.push({...c,sortText:N.identifiers})}),r.variables.forEach(c=>{u.test(c.name)&&c.completion&&a.push({...c.completion,sortText:N.profileVariables})}),yt(n)&&Ft.forEach(c=>{c.label.startsWith(e)&&a.push({...c,sortText:N.snippets})}),r.additionalCompletionItems.forEach(c=>{u.test(c.label)&&a.push({...c,sortText:N.snippets})}),yt(n)&&Et.forEach(c=>{u.test(c.label)&&a.push({...c,sortText:N.keywords})}),xt.forEach(c=>{u.test(c.label)&&a.push({...c,sortText:N.literals})}),r.apiDatabase.constantDefinitions.forEach((c,l)=>{c.type==="constant"&&c.disableDocumentation===!0||!u.test(l)||a.push({...c.completion,sortText:N.constants})}),r.apiDatabase.functionDefinitions.forEach((c,l)=>{u.test(l)&&c.overloads.forEach(C=>{C.disableDocumentation||a.push({...C.completion,sortText:N.functions})})}),{isIncomplete:!1,items:a}}function ci(t,e,i){let r=[...t],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 u=li(a,e,i);return u||(u=pi(a,e,s,i),u)?u:{isIncomplete:!1,items:[]}}function li(t,e,i){if(t.length>1)return null;let r=i.apiDatabase.constantDefinitions.get(t[0]);if(!r)return null;if(r.type!=="namespace")return{isIncomplete:!1,items:[]};let n=[],s=new RegExp(e.replaceAll(he,"\\$&"),"i");return r.members.forEach(a=>{a.disableDocumentation===!0||!s.test(a.name)||n.push(a.completion)}),{isIncomplete:!1,items:n}}function pi(t,e,i,r){if(!r.variables.length||!t.length)return null;let n=t.shift(),s=r.variables;for(;n;){let l=s.find(C=>C.name.toLowerCase()===n);if(!$e(l))return null;s=l.properties??[],n=t.shift()}let a=[],u=new RegExp(e.replaceAll(he,"\\$&"),"i"),c=Ei(i.loc.start);return s.forEach(l=>{u.test(l.name)&&l.completion&&a.push(Ci(c,l.completion))}),{isIncomplete:!1,items:a}}function yt(t){return(t&x.Keywords)===x.Keywords}function hi(t,e){if(!t.length)return x.All;let i=t[t.length-1];switch(i.type){case"Identifier":return x.All;case"Keyword":return["return","in","else"].includes(i.value)?x.NoKeywords:x.None;case"Punctuator":return di(t);case"Template":return i.value.endsWith("${")?x.NoKeywords:x.All;default:return ze(e,i.loc)?x.None:x.All}}function di(t){let e=[...t],i=e.pop();if(!i)return x.All;if(i.type!=="Punctuator")return x.None;if(i.value!=="("&&i.value!==",")return x.All;if(i.value==="(")return At(e);let r=0;for(i=e.pop();i;){if(i.type==="Keyword")return x.None;if(i.type!=="Punctuator"){i=e.pop();continue}if(i.value===")"||i.value==="]"){r-=1,i=e.pop();continue}if(i.value==="["){if(r===0)return x.NoKeywords;r+=1,i=e.pop();continue}if(i.value==="("){if(r===0)return At(e);r+=1,i=e.pop();continue}i=e.pop()}return x.None}function At(t){let e=[...t],i=e.pop();return i?i.type==="Keyword"?i.value.toLowerCase()==="for"?x.All:x.NoKeywords:i.type!=="Identifier"?x.All:(i=e.pop(),i?.type==="Keyword"&&i.value.toLowerCase()==="function"?x.None:x.NoKeywords):x.All}var Re=class{constructor(e){this.tokens=e;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]}},de={parameterFormat:"(parameter) ${name}",variableFormat:"var ${name}",functionFormat:"function ${name} (${paramsDetail})"};function mi(t){let e=new Map;if(!t.length)return e;let i=new Re(t);for(;i.current;){if(i.current.type==="Keyword"){if(i.current.value.toLowerCase()==="var"){i.increment(),Di(i,e);continue}if(i.current.value.toLowerCase()==="function"){i.increment(),fi(i,e);continue}}i.increment()}return e}function Di(t,e){for(;t.current;){if(t.current.type!=="Identifier")return;let i=t.current.value,r=i.toLowerCase();e.set(r,{label:i,kind:me.Variable,detail:T(de.variableFormat,{name:i})});let n=t.increment();if(n?.type!=="Punctuator")return;if(n.value===","){t.increment();continue}if(n.value==="="){t.increment(),gi(t);continue}}}function fi(t,e){for(;t.current;){if(t.current.type!=="Identifier")return;let i=t.current.value,r=i.toLowerCase(),n={label:i,kind:me.Function,detail:T(de.functionFormat,{name:i,paramsDetail:""}),insertText:`${i}()`,insertTextMode:bt.adjustIndentation,insertTextFormat:Pt.Snippet};e.set(r,n);let s=t.increment();if(!V(s,"("))return;s=t.increment();let a=[];for(;s&&!(s.type!=="Identifier"||(a.push(s.value),s=t.increment(),!V(s,",")));)s=t.increment();if(a.length){n.detail=T(de.functionFormat,{name:n.label,paramsDetail:a.join(", ")});let l=a.map((C,F)=>`\${${F+1}:${C}}`).join(", ");n.insertText=`${n.label}(${l})`}if(!V(s,")")||(s=t.increment(),!V(s,"{")))return;s=t.increment();let u=t.currentIndex,c=1;for(;s&&c>0;)V(s,"{")?c+=1:V(s,"}")&&(c-=1),s=t.increment();if(c===0)return;t.currentIndex=u,a.forEach(l=>{let C=l.toLowerCase();e.set(C,{label:l,kind:me.Variable,detail:T(de.parameterFormat,{name:l})})})}}function V(t,e){return t?.type==="Punctuator"&&t.value===e}function gi(t){let e=0;for(;t.current;){if(t.current.type==="Keyword"){if(V(t.previous,".")){t.increment();continue}return}if(t.current.type==="Punctuator"&&t.current.value===";")return;if(t.current.type==="Template"&&t.current.value.startsWith("`")){e+=1,t.increment();continue}if(t.current.type==="Punctuator"&&["(","[","{"].includes(t.current.value)){e+=1,t.increment();continue}if(t.current.type==="Template"&&t.current.value.endsWith("`")){e-=1,t.increment();continue}if(t.current.type==="Punctuator"&&[")","]","}"].includes(t.current.value)){e-=1,t.increment();continue}if(!e&&t.current.type==="Punctuator"&&t.current.value===","){t.increment();return}t.increment()}}function Ci(t,e){return e.insertText&&e.insertText.startsWith("[")&&(e.additionalTextEdits=[{newText:"",range:{start:{...t},end:{line:t.line,character:t.character+1}}}]),e}function xi(t){return{line:t.line+1,column:t.character}}function Ei(t){return{line:t.line-1,character:t.column}}var De=class{constructor(e,i=[]){this._apiDefinitions=e;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;this.handleException=e=>{if(Fi(e)){let{range:i,code:r,data:n}=e;this.logDiagnostic(i,{code:r,data:n})}else this.logDiagnostic({start:{line:1,column:0},end:{line:1,column:0}},{code:d.ExecutionError,data:{stack:e.stack??""}})};this.validateStatement=e=>{if(e)switch(e.type){case o.BlockStatement:e.body.forEach(this.validateStatement);return;case o.VariableDeclaration:e.declarations.forEach(i=>this.validateVariableDeclarator(i));return;case o.FunctionDeclaration:this.validateFunctionDeclaration(e);return;case o.ExportNamedDeclaration:this.validateExportDeclaration(e);return;case o.ImportDeclaration:this.validateImportDeclaration(e);return;case o.WhileStatement:this.validateWhileStatement(e);return;case o.ForStatement:this.validateForStatement(e);return;case o.ForInStatement:this.validateForInStatement(e);return;case o.IfStatement:this.validateIfStatement(e);return;case o.ReturnStatement:this.validateExpression(e.argument);return;case o.ExpressionStatement:this.validateExpression(e.expression);return;case o.BreakStatement:case o.ContinueStatement:case o.EmptyStatement:return}};this.validateExpression=e=>{if(e)switch(e.type){case o.AssignmentExpression:this.validateAssignmentExpression(e);return;case o.CallExpression:this.validateCallExpression(e);return;case o.Identifier:this.validateIdentifier(e);return;case o.Literal:this.validateLiteral(e);return;case o.ArrayExpression:e.elements.forEach(this.validateExpression);return;case o.ObjectExpression:this.validateObjectExpression(e);return;case o.UnaryExpression:this.validateUnaryExpression(e);return;case o.UpdateExpression:this.validateUpdateExpression(e);return;case o.BinaryExpression:case o.LogicalExpression:this.validateBinaryAndLogicalExpression(e);return;case o.MemberExpression:this.validateMemberExpression(e);return;case o.TemplateLiteral:e.expressions.forEach(this.validateExpression);return;default:return}}}validateScript(e){if(!e)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=Z(e,{tolerant:!0}),this.handleErrors(i.errors),i.body.forEach(this.validateStatement),this.diagnoseIdentifiers(),this._undeclaredIdentifiersInFunctions.size>0&&this._undeclaredIdentifiersInFunctions.forEach(r=>{for(let n of r)this.logDiagnostic(n.node.loc,{code:d.NotDefined,data:{identifier:n.node.name}})})}catch(r){this.handleException(r)}return{diagnostics:this._diagnostics,program:i}}disableRecordIdentifierAssignment(e,i){let r=this._assignmentValidationMode;this._assignmentValidationMode="disabled",e.call(this,i),this._assignmentValidationMode=r}inBlock(e,i){let r=this._isInBlock;this._isInBlock=!0,e.call(this,i),this._isInBlock=r}get _isInFunctionScope(){return!!this._functionScopeIdentifiers}inFunctionScope(e){this._functionScopeIdentifiers=new Map,e.call(this),this.diagnoseIdentifiers(),this._functionScopeIdentifiers=void 0}logDiagnostic(e,i){let r={severity:E.Error,...i,message:T(ut[i.code],i.data),range:{start:{line:e.start.line-1,character:e.start.column},end:{line:e.end.line-1,character:e.end.column}}};this._diagnostics.push(r)}handleErrors(e){(e??[]).forEach(this.handleException)}getIdentifierInfo(e){return this._functionScopeIdentifiers?.get(e)??this._scriptScopeIdentifiers.get(e)}setIdentiferInfo(e,i){if(this._functionScopeIdentifiers){this._functionScopeIdentifiers.set(e,i);return}this._scriptScopeIdentifiers.set(e,i),this._undeclaredIdentifiersInFunctions.has(e)&&(this._undeclaredIdentifiersInFunctions.delete(e),i.used=!0)}isProfileVariable(e){return this._profileVariables.some(i=>i.name.toLowerCase()===e)}isApiConstant(e){return!!this._apiDefinitions?.constantDefinitions.get(e)}isApiFunction(e){return!!this._apiDefinitions?.functionDefinitions.get(e)}isApiItem(e){return this.isApiConstant(e)||this.isApiFunction(e)}validateVariableDeclarator(e){this.validateExpression(e.init),this.recordVariableIdentifier(e.id,{initialized:!!e.init})}validateFunctionDeclaration(e){this.recordFunctionIdentifier(e),this.inFunctionScope(()=>{e.params.forEach(i=>this.recordParamAsIdentifier(i)),K(e.body)&&this.logDiagnostic(e.body.loc,{code:d.UnexpectedEmptyFunction,data:{identifier:e.id.name},severity:E.Warning}),this.validateStatement(e.body)})}validateExportDeclaration(e){this.validateStatement(e.declaration)}validateImportDeclaration(e){this.recordImportIdentifier(e)}validateForStatement(e){z(e.init)?this.inBlock(this.validateStatement,e.init):this.validateExpression(e.init),this.validateExpression(e.update),this.validateExpression(e.test),K(e.body)&&this.logDiagnostic(e.body.loc,{code:d.EmptyBlockStatement,severity:E.Warning}),this.inBlock(this.validateStatement,e.body)}validateWhileStatement(e){this.validateExpression(e.test),K(e.body)&&this.logDiagnostic(e.body.loc,{code:d.EmptyBlockStatement,severity:E.Warning}),this.inBlock(this.validateStatement,e.body)}validateForInStatement(e){P(e.left)?this.validateExpression(e.left):this.recordVariableIdentifier(e.left.declarations[0].id,{initialized:!0,inBlock:!0}),this.validateExpression(e.right),K(e.body)&&this.logDiagnostic(e.body.loc,{code:d.EmptyBlockStatement,severity:E.Warning}),this.validateStatement(e.body)}validateIfStatement(e){this.validateExpression(e.test),K(e.consequent)&&this.logDiagnostic(e.consequent.loc,{code:d.EmptyBlockStatement,severity:E.Warning}),e.alternate&&K(e.alternate)&&this.logDiagnostic(e.alternate.loc,{code:d.EmptyBlockStatement,severity:E.Warning}),this.inBlock(this.validateStatement,e.consequent),this.inBlock(this.validateStatement,e.alternate)}validateAssignmentExpression(e){let i=this._identifierBeingAssigned,r=this._assignmentValidationMode;P(e.left)&&(this._identifierBeingAssigned=e.left.name.toLowerCase(),this._assignmentValidationMode="left"),this.validateExpression(e.left),P(e.left)&&(this._assignmentValidationMode="right"),this.validateExpression(e.right),this._identifierBeingAssigned=i,this._assignmentValidationMode=r}validateCallExpression(e){let i=this._isInCallExpression;if(this._isInCallExpression=!0,this.validateExpression(e.callee),P(e.callee)){let r=e.callee.name.toLowerCase(),n=this.getIdentifierInfo(r),s=this._apiDefinitions?.functionDefinitions.get(r);if(!n&&s){let a=yi(s,e.arguments.length);a&&this.logDiagnostic(e.loc,a)}}e.arguments.forEach(this.validateExpression),this._isInCallExpression=i}validateIdentifier(e){let i=e.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(e.loc,{code:d.InvalidApiFunctionUsage,data:{identifier:e.name}});return}if(this._isInFunctionScope){let n=this._undeclaredIdentifiersInFunctions.get(i);n||(n=[],this._undeclaredIdentifiersInFunctions.set(i,n)),n.push({node:e,identifier:i});return}this.logDiagnostic(e.loc,{code:d.NotDefined,data:{identifier:e.name}})}}validateLiteral(e){Pi(e.raw).forEach(i=>{let r=this.getIdentifierInfo(i.toLowerCase());r&&(r.used=!0)})}logProfileOrApiConflict(e){let i=e.name.toLowerCase(),r=this.isProfileVariable(i),n=this.isApiItem(i);!r&&!n||this.logDiagnostic(e.loc,{code:r?d.ProfileVariablesConflict:d.ApiConflict,severity:E.Warning,data:{identifier:e.name}})}logReservedKeywordsConflict(e){let i=e.name.toLowerCase();mt.includes(i)&&this.logDiagnostic(e.loc,{code:d.ReservedKeyword,severity:E.Warning,data:{identifier:e.name}})}validateObjectExpression(e){e.properties.forEach(i=>{this.validateExpression(i.value)})}validateUnaryExpression(e){this.validateExpression(e.argument)}validateUpdateExpression(e){this.validateExpression(e.argument)}validateBinaryAndLogicalExpression(e){this.validateExpression(e.left),this.validateExpression(e.right)}validateMemberExpression(e){let i=this.flattenMemberExpressionAndValidate(e),r=i[0].object;this.disableRecordIdentifierAssignment(this.validateExpression,r),P(r)&&(this.getIdentifierInfo(r.name.toLowerCase())||this.validateMemberExpressionWithProfile(i)||this.validateConstantMemberExpression(i))}flattenMemberExpressionAndValidate(e){switch(e.type){case o.MemberExpression:return(!P(e.property)||e.computed)&&this.validateExpression(e.property),[...this.flattenMemberExpressionAndValidate(e.object),e];default:return[]}}extractAndValidatePropertyName(e){switch(e.type){case o.Identifier:return e.name.toLowerCase();case o.Literal:return typeof e.value!="string"?(this.logDiagnostic(e.loc,{code:d.UnexpectedPropertyIdentifier}),null):e.value.toLowerCase();default:return this.logDiagnostic(e.loc,{code:d.UnexpectedPropertyIdentifier}),null}}validateConstantMemberExpression(e){let i=e[0];if(!P(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:d.NotADictionary,data:{identifier:r}}),!0;let s=this.extractAndValidatePropertyName(i.property);if(!s)return!0;if(!n.members.some(a=>a.name.toLowerCase()===s)){let a=n.members.reduce((u,c)=>`${u}${u?" | ":""}${c.completion.label.split(".").pop()}`,"");this.logDiagnostic(i.property.loc,{code:d.InvalidConstantIdentifier,data:{list:a}})}return e.length>1&&this.logDiagnostic(e[1].property.loc,{code:d.UnexpectedPropertyIdentifier}),!0}validateMemberExpressionWithProfile(e){let i=e[0];if(i.object.type!==o.Identifier)return!1;let r=i.object.name.toLowerCase(),n=this._profileVariables.find(a=>a.name.toLowerCase()===r);if(!n)return!1;if(ge(n))return this.logDiagnostic(i.object.loc,{code:d.NotADictionary,data:{identifier:n.name}}),!0;if(this._identifierBeingAssigned===r)return this.logDiagnostic(i.loc,{code:d.ProfileVariablesAreImmutable}),!0;let s=n;for(let a=0;a<e.length;a++){if(e[a].computed)return!0;if(ge(s))return this.logDiagnostic(e[a-1]?.property.loc??e[a].object.loc,{code:d.NotADictionary,data:{identifier:s.name}}),!0;let u=this.extractAndValidatePropertyName(e[a].property);if(!u)return!0;if(!s.properties||s.properties.length===0)return this.logDiagnostic(e[a].property.loc,{code:d.UnknownPropertyIdentifier,data:{identifier:u},severity:E.Warning}),!0;let c=s.properties.find(l=>l.name.toLowerCase()===u);if(!c){let l=s.properties.reduce((C,F)=>`${C}${C?" | ":""}${F.name.split(".").pop()}`,"");return this.logDiagnostic(e[a].property.loc,{code:d.InvalidPropertyIdentifier,data:{list:l}}),!0}s=c}return!0}recordVariableIdentifier(e,i){this.logReservedKeywordsConflict(e),this.logProfileOrApiConflict(e);let r=e.name.toLowerCase(),n=this.getIdentifierInfo(r),s=this._isInFunctionScope&&n?.scope==="function",a=!this._isInFunctionScope&&n?.scope==="script";(s||a)&&this.logDiagnostic(e.loc,{code:d.AlreadyDefined,data:{identifier:e.name},severity:E.Warning});let u=i.inBlock??this._isInBlock,{initialized:c}=i;if(!n||this._isInFunctionScope&&n.scope!=="function"){let l=this._isInFunctionScope?"function":u?"block":"script";n={node:e,used:!1,initialized:c,scope:l}}else n.node=e,n.used=!1,n.initialized=c;return n.scope==="block"&&!u&&(n.scope="script",this.logDiagnostic(e.loc,{code:d.AlreadyDefined,data:{identifier:e.name},severity:E.Warning})),this.setIdentiferInfo(r,n),!1}recordImportIdentifier(e){let i=e.specifiers[0].local;this.logProfileOrApiConflict(i);let r=i.name.toLowerCase(),n=this.getIdentifierInfo(r);n?.scope&&this.logDiagnostic(e.specifiers[0].local.loc,{code:d.AlreadyDefined,data:{identifier:e.specifiers[0].local.name},severity:E.Warning}),n={node:e.specifiers[0].local,used:!1,...n,scope:"script",initialized:!0},this.setIdentiferInfo(r,n)}recordFunctionIdentifier(e){this.logProfileOrApiConflict(e.id);let i=e.id.name.toLowerCase(),r=this.getIdentifierInfo(i);r?.scope&&this.logDiagnostic(e.id.loc,{code:d.AlreadyDefined,data:{identifier:e.id.name},severity:E.Warning}),r={node:e.id,used:!1,...r,scope:"script",initialized:!0},this.setIdentiferInfo(i,r)}recordParamAsIdentifier(e){return this.recordVariableIdentifier(e,{initialized:!0})}diagnoseIdentifiers(){(this._functionScopeIdentifiers??this._scriptScopeIdentifiers).forEach(e=>{e.used?e.initialized||this.logDiagnostic(e.node.loc,{code:d.DefinedNeverAssigned,data:{identifier:e.node.name},severity:E.Warning}):this.logDiagnostic(e.node.loc,{code:e.initialized?d.AssignedNeverUsed:d.DefinedNeverUsed,data:{identifier:e.node.name},severity:E.Warning})})}};function Fi(t){return t.name==="ParsingError"}function K(t){return H(t)||A(t)&&!t.body.length}function yi(t,e){let{min:i,max:r}=t.overloads.reduce((n,s)=>{let{min:a,max:u}=s.parametersInfo;return n.min>=0&&(n.min=Math.min(a,n.min)),n.max>=0&&(n.max=u<0?u:Math.max(u,n.max)),n},{min:Number.POSITIVE_INFINITY,max:0});return e<i?i>0?{code:d.NotEnoughArguments,data:{min:i}}:{code:d.NoArgumentExpected}:r>=0&&e>r?{code:d.TooManyArguments,data:{max:r}}:null}var Ai=/\B@\w+/gu;function Pi(t=""){return Array.from(t.matchAll(Ai),e=>e[0].slice(1))}var It=class{constructor(){this.languageOptions={}}configure(e={}){this.languageOptions=e,this.apiService=new pe(this.languageOptions)}async doValidation(e,i){if(!this.apiService)return[];let r=await this.apiService.getApiDatabase(i),{profile:{variables:n=[]}={}}=i,{diagnostics:s}=new De(r,n).validateScript(e.getText());return s}async doComplete(e,i,r){if(!this.apiService)return{isIncomplete:!1,items:[]};let n=await this.apiService.getApiDatabase(r);return St(e,i,n,r)}async getApiLibrary(e){return this.apiService?(await this.apiService.getApiDatabase(e)).categories:[]}};export{ht as ArcadeKeywords,It as ArcadeLanguageService,dt as ArcadeLiterals,mt as ArcadeReservedKeywords,ut as DiagnosticMessages,E as DiagnosticSeverity,d as ValidationDiagnosticCodes,qi as arcadeFormat,Gt as format,$e as isDictionaryVariable,ge as isValueVariable};
|
|
32
|
+
}`,insertTextMode:L.adjustIndentation,insertTextFormat:B.Snippet}];import{CompletionItemKind as lr,InsertTextFormat as pr,InsertTextMode as hr}from"vscode-languageserver-types";var ai=/\$\{(.*?)\}/gu;function T(t,e){return e?t.replace(ai,(i,r)=>e[r].toString()):t}var he=/[-[\]/{}()*+?.\\^$|]/gu;function oi(t,e){return t.line>e.end.line}function ui(t,e){return t.line<e.start.line}function ze(t,e){return!(ui(t,e)||oi(t,e)||t.line===e.start.line&&t.column<e.start.column||t.line===e.end.line&&t.column>e.end.column)}var x={None:0,Keywords:1,All:255,NoKeywords:254},N={identifiers:"a",profileVariables:"aa",constants:"ab",literals:"ab",functions:"ac",snippets:"b",keywords:"c"};function St(t,e,i,r={}){let n=t.getText({start:{line:0,character:0},end:e}),{tokens:s,errors:a=[]}=at(n,{loc:!0,tolerant:!0});if(a.length)return{isIncomplete:!1,items:[]};let u=s.at(s.length-1),c="",l=Ei(e);u?.type==="Identifier"&&ze(l,u.loc)&&(c=u.value,s.pop(),u=s[s.length-1]);let C={variables:r.profile?.variables??[],additionalCompletionItems:(r.snippets??[]).map(F=>({kind:me.Snippet,insertTextMode:bt.adjustIndentation,insertTextFormat:Pt.Snippet,...F})),apiDatabase:i};return u?.type==="Punctuator"&&u.value==="."?li(s,c,C):ci(s,c,l,C)}function ci(t,e,i,r){let n=di(t,i);if(n===x.None)return{isIncomplete:!1,items:[]};let s=Di(t),a=[],u=new RegExp(e.replaceAll(he,"\\$&"),"i");return s.forEach((c,l)=>{u.test(l)&&a.push({...c,sortText:N.identifiers})}),r.variables.forEach(c=>{u.test(c.name)&&c.completion&&a.push({...c.completion,sortText:N.profileVariables})}),yt(n)&&Ft.forEach(c=>{c.label.startsWith(e)&&a.push({...c,sortText:N.snippets})}),r.additionalCompletionItems.forEach(c=>{u.test(c.label)&&a.push({...c,sortText:N.snippets})}),yt(n)&&Et.forEach(c=>{u.test(c.label)&&a.push({...c,sortText:N.keywords})}),xt.forEach(c=>{u.test(c.label)&&a.push({...c,sortText:N.literals})}),r.apiDatabase.constantDefinitions.forEach((c,l)=>{c.type==="constant"&&c.disableDocumentation===!0||!u.test(l)||a.push({...c.completion,sortText:N.constants})}),r.apiDatabase.functionDefinitions.forEach((c,l)=>{u.test(l)&&c.overloads.forEach(C=>{C.disableDocumentation||a.push({...C.completion,sortText:N.functions})})}),{isIncomplete:!1,items:a}}function li(t,e,i){let r=[...t],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 u=pi(a,e,i);return u||(u=hi(a,e,s,i),u)?u:{isIncomplete:!1,items:[]}}function pi(t,e,i){if(t.length>1)return null;let r=i.apiDatabase.constantDefinitions.get(t[0]);if(!r)return null;if(r.type!=="namespace")return{isIncomplete:!1,items:[]};let n=[],s=new RegExp(e.replaceAll(he,"\\$&"),"i");return r.members.forEach(a=>{a.disableDocumentation===!0||!s.test(a.name)||n.push(a.completion)}),{isIncomplete:!1,items:n}}function hi(t,e,i,r){if(!r.variables.length||!t.length)return null;let n=t.shift(),s=r.variables;for(;n;){let l=s.find(C=>C.name.toLowerCase()===n);if(!ht(l))return null;s=l.properties??[],n=t.shift()}let a=[],u=new RegExp(e.replaceAll(he,"\\$&"),"i"),c=Fi(i.loc.start);return s.forEach(l=>{u.test(l.name)&&l.completion&&a.push(xi(c,l.completion))}),{isIncomplete:!1,items:a}}function yt(t){return(t&x.Keywords)===x.Keywords}function di(t,e){if(!t.length)return x.All;let i=t[t.length-1];switch(i.type){case"Identifier":return x.All;case"Keyword":return["return","in","else"].includes(i.value)?x.NoKeywords:x.None;case"Punctuator":return mi(t);case"Template":return i.value.endsWith("${")?x.NoKeywords:x.All;default:return ze(e,i.loc)?x.None:x.All}}function mi(t){let e=[...t],i=e.pop();if(!i)return x.All;if(i.type!=="Punctuator")return x.None;if(i.value!=="("&&i.value!==",")return x.All;if(i.value==="(")return At(e);let r=0;for(i=e.pop();i;){if(i.type==="Keyword")return x.None;if(i.type!=="Punctuator"){i=e.pop();continue}if(i.value===")"||i.value==="]"){r-=1,i=e.pop();continue}if(i.value==="["){if(r===0)return x.NoKeywords;r+=1,i=e.pop();continue}if(i.value==="("){if(r===0)return At(e);r+=1,i=e.pop();continue}i=e.pop()}return x.None}function At(t){let e=[...t],i=e.pop();return i?i.type==="Keyword"?i.value.toLowerCase()==="for"?x.All:x.NoKeywords:i.type!=="Identifier"?x.All:(i=e.pop(),i?.type==="Keyword"&&i.value.toLowerCase()==="function"?x.None:x.NoKeywords):x.All}var Re=class{constructor(e){this.tokens=e;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]}},de={parameterFormat:"(parameter) ${name}",variableFormat:"var ${name}",functionFormat:"function ${name} (${paramsDetail})"};function Di(t){let e=new Map;if(!t.length)return e;let i=new Re(t);for(;i.current;){if(i.current.type==="Keyword"){if(i.current.value.toLowerCase()==="var"){i.increment(),fi(i,e);continue}if(i.current.value.toLowerCase()==="function"){i.increment(),gi(i,e);continue}}i.increment()}return e}function fi(t,e){for(;t.current;){if(t.current.type!=="Identifier")return;let i=t.current.value,r=i.toLowerCase();e.set(r,{label:i,kind:me.Variable,detail:T(de.variableFormat,{name:i})});let n=t.increment();if(n?.type!=="Punctuator")return;if(n.value===","){t.increment();continue}if(n.value==="="){t.increment(),Ci(t);continue}}}function gi(t,e){for(;t.current;){if(t.current.type!=="Identifier")return;let i=t.current.value,r=i.toLowerCase(),n={label:i,kind:me.Function,detail:T(de.functionFormat,{name:i,paramsDetail:""}),insertText:`${i}()`,insertTextMode:bt.adjustIndentation,insertTextFormat:Pt.Snippet};e.set(r,n);let s=t.increment();if(!j(s,"("))return;s=t.increment();let a=[];for(;s&&!(s.type!=="Identifier"||(a.push(s.value),s=t.increment(),!j(s,",")));)s=t.increment();if(a.length){n.detail=T(de.functionFormat,{name:n.label,paramsDetail:a.join(", ")});let l=a.map((C,F)=>`\${${F+1}:${C}}`).join(", ");n.insertText=`${n.label}(${l})`}if(!j(s,")")||(s=t.increment(),!j(s,"{")))return;s=t.increment();let u=t.currentIndex,c=1;for(;s&&c>0;)j(s,"{")?c+=1:j(s,"}")&&(c-=1),s=t.increment();if(c===0)return;t.currentIndex=u,a.forEach(l=>{let C=l.toLowerCase();e.set(C,{label:l,kind:me.Variable,detail:T(de.parameterFormat,{name:l})})})}}function j(t,e){return t?.type==="Punctuator"&&t.value===e}function Ci(t){let e=0;for(;t.current;){if(t.current.type==="Keyword"){if(j(t.previous,".")){t.increment();continue}return}if(t.current.type==="Punctuator"&&t.current.value===";")return;if(t.current.type==="Template"&&t.current.value.startsWith("`")){e+=1,t.increment();continue}if(t.current.type==="Punctuator"&&["(","[","{"].includes(t.current.value)){e+=1,t.increment();continue}if(t.current.type==="Template"&&t.current.value.endsWith("`")){e-=1,t.increment();continue}if(t.current.type==="Punctuator"&&[")","]","}"].includes(t.current.value)){e-=1,t.increment();continue}if(!e&&t.current.type==="Punctuator"&&t.current.value===","){t.increment();return}t.increment()}}function xi(t,e){return e.insertText&&e.insertText.startsWith("[")&&(e.additionalTextEdits=[{newText:"",range:{start:{...t},end:{line:t.line,character:t.character+1}}}]),e}function Ei(t){return{line:t.line+1,column:t.character}}function Fi(t){return{line:t.line-1,character:t.column}}var De=class{constructor(e,i=[]){this._apiDefinitions=e;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;this.handleException=e=>{if(yi(e)){let{range:i,code:r,data:n}=e;this.logDiagnostic(i,{code:r,data:n})}else this.logDiagnostic({start:{line:1,column:0},end:{line:1,column:0}},{code:d.ExecutionError,data:{stack:e.stack??""}})};this.validateStatement=e=>{if(e)switch(e.type){case o.BlockStatement:e.body.forEach(this.validateStatement);return;case o.VariableDeclaration:e.declarations.forEach(i=>this.validateVariableDeclarator(i));return;case o.FunctionDeclaration:this.validateFunctionDeclaration(e);return;case o.ExportNamedDeclaration:this.validateExportDeclaration(e);return;case o.ImportDeclaration:this.validateImportDeclaration(e);return;case o.WhileStatement:this.validateWhileStatement(e);return;case o.ForStatement:this.validateForStatement(e);return;case o.ForInStatement:this.validateForInStatement(e);return;case o.IfStatement:this.validateIfStatement(e);return;case o.ReturnStatement:this.validateExpression(e.argument);return;case o.ExpressionStatement:this.validateExpression(e.expression);return;case o.BreakStatement:case o.ContinueStatement:case o.EmptyStatement:return}};this.validateExpression=e=>{if(e)switch(e.type){case o.AssignmentExpression:this.validateAssignmentExpression(e);return;case o.CallExpression:this.validateCallExpression(e);return;case o.Identifier:this.validateIdentifier(e);return;case o.Literal:this.validateLiteral(e);return;case o.ArrayExpression:e.elements.forEach(this.validateExpression);return;case o.ObjectExpression:this.validateObjectExpression(e);return;case o.UnaryExpression:this.validateUnaryExpression(e);return;case o.UpdateExpression:this.validateUpdateExpression(e);return;case o.BinaryExpression:case o.LogicalExpression:this.validateBinaryAndLogicalExpression(e);return;case o.MemberExpression:this.validateMemberExpression(e);return;case o.TemplateLiteral:e.expressions.forEach(this.validateExpression);return;default:return}}}validateScript(e){if(!e)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=Z(e,{tolerant:!0}),this.handleErrors(i.errors),i.body.forEach(this.validateStatement),this.diagnoseIdentifiers(),this._undeclaredIdentifiersInFunctions.size>0&&this._undeclaredIdentifiersInFunctions.forEach(r=>{for(let n of r)this.logDiagnostic(n.node.loc,{code:d.NotDefined,data:{identifier:n.node.name}})})}catch(r){this.handleException(r)}return{diagnostics:this._diagnostics,program:i}}disableRecordIdentifierAssignment(e,i){let r=this._assignmentValidationMode;this._assignmentValidationMode="disabled",e.call(this,i),this._assignmentValidationMode=r}inBlock(e,i){let r=this._isInBlock;this._isInBlock=!0,e.call(this,i),this._isInBlock=r}get _isInFunctionScope(){return!!this._functionScopeIdentifiers}inFunctionScope(e){this._functionScopeIdentifiers=new Map,e.call(this),this.diagnoseIdentifiers(),this._functionScopeIdentifiers=void 0}logDiagnostic(e,i){let r={severity:E.Error,...i,message:T(ot[i.code],i.data),range:{start:{line:e.start.line-1,character:e.start.column},end:{line:e.end.line-1,character:e.end.column}}};this._diagnostics.push(r)}handleErrors(e){(e??[]).forEach(this.handleException)}getIdentifierInfo(e){return this._functionScopeIdentifiers?.get(e)??this._scriptScopeIdentifiers.get(e)}setIdentiferInfo(e,i){if(this._functionScopeIdentifiers){this._functionScopeIdentifiers.set(e,i);return}this._scriptScopeIdentifiers.set(e,i),this._undeclaredIdentifiersInFunctions.has(e)&&(this._undeclaredIdentifiersInFunctions.delete(e),i.used=!0)}isProfileVariable(e){return this._profileVariables.some(i=>i.name.toLowerCase()===e)}isApiConstant(e){return!!this._apiDefinitions?.constantDefinitions.get(e)}isApiFunction(e){return!!this._apiDefinitions?.functionDefinitions.get(e)}isApiItem(e){return this.isApiConstant(e)||this.isApiFunction(e)}validateVariableDeclarator(e){this.validateExpression(e.init),this.recordVariableIdentifier(e.id,{initialized:!!e.init})}validateFunctionDeclaration(e){this.recordFunctionIdentifier(e),this.inFunctionScope(()=>{e.params.forEach(i=>this.recordParamAsIdentifier(i)),K(e.body)&&this.logDiagnostic(e.body.loc,{code:d.UnexpectedEmptyFunction,data:{identifier:e.id.name},severity:E.Warning}),this.validateStatement(e.body)})}validateExportDeclaration(e){this.validateStatement(e.declaration)}validateImportDeclaration(e){this.recordImportIdentifier(e)}validateForStatement(e){z(e.init)?this.inBlock(this.validateStatement,e.init):this.validateExpression(e.init),this.validateExpression(e.update),this.validateExpression(e.test),K(e.body)&&this.logDiagnostic(e.body.loc,{code:d.EmptyBlockStatement,severity:E.Warning}),this.inBlock(this.validateStatement,e.body)}validateWhileStatement(e){this.validateExpression(e.test),K(e.body)&&this.logDiagnostic(e.body.loc,{code:d.EmptyBlockStatement,severity:E.Warning}),this.inBlock(this.validateStatement,e.body)}validateForInStatement(e){P(e.left)?this.validateExpression(e.left):this.recordVariableIdentifier(e.left.declarations[0].id,{initialized:!0,inBlock:!0}),this.validateExpression(e.right),K(e.body)&&this.logDiagnostic(e.body.loc,{code:d.EmptyBlockStatement,severity:E.Warning}),this.validateStatement(e.body)}validateIfStatement(e){this.validateExpression(e.test),K(e.consequent)&&this.logDiagnostic(e.consequent.loc,{code:d.EmptyBlockStatement,severity:E.Warning}),e.alternate&&K(e.alternate)&&this.logDiagnostic(e.alternate.loc,{code:d.EmptyBlockStatement,severity:E.Warning}),this.inBlock(this.validateStatement,e.consequent),this.inBlock(this.validateStatement,e.alternate)}validateAssignmentExpression(e){let i=this._identifierBeingAssigned,r=this._assignmentValidationMode;P(e.left)&&(this._identifierBeingAssigned=e.left.name.toLowerCase(),this._assignmentValidationMode="left"),this.validateExpression(e.left),P(e.left)&&(this._assignmentValidationMode="right"),this.validateExpression(e.right),this._identifierBeingAssigned=i,this._assignmentValidationMode=r}validateCallExpression(e){let i=this._isInCallExpression;if(this._isInCallExpression=!0,this.validateExpression(e.callee),P(e.callee)){let r=e.callee.name.toLowerCase(),n=this.getIdentifierInfo(r),s=this._apiDefinitions?.functionDefinitions.get(r);if(!n&&s){let a=Ai(s,e.arguments.length);a&&this.logDiagnostic(e.loc,a)}}e.arguments.forEach(this.validateExpression),this._isInCallExpression=i}validateIdentifier(e){let i=e.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(e.loc,{code:d.InvalidApiFunctionUsage,data:{identifier:e.name}});return}if(this._isInFunctionScope){let n=this._undeclaredIdentifiersInFunctions.get(i);n||(n=[],this._undeclaredIdentifiersInFunctions.set(i,n)),n.push({node:e,identifier:i});return}this.logDiagnostic(e.loc,{code:d.NotDefined,data:{identifier:e.name}})}}validateLiteral(e){bi(e.raw).forEach(i=>{let r=this.getIdentifierInfo(i.toLowerCase());r&&(r.used=!0)})}logProfileOrApiConflict(e){let i=e.name.toLowerCase(),r=this.isProfileVariable(i),n=this.isApiItem(i);!r&&!n||this.logDiagnostic(e.loc,{code:r?d.ProfileVariablesConflict:d.ApiConflict,severity:E.Warning,data:{identifier:e.name}})}logReservedKeywordsConflict(e){let i=e.name.toLowerCase();Ct.includes(i)&&this.logDiagnostic(e.loc,{code:d.ReservedKeyword,severity:E.Warning,data:{identifier:e.name}})}validateObjectExpression(e){e.properties.forEach(i=>{this.validateExpression(i.value)})}validateUnaryExpression(e){this.validateExpression(e.argument)}validateUpdateExpression(e){this.validateExpression(e.argument)}validateBinaryAndLogicalExpression(e){this.validateExpression(e.left),this.validateExpression(e.right)}validateMemberExpression(e){let i=this.flattenMemberExpressionAndValidate(e),r=i[0].object;this.disableRecordIdentifierAssignment(this.validateExpression,r),P(r)&&(this.getIdentifierInfo(r.name.toLowerCase())||this.validateMemberExpressionWithProfile(i)||this.validateConstantMemberExpression(i))}flattenMemberExpressionAndValidate(e){switch(e.type){case o.MemberExpression:return(!P(e.property)||e.computed)&&this.validateExpression(e.property),[...this.flattenMemberExpressionAndValidate(e.object),e];default:return[]}}extractAndValidatePropertyName(e){switch(e.type){case o.Identifier:return e.name.toLowerCase();case o.Literal:return typeof e.value!="string"?(this.logDiagnostic(e.loc,{code:d.UnexpectedPropertyIdentifier}),null):e.value.toLowerCase();default:return this.logDiagnostic(e.loc,{code:d.UnexpectedPropertyIdentifier}),null}}validateConstantMemberExpression(e){let i=e[0];if(!P(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:d.NotADictionary,data:{identifier:r}}),!0;let s=this.extractAndValidatePropertyName(i.property);if(!s)return!0;if(!n.members.some(a=>a.name.toLowerCase()===s)){let a=n.members.reduce((u,c)=>`${u}${u?" | ":""}${c.completion.label.split(".").pop()}`,"");this.logDiagnostic(i.property.loc,{code:d.InvalidConstantIdentifier,data:{list:a}})}return e.length>1&&this.logDiagnostic(e[1].property.loc,{code:d.UnexpectedPropertyIdentifier}),!0}validateMemberExpressionWithProfile(e){let i=e[0];if(i.object.type!==o.Identifier)return!1;let r=i.object.name.toLowerCase(),n=this._profileVariables.find(a=>a.name.toLowerCase()===r);if(!n)return!1;if(Be(n))return this.logDiagnostic(i.object.loc,{code:d.NotADictionary,data:{identifier:n.name}}),!0;if(this._identifierBeingAssigned===r)return this.logDiagnostic(i.loc,{code:d.ProfileVariablesAreImmutable}),!0;let s=n;for(let a=0;a<e.length;a++){if(e[a].computed)return!0;if(Be(s))return this.logDiagnostic(e[a-1]?.property.loc??e[a].object.loc,{code:d.NotADictionary,data:{identifier:s.name}}),!0;let u=this.extractAndValidatePropertyName(e[a].property);if(!u)return!0;if(!s.properties||s.properties.length===0)return this.logDiagnostic(e[a].property.loc,{code:d.UnknownPropertyIdentifier,data:{identifier:u},severity:E.Warning}),!0;let c=s.properties.find(l=>l.name.toLowerCase()===u);if(!c){let l=s.properties.reduce((C,F)=>`${C}${C?" | ":""}${F.name.split(".").pop()}`,"");return this.logDiagnostic(e[a].property.loc,{code:d.InvalidPropertyIdentifier,data:{list:l}}),!0}s=c}return!0}recordVariableIdentifier(e,i){this.logReservedKeywordsConflict(e),this.logProfileOrApiConflict(e);let r=e.name.toLowerCase(),n=this.getIdentifierInfo(r),s=this._isInFunctionScope&&n?.scope==="function",a=!this._isInFunctionScope&&n?.scope==="script";(s||a)&&this.logDiagnostic(e.loc,{code:d.AlreadyDefined,data:{identifier:e.name},severity:E.Warning});let u=i.inBlock??this._isInBlock,{initialized:c}=i;if(!n||this._isInFunctionScope&&n.scope!=="function"){let l=this._isInFunctionScope?"function":u?"block":"script";n={node:e,used:!1,initialized:c,scope:l}}else n.node=e,n.used=!1,n.initialized=c;return n.scope==="block"&&!u&&(n.scope="script",this.logDiagnostic(e.loc,{code:d.AlreadyDefined,data:{identifier:e.name},severity:E.Warning})),this.setIdentiferInfo(r,n),!1}recordImportIdentifier(e){let i=e.specifiers[0].local;this.logProfileOrApiConflict(i);let r=i.name.toLowerCase(),n=this.getIdentifierInfo(r);n?.scope&&this.logDiagnostic(e.specifiers[0].local.loc,{code:d.AlreadyDefined,data:{identifier:e.specifiers[0].local.name},severity:E.Warning}),n={node:e.specifiers[0].local,used:!1,...n,scope:"script",initialized:!0},this.setIdentiferInfo(r,n)}recordFunctionIdentifier(e){this.logProfileOrApiConflict(e.id);let i=e.id.name.toLowerCase(),r=this.getIdentifierInfo(i);r?.scope&&this.logDiagnostic(e.id.loc,{code:d.AlreadyDefined,data:{identifier:e.id.name},severity:E.Warning}),r={node:e.id,used:!1,...r,scope:"script",initialized:!0},this.setIdentiferInfo(i,r)}recordParamAsIdentifier(e){return this.recordVariableIdentifier(e,{initialized:!0})}diagnoseIdentifiers(){(this._functionScopeIdentifiers??this._scriptScopeIdentifiers).forEach(e=>{e.used?e.initialized||this.logDiagnostic(e.node.loc,{code:d.DefinedNeverAssigned,data:{identifier:e.node.name},severity:E.Warning}):this.logDiagnostic(e.node.loc,{code:e.initialized?d.AssignedNeverUsed:d.DefinedNeverUsed,data:{identifier:e.node.name},severity:E.Warning})})}};function yi(t){return t.name==="ParsingError"}function K(t){return H(t)||A(t)&&!t.body.length}function Ai(t,e){let{min:i,max:r}=t.overloads.reduce((n,s)=>{let{min:a,max:u}=s.parametersInfo;return n.min>=0&&(n.min=Math.min(a,n.min)),n.max>=0&&(n.max=u<0?u:Math.max(u,n.max)),n},{min:Number.POSITIVE_INFINITY,max:0});return e<i?i>0?{code:d.NotEnoughArguments,data:{min:i}}:{code:d.NoArgumentExpected}:r>=0&&e>r?{code:d.TooManyArguments,data:{max:r}}:null}var Pi=/\B@\w+/gu;function bi(t=""){return Array.from(t.matchAll(Pi),e=>e[0].slice(1))}var It=class{constructor(){this.languageOptions={}}configure(e={}){this.languageOptions=e,this.apiService=new re(this.languageOptions)}async doValidation(e,i){if(!this.apiService)return[];let r=await this.apiService.getApiDatabase(i),{profile:{variables:n=[]}={}}=i,{diagnostics:s}=new De(r,n).validateScript(e.getText());return s}async doComplete(e,i,r){if(!this.apiService)return{isIncomplete:!1,items:[]};let n=await this.apiService.getApiDatabase(r);return St(e,i,n,r)}async getApiLibrary(e){return this.apiService?(await this.apiService.getApiDatabase(e)).categories:[]}};export{re as ArcadeApiService,ft as ArcadeKeywords,It as ArcadeLanguageService,gt as ArcadeLiterals,Ct as ArcadeReservedKeywords,ot as DiagnosticMessages,E as DiagnosticSeverity,d as ValidationDiagnosticCodes,Yi as arcadeFormat,si as format};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arcgis/arcade-languageservice",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.31.0-next.10",
|
|
4
4
|
"description": "Arcade Language Service",
|
|
5
5
|
"homepage": "https://developers.arcgis.com/javascript/latest/",
|
|
6
6
|
"type": "module",
|
|
@@ -18,34 +18,37 @@
|
|
|
18
18
|
"scripts": {
|
|
19
19
|
"build": "yarn build:esm --minify",
|
|
20
20
|
"build:dev": "yarn build:esm --sourcemap",
|
|
21
|
-
"build:esm": "
|
|
21
|
+
"build:esm": "tsup --silent --onSuccess \"yarn util:copy-assets\"",
|
|
22
22
|
"clean": "rimraf ./node_modules ./turbo ./dist",
|
|
23
23
|
"util:copy-assets": "yarn tsx ./scripts/copy-assets",
|
|
24
24
|
"test": "jest"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
+
"@swc/core": "^1.5.6",
|
|
28
|
+
"@swc/jest": "^0.2.36",
|
|
27
29
|
"vscode-languageserver-textdocument": "^1.0.11",
|
|
28
30
|
"vscode-languageserver-types": "^3.17.5"
|
|
29
31
|
},
|
|
30
32
|
"devDependencies": {
|
|
31
|
-
"@arcgis/arcade-parser": "4.
|
|
33
|
+
"@arcgis/arcade-parser": "4.31.0-next.10",
|
|
32
34
|
"@arcgis/arcade-sdk": "~1.26.5",
|
|
33
35
|
"@arcgis/arcade-tests": "^1.20.0",
|
|
34
|
-
"@arcgis/components-plugins": "4.
|
|
35
|
-
"@arcgis/
|
|
36
|
+
"@arcgis/components-plugins": "4.31.0-next.10",
|
|
37
|
+
"@arcgis/eslint-config": "4.31.0-next.10",
|
|
38
|
+
"@arcgis/languages-api-utils": "4.31.0-next.10",
|
|
39
|
+
"@arcgis/typescript-config": "4.31.0-next.10",
|
|
40
|
+
"@swc/core": "^1.5.6",
|
|
41
|
+
"@swc/jest": "^0.2.36",
|
|
36
42
|
"@types/jest": "^29.5.0",
|
|
37
43
|
"@types/node": "^20.2.5",
|
|
38
44
|
"eslint": "^8.55.0",
|
|
39
45
|
"jest": "^29.5.0",
|
|
40
|
-
"jest-esm-transformer-2": "^1.0.0",
|
|
41
|
-
"jest-html-reporter": "^3.10.1",
|
|
42
|
-
"jest-silent-reporter": "^0.5.0",
|
|
43
46
|
"resolve-pkg": "^2.0.0",
|
|
44
47
|
"rimraf": "^5.0.0",
|
|
45
48
|
"ts-jest": "^29.1.1",
|
|
46
49
|
"tsup": "^8.0.1",
|
|
47
50
|
"tsx": "^4.7.0",
|
|
48
|
-
"typescript": "~5.
|
|
51
|
+
"typescript": "~5.4.0"
|
|
49
52
|
},
|
|
50
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "9da75874fced6f0633cf2052218547d2c4627ee2"
|
|
51
54
|
}
|