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