@theotherwillembotha/node-red-plugincore 0.0.52 → 0.0.53

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.
@@ -0,0 +1,1281 @@
1
+ if ((window as any).ScriptEditorLanguageManager === undefined) {
2
+
3
+ class ScriptEditorLanguageManager {
4
+
5
+ public static counter:number = 0;
6
+
7
+ public static async createLanguage(monaco:any, template:string):Promise<ScriptEditorLanguage>{
8
+ // generate a language name.
9
+ let langName = "js_variant_" + ScriptEditorLanguageManager.counter;
10
+ ScriptEditorLanguageManager.counter++;
11
+
12
+ // Get the JavaScript language configuration
13
+ let jsLangConfig = monaco.languages.getLanguages().find((lang:{ id:string }) => lang.id === 'javascript');
14
+
15
+ let newLang = jsLangConfig.loader().then((implementation:{conf:any,language:any}) => {
16
+
17
+ // Register your custom language
18
+ monaco.languages.register({ id: langName });
19
+ monaco.languages.setLanguageConfiguration(langName, implementation.conf);
20
+ monaco.languages.setMonarchTokensProvider(langName, implementation.language);
21
+
22
+ // Configure to allow top-level returns (function body context)
23
+ monaco.languages.typescript.javascriptDefaults.setDiagnosticsOptions({
24
+ noSemanticValidation: false,
25
+ noSyntaxValidation: false,
26
+ diagnosticCodesToIgnore: [1108] // Allow return outside function
27
+ });
28
+
29
+ monaco.languages.typescript.javascriptDefaults.setCompilerOptions({
30
+ target: monaco.languages.typescript.ScriptTarget.ESNext,
31
+ allowNonTsExtensions: true,
32
+ allowJs: true,
33
+ checkJs: true,
34
+ noLib: false
35
+ });
36
+
37
+ // Debounced diagnostics update
38
+ let diagnosticTimeout:NodeJS.Timeout;
39
+ monaco.editor.onDidCreateModel((model:any) => {
40
+ if (model.getLanguageId() === langName) {
41
+ updateDiagnostics(model);
42
+
43
+ model.onDidChangeContent(() => {
44
+ clearTimeout(diagnosticTimeout);
45
+ diagnosticTimeout = setTimeout(() => {
46
+ updateDiagnostics(model);
47
+ }, 500);
48
+ });
49
+ }
50
+ });
51
+
52
+ function convertSeverity(category:number) {
53
+ switch (category) {
54
+ case 1: return monaco.MarkerSeverity.Error;
55
+ case 0: return monaco.MarkerSeverity.Warning;
56
+ case 2: return monaco.MarkerSeverity.Info;
57
+ case 3: return monaco.MarkerSeverity.Hint;
58
+ default: return monaco.MarkerSeverity.Error;
59
+ }
60
+ }
61
+
62
+ function flattenDiagnosticMessageText(messageText:any) {
63
+ if (typeof messageText === 'string') {
64
+ return messageText;
65
+ }
66
+
67
+ let result = messageText.messageText;
68
+ if (messageText.next) {
69
+ for (const child of messageText.next) {
70
+ result += '\n' + flattenDiagnosticMessageText(child);
71
+ }
72
+ }
73
+ return result;
74
+ }
75
+
76
+
77
+ function convertKind(tsKind:string) {
78
+ const kindString = tsKind;
79
+
80
+ // Map TypeScript ScriptElementKind to Monaco CompletionItemKind
81
+ const kindMap:{[key:string]:number} = {
82
+ 'method': monaco.languages.CompletionItemKind.Method,
83
+ 'function': monaco.languages.CompletionItemKind.Function,
84
+ 'constructor': monaco.languages.CompletionItemKind.Constructor,
85
+ 'field': monaco.languages.CompletionItemKind.Field,
86
+ 'variable': monaco.languages.CompletionItemKind.Variable,
87
+ 'class': monaco.languages.CompletionItemKind.Class,
88
+ 'interface': monaco.languages.CompletionItemKind.Interface,
89
+ 'module': monaco.languages.CompletionItemKind.Module,
90
+ 'property': monaco.languages.CompletionItemKind.Property,
91
+ 'unit': monaco.languages.CompletionItemKind.Unit,
92
+ 'value': monaco.languages.CompletionItemKind.Value,
93
+ 'enum': monaco.languages.CompletionItemKind.Enum,
94
+ 'keyword': monaco.languages.CompletionItemKind.Keyword,
95
+ 'snippet': monaco.languages.CompletionItemKind.Snippet,
96
+ 'text': monaco.languages.CompletionItemKind.Text,
97
+ 'color': monaco.languages.CompletionItemKind.Color,
98
+ 'file': monaco.languages.CompletionItemKind.File,
99
+ 'reference': monaco.languages.CompletionItemKind.Reference,
100
+ 'folder': monaco.languages.CompletionItemKind.Folder,
101
+ 'enum member': monaco.languages.CompletionItemKind.EnumMember,
102
+ 'constant': monaco.languages.CompletionItemKind.Constant,
103
+ 'struct': monaco.languages.CompletionItemKind.Struct,
104
+ 'event': monaco.languages.CompletionItemKind.Event,
105
+ 'operator': monaco.languages.CompletionItemKind.Operator,
106
+ 'type parameter': monaco.languages.CompletionItemKind.TypeParameter,
107
+ 'var': monaco.languages.CompletionItemKind.Variable,
108
+ 'const': monaco.languages.CompletionItemKind.Variable,
109
+ 'let': monaco.languages.CompletionItemKind.Variable
110
+ };
111
+
112
+ return kindMap[kindString] || monaco.languages.CompletionItemKind.Property;
113
+ }
114
+
115
+ // Filter function with duplicate handling
116
+ function filterBrowserAPIsWithDuplicateHandling(suggestions:any) {
117
+ // Count occurrences of each "label:kind" combination
118
+ const occurrenceCounts = new Map();
119
+ suggestions.forEach((s:any) => {
120
+ const key = `${s.label}:${s.kindString}`;
121
+ occurrenceCounts.set(key, (occurrenceCounts.get(key) || 0) + 1);
122
+ });
123
+
124
+ // Track how many of each browser API we've filtered
125
+ const filteredCounts = new Map();
126
+
127
+ // Filter suggestions
128
+ const filtered = suggestions.filter((s:any) => {
129
+ const key = `${s.label}:${s.kindString}`;
130
+
131
+ // If this is NOT a browser API, keep it
132
+ if (!BROWSER_API_SET.has(key)) {
133
+ return true;
134
+ }
135
+
136
+ // It IS a browser API
137
+ const totalCount = occurrenceCounts.get(key) || 0;
138
+ const alreadyFiltered = filteredCounts.get(key) || 0;
139
+
140
+ // If there are duplicates (user defined something with same name/kind)
141
+ if (totalCount > 1 && alreadyFiltered < totalCount - 1) {
142
+ // Filter this one (it's the browser API)
143
+ filteredCounts.set(key, alreadyFiltered + 1);
144
+ return false;
145
+ }
146
+
147
+ // If it's the last one, keep it (it's the user-defined one)
148
+ if (totalCount > 1 && alreadyFiltered === totalCount - 1) {
149
+ return true;
150
+ }
151
+
152
+ // No duplicates, filter the browser API
153
+ return false;
154
+ });
155
+
156
+ return filtered;
157
+ }
158
+
159
+ // Helper function to format documentation from TypeScript details
160
+ function formatDocumentation(details:any) {
161
+ let documentation = '';
162
+
163
+ // Add the display parts (type signature)
164
+ if (details.displayParts) {
165
+ documentation += details.displayParts.map((p:any) => p.text).join('');
166
+ documentation += '\n\n';
167
+ }
168
+
169
+ // Add JSDoc documentation
170
+ if (details.documentation) {
171
+ documentation += details.documentation.map((d:any) => d.text).join('');
172
+ }
173
+
174
+ // Add JSDoc tags
175
+ if (details.tags) {
176
+ details.tags.forEach((tag:any) => {
177
+ documentation += `\n\n@${tag.name}`;
178
+ if (tag.text) {
179
+ documentation += ' ' + tag.text.map((t:any) => t.text).join('');
180
+ }
181
+ });
182
+ }
183
+
184
+ return documentation;
185
+ }
186
+
187
+ // Update diagnostics function
188
+ async function updateDiagnostics(model:any) {
189
+ const script = model.getValue();
190
+
191
+ // Wrap the user's code
192
+ let wrappedCode = template.replace("${script}", script);
193
+
194
+ // Create temporary JavaScript model with wrapped code
195
+ const jsModel = monaco.editor.createModel(wrappedCode, 'javascript');
196
+
197
+ try {
198
+ const getWorker = await monaco.languages.typescript.getJavaScriptWorker();
199
+ const client = await getWorker(jsModel.uri);
200
+
201
+ const syntacticDiagnostics = await client.getSyntacticDiagnostics(jsModel.uri.toString());
202
+ const semanticDiagnostics = await client.getSemanticDiagnostics(jsModel.uri.toString());
203
+
204
+ const allDiagnostics = [...syntacticDiagnostics, ...semanticDiagnostics];
205
+
206
+ // Calculate where user code starts in wrapped version
207
+ const wrapperPrefix = wrappedCode.substring(0, wrappedCode.indexOf(script));
208
+ const wrapperOffset = wrapperPrefix.length;
209
+
210
+ // Filter and adjust diagnostics to only show those in user's code
211
+ const markers = allDiagnostics
212
+ .filter(diagnostic => {
213
+ // Only include diagnostics within the user's code range
214
+ return diagnostic.start >= wrapperOffset && diagnostic.start < wrapperOffset + script.length;
215
+ })
216
+ .map(diagnostic => {
217
+ // Adjust positions to map back to the user's editor
218
+ const adjustedStart = diagnostic.start - wrapperOffset;
219
+ const adjustedEnd = adjustedStart + diagnostic.length;
220
+
221
+ const start = model.getPositionAt(adjustedStart);
222
+ const end = model.getPositionAt(adjustedEnd);
223
+
224
+ return {
225
+ severity: convertSeverity(diagnostic.category),
226
+ startLineNumber: start.lineNumber,
227
+ startColumn: start.column,
228
+ endLineNumber: end.lineNumber,
229
+ endColumn: end.column,
230
+ message: flattenDiagnosticMessageText(diagnostic.messageText),
231
+ code: diagnostic.code?.toString()
232
+ };
233
+ });
234
+
235
+ monaco.editor.setModelMarkers(model, langName, markers);
236
+
237
+ }
238
+ catch (error) {
239
+ console.error('Error getting diagnostics:', error);
240
+ }
241
+ finally {
242
+ jsModel.dispose();
243
+ }
244
+ }
245
+
246
+ // Register completion provider
247
+ monaco.languages.registerCompletionItemProvider(langName, {triggerCharacters: ['.'], async provideCompletionItems(model:any, position:any) {
248
+ const word = model.getWordUntilPosition(position);
249
+ const range = {
250
+ startLineNumber: position.lineNumber,
251
+ endLineNumber: position.lineNumber,
252
+ startColumn: word.startColumn,
253
+ endColumn: word.endColumn
254
+ };
255
+
256
+ const script = model.getValue();
257
+
258
+ // Wrap the user's code
259
+ let wrappedCode = template.replace("${script}", script);
260
+ const wrapperPrefix = wrappedCode.substring(0, wrappedCode.indexOf(script));
261
+ const userOffset = model.getOffsetAt(position);
262
+ const wrappedOffset = wrapperPrefix.length + userOffset;
263
+ const jsModel = monaco.editor.createModel(wrappedCode, 'javascript');
264
+
265
+ try {
266
+ const getWorker = await monaco.languages.typescript.getJavaScriptWorker();
267
+ const client = await getWorker(jsModel.uri);
268
+
269
+ const completions = await client.getCompletionsAtPosition(
270
+ jsModel.uri.toString(),
271
+ wrappedOffset
272
+ );
273
+
274
+ let jsCompletionSuggestions = [];
275
+ if (completions && completions.entries) {
276
+
277
+ const detailPromises = completions.entries.map(async (suggestion:any) => {
278
+
279
+ const details = await client.getCompletionEntryDetails(
280
+ jsModel.uri.toString(),
281
+ wrappedOffset,
282
+ suggestion.name
283
+ );
284
+
285
+ return {
286
+ label: suggestion.name,
287
+ kind: convertKind(suggestion.kind),
288
+ insertText: suggestion.name,
289
+ range: range,
290
+ sortText: suggestion.sortText,
291
+ kindString: suggestion.kind,
292
+
293
+ // Add documentation from details
294
+ documentation: details
295
+ ? { value: formatDocumentation(details) }
296
+ : undefined,
297
+ detail: details?.displayParts
298
+ ? details.displayParts.map((p:any) => p.text).join('')
299
+ : undefined
300
+ };
301
+ });
302
+
303
+ const allSuggestions = await Promise.all(detailPromises);
304
+ jsCompletionSuggestions = filterBrowserAPIsWithDuplicateHandling(allSuggestions);
305
+ }
306
+
307
+ jsModel.dispose();
308
+
309
+ // Add your custom suggestions
310
+ const customSuggestions:any[] = [
311
+ // {
312
+ // label: 'myCustomFunction',
313
+ // kind: monaco.languages.CompletionItemKind.Function,
314
+ // insertText: 'myCustomFunction(${1:param})',
315
+ // insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
316
+ // documentation: 'My custom function',
317
+ // range: range
318
+ // }
319
+ ];
320
+
321
+ return {
322
+ suggestions: [...jsCompletionSuggestions, ...customSuggestions]
323
+ };
324
+ }
325
+ catch (error) {
326
+ console.error('Error getting completions:', error);
327
+ jsModel.dispose();
328
+ return { suggestions: [] };
329
+ }
330
+ }});
331
+
332
+ monaco.languages.registerHoverProvider(langName, { async provideHover(model:any, position:any) {
333
+ const word = model.getWordUntilPosition(position);
334
+ const range = {
335
+ startLineNumber: position.lineNumber,
336
+ endLineNumber: position.lineNumber,
337
+ startColumn: word.startColumn,
338
+ endColumn: word.endColumn
339
+ };
340
+
341
+ const script = model.getValue();
342
+
343
+ // Wrap the user's code
344
+ let wrappedCode = template.replace("${script}", script);
345
+ const wrapperPrefix = wrappedCode.substring(0, wrappedCode.indexOf(script));
346
+ const userOffset = model.getOffsetAt(position);
347
+ const wrappedOffset = wrapperPrefix.length + userOffset;
348
+ const jsModel = monaco.editor.createModel(wrappedCode, 'javascript');
349
+
350
+ try {
351
+ const getWorker = await monaco.languages.typescript.getJavaScriptWorker();
352
+ const client = await getWorker(jsModel.uri);
353
+
354
+ const quickInfo = await client.getQuickInfoAtPosition(
355
+ jsModel.uri.toString(),
356
+ wrappedOffset
357
+ );
358
+
359
+ jsModel.dispose();
360
+
361
+ if (!quickInfo) {
362
+ return null;
363
+ }
364
+
365
+ // Format the hover content
366
+ let hoverContent = '';
367
+
368
+ if (quickInfo.displayParts) {
369
+ hoverContent += '```typescript\n';
370
+ hoverContent += quickInfo.displayParts.map((p:any) => p.text).join('');
371
+ hoverContent += '\n```\n\n';
372
+ }
373
+
374
+ if (quickInfo.documentation) {
375
+ hoverContent += quickInfo.documentation.map((d:any) => d.text).join('');
376
+ }
377
+
378
+ if (quickInfo.tags) {
379
+ quickInfo.tags.forEach((tag:any) => {
380
+ hoverContent += `\n\n@${tag.name}`;
381
+ if (tag.text) {
382
+ hoverContent += ' ' + tag.text.map((t:any) => t.text).join('');
383
+ }
384
+ });
385
+ }
386
+
387
+ return {
388
+ contents: [
389
+ { value: hoverContent }
390
+ ]
391
+ };
392
+ }
393
+ catch (error) {
394
+ console.error('Error getting hover info:', error);
395
+ jsModel.dispose();
396
+ return null;
397
+ }
398
+ }})
399
+ });
400
+
401
+ let language = new ScriptEditorLanguage(langName);
402
+ return newLang.then(() => {
403
+ console.log("Initialized Language: ", langName);
404
+ return language;
405
+ });
406
+ }
407
+ }
408
+
409
+
410
+ class ScriptEditorLanguage {
411
+
412
+ private name: string;
413
+
414
+ constructor(name:string){
415
+ this.name = name;
416
+ }
417
+
418
+ getName(){
419
+ return this.name;
420
+ }
421
+ }
422
+
423
+
424
+ // This is the exact list of browser/built-in APIs from a blank script
425
+ // Generated once and hardcoded here
426
+ const BROWSER_API_FILTER = [
427
+ { label: "AbortController", kind: "var" },
428
+ { label: "AbortSignal", kind: "var" },
429
+ { label: "AbstractRange", kind: "var" },
430
+ { label: "ActiveXObject", kind: "var" },
431
+ { label: "addEventListener", kind: "function" },
432
+ { label: "AggregateError", kind: "var" },
433
+ { label: "alert", kind: "function" },
434
+ { label: "AnalyserNode", kind: "var" },
435
+ { label: "Animation", kind: "var" },
436
+ { label: "AnimationEffect", kind: "var" },
437
+ { label: "AnimationEvent", kind: "var" },
438
+ { label: "AnimationPlaybackEvent", kind: "var" },
439
+ { label: "AnimationTimeline", kind: "var" },
440
+ { label: "Array", kind: "var" },
441
+ { label: "ArrayBuffer", kind: "var" },
442
+ { label: "atob", kind: "function" },
443
+ { label: "Atomics", kind: "var" },
444
+ { label: "Attr", kind: "var" },
445
+ { label: "Audio", kind: "var" },
446
+ { label: "AudioBuffer", kind: "var" },
447
+ { label: "AudioBufferSourceNode", kind: "var" },
448
+ { label: "AudioContext", kind: "var" },
449
+ { label: "AudioDestinationNode", kind: "var" },
450
+ { label: "AudioListener", kind: "var" },
451
+ { label: "AudioNode", kind: "var" },
452
+ { label: "AudioParam", kind: "var" },
453
+ { label: "AudioParamMap", kind: "var" },
454
+ { label: "AudioScheduledSourceNode", kind: "var" },
455
+ { label: "AudioWorklet", kind: "var" },
456
+ { label: "AudioWorkletNode", kind: "var" },
457
+ { label: "AuthenticatorAssertionResponse", kind: "var" },
458
+ { label: "AuthenticatorAttestationResponse", kind: "var" },
459
+ { label: "AuthenticatorResponse", kind: "var" },
460
+ { label: "BarProp", kind: "var" },
461
+ { label: "BaseAudioContext", kind: "var" },
462
+ { label: "BeforeUnloadEvent", kind: "var" },
463
+ { label: "BigInt", kind: "var" },
464
+ { label: "BigInt64Array", kind: "var" },
465
+ { label: "BigUint64Array", kind: "var" },
466
+ { label: "BiquadFilterNode", kind: "var" },
467
+ { label: "Blob", kind: "var" },
468
+ { label: "BlobEvent", kind: "var" },
469
+ { label: "blur", kind: "function" },
470
+ { label: "Boolean", kind: "var" },
471
+ { label: "BroadcastChannel", kind: "var" },
472
+ { label: "btoa", kind: "function" },
473
+ { label: "ByteLengthQueuingStrategy", kind: "var" },
474
+ { label: "Cache", kind: "var" },
475
+ { label: "caches", kind: "var" },
476
+ { label: "CacheStorage", kind: "var" },
477
+ { label: "cancelAnimationFrame", kind: "function" },
478
+ { label: "cancelIdleCallback", kind: "function" },
479
+ { label: "CanvasCaptureMediaStreamTrack", kind: "var" },
480
+ { label: "CanvasGradient", kind: "var" },
481
+ { label: "CanvasPattern", kind: "var" },
482
+ { label: "CanvasRenderingContext2D", kind: "var" },
483
+ { label: "CDATASection", kind: "var" },
484
+ { label: "ChannelMergerNode", kind: "var" },
485
+ { label: "ChannelSplitterNode", kind: "var" },
486
+ { label: "CharacterData", kind: "var" },
487
+ { label: "clearInterval", kind: "function" },
488
+ { label: "clearTimeout", kind: "function" },
489
+ { label: "Clipboard", kind: "var" },
490
+ { label: "ClipboardEvent", kind: "var" },
491
+ { label: "ClipboardItem", kind: "var" },
492
+ { label: "close", kind: "function" },
493
+ { label: "closed", kind: "var" },
494
+ { label: "CloseEvent", kind: "var" },
495
+ { label: "Comment", kind: "var" },
496
+ { label: "CompositionEvent", kind: "var" },
497
+ { label: "confirm", kind: "function" },
498
+ { label: "console", kind: "var" },
499
+ { label: "ConstantSourceNode", kind: "var" },
500
+ { label: "ConvolverNode", kind: "var" },
501
+ { label: "CountQueuingStrategy", kind: "var" },
502
+ { label: "createImageBitmap", kind: "function" },
503
+ { label: "Credential", kind: "var" },
504
+ { label: "CredentialsContainer", kind: "var" },
505
+ { label: "crossOriginIsolated", kind: "var" },
506
+ { label: "crypto", kind: "var" },
507
+ { label: "Crypto", kind: "var" },
508
+ { label: "CryptoKey", kind: "var" },
509
+ { label: "CSS", kind: "module" },
510
+ { label: "CSSAnimation", kind: "var" },
511
+ { label: "CSSConditionRule", kind: "var" },
512
+ { label: "CSSContainerRule", kind: "var" },
513
+ { label: "CSSCounterStyleRule", kind: "var" },
514
+ { label: "CSSFontFaceRule", kind: "var" },
515
+ { label: "CSSFontFeatureValuesRule", kind: "var" },
516
+ { label: "CSSFontPaletteValuesRule", kind: "var" },
517
+ { label: "CSSGroupingRule", kind: "var" },
518
+ { label: "CSSImportRule", kind: "var" },
519
+ { label: "CSSKeyframeRule", kind: "var" },
520
+ { label: "CSSKeyframesRule", kind: "var" },
521
+ { label: "CSSLayerBlockRule", kind: "var" },
522
+ { label: "CSSLayerStatementRule", kind: "var" },
523
+ { label: "CSSMediaRule", kind: "var" },
524
+ { label: "CSSNamespaceRule", kind: "var" },
525
+ { label: "CSSPageRule", kind: "var" },
526
+ { label: "CSSRule", kind: "var" },
527
+ { label: "CSSRuleList", kind: "var" },
528
+ { label: "CSSStyleDeclaration", kind: "var" },
529
+ { label: "CSSStyleRule", kind: "var" },
530
+ { label: "CSSStyleSheet", kind: "var" },
531
+ { label: "CSSSupportsRule", kind: "var" },
532
+ { label: "CSSTransition", kind: "var" },
533
+ { label: "CustomElementRegistry", kind: "var" },
534
+ { label: "customElements", kind: "var" },
535
+ { label: "CustomEvent", kind: "var" },
536
+ { label: "DataTransfer", kind: "var" },
537
+ { label: "DataTransferItem", kind: "var" },
538
+ { label: "DataTransferItemList", kind: "var" },
539
+ { label: "DataView", kind: "var" },
540
+ { label: "Date", kind: "var" },
541
+ { label: "decodeURI", kind: "function" },
542
+ { label: "decodeURIComponent", kind: "function" },
543
+ { label: "DelayNode", kind: "var" },
544
+ { label: "DeviceMotionEvent", kind: "var" },
545
+ { label: "DeviceOrientationEvent", kind: "var" },
546
+ { label: "devicePixelRatio", kind: "var" },
547
+ { label: "dispatchEvent", kind: "function" },
548
+ { label: "document", kind: "var" },
549
+ { label: "Document", kind: "var" },
550
+ { label: "DocumentFragment", kind: "var" },
551
+ { label: "DocumentTimeline", kind: "var" },
552
+ { label: "DocumentType", kind: "var" },
553
+ { label: "DOMException", kind: "var" },
554
+ { label: "DOMImplementation", kind: "var" },
555
+ { label: "DOMMatrix", kind: "var" },
556
+ { label: "DOMMatrixReadOnly", kind: "var" },
557
+ { label: "DOMParser", kind: "var" },
558
+ { label: "DOMPoint", kind: "var" },
559
+ { label: "DOMPointReadOnly", kind: "var" },
560
+ { label: "DOMQuad", kind: "var" },
561
+ { label: "DOMRect", kind: "var" },
562
+ { label: "DOMRectList", kind: "var" },
563
+ { label: "DOMRectReadOnly", kind: "var" },
564
+ { label: "DOMStringList", kind: "var" },
565
+ { label: "DOMStringMap", kind: "var" },
566
+ { label: "DOMTokenList", kind: "var" },
567
+ { label: "DragEvent", kind: "var" },
568
+ { label: "DynamicsCompressorNode", kind: "var" },
569
+ { label: "Element", kind: "var" },
570
+ { label: "ElementInternals", kind: "var" },
571
+ { label: "encodeURI", kind: "function" },
572
+ { label: "encodeURIComponent", kind: "function" },
573
+ { label: "Enumerator", kind: "var" },
574
+ { label: "Error", kind: "var" },
575
+ { label: "ErrorEvent", kind: "var" },
576
+ { label: "eval", kind: "function" },
577
+ { label: "EvalError", kind: "var" },
578
+ { label: "Event", kind: "var" },
579
+ { label: "EventCounts", kind: "var" },
580
+ { label: "EventSource", kind: "var" },
581
+ { label: "EventTarget", kind: "var" },
582
+ { label: "fetch", kind: "function" },
583
+ { label: "File", kind: "var" },
584
+ { label: "FileList", kind: "var" },
585
+ { label: "FileReader", kind: "var" },
586
+ { label: "FileSystem", kind: "var" },
587
+ { label: "FileSystemDirectoryEntry", kind: "var" },
588
+ { label: "FileSystemDirectoryHandle", kind: "var" },
589
+ { label: "FileSystemDirectoryReader", kind: "var" },
590
+ { label: "FileSystemEntry", kind: "var" },
591
+ { label: "FileSystemFileEntry", kind: "var" },
592
+ { label: "FileSystemFileHandle", kind: "var" },
593
+ { label: "FileSystemHandle", kind: "var" },
594
+ { label: "FinalizationRegistry", kind: "var" },
595
+ { label: "Float32Array", kind: "var" },
596
+ { label: "Float64Array", kind: "var" },
597
+ { label: "focus", kind: "function" },
598
+ { label: "FocusEvent", kind: "var" },
599
+ { label: "FontFace", kind: "var" },
600
+ { label: "FontFaceSet", kind: "var" },
601
+ { label: "FontFaceSetLoadEvent", kind: "var" },
602
+ { label: "FormData", kind: "var" },
603
+ { label: "FormDataEvent", kind: "var" },
604
+ { label: "frameElement", kind: "var" },
605
+ { label: "frames", kind: "var" },
606
+ { label: "Function", kind: "var" },
607
+ { label: "GainNode", kind: "var" },
608
+ { label: "Gamepad", kind: "var" },
609
+ { label: "GamepadButton", kind: "var" },
610
+ { label: "GamepadEvent", kind: "var" },
611
+ { label: "GamepadHapticActuator", kind: "var" },
612
+ { label: "Geolocation", kind: "var" },
613
+ { label: "GeolocationCoordinates", kind: "var" },
614
+ { label: "GeolocationPosition", kind: "var" },
615
+ { label: "GeolocationPositionError", kind: "var" },
616
+ { label: "getComputedStyle", kind: "function" },
617
+ { label: "getSelection", kind: "function" },
618
+ { label: "globalThis", kind: "module" },
619
+ { label: "HashChangeEvent", kind: "var" },
620
+ { label: "Headers", kind: "var" },
621
+ { label: "history", kind: "var" },
622
+ { label: "History", kind: "var" },
623
+ { label: "HTMLAllCollection", kind: "var" },
624
+ { label: "HTMLAnchorElement", kind: "var" },
625
+ { label: "HTMLAreaElement", kind: "var" },
626
+ { label: "HTMLAudioElement", kind: "var" },
627
+ { label: "HTMLBaseElement", kind: "var" },
628
+ { label: "HTMLBodyElement", kind: "var" },
629
+ { label: "HTMLBRElement", kind: "var" },
630
+ { label: "HTMLButtonElement", kind: "var" },
631
+ { label: "HTMLCanvasElement", kind: "var" },
632
+ { label: "HTMLCollection", kind: "var" },
633
+ { label: "HTMLDataElement", kind: "var" },
634
+ { label: "HTMLDataListElement", kind: "var" },
635
+ { label: "HTMLDetailsElement", kind: "var" },
636
+ { label: "HTMLDialogElement", kind: "var" },
637
+ { label: "HTMLDivElement", kind: "var" },
638
+ { label: "HTMLDListElement", kind: "var" },
639
+ { label: "HTMLElement", kind: "var" },
640
+ { label: "HTMLEmbedElement", kind: "var" },
641
+ { label: "HTMLFieldSetElement", kind: "var" },
642
+ { label: "HTMLFormControlsCollection", kind: "var" },
643
+ { label: "HTMLFormElement", kind: "var" },
644
+ { label: "HTMLHeadElement", kind: "var" },
645
+ { label: "HTMLHeadingElement", kind: "var" },
646
+ { label: "HTMLHRElement", kind: "var" },
647
+ { label: "HTMLHtmlElement", kind: "var" },
648
+ { label: "HTMLIFrameElement", kind: "var" },
649
+ { label: "HTMLImageElement", kind: "var" },
650
+ { label: "HTMLInputElement", kind: "var" },
651
+ { label: "HTMLLabelElement", kind: "var" },
652
+ { label: "HTMLLegendElement", kind: "var" },
653
+ { label: "HTMLLIElement", kind: "var" },
654
+ { label: "HTMLLinkElement", kind: "var" },
655
+ { label: "HTMLMapElement", kind: "var" },
656
+ { label: "HTMLMediaElement", kind: "var" },
657
+ { label: "HTMLMenuElement", kind: "var" },
658
+ { label: "HTMLMetaElement", kind: "var" },
659
+ { label: "HTMLMeterElement", kind: "var" },
660
+ { label: "HTMLModElement", kind: "var" },
661
+ { label: "HTMLObjectElement", kind: "var" },
662
+ { label: "HTMLOListElement", kind: "var" },
663
+ { label: "HTMLOptGroupElement", kind: "var" },
664
+ { label: "HTMLOptionElement", kind: "var" },
665
+ { label: "HTMLOptionsCollection", kind: "var" },
666
+ { label: "HTMLOutputElement", kind: "var" },
667
+ { label: "HTMLParagraphElement", kind: "var" },
668
+ { label: "HTMLPictureElement", kind: "var" },
669
+ { label: "HTMLPreElement", kind: "var" },
670
+ { label: "HTMLProgressElement", kind: "var" },
671
+ { label: "HTMLQuoteElement", kind: "var" },
672
+ { label: "HTMLScriptElement", kind: "var" },
673
+ { label: "HTMLSelectElement", kind: "var" },
674
+ { label: "HTMLSlotElement", kind: "var" },
675
+ { label: "HTMLSourceElement", kind: "var" },
676
+ { label: "HTMLSpanElement", kind: "var" },
677
+ { label: "HTMLStyleElement", kind: "var" },
678
+ { label: "HTMLTableCaptionElement", kind: "var" },
679
+ { label: "HTMLTableCellElement", kind: "var" },
680
+ { label: "HTMLTableColElement", kind: "var" },
681
+ { label: "HTMLTableElement", kind: "var" },
682
+ { label: "HTMLTableRowElement", kind: "var" },
683
+ { label: "HTMLTableSectionElement", kind: "var" },
684
+ { label: "HTMLTemplateElement", kind: "var" },
685
+ { label: "HTMLTextAreaElement", kind: "var" },
686
+ { label: "HTMLTimeElement", kind: "var" },
687
+ { label: "HTMLTitleElement", kind: "var" },
688
+ { label: "HTMLTrackElement", kind: "var" },
689
+ { label: "HTMLUListElement", kind: "var" },
690
+ { label: "HTMLUnknownElement", kind: "var" },
691
+ { label: "HTMLVideoElement", kind: "var" },
692
+ { label: "IDBCursor", kind: "var" },
693
+ { label: "IDBCursorWithValue", kind: "var" },
694
+ { label: "IDBDatabase", kind: "var" },
695
+ { label: "IDBFactory", kind: "var" },
696
+ { label: "IDBIndex", kind: "var" },
697
+ { label: "IDBKeyRange", kind: "var" },
698
+ { label: "IDBObjectStore", kind: "var" },
699
+ { label: "IDBOpenDBRequest", kind: "var" },
700
+ { label: "IDBRequest", kind: "var" },
701
+ { label: "IDBTransaction", kind: "var" },
702
+ { label: "IDBVersionChangeEvent", kind: "var" },
703
+ { label: "IdleDeadline", kind: "var" },
704
+ { label: "IIRFilterNode", kind: "var" },
705
+ { label: "Image", kind: "var" },
706
+ { label: "ImageBitmap", kind: "var" },
707
+ { label: "ImageBitmapRenderingContext", kind: "var" },
708
+ { label: "ImageData", kind: "var" },
709
+ { label: "importScripts", kind: "function" },
710
+ { label: "indexedDB", kind: "var" },
711
+ { label: "Infinity", kind: "var" },
712
+ { label: "innerHeight", kind: "var" },
713
+ { label: "innerWidth", kind: "var" },
714
+ { label: "InputDeviceInfo", kind: "var" },
715
+ { label: "InputEvent", kind: "var" },
716
+ { label: "Int16Array", kind: "var" },
717
+ { label: "Int32Array", kind: "var" },
718
+ { label: "Int8Array", kind: "var" },
719
+ { label: "IntersectionObserver", kind: "var" },
720
+ { label: "IntersectionObserverEntry", kind: "var" },
721
+ { label: "Intl", kind: "module" },
722
+ { label: "isFinite", kind: "function" },
723
+ { label: "isNaN", kind: "function" },
724
+ { label: "isSecureContext", kind: "var" },
725
+ { label: "JSON", kind: "var" },
726
+ { label: "KeyboardEvent", kind: "var" },
727
+ { label: "KeyframeEffect", kind: "var" },
728
+ { label: "length", kind: "var" },
729
+ { label: "localStorage", kind: "var" },
730
+ { label: "location", kind: "var" },
731
+ { label: "Location", kind: "var" },
732
+ { label: "locationbar", kind: "var" },
733
+ { label: "Lock", kind: "var" },
734
+ { label: "LockManager", kind: "var" },
735
+ { label: "Map", kind: "var" },
736
+ { label: "matchMedia", kind: "function" },
737
+ { label: "Math", kind: "var" },
738
+ { label: "MathMLElement", kind: "var" },
739
+ { label: "MediaCapabilities", kind: "var" },
740
+ { label: "MediaDeviceInfo", kind: "var" },
741
+ { label: "MediaDevices", kind: "var" },
742
+ { label: "MediaElementAudioSourceNode", kind: "var" },
743
+ { label: "MediaEncryptedEvent", kind: "var" },
744
+ { label: "MediaError", kind: "var" },
745
+ { label: "MediaKeyMessageEvent", kind: "var" },
746
+ { label: "MediaKeys", kind: "var" },
747
+ { label: "MediaKeySession", kind: "var" },
748
+ { label: "MediaKeyStatusMap", kind: "var" },
749
+ { label: "MediaKeySystemAccess", kind: "var" },
750
+ { label: "MediaList", kind: "var" },
751
+ { label: "MediaMetadata", kind: "var" },
752
+ { label: "MediaQueryList", kind: "var" },
753
+ { label: "MediaQueryListEvent", kind: "var" },
754
+ { label: "MediaRecorder", kind: "var" },
755
+ { label: "MediaSession", kind: "var" },
756
+ { label: "MediaSource", kind: "var" },
757
+ { label: "MediaStream", kind: "var" },
758
+ { label: "MediaStreamAudioDestinationNode", kind: "var" },
759
+ { label: "MediaStreamAudioSourceNode", kind: "var" },
760
+ { label: "MediaStreamTrack", kind: "var" },
761
+ { label: "MediaStreamTrackEvent", kind: "var" },
762
+ { label: "menubar", kind: "var" },
763
+ { label: "MessageChannel", kind: "var" },
764
+ { label: "MessageEvent", kind: "var" },
765
+ { label: "MessagePort", kind: "var" },
766
+ { label: "MIDIAccess", kind: "var" },
767
+ { label: "MIDIConnectionEvent", kind: "var" },
768
+ { label: "MIDIInput", kind: "var" },
769
+ { label: "MIDIInputMap", kind: "var" },
770
+ { label: "MIDIMessageEvent", kind: "var" },
771
+ { label: "MIDIOutput", kind: "var" },
772
+ { label: "MIDIOutputMap", kind: "var" },
773
+ { label: "MIDIPort", kind: "var" },
774
+ { label: "MimeTypeArray", kind: "var" },
775
+ { label: "MouseEvent", kind: "var" },
776
+ { label: "moveBy", kind: "function" },
777
+ { label: "moveTo", kind: "function" },
778
+ { label: "MutationObserver", kind: "var" },
779
+ { label: "MutationRecord", kind: "var" },
780
+ { label: "NamedNodeMap", kind: "var" },
781
+ { label: "NaN", kind: "var" },
782
+ { label: "NavigationPreloadManager", kind: "var" },
783
+ { label: "navigator", kind: "var" },
784
+ { label: "Navigator", kind: "var" },
785
+ { label: "Node", kind: "var" },
786
+ { label: "NodeFilter", kind: "var" },
787
+ { label: "NodeIterator", kind: "var" },
788
+ { label: "NodeList", kind: "var" },
789
+ { label: "Notification", kind: "var" },
790
+ { label: "Number", kind: "var" },
791
+ { label: "Object", kind: "var" },
792
+ { label: "OfflineAudioCompletionEvent", kind: "var" },
793
+ { label: "OfflineAudioContext", kind: "var" },
794
+ { label: "OffscreenCanvas", kind: "var" },
795
+ { label: "OffscreenCanvasRenderingContext2D", kind: "var" },
796
+ { label: "onabort", kind: "var" },
797
+ { label: "onafterprint", kind: "var" },
798
+ { label: "onanimationcancel", kind: "var" },
799
+ { label: "onanimationend", kind: "var" },
800
+ { label: "onanimationiteration", kind: "var" },
801
+ { label: "onanimationstart", kind: "var" },
802
+ { label: "onauxclick", kind: "var" },
803
+ { label: "onbeforeinput", kind: "var" },
804
+ { label: "onbeforeprint", kind: "var" },
805
+ { label: "onbeforeunload", kind: "var" },
806
+ { label: "onblur", kind: "var" },
807
+ { label: "oncancel", kind: "var" },
808
+ { label: "oncanplay", kind: "var" },
809
+ { label: "oncanplaythrough", kind: "var" },
810
+ { label: "onchange", kind: "var" },
811
+ { label: "onclick", kind: "var" },
812
+ { label: "onclose", kind: "var" },
813
+ { label: "oncontextmenu", kind: "var" },
814
+ { label: "oncopy", kind: "var" },
815
+ { label: "oncuechange", kind: "var" },
816
+ { label: "oncut", kind: "var" },
817
+ { label: "ondblclick", kind: "var" },
818
+ { label: "ondevicemotion", kind: "var" },
819
+ { label: "ondeviceorientation", kind: "var" },
820
+ { label: "ondrag", kind: "var" },
821
+ { label: "ondragend", kind: "var" },
822
+ { label: "ondragenter", kind: "var" },
823
+ { label: "ondragleave", kind: "var" },
824
+ { label: "ondragover", kind: "var" },
825
+ { label: "ondragstart", kind: "var" },
826
+ { label: "ondrop", kind: "var" },
827
+ { label: "ondurationchange", kind: "var" },
828
+ { label: "onemptied", kind: "var" },
829
+ { label: "onended", kind: "var" },
830
+ { label: "onerror", kind: "var" },
831
+ { label: "onfocus", kind: "var" },
832
+ { label: "onformdata", kind: "var" },
833
+ { label: "ongamepadconnected", kind: "var" },
834
+ { label: "ongamepaddisconnected", kind: "var" },
835
+ { label: "ongotpointercapture", kind: "var" },
836
+ { label: "onhashchange", kind: "var" },
837
+ { label: "oninput", kind: "var" },
838
+ { label: "oninvalid", kind: "var" },
839
+ { label: "onkeydown", kind: "var" },
840
+ { label: "onkeyup", kind: "var" },
841
+ { label: "onlanguagechange", kind: "var" },
842
+ { label: "onload", kind: "var" },
843
+ { label: "onloadeddata", kind: "var" },
844
+ { label: "onloadedmetadata", kind: "var" },
845
+ { label: "onloadstart", kind: "var" },
846
+ { label: "onlostpointercapture", kind: "var" },
847
+ { label: "onmessage", kind: "var" },
848
+ { label: "onmessageerror", kind: "var" },
849
+ { label: "onmousedown", kind: "var" },
850
+ { label: "onmouseenter", kind: "var" },
851
+ { label: "onmouseleave", kind: "var" },
852
+ { label: "onmousemove", kind: "var" },
853
+ { label: "onmouseout", kind: "var" },
854
+ { label: "onmouseover", kind: "var" },
855
+ { label: "onmouseup", kind: "var" },
856
+ { label: "onoffline", kind: "var" },
857
+ { label: "ononline", kind: "var" },
858
+ { label: "onpagehide", kind: "var" },
859
+ { label: "onpageshow", kind: "var" },
860
+ { label: "onpaste", kind: "var" },
861
+ { label: "onpause", kind: "var" },
862
+ { label: "onplay", kind: "var" },
863
+ { label: "onplaying", kind: "var" },
864
+ { label: "onpointercancel", kind: "var" },
865
+ { label: "onpointerdown", kind: "var" },
866
+ { label: "onpointerenter", kind: "var" },
867
+ { label: "onpointerleave", kind: "var" },
868
+ { label: "onpointermove", kind: "var" },
869
+ { label: "onpointerout", kind: "var" },
870
+ { label: "onpointerover", kind: "var" },
871
+ { label: "onpointerup", kind: "var" },
872
+ { label: "onpopstate", kind: "var" },
873
+ { label: "onprogress", kind: "var" },
874
+ { label: "onratechange", kind: "var" },
875
+ { label: "onrejectionhandled", kind: "var" },
876
+ { label: "onreset", kind: "var" },
877
+ { label: "onresize", kind: "var" },
878
+ { label: "onscroll", kind: "var" },
879
+ { label: "onsecuritypolicyviolation", kind: "var" },
880
+ { label: "onseeked", kind: "var" },
881
+ { label: "onseeking", kind: "var" },
882
+ { label: "onselect", kind: "var" },
883
+ { label: "onselectionchange", kind: "var" },
884
+ { label: "onselectstart", kind: "var" },
885
+ { label: "onslotchange", kind: "var" },
886
+ { label: "onstalled", kind: "var" },
887
+ { label: "onstorage", kind: "var" },
888
+ { label: "onsubmit", kind: "var" },
889
+ { label: "onsuspend", kind: "var" },
890
+ { label: "ontimeupdate", kind: "var" },
891
+ { label: "ontoggle", kind: "var" },
892
+ { label: "ontouchcancel", kind: "var" },
893
+ { label: "ontouchend", kind: "var" },
894
+ { label: "ontouchmove", kind: "var" },
895
+ { label: "ontouchstart", kind: "var" },
896
+ { label: "ontransitioncancel", kind: "var" },
897
+ { label: "ontransitionend", kind: "var" },
898
+ { label: "ontransitionrun", kind: "var" },
899
+ { label: "ontransitionstart", kind: "var" },
900
+ { label: "onunhandledrejection", kind: "var" },
901
+ { label: "onunload", kind: "var" },
902
+ { label: "onvolumechange", kind: "var" },
903
+ { label: "onwaiting", kind: "var" },
904
+ { label: "onwheel", kind: "var" },
905
+ { label: "open", kind: "function" },
906
+ { label: "opener", kind: "var" },
907
+ { label: "Option", kind: "var" },
908
+ { label: "origin", kind: "var" },
909
+ { label: "OscillatorNode", kind: "var" },
910
+ { label: "outerHeight", kind: "var" },
911
+ { label: "outerWidth", kind: "var" },
912
+ { label: "OverconstrainedError", kind: "var" },
913
+ { label: "PageTransitionEvent", kind: "var" },
914
+ { label: "PannerNode", kind: "var" },
915
+ { label: "parent", kind: "var" },
916
+ { label: "parseFloat", kind: "function" },
917
+ { label: "parseInt", kind: "function" },
918
+ { label: "Path2D", kind: "var" },
919
+ { label: "PaymentMethodChangeEvent", kind: "var" },
920
+ { label: "PaymentRequest", kind: "var" },
921
+ { label: "PaymentRequestUpdateEvent", kind: "var" },
922
+ { label: "PaymentResponse", kind: "var" },
923
+ { label: "performance", kind: "var" },
924
+ { label: "Performance", kind: "var" },
925
+ { label: "PerformanceEntry", kind: "var" },
926
+ { label: "PerformanceEventTiming", kind: "var" },
927
+ { label: "PerformanceMark", kind: "var" },
928
+ { label: "PerformanceMeasure", kind: "var" },
929
+ { label: "PerformanceNavigationTiming", kind: "var" },
930
+ { label: "PerformanceObserver", kind: "var" },
931
+ { label: "PerformanceObserverEntryList", kind: "var" },
932
+ { label: "PerformancePaintTiming", kind: "var" },
933
+ { label: "PerformanceResourceTiming", kind: "var" },
934
+ { label: "PerformanceServerTiming", kind: "var" },
935
+ { label: "PeriodicWave", kind: "var" },
936
+ { label: "Permissions", kind: "var" },
937
+ { label: "PermissionStatus", kind: "var" },
938
+ { label: "personalbar", kind: "var" },
939
+ { label: "PictureInPictureEvent", kind: "var" },
940
+ { label: "PictureInPictureWindow", kind: "var" },
941
+ { label: "Plugin", kind: "var" },
942
+ { label: "PluginArray", kind: "var" },
943
+ { label: "PointerEvent", kind: "var" },
944
+ { label: "PopStateEvent", kind: "var" },
945
+ { label: "postMessage", kind: "function" },
946
+ { label: "print", kind: "function" },
947
+ { label: "ProcessingInstruction", kind: "var" },
948
+ { label: "ProgressEvent", kind: "var" },
949
+ { label: "Promise", kind: "var" },
950
+ { label: "PromiseRejectionEvent", kind: "var" },
951
+ { label: "prompt", kind: "function" },
952
+ { label: "Proxy", kind: "var" },
953
+ { label: "PublicKeyCredential", kind: "var" },
954
+ { label: "PushManager", kind: "var" },
955
+ { label: "PushSubscription", kind: "var" },
956
+ { label: "PushSubscriptionOptions", kind: "var" },
957
+ { label: "queueMicrotask", kind: "function" },
958
+ { label: "RadioNodeList", kind: "var" },
959
+ { label: "Range", kind: "var" },
960
+ { label: "RangeError", kind: "var" },
961
+ { label: "ReadableByteStreamController", kind: "var" },
962
+ { label: "ReadableStream", kind: "var" },
963
+ { label: "ReadableStreamBYOBReader", kind: "var" },
964
+ { label: "ReadableStreamBYOBRequest", kind: "var" },
965
+ { label: "ReadableStreamDefaultController", kind: "var" },
966
+ { label: "ReadableStreamDefaultReader", kind: "var" },
967
+ { label: "ReferenceError", kind: "var" },
968
+ { label: "Reflect", kind: "module" },
969
+ { label: "RegExp", kind: "var" },
970
+ { label: "RemotePlayback", kind: "var" },
971
+ { label: "removeEventListener", kind: "function" },
972
+ { label: "reportError", kind: "function" },
973
+ { label: "Request", kind: "var" },
974
+ { label: "requestAnimationFrame", kind: "function" },
975
+ { label: "requestIdleCallback", kind: "function" },
976
+ { label: "resizeBy", kind: "function" },
977
+ { label: "ResizeObserver", kind: "var" },
978
+ { label: "ResizeObserverEntry", kind: "var" },
979
+ { label: "ResizeObserverSize", kind: "var" },
980
+ { label: "resizeTo", kind: "function" },
981
+ { label: "Response", kind: "var" },
982
+ { label: "RTCCertificate", kind: "var" },
983
+ { label: "RTCDataChannel", kind: "var" },
984
+ { label: "RTCDataChannelEvent", kind: "var" },
985
+ { label: "RTCDtlsTransport", kind: "var" },
986
+ { label: "RTCDTMFSender", kind: "var" },
987
+ { label: "RTCDTMFToneChangeEvent", kind: "var" },
988
+ { label: "RTCEncodedAudioFrame", kind: "var" },
989
+ { label: "RTCEncodedVideoFrame", kind: "var" },
990
+ { label: "RTCError", kind: "var" },
991
+ { label: "RTCErrorEvent", kind: "var" },
992
+ { label: "RTCIceCandidate", kind: "var" },
993
+ { label: "RTCIceTransport", kind: "var" },
994
+ { label: "RTCPeerConnection", kind: "var" },
995
+ { label: "RTCPeerConnectionIceErrorEvent", kind: "var" },
996
+ { label: "RTCPeerConnectionIceEvent", kind: "var" },
997
+ { label: "RTCRtpReceiver", kind: "var" },
998
+ { label: "RTCRtpSender", kind: "var" },
999
+ { label: "RTCRtpTransceiver", kind: "var" },
1000
+ { label: "RTCSctpTransport", kind: "var" },
1001
+ { label: "RTCSessionDescription", kind: "var" },
1002
+ { label: "RTCStatsReport", kind: "var" },
1003
+ { label: "RTCTrackEvent", kind: "var" },
1004
+ { label: "SafeArray", kind: "class" },
1005
+ { label: "screen", kind: "var" },
1006
+ { label: "Screen", kind: "var" },
1007
+ { label: "screenLeft", kind: "var" },
1008
+ { label: "ScreenOrientation", kind: "var" },
1009
+ { label: "screenTop", kind: "var" },
1010
+ { label: "screenX", kind: "var" },
1011
+ { label: "screenY", kind: "var" },
1012
+ { label: "scroll", kind: "function" },
1013
+ { label: "scrollbars", kind: "var" },
1014
+ { label: "scrollBy", kind: "function" },
1015
+ { label: "scrollTo", kind: "function" },
1016
+ { label: "scrollX", kind: "var" },
1017
+ { label: "scrollY", kind: "var" },
1018
+ { label: "SecurityPolicyViolationEvent", kind: "var" },
1019
+ { label: "Selection", kind: "var" },
1020
+ { label: "self", kind: "var" },
1021
+ { label: "ServiceWorker", kind: "var" },
1022
+ { label: "ServiceWorkerContainer", kind: "var" },
1023
+ { label: "ServiceWorkerRegistration", kind: "var" },
1024
+ { label: "sessionStorage", kind: "var" },
1025
+ { label: "Set", kind: "var" },
1026
+ { label: "setInterval", kind: "function" },
1027
+ { label: "setTimeout", kind: "function" },
1028
+ { label: "ShadowRoot", kind: "var" },
1029
+ { label: "SharedArrayBuffer", kind: "var" },
1030
+ { label: "SharedWorker", kind: "var" },
1031
+ { label: "SourceBuffer", kind: "var" },
1032
+ { label: "SourceBufferList", kind: "var" },
1033
+ { label: "SpeechRecognitionAlternative", kind: "var" },
1034
+ { label: "SpeechRecognitionResult", kind: "var" },
1035
+ { label: "SpeechRecognitionResultList", kind: "var" },
1036
+ { label: "speechSynthesis", kind: "var" },
1037
+ { label: "SpeechSynthesis", kind: "var" },
1038
+ { label: "SpeechSynthesisErrorEvent", kind: "var" },
1039
+ { label: "SpeechSynthesisEvent", kind: "var" },
1040
+ { label: "SpeechSynthesisUtterance", kind: "var" },
1041
+ { label: "SpeechSynthesisVoice", kind: "var" },
1042
+ { label: "StaticRange", kind: "var" },
1043
+ { label: "statusbar", kind: "var" },
1044
+ { label: "StereoPannerNode", kind: "var" },
1045
+ { label: "stop", kind: "function" },
1046
+ { label: "Storage", kind: "var" },
1047
+ { label: "StorageEvent", kind: "var" },
1048
+ { label: "StorageManager", kind: "var" },
1049
+ { label: "String", kind: "var" },
1050
+ { label: "structuredClone", kind: "function" },
1051
+ { label: "StyleSheet", kind: "var" },
1052
+ { label: "StyleSheetList", kind: "var" },
1053
+ { label: "SubmitEvent", kind: "var" },
1054
+ { label: "SubtleCrypto", kind: "var" },
1055
+ { label: "SVGAElement", kind: "var" },
1056
+ { label: "SVGAngle", kind: "var" },
1057
+ { label: "SVGAnimatedAngle", kind: "var" },
1058
+ { label: "SVGAnimatedBoolean", kind: "var" },
1059
+ { label: "SVGAnimatedEnumeration", kind: "var" },
1060
+ { label: "SVGAnimatedInteger", kind: "var" },
1061
+ { label: "SVGAnimatedLength", kind: "var" },
1062
+ { label: "SVGAnimatedLengthList", kind: "var" },
1063
+ { label: "SVGAnimatedNumber", kind: "var" },
1064
+ { label: "SVGAnimatedNumberList", kind: "var" },
1065
+ { label: "SVGAnimatedPreserveAspectRatio", kind: "var" },
1066
+ { label: "SVGAnimatedRect", kind: "var" },
1067
+ { label: "SVGAnimatedString", kind: "var" },
1068
+ { label: "SVGAnimatedTransformList", kind: "var" },
1069
+ { label: "SVGAnimateElement", kind: "var" },
1070
+ { label: "SVGAnimateMotionElement", kind: "var" },
1071
+ { label: "SVGAnimateTransformElement", kind: "var" },
1072
+ { label: "SVGAnimationElement", kind: "var" },
1073
+ { label: "SVGCircleElement", kind: "var" },
1074
+ { label: "SVGClipPathElement", kind: "var" },
1075
+ { label: "SVGComponentTransferFunctionElement", kind: "var" },
1076
+ { label: "SVGDefsElement", kind: "var" },
1077
+ { label: "SVGDescElement", kind: "var" },
1078
+ { label: "SVGElement", kind: "var" },
1079
+ { label: "SVGEllipseElement", kind: "var" },
1080
+ { label: "SVGFEBlendElement", kind: "var" },
1081
+ { label: "SVGFEColorMatrixElement", kind: "var" },
1082
+ { label: "SVGFEComponentTransferElement", kind: "var" },
1083
+ { label: "SVGFECompositeElement", kind: "var" },
1084
+ { label: "SVGFEConvolveMatrixElement", kind: "var" },
1085
+ { label: "SVGFEDiffuseLightingElement", kind: "var" },
1086
+ { label: "SVGFEDisplacementMapElement", kind: "var" },
1087
+ { label: "SVGFEDistantLightElement", kind: "var" },
1088
+ { label: "SVGFEDropShadowElement", kind: "var" },
1089
+ { label: "SVGFEFloodElement", kind: "var" },
1090
+ { label: "SVGFEFuncAElement", kind: "var" },
1091
+ { label: "SVGFEFuncBElement", kind: "var" },
1092
+ { label: "SVGFEFuncGElement", kind: "var" },
1093
+ { label: "SVGFEFuncRElement", kind: "var" },
1094
+ { label: "SVGFEGaussianBlurElement", kind: "var" },
1095
+ { label: "SVGFEImageElement", kind: "var" },
1096
+ { label: "SVGFEMergeElement", kind: "var" },
1097
+ { label: "SVGFEMergeNodeElement", kind: "var" },
1098
+ { label: "SVGFEMorphologyElement", kind: "var" },
1099
+ { label: "SVGFEOffsetElement", kind: "var" },
1100
+ { label: "SVGFEPointLightElement", kind: "var" },
1101
+ { label: "SVGFESpecularLightingElement", kind: "var" },
1102
+ { label: "SVGFESpotLightElement", kind: "var" },
1103
+ { label: "SVGFETileElement", kind: "var" },
1104
+ { label: "SVGFETurbulenceElement", kind: "var" },
1105
+ { label: "SVGFilterElement", kind: "var" },
1106
+ { label: "SVGForeignObjectElement", kind: "var" },
1107
+ { label: "SVGGElement", kind: "var" },
1108
+ { label: "SVGGeometryElement", kind: "var" },
1109
+ { label: "SVGGradientElement", kind: "var" },
1110
+ { label: "SVGGraphicsElement", kind: "var" },
1111
+ { label: "SVGImageElement", kind: "var" },
1112
+ { label: "SVGLength", kind: "var" },
1113
+ { label: "SVGLengthList", kind: "var" },
1114
+ { label: "SVGLinearGradientElement", kind: "var" },
1115
+ { label: "SVGLineElement", kind: "var" },
1116
+ { label: "SVGMarkerElement", kind: "var" },
1117
+ { label: "SVGMaskElement", kind: "var" },
1118
+ { label: "SVGMatrix", kind: "var" },
1119
+ { label: "SVGMetadataElement", kind: "var" },
1120
+ { label: "SVGMPathElement", kind: "var" },
1121
+ { label: "SVGNumber", kind: "var" },
1122
+ { label: "SVGNumberList", kind: "var" },
1123
+ { label: "SVGPathElement", kind: "var" },
1124
+ { label: "SVGPatternElement", kind: "var" },
1125
+ { label: "SVGPoint", kind: "var" },
1126
+ { label: "SVGPointList", kind: "var" },
1127
+ { label: "SVGPolygonElement", kind: "var" },
1128
+ { label: "SVGPolylineElement", kind: "var" },
1129
+ { label: "SVGPreserveAspectRatio", kind: "var" },
1130
+ { label: "SVGRadialGradientElement", kind: "var" },
1131
+ { label: "SVGRect", kind: "var" },
1132
+ { label: "SVGRectElement", kind: "var" },
1133
+ { label: "SVGScriptElement", kind: "var" },
1134
+ { label: "SVGSetElement", kind: "var" },
1135
+ { label: "SVGStopElement", kind: "var" },
1136
+ { label: "SVGStringList", kind: "var" },
1137
+ { label: "SVGStyleElement", kind: "var" },
1138
+ { label: "SVGSVGElement", kind: "var" },
1139
+ { label: "SVGSwitchElement", kind: "var" },
1140
+ { label: "SVGSymbolElement", kind: "var" },
1141
+ { label: "SVGTextContentElement", kind: "var" },
1142
+ { label: "SVGTextElement", kind: "var" },
1143
+ { label: "SVGTextPathElement", kind: "var" },
1144
+ { label: "SVGTextPositioningElement", kind: "var" },
1145
+ { label: "SVGTitleElement", kind: "var" },
1146
+ { label: "SVGTransform", kind: "var" },
1147
+ { label: "SVGTransformList", kind: "var" },
1148
+ { label: "SVGTSpanElement", kind: "var" },
1149
+ { label: "SVGUnitTypes", kind: "var" },
1150
+ { label: "SVGUseElement", kind: "var" },
1151
+ { label: "SVGViewElement", kind: "var" },
1152
+ { label: "Symbol", kind: "var" },
1153
+ { label: "SyntaxError", kind: "var" },
1154
+ { label: "Text", kind: "var" },
1155
+ { label: "TextDecoder", kind: "var" },
1156
+ { label: "TextDecoderStream", kind: "var" },
1157
+ { label: "TextEncoder", kind: "var" },
1158
+ { label: "TextEncoderStream", kind: "var" },
1159
+ { label: "TextMetrics", kind: "var" },
1160
+ { label: "TextTrack", kind: "var" },
1161
+ { label: "TextTrackCue", kind: "var" },
1162
+ { label: "TextTrackCueList", kind: "var" },
1163
+ { label: "TextTrackList", kind: "var" },
1164
+ { label: "TimeRanges", kind: "var" },
1165
+ { label: "toolbar", kind: "var" },
1166
+ { label: "top", kind: "var" },
1167
+ { label: "toString", kind: "function" },
1168
+ { label: "Touch", kind: "var" },
1169
+ { label: "TouchEvent", kind: "var" },
1170
+ { label: "TouchList", kind: "var" },
1171
+ { label: "TrackEvent", kind: "var" },
1172
+ { label: "TransformStream", kind: "var" },
1173
+ { label: "TransformStreamDefaultController", kind: "var" },
1174
+ { label: "TransitionEvent", kind: "var" },
1175
+ { label: "TreeWalker", kind: "var" },
1176
+ { label: "TypeError", kind: "var" },
1177
+ { label: "UIEvent", kind: "var" },
1178
+ { label: "Uint16Array", kind: "var" },
1179
+ { label: "Uint32Array", kind: "var" },
1180
+ { label: "Uint8Array", kind: "var" },
1181
+ { label: "Uint8ClampedArray", kind: "var" },
1182
+ { label: "undefined", kind: "var" },
1183
+ { label: "URIError", kind: "var" },
1184
+ { label: "URL", kind: "var" },
1185
+ { label: "URLSearchParams", kind: "var" },
1186
+ { label: "ValidityState", kind: "var" },
1187
+ { label: "VarDate", kind: "class" },
1188
+ { label: "VBArray", kind: "var" },
1189
+ { label: "VideoColorSpace", kind: "var" },
1190
+ { label: "VideoPlaybackQuality", kind: "var" },
1191
+ { label: "visualViewport", kind: "var" },
1192
+ { label: "VisualViewport", kind: "var" },
1193
+ { label: "VTTCue", kind: "var" },
1194
+ { label: "VTTRegion", kind: "var" },
1195
+ { label: "WaveShaperNode", kind: "var" },
1196
+ { label: "WeakMap", kind: "var" },
1197
+ { label: "WeakRef", kind: "var" },
1198
+ { label: "WeakSet", kind: "var" },
1199
+ { label: "WebAssembly", kind: "module" },
1200
+ { label: "WebGL2RenderingContext", kind: "var" },
1201
+ { label: "WebGLActiveInfo", kind: "var" },
1202
+ { label: "WebGLBuffer", kind: "var" },
1203
+ { label: "WebGLContextEvent", kind: "var" },
1204
+ { label: "WebGLFramebuffer", kind: "var" },
1205
+ { label: "WebGLProgram", kind: "var" },
1206
+ { label: "WebGLQuery", kind: "var" },
1207
+ { label: "WebGLRenderbuffer", kind: "var" },
1208
+ { label: "WebGLRenderingContext", kind: "var" },
1209
+ { label: "WebGLSampler", kind: "var" },
1210
+ { label: "WebGLShader", kind: "var" },
1211
+ { label: "WebGLShaderPrecisionFormat", kind: "var" },
1212
+ { label: "WebGLSync", kind: "var" },
1213
+ { label: "WebGLTexture", kind: "var" },
1214
+ { label: "WebGLTransformFeedback", kind: "var" },
1215
+ { label: "WebGLUniformLocation", kind: "var" },
1216
+ { label: "WebGLVertexArrayObject", kind: "var" },
1217
+ { label: "WebKitCSSMatrix", kind: "var" },
1218
+ { label: "webkitURL", kind: "var" },
1219
+ { label: "WebSocket", kind: "var" },
1220
+ { label: "WheelEvent", kind: "var" },
1221
+ { label: "window", kind: "var" },
1222
+ { label: "Window", kind: "var" },
1223
+ { label: "Worker", kind: "var" },
1224
+ { label: "Worklet", kind: "var" },
1225
+ { label: "WritableStream", kind: "var" },
1226
+ { label: "WritableStreamDefaultController", kind: "var" },
1227
+ { label: "WritableStreamDefaultWriter", kind: "var" },
1228
+ { label: "WScript", kind: "var" },
1229
+ { label: "WSH", kind: "var" },
1230
+ { label: "XMLDocument", kind: "var" },
1231
+ { label: "XMLHttpRequest", kind: "var" },
1232
+ { label: "XMLHttpRequestEventTarget", kind: "var" },
1233
+ { label: "XMLHttpRequestUpload", kind: "var" },
1234
+ { label: "XMLSerializer", kind: "var" },
1235
+ { label: "XPathEvaluator", kind: "var" },
1236
+ { label: "XPathExpression", kind: "var" },
1237
+ { label: "XPathResult", kind: "var" },
1238
+ { label: "XSLTProcessor", kind: "var" },
1239
+ { label: "AudioProcessingEvent", kind: "var" },
1240
+ { label: "captureEvents", kind: "function" },
1241
+ { label: "clientInformation", kind: "var" },
1242
+ { label: "escape", kind: "function" },
1243
+ { label: "event", kind: "var" },
1244
+ { label: "external", kind: "var" },
1245
+ { label: "External", kind: "var" },
1246
+ { label: "HTMLDirectoryElement", kind: "var" },
1247
+ { label: "HTMLDocument", kind: "var" },
1248
+ { label: "HTMLFontElement", kind: "var" },
1249
+ { label: "HTMLFrameElement", kind: "var" },
1250
+ { label: "HTMLFrameSetElement", kind: "var" },
1251
+ { label: "HTMLMarqueeElement", kind: "var" },
1252
+ { label: "HTMLParamElement", kind: "var" },
1253
+ { label: "MimeType", kind: "var" },
1254
+ { label: "MutationEvent", kind: "var" },
1255
+ { label: "name", kind: "const" },
1256
+ { label: "onkeypress", kind: "var" },
1257
+ { label: "onorientationchange", kind: "var" },
1258
+ { label: "onwebkitanimationend", kind: "var" },
1259
+ { label: "onwebkitanimationiteration", kind: "var" },
1260
+ { label: "onwebkitanimationstart", kind: "var" },
1261
+ { label: "onwebkittransitionend", kind: "var" },
1262
+ { label: "orientation", kind: "var" },
1263
+ { label: "pageXOffset", kind: "var" },
1264
+ { label: "pageYOffset", kind: "var" },
1265
+ { label: "PerformanceNavigation", kind: "var" },
1266
+ { label: "PerformanceTiming", kind: "var" },
1267
+ { label: "releaseEvents", kind: "function" },
1268
+ { label: "ScriptProcessorNode", kind: "var" },
1269
+ { label: "status", kind: "var" },
1270
+ { label: "unescape", kind: "function" }
1271
+ ];
1272
+
1273
+ const BROWSER_API_SET = new Set(
1274
+ BROWSER_API_FILTER.map(api => `${api.label}:${api.kind}`)
1275
+ );
1276
+
1277
+ if(window){
1278
+ (window as any).ScriptEditorLanguageManager = ScriptEditorLanguageManager;
1279
+ }
1280
+
1281
+ }