1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3<plist version="1.0">
4 <dict>
5 <key>name</key>
6 <string>JavaScript</string>
7 <key>scopeName</key>
8 <string>source.js</string>
9 <key>fileTypes</key>
10 <array>
11 <string>ts</string>
12 </array>
13 <key>uuid</key>
14 <string>ef98eb90-bf9b-11e4-bb52-0800200c9a66</string>
15 <key>patterns</key>
16 <array>
17 <dict>
18 <key>include</key>
19 <string>#directives</string>
20 </dict>
21 <dict>
22 <key>include</key>
23 <string>#statements</string>
24 </dict>
25 <dict>
26 <key>include</key>
27 <string>#shebang</string>
28 </dict>
29 </array>
30 <key>repository</key>
31 <dict>
32 <key>shebang</key>
33 <dict>
34 <key>name</key>
35 <string>comment.line.shebang.ts</string>
36 <key>match</key>
37 <string>\A(#!).*(?=$)</string>
38 <key>captures</key>
39 <dict>
40 <key>1</key>
41 <dict>
42 <key>name</key>
43 <string>punctuation.definition.comment.ts</string>
44 </dict>
45 </dict>
46 </dict>
47 <key>statements</key>
48 <dict>
49 <key>patterns</key>
50 <array>
51 <dict>
52 <key>include</key>
53 <string>#declaration</string>
54 </dict>
55 <dict>
56 <key>include</key>
57 <string>#control-statement</string>
58 </dict>
59 <dict>
60 <key>include</key>
61 <string>#after-operator-block-as-object-literal</string>
62 </dict>
63 <dict>
64 <key>include</key>
65 <string>#decl-block</string>
66 </dict>
67 <dict>
68 <key>include</key>
69 <string>#label</string>
70 </dict>
71 <dict>
72 <key>include</key>
73 <string>#expression</string>
74 </dict>
75 <dict>
76 <key>include</key>
77 <string>#punctuation-semicolon</string>
78 </dict>
79 <dict>
80 <key>include</key>
81 <string>#string</string>
82 </dict>
83 <dict>
84 <key>include</key>
85 <string>#comment</string>
86 </dict>
87 </array>
88 </dict>
89 <key>declaration</key>
90 <dict>
91 <key>patterns</key>
92 <array>
93 <dict>
94 <key>include</key>
95 <string>#decorator</string>
96 </dict>
97 <dict>
98 <key>include</key>
99 <string>#var-expr</string>
100 </dict>
101 <dict>
102 <key>include</key>
103 <string>#function-declaration</string>
104 </dict>
105 <dict>
106 <key>include</key>
107 <string>#class-declaration</string>
108 </dict>
109 <dict>
110 <key>include</key>
111 <string>#interface-declaration</string>
112 </dict>
113 <dict>
114 <key>include</key>
115 <string>#enum-declaration</string>
116 </dict>
117 <dict>
118 <key>include</key>
119 <string>#namespace-declaration</string>
120 </dict>
121 <dict>
122 <key>include</key>
123 <string>#type-alias-declaration</string>
124 </dict>
125 <dict>
126 <key>include</key>
127 <string>#import-equals-declaration</string>
128 </dict>
129 <dict>
130 <key>include</key>
131 <string>#import-declaration</string>
132 </dict>
133 <dict>
134 <key>include</key>
135 <string>#export-declaration</string>
136 </dict>
137 <dict>
138 <key>name</key>
139 <string>storage.modifier.ts</string>
140 <key>match</key>
141 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(declare|export)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
142 </dict>
143 </array>
144 </dict>
145 <key>control-statement</key>
146 <dict>
147 <key>patterns</key>
148 <array>
149 <dict>
150 <key>include</key>
151 <string>#switch-statement</string>
152 </dict>
153 <dict>
154 <key>include</key>
155 <string>#for-loop</string>
156 </dict>
157 <dict>
158 <key>name</key>
159 <string>keyword.control.trycatch.ts</string>
160 <key>match</key>
161 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
162 </dict>
163 <dict>
164 <key>match</key>
165 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(break|continue|goto)\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
166 <key>captures</key>
167 <dict>
168 <key>1</key>
169 <dict>
170 <key>name</key>
171 <string>keyword.control.loop.ts</string>
172 </dict>
173 <key>2</key>
174 <dict>
175 <key>name</key>
176 <string>entity.name.label.ts</string>
177 </dict>
178 </dict>
179 </dict>
180 <dict>
181 <key>name</key>
182 <string>keyword.control.loop.ts</string>
183 <key>match</key>
184 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
185 </dict>
186 <dict>
187 <key>begin</key>
188 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(return)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
189 <key>beginCaptures</key>
190 <dict>
191 <key>0</key>
192 <dict>
193 <key>name</key>
194 <string>keyword.control.flow.ts</string>
195 </dict>
196 </dict>
197 <key>end</key>
198 <string>(?=[;}]|$|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))</string>
199 <key>patterns</key>
200 <array>
201 <dict>
202 <key>include</key>
203 <string>#expression</string>
204 </dict>
205 </array>
206 </dict>
207 <dict>
208 <key>name</key>
209 <string>keyword.control.switch.ts</string>
210 <key>match</key>
211 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
212 </dict>
213 <dict>
214 <key>include</key>
215 <string>#if-statement</string>
216 </dict>
217 <dict>
218 <key>name</key>
219 <string>keyword.control.conditional.ts</string>
220 <key>match</key>
221 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(else|if)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
222 </dict>
223 <dict>
224 <key>name</key>
225 <string>keyword.control.with.ts</string>
226 <key>match</key>
227 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(with)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
228 </dict>
229 <dict>
230 <key>name</key>
231 <string>keyword.control.ts</string>
232 <key>match</key>
233 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(package)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
234 </dict>
235 <dict>
236 <key>name</key>
237 <string>keyword.other.debugger.ts</string>
238 <key>match</key>
239 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(debugger)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
240 </dict>
241 </array>
242 </dict>
243 <key>label</key>
244 <dict>
245 <key>patterns</key>
246 <array>
247 <dict>
248 <key>begin</key>
249 <string>([_$[:alpha:]][_$[:alnum:]]*)\s*(:)(?=\s*\{)</string>
250 <key>beginCaptures</key>
251 <dict>
252 <key>1</key>
253 <dict>
254 <key>name</key>
255 <string>entity.name.label.ts</string>
256 </dict>
257 <key>2</key>
258 <dict>
259 <key>name</key>
260 <string>punctuation.separator.label.ts</string>
261 </dict>
262 </dict>
263 <key>end</key>
264 <string>(?&lt;=\})</string>
265 <key>patterns</key>
266 <array>
267 <dict>
268 <key>include</key>
269 <string>#decl-block</string>
270 </dict>
271 </array>
272 </dict>
273 <dict>
274 <key>match</key>
275 <string>([_$[:alpha:]][_$[:alnum:]]*)\s*(:)</string>
276 <key>captures</key>
277 <dict>
278 <key>1</key>
279 <dict>
280 <key>name</key>
281 <string>entity.name.label.ts</string>
282 </dict>
283 <key>2</key>
284 <dict>
285 <key>name</key>
286 <string>punctuation.separator.label.ts</string>
287 </dict>
288 </dict>
289 </dict>
290 </array>
291 </dict>
292 <key>expression</key>
293 <dict>
294 <key>patterns</key>
295 <array>
296 <dict>
297 <key>include</key>
298 <string>#expressionWithoutIdentifiers</string>
299 </dict>
300 <dict>
301 <key>include</key>
302 <string>#identifiers</string>
303 </dict>
304 <dict>
305 <key>include</key>
306 <string>#expressionPunctuations</string>
307 </dict>
308 </array>
309 </dict>
310 <key>expressionWithoutIdentifiers</key>
311 <dict>
312 <key>patterns</key>
313 <array>
314 <dict>
315 <key>include</key>
316 <string>#string</string>
317 </dict>
318 <dict>
319 <key>include</key>
320 <string>#regex</string>
321 </dict>
322 <dict>
323 <key>include</key>
324 <string>#comment</string>
325 </dict>
326 <dict>
327 <key>include</key>
328 <string>#function-expression</string>
329 </dict>
330 <dict>
331 <key>include</key>
332 <string>#class-expression</string>
333 </dict>
334 <dict>
335 <key>include</key>
336 <string>#arrow-function</string>
337 </dict>
338 <dict>
339 <key>include</key>
340 <string>#paren-expression-possibly-arrow</string>
341 </dict>
342 <dict>
343 <key>include</key>
344 <string>#cast</string>
345 </dict>
346 <dict>
347 <key>include</key>
348 <string>#ternary-expression</string>
349 </dict>
350 <dict>
351 <key>include</key>
352 <string>#new-expr</string>
353 </dict>
354 <dict>
355 <key>include</key>
356 <string>#instanceof-expr</string>
357 </dict>
358 <dict>
359 <key>include</key>
360 <string>#object-literal</string>
361 </dict>
362 <dict>
363 <key>include</key>
364 <string>#expression-operators</string>
365 </dict>
366 <dict>
367 <key>include</key>
368 <string>#function-call</string>
369 </dict>
370 <dict>
371 <key>include</key>
372 <string>#literal</string>
373 </dict>
374 <dict>
375 <key>include</key>
376 <string>#support-objects</string>
377 </dict>
378 <dict>
379 <key>include</key>
380 <string>#paren-expression</string>
381 </dict>
382 </array>
383 </dict>
384 <key>expressionPunctuations</key>
385 <dict>
386 <key>patterns</key>
387 <array>
388 <dict>
389 <key>include</key>
390 <string>#punctuation-comma</string>
391 </dict>
392 <dict>
393 <key>include</key>
394 <string>#punctuation-accessor</string>
395 </dict>
396 </array>
397 </dict>
398 <key>decorator</key>
399 <dict>
400 <key>name</key>
401 <string>meta.decorator.ts</string>
402 <key>begin</key>
403 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))\@</string>
404 <key>beginCaptures</key>
405 <dict>
406 <key>0</key>
407 <dict>
408 <key>name</key>
409 <string>punctuation.decorator.ts</string>
410 </dict>
411 </dict>
412 <key>end</key>
413 <string>(?=\s)</string>
414 <key>patterns</key>
415 <array>
416 <dict>
417 <key>include</key>
418 <string>#expression</string>
419 </dict>
420 </array>
421 </dict>
422 <key>var-expr</key>
423 <dict>
424 <key>patterns</key>
425 <array>
426 <dict>
427 <key>name</key>
428 <string>meta.var.expr.ts</string>
429 <key>begin</key>
430 <string>(?=(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(var|let)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))</string>
431 <key>end</key>
432 <string>(?!(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(var|let)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))((?=^|;|}|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))|((?&lt;!^let|[^\._$[:alnum:]]let|^var|[^\._$[:alnum:]]var)(?=\s*$)))</string>
433 <key>patterns</key>
434 <array>
435 <dict>
436 <key>begin</key>
437 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(var|let)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*</string>
438 <key>beginCaptures</key>
439 <dict>
440 <key>1</key>
441 <dict>
442 <key>name</key>
443 <string>keyword.control.export.ts</string>
444 </dict>
445 <key>2</key>
446 <dict>
447 <key>name</key>
448 <string>storage.modifier.ts</string>
449 </dict>
450 <key>3</key>
451 <dict>
452 <key>name</key>
453 <string>storage.type.ts</string>
454 </dict>
455 </dict>
456 <key>end</key>
457 <string>(?=\S)</string>
458 </dict>
459 <dict>
460 <key>include</key>
461 <string>#destructuring-variable</string>
462 </dict>
463 <dict>
464 <key>include</key>
465 <string>#var-single-variable</string>
466 </dict>
467 <dict>
468 <key>include</key>
469 <string>#variable-initializer</string>
470 </dict>
471 <dict>
472 <key>include</key>
473 <string>#comment</string>
474 </dict>
475 <dict>
476 <key>begin</key>
477 <string>(,)\s*(?=$|\/\/)</string>
478 <key>beginCaptures</key>
479 <dict>
480 <key>1</key>
481 <dict>
482 <key>name</key>
483 <string>punctuation.separator.comma.ts</string>
484 </dict>
485 </dict>
486 <key>end</key>
487 <string>(?&lt;!,)(((?==|;|}|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|^\s*$))|((?&lt;=\S)(?=\s*$)))</string>
488 <key>patterns</key>
489 <array>
490 <dict>
491 <key>include</key>
492 <string>#single-line-comment-consuming-line-ending</string>
493 </dict>
494 <dict>
495 <key>include</key>
496 <string>#comment</string>
497 </dict>
498 <dict>
499 <key>include</key>
500 <string>#destructuring-variable</string>
501 </dict>
502 <dict>
503 <key>include</key>
504 <string>#var-single-variable</string>
505 </dict>
506 <dict>
507 <key>include</key>
508 <string>#punctuation-comma</string>
509 </dict>
510 </array>
511 </dict>
512 <dict>
513 <key>include</key>
514 <string>#punctuation-comma</string>
515 </dict>
516 </array>
517 </dict>
518 <dict>
519 <key>name</key>
520 <string>meta.var.expr.ts</string>
521 <key>begin</key>
522 <string>(?=(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(const(?!\s+enum\b))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))</string>
523 <key>beginCaptures</key>
524 <dict>
525 <key>1</key>
526 <dict>
527 <key>name</key>
528 <string>keyword.control.export.ts</string>
529 </dict>
530 <key>2</key>
531 <dict>
532 <key>name</key>
533 <string>storage.modifier.ts</string>
534 </dict>
535 <key>3</key>
536 <dict>
537 <key>name</key>
538 <string>storage.type.ts</string>
539 </dict>
540 </dict>
541 <key>end</key>
542 <string>(?!(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(const(?!\s+enum\b))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))((?=^|;|}|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))|((?&lt;!^const|[^\._$[:alnum:]]const)(?=\s*$)))</string>
543 <key>patterns</key>
544 <array>
545 <dict>
546 <key>begin</key>
547 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(const(?!\s+enum\b))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*</string>
548 <key>beginCaptures</key>
549 <dict>
550 <key>1</key>
551 <dict>
552 <key>name</key>
553 <string>keyword.control.export.ts</string>
554 </dict>
555 <key>2</key>
556 <dict>
557 <key>name</key>
558 <string>storage.modifier.ts</string>
559 </dict>
560 <key>3</key>
561 <dict>
562 <key>name</key>
563 <string>storage.type.ts</string>
564 </dict>
565 </dict>
566 <key>end</key>
567 <string>(?=\S)</string>
568 </dict>
569 <dict>
570 <key>include</key>
571 <string>#destructuring-const</string>
572 </dict>
573 <dict>
574 <key>include</key>
575 <string>#var-single-const</string>
576 </dict>
577 <dict>
578 <key>include</key>
579 <string>#variable-initializer</string>
580 </dict>
581 <dict>
582 <key>include</key>
583 <string>#comment</string>
584 </dict>
585 <dict>
586 <key>begin</key>
587 <string>(,)\s*(?=$|\/\/)</string>
588 <key>beginCaptures</key>
589 <dict>
590 <key>1</key>
591 <dict>
592 <key>name</key>
593 <string>punctuation.separator.comma.ts</string>
594 </dict>
595 </dict>
596 <key>end</key>
597 <string>(?&lt;!,)(((?==|;|}|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|^\s*$))|((?&lt;=\S)(?=\s*$)))</string>
598 <key>patterns</key>
599 <array>
600 <dict>
601 <key>include</key>
602 <string>#single-line-comment-consuming-line-ending</string>
603 </dict>
604 <dict>
605 <key>include</key>
606 <string>#comment</string>
607 </dict>
608 <dict>
609 <key>include</key>
610 <string>#destructuring-const</string>
611 </dict>
612 <dict>
613 <key>include</key>
614 <string>#var-single-const</string>
615 </dict>
616 <dict>
617 <key>include</key>
618 <string>#punctuation-comma</string>
619 </dict>
620 </array>
621 </dict>
622 <dict>
623 <key>include</key>
624 <string>#punctuation-comma</string>
625 </dict>
626 </array>
627 </dict>
628 <dict>
629 <key>name</key>
630 <string>meta.var.expr.ts</string>
631 <key>begin</key>
632 <string>(?=(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b((?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))</string>
633 <key>beginCaptures</key>
634 <dict>
635 <key>1</key>
636 <dict>
637 <key>name</key>
638 <string>keyword.control.export.ts</string>
639 </dict>
640 <key>2</key>
641 <dict>
642 <key>name</key>
643 <string>storage.modifier.ts</string>
644 </dict>
645 <key>3</key>
646 <dict>
647 <key>name</key>
648 <string>storage.type.ts</string>
649 </dict>
650 </dict>
651 <key>end</key>
652 <string>(?!(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b((?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))((?=;|}|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))|((?&lt;!^using|[^\._$[:alnum:]]using|^await\s+using|[^\._$[:alnum:]]await\s+using)(?=\s*$)))</string>
653 <key>patterns</key>
654 <array>
655 <dict>
656 <key>begin</key>
657 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b((?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*</string>
658 <key>beginCaptures</key>
659 <dict>
660 <key>1</key>
661 <dict>
662 <key>name</key>
663 <string>keyword.control.export.ts</string>
664 </dict>
665 <key>2</key>
666 <dict>
667 <key>name</key>
668 <string>storage.modifier.ts</string>
669 </dict>
670 <key>3</key>
671 <dict>
672 <key>name</key>
673 <string>storage.type.ts</string>
674 </dict>
675 </dict>
676 <key>end</key>
677 <string>(?=\S)</string>
678 </dict>
679 <dict>
680 <key>include</key>
681 <string>#var-single-const</string>
682 </dict>
683 <dict>
684 <key>include</key>
685 <string>#variable-initializer</string>
686 </dict>
687 <dict>
688 <key>include</key>
689 <string>#comment</string>
690 </dict>
691 <dict>
692 <key>begin</key>
693 <string>(,)\s*((?!\S)|(?=\/\/))</string>
694 <key>beginCaptures</key>
695 <dict>
696 <key>1</key>
697 <dict>
698 <key>name</key>
699 <string>punctuation.separator.comma.ts</string>
700 </dict>
701 </dict>
702 <key>end</key>
703 <string>(?&lt;!,)(((?==|;|}|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|^\s*$))|((?&lt;=\S)(?=\s*$)))</string>
704 <key>patterns</key>
705 <array>
706 <dict>
707 <key>include</key>
708 <string>#single-line-comment-consuming-line-ending</string>
709 </dict>
710 <dict>
711 <key>include</key>
712 <string>#comment</string>
713 </dict>
714 <dict>
715 <key>include</key>
716 <string>#var-single-const</string>
717 </dict>
718 <dict>
719 <key>include</key>
720 <string>#punctuation-comma</string>
721 </dict>
722 </array>
723 </dict>
724 <dict>
725 <key>include</key>
726 <string>#punctuation-comma</string>
727 </dict>
728 </array>
729 </dict>
730 </array>
731 </dict>
732 <key>var-single-variable</key>
733 <dict>
734 <key>patterns</key>
735 <array>
736 <dict>
737 <key>name</key>
738 <string>meta.var-single-variable.expr.ts</string>
739 <key>begin</key>
740 <string>(?x)([_$[:alpha:]][_$[:alnum:]]*)(\!)?(?=\s*
741# function assignment |
742(=\s*(
743 ((async\s+)?(
744 (function\s*[(&lt;*]) |
745 (function\s+) |
746 ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;)
747 )) |
748 ((async\s*)?(
749 ((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
750 # sure shot arrow functions even if =&gt; is on new line
751(
752 (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?
753 [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
754 (
755 ([)]\s*:) | # ():
756 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
757 )
758) |
759
760# arrow function possible to detect only with =&gt; on same line
761(
762 (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters
763 \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
764 (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
765 \s*=&gt; # arrow operator
766)
767 ))
768)) |
769# typeannotation is fn type: &lt; | () | (... | (param: | (param, | (param? | (param= | (param) =&gt;
770(:\s*(
771 (&lt;) |
772 ([(]\s*(
773 ([)]) |
774 (\.\.\.) |
775 ([_$[:alnum:]]+\s*(
776 ([:,?=])|
777 ([)]\s*=&gt;)
778 ))
779 ))
780)) |
781(:\s*(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))Function(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))) |
782(:\s*((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*))))))) |
783(:\s*(=&gt;|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(&lt;[^&lt;&gt;]*&gt;)|[^&lt;&gt;(),=])+=\s*(
784 ((async\s+)?(
785 (function\s*[(&lt;*]) |
786 (function\s+) |
787 ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;)
788 )) |
789 ((async\s*)?(
790 ((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
791 # sure shot arrow functions even if =&gt; is on new line
792(
793 (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?
794 [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
795 (
796 ([)]\s*:) | # ():
797 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
798 )
799) |
800
801# arrow function possible to detect only with =&gt; on same line
802(
803 (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters
804 \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
805 (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
806 \s*=&gt; # arrow operator
807)
808 ))
809)))</string>
810 <key>beginCaptures</key>
811 <dict>
812 <key>1</key>
813 <dict>
814 <key>name</key>
815 <string>meta.definition.variable.ts entity.name.function.ts</string>
816 </dict>
817 <key>2</key>
818 <dict>
819 <key>name</key>
820 <string>keyword.operator.definiteassignment.ts</string>
821 </dict>
822 </dict>
823 <key>end</key>
824 <string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|(;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b)))</string>
825 <key>patterns</key>
826 <array>
827 <dict>
828 <key>include</key>
829 <string>#var-single-variable-type-annotation</string>
830 </dict>
831 </array>
832 </dict>
833 <dict>
834 <key>name</key>
835 <string>meta.var-single-variable.expr.ts</string>
836 <key>begin</key>
837 <string>([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])(\!)?</string>
838 <key>beginCaptures</key>
839 <dict>
840 <key>1</key>
841 <dict>
842 <key>name</key>
843 <string>meta.definition.variable.ts variable.other.constant.ts</string>
844 </dict>
845 <key>2</key>
846 <dict>
847 <key>name</key>
848 <string>keyword.operator.definiteassignment.ts</string>
849 </dict>
850 </dict>
851 <key>end</key>
852 <string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|(;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b)))</string>
853 <key>patterns</key>
854 <array>
855 <dict>
856 <key>include</key>
857 <string>#var-single-variable-type-annotation</string>
858 </dict>
859 </array>
860 </dict>
861 <dict>
862 <key>name</key>
863 <string>meta.var-single-variable.expr.ts</string>
864 <key>begin</key>
865 <string>([_$[:alpha:]][_$[:alnum:]]*)(\!)?</string>
866 <key>beginCaptures</key>
867 <dict>
868 <key>1</key>
869 <dict>
870 <key>name</key>
871 <string>meta.definition.variable.ts variable.other.readwrite.ts</string>
872 </dict>
873 <key>2</key>
874 <dict>
875 <key>name</key>
876 <string>keyword.operator.definiteassignment.ts</string>
877 </dict>
878 </dict>
879 <key>end</key>
880 <string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|(;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b)))</string>
881 <key>patterns</key>
882 <array>
883 <dict>
884 <key>include</key>
885 <string>#var-single-variable-type-annotation</string>
886 </dict>
887 </array>
888 </dict>
889 </array>
890 </dict>
891 <key>var-single-const</key>
892 <dict>
893 <key>patterns</key>
894 <array>
895 <dict>
896 <key>name</key>
897 <string>meta.var-single-variable.expr.ts</string>
898 <key>begin</key>
899 <string>(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\s*
900# function assignment |
901(=\s*(
902 ((async\s+)?(
903 (function\s*[(&lt;*]) |
904 (function\s+) |
905 ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;)
906 )) |
907 ((async\s*)?(
908 ((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
909 # sure shot arrow functions even if =&gt; is on new line
910(
911 (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?
912 [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
913 (
914 ([)]\s*:) | # ():
915 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
916 )
917) |
918
919# arrow function possible to detect only with =&gt; on same line
920(
921 (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters
922 \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
923 (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
924 \s*=&gt; # arrow operator
925)
926 ))
927)) |
928# typeannotation is fn type: &lt; | () | (... | (param: | (param, | (param? | (param= | (param) =&gt;
929(:\s*(
930 (&lt;) |
931 ([(]\s*(
932 ([)]) |
933 (\.\.\.) |
934 ([_$[:alnum:]]+\s*(
935 ([:,?=])|
936 ([)]\s*=&gt;)
937 ))
938 ))
939)) |
940(:\s*(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))Function(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))) |
941(:\s*((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*))))))) |
942(:\s*(=&gt;|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(&lt;[^&lt;&gt;]*&gt;)|[^&lt;&gt;(),=])+=\s*(
943 ((async\s+)?(
944 (function\s*[(&lt;*]) |
945 (function\s+) |
946 ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;)
947 )) |
948 ((async\s*)?(
949 ((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
950 # sure shot arrow functions even if =&gt; is on new line
951(
952 (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?
953 [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
954 (
955 ([)]\s*:) | # ():
956 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
957 )
958) |
959
960# arrow function possible to detect only with =&gt; on same line
961(
962 (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters
963 \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
964 (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
965 \s*=&gt; # arrow operator
966)
967 ))
968)))</string>
969 <key>beginCaptures</key>
970 <dict>
971 <key>1</key>
972 <dict>
973 <key>name</key>
974 <string>meta.definition.variable.ts variable.other.constant.ts entity.name.function.ts</string>
975 </dict>
976 </dict>
977 <key>end</key>
978 <string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|(;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b)))</string>
979 <key>patterns</key>
980 <array>
981 <dict>
982 <key>include</key>
983 <string>#var-single-variable-type-annotation</string>
984 </dict>
985 </array>
986 </dict>
987 <dict>
988 <key>name</key>
989 <string>meta.var-single-variable.expr.ts</string>
990 <key>begin</key>
991 <string>([_$[:alpha:]][_$[:alnum:]]*)</string>
992 <key>beginCaptures</key>
993 <dict>
994 <key>1</key>
995 <dict>
996 <key>name</key>
997 <string>meta.definition.variable.ts variable.other.constant.ts</string>
998 </dict>
999 </dict>
1000 <key>end</key>
1001 <string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+)|(;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b)))</string>
1002 <key>patterns</key>
1003 <array>
1004 <dict>
1005 <key>include</key>
1006 <string>#var-single-variable-type-annotation</string>
1007 </dict>
1008 </array>
1009 </dict>
1010 </array>
1011 </dict>
1012 <key>var-single-variable-type-annotation</key>
1013 <dict>
1014 <key>patterns</key>
1015 <array>
1016 <dict>
1017 <key>include</key>
1018 <string>#type-annotation</string>
1019 </dict>
1020 <dict>
1021 <key>include</key>
1022 <string>#string</string>
1023 </dict>
1024 <dict>
1025 <key>include</key>
1026 <string>#comment</string>
1027 </dict>
1028 </array>
1029 </dict>
1030 <key>destructuring-variable</key>
1031 <dict>
1032 <key>patterns</key>
1033 <array>
1034 <dict>
1035 <key>name</key>
1036 <string>meta.object-binding-pattern-variable.ts</string>
1037 <key>begin</key>
1038 <string>(?&lt;!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\{)</string>
1039 <key>end</key>
1040 <string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+))</string>
1041 <key>patterns</key>
1042 <array>
1043 <dict>
1044 <key>include</key>
1045 <string>#object-binding-pattern</string>
1046 </dict>
1047 <dict>
1048 <key>include</key>
1049 <string>#type-annotation</string>
1050 </dict>
1051 <dict>
1052 <key>include</key>
1053 <string>#comment</string>
1054 </dict>
1055 </array>
1056 </dict>
1057 <dict>
1058 <key>name</key>
1059 <string>meta.array-binding-pattern-variable.ts</string>
1060 <key>begin</key>
1061 <string>(?&lt;!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\[)</string>
1062 <key>end</key>
1063 <string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+))</string>
1064 <key>patterns</key>
1065 <array>
1066 <dict>
1067 <key>include</key>
1068 <string>#array-binding-pattern</string>
1069 </dict>
1070 <dict>
1071 <key>include</key>
1072 <string>#type-annotation</string>
1073 </dict>
1074 <dict>
1075 <key>include</key>
1076 <string>#comment</string>
1077 </dict>
1078 </array>
1079 </dict>
1080 </array>
1081 </dict>
1082 <key>destructuring-const</key>
1083 <dict>
1084 <key>patterns</key>
1085 <array>
1086 <dict>
1087 <key>name</key>
1088 <string>meta.object-binding-pattern-variable.ts</string>
1089 <key>begin</key>
1090 <string>(?&lt;!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\{)</string>
1091 <key>end</key>
1092 <string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+))</string>
1093 <key>patterns</key>
1094 <array>
1095 <dict>
1096 <key>include</key>
1097 <string>#object-binding-pattern-const</string>
1098 </dict>
1099 <dict>
1100 <key>include</key>
1101 <string>#type-annotation</string>
1102 </dict>
1103 <dict>
1104 <key>include</key>
1105 <string>#comment</string>
1106 </dict>
1107 </array>
1108 </dict>
1109 <dict>
1110 <key>name</key>
1111 <string>meta.array-binding-pattern-variable.ts</string>
1112 <key>begin</key>
1113 <string>(?&lt;!=|:|^of|[^\._$[:alnum:]]of|^in|[^\._$[:alnum:]]in)\s*(?=\[)</string>
1114 <key>end</key>
1115 <string>(?=$|^|[;,=}]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+))</string>
1116 <key>patterns</key>
1117 <array>
1118 <dict>
1119 <key>include</key>
1120 <string>#array-binding-pattern-const</string>
1121 </dict>
1122 <dict>
1123 <key>include</key>
1124 <string>#type-annotation</string>
1125 </dict>
1126 <dict>
1127 <key>include</key>
1128 <string>#comment</string>
1129 </dict>
1130 </array>
1131 </dict>
1132 </array>
1133 </dict>
1134 <key>object-binding-element</key>
1135 <dict>
1136 <key>patterns</key>
1137 <array>
1138 <dict>
1139 <key>include</key>
1140 <string>#comment</string>
1141 </dict>
1142 <dict>
1143 <key>begin</key>
1144 <string>(?x)(?=((\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?:
1145 (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
1146 (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
1147 (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
1148 (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
1149 (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
1150 (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
1151 (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
1152 (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
1153)(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(:))</string>
1154 <key>end</key>
1155 <string>(?=,|\})</string>
1156 <key>patterns</key>
1157 <array>
1158 <dict>
1159 <key>include</key>
1160 <string>#object-binding-element-propertyName</string>
1161 </dict>
1162 <dict>
1163 <key>include</key>
1164 <string>#binding-element</string>
1165 </dict>
1166 </array>
1167 </dict>
1168 <dict>
1169 <key>include</key>
1170 <string>#object-binding-pattern</string>
1171 </dict>
1172 <dict>
1173 <key>include</key>
1174 <string>#destructuring-variable-rest</string>
1175 </dict>
1176 <dict>
1177 <key>include</key>
1178 <string>#variable-initializer</string>
1179 </dict>
1180 <dict>
1181 <key>include</key>
1182 <string>#punctuation-comma</string>
1183 </dict>
1184 </array>
1185 </dict>
1186 <key>object-binding-element-const</key>
1187 <dict>
1188 <key>patterns</key>
1189 <array>
1190 <dict>
1191 <key>include</key>
1192 <string>#comment</string>
1193 </dict>
1194 <dict>
1195 <key>begin</key>
1196 <string>(?x)(?=((\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?:
1197 (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
1198 (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
1199 (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
1200 (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
1201 (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
1202 (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
1203 (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
1204 (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
1205)(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(:))</string>
1206 <key>end</key>
1207 <string>(?=,|\})</string>
1208 <key>patterns</key>
1209 <array>
1210 <dict>
1211 <key>include</key>
1212 <string>#object-binding-element-propertyName</string>
1213 </dict>
1214 <dict>
1215 <key>include</key>
1216 <string>#binding-element-const</string>
1217 </dict>
1218 </array>
1219 </dict>
1220 <dict>
1221 <key>include</key>
1222 <string>#object-binding-pattern-const</string>
1223 </dict>
1224 <dict>
1225 <key>include</key>
1226 <string>#destructuring-variable-rest-const</string>
1227 </dict>
1228 <dict>
1229 <key>include</key>
1230 <string>#variable-initializer</string>
1231 </dict>
1232 <dict>
1233 <key>include</key>
1234 <string>#punctuation-comma</string>
1235 </dict>
1236 </array>
1237 </dict>
1238 <key>object-binding-element-propertyName</key>
1239 <dict>
1240 <key>begin</key>
1241 <string>(?x)(?=((\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?:
1242 (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
1243 (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
1244 (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
1245 (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
1246 (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
1247 (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
1248 (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
1249 (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
1250)(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(:))</string>
1251 <key>end</key>
1252 <string>(:)</string>
1253 <key>endCaptures</key>
1254 <dict>
1255 <key>0</key>
1256 <dict>
1257 <key>name</key>
1258 <string>punctuation.destructuring.ts</string>
1259 </dict>
1260 </dict>
1261 <key>patterns</key>
1262 <array>
1263 <dict>
1264 <key>include</key>
1265 <string>#string</string>
1266 </dict>
1267 <dict>
1268 <key>include</key>
1269 <string>#array-literal</string>
1270 </dict>
1271 <dict>
1272 <key>include</key>
1273 <string>#numeric-literal</string>
1274 </dict>
1275 <dict>
1276 <key>name</key>
1277 <string>variable.object.property.ts</string>
1278 <key>match</key>
1279 <string>([_$[:alpha:]][_$[:alnum:]]*)</string>
1280 </dict>
1281 </array>
1282 </dict>
1283 <key>binding-element</key>
1284 <dict>
1285 <key>patterns</key>
1286 <array>
1287 <dict>
1288 <key>include</key>
1289 <string>#comment</string>
1290 </dict>
1291 <dict>
1292 <key>include</key>
1293 <string>#string</string>
1294 </dict>
1295 <dict>
1296 <key>include</key>
1297 <string>#numeric-literal</string>
1298 </dict>
1299 <dict>
1300 <key>include</key>
1301 <string>#regex</string>
1302 </dict>
1303 <dict>
1304 <key>include</key>
1305 <string>#object-binding-pattern</string>
1306 </dict>
1307 <dict>
1308 <key>include</key>
1309 <string>#array-binding-pattern</string>
1310 </dict>
1311 <dict>
1312 <key>include</key>
1313 <string>#destructuring-variable-rest</string>
1314 </dict>
1315 <dict>
1316 <key>include</key>
1317 <string>#variable-initializer</string>
1318 </dict>
1319 </array>
1320 </dict>
1321 <key>binding-element-const</key>
1322 <dict>
1323 <key>patterns</key>
1324 <array>
1325 <dict>
1326 <key>include</key>
1327 <string>#comment</string>
1328 </dict>
1329 <dict>
1330 <key>include</key>
1331 <string>#string</string>
1332 </dict>
1333 <dict>
1334 <key>include</key>
1335 <string>#numeric-literal</string>
1336 </dict>
1337 <dict>
1338 <key>include</key>
1339 <string>#regex</string>
1340 </dict>
1341 <dict>
1342 <key>include</key>
1343 <string>#object-binding-pattern-const</string>
1344 </dict>
1345 <dict>
1346 <key>include</key>
1347 <string>#array-binding-pattern-const</string>
1348 </dict>
1349 <dict>
1350 <key>include</key>
1351 <string>#destructuring-variable-rest-const</string>
1352 </dict>
1353 <dict>
1354 <key>include</key>
1355 <string>#variable-initializer</string>
1356 </dict>
1357 </array>
1358 </dict>
1359 <key>destructuring-variable-rest</key>
1360 <dict>
1361 <key>match</key>
1362 <string>(?:(\.\.\.)\s*)?([_$[:alpha:]][_$[:alnum:]]*)</string>
1363 <key>captures</key>
1364 <dict>
1365 <key>1</key>
1366 <dict>
1367 <key>name</key>
1368 <string>keyword.operator.rest.ts</string>
1369 </dict>
1370 <key>2</key>
1371 <dict>
1372 <key>name</key>
1373 <string>meta.definition.variable.ts variable.other.readwrite.ts</string>
1374 </dict>
1375 </dict>
1376 </dict>
1377 <key>destructuring-variable-rest-const</key>
1378 <dict>
1379 <key>match</key>
1380 <string>(?:(\.\.\.)\s*)?([_$[:alpha:]][_$[:alnum:]]*)</string>
1381 <key>captures</key>
1382 <dict>
1383 <key>1</key>
1384 <dict>
1385 <key>name</key>
1386 <string>keyword.operator.rest.ts</string>
1387 </dict>
1388 <key>2</key>
1389 <dict>
1390 <key>name</key>
1391 <string>meta.definition.variable.ts variable.other.constant.ts</string>
1392 </dict>
1393 </dict>
1394 </dict>
1395 <key>object-binding-pattern</key>
1396 <dict>
1397 <key>begin</key>
1398 <string>(?:(\.\.\.)\s*)?(\{)</string>
1399 <key>beginCaptures</key>
1400 <dict>
1401 <key>1</key>
1402 <dict>
1403 <key>name</key>
1404 <string>keyword.operator.rest.ts</string>
1405 </dict>
1406 <key>2</key>
1407 <dict>
1408 <key>name</key>
1409 <string>punctuation.definition.binding-pattern.object.ts</string>
1410 </dict>
1411 </dict>
1412 <key>end</key>
1413 <string>\}</string>
1414 <key>endCaptures</key>
1415 <dict>
1416 <key>0</key>
1417 <dict>
1418 <key>name</key>
1419 <string>punctuation.definition.binding-pattern.object.ts</string>
1420 </dict>
1421 </dict>
1422 <key>patterns</key>
1423 <array>
1424 <dict>
1425 <key>include</key>
1426 <string>#object-binding-element</string>
1427 </dict>
1428 </array>
1429 </dict>
1430 <key>object-binding-pattern-const</key>
1431 <dict>
1432 <key>begin</key>
1433 <string>(?:(\.\.\.)\s*)?(\{)</string>
1434 <key>beginCaptures</key>
1435 <dict>
1436 <key>1</key>
1437 <dict>
1438 <key>name</key>
1439 <string>keyword.operator.rest.ts</string>
1440 </dict>
1441 <key>2</key>
1442 <dict>
1443 <key>name</key>
1444 <string>punctuation.definition.binding-pattern.object.ts</string>
1445 </dict>
1446 </dict>
1447 <key>end</key>
1448 <string>\}</string>
1449 <key>endCaptures</key>
1450 <dict>
1451 <key>0</key>
1452 <dict>
1453 <key>name</key>
1454 <string>punctuation.definition.binding-pattern.object.ts</string>
1455 </dict>
1456 </dict>
1457 <key>patterns</key>
1458 <array>
1459 <dict>
1460 <key>include</key>
1461 <string>#object-binding-element-const</string>
1462 </dict>
1463 </array>
1464 </dict>
1465 <key>array-binding-pattern</key>
1466 <dict>
1467 <key>begin</key>
1468 <string>(?:(\.\.\.)\s*)?(\[)</string>
1469 <key>beginCaptures</key>
1470 <dict>
1471 <key>1</key>
1472 <dict>
1473 <key>name</key>
1474 <string>keyword.operator.rest.ts</string>
1475 </dict>
1476 <key>2</key>
1477 <dict>
1478 <key>name</key>
1479 <string>punctuation.definition.binding-pattern.array.ts</string>
1480 </dict>
1481 </dict>
1482 <key>end</key>
1483 <string>\]</string>
1484 <key>endCaptures</key>
1485 <dict>
1486 <key>0</key>
1487 <dict>
1488 <key>name</key>
1489 <string>punctuation.definition.binding-pattern.array.ts</string>
1490 </dict>
1491 </dict>
1492 <key>patterns</key>
1493 <array>
1494 <dict>
1495 <key>include</key>
1496 <string>#binding-element</string>
1497 </dict>
1498 <dict>
1499 <key>include</key>
1500 <string>#punctuation-comma</string>
1501 </dict>
1502 </array>
1503 </dict>
1504 <key>array-binding-pattern-const</key>
1505 <dict>
1506 <key>begin</key>
1507 <string>(?:(\.\.\.)\s*)?(\[)</string>
1508 <key>beginCaptures</key>
1509 <dict>
1510 <key>1</key>
1511 <dict>
1512 <key>name</key>
1513 <string>keyword.operator.rest.ts</string>
1514 </dict>
1515 <key>2</key>
1516 <dict>
1517 <key>name</key>
1518 <string>punctuation.definition.binding-pattern.array.ts</string>
1519 </dict>
1520 </dict>
1521 <key>end</key>
1522 <string>\]</string>
1523 <key>endCaptures</key>
1524 <dict>
1525 <key>0</key>
1526 <dict>
1527 <key>name</key>
1528 <string>punctuation.definition.binding-pattern.array.ts</string>
1529 </dict>
1530 </dict>
1531 <key>patterns</key>
1532 <array>
1533 <dict>
1534 <key>include</key>
1535 <string>#binding-element-const</string>
1536 </dict>
1537 <dict>
1538 <key>include</key>
1539 <string>#punctuation-comma</string>
1540 </dict>
1541 </array>
1542 </dict>
1543 <key>parameter-name</key>
1544 <dict>
1545 <key>patterns</key>
1546 <array>
1547 <dict>
1548 <key>match</key>
1549 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(override|public|protected|private|readonly)\s+(?=(override|public|protected|private|readonly)\s+)</string>
1550 <key>captures</key>
1551 <dict>
1552 <key>1</key>
1553 <dict>
1554 <key>name</key>
1555 <string>storage.modifier.ts</string>
1556 </dict>
1557 </dict>
1558 </dict>
1559 <dict>
1560 <key>match</key>
1561 <string>(?x)(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(override|public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?&lt;!=|:)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)(?=\s*
1562# function assignment |
1563(=\s*(
1564 ((async\s+)?(
1565 (function\s*[(&lt;*]) |
1566 (function\s+) |
1567 ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;)
1568 )) |
1569 ((async\s*)?(
1570 ((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
1571 # sure shot arrow functions even if =&gt; is on new line
1572(
1573 (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?
1574 [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
1575 (
1576 ([)]\s*:) | # ():
1577 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
1578 )
1579) |
1580
1581# arrow function possible to detect only with =&gt; on same line
1582(
1583 (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters
1584 \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
1585 (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
1586 \s*=&gt; # arrow operator
1587)
1588 ))
1589)) |
1590# typeannotation is fn type: &lt; | () | (... | (param: | (param, | (param? | (param= | (param) =&gt;
1591(:\s*(
1592 (&lt;) |
1593 ([(]\s*(
1594 ([)]) |
1595 (\.\.\.) |
1596 ([_$[:alnum:]]+\s*(
1597 ([:,?=])|
1598 ([)]\s*=&gt;)
1599 ))
1600 ))
1601)) |
1602(:\s*(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))Function(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))) |
1603(:\s*((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*))))))) |
1604(:\s*(=&gt;|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(&lt;[^&lt;&gt;]*&gt;)|[^&lt;&gt;(),=])+=\s*(
1605 ((async\s+)?(
1606 (function\s*[(&lt;*]) |
1607 (function\s+) |
1608 ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;)
1609 )) |
1610 ((async\s*)?(
1611 ((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
1612 # sure shot arrow functions even if =&gt; is on new line
1613(
1614 (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?
1615 [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
1616 (
1617 ([)]\s*:) | # ():
1618 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
1619 )
1620) |
1621
1622# arrow function possible to detect only with =&gt; on same line
1623(
1624 (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters
1625 \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
1626 (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
1627 \s*=&gt; # arrow operator
1628)
1629 ))
1630)))</string>
1631 <key>captures</key>
1632 <dict>
1633 <key>1</key>
1634 <dict>
1635 <key>name</key>
1636 <string>storage.modifier.ts</string>
1637 </dict>
1638 <key>2</key>
1639 <dict>
1640 <key>name</key>
1641 <string>keyword.operator.rest.ts</string>
1642 </dict>
1643 <key>3</key>
1644 <dict>
1645 <key>name</key>
1646 <string>entity.name.function.ts variable.language.this.ts</string>
1647 </dict>
1648 <key>4</key>
1649 <dict>
1650 <key>name</key>
1651 <string>entity.name.function.ts</string>
1652 </dict>
1653 <key>5</key>
1654 <dict>
1655 <key>name</key>
1656 <string>keyword.operator.optional.ts</string>
1657 </dict>
1658 </dict>
1659 </dict>
1660 <dict>
1661 <key>match</key>
1662 <string>(?x)(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(override|public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?&lt;!=|:)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)</string>
1663 <key>captures</key>
1664 <dict>
1665 <key>1</key>
1666 <dict>
1667 <key>name</key>
1668 <string>storage.modifier.ts</string>
1669 </dict>
1670 <key>2</key>
1671 <dict>
1672 <key>name</key>
1673 <string>keyword.operator.rest.ts</string>
1674 </dict>
1675 <key>3</key>
1676 <dict>
1677 <key>name</key>
1678 <string>variable.parameter.ts variable.language.this.ts</string>
1679 </dict>
1680 <key>4</key>
1681 <dict>
1682 <key>name</key>
1683 <string>variable.parameter.ts</string>
1684 </dict>
1685 <key>5</key>
1686 <dict>
1687 <key>name</key>
1688 <string>keyword.operator.optional.ts</string>
1689 </dict>
1690 </dict>
1691 </dict>
1692 </array>
1693 </dict>
1694 <key>destructuring-parameter</key>
1695 <dict>
1696 <key>patterns</key>
1697 <array>
1698 <dict>
1699 <key>name</key>
1700 <string>meta.parameter.object-binding-pattern.ts</string>
1701 <key>begin</key>
1702 <string>(?&lt;!=|:)\s*(?:(\.\.\.)\s*)?(\{)</string>
1703 <key>beginCaptures</key>
1704 <dict>
1705 <key>1</key>
1706 <dict>
1707 <key>name</key>
1708 <string>keyword.operator.rest.ts</string>
1709 </dict>
1710 <key>2</key>
1711 <dict>
1712 <key>name</key>
1713 <string>punctuation.definition.binding-pattern.object.ts</string>
1714 </dict>
1715 </dict>
1716 <key>end</key>
1717 <string>\}</string>
1718 <key>endCaptures</key>
1719 <dict>
1720 <key>0</key>
1721 <dict>
1722 <key>name</key>
1723 <string>punctuation.definition.binding-pattern.object.ts</string>
1724 </dict>
1725 </dict>
1726 <key>patterns</key>
1727 <array>
1728 <dict>
1729 <key>include</key>
1730 <string>#parameter-object-binding-element</string>
1731 </dict>
1732 </array>
1733 </dict>
1734 <dict>
1735 <key>name</key>
1736 <string>meta.paramter.array-binding-pattern.ts</string>
1737 <key>begin</key>
1738 <string>(?&lt;!=|:)\s*(?:(\.\.\.)\s*)?(\[)</string>
1739 <key>beginCaptures</key>
1740 <dict>
1741 <key>1</key>
1742 <dict>
1743 <key>name</key>
1744 <string>keyword.operator.rest.ts</string>
1745 </dict>
1746 <key>2</key>
1747 <dict>
1748 <key>name</key>
1749 <string>punctuation.definition.binding-pattern.array.ts</string>
1750 </dict>
1751 </dict>
1752 <key>end</key>
1753 <string>\]</string>
1754 <key>endCaptures</key>
1755 <dict>
1756 <key>0</key>
1757 <dict>
1758 <key>name</key>
1759 <string>punctuation.definition.binding-pattern.array.ts</string>
1760 </dict>
1761 </dict>
1762 <key>patterns</key>
1763 <array>
1764 <dict>
1765 <key>include</key>
1766 <string>#parameter-binding-element</string>
1767 </dict>
1768 <dict>
1769 <key>include</key>
1770 <string>#punctuation-comma</string>
1771 </dict>
1772 </array>
1773 </dict>
1774 </array>
1775 </dict>
1776 <key>parameter-object-binding-element</key>
1777 <dict>
1778 <key>patterns</key>
1779 <array>
1780 <dict>
1781 <key>include</key>
1782 <string>#comment</string>
1783 </dict>
1784 <dict>
1785 <key>begin</key>
1786 <string>(?x)(?=((\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?:
1787 (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
1788 (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
1789 (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
1790 (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
1791 (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
1792 (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
1793 (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
1794 (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
1795)(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(:))</string>
1796 <key>end</key>
1797 <string>(?=,|\})</string>
1798 <key>patterns</key>
1799 <array>
1800 <dict>
1801 <key>include</key>
1802 <string>#object-binding-element-propertyName</string>
1803 </dict>
1804 <dict>
1805 <key>include</key>
1806 <string>#parameter-binding-element</string>
1807 </dict>
1808 <dict>
1809 <key>include</key>
1810 <string>#paren-expression</string>
1811 </dict>
1812 </array>
1813 </dict>
1814 <dict>
1815 <key>include</key>
1816 <string>#parameter-object-binding-pattern</string>
1817 </dict>
1818 <dict>
1819 <key>include</key>
1820 <string>#destructuring-parameter-rest</string>
1821 </dict>
1822 <dict>
1823 <key>include</key>
1824 <string>#variable-initializer</string>
1825 </dict>
1826 <dict>
1827 <key>include</key>
1828 <string>#punctuation-comma</string>
1829 </dict>
1830 </array>
1831 </dict>
1832 <key>parameter-binding-element</key>
1833 <dict>
1834 <key>patterns</key>
1835 <array>
1836 <dict>
1837 <key>include</key>
1838 <string>#comment</string>
1839 </dict>
1840 <dict>
1841 <key>include</key>
1842 <string>#string</string>
1843 </dict>
1844 <dict>
1845 <key>include</key>
1846 <string>#numeric-literal</string>
1847 </dict>
1848 <dict>
1849 <key>include</key>
1850 <string>#regex</string>
1851 </dict>
1852 <dict>
1853 <key>include</key>
1854 <string>#parameter-object-binding-pattern</string>
1855 </dict>
1856 <dict>
1857 <key>include</key>
1858 <string>#parameter-array-binding-pattern</string>
1859 </dict>
1860 <dict>
1861 <key>include</key>
1862 <string>#destructuring-parameter-rest</string>
1863 </dict>
1864 <dict>
1865 <key>include</key>
1866 <string>#variable-initializer</string>
1867 </dict>
1868 </array>
1869 </dict>
1870 <key>destructuring-parameter-rest</key>
1871 <dict>
1872 <key>match</key>
1873 <string>(?:(\.\.\.)\s*)?([_$[:alpha:]][_$[:alnum:]]*)</string>
1874 <key>captures</key>
1875 <dict>
1876 <key>1</key>
1877 <dict>
1878 <key>name</key>
1879 <string>keyword.operator.rest.ts</string>
1880 </dict>
1881 <key>2</key>
1882 <dict>
1883 <key>name</key>
1884 <string>variable.parameter.ts</string>
1885 </dict>
1886 </dict>
1887 </dict>
1888 <key>parameter-object-binding-pattern</key>
1889 <dict>
1890 <key>begin</key>
1891 <string>(?:(\.\.\.)\s*)?(\{)</string>
1892 <key>beginCaptures</key>
1893 <dict>
1894 <key>1</key>
1895 <dict>
1896 <key>name</key>
1897 <string>keyword.operator.rest.ts</string>
1898 </dict>
1899 <key>2</key>
1900 <dict>
1901 <key>name</key>
1902 <string>punctuation.definition.binding-pattern.object.ts</string>
1903 </dict>
1904 </dict>
1905 <key>end</key>
1906 <string>\}</string>
1907 <key>endCaptures</key>
1908 <dict>
1909 <key>0</key>
1910 <dict>
1911 <key>name</key>
1912 <string>punctuation.definition.binding-pattern.object.ts</string>
1913 </dict>
1914 </dict>
1915 <key>patterns</key>
1916 <array>
1917 <dict>
1918 <key>include</key>
1919 <string>#parameter-object-binding-element</string>
1920 </dict>
1921 </array>
1922 </dict>
1923 <key>parameter-array-binding-pattern</key>
1924 <dict>
1925 <key>begin</key>
1926 <string>(?:(\.\.\.)\s*)?(\[)</string>
1927 <key>beginCaptures</key>
1928 <dict>
1929 <key>1</key>
1930 <dict>
1931 <key>name</key>
1932 <string>keyword.operator.rest.ts</string>
1933 </dict>
1934 <key>2</key>
1935 <dict>
1936 <key>name</key>
1937 <string>punctuation.definition.binding-pattern.array.ts</string>
1938 </dict>
1939 </dict>
1940 <key>end</key>
1941 <string>\]</string>
1942 <key>endCaptures</key>
1943 <dict>
1944 <key>0</key>
1945 <dict>
1946 <key>name</key>
1947 <string>punctuation.definition.binding-pattern.array.ts</string>
1948 </dict>
1949 </dict>
1950 <key>patterns</key>
1951 <array>
1952 <dict>
1953 <key>include</key>
1954 <string>#parameter-binding-element</string>
1955 </dict>
1956 <dict>
1957 <key>include</key>
1958 <string>#punctuation-comma</string>
1959 </dict>
1960 </array>
1961 </dict>
1962 <key>field-declaration</key>
1963 <dict>
1964 <key>name</key>
1965 <string>meta.field.declaration.ts</string>
1966 <key>begin</key>
1967 <string>(?x)(?&lt;!\()(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(readonly)\s+)?(?=\s*((\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?:
1968 (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
1969 (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
1970 (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
1971 (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
1972 (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
1973 (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
1974 (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
1975 (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
1976)(?!\$))|(\#?[_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(?:(?:(\?)|(\!))\s*)?(=|:|;|,|\}|$))</string>
1977 <key>beginCaptures</key>
1978 <dict>
1979 <key>1</key>
1980 <dict>
1981 <key>name</key>
1982 <string>storage.modifier.ts</string>
1983 </dict>
1984 </dict>
1985 <key>end</key>
1986 <string>(?x)(?=\}|;|,|$|(^(?!\s*((\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?:
1987 (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
1988 (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
1989 (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
1990 (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
1991 (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
1992 (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
1993 (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
1994 (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
1995)(?!\$))|(\#?[_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(?:(?:(\?)|(\!))\s*)?(=|:|;|,|$))))|(?&lt;=\})</string>
1996 <key>patterns</key>
1997 <array>
1998 <dict>
1999 <key>include</key>
2000 <string>#variable-initializer</string>
2001 </dict>
2002 <dict>
2003 <key>include</key>
2004 <string>#type-annotation</string>
2005 </dict>
2006 <dict>
2007 <key>include</key>
2008 <string>#string</string>
2009 </dict>
2010 <dict>
2011 <key>include</key>
2012 <string>#array-literal</string>
2013 </dict>
2014 <dict>
2015 <key>include</key>
2016 <string>#numeric-literal</string>
2017 </dict>
2018 <dict>
2019 <key>include</key>
2020 <string>#comment</string>
2021 </dict>
2022 <dict>
2023 <key>match</key>
2024 <string>(?x)(\#?[_$[:alpha:]][_$[:alnum:]]*)(?:(\?)|(\!))?(?=\s*\s*
2025# function assignment |
2026(=\s*(
2027 ((async\s+)?(
2028 (function\s*[(&lt;*]) |
2029 (function\s+) |
2030 ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;)
2031 )) |
2032 ((async\s*)?(
2033 ((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
2034 # sure shot arrow functions even if =&gt; is on new line
2035(
2036 (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?
2037 [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
2038 (
2039 ([)]\s*:) | # ():
2040 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
2041 )
2042) |
2043
2044# arrow function possible to detect only with =&gt; on same line
2045(
2046 (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters
2047 \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
2048 (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
2049 \s*=&gt; # arrow operator
2050)
2051 ))
2052)) |
2053# typeannotation is fn type: &lt; | () | (... | (param: | (param, | (param? | (param= | (param) =&gt;
2054(:\s*(
2055 (&lt;) |
2056 ([(]\s*(
2057 ([)]) |
2058 (\.\.\.) |
2059 ([_$[:alnum:]]+\s*(
2060 ([:,?=])|
2061 ([)]\s*=&gt;)
2062 ))
2063 ))
2064)) |
2065(:\s*(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))Function(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))) |
2066(:\s*((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*))))))) |
2067(:\s*(=&gt;|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(&lt;[^&lt;&gt;]*&gt;)|[^&lt;&gt;(),=])+=\s*(
2068 ((async\s+)?(
2069 (function\s*[(&lt;*]) |
2070 (function\s+) |
2071 ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;)
2072 )) |
2073 ((async\s*)?(
2074 ((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
2075 # sure shot arrow functions even if =&gt; is on new line
2076(
2077 (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?
2078 [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
2079 (
2080 ([)]\s*:) | # ():
2081 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
2082 )
2083) |
2084
2085# arrow function possible to detect only with =&gt; on same line
2086(
2087 (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters
2088 \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
2089 (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
2090 \s*=&gt; # arrow operator
2091)
2092 ))
2093)))</string>
2094 <key>captures</key>
2095 <dict>
2096 <key>1</key>
2097 <dict>
2098 <key>name</key>
2099 <string>meta.definition.property.ts entity.name.function.ts</string>
2100 </dict>
2101 <key>2</key>
2102 <dict>
2103 <key>name</key>
2104 <string>keyword.operator.optional.ts</string>
2105 </dict>
2106 <key>3</key>
2107 <dict>
2108 <key>name</key>
2109 <string>keyword.operator.definiteassignment.ts</string>
2110 </dict>
2111 </dict>
2112 </dict>
2113 <dict>
2114 <key>name</key>
2115 <string>meta.definition.property.ts variable.object.property.ts</string>
2116 <key>match</key>
2117 <string>\#?[_$[:alpha:]][_$[:alnum:]]*</string>
2118 </dict>
2119 <dict>
2120 <key>name</key>
2121 <string>keyword.operator.optional.ts</string>
2122 <key>match</key>
2123 <string>\?</string>
2124 </dict>
2125 <dict>
2126 <key>name</key>
2127 <string>keyword.operator.definiteassignment.ts</string>
2128 <key>match</key>
2129 <string>\!</string>
2130 </dict>
2131 </array>
2132 </dict>
2133 <key>variable-initializer</key>
2134 <dict>
2135 <key>patterns</key>
2136 <array>
2137 <dict>
2138 <key>begin</key>
2139 <string>(?&lt;!=|!)(=)(?!=)(?=\s*\S)(?!\s*.*=&gt;\s*$)</string>
2140 <key>beginCaptures</key>
2141 <dict>
2142 <key>1</key>
2143 <dict>
2144 <key>name</key>
2145 <string>keyword.operator.assignment.ts</string>
2146 </dict>
2147 </dict>
2148 <key>end</key>
2149 <string>(?=$|^|[,);}\]]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+))</string>
2150 <key>patterns</key>
2151 <array>
2152 <dict>
2153 <key>include</key>
2154 <string>#expression</string>
2155 </dict>
2156 </array>
2157 </dict>
2158 <dict>
2159 <key>begin</key>
2160 <string>(?&lt;!=|!)(=)(?!=)</string>
2161 <key>beginCaptures</key>
2162 <dict>
2163 <key>1</key>
2164 <dict>
2165 <key>name</key>
2166 <string>keyword.operator.assignment.ts</string>
2167 </dict>
2168 </dict>
2169 <key>end</key>
2170 <string>(?=[,);}\]]|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(of|in)\s+))|(?=^\s*$)|(?&lt;![\|\&amp;\+\-\*\/])(?&lt;=\S)(?&lt;!=)(?=\s*$)</string>
2171 <key>patterns</key>
2172 <array>
2173 <dict>
2174 <key>include</key>
2175 <string>#expression</string>
2176 </dict>
2177 </array>
2178 </dict>
2179 </array>
2180 </dict>
2181 <key>function-declaration</key>
2182 <dict>
2183 <key>name</key>
2184 <string>meta.function.ts</string>
2185 <key>begin</key>
2186 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?(?:(async)\s+)?(function\b)(?:\s*(\*))?(?:(?:\s+|(?&lt;=\*))([_$[:alpha:]][_$[:alnum:]]*))?\s*</string>
2187 <key>beginCaptures</key>
2188 <dict>
2189 <key>1</key>
2190 <dict>
2191 <key>name</key>
2192 <string>keyword.control.export.ts</string>
2193 </dict>
2194 <key>2</key>
2195 <dict>
2196 <key>name</key>
2197 <string>storage.modifier.ts</string>
2198 </dict>
2199 <key>3</key>
2200 <dict>
2201 <key>name</key>
2202 <string>storage.modifier.async.ts</string>
2203 </dict>
2204 <key>4</key>
2205 <dict>
2206 <key>name</key>
2207 <string>storage.type.function.ts</string>
2208 </dict>
2209 <key>5</key>
2210 <dict>
2211 <key>name</key>
2212 <string>keyword.generator.asterisk.ts</string>
2213 </dict>
2214 <key>6</key>
2215 <dict>
2216 <key>name</key>
2217 <string>meta.definition.function.ts entity.name.function.ts</string>
2218 </dict>
2219 </dict>
2220 <key>end</key>
2221 <string>(?=;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))|(?&lt;=\})</string>
2222 <key>patterns</key>
2223 <array>
2224 <dict>
2225 <key>include</key>
2226 <string>#function-name</string>
2227 </dict>
2228 <dict>
2229 <key>include</key>
2230 <string>#function-body</string>
2231 </dict>
2232 </array>
2233 </dict>
2234 <key>function-expression</key>
2235 <dict>
2236 <key>name</key>
2237 <string>meta.function.expression.ts</string>
2238 <key>begin</key>
2239 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(async)\s+)?(function\b)(?:\s*(\*))?(?:(?:\s+|(?&lt;=\*))([_$[:alpha:]][_$[:alnum:]]*))?\s*</string>
2240 <key>beginCaptures</key>
2241 <dict>
2242 <key>1</key>
2243 <dict>
2244 <key>name</key>
2245 <string>storage.modifier.async.ts</string>
2246 </dict>
2247 <key>2</key>
2248 <dict>
2249 <key>name</key>
2250 <string>storage.type.function.ts</string>
2251 </dict>
2252 <key>3</key>
2253 <dict>
2254 <key>name</key>
2255 <string>keyword.generator.asterisk.ts</string>
2256 </dict>
2257 <key>4</key>
2258 <dict>
2259 <key>name</key>
2260 <string>meta.definition.function.ts entity.name.function.ts</string>
2261 </dict>
2262 </dict>
2263 <key>end</key>
2264 <string>(?=;)|(?&lt;=\})</string>
2265 <key>patterns</key>
2266 <array>
2267 <dict>
2268 <key>include</key>
2269 <string>#function-name</string>
2270 </dict>
2271 <dict>
2272 <key>include</key>
2273 <string>#single-line-comment-consuming-line-ending</string>
2274 </dict>
2275 <dict>
2276 <key>include</key>
2277 <string>#function-body</string>
2278 </dict>
2279 </array>
2280 </dict>
2281 <key>function-name</key>
2282 <dict>
2283 <key>name</key>
2284 <string>meta.definition.function.ts entity.name.function.ts</string>
2285 <key>match</key>
2286 <string>[_$[:alpha:]][_$[:alnum:]]*</string>
2287 </dict>
2288 <key>function-body</key>
2289 <dict>
2290 <key>patterns</key>
2291 <array>
2292 <dict>
2293 <key>include</key>
2294 <string>#comment</string>
2295 </dict>
2296 <dict>
2297 <key>include</key>
2298 <string>#type-parameters</string>
2299 </dict>
2300 <dict>
2301 <key>include</key>
2302 <string>#function-parameters</string>
2303 </dict>
2304 <dict>
2305 <key>include</key>
2306 <string>#return-type</string>
2307 </dict>
2308 <dict>
2309 <key>include</key>
2310 <string>#type-function-return-type</string>
2311 </dict>
2312 <dict>
2313 <key>include</key>
2314 <string>#decl-block</string>
2315 </dict>
2316 <dict>
2317 <key>name</key>
2318 <string>keyword.generator.asterisk.ts</string>
2319 <key>match</key>
2320 <string>\*</string>
2321 </dict>
2322 </array>
2323 </dict>
2324 <key>method-declaration</key>
2325 <dict>
2326 <key>patterns</key>
2327 <array>
2328 <dict>
2329 <key>name</key>
2330 <string>meta.method.declaration.ts</string>
2331 <key>begin</key>
2332 <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:\b(override)\s+)?(?:\b(public|private|protected)\s+)?(?:\b(abstract)\s+)?(?:\b(async)\s+)?\s*\b(constructor)\b(?!:)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
2333 <key>beginCaptures</key>
2334 <dict>
2335 <key>1</key>
2336 <dict>
2337 <key>name</key>
2338 <string>storage.modifier.ts</string>
2339 </dict>
2340 <key>2</key>
2341 <dict>
2342 <key>name</key>
2343 <string>storage.modifier.ts</string>
2344 </dict>
2345 <key>3</key>
2346 <dict>
2347 <key>name</key>
2348 <string>storage.modifier.ts</string>
2349 </dict>
2350 <key>4</key>
2351 <dict>
2352 <key>name</key>
2353 <string>storage.modifier.async.ts</string>
2354 </dict>
2355 <key>5</key>
2356 <dict>
2357 <key>name</key>
2358 <string>storage.type.ts</string>
2359 </dict>
2360 </dict>
2361 <key>end</key>
2362 <string>(?=\}|;|,|$)|(?&lt;=\})</string>
2363 <key>patterns</key>
2364 <array>
2365 <dict>
2366 <key>include</key>
2367 <string>#method-declaration-name</string>
2368 </dict>
2369 <dict>
2370 <key>include</key>
2371 <string>#function-body</string>
2372 </dict>
2373 </array>
2374 </dict>
2375 <dict>
2376 <key>name</key>
2377 <string>meta.method.declaration.ts</string>
2378 <key>begin</key>
2379 <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:\b(override)\s+)?(?:\b(public|private|protected)\s+)?(?:\b(abstract)\s+)?(?:\b(async)\s+)?(?:(?:\s*\b(new)\b(?!:)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|(?:(\*)\s*)?)(?=\s*((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*))?[\(])</string>
2380 <key>beginCaptures</key>
2381 <dict>
2382 <key>1</key>
2383 <dict>
2384 <key>name</key>
2385 <string>storage.modifier.ts</string>
2386 </dict>
2387 <key>2</key>
2388 <dict>
2389 <key>name</key>
2390 <string>storage.modifier.ts</string>
2391 </dict>
2392 <key>3</key>
2393 <dict>
2394 <key>name</key>
2395 <string>storage.modifier.ts</string>
2396 </dict>
2397 <key>4</key>
2398 <dict>
2399 <key>name</key>
2400 <string>storage.modifier.async.ts</string>
2401 </dict>
2402 <key>5</key>
2403 <dict>
2404 <key>name</key>
2405 <string>keyword.operator.new.ts</string>
2406 </dict>
2407 <key>6</key>
2408 <dict>
2409 <key>name</key>
2410 <string>keyword.generator.asterisk.ts</string>
2411 </dict>
2412 </dict>
2413 <key>end</key>
2414 <string>(?=\}|;|,|$)|(?&lt;=\})</string>
2415 <key>patterns</key>
2416 <array>
2417 <dict>
2418 <key>include</key>
2419 <string>#method-declaration-name</string>
2420 </dict>
2421 <dict>
2422 <key>include</key>
2423 <string>#function-body</string>
2424 </dict>
2425 </array>
2426 </dict>
2427 <dict>
2428 <key>name</key>
2429 <string>meta.method.declaration.ts</string>
2430 <key>begin</key>
2431 <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:\b(override)\s+)?(?:\b(public|private|protected)\s+)?(?:\b(abstract)\s+)?(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=\s*(((\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?:
2432 (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
2433 (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
2434 (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
2435 (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
2436 (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
2437 (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
2438 (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
2439 (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
2440)(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))\s*((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*))?[\(])</string>
2441 <key>beginCaptures</key>
2442 <dict>
2443 <key>1</key>
2444 <dict>
2445 <key>name</key>
2446 <string>storage.modifier.ts</string>
2447 </dict>
2448 <key>2</key>
2449 <dict>
2450 <key>name</key>
2451 <string>storage.modifier.ts</string>
2452 </dict>
2453 <key>3</key>
2454 <dict>
2455 <key>name</key>
2456 <string>storage.modifier.ts</string>
2457 </dict>
2458 <key>4</key>
2459 <dict>
2460 <key>name</key>
2461 <string>storage.modifier.async.ts</string>
2462 </dict>
2463 <key>5</key>
2464 <dict>
2465 <key>name</key>
2466 <string>storage.type.property.ts</string>
2467 </dict>
2468 <key>6</key>
2469 <dict>
2470 <key>name</key>
2471 <string>keyword.generator.asterisk.ts</string>
2472 </dict>
2473 </dict>
2474 <key>end</key>
2475 <string>(?=\}|;|,|$)|(?&lt;=\})</string>
2476 <key>patterns</key>
2477 <array>
2478 <dict>
2479 <key>include</key>
2480 <string>#method-declaration-name</string>
2481 </dict>
2482 <dict>
2483 <key>include</key>
2484 <string>#function-body</string>
2485 </dict>
2486 </array>
2487 </dict>
2488 </array>
2489 </dict>
2490 <key>object-literal-method-declaration</key>
2491 <dict>
2492 <key>name</key>
2493 <string>meta.method.declaration.ts</string>
2494 <key>begin</key>
2495 <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=\s*(((\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?:
2496 (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
2497 (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
2498 (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
2499 (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
2500 (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
2501 (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
2502 (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
2503 (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
2504)(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))\s*((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*))?[\(])</string>
2505 <key>beginCaptures</key>
2506 <dict>
2507 <key>1</key>
2508 <dict>
2509 <key>name</key>
2510 <string>storage.modifier.async.ts</string>
2511 </dict>
2512 <key>2</key>
2513 <dict>
2514 <key>name</key>
2515 <string>storage.type.property.ts</string>
2516 </dict>
2517 <key>3</key>
2518 <dict>
2519 <key>name</key>
2520 <string>keyword.generator.asterisk.ts</string>
2521 </dict>
2522 </dict>
2523 <key>end</key>
2524 <string>(?=\}|;|,)|(?&lt;=\})</string>
2525 <key>patterns</key>
2526 <array>
2527 <dict>
2528 <key>include</key>
2529 <string>#method-declaration-name</string>
2530 </dict>
2531 <dict>
2532 <key>include</key>
2533 <string>#function-body</string>
2534 </dict>
2535 <dict>
2536 <key>begin</key>
2537 <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:\b(async)\s+)?(?:\b(get|set)\s+)?(?:(\*)\s*)?(?=\s*(((\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?:
2538 (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
2539 (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
2540 (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
2541 (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
2542 (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
2543 (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
2544 (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
2545 (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
2546)(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??))\s*((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*))?[\(])</string>
2547 <key>beginCaptures</key>
2548 <dict>
2549 <key>1</key>
2550 <dict>
2551 <key>name</key>
2552 <string>storage.modifier.async.ts</string>
2553 </dict>
2554 <key>2</key>
2555 <dict>
2556 <key>name</key>
2557 <string>storage.type.property.ts</string>
2558 </dict>
2559 <key>3</key>
2560 <dict>
2561 <key>name</key>
2562 <string>keyword.generator.asterisk.ts</string>
2563 </dict>
2564 </dict>
2565 <key>end</key>
2566 <string>(?=\(|\&lt;)</string>
2567 <key>patterns</key>
2568 <array>
2569 <dict>
2570 <key>include</key>
2571 <string>#method-declaration-name</string>
2572 </dict>
2573 </array>
2574 </dict>
2575 </array>
2576 </dict>
2577 <key>method-declaration-name</key>
2578 <dict>
2579 <key>begin</key>
2580 <string>(?x)(?=((\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?:
2581 (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
2582 (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
2583 (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
2584 (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
2585 (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
2586 (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
2587 (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
2588 (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
2589)(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\??)\s*[\(\&lt;])</string>
2590 <key>end</key>
2591 <string>(?=\(|\&lt;)</string>
2592 <key>patterns</key>
2593 <array>
2594 <dict>
2595 <key>include</key>
2596 <string>#string</string>
2597 </dict>
2598 <dict>
2599 <key>include</key>
2600 <string>#array-literal</string>
2601 </dict>
2602 <dict>
2603 <key>include</key>
2604 <string>#numeric-literal</string>
2605 </dict>
2606 <dict>
2607 <key>name</key>
2608 <string>meta.definition.method.ts entity.name.function.ts</string>
2609 <key>match</key>
2610 <string>[_$[:alpha:]][_$[:alnum:]]*</string>
2611 </dict>
2612 <dict>
2613 <key>name</key>
2614 <string>keyword.operator.optional.ts</string>
2615 <key>match</key>
2616 <string>\?</string>
2617 </dict>
2618 </array>
2619 </dict>
2620 <key>arrow-function</key>
2621 <dict>
2622 <key>patterns</key>
2623 <array>
2624 <dict>
2625 <key>name</key>
2626 <string>meta.arrow.ts</string>
2627 <key>match</key>
2628 <string>(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(\basync)\s+)?([_$[:alpha:]][_$[:alnum:]]*)\s*(?==&gt;)</string>
2629 <key>captures</key>
2630 <dict>
2631 <key>1</key>
2632 <dict>
2633 <key>name</key>
2634 <string>storage.modifier.async.ts</string>
2635 </dict>
2636 <key>2</key>
2637 <dict>
2638 <key>name</key>
2639 <string>variable.parameter.ts</string>
2640 </dict>
2641 </dict>
2642 </dict>
2643 <dict>
2644 <key>name</key>
2645 <string>meta.arrow.ts</string>
2646 <key>begin</key>
2647 <string>(?x) (?:
2648 (?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(\basync)
2649)? ((?&lt;![})!\]])\s*
2650 (?=
2651 # sure shot arrow functions even if =&gt; is on new line
2652(
2653 (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?
2654 [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
2655 (
2656 ([)]\s*:) | # ():
2657 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
2658 )
2659) |
2660
2661# arrow function possible to detect only with =&gt; on same line
2662(
2663 (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters
2664 \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
2665 (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
2666 \s*=&gt; # arrow operator
2667)
2668 )
2669)</string>
2670 <key>beginCaptures</key>
2671 <dict>
2672 <key>1</key>
2673 <dict>
2674 <key>name</key>
2675 <string>storage.modifier.async.ts</string>
2676 </dict>
2677 </dict>
2678 <key>end</key>
2679 <string>(?==&gt;|\{|(^\s*(export|function|class|interface|let|var|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|const|import|enum|namespace|module|type|abstract|declare)\s+))</string>
2680 <key>patterns</key>
2681 <array>
2682 <dict>
2683 <key>include</key>
2684 <string>#comment</string>
2685 </dict>
2686 <dict>
2687 <key>include</key>
2688 <string>#type-parameters</string>
2689 </dict>
2690 <dict>
2691 <key>include</key>
2692 <string>#function-parameters</string>
2693 </dict>
2694 <dict>
2695 <key>include</key>
2696 <string>#arrow-return-type</string>
2697 </dict>
2698 <dict>
2699 <key>include</key>
2700 <string>#possibly-arrow-return-type</string>
2701 </dict>
2702 </array>
2703 </dict>
2704 <dict>
2705 <key>name</key>
2706 <string>meta.arrow.ts</string>
2707 <key>begin</key>
2708 <string>=&gt;</string>
2709 <key>beginCaptures</key>
2710 <dict>
2711 <key>0</key>
2712 <dict>
2713 <key>name</key>
2714 <string>storage.type.function.arrow.ts</string>
2715 </dict>
2716 </dict>
2717 <key>end</key>
2718 <string>((?&lt;=\}|\S)(?&lt;!=&gt;)|((?!\{)(?=\S)))(?!\/[\/\*])</string>
2719 <key>patterns</key>
2720 <array>
2721 <dict>
2722 <key>include</key>
2723 <string>#single-line-comment-consuming-line-ending</string>
2724 </dict>
2725 <dict>
2726 <key>include</key>
2727 <string>#decl-block</string>
2728 </dict>
2729 <dict>
2730 <key>include</key>
2731 <string>#expression</string>
2732 </dict>
2733 </array>
2734 </dict>
2735 </array>
2736 </dict>
2737 <key>indexer-declaration</key>
2738 <dict>
2739 <key>name</key>
2740 <string>meta.indexer.declaration.ts</string>
2741 <key>begin</key>
2742 <string>(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(readonly)\s*)?\s*(\[)\s*([_$[:alpha:]][_$[:alnum:]]*)\s*(?=:)</string>
2743 <key>beginCaptures</key>
2744 <dict>
2745 <key>1</key>
2746 <dict>
2747 <key>name</key>
2748 <string>storage.modifier.ts</string>
2749 </dict>
2750 <key>2</key>
2751 <dict>
2752 <key>name</key>
2753 <string>meta.brace.square.ts</string>
2754 </dict>
2755 <key>3</key>
2756 <dict>
2757 <key>name</key>
2758 <string>variable.parameter.ts</string>
2759 </dict>
2760 </dict>
2761 <key>end</key>
2762 <string>(\])\s*(\?\s*)?|$</string>
2763 <key>endCaptures</key>
2764 <dict>
2765 <key>1</key>
2766 <dict>
2767 <key>name</key>
2768 <string>meta.brace.square.ts</string>
2769 </dict>
2770 <key>2</key>
2771 <dict>
2772 <key>name</key>
2773 <string>keyword.operator.optional.ts</string>
2774 </dict>
2775 </dict>
2776 <key>patterns</key>
2777 <array>
2778 <dict>
2779 <key>include</key>
2780 <string>#type-annotation</string>
2781 </dict>
2782 </array>
2783 </dict>
2784 <key>indexer-mapped-type-declaration</key>
2785 <dict>
2786 <key>name</key>
2787 <string>meta.indexer.mappedtype.declaration.ts</string>
2788 <key>begin</key>
2789 <string>(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))([+-])?(readonly)\s*)?\s*(\[)\s*([_$[:alpha:]][_$[:alnum:]]*)\s+(in)\s+</string>
2790 <key>beginCaptures</key>
2791 <dict>
2792 <key>1</key>
2793 <dict>
2794 <key>name</key>
2795 <string>keyword.operator.type.modifier.ts</string>
2796 </dict>
2797 <key>2</key>
2798 <dict>
2799 <key>name</key>
2800 <string>storage.modifier.ts</string>
2801 </dict>
2802 <key>3</key>
2803 <dict>
2804 <key>name</key>
2805 <string>meta.brace.square.ts</string>
2806 </dict>
2807 <key>4</key>
2808 <dict>
2809 <key>name</key>
2810 <string>entity.name.type.ts</string>
2811 </dict>
2812 <key>5</key>
2813 <dict>
2814 <key>name</key>
2815 <string>keyword.operator.expression.in.ts</string>
2816 </dict>
2817 </dict>
2818 <key>end</key>
2819 <string>(\])([+-])?\s*(\?\s*)?|$</string>
2820 <key>endCaptures</key>
2821 <dict>
2822 <key>1</key>
2823 <dict>
2824 <key>name</key>
2825 <string>meta.brace.square.ts</string>
2826 </dict>
2827 <key>2</key>
2828 <dict>
2829 <key>name</key>
2830 <string>keyword.operator.type.modifier.ts</string>
2831 </dict>
2832 <key>3</key>
2833 <dict>
2834 <key>name</key>
2835 <string>keyword.operator.optional.ts</string>
2836 </dict>
2837 </dict>
2838 <key>patterns</key>
2839 <array>
2840 <dict>
2841 <key>match</key>
2842 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as)\s+</string>
2843 <key>captures</key>
2844 <dict>
2845 <key>1</key>
2846 <dict>
2847 <key>name</key>
2848 <string>keyword.control.as.ts</string>
2849 </dict>
2850 </dict>
2851 </dict>
2852 <dict>
2853 <key>include</key>
2854 <string>#type</string>
2855 </dict>
2856 </array>
2857 </dict>
2858 <key>function-parameters</key>
2859 <dict>
2860 <key>name</key>
2861 <string>meta.parameters.ts</string>
2862 <key>begin</key>
2863 <string>\(</string>
2864 <key>beginCaptures</key>
2865 <dict>
2866 <key>0</key>
2867 <dict>
2868 <key>name</key>
2869 <string>punctuation.definition.parameters.begin.ts</string>
2870 </dict>
2871 </dict>
2872 <key>end</key>
2873 <string>\)</string>
2874 <key>endCaptures</key>
2875 <dict>
2876 <key>0</key>
2877 <dict>
2878 <key>name</key>
2879 <string>punctuation.definition.parameters.end.ts</string>
2880 </dict>
2881 </dict>
2882 <key>patterns</key>
2883 <array>
2884 <dict>
2885 <key>include</key>
2886 <string>#function-parameters-body</string>
2887 </dict>
2888 </array>
2889 </dict>
2890 <key>function-parameters-body</key>
2891 <dict>
2892 <key>patterns</key>
2893 <array>
2894 <dict>
2895 <key>include</key>
2896 <string>#comment</string>
2897 </dict>
2898 <dict>
2899 <key>include</key>
2900 <string>#string</string>
2901 </dict>
2902 <dict>
2903 <key>include</key>
2904 <string>#decorator</string>
2905 </dict>
2906 <dict>
2907 <key>include</key>
2908 <string>#destructuring-parameter</string>
2909 </dict>
2910 <dict>
2911 <key>include</key>
2912 <string>#parameter-name</string>
2913 </dict>
2914 <dict>
2915 <key>include</key>
2916 <string>#parameter-type-annotation</string>
2917 </dict>
2918 <dict>
2919 <key>include</key>
2920 <string>#variable-initializer</string>
2921 </dict>
2922 <dict>
2923 <key>name</key>
2924 <string>punctuation.separator.parameter.ts</string>
2925 <key>match</key>
2926 <string>,</string>
2927 </dict>
2928 </array>
2929 </dict>
2930 <key>class-declaration</key>
2931 <dict>
2932 <key>name</key>
2933 <string>meta.class.ts</string>
2934 <key>begin</key>
2935 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(?:(abstract)\s+)?\b(class)\b(?=\s+|/[/*])</string>
2936 <key>beginCaptures</key>
2937 <dict>
2938 <key>1</key>
2939 <dict>
2940 <key>name</key>
2941 <string>keyword.control.export.ts</string>
2942 </dict>
2943 <key>2</key>
2944 <dict>
2945 <key>name</key>
2946 <string>storage.modifier.ts</string>
2947 </dict>
2948 <key>3</key>
2949 <dict>
2950 <key>name</key>
2951 <string>storage.modifier.ts</string>
2952 </dict>
2953 <key>4</key>
2954 <dict>
2955 <key>name</key>
2956 <string>storage.type.class.ts</string>
2957 </dict>
2958 </dict>
2959 <key>end</key>
2960 <string>(?&lt;=\})</string>
2961 <key>patterns</key>
2962 <array>
2963 <dict>
2964 <key>include</key>
2965 <string>#class-declaration-or-expression-patterns</string>
2966 </dict>
2967 </array>
2968 </dict>
2969 <key>class-expression</key>
2970 <dict>
2971 <key>name</key>
2972 <string>meta.class.ts</string>
2973 <key>begin</key>
2974 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(abstract)\s+)?(class)\b(?=\s+|[&lt;{]|\/[\/*])</string>
2975 <key>beginCaptures</key>
2976 <dict>
2977 <key>1</key>
2978 <dict>
2979 <key>name</key>
2980 <string>storage.modifier.ts</string>
2981 </dict>
2982 <key>2</key>
2983 <dict>
2984 <key>name</key>
2985 <string>storage.type.class.ts</string>
2986 </dict>
2987 </dict>
2988 <key>end</key>
2989 <string>(?&lt;=\})</string>
2990 <key>patterns</key>
2991 <array>
2992 <dict>
2993 <key>include</key>
2994 <string>#class-declaration-or-expression-patterns</string>
2995 </dict>
2996 </array>
2997 </dict>
2998 <key>class-declaration-or-expression-patterns</key>
2999 <dict>
3000 <key>patterns</key>
3001 <array>
3002 <dict>
3003 <key>include</key>
3004 <string>#comment</string>
3005 </dict>
3006 <dict>
3007 <key>include</key>
3008 <string>#class-or-interface-heritage</string>
3009 </dict>
3010 <dict>
3011 <key>match</key>
3012 <string>[_$[:alpha:]][_$[:alnum:]]*</string>
3013 <key>captures</key>
3014 <dict>
3015 <key>0</key>
3016 <dict>
3017 <key>name</key>
3018 <string>entity.name.type.class.ts</string>
3019 </dict>
3020 </dict>
3021 </dict>
3022 <dict>
3023 <key>include</key>
3024 <string>#type-parameters</string>
3025 </dict>
3026 <dict>
3027 <key>include</key>
3028 <string>#class-or-interface-body</string>
3029 </dict>
3030 </array>
3031 </dict>
3032 <key>interface-declaration</key>
3033 <dict>
3034 <key>name</key>
3035 <string>meta.interface.ts</string>
3036 <key>begin</key>
3037 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(?:(abstract)\s+)?\b(interface)\b(?=\s+|/[/*])</string>
3038 <key>beginCaptures</key>
3039 <dict>
3040 <key>1</key>
3041 <dict>
3042 <key>name</key>
3043 <string>keyword.control.export.ts</string>
3044 </dict>
3045 <key>2</key>
3046 <dict>
3047 <key>name</key>
3048 <string>storage.modifier.ts</string>
3049 </dict>
3050 <key>3</key>
3051 <dict>
3052 <key>name</key>
3053 <string>storage.modifier.ts</string>
3054 </dict>
3055 <key>4</key>
3056 <dict>
3057 <key>name</key>
3058 <string>storage.type.interface.ts</string>
3059 </dict>
3060 </dict>
3061 <key>end</key>
3062 <string>(?&lt;=\})</string>
3063 <key>patterns</key>
3064 <array>
3065 <dict>
3066 <key>include</key>
3067 <string>#comment</string>
3068 </dict>
3069 <dict>
3070 <key>include</key>
3071 <string>#class-or-interface-heritage</string>
3072 </dict>
3073 <dict>
3074 <key>match</key>
3075 <string>[_$[:alpha:]][_$[:alnum:]]*</string>
3076 <key>captures</key>
3077 <dict>
3078 <key>0</key>
3079 <dict>
3080 <key>name</key>
3081 <string>entity.name.type.interface.ts</string>
3082 </dict>
3083 </dict>
3084 </dict>
3085 <dict>
3086 <key>include</key>
3087 <string>#type-parameters</string>
3088 </dict>
3089 <dict>
3090 <key>include</key>
3091 <string>#class-or-interface-body</string>
3092 </dict>
3093 </array>
3094 </dict>
3095 <key>class-or-interface-heritage</key>
3096 <dict>
3097 <key>begin</key>
3098 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:\b(extends|implements)\b)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
3099 <key>beginCaptures</key>
3100 <dict>
3101 <key>1</key>
3102 <dict>
3103 <key>name</key>
3104 <string>storage.modifier.ts</string>
3105 </dict>
3106 </dict>
3107 <key>end</key>
3108 <string>(?=\{)</string>
3109 <key>patterns</key>
3110 <array>
3111 <dict>
3112 <key>include</key>
3113 <string>#comment</string>
3114 </dict>
3115 <dict>
3116 <key>include</key>
3117 <string>#class-or-interface-heritage</string>
3118 </dict>
3119 <dict>
3120 <key>include</key>
3121 <string>#type-parameters</string>
3122 </dict>
3123 <dict>
3124 <key>include</key>
3125 <string>#expressionWithoutIdentifiers</string>
3126 </dict>
3127 <dict>
3128 <key>match</key>
3129 <string>([_$[:alpha:]][_$[:alnum:]]*)\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))(?=\s*[_$[:alpha:]][_$[:alnum:]]*(\s*\??\.\s*[_$[:alpha:]][_$[:alnum:]]*)*\s*)</string>
3130 <key>captures</key>
3131 <dict>
3132 <key>1</key>
3133 <dict>
3134 <key>name</key>
3135 <string>entity.name.type.module.ts</string>
3136 </dict>
3137 <key>2</key>
3138 <dict>
3139 <key>name</key>
3140 <string>punctuation.accessor.ts</string>
3141 </dict>
3142 <key>3</key>
3143 <dict>
3144 <key>name</key>
3145 <string>punctuation.accessor.optional.ts</string>
3146 </dict>
3147 </dict>
3148 </dict>
3149 <dict>
3150 <key>match</key>
3151 <string>([_$[:alpha:]][_$[:alnum:]]*)</string>
3152 <key>captures</key>
3153 <dict>
3154 <key>1</key>
3155 <dict>
3156 <key>name</key>
3157 <string>entity.other.inherited-class.ts</string>
3158 </dict>
3159 </dict>
3160 </dict>
3161 <dict>
3162 <key>include</key>
3163 <string>#expressionPunctuations</string>
3164 </dict>
3165 </array>
3166 </dict>
3167 <key>class-or-interface-body</key>
3168 <dict>
3169 <key>begin</key>
3170 <string>\{</string>
3171 <key>beginCaptures</key>
3172 <dict>
3173 <key>0</key>
3174 <dict>
3175 <key>name</key>
3176 <string>punctuation.definition.block.ts</string>
3177 </dict>
3178 </dict>
3179 <key>end</key>
3180 <string>\}</string>
3181 <key>endCaptures</key>
3182 <dict>
3183 <key>0</key>
3184 <dict>
3185 <key>name</key>
3186 <string>punctuation.definition.block.ts</string>
3187 </dict>
3188 </dict>
3189 <key>patterns</key>
3190 <array>
3191 <dict>
3192 <key>include</key>
3193 <string>#comment</string>
3194 </dict>
3195 <dict>
3196 <key>include</key>
3197 <string>#decorator</string>
3198 </dict>
3199 <dict>
3200 <key>begin</key>
3201 <string>(?&lt;=:)\s*</string>
3202 <key>end</key>
3203 <string>(?=\s|[;),}\]:\-\+]|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))</string>
3204 <key>patterns</key>
3205 <array>
3206 <dict>
3207 <key>include</key>
3208 <string>#expression</string>
3209 </dict>
3210 </array>
3211 </dict>
3212 <dict>
3213 <key>include</key>
3214 <string>#method-declaration</string>
3215 </dict>
3216 <dict>
3217 <key>include</key>
3218 <string>#indexer-declaration</string>
3219 </dict>
3220 <dict>
3221 <key>include</key>
3222 <string>#field-declaration</string>
3223 </dict>
3224 <dict>
3225 <key>include</key>
3226 <string>#string</string>
3227 </dict>
3228 <dict>
3229 <key>include</key>
3230 <string>#type-annotation</string>
3231 </dict>
3232 <dict>
3233 <key>include</key>
3234 <string>#variable-initializer</string>
3235 </dict>
3236 <dict>
3237 <key>include</key>
3238 <string>#access-modifier</string>
3239 </dict>
3240 <dict>
3241 <key>include</key>
3242 <string>#property-accessor</string>
3243 </dict>
3244 <dict>
3245 <key>include</key>
3246 <string>#async-modifier</string>
3247 </dict>
3248 <dict>
3249 <key>include</key>
3250 <string>#after-operator-block-as-object-literal</string>
3251 </dict>
3252 <dict>
3253 <key>include</key>
3254 <string>#decl-block</string>
3255 </dict>
3256 <dict>
3257 <key>include</key>
3258 <string>#expression</string>
3259 </dict>
3260 <dict>
3261 <key>include</key>
3262 <string>#punctuation-comma</string>
3263 </dict>
3264 <dict>
3265 <key>include</key>
3266 <string>#punctuation-semicolon</string>
3267 </dict>
3268 </array>
3269 </dict>
3270 <key>access-modifier</key>
3271 <dict>
3272 <key>name</key>
3273 <string>storage.modifier.ts</string>
3274 <key>match</key>
3275 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
3276 </dict>
3277 <key>property-accessor</key>
3278 <dict>
3279 <key>name</key>
3280 <string>storage.type.property.ts</string>
3281 <key>match</key>
3282 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(accessor|get|set)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
3283 </dict>
3284 <key>async-modifier</key>
3285 <dict>
3286 <key>name</key>
3287 <string>storage.modifier.async.ts</string>
3288 <key>match</key>
3289 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(async)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
3290 </dict>
3291 <key>enum-declaration</key>
3292 <dict>
3293 <key>name</key>
3294 <string>meta.enum.declaration.ts</string>
3295 <key>begin</key>
3296 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?(?:\b(const)\s+)?\b(enum)\s+([_$[:alpha:]][_$[:alnum:]]*)</string>
3297 <key>beginCaptures</key>
3298 <dict>
3299 <key>1</key>
3300 <dict>
3301 <key>name</key>
3302 <string>keyword.control.export.ts</string>
3303 </dict>
3304 <key>2</key>
3305 <dict>
3306 <key>name</key>
3307 <string>storage.modifier.ts</string>
3308 </dict>
3309 <key>3</key>
3310 <dict>
3311 <key>name</key>
3312 <string>storage.modifier.ts</string>
3313 </dict>
3314 <key>4</key>
3315 <dict>
3316 <key>name</key>
3317 <string>storage.type.enum.ts</string>
3318 </dict>
3319 <key>5</key>
3320 <dict>
3321 <key>name</key>
3322 <string>entity.name.type.enum.ts</string>
3323 </dict>
3324 </dict>
3325 <key>end</key>
3326 <string>(?&lt;=\})</string>
3327 <key>patterns</key>
3328 <array>
3329 <dict>
3330 <key>include</key>
3331 <string>#comment</string>
3332 </dict>
3333 <dict>
3334 <key>begin</key>
3335 <string>\{</string>
3336 <key>beginCaptures</key>
3337 <dict>
3338 <key>0</key>
3339 <dict>
3340 <key>name</key>
3341 <string>punctuation.definition.block.ts</string>
3342 </dict>
3343 </dict>
3344 <key>end</key>
3345 <string>\}</string>
3346 <key>endCaptures</key>
3347 <dict>
3348 <key>0</key>
3349 <dict>
3350 <key>name</key>
3351 <string>punctuation.definition.block.ts</string>
3352 </dict>
3353 </dict>
3354 <key>patterns</key>
3355 <array>
3356 <dict>
3357 <key>include</key>
3358 <string>#comment</string>
3359 </dict>
3360 <dict>
3361 <key>begin</key>
3362 <string>([_$[:alpha:]][_$[:alnum:]]*)</string>
3363 <key>beginCaptures</key>
3364 <dict>
3365 <key>0</key>
3366 <dict>
3367 <key>name</key>
3368 <string>variable.other.enummember.ts</string>
3369 </dict>
3370 </dict>
3371 <key>end</key>
3372 <string>(?=,|\}|$)</string>
3373 <key>patterns</key>
3374 <array>
3375 <dict>
3376 <key>include</key>
3377 <string>#comment</string>
3378 </dict>
3379 <dict>
3380 <key>include</key>
3381 <string>#variable-initializer</string>
3382 </dict>
3383 </array>
3384 </dict>
3385 <dict>
3386 <key>begin</key>
3387 <string>(?=((\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)|(\[([^\[\]]|\[[^\[\]]*\])+\])))</string>
3388 <key>end</key>
3389 <string>(?=,|\}|$)</string>
3390 <key>patterns</key>
3391 <array>
3392 <dict>
3393 <key>include</key>
3394 <string>#string</string>
3395 </dict>
3396 <dict>
3397 <key>include</key>
3398 <string>#array-literal</string>
3399 </dict>
3400 <dict>
3401 <key>include</key>
3402 <string>#comment</string>
3403 </dict>
3404 <dict>
3405 <key>include</key>
3406 <string>#variable-initializer</string>
3407 </dict>
3408 </array>
3409 </dict>
3410 <dict>
3411 <key>include</key>
3412 <string>#punctuation-comma</string>
3413 </dict>
3414 </array>
3415 </dict>
3416 </array>
3417 </dict>
3418 <key>namespace-declaration</key>
3419 <dict>
3420 <key>name</key>
3421 <string>meta.namespace.declaration.ts</string>
3422 <key>begin</key>
3423 <string>(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(namespace|module)\s+(?=[_$[:alpha:]"'`]))</string>
3424 <key>beginCaptures</key>
3425 <dict>
3426 <key>1</key>
3427 <dict>
3428 <key>name</key>
3429 <string>keyword.control.export.ts</string>
3430 </dict>
3431 <key>2</key>
3432 <dict>
3433 <key>name</key>
3434 <string>storage.modifier.ts</string>
3435 </dict>
3436 <key>3</key>
3437 <dict>
3438 <key>name</key>
3439 <string>storage.type.namespace.ts</string>
3440 </dict>
3441 </dict>
3442 <key>end</key>
3443 <string>(?&lt;=\})|(?=;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))</string>
3444 <key>patterns</key>
3445 <array>
3446 <dict>
3447 <key>include</key>
3448 <string>#comment</string>
3449 </dict>
3450 <dict>
3451 <key>include</key>
3452 <string>#string</string>
3453 </dict>
3454 <dict>
3455 <key>name</key>
3456 <string>entity.name.type.module.ts</string>
3457 <key>match</key>
3458 <string>([_$[:alpha:]][_$[:alnum:]]*)</string>
3459 </dict>
3460 <dict>
3461 <key>include</key>
3462 <string>#punctuation-accessor</string>
3463 </dict>
3464 <dict>
3465 <key>include</key>
3466 <string>#decl-block</string>
3467 </dict>
3468 </array>
3469 </dict>
3470 <key>type-alias-declaration</key>
3471 <dict>
3472 <key>name</key>
3473 <string>meta.type.declaration.ts</string>
3474 <key>begin</key>
3475 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(type)\b\s+([_$[:alpha:]][_$[:alnum:]]*)\s*</string>
3476 <key>beginCaptures</key>
3477 <dict>
3478 <key>1</key>
3479 <dict>
3480 <key>name</key>
3481 <string>keyword.control.export.ts</string>
3482 </dict>
3483 <key>2</key>
3484 <dict>
3485 <key>name</key>
3486 <string>storage.modifier.ts</string>
3487 </dict>
3488 <key>3</key>
3489 <dict>
3490 <key>name</key>
3491 <string>storage.type.type.ts</string>
3492 </dict>
3493 <key>4</key>
3494 <dict>
3495 <key>name</key>
3496 <string>entity.name.type.alias.ts</string>
3497 </dict>
3498 </dict>
3499 <key>end</key>
3500 <string>(?=\}|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))</string>
3501 <key>patterns</key>
3502 <array>
3503 <dict>
3504 <key>include</key>
3505 <string>#comment</string>
3506 </dict>
3507 <dict>
3508 <key>include</key>
3509 <string>#type-parameters</string>
3510 </dict>
3511 <dict>
3512 <key>begin</key>
3513 <string>(=)\s*(intrinsic)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
3514 <key>beginCaptures</key>
3515 <dict>
3516 <key>1</key>
3517 <dict>
3518 <key>name</key>
3519 <string>keyword.operator.assignment.ts</string>
3520 </dict>
3521 <key>2</key>
3522 <dict>
3523 <key>name</key>
3524 <string>keyword.control.intrinsic.ts</string>
3525 </dict>
3526 </dict>
3527 <key>end</key>
3528 <string>(?=\}|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))</string>
3529 <key>patterns</key>
3530 <array>
3531 <dict>
3532 <key>include</key>
3533 <string>#type</string>
3534 </dict>
3535 </array>
3536 </dict>
3537 <dict>
3538 <key>begin</key>
3539 <string>(=)\s*</string>
3540 <key>beginCaptures</key>
3541 <dict>
3542 <key>1</key>
3543 <dict>
3544 <key>name</key>
3545 <string>keyword.operator.assignment.ts</string>
3546 </dict>
3547 </dict>
3548 <key>end</key>
3549 <string>(?=\}|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))</string>
3550 <key>patterns</key>
3551 <array>
3552 <dict>
3553 <key>include</key>
3554 <string>#type</string>
3555 </dict>
3556 </array>
3557 </dict>
3558 </array>
3559 </dict>
3560 <key>import-equals-declaration</key>
3561 <dict>
3562 <key>patterns</key>
3563 <array>
3564 <dict>
3565 <key>name</key>
3566 <string>meta.import-equals.external.ts</string>
3567 <key>begin</key>
3568 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(import)(?:\s+(type))?\s+([_$[:alpha:]][_$[:alnum:]]*)\s*(=)\s*(require)\s*(\()</string>
3569 <key>beginCaptures</key>
3570 <dict>
3571 <key>1</key>
3572 <dict>
3573 <key>name</key>
3574 <string>keyword.control.export.ts</string>
3575 </dict>
3576 <key>2</key>
3577 <dict>
3578 <key>name</key>
3579 <string>storage.modifier.ts</string>
3580 </dict>
3581 <key>3</key>
3582 <dict>
3583 <key>name</key>
3584 <string>keyword.control.import.ts</string>
3585 </dict>
3586 <key>4</key>
3587 <dict>
3588 <key>name</key>
3589 <string>keyword.control.type.ts</string>
3590 </dict>
3591 <key>5</key>
3592 <dict>
3593 <key>name</key>
3594 <string>variable.other.readwrite.alias.ts</string>
3595 </dict>
3596 <key>6</key>
3597 <dict>
3598 <key>name</key>
3599 <string>keyword.operator.assignment.ts</string>
3600 </dict>
3601 <key>7</key>
3602 <dict>
3603 <key>name</key>
3604 <string>keyword.control.require.ts</string>
3605 </dict>
3606 <key>8</key>
3607 <dict>
3608 <key>name</key>
3609 <string>meta.brace.round.ts</string>
3610 </dict>
3611 </dict>
3612 <key>end</key>
3613 <string>\)</string>
3614 <key>endCaptures</key>
3615 <dict>
3616 <key>0</key>
3617 <dict>
3618 <key>name</key>
3619 <string>meta.brace.round.ts</string>
3620 </dict>
3621 </dict>
3622 <key>patterns</key>
3623 <array>
3624 <dict>
3625 <key>include</key>
3626 <string>#comment</string>
3627 </dict>
3628 <dict>
3629 <key>include</key>
3630 <string>#string</string>
3631 </dict>
3632 </array>
3633 </dict>
3634 <dict>
3635 <key>name</key>
3636 <string>meta.import-equals.internal.ts</string>
3637 <key>begin</key>
3638 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(import)(?:\s+(type))?\s+([_$[:alpha:]][_$[:alnum:]]*)\s*(=)\s*(?!require\b)</string>
3639 <key>beginCaptures</key>
3640 <dict>
3641 <key>1</key>
3642 <dict>
3643 <key>name</key>
3644 <string>keyword.control.export.ts</string>
3645 </dict>
3646 <key>2</key>
3647 <dict>
3648 <key>name</key>
3649 <string>storage.modifier.ts</string>
3650 </dict>
3651 <key>3</key>
3652 <dict>
3653 <key>name</key>
3654 <string>keyword.control.import.ts</string>
3655 </dict>
3656 <key>4</key>
3657 <dict>
3658 <key>name</key>
3659 <string>keyword.control.type.ts</string>
3660 </dict>
3661 <key>5</key>
3662 <dict>
3663 <key>name</key>
3664 <string>variable.other.readwrite.alias.ts</string>
3665 </dict>
3666 <key>6</key>
3667 <dict>
3668 <key>name</key>
3669 <string>keyword.operator.assignment.ts</string>
3670 </dict>
3671 </dict>
3672 <key>end</key>
3673 <string>(?=;|$|^)</string>
3674 <key>patterns</key>
3675 <array>
3676 <dict>
3677 <key>include</key>
3678 <string>#single-line-comment-consuming-line-ending</string>
3679 </dict>
3680 <dict>
3681 <key>include</key>
3682 <string>#comment</string>
3683 </dict>
3684 <dict>
3685 <key>match</key>
3686 <string>([_$[:alpha:]][_$[:alnum:]]*)\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))</string>
3687 <key>captures</key>
3688 <dict>
3689 <key>1</key>
3690 <dict>
3691 <key>name</key>
3692 <string>entity.name.type.module.ts</string>
3693 </dict>
3694 <key>2</key>
3695 <dict>
3696 <key>name</key>
3697 <string>punctuation.accessor.ts</string>
3698 </dict>
3699 <key>3</key>
3700 <dict>
3701 <key>name</key>
3702 <string>punctuation.accessor.optional.ts</string>
3703 </dict>
3704 </dict>
3705 </dict>
3706 <dict>
3707 <key>name</key>
3708 <string>variable.other.readwrite.ts</string>
3709 <key>match</key>
3710 <string>([_$[:alpha:]][_$[:alnum:]]*)</string>
3711 </dict>
3712 </array>
3713 </dict>
3714 </array>
3715 </dict>
3716 <key>import-declaration</key>
3717 <dict>
3718 <key>name</key>
3719 <string>meta.import.ts</string>
3720 <key>begin</key>
3721 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(\bexport)\s+)?(?:(\bdeclare)\s+)?\b(import)(?:\s+(type)(?!\s+from))?(?!\s*[:\(])(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
3722 <key>beginCaptures</key>
3723 <dict>
3724 <key>1</key>
3725 <dict>
3726 <key>name</key>
3727 <string>keyword.control.export.ts</string>
3728 </dict>
3729 <key>2</key>
3730 <dict>
3731 <key>name</key>
3732 <string>storage.modifier.ts</string>
3733 </dict>
3734 <key>3</key>
3735 <dict>
3736 <key>name</key>
3737 <string>keyword.control.import.ts</string>
3738 </dict>
3739 <key>4</key>
3740 <dict>
3741 <key>name</key>
3742 <string>keyword.control.type.ts</string>
3743 </dict>
3744 </dict>
3745 <key>end</key>
3746 <string>(?&lt;!^import|[^\._$[:alnum:]]import)(?=;|$|^)</string>
3747 <key>patterns</key>
3748 <array>
3749 <dict>
3750 <key>include</key>
3751 <string>#single-line-comment-consuming-line-ending</string>
3752 </dict>
3753 <dict>
3754 <key>include</key>
3755 <string>#comment</string>
3756 </dict>
3757 <dict>
3758 <key>include</key>
3759 <string>#string</string>
3760 </dict>
3761 <dict>
3762 <key>begin</key>
3763 <string>(?&lt;=^import|[^\._$[:alnum:]]import)(?!\s*["'])</string>
3764 <key>end</key>
3765 <string>\bfrom\b</string>
3766 <key>endCaptures</key>
3767 <dict>
3768 <key>0</key>
3769 <dict>
3770 <key>name</key>
3771 <string>keyword.control.from.ts</string>
3772 </dict>
3773 </dict>
3774 <key>patterns</key>
3775 <array>
3776 <dict>
3777 <key>include</key>
3778 <string>#import-export-declaration</string>
3779 </dict>
3780 </array>
3781 </dict>
3782 <dict>
3783 <key>include</key>
3784 <string>#import-export-declaration</string>
3785 </dict>
3786 </array>
3787 </dict>
3788 <key>export-declaration</key>
3789 <dict>
3790 <key>patterns</key>
3791 <array>
3792 <dict>
3793 <key>match</key>
3794 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(export)\s+(as)\s+(namespace)\s+([_$[:alpha:]][_$[:alnum:]]*)</string>
3795 <key>captures</key>
3796 <dict>
3797 <key>1</key>
3798 <dict>
3799 <key>name</key>
3800 <string>keyword.control.export.ts</string>
3801 </dict>
3802 <key>2</key>
3803 <dict>
3804 <key>name</key>
3805 <string>keyword.control.as.ts</string>
3806 </dict>
3807 <key>3</key>
3808 <dict>
3809 <key>name</key>
3810 <string>storage.type.namespace.ts</string>
3811 </dict>
3812 <key>4</key>
3813 <dict>
3814 <key>name</key>
3815 <string>entity.name.type.module.ts</string>
3816 </dict>
3817 </dict>
3818 </dict>
3819 <dict>
3820 <key>name</key>
3821 <string>meta.export.default.ts</string>
3822 <key>begin</key>
3823 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(export)(?:\s+(type))?(?:(?:\s*(=))|(?:\s+(default)(?=\s+)))</string>
3824 <key>beginCaptures</key>
3825 <dict>
3826 <key>1</key>
3827 <dict>
3828 <key>name</key>
3829 <string>keyword.control.export.ts</string>
3830 </dict>
3831 <key>2</key>
3832 <dict>
3833 <key>name</key>
3834 <string>keyword.control.type.ts</string>
3835 </dict>
3836 <key>3</key>
3837 <dict>
3838 <key>name</key>
3839 <string>keyword.operator.assignment.ts</string>
3840 </dict>
3841 <key>4</key>
3842 <dict>
3843 <key>name</key>
3844 <string>keyword.control.default.ts</string>
3845 </dict>
3846 </dict>
3847 <key>end</key>
3848 <string>(?=$|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))</string>
3849 <key>patterns</key>
3850 <array>
3851 <dict>
3852 <key>include</key>
3853 <string>#interface-declaration</string>
3854 </dict>
3855 <dict>
3856 <key>include</key>
3857 <string>#expression</string>
3858 </dict>
3859 </array>
3860 </dict>
3861 <dict>
3862 <key>name</key>
3863 <string>meta.export.ts</string>
3864 <key>begin</key>
3865 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(export)(?:\s+(type))?\b(?!(\$)|(\s*:))((?=\s*[\{*])|((?=\s*[_$[:alpha:]][_$[:alnum:]]*(\s|,))(?!\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b)))</string>
3866 <key>beginCaptures</key>
3867 <dict>
3868 <key>1</key>
3869 <dict>
3870 <key>name</key>
3871 <string>keyword.control.export.ts</string>
3872 </dict>
3873 <key>2</key>
3874 <dict>
3875 <key>name</key>
3876 <string>keyword.control.type.ts</string>
3877 </dict>
3878 </dict>
3879 <key>end</key>
3880 <string>(?=$|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))</string>
3881 <key>patterns</key>
3882 <array>
3883 <dict>
3884 <key>include</key>
3885 <string>#import-export-declaration</string>
3886 </dict>
3887 </array>
3888 </dict>
3889 </array>
3890 </dict>
3891 <key>import-export-declaration</key>
3892 <dict>
3893 <key>patterns</key>
3894 <array>
3895 <dict>
3896 <key>include</key>
3897 <string>#comment</string>
3898 </dict>
3899 <dict>
3900 <key>include</key>
3901 <string>#string</string>
3902 </dict>
3903 <dict>
3904 <key>include</key>
3905 <string>#import-export-block</string>
3906 </dict>
3907 <dict>
3908 <key>name</key>
3909 <string>keyword.control.from.ts</string>
3910 <key>match</key>
3911 <string>\bfrom\b</string>
3912 </dict>
3913 <dict>
3914 <key>include</key>
3915 <string>#import-export-assert-clause</string>
3916 </dict>
3917 <dict>
3918 <key>include</key>
3919 <string>#import-export-clause</string>
3920 </dict>
3921 </array>
3922 </dict>
3923 <key>import-export-assert-clause</key>
3924 <dict>
3925 <key>begin</key>
3926 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(with)|(assert))\s*(\{)</string>
3927 <key>beginCaptures</key>
3928 <dict>
3929 <key>1</key>
3930 <dict>
3931 <key>name</key>
3932 <string>keyword.control.with.ts</string>
3933 </dict>
3934 <key>2</key>
3935 <dict>
3936 <key>name</key>
3937 <string>keyword.control.assert.ts</string>
3938 </dict>
3939 <key>3</key>
3940 <dict>
3941 <key>name</key>
3942 <string>punctuation.definition.block.ts</string>
3943 </dict>
3944 </dict>
3945 <key>end</key>
3946 <string>\}</string>
3947 <key>endCaptures</key>
3948 <dict>
3949 <key>0</key>
3950 <dict>
3951 <key>name</key>
3952 <string>punctuation.definition.block.ts</string>
3953 </dict>
3954 </dict>
3955 <key>patterns</key>
3956 <array>
3957 <dict>
3958 <key>include</key>
3959 <string>#comment</string>
3960 </dict>
3961 <dict>
3962 <key>include</key>
3963 <string>#string</string>
3964 </dict>
3965 <dict>
3966 <key>name</key>
3967 <string>meta.object-literal.key.ts</string>
3968 <key>match</key>
3969 <string>(?:[_$[:alpha:]][_$[:alnum:]]*)\s*(?=(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*:)</string>
3970 </dict>
3971 <dict>
3972 <key>name</key>
3973 <string>punctuation.separator.key-value.ts</string>
3974 <key>match</key>
3975 <string>:</string>
3976 </dict>
3977 </array>
3978 </dict>
3979 <key>import-export-block</key>
3980 <dict>
3981 <key>name</key>
3982 <string>meta.block.ts</string>
3983 <key>begin</key>
3984 <string>\{</string>
3985 <key>beginCaptures</key>
3986 <dict>
3987 <key>0</key>
3988 <dict>
3989 <key>name</key>
3990 <string>punctuation.definition.block.ts</string>
3991 </dict>
3992 </dict>
3993 <key>end</key>
3994 <string>\}</string>
3995 <key>endCaptures</key>
3996 <dict>
3997 <key>0</key>
3998 <dict>
3999 <key>name</key>
4000 <string>punctuation.definition.block.ts</string>
4001 </dict>
4002 </dict>
4003 <key>patterns</key>
4004 <array>
4005 <dict>
4006 <key>include</key>
4007 <string>#import-export-clause</string>
4008 </dict>
4009 </array>
4010 </dict>
4011 <key>import-export-clause</key>
4012 <dict>
4013 <key>patterns</key>
4014 <array>
4015 <dict>
4016 <key>include</key>
4017 <string>#comment</string>
4018 </dict>
4019 <dict>
4020 <key>match</key>
4021 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(?:(\btype)\s+)?(?:(\bdefault)|(\*)|(\b[_$[:alpha:]][_$[:alnum:]]*)|((\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))))\s+(as)\s+(?:(default(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|([_$[:alpha:]][_$[:alnum:]]*)|((\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)))</string>
4022 <key>captures</key>
4023 <dict>
4024 <key>1</key>
4025 <dict>
4026 <key>name</key>
4027 <string>keyword.control.type.ts</string>
4028 </dict>
4029 <key>2</key>
4030 <dict>
4031 <key>name</key>
4032 <string>keyword.control.default.ts</string>
4033 </dict>
4034 <key>3</key>
4035 <dict>
4036 <key>name</key>
4037 <string>constant.language.import-export-all.ts</string>
4038 </dict>
4039 <key>4</key>
4040 <dict>
4041 <key>name</key>
4042 <string>variable.other.readwrite.ts</string>
4043 </dict>
4044 <key>5</key>
4045 <dict>
4046 <key>name</key>
4047 <string>string.quoted.alias.ts</string>
4048 </dict>
4049 <key>12</key>
4050 <dict>
4051 <key>name</key>
4052 <string>keyword.control.as.ts</string>
4053 </dict>
4054 <key>13</key>
4055 <dict>
4056 <key>name</key>
4057 <string>keyword.control.default.ts</string>
4058 </dict>
4059 <key>14</key>
4060 <dict>
4061 <key>name</key>
4062 <string>variable.other.readwrite.alias.ts</string>
4063 </dict>
4064 <key>15</key>
4065 <dict>
4066 <key>name</key>
4067 <string>string.quoted.alias.ts</string>
4068 </dict>
4069 </dict>
4070 </dict>
4071 <dict>
4072 <key>include</key>
4073 <string>#punctuation-comma</string>
4074 </dict>
4075 <dict>
4076 <key>name</key>
4077 <string>constant.language.import-export-all.ts</string>
4078 <key>match</key>
4079 <string>\*</string>
4080 </dict>
4081 <dict>
4082 <key>name</key>
4083 <string>keyword.control.default.ts</string>
4084 <key>match</key>
4085 <string>\b(default)\b</string>
4086 </dict>
4087 <dict>
4088 <key>match</key>
4089 <string>(?:(\btype)\s+)?(?:([_$[:alpha:]][_$[:alnum:]]*)|((\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)))</string>
4090 <key>captures</key>
4091 <dict>
4092 <key>1</key>
4093 <dict>
4094 <key>name</key>
4095 <string>keyword.control.type.ts</string>
4096 </dict>
4097 <key>2</key>
4098 <dict>
4099 <key>name</key>
4100 <string>variable.other.readwrite.alias.ts</string>
4101 </dict>
4102 <key>3</key>
4103 <dict>
4104 <key>name</key>
4105 <string>string.quoted.alias.ts</string>
4106 </dict>
4107 </dict>
4108 </dict>
4109 </array>
4110 </dict>
4111 <key>switch-statement</key>
4112 <dict>
4113 <key>name</key>
4114 <string>switch-statement.expr.ts</string>
4115 <key>begin</key>
4116 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?=\bswitch\s*\()</string>
4117 <key>end</key>
4118 <string>\}</string>
4119 <key>endCaptures</key>
4120 <dict>
4121 <key>0</key>
4122 <dict>
4123 <key>name</key>
4124 <string>punctuation.definition.block.ts</string>
4125 </dict>
4126 </dict>
4127 <key>patterns</key>
4128 <array>
4129 <dict>
4130 <key>include</key>
4131 <string>#comment</string>
4132 </dict>
4133 <dict>
4134 <key>name</key>
4135 <string>switch-expression.expr.ts</string>
4136 <key>begin</key>
4137 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(switch)\s*(\()</string>
4138 <key>beginCaptures</key>
4139 <dict>
4140 <key>1</key>
4141 <dict>
4142 <key>name</key>
4143 <string>keyword.control.switch.ts</string>
4144 </dict>
4145 <key>2</key>
4146 <dict>
4147 <key>name</key>
4148 <string>meta.brace.round.ts</string>
4149 </dict>
4150 </dict>
4151 <key>end</key>
4152 <string>\)</string>
4153 <key>endCaptures</key>
4154 <dict>
4155 <key>0</key>
4156 <dict>
4157 <key>name</key>
4158 <string>meta.brace.round.ts</string>
4159 </dict>
4160 </dict>
4161 <key>patterns</key>
4162 <array>
4163 <dict>
4164 <key>include</key>
4165 <string>#expression</string>
4166 </dict>
4167 </array>
4168 </dict>
4169 <dict>
4170 <key>name</key>
4171 <string>switch-block.expr.ts</string>
4172 <key>begin</key>
4173 <string>\{</string>
4174 <key>beginCaptures</key>
4175 <dict>
4176 <key>0</key>
4177 <dict>
4178 <key>name</key>
4179 <string>punctuation.definition.block.ts</string>
4180 </dict>
4181 </dict>
4182 <key>end</key>
4183 <string>(?=\})</string>
4184 <key>patterns</key>
4185 <array>
4186 <dict>
4187 <key>name</key>
4188 <string>case-clause.expr.ts</string>
4189 <key>begin</key>
4190 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
4191 <key>beginCaptures</key>
4192 <dict>
4193 <key>1</key>
4194 <dict>
4195 <key>name</key>
4196 <string>keyword.control.switch.ts</string>
4197 </dict>
4198 </dict>
4199 <key>end</key>
4200 <string>(?=:)</string>
4201 <key>patterns</key>
4202 <array>
4203 <dict>
4204 <key>include</key>
4205 <string>#expression</string>
4206 </dict>
4207 </array>
4208 </dict>
4209 <dict>
4210 <key>begin</key>
4211 <string>(:)\s*(\{)</string>
4212 <key>beginCaptures</key>
4213 <dict>
4214 <key>1</key>
4215 <dict>
4216 <key>name</key>
4217 <string>case-clause.expr.ts punctuation.definition.section.case-statement.ts</string>
4218 </dict>
4219 <key>2</key>
4220 <dict>
4221 <key>name</key>
4222 <string>meta.block.ts punctuation.definition.block.ts</string>
4223 </dict>
4224 </dict>
4225 <key>end</key>
4226 <string>\}</string>
4227 <key>endCaptures</key>
4228 <dict>
4229 <key>0</key>
4230 <dict>
4231 <key>name</key>
4232 <string>meta.block.ts punctuation.definition.block.ts</string>
4233 </dict>
4234 </dict>
4235 <key>contentName</key>
4236 <string>meta.block.ts</string>
4237 <key>patterns</key>
4238 <array>
4239 <dict>
4240 <key>include</key>
4241 <string>#statements</string>
4242 </dict>
4243 </array>
4244 </dict>
4245 <dict>
4246 <key>match</key>
4247 <string>(:)</string>
4248 <key>captures</key>
4249 <dict>
4250 <key>0</key>
4251 <dict>
4252 <key>name</key>
4253 <string>case-clause.expr.ts punctuation.definition.section.case-statement.ts</string>
4254 </dict>
4255 </dict>
4256 </dict>
4257 <dict>
4258 <key>include</key>
4259 <string>#statements</string>
4260 </dict>
4261 </array>
4262 </dict>
4263 </array>
4264 </dict>
4265 <key>for-loop</key>
4266 <dict>
4267 <key>begin</key>
4268 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))for(?=((\s+|(\s*\/\*([^\*]|(\*[^\/]))*\*\/\s*))await)?\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)?(\())</string>
4269 <key>beginCaptures</key>
4270 <dict>
4271 <key>0</key>
4272 <dict>
4273 <key>name</key>
4274 <string>keyword.control.loop.ts</string>
4275 </dict>
4276 </dict>
4277 <key>end</key>
4278 <string>(?&lt;=\))</string>
4279 <key>patterns</key>
4280 <array>
4281 <dict>
4282 <key>include</key>
4283 <string>#comment</string>
4284 </dict>
4285 <dict>
4286 <key>name</key>
4287 <string>keyword.control.loop.ts</string>
4288 <key>match</key>
4289 <string>await</string>
4290 </dict>
4291 <dict>
4292 <key>begin</key>
4293 <string>\(</string>
4294 <key>beginCaptures</key>
4295 <dict>
4296 <key>0</key>
4297 <dict>
4298 <key>name</key>
4299 <string>meta.brace.round.ts</string>
4300 </dict>
4301 </dict>
4302 <key>end</key>
4303 <string>\)</string>
4304 <key>endCaptures</key>
4305 <dict>
4306 <key>0</key>
4307 <dict>
4308 <key>name</key>
4309 <string>meta.brace.round.ts</string>
4310 </dict>
4311 </dict>
4312 <key>patterns</key>
4313 <array>
4314 <dict>
4315 <key>include</key>
4316 <string>#var-expr</string>
4317 </dict>
4318 <dict>
4319 <key>include</key>
4320 <string>#expression</string>
4321 </dict>
4322 <dict>
4323 <key>include</key>
4324 <string>#punctuation-semicolon</string>
4325 </dict>
4326 </array>
4327 </dict>
4328 </array>
4329 </dict>
4330 <key>if-statement</key>
4331 <dict>
4332 <key>patterns</key>
4333 <array>
4334 <dict>
4335 <key>begin</key>
4336 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?=\bif\s*(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))\s*(?!\{))</string>
4337 <key>end</key>
4338 <string>(?=;|$|\})</string>
4339 <key>patterns</key>
4340 <array>
4341 <dict>
4342 <key>include</key>
4343 <string>#comment</string>
4344 </dict>
4345 <dict>
4346 <key>begin</key>
4347 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(if)\s*(\()</string>
4348 <key>beginCaptures</key>
4349 <dict>
4350 <key>1</key>
4351 <dict>
4352 <key>name</key>
4353 <string>keyword.control.conditional.ts</string>
4354 </dict>
4355 <key>2</key>
4356 <dict>
4357 <key>name</key>
4358 <string>meta.brace.round.ts</string>
4359 </dict>
4360 </dict>
4361 <key>end</key>
4362 <string>\)</string>
4363 <key>endCaptures</key>
4364 <dict>
4365 <key>0</key>
4366 <dict>
4367 <key>name</key>
4368 <string>meta.brace.round.ts</string>
4369 </dict>
4370 </dict>
4371 <key>patterns</key>
4372 <array>
4373 <dict>
4374 <key>include</key>
4375 <string>#expression</string>
4376 </dict>
4377 </array>
4378 </dict>
4379 <dict>
4380 <key>name</key>
4381 <string>string.regexp.ts</string>
4382 <key>begin</key>
4383 <string>(?&lt;=\))\s*\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/([dgimsuvy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))</string>
4384 <key>beginCaptures</key>
4385 <dict>
4386 <key>0</key>
4387 <dict>
4388 <key>name</key>
4389 <string>punctuation.definition.string.begin.ts</string>
4390 </dict>
4391 </dict>
4392 <key>end</key>
4393 <string>(/)([dgimsuvy]*)</string>
4394 <key>endCaptures</key>
4395 <dict>
4396 <key>1</key>
4397 <dict>
4398 <key>name</key>
4399 <string>punctuation.definition.string.end.ts</string>
4400 </dict>
4401 <key>2</key>
4402 <dict>
4403 <key>name</key>
4404 <string>keyword.other.ts</string>
4405 </dict>
4406 </dict>
4407 <key>patterns</key>
4408 <array>
4409 <dict>
4410 <key>include</key>
4411 <string>#regexp</string>
4412 </dict>
4413 </array>
4414 </dict>
4415 <dict>
4416 <key>include</key>
4417 <string>#statements</string>
4418 </dict>
4419 </array>
4420 </dict>
4421 </array>
4422 </dict>
4423 <key>decl-block</key>
4424 <dict>
4425 <key>name</key>
4426 <string>meta.block.ts</string>
4427 <key>begin</key>
4428 <string>\{</string>
4429 <key>beginCaptures</key>
4430 <dict>
4431 <key>0</key>
4432 <dict>
4433 <key>name</key>
4434 <string>punctuation.definition.block.ts</string>
4435 </dict>
4436 </dict>
4437 <key>end</key>
4438 <string>\}</string>
4439 <key>endCaptures</key>
4440 <dict>
4441 <key>0</key>
4442 <dict>
4443 <key>name</key>
4444 <string>punctuation.definition.block.ts</string>
4445 </dict>
4446 </dict>
4447 <key>patterns</key>
4448 <array>
4449 <dict>
4450 <key>include</key>
4451 <string>#statements</string>
4452 </dict>
4453 </array>
4454 </dict>
4455 <key>after-operator-block-as-object-literal</key>
4456 <dict>
4457 <key>name</key>
4458 <string>meta.objectliteral.ts</string>
4459 <key>begin</key>
4460 <string>(?&lt;!\+\+|--)(?&lt;=[:=(,\[?+!&gt;]|^await|[^\._$[:alnum:]]await|^return|[^\._$[:alnum:]]return|^yield|[^\._$[:alnum:]]yield|^throw|[^\._$[:alnum:]]throw|^in|[^\._$[:alnum:]]in|^of|[^\._$[:alnum:]]of|^typeof|[^\._$[:alnum:]]typeof|&amp;&amp;|\|\||\*)\s*(\{)</string>
4461 <key>beginCaptures</key>
4462 <dict>
4463 <key>1</key>
4464 <dict>
4465 <key>name</key>
4466 <string>punctuation.definition.block.ts</string>
4467 </dict>
4468 </dict>
4469 <key>end</key>
4470 <string>\}</string>
4471 <key>endCaptures</key>
4472 <dict>
4473 <key>0</key>
4474 <dict>
4475 <key>name</key>
4476 <string>punctuation.definition.block.ts</string>
4477 </dict>
4478 </dict>
4479 <key>patterns</key>
4480 <array>
4481 <dict>
4482 <key>include</key>
4483 <string>#object-member</string>
4484 </dict>
4485 </array>
4486 </dict>
4487 <key>object-literal</key>
4488 <dict>
4489 <key>name</key>
4490 <string>meta.objectliteral.ts</string>
4491 <key>begin</key>
4492 <string>\{</string>
4493 <key>beginCaptures</key>
4494 <dict>
4495 <key>0</key>
4496 <dict>
4497 <key>name</key>
4498 <string>punctuation.definition.block.ts</string>
4499 </dict>
4500 </dict>
4501 <key>end</key>
4502 <string>\}</string>
4503 <key>endCaptures</key>
4504 <dict>
4505 <key>0</key>
4506 <dict>
4507 <key>name</key>
4508 <string>punctuation.definition.block.ts</string>
4509 </dict>
4510 </dict>
4511 <key>patterns</key>
4512 <array>
4513 <dict>
4514 <key>include</key>
4515 <string>#object-member</string>
4516 </dict>
4517 </array>
4518 </dict>
4519 <key>object-member</key>
4520 <dict>
4521 <key>patterns</key>
4522 <array>
4523 <dict>
4524 <key>include</key>
4525 <string>#comment</string>
4526 </dict>
4527 <dict>
4528 <key>include</key>
4529 <string>#object-literal-method-declaration</string>
4530 </dict>
4531 <dict>
4532 <key>name</key>
4533 <string>meta.object.member.ts meta.object-literal.key.ts</string>
4534 <key>begin</key>
4535 <string>(?=\[)</string>
4536 <key>end</key>
4537 <string>(?=:)|((?&lt;=[\]])(?=\s*[\(\&lt;]))</string>
4538 <key>patterns</key>
4539 <array>
4540 <dict>
4541 <key>include</key>
4542 <string>#comment</string>
4543 </dict>
4544 <dict>
4545 <key>include</key>
4546 <string>#array-literal</string>
4547 </dict>
4548 </array>
4549 </dict>
4550 <dict>
4551 <key>name</key>
4552 <string>meta.object.member.ts meta.object-literal.key.ts</string>
4553 <key>begin</key>
4554 <string>(?=[\'\"\`])</string>
4555 <key>end</key>
4556 <string>(?=:)|((?&lt;=[\'\"\`])(?=((\s*[\(\&lt;,}])|(\s+(as|satisifies)\s+))))</string>
4557 <key>patterns</key>
4558 <array>
4559 <dict>
4560 <key>include</key>
4561 <string>#comment</string>
4562 </dict>
4563 <dict>
4564 <key>include</key>
4565 <string>#string</string>
4566 </dict>
4567 </array>
4568 </dict>
4569 <dict>
4570 <key>name</key>
4571 <string>meta.object.member.ts meta.object-literal.key.ts</string>
4572 <key>begin</key>
4573 <string>(?x)(?=(\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$))|(\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$))|((?&lt;!\$)(?:
4574 (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
4575 (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
4576 (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
4577 (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
4578 (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
4579 (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
4580 (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
4581 (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
4582)(?!\$)))</string>
4583 <key>end</key>
4584 <string>(?=:)|(?=\s*([\(\&lt;,}])|(\s+as|satisifies\s+))</string>
4585 <key>patterns</key>
4586 <array>
4587 <dict>
4588 <key>include</key>
4589 <string>#comment</string>
4590 </dict>
4591 <dict>
4592 <key>include</key>
4593 <string>#numeric-literal</string>
4594 </dict>
4595 </array>
4596 </dict>
4597 <dict>
4598 <key>name</key>
4599 <string>meta.method.declaration.ts</string>
4600 <key>begin</key>
4601 <string>(?&lt;=[\]\'\"\`])(?=\s*[\(\&lt;])</string>
4602 <key>end</key>
4603 <string>(?=\}|;|,)|(?&lt;=\})</string>
4604 <key>patterns</key>
4605 <array>
4606 <dict>
4607 <key>include</key>
4608 <string>#function-body</string>
4609 </dict>
4610 </array>
4611 </dict>
4612 <dict>
4613 <key>name</key>
4614 <string>meta.object.member.ts</string>
4615 <key>match</key>
4616 <string>(?![_$[:alpha:]])([[:digit:]]+)\s*(?=(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*:)</string>
4617 <key>captures</key>
4618 <dict>
4619 <key>0</key>
4620 <dict>
4621 <key>name</key>
4622 <string>meta.object-literal.key.ts</string>
4623 </dict>
4624 <key>1</key>
4625 <dict>
4626 <key>name</key>
4627 <string>constant.numeric.decimal.ts</string>
4628 </dict>
4629 </dict>
4630 </dict>
4631 <dict>
4632 <key>name</key>
4633 <string>meta.object.member.ts</string>
4634 <key>match</key>
4635 <string>(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\s*(?=(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*:(\s*\/\*([^\*]|(\*[^\/]))*\*\/)*\s*(
4636 ((async\s+)?(
4637 (function\s*[(&lt;*]) |
4638 (function\s+) |
4639 ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;)
4640 )) |
4641 ((async\s*)?(
4642 ((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
4643 # sure shot arrow functions even if =&gt; is on new line
4644(
4645 (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?
4646 [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
4647 (
4648 ([)]\s*:) | # ():
4649 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
4650 )
4651) |
4652
4653# arrow function possible to detect only with =&gt; on same line
4654(
4655 (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters
4656 \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
4657 (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
4658 \s*=&gt; # arrow operator
4659)
4660 ))
4661)))</string>
4662 <key>captures</key>
4663 <dict>
4664 <key>0</key>
4665 <dict>
4666 <key>name</key>
4667 <string>meta.object-literal.key.ts</string>
4668 </dict>
4669 <key>1</key>
4670 <dict>
4671 <key>name</key>
4672 <string>entity.name.function.ts</string>
4673 </dict>
4674 </dict>
4675 </dict>
4676 <dict>
4677 <key>name</key>
4678 <string>meta.object.member.ts</string>
4679 <key>match</key>
4680 <string>(?:[_$[:alpha:]][_$[:alnum:]]*)\s*(?=(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*:)</string>
4681 <key>captures</key>
4682 <dict>
4683 <key>0</key>
4684 <dict>
4685 <key>name</key>
4686 <string>meta.object-literal.key.ts</string>
4687 </dict>
4688 </dict>
4689 </dict>
4690 <dict>
4691 <key>name</key>
4692 <string>meta.object.member.ts</string>
4693 <key>begin</key>
4694 <string>\.\.\.</string>
4695 <key>beginCaptures</key>
4696 <dict>
4697 <key>0</key>
4698 <dict>
4699 <key>name</key>
4700 <string>keyword.operator.spread.ts</string>
4701 </dict>
4702 </dict>
4703 <key>end</key>
4704 <string>(?=,|\})</string>
4705 <key>patterns</key>
4706 <array>
4707 <dict>
4708 <key>include</key>
4709 <string>#expression</string>
4710 </dict>
4711 </array>
4712 </dict>
4713 <dict>
4714 <key>name</key>
4715 <string>meta.object.member.ts</string>
4716 <key>match</key>
4717 <string>([_$[:alpha:]][_$[:alnum:]]*)\s*(?=,|\}|$|\/\/|\/\*)</string>
4718 <key>captures</key>
4719 <dict>
4720 <key>1</key>
4721 <dict>
4722 <key>name</key>
4723 <string>variable.other.readwrite.ts</string>
4724 </dict>
4725 </dict>
4726 </dict>
4727 <dict>
4728 <key>name</key>
4729 <string>meta.object.member.ts</string>
4730 <key>match</key>
4731 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as)\s+(const)(?=\s*([,}]|$))</string>
4732 <key>captures</key>
4733 <dict>
4734 <key>1</key>
4735 <dict>
4736 <key>name</key>
4737 <string>keyword.control.as.ts</string>
4738 </dict>
4739 <key>2</key>
4740 <dict>
4741 <key>name</key>
4742 <string>storage.modifier.ts</string>
4743 </dict>
4744 </dict>
4745 </dict>
4746 <dict>
4747 <key>name</key>
4748 <string>meta.object.member.ts</string>
4749 <key>begin</key>
4750 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(as)|(satisfies))\s+</string>
4751 <key>beginCaptures</key>
4752 <dict>
4753 <key>1</key>
4754 <dict>
4755 <key>name</key>
4756 <string>keyword.control.as.ts</string>
4757 </dict>
4758 <key>2</key>
4759 <dict>
4760 <key>name</key>
4761 <string>keyword.control.satisfies.ts</string>
4762 </dict>
4763 </dict>
4764 <key>end</key>
4765 <string>(?=[;),}\]:?\-\+\&gt;]|\|\||\&amp;\&amp;|\!\=\=|$|^|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as|satisifies)\s+))</string>
4766 <key>patterns</key>
4767 <array>
4768 <dict>
4769 <key>include</key>
4770 <string>#type</string>
4771 </dict>
4772 </array>
4773 </dict>
4774 <dict>
4775 <key>name</key>
4776 <string>meta.object.member.ts</string>
4777 <key>begin</key>
4778 <string>(?=[_$[:alpha:]][_$[:alnum:]]*\s*=)</string>
4779 <key>end</key>
4780 <string>(?=,|\}|$|\/\/|\/\*)</string>
4781 <key>patterns</key>
4782 <array>
4783 <dict>
4784 <key>include</key>
4785 <string>#expression</string>
4786 </dict>
4787 </array>
4788 </dict>
4789 <dict>
4790 <key>name</key>
4791 <string>meta.object.member.ts</string>
4792 <key>begin</key>
4793 <string>:</string>
4794 <key>beginCaptures</key>
4795 <dict>
4796 <key>0</key>
4797 <dict>
4798 <key>name</key>
4799 <string>meta.object-literal.key.ts punctuation.separator.key-value.ts</string>
4800 </dict>
4801 </dict>
4802 <key>end</key>
4803 <string>(?=,|\})</string>
4804 <key>patterns</key>
4805 <array>
4806 <dict>
4807 <key>begin</key>
4808 <string>(?&lt;=:)\s*(async)?(?=\s*(&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)\(\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))</string>
4809 <key>beginCaptures</key>
4810 <dict>
4811 <key>1</key>
4812 <dict>
4813 <key>name</key>
4814 <string>storage.modifier.async.ts</string>
4815 </dict>
4816 </dict>
4817 <key>end</key>
4818 <string>(?&lt;=\))</string>
4819 <key>patterns</key>
4820 <array>
4821 <dict>
4822 <key>include</key>
4823 <string>#type-parameters</string>
4824 </dict>
4825 <dict>
4826 <key>begin</key>
4827 <string>\(</string>
4828 <key>beginCaptures</key>
4829 <dict>
4830 <key>0</key>
4831 <dict>
4832 <key>name</key>
4833 <string>meta.brace.round.ts</string>
4834 </dict>
4835 </dict>
4836 <key>end</key>
4837 <string>\)</string>
4838 <key>endCaptures</key>
4839 <dict>
4840 <key>0</key>
4841 <dict>
4842 <key>name</key>
4843 <string>meta.brace.round.ts</string>
4844 </dict>
4845 </dict>
4846 <key>patterns</key>
4847 <array>
4848 <dict>
4849 <key>include</key>
4850 <string>#expression-inside-possibly-arrow-parens</string>
4851 </dict>
4852 </array>
4853 </dict>
4854 </array>
4855 </dict>
4856 <dict>
4857 <key>begin</key>
4858 <string>(?&lt;=:)\s*(async)?\s*(\()(?=\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))</string>
4859 <key>beginCaptures</key>
4860 <dict>
4861 <key>1</key>
4862 <dict>
4863 <key>name</key>
4864 <string>storage.modifier.async.ts</string>
4865 </dict>
4866 <key>2</key>
4867 <dict>
4868 <key>name</key>
4869 <string>meta.brace.round.ts</string>
4870 </dict>
4871 </dict>
4872 <key>end</key>
4873 <string>\)</string>
4874 <key>endCaptures</key>
4875 <dict>
4876 <key>0</key>
4877 <dict>
4878 <key>name</key>
4879 <string>meta.brace.round.ts</string>
4880 </dict>
4881 </dict>
4882 <key>patterns</key>
4883 <array>
4884 <dict>
4885 <key>include</key>
4886 <string>#expression-inside-possibly-arrow-parens</string>
4887 </dict>
4888 </array>
4889 </dict>
4890 <dict>
4891 <key>begin</key>
4892 <string>(?&lt;=:)\s*(async)?\s*(?=\&lt;\s*$)</string>
4893 <key>beginCaptures</key>
4894 <dict>
4895 <key>1</key>
4896 <dict>
4897 <key>name</key>
4898 <string>storage.modifier.async.ts</string>
4899 </dict>
4900 </dict>
4901 <key>end</key>
4902 <string>(?&lt;=\&gt;)</string>
4903 <key>patterns</key>
4904 <array>
4905 <dict>
4906 <key>include</key>
4907 <string>#type-parameters</string>
4908 </dict>
4909 </array>
4910 </dict>
4911 <dict>
4912 <key>begin</key>
4913 <string>(?&lt;=\&gt;)\s*(\()(?=\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))</string>
4914 <key>beginCaptures</key>
4915 <dict>
4916 <key>1</key>
4917 <dict>
4918 <key>name</key>
4919 <string>meta.brace.round.ts</string>
4920 </dict>
4921 </dict>
4922 <key>end</key>
4923 <string>\)</string>
4924 <key>endCaptures</key>
4925 <dict>
4926 <key>0</key>
4927 <dict>
4928 <key>name</key>
4929 <string>meta.brace.round.ts</string>
4930 </dict>
4931 </dict>
4932 <key>patterns</key>
4933 <array>
4934 <dict>
4935 <key>include</key>
4936 <string>#expression-inside-possibly-arrow-parens</string>
4937 </dict>
4938 </array>
4939 </dict>
4940 <dict>
4941 <key>include</key>
4942 <string>#possibly-arrow-return-type</string>
4943 </dict>
4944 <dict>
4945 <key>include</key>
4946 <string>#expression</string>
4947 </dict>
4948 </array>
4949 </dict>
4950 <dict>
4951 <key>include</key>
4952 <string>#punctuation-comma</string>
4953 </dict>
4954 <dict>
4955 <key>include</key>
4956 <string>#decl-block</string>
4957 </dict>
4958 </array>
4959 </dict>
4960 <key>ternary-expression</key>
4961 <dict>
4962 <key>begin</key>
4963 <string>(?!\?\.\s*[^[:digit:]])(\?)(?!\?)</string>
4964 <key>beginCaptures</key>
4965 <dict>
4966 <key>1</key>
4967 <dict>
4968 <key>name</key>
4969 <string>keyword.operator.ternary.ts</string>
4970 </dict>
4971 </dict>
4972 <key>end</key>
4973 <string>\s*(:)</string>
4974 <key>endCaptures</key>
4975 <dict>
4976 <key>1</key>
4977 <dict>
4978 <key>name</key>
4979 <string>keyword.operator.ternary.ts</string>
4980 </dict>
4981 </dict>
4982 <key>patterns</key>
4983 <array>
4984 <dict>
4985 <key>include</key>
4986 <string>#expression</string>
4987 </dict>
4988 </array>
4989 </dict>
4990 <key>function-call</key>
4991 <dict>
4992 <key>patterns</key>
4993 <array>
4994 <dict>
4995 <key>begin</key>
4996 <string>(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))|(?&lt;=[\)]))\s*(?:(\?\.\s*)|(\!))?((&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))(([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;)*(?&lt;!=)\&gt;))*(?&lt;!=)\&gt;)*(?&lt;!=)&gt;\s*)?\())</string>
4997 <key>end</key>
4998 <string>(?&lt;=\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))|(?&lt;=[\)]))\s*(?:(\?\.\s*)|(\!))?((&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))(([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;)*(?&lt;!=)\&gt;))*(?&lt;!=)\&gt;)*(?&lt;!=)&gt;\s*)?\())</string>
4999 <key>patterns</key>
5000 <array>
5001 <dict>
5002 <key>name</key>
5003 <string>meta.function-call.ts</string>
5004 <key>begin</key>
5005 <string>(?=(([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))</string>
5006 <key>end</key>
5007 <string>(?=\s*(?:(\?\.\s*)|(\!))?((&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))(([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;)*(?&lt;!=)\&gt;))*(?&lt;!=)\&gt;)*(?&lt;!=)&gt;\s*)?\())</string>
5008 <key>patterns</key>
5009 <array>
5010 <dict>
5011 <key>include</key>
5012 <string>#function-call-target</string>
5013 </dict>
5014 </array>
5015 </dict>
5016 <dict>
5017 <key>include</key>
5018 <string>#comment</string>
5019 </dict>
5020 <dict>
5021 <key>include</key>
5022 <string>#function-call-optionals</string>
5023 </dict>
5024 <dict>
5025 <key>include</key>
5026 <string>#type-arguments</string>
5027 </dict>
5028 <dict>
5029 <key>include</key>
5030 <string>#paren-expression</string>
5031 </dict>
5032 </array>
5033 </dict>
5034 <dict>
5035 <key>begin</key>
5036 <string>(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))|(?&lt;=[\)]))(&lt;\s*[\{\[\(]\s*$))</string>
5037 <key>end</key>
5038 <string>(?&lt;=\&gt;)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))|(?&lt;=[\)]))(&lt;\s*[\{\[\(]\s*$))</string>
5039 <key>patterns</key>
5040 <array>
5041 <dict>
5042 <key>name</key>
5043 <string>meta.function-call.ts</string>
5044 <key>begin</key>
5045 <string>(?=(([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))</string>
5046 <key>end</key>
5047 <string>(?=(&lt;\s*[\{\[\(]\s*$))</string>
5048 <key>patterns</key>
5049 <array>
5050 <dict>
5051 <key>include</key>
5052 <string>#function-call-target</string>
5053 </dict>
5054 </array>
5055 </dict>
5056 <dict>
5057 <key>include</key>
5058 <string>#comment</string>
5059 </dict>
5060 <dict>
5061 <key>include</key>
5062 <string>#function-call-optionals</string>
5063 </dict>
5064 <dict>
5065 <key>include</key>
5066 <string>#type-arguments</string>
5067 </dict>
5068 </array>
5069 </dict>
5070 </array>
5071 </dict>
5072 <key>function-call-target</key>
5073 <dict>
5074 <key>patterns</key>
5075 <array>
5076 <dict>
5077 <key>include</key>
5078 <string>#support-function-call-identifiers</string>
5079 </dict>
5080 <dict>
5081 <key>name</key>
5082 <string>entity.name.function.ts</string>
5083 <key>match</key>
5084 <string>(\#?[_$[:alpha:]][_$[:alnum:]]*)</string>
5085 </dict>
5086 </array>
5087 </dict>
5088 <key>function-call-optionals</key>
5089 <dict>
5090 <key>patterns</key>
5091 <array>
5092 <dict>
5093 <key>name</key>
5094 <string>meta.function-call.ts punctuation.accessor.optional.ts</string>
5095 <key>match</key>
5096 <string>\?\.</string>
5097 </dict>
5098 <dict>
5099 <key>name</key>
5100 <string>meta.function-call.ts keyword.operator.definiteassignment.ts</string>
5101 <key>match</key>
5102 <string>\!</string>
5103 </dict>
5104 </array>
5105 </dict>
5106 <key>support-function-call-identifiers</key>
5107 <dict>
5108 <key>patterns</key>
5109 <array>
5110 <dict>
5111 <key>include</key>
5112 <string>#literal</string>
5113 </dict>
5114 <dict>
5115 <key>include</key>
5116 <string>#support-objects</string>
5117 </dict>
5118 <dict>
5119 <key>include</key>
5120 <string>#object-identifiers</string>
5121 </dict>
5122 <dict>
5123 <key>include</key>
5124 <string>#punctuation-accessor</string>
5125 </dict>
5126 <dict>
5127 <key>name</key>
5128 <string>keyword.operator.expression.import.ts</string>
5129 <key>match</key>
5130 <string>(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))import(?=\s*[\(]\s*[\"\'\`]))</string>
5131 </dict>
5132 </array>
5133 </dict>
5134 <key>new-expr</key>
5135 <dict>
5136 <key>name</key>
5137 <string>new.expr.ts</string>
5138 <key>begin</key>
5139 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(new)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
5140 <key>beginCaptures</key>
5141 <dict>
5142 <key>1</key>
5143 <dict>
5144 <key>name</key>
5145 <string>keyword.operator.new.ts</string>
5146 </dict>
5147 </dict>
5148 <key>end</key>
5149 <string>(?&lt;=\))|(?=[;),}\]:?\-\+\&gt;]|\|\||\&amp;\&amp;|\!\=\=|$|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))new(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))function((\s+[_$[:alpha:]][_$[:alnum:]]*)|(\s*[\(]))))</string>
5150 <key>patterns</key>
5151 <array>
5152 <dict>
5153 <key>include</key>
5154 <string>#expression</string>
5155 </dict>
5156 </array>
5157 </dict>
5158 <key>instanceof-expr</key>
5159 <dict>
5160 <key>begin</key>
5161 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(instanceof)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
5162 <key>beginCaptures</key>
5163 <dict>
5164 <key>1</key>
5165 <dict>
5166 <key>name</key>
5167 <string>keyword.operator.expression.instanceof.ts</string>
5168 </dict>
5169 </dict>
5170 <key>end</key>
5171 <string>(?&lt;=\))|(?=[;),}\]:?\-\+\&gt;]|\|\||\&amp;\&amp;|\!\=\=|$|(===|!==|==|!=)|(([\&amp;\~\^\|]\s*)?[_$[:alpha:]][_$[:alnum:]]*\s+instanceof(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))function((\s+[_$[:alpha:]][_$[:alnum:]]*)|(\s*[\(]))))</string>
5172 <key>patterns</key>
5173 <array>
5174 <dict>
5175 <key>include</key>
5176 <string>#type</string>
5177 </dict>
5178 </array>
5179 </dict>
5180 <key>paren-expression-possibly-arrow</key>
5181 <dict>
5182 <key>patterns</key>
5183 <array>
5184 <dict>
5185 <key>begin</key>
5186 <string>(?&lt;=[(=,])\s*(async)?(?=\s*((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*))?\(\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))</string>
5187 <key>beginCaptures</key>
5188 <dict>
5189 <key>1</key>
5190 <dict>
5191 <key>name</key>
5192 <string>storage.modifier.async.ts</string>
5193 </dict>
5194 </dict>
5195 <key>end</key>
5196 <string>(?&lt;=\))</string>
5197 <key>patterns</key>
5198 <array>
5199 <dict>
5200 <key>include</key>
5201 <string>#paren-expression-possibly-arrow-with-typeparameters</string>
5202 </dict>
5203 </array>
5204 </dict>
5205 <dict>
5206 <key>begin</key>
5207 <string>(?&lt;=[(=,]|=&gt;|^return|[^\._$[:alnum:]]return)\s*(async)?(?=\s*((((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*))?\()|(&lt;)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)))\s*$)</string>
5208 <key>beginCaptures</key>
5209 <dict>
5210 <key>1</key>
5211 <dict>
5212 <key>name</key>
5213 <string>storage.modifier.async.ts</string>
5214 </dict>
5215 </dict>
5216 <key>end</key>
5217 <string>(?&lt;=\))</string>
5218 <key>patterns</key>
5219 <array>
5220 <dict>
5221 <key>include</key>
5222 <string>#paren-expression-possibly-arrow-with-typeparameters</string>
5223 </dict>
5224 </array>
5225 </dict>
5226 <dict>
5227 <key>include</key>
5228 <string>#possibly-arrow-return-type</string>
5229 </dict>
5230 </array>
5231 </dict>
5232 <key>paren-expression-possibly-arrow-with-typeparameters</key>
5233 <dict>
5234 <key>patterns</key>
5235 <array>
5236 <dict>
5237 <key>include</key>
5238 <string>#type-parameters</string>
5239 </dict>
5240 <dict>
5241 <key>begin</key>
5242 <string>\(</string>
5243 <key>beginCaptures</key>
5244 <dict>
5245 <key>0</key>
5246 <dict>
5247 <key>name</key>
5248 <string>meta.brace.round.ts</string>
5249 </dict>
5250 </dict>
5251 <key>end</key>
5252 <string>\)</string>
5253 <key>endCaptures</key>
5254 <dict>
5255 <key>0</key>
5256 <dict>
5257 <key>name</key>
5258 <string>meta.brace.round.ts</string>
5259 </dict>
5260 </dict>
5261 <key>patterns</key>
5262 <array>
5263 <dict>
5264 <key>include</key>
5265 <string>#expression-inside-possibly-arrow-parens</string>
5266 </dict>
5267 </array>
5268 </dict>
5269 </array>
5270 </dict>
5271 <key>expression-inside-possibly-arrow-parens</key>
5272 <dict>
5273 <key>patterns</key>
5274 <array>
5275 <dict>
5276 <key>include</key>
5277 <string>#expressionWithoutIdentifiers</string>
5278 </dict>
5279 <dict>
5280 <key>include</key>
5281 <string>#comment</string>
5282 </dict>
5283 <dict>
5284 <key>include</key>
5285 <string>#string</string>
5286 </dict>
5287 <dict>
5288 <key>include</key>
5289 <string>#decorator</string>
5290 </dict>
5291 <dict>
5292 <key>include</key>
5293 <string>#destructuring-parameter</string>
5294 </dict>
5295 <dict>
5296 <key>match</key>
5297 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(override|public|protected|private|readonly)\s+(?=(override|public|protected|private|readonly)\s+)</string>
5298 <key>captures</key>
5299 <dict>
5300 <key>1</key>
5301 <dict>
5302 <key>name</key>
5303 <string>storage.modifier.ts</string>
5304 </dict>
5305 </dict>
5306 </dict>
5307 <dict>
5308 <key>match</key>
5309 <string>(?x)(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(override|public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?&lt;!=|:)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)(?=\s*
5310# function assignment |
5311(=\s*(
5312 ((async\s+)?(
5313 (function\s*[(&lt;*]) |
5314 (function\s+) |
5315 ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;)
5316 )) |
5317 ((async\s*)?(
5318 ((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
5319 # sure shot arrow functions even if =&gt; is on new line
5320(
5321 (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?
5322 [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
5323 (
5324 ([)]\s*:) | # ():
5325 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
5326 )
5327) |
5328
5329# arrow function possible to detect only with =&gt; on same line
5330(
5331 (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters
5332 \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
5333 (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
5334 \s*=&gt; # arrow operator
5335)
5336 ))
5337)) |
5338# typeannotation is fn type: &lt; | () | (... | (param: | (param, | (param? | (param= | (param) =&gt;
5339(:\s*(
5340 (&lt;) |
5341 ([(]\s*(
5342 ([)]) |
5343 (\.\.\.) |
5344 ([_$[:alnum:]]+\s*(
5345 ([:,?=])|
5346 ([)]\s*=&gt;)
5347 ))
5348 ))
5349)) |
5350(:\s*(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))Function(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))) |
5351(:\s*((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*))))))) |
5352(:\s*(=&gt;|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(&lt;[^&lt;&gt;]*&gt;)|[^&lt;&gt;(),=])+=\s*(
5353 ((async\s+)?(
5354 (function\s*[(&lt;*]) |
5355 (function\s+) |
5356 ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;)
5357 )) |
5358 ((async\s*)?(
5359 ((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
5360 # sure shot arrow functions even if =&gt; is on new line
5361(
5362 (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?
5363 [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
5364 (
5365 ([)]\s*:) | # ():
5366 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
5367 )
5368) |
5369
5370# arrow function possible to detect only with =&gt; on same line
5371(
5372 (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters
5373 \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
5374 (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
5375 \s*=&gt; # arrow operator
5376)
5377 ))
5378)))</string>
5379 <key>captures</key>
5380 <dict>
5381 <key>1</key>
5382 <dict>
5383 <key>name</key>
5384 <string>storage.modifier.ts</string>
5385 </dict>
5386 <key>2</key>
5387 <dict>
5388 <key>name</key>
5389 <string>keyword.operator.rest.ts</string>
5390 </dict>
5391 <key>3</key>
5392 <dict>
5393 <key>name</key>
5394 <string>entity.name.function.ts variable.language.this.ts</string>
5395 </dict>
5396 <key>4</key>
5397 <dict>
5398 <key>name</key>
5399 <string>entity.name.function.ts</string>
5400 </dict>
5401 <key>5</key>
5402 <dict>
5403 <key>name</key>
5404 <string>keyword.operator.optional.ts</string>
5405 </dict>
5406 </dict>
5407 </dict>
5408 <dict>
5409 <key>match</key>
5410 <string>(?x)(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(override|public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?&lt;!=|:)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*(\??)(?=\s*[:,]|$)</string>
5411 <key>captures</key>
5412 <dict>
5413 <key>1</key>
5414 <dict>
5415 <key>name</key>
5416 <string>storage.modifier.ts</string>
5417 </dict>
5418 <key>2</key>
5419 <dict>
5420 <key>name</key>
5421 <string>keyword.operator.rest.ts</string>
5422 </dict>
5423 <key>3</key>
5424 <dict>
5425 <key>name</key>
5426 <string>variable.parameter.ts variable.language.this.ts</string>
5427 </dict>
5428 <key>4</key>
5429 <dict>
5430 <key>name</key>
5431 <string>variable.parameter.ts</string>
5432 </dict>
5433 <key>5</key>
5434 <dict>
5435 <key>name</key>
5436 <string>keyword.operator.optional.ts</string>
5437 </dict>
5438 </dict>
5439 </dict>
5440 <dict>
5441 <key>include</key>
5442 <string>#type-annotation</string>
5443 </dict>
5444 <dict>
5445 <key>include</key>
5446 <string>#variable-initializer</string>
5447 </dict>
5448 <dict>
5449 <key>name</key>
5450 <string>punctuation.separator.parameter.ts</string>
5451 <key>match</key>
5452 <string>,</string>
5453 </dict>
5454 <dict>
5455 <key>include</key>
5456 <string>#identifiers</string>
5457 </dict>
5458 <dict>
5459 <key>include</key>
5460 <string>#expressionPunctuations</string>
5461 </dict>
5462 </array>
5463 </dict>
5464 <key>paren-expression</key>
5465 <dict>
5466 <key>begin</key>
5467 <string>\(</string>
5468 <key>beginCaptures</key>
5469 <dict>
5470 <key>0</key>
5471 <dict>
5472 <key>name</key>
5473 <string>meta.brace.round.ts</string>
5474 </dict>
5475 </dict>
5476 <key>end</key>
5477 <string>\)</string>
5478 <key>endCaptures</key>
5479 <dict>
5480 <key>0</key>
5481 <dict>
5482 <key>name</key>
5483 <string>meta.brace.round.ts</string>
5484 </dict>
5485 </dict>
5486 <key>patterns</key>
5487 <array>
5488 <dict>
5489 <key>include</key>
5490 <string>#expression</string>
5491 </dict>
5492 </array>
5493 </dict>
5494 <key>cast</key>
5495 <dict>
5496 <key>patterns</key>
5497 <array>
5498 <dict>
5499 <key>name</key>
5500 <string>cast.expr.ts</string>
5501 <key>match</key>
5502 <string>\s*(&lt;)\s*(const)\s*(&gt;)</string>
5503 <key>captures</key>
5504 <dict>
5505 <key>1</key>
5506 <dict>
5507 <key>name</key>
5508 <string>meta.brace.angle.ts</string>
5509 </dict>
5510 <key>2</key>
5511 <dict>
5512 <key>name</key>
5513 <string>storage.modifier.ts</string>
5514 </dict>
5515 <key>3</key>
5516 <dict>
5517 <key>name</key>
5518 <string>meta.brace.angle.ts</string>
5519 </dict>
5520 </dict>
5521 </dict>
5522 <dict>
5523 <key>name</key>
5524 <string>cast.expr.ts</string>
5525 <key>begin</key>
5526 <string>(?:(?&lt;!\+\+|--)(?&lt;=^return|[^\._$[:alnum:]]return|^throw|[^\._$[:alnum:]]throw|^yield|[^\._$[:alnum:]]yield|^await|[^\._$[:alnum:]]await|^default|[^\._$[:alnum:]]default|[=(,:&gt;*?\&amp;\|\^]|[^_$[:alnum:]](?:\+\+|\-\-)|[^\+]\+|[^\-]\-))\s*(&lt;)(?!&lt;?\=)(?!\s*$)</string>
5527 <key>beginCaptures</key>
5528 <dict>
5529 <key>1</key>
5530 <dict>
5531 <key>name</key>
5532 <string>meta.brace.angle.ts</string>
5533 </dict>
5534 </dict>
5535 <key>end</key>
5536 <string>(\&gt;)</string>
5537 <key>endCaptures</key>
5538 <dict>
5539 <key>1</key>
5540 <dict>
5541 <key>name</key>
5542 <string>meta.brace.angle.ts</string>
5543 </dict>
5544 </dict>
5545 <key>patterns</key>
5546 <array>
5547 <dict>
5548 <key>include</key>
5549 <string>#type</string>
5550 </dict>
5551 </array>
5552 </dict>
5553 <dict>
5554 <key>name</key>
5555 <string>cast.expr.ts</string>
5556 <key>begin</key>
5557 <string>(?:(?&lt;=^))\s*(&lt;)(?=[_$[:alpha:]][_$[:alnum:]]*\s*&gt;)</string>
5558 <key>beginCaptures</key>
5559 <dict>
5560 <key>1</key>
5561 <dict>
5562 <key>name</key>
5563 <string>meta.brace.angle.ts</string>
5564 </dict>
5565 </dict>
5566 <key>end</key>
5567 <string>(\&gt;)</string>
5568 <key>endCaptures</key>
5569 <dict>
5570 <key>1</key>
5571 <dict>
5572 <key>name</key>
5573 <string>meta.brace.angle.ts</string>
5574 </dict>
5575 </dict>
5576 <key>patterns</key>
5577 <array>
5578 <dict>
5579 <key>include</key>
5580 <string>#type</string>
5581 </dict>
5582 </array>
5583 </dict>
5584 </array>
5585 </dict>
5586 <key>expression-operators</key>
5587 <dict>
5588 <key>patterns</key>
5589 <array>
5590 <dict>
5591 <key>name</key>
5592 <string>keyword.control.flow.ts</string>
5593 <key>match</key>
5594 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(await)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
5595 </dict>
5596 <dict>
5597 <key>begin</key>
5598 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(yield)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))(?=\s*\/\*([^\*]|(\*[^\/]))*\*\/\s*\*)</string>
5599 <key>beginCaptures</key>
5600 <dict>
5601 <key>1</key>
5602 <dict>
5603 <key>name</key>
5604 <string>keyword.control.flow.ts</string>
5605 </dict>
5606 </dict>
5607 <key>end</key>
5608 <string>\*</string>
5609 <key>endCaptures</key>
5610 <dict>
5611 <key>0</key>
5612 <dict>
5613 <key>name</key>
5614 <string>keyword.generator.asterisk.ts</string>
5615 </dict>
5616 </dict>
5617 <key>patterns</key>
5618 <array>
5619 <dict>
5620 <key>include</key>
5621 <string>#comment</string>
5622 </dict>
5623 </array>
5624 </dict>
5625 <dict>
5626 <key>match</key>
5627 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(yield)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))(?:\s*(\*))?</string>
5628 <key>captures</key>
5629 <dict>
5630 <key>1</key>
5631 <dict>
5632 <key>name</key>
5633 <string>keyword.control.flow.ts</string>
5634 </dict>
5635 <key>2</key>
5636 <dict>
5637 <key>name</key>
5638 <string>keyword.generator.asterisk.ts</string>
5639 </dict>
5640 </dict>
5641 </dict>
5642 <dict>
5643 <key>name</key>
5644 <string>keyword.operator.expression.delete.ts</string>
5645 <key>match</key>
5646 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))delete(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
5647 </dict>
5648 <dict>
5649 <key>name</key>
5650 <string>keyword.operator.expression.in.ts</string>
5651 <key>match</key>
5652 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))in(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))(?!\()</string>
5653 </dict>
5654 <dict>
5655 <key>name</key>
5656 <string>keyword.operator.expression.of.ts</string>
5657 <key>match</key>
5658 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))of(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))(?!\()</string>
5659 </dict>
5660 <dict>
5661 <key>name</key>
5662 <string>keyword.operator.expression.instanceof.ts</string>
5663 <key>match</key>
5664 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))instanceof(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
5665 </dict>
5666 <dict>
5667 <key>name</key>
5668 <string>keyword.operator.new.ts</string>
5669 <key>match</key>
5670 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))new(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
5671 </dict>
5672 <dict>
5673 <key>include</key>
5674 <string>#typeof-operator</string>
5675 </dict>
5676 <dict>
5677 <key>name</key>
5678 <string>keyword.operator.expression.void.ts</string>
5679 <key>match</key>
5680 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))void(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
5681 </dict>
5682 <dict>
5683 <key>match</key>
5684 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as)\s+(const)(?=\s*($|[;,:})\]]))</string>
5685 <key>captures</key>
5686 <dict>
5687 <key>1</key>
5688 <dict>
5689 <key>name</key>
5690 <string>keyword.control.as.ts</string>
5691 </dict>
5692 <key>2</key>
5693 <dict>
5694 <key>name</key>
5695 <string>storage.modifier.ts</string>
5696 </dict>
5697 </dict>
5698 </dict>
5699 <dict>
5700 <key>begin</key>
5701 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(as)|(satisfies))\s+</string>
5702 <key>beginCaptures</key>
5703 <dict>
5704 <key>1</key>
5705 <dict>
5706 <key>name</key>
5707 <string>keyword.control.as.ts</string>
5708 </dict>
5709 <key>2</key>
5710 <dict>
5711 <key>name</key>
5712 <string>keyword.control.satisfies.ts</string>
5713 </dict>
5714 </dict>
5715 <key>end</key>
5716 <string>(?=^|[;),}\]:?\-\+\&gt;]|\|\||\&amp;\&amp;|\!\=\=|$|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(as|satisfies)\s+)|(\s+\&lt;))</string>
5717 <key>patterns</key>
5718 <array>
5719 <dict>
5720 <key>include</key>
5721 <string>#type</string>
5722 </dict>
5723 </array>
5724 </dict>
5725 <dict>
5726 <key>name</key>
5727 <string>keyword.operator.spread.ts</string>
5728 <key>match</key>
5729 <string>\.\.\.</string>
5730 </dict>
5731 <dict>
5732 <key>name</key>
5733 <string>keyword.operator.assignment.compound.ts</string>
5734 <key>match</key>
5735 <string>\*=|(?&lt;!\()/=|%=|\+=|\-=</string>
5736 </dict>
5737 <dict>
5738 <key>name</key>
5739 <string>keyword.operator.assignment.compound.bitwise.ts</string>
5740 <key>match</key>
5741 <string>\&amp;=|\^=|&lt;&lt;=|&gt;&gt;=|&gt;&gt;&gt;=|\|=</string>
5742 </dict>
5743 <dict>
5744 <key>name</key>
5745 <string>keyword.operator.bitwise.shift.ts</string>
5746 <key>match</key>
5747 <string>&lt;&lt;|&gt;&gt;&gt;|&gt;&gt;</string>
5748 </dict>
5749 <dict>
5750 <key>name</key>
5751 <string>keyword.operator.comparison.ts</string>
5752 <key>match</key>
5753 <string>===|!==|==|!=</string>
5754 </dict>
5755 <dict>
5756 <key>name</key>
5757 <string>keyword.operator.relational.ts</string>
5758 <key>match</key>
5759 <string>&lt;=|&gt;=|&lt;&gt;|&lt;|&gt;</string>
5760 </dict>
5761 <dict>
5762 <key>match</key>
5763 <string>(?&lt;=[_$[:alnum:]])(\!)\s*(?:(/=)|(?:(/)(?![/*])))</string>
5764 <key>captures</key>
5765 <dict>
5766 <key>1</key>
5767 <dict>
5768 <key>name</key>
5769 <string>keyword.operator.logical.ts</string>
5770 </dict>
5771 <key>2</key>
5772 <dict>
5773 <key>name</key>
5774 <string>keyword.operator.assignment.compound.ts</string>
5775 </dict>
5776 <key>3</key>
5777 <dict>
5778 <key>name</key>
5779 <string>keyword.operator.arithmetic.ts</string>
5780 </dict>
5781 </dict>
5782 </dict>
5783 <dict>
5784 <key>name</key>
5785 <string>keyword.operator.logical.ts</string>
5786 <key>match</key>
5787 <string>\!|&amp;&amp;|\|\||\?\?</string>
5788 </dict>
5789 <dict>
5790 <key>name</key>
5791 <string>keyword.operator.bitwise.ts</string>
5792 <key>match</key>
5793 <string>\&amp;|~|\^|\|</string>
5794 </dict>
5795 <dict>
5796 <key>name</key>
5797 <string>keyword.operator.assignment.ts</string>
5798 <key>match</key>
5799 <string>\=</string>
5800 </dict>
5801 <dict>
5802 <key>name</key>
5803 <string>keyword.operator.decrement.ts</string>
5804 <key>match</key>
5805 <string>--</string>
5806 </dict>
5807 <dict>
5808 <key>name</key>
5809 <string>keyword.operator.increment.ts</string>
5810 <key>match</key>
5811 <string>\+\+</string>
5812 </dict>
5813 <dict>
5814 <key>name</key>
5815 <string>keyword.operator.arithmetic.ts</string>
5816 <key>match</key>
5817 <string>%|\*|/|-|\+</string>
5818 </dict>
5819 <dict>
5820 <key>begin</key>
5821 <string>(?&lt;=[_$[:alnum:])\]])\s*(?=(\/\*([^\*]|(\*[^\/]))*\*\/\s*)+(?:(/=)|(?:(/)(?![/*]))))</string>
5822 <key>end</key>
5823 <string>(?:(/=)|(?:(/)(?!\*([^\*]|(\*[^\/]))*\*\/)))</string>
5824 <key>endCaptures</key>
5825 <dict>
5826 <key>1</key>
5827 <dict>
5828 <key>name</key>
5829 <string>keyword.operator.assignment.compound.ts</string>
5830 </dict>
5831 <key>2</key>
5832 <dict>
5833 <key>name</key>
5834 <string>keyword.operator.arithmetic.ts</string>
5835 </dict>
5836 </dict>
5837 <key>patterns</key>
5838 <array>
5839 <dict>
5840 <key>include</key>
5841 <string>#comment</string>
5842 </dict>
5843 </array>
5844 </dict>
5845 <dict>
5846 <key>match</key>
5847 <string>(?&lt;=[_$[:alnum:])\]])\s*(?:(/=)|(?:(/)(?![/*])))</string>
5848 <key>captures</key>
5849 <dict>
5850 <key>1</key>
5851 <dict>
5852 <key>name</key>
5853 <string>keyword.operator.assignment.compound.ts</string>
5854 </dict>
5855 <key>2</key>
5856 <dict>
5857 <key>name</key>
5858 <string>keyword.operator.arithmetic.ts</string>
5859 </dict>
5860 </dict>
5861 </dict>
5862 </array>
5863 </dict>
5864 <key>typeof-operator</key>
5865 <dict>
5866 <key>begin</key>
5867 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))typeof(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
5868 <key>beginCaptures</key>
5869 <dict>
5870 <key>0</key>
5871 <dict>
5872 <key>name</key>
5873 <string>keyword.operator.expression.typeof.ts</string>
5874 </dict>
5875 </dict>
5876 <key>end</key>
5877 <string>(?=[,);}\]=&gt;:&amp;|{\?]|(extends\s+)|$|;|^\s*$|(?:^\s*(?:abstract|async|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|var|while)\b))</string>
5878 <key>patterns</key>
5879 <array>
5880 <dict>
5881 <key>include</key>
5882 <string>#type-arguments</string>
5883 </dict>
5884 <dict>
5885 <key>include</key>
5886 <string>#expression</string>
5887 </dict>
5888 </array>
5889 </dict>
5890 <key>literal</key>
5891 <dict>
5892 <key>patterns</key>
5893 <array>
5894 <dict>
5895 <key>include</key>
5896 <string>#numeric-literal</string>
5897 </dict>
5898 <dict>
5899 <key>include</key>
5900 <string>#boolean-literal</string>
5901 </dict>
5902 <dict>
5903 <key>include</key>
5904 <string>#null-literal</string>
5905 </dict>
5906 <dict>
5907 <key>include</key>
5908 <string>#undefined-literal</string>
5909 </dict>
5910 <dict>
5911 <key>include</key>
5912 <string>#numericConstant-literal</string>
5913 </dict>
5914 <dict>
5915 <key>include</key>
5916 <string>#array-literal</string>
5917 </dict>
5918 <dict>
5919 <key>include</key>
5920 <string>#this-literal</string>
5921 </dict>
5922 <dict>
5923 <key>include</key>
5924 <string>#super-literal</string>
5925 </dict>
5926 </array>
5927 </dict>
5928 <key>array-literal</key>
5929 <dict>
5930 <key>name</key>
5931 <string>meta.array.literal.ts</string>
5932 <key>begin</key>
5933 <string>\s*(\[)</string>
5934 <key>beginCaptures</key>
5935 <dict>
5936 <key>1</key>
5937 <dict>
5938 <key>name</key>
5939 <string>meta.brace.square.ts</string>
5940 </dict>
5941 </dict>
5942 <key>end</key>
5943 <string>\]</string>
5944 <key>endCaptures</key>
5945 <dict>
5946 <key>0</key>
5947 <dict>
5948 <key>name</key>
5949 <string>meta.brace.square.ts</string>
5950 </dict>
5951 </dict>
5952 <key>patterns</key>
5953 <array>
5954 <dict>
5955 <key>include</key>
5956 <string>#expression</string>
5957 </dict>
5958 <dict>
5959 <key>include</key>
5960 <string>#punctuation-comma</string>
5961 </dict>
5962 </array>
5963 </dict>
5964 <key>numeric-literal</key>
5965 <dict>
5966 <key>patterns</key>
5967 <array>
5968 <dict>
5969 <key>name</key>
5970 <string>constant.numeric.hex.ts</string>
5971 <key>match</key>
5972 <string>\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$)</string>
5973 <key>captures</key>
5974 <dict>
5975 <key>1</key>
5976 <dict>
5977 <key>name</key>
5978 <string>storage.type.numeric.bigint.ts</string>
5979 </dict>
5980 </dict>
5981 </dict>
5982 <dict>
5983 <key>name</key>
5984 <string>constant.numeric.binary.ts</string>
5985 <key>match</key>
5986 <string>\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$)</string>
5987 <key>captures</key>
5988 <dict>
5989 <key>1</key>
5990 <dict>
5991 <key>name</key>
5992 <string>storage.type.numeric.bigint.ts</string>
5993 </dict>
5994 </dict>
5995 </dict>
5996 <dict>
5997 <key>name</key>
5998 <string>constant.numeric.octal.ts</string>
5999 <key>match</key>
6000 <string>\b(?&lt;!\$)0(?:o|O)?[0-7][0-7_]*(n)?\b(?!\$)</string>
6001 <key>captures</key>
6002 <dict>
6003 <key>1</key>
6004 <dict>
6005 <key>name</key>
6006 <string>storage.type.numeric.bigint.ts</string>
6007 </dict>
6008 </dict>
6009 </dict>
6010 <dict>
6011 <key>match</key>
6012 <string>(?x)
6013(?&lt;!\$)(?:
6014 (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.1E+3
6015 (?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1.E+3
6016 (?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # .1E+3
6017 (?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)| # 1E+3
6018 (?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)| # 1.1
6019 (?:\b[0-9][0-9_]*(\.)(n)?\B)| # 1.
6020 (?:\B(\.)[0-9][0-9_]*(n)?\b)| # .1
6021 (?:\b[0-9][0-9_]*(n)?\b(?!\.)) # 1
6022)(?!\$)</string>
6023 <key>captures</key>
6024 <dict>
6025 <key>0</key>
6026 <dict>
6027 <key>name</key>
6028 <string>constant.numeric.decimal.ts</string>
6029 </dict>
6030 <key>1</key>
6031 <dict>
6032 <key>name</key>
6033 <string>meta.delimiter.decimal.period.ts</string>
6034 </dict>
6035 <key>2</key>
6036 <dict>
6037 <key>name</key>
6038 <string>storage.type.numeric.bigint.ts</string>
6039 </dict>
6040 <key>3</key>
6041 <dict>
6042 <key>name</key>
6043 <string>meta.delimiter.decimal.period.ts</string>
6044 </dict>
6045 <key>4</key>
6046 <dict>
6047 <key>name</key>
6048 <string>storage.type.numeric.bigint.ts</string>
6049 </dict>
6050 <key>5</key>
6051 <dict>
6052 <key>name</key>
6053 <string>meta.delimiter.decimal.period.ts</string>
6054 </dict>
6055 <key>6</key>
6056 <dict>
6057 <key>name</key>
6058 <string>storage.type.numeric.bigint.ts</string>
6059 </dict>
6060 <key>7</key>
6061 <dict>
6062 <key>name</key>
6063 <string>storage.type.numeric.bigint.ts</string>
6064 </dict>
6065 <key>8</key>
6066 <dict>
6067 <key>name</key>
6068 <string>meta.delimiter.decimal.period.ts</string>
6069 </dict>
6070 <key>9</key>
6071 <dict>
6072 <key>name</key>
6073 <string>storage.type.numeric.bigint.ts</string>
6074 </dict>
6075 <key>10</key>
6076 <dict>
6077 <key>name</key>
6078 <string>meta.delimiter.decimal.period.ts</string>
6079 </dict>
6080 <key>11</key>
6081 <dict>
6082 <key>name</key>
6083 <string>storage.type.numeric.bigint.ts</string>
6084 </dict>
6085 <key>12</key>
6086 <dict>
6087 <key>name</key>
6088 <string>meta.delimiter.decimal.period.ts</string>
6089 </dict>
6090 <key>13</key>
6091 <dict>
6092 <key>name</key>
6093 <string>storage.type.numeric.bigint.ts</string>
6094 </dict>
6095 <key>14</key>
6096 <dict>
6097 <key>name</key>
6098 <string>storage.type.numeric.bigint.ts</string>
6099 </dict>
6100 </dict>
6101 </dict>
6102 </array>
6103 </dict>
6104 <key>boolean-literal</key>
6105 <dict>
6106 <key>patterns</key>
6107 <array>
6108 <dict>
6109 <key>name</key>
6110 <string>constant.language.boolean.true.ts</string>
6111 <key>match</key>
6112 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))true(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
6113 </dict>
6114 <dict>
6115 <key>name</key>
6116 <string>constant.language.boolean.false.ts</string>
6117 <key>match</key>
6118 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))false(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
6119 </dict>
6120 </array>
6121 </dict>
6122 <key>null-literal</key>
6123 <dict>
6124 <key>name</key>
6125 <string>constant.language.null.ts</string>
6126 <key>match</key>
6127 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))null(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
6128 </dict>
6129 <key>this-literal</key>
6130 <dict>
6131 <key>name</key>
6132 <string>variable.language.this.ts</string>
6133 <key>match</key>
6134 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))this\b(?!\$)</string>
6135 </dict>
6136 <key>super-literal</key>
6137 <dict>
6138 <key>name</key>
6139 <string>variable.language.super.ts</string>
6140 <key>match</key>
6141 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))super\b(?!\$)</string>
6142 </dict>
6143 <key>undefined-literal</key>
6144 <dict>
6145 <key>name</key>
6146 <string>constant.language.undefined.ts</string>
6147 <key>match</key>
6148 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))undefined(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
6149 </dict>
6150 <key>numericConstant-literal</key>
6151 <dict>
6152 <key>patterns</key>
6153 <array>
6154 <dict>
6155 <key>name</key>
6156 <string>constant.language.nan.ts</string>
6157 <key>match</key>
6158 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))NaN(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
6159 </dict>
6160 <dict>
6161 <key>name</key>
6162 <string>constant.language.infinity.ts</string>
6163 <key>match</key>
6164 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))Infinity(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
6165 </dict>
6166 </array>
6167 </dict>
6168 <key>support-objects</key>
6169 <dict>
6170 <key>patterns</key>
6171 <array>
6172 <dict>
6173 <key>name</key>
6174 <string>variable.language.arguments.ts</string>
6175 <key>match</key>
6176 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(arguments)\b(?!\$)</string>
6177 </dict>
6178 <dict>
6179 <key>name</key>
6180 <string>support.class.builtin.ts</string>
6181 <key>match</key>
6182 <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(Array|ArrayBuffer|Atomics|BigInt|BigInt64Array|BigUint64Array|Boolean|DataView|Date|Float32Array
6183 |Float64Array|Function|Generator|GeneratorFunction|Int8Array|Int16Array|Int32Array|Intl|Map|Number|Object|Proxy
6184 |Reflect|RegExp|Set|SharedArrayBuffer|SIMD|String|Symbol|TypedArray
6185 |Uint8Array|Uint16Array|Uint32Array|Uint8ClampedArray|WeakMap|WeakSet)\b(?!\$)</string>
6186 </dict>
6187 <dict>
6188 <key>name</key>
6189 <string>support.class.error.ts</string>
6190 <key>match</key>
6191 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))((Eval|Internal|Range|Reference|Syntax|Type|URI)?Error)\b(?!\$)</string>
6192 </dict>
6193 <dict>
6194 <key>name</key>
6195 <string>support.class.promise.ts</string>
6196 <key>match</key>
6197 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(Promise)\b(?!\$)</string>
6198 </dict>
6199 <dict>
6200 <key>name</key>
6201 <string>support.function.ts</string>
6202 <key>match</key>
6203 <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(clear(Interval|Timeout)|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|escape|eval|
6204 isFinite|isNaN|parseFloat|parseInt|require|set(Interval|Timeout)|super|unescape|uneval)(?=\s*\()</string>
6205 </dict>
6206 <dict>
6207 <key>match</key>
6208 <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(Math)(?:\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(?:
6209 (abs|acos|acosh|asin|asinh|atan|atan2|atanh|cbrt|ceil|clz32|cos|cosh|exp|
6210 expm1|floor|fround|hypot|imul|log|log10|log1p|log2|max|min|pow|random|
6211 round|sign|sin|sinh|sqrt|tan|tanh|trunc)
6212 |
6213 (E|LN10|LN2|LOG10E|LOG2E|PI|SQRT1_2|SQRT2)))?\b(?!\$)</string>
6214 <key>captures</key>
6215 <dict>
6216 <key>1</key>
6217 <dict>
6218 <key>name</key>
6219 <string>support.constant.math.ts</string>
6220 </dict>
6221 <key>2</key>
6222 <dict>
6223 <key>name</key>
6224 <string>punctuation.accessor.ts</string>
6225 </dict>
6226 <key>3</key>
6227 <dict>
6228 <key>name</key>
6229 <string>punctuation.accessor.optional.ts</string>
6230 </dict>
6231 <key>4</key>
6232 <dict>
6233 <key>name</key>
6234 <string>support.function.math.ts</string>
6235 </dict>
6236 <key>5</key>
6237 <dict>
6238 <key>name</key>
6239 <string>support.constant.property.math.ts</string>
6240 </dict>
6241 </dict>
6242 </dict>
6243 <dict>
6244 <key>match</key>
6245 <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(console)(?:\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(
6246 assert|clear|count|debug|dir|error|group|groupCollapsed|groupEnd|info|log
6247 |profile|profileEnd|table|time|timeEnd|timeStamp|trace|warn))?\b(?!\$)</string>
6248 <key>captures</key>
6249 <dict>
6250 <key>1</key>
6251 <dict>
6252 <key>name</key>
6253 <string>support.class.console.ts</string>
6254 </dict>
6255 <key>2</key>
6256 <dict>
6257 <key>name</key>
6258 <string>punctuation.accessor.ts</string>
6259 </dict>
6260 <key>3</key>
6261 <dict>
6262 <key>name</key>
6263 <string>punctuation.accessor.optional.ts</string>
6264 </dict>
6265 <key>4</key>
6266 <dict>
6267 <key>name</key>
6268 <string>support.function.console.ts</string>
6269 </dict>
6270 </dict>
6271 </dict>
6272 <dict>
6273 <key>match</key>
6274 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(JSON)(?:\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(parse|stringify))?\b(?!\$)</string>
6275 <key>captures</key>
6276 <dict>
6277 <key>1</key>
6278 <dict>
6279 <key>name</key>
6280 <string>support.constant.json.ts</string>
6281 </dict>
6282 <key>2</key>
6283 <dict>
6284 <key>name</key>
6285 <string>punctuation.accessor.ts</string>
6286 </dict>
6287 <key>3</key>
6288 <dict>
6289 <key>name</key>
6290 <string>punctuation.accessor.optional.ts</string>
6291 </dict>
6292 <key>4</key>
6293 <dict>
6294 <key>name</key>
6295 <string>support.function.json.ts</string>
6296 </dict>
6297 </dict>
6298 </dict>
6299 <dict>
6300 <key>match</key>
6301 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(import)\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(meta)\b(?!\$)</string>
6302 <key>captures</key>
6303 <dict>
6304 <key>1</key>
6305 <dict>
6306 <key>name</key>
6307 <string>keyword.control.import.ts</string>
6308 </dict>
6309 <key>2</key>
6310 <dict>
6311 <key>name</key>
6312 <string>punctuation.accessor.ts</string>
6313 </dict>
6314 <key>3</key>
6315 <dict>
6316 <key>name</key>
6317 <string>punctuation.accessor.optional.ts</string>
6318 </dict>
6319 <key>4</key>
6320 <dict>
6321 <key>name</key>
6322 <string>support.variable.property.importmeta.ts</string>
6323 </dict>
6324 </dict>
6325 </dict>
6326 <dict>
6327 <key>match</key>
6328 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(new)\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(target)\b(?!\$)</string>
6329 <key>captures</key>
6330 <dict>
6331 <key>1</key>
6332 <dict>
6333 <key>name</key>
6334 <string>keyword.operator.new.ts</string>
6335 </dict>
6336 <key>2</key>
6337 <dict>
6338 <key>name</key>
6339 <string>punctuation.accessor.ts</string>
6340 </dict>
6341 <key>3</key>
6342 <dict>
6343 <key>name</key>
6344 <string>punctuation.accessor.optional.ts</string>
6345 </dict>
6346 <key>4</key>
6347 <dict>
6348 <key>name</key>
6349 <string>support.variable.property.target.ts</string>
6350 </dict>
6351 </dict>
6352 </dict>
6353 <dict>
6354 <key>match</key>
6355 <string>(?x) (?:(\.)|(\?\.(?!\s*[[:digit:]]))) \s* (?:
6356 (?:(constructor|length|prototype|__proto__)\b(?!\$|\s*(&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?\())
6357 |
6358 (?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\b(?!\$)))</string>
6359 <key>captures</key>
6360 <dict>
6361 <key>1</key>
6362 <dict>
6363 <key>name</key>
6364 <string>punctuation.accessor.ts</string>
6365 </dict>
6366 <key>2</key>
6367 <dict>
6368 <key>name</key>
6369 <string>punctuation.accessor.optional.ts</string>
6370 </dict>
6371 <key>3</key>
6372 <dict>
6373 <key>name</key>
6374 <string>support.variable.property.ts</string>
6375 </dict>
6376 <key>4</key>
6377 <dict>
6378 <key>name</key>
6379 <string>support.constant.ts</string>
6380 </dict>
6381 </dict>
6382 </dict>
6383 <dict>
6384 <key>match</key>
6385 <string>(?x) (?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.)) \b (?:
6386 (document|event|navigator|performance|screen|window)
6387 |
6388 (AnalyserNode|ArrayBufferView|Attr|AudioBuffer|AudioBufferSourceNode|AudioContext|AudioDestinationNode|AudioListener
6389 |AudioNode|AudioParam|BatteryManager|BeforeUnloadEvent|BiquadFilterNode|Blob|BufferSource|ByteString|CSS|CSSConditionRule
6390 |CSSCounterStyleRule|CSSGroupingRule|CSSMatrix|CSSMediaRule|CSSPageRule|CSSPrimitiveValue|CSSRule|CSSRuleList|CSSStyleDeclaration
6391 |CSSStyleRule|CSSStyleSheet|CSSSupportsRule|CSSValue|CSSValueList|CanvasGradient|CanvasImageSource|CanvasPattern
6392 |CanvasRenderingContext2D|ChannelMergerNode|ChannelSplitterNode|CharacterData|ChromeWorker|CloseEvent|Comment|CompositionEvent
6393 |Console|ConvolverNode|Coordinates|Credential|CredentialsContainer|Crypto|CryptoKey|CustomEvent|DOMError|DOMException
6394 |DOMHighResTimeStamp|DOMImplementation|DOMString|DOMStringList|DOMStringMap|DOMTimeStamp|DOMTokenList|DataTransfer
6395 |DataTransferItem|DataTransferItemList|DedicatedWorkerGlobalScope|DelayNode|DeviceProximityEvent|DirectoryEntry
6396 |DirectoryEntrySync|DirectoryReader|DirectoryReaderSync|Document|DocumentFragment|DocumentTouch|DocumentType|DragEvent
6397 |DynamicsCompressorNode|Element|Entry|EntrySync|ErrorEvent|Event|EventListener|EventSource|EventTarget|FederatedCredential
6398 |FetchEvent|File|FileEntry|FileEntrySync|FileException|FileList|FileReader|FileReaderSync|FileSystem|FileSystemSync
6399 |FontFace|FormData|GainNode|Gamepad|GamepadButton|GamepadEvent|Geolocation|GlobalEventHandlers|HTMLAnchorElement
6400 |HTMLAreaElement|HTMLAudioElement|HTMLBRElement|HTMLBaseElement|HTMLBodyElement|HTMLButtonElement|HTMLCanvasElement
6401 |HTMLCollection|HTMLContentElement|HTMLDListElement|HTMLDataElement|HTMLDataListElement|HTMLDialogElement|HTMLDivElement
6402 |HTMLDocument|HTMLElement|HTMLEmbedElement|HTMLFieldSetElement|HTMLFontElement|HTMLFormControlsCollection|HTMLFormElement
6403 |HTMLHRElement|HTMLHeadElement|HTMLHeadingElement|HTMLHtmlElement|HTMLIFrameElement|HTMLImageElement|HTMLInputElement
6404 |HTMLKeygenElement|HTMLLIElement|HTMLLabelElement|HTMLLegendElement|HTMLLinkElement|HTMLMapElement|HTMLMediaElement
6405 |HTMLMetaElement|HTMLMeterElement|HTMLModElement|HTMLOListElement|HTMLObjectElement|HTMLOptGroupElement|HTMLOptionElement
6406 |HTMLOptionsCollection|HTMLOutputElement|HTMLParagraphElement|HTMLParamElement|HTMLPreElement|HTMLProgressElement
6407 |HTMLQuoteElement|HTMLScriptElement|HTMLSelectElement|HTMLShadowElement|HTMLSourceElement|HTMLSpanElement|HTMLStyleElement
6408 |HTMLTableCaptionElement|HTMLTableCellElement|HTMLTableColElement|HTMLTableDataCellElement|HTMLTableElement|HTMLTableHeaderCellElement
6409 |HTMLTableRowElement|HTMLTableSectionElement|HTMLTextAreaElement|HTMLTimeElement|HTMLTitleElement|HTMLTrackElement
6410 |HTMLUListElement|HTMLUnknownElement|HTMLVideoElement|HashChangeEvent|History|IDBCursor|IDBCursorWithValue|IDBDatabase
6411 |IDBEnvironment|IDBFactory|IDBIndex|IDBKeyRange|IDBMutableFile|IDBObjectStore|IDBOpenDBRequest|IDBRequest|IDBTransaction
6412 |IDBVersionChangeEvent|IIRFilterNode|IdentityManager|ImageBitmap|ImageBitmapFactories|ImageData|Index|InputDeviceCapabilities
6413 |InputEvent|InstallEvent|InstallTrigger|KeyboardEvent|LinkStyle|LocalFileSystem|LocalFileSystemSync|Location|MIDIAccess
6414 |MIDIConnectionEvent|MIDIInput|MIDIInputMap|MIDIOutputMap|MediaElementAudioSourceNode|MediaError|MediaKeyMessageEvent
6415 |MediaKeySession|MediaKeyStatusMap|MediaKeySystemAccess|MediaKeySystemConfiguration|MediaKeys|MediaRecorder|MediaStream
6416 |MediaStreamAudioDestinationNode|MediaStreamAudioSourceNode|MessageChannel|MessageEvent|MessagePort|MouseEvent
6417 |MutationObserver|MutationRecord|NamedNodeMap|Navigator|NavigatorConcurrentHardware|NavigatorGeolocation|NavigatorID
6418 |NavigatorLanguage|NavigatorOnLine|Node|NodeFilter|NodeIterator|NodeList|NonDocumentTypeChildNode|Notification
6419 |OfflineAudioCompletionEvent|OfflineAudioContext|OscillatorNode|PageTransitionEvent|PannerNode|ParentNode|PasswordCredential
6420 |Path2D|PaymentAddress|PaymentRequest|PaymentResponse|Performance|PerformanceEntry|PerformanceFrameTiming|PerformanceMark
6421 |PerformanceMeasure|PerformanceNavigation|PerformanceNavigationTiming|PerformanceObserver|PerformanceObserverEntryList
6422 |PerformanceResourceTiming|PerformanceTiming|PeriodicSyncEvent|PeriodicWave|Plugin|Point|PointerEvent|PopStateEvent
6423 |PortCollection|Position|PositionError|PositionOptions|PresentationConnectionClosedEvent|PresentationConnectionList
6424 |PresentationReceiver|ProcessingInstruction|ProgressEvent|PromiseRejectionEvent|PushEvent|PushRegistrationManager
6425 |RTCCertificate|RTCConfiguration|RTCPeerConnection|RTCSessionDescriptionCallback|RTCStatsReport|RadioNodeList|RandomSource
6426 |Range|ReadableByteStream|RenderingContext|SVGAElement|SVGAngle|SVGAnimateColorElement|SVGAnimateElement|SVGAnimateMotionElement
6427 |SVGAnimateTransformElement|SVGAnimatedAngle|SVGAnimatedBoolean|SVGAnimatedEnumeration|SVGAnimatedInteger|SVGAnimatedLength
6428 |SVGAnimatedLengthList|SVGAnimatedNumber|SVGAnimatedNumberList|SVGAnimatedPoints|SVGAnimatedPreserveAspectRatio
6429 |SVGAnimatedRect|SVGAnimatedString|SVGAnimatedTransformList|SVGAnimationElement|SVGCircleElement|SVGClipPathElement
6430 |SVGCursorElement|SVGDefsElement|SVGDescElement|SVGElement|SVGEllipseElement|SVGEvent|SVGFilterElement|SVGFontElement
6431 |SVGFontFaceElement|SVGFontFaceFormatElement|SVGFontFaceNameElement|SVGFontFaceSrcElement|SVGFontFaceUriElement
6432 |SVGForeignObjectElement|SVGGElement|SVGGlyphElement|SVGGradientElement|SVGHKernElement|SVGImageElement|SVGLength
6433 |SVGLengthList|SVGLineElement|SVGLinearGradientElement|SVGMPathElement|SVGMaskElement|SVGMatrix|SVGMissingGlyphElement
6434 |SVGNumber|SVGNumberList|SVGPathElement|SVGPatternElement|SVGPoint|SVGPolygonElement|SVGPolylineElement|SVGPreserveAspectRatio
6435 |SVGRadialGradientElement|SVGRect|SVGRectElement|SVGSVGElement|SVGScriptElement|SVGSetElement|SVGStopElement|SVGStringList
6436 |SVGStylable|SVGStyleElement|SVGSwitchElement|SVGSymbolElement|SVGTRefElement|SVGTSpanElement|SVGTests|SVGTextElement
6437 |SVGTextPositioningElement|SVGTitleElement|SVGTransform|SVGTransformList|SVGTransformable|SVGUseElement|SVGVKernElement
6438 |SVGViewElement|ServiceWorker|ServiceWorkerContainer|ServiceWorkerGlobalScope|ServiceWorkerRegistration|ServiceWorkerState
6439 |ShadowRoot|SharedWorker|SharedWorkerGlobalScope|SourceBufferList|StereoPannerNode|Storage|StorageEvent|StyleSheet
6440 |StyleSheetList|SubtleCrypto|SyncEvent|Text|TextMetrics|TimeEvent|TimeRanges|Touch|TouchEvent|TouchList|Transferable
6441 |TreeWalker|UIEvent|USVString|VRDisplayCapabilities|ValidityState|WaveShaperNode|WebGL|WebGLActiveInfo|WebGLBuffer
6442 |WebGLContextEvent|WebGLFramebuffer|WebGLProgram|WebGLRenderbuffer|WebGLRenderingContext|WebGLShader|WebGLShaderPrecisionFormat
6443 |WebGLTexture|WebGLTimerQueryEXT|WebGLTransformFeedback|WebGLUniformLocation|WebGLVertexArrayObject|WebGLVertexArrayObjectOES
6444 |WebSocket|WebSockets|WebVTT|WheelEvent|Window|WindowBase64|WindowEventHandlers|WindowTimers|Worker|WorkerGlobalScope
6445 |WorkerLocation|WorkerNavigator|XMLHttpRequest|XMLHttpRequestEventTarget|XMLSerializer|XPathExpression|XPathResult
6446 |XSLTProcessor))\b(?!\$)</string>
6447 <key>captures</key>
6448 <dict>
6449 <key>1</key>
6450 <dict>
6451 <key>name</key>
6452 <string>support.variable.dom.ts</string>
6453 </dict>
6454 <key>2</key>
6455 <dict>
6456 <key>name</key>
6457 <string>support.class.dom.ts</string>
6458 </dict>
6459 </dict>
6460 </dict>
6461 <dict>
6462 <key>match</key>
6463 <string>(?x) (?:(\.)|(\?\.(?!\s*[[:digit:]]))) \s* (?:
6464 (ATTRIBUTE_NODE|CDATA_SECTION_NODE|COMMENT_NODE|DOCUMENT_FRAGMENT_NODE|DOCUMENT_NODE|DOCUMENT_TYPE_NODE
6465 |DOMSTRING_SIZE_ERR|ELEMENT_NODE|ENTITY_NODE|ENTITY_REFERENCE_NODE|HIERARCHY_REQUEST_ERR|INDEX_SIZE_ERR
6466 |INUSE_ATTRIBUTE_ERR|INVALID_CHARACTER_ERR|NO_DATA_ALLOWED_ERR|NO_MODIFICATION_ALLOWED_ERR|NOT_FOUND_ERR
6467 |NOT_SUPPORTED_ERR|NOTATION_NODE|PROCESSING_INSTRUCTION_NODE|TEXT_NODE|WRONG_DOCUMENT_ERR)
6468 |
6469 (_content|[xyz]|abbr|above|accept|acceptCharset|accessKey|action|align|[av]Link(?:color)?|all|alt|anchors|appCodeName
6470 |appCore|applets|appMinorVersion|appName|appVersion|archive|areas|arguments|attributes|availHeight|availLeft|availTop
6471 |availWidth|axis|background|backgroundColor|backgroundImage|below|bgColor|body|border|borderBottomWidth|borderColor
6472 |borderLeftWidth|borderRightWidth|borderStyle|borderTopWidth|borderWidth|bottom|bufferDepth|callee|caller|caption
6473 |cellPadding|cells|cellSpacing|ch|characterSet|charset|checked|childNodes|chOff|cite|classes|className|clear
6474 |clientInformation|clip|clipBoardData|closed|code|codeBase|codeType|color|colorDepth|cols|colSpan|compact|complete
6475 |components|content|controllers|cookie|cookieEnabled|cords|cpuClass|crypto|current|data|dateTime|declare|defaultCharset
6476 |defaultChecked|defaultSelected|defaultStatus|defaultValue|defaultView|defer|description|dialogArguments|dialogHeight
6477 |dialogLeft|dialogTop|dialogWidth|dir|directories|disabled|display|docmain|doctype|documentElement|elements|embeds
6478 |enabledPlugin|encoding|enctype|entities|event|expando|external|face|fgColor|filename|firstChild|fontFamily|fontSize
6479 |fontWeight|form|formName|forms|frame|frameBorder|frameElement|frames|hasFocus|hash|headers|height|history|host
6480 |hostname|href|hreflang|hspace|htmlFor|httpEquiv|id|ids|ignoreCase|images|implementation|index|innerHeight|innerWidth
6481 |input|isMap|label|lang|language|lastChild|lastIndex|lastMatch|lastModified|lastParen|layer[sXY]|left|leftContext
6482 |lineHeight|link|linkColor|links|listStyleType|localName|location|locationbar|longDesc|lowsrc|lowSrc|marginBottom
6483 |marginHeight|marginLeft|marginRight|marginTop|marginWidth|maxLength|media|menubar|method|mimeTypes|multiline|multiple
6484 |name|nameProp|namespaces|namespaceURI|next|nextSibling|nodeName|nodeType|nodeValue|noHref|noResize|noShade|notationName
6485 |notations|noWrap|object|offscreenBuffering|onLine|onreadystatechange|opener|opsProfile|options|oscpu|outerHeight
6486 |outerWidth|ownerDocument|paddingBottom|paddingLeft|paddingRight|paddingTop|page[XY]|page[XY]Offset|parent|parentLayer
6487 |parentNode|parentWindow|pathname|personalbar|pixelDepth|pkcs11|platform|plugins|port|prefix|previous|previousDibling
6488 |product|productSub|profile|profileend|prompt|prompter|protocol|publicId|readOnly|readyState|referrer|rel|responseText
6489 |responseXML|rev|right|rightContext|rowIndex|rows|rowSpan|rules|scheme|scope|screen[XY]|screenLeft|screenTop|scripts
6490 |scrollbars|scrolling|sectionRowIndex|security|securityPolicy|selected|selectedIndex|selection|self|shape|siblingAbove
6491 |siblingBelow|size|source|specified|standby|start|status|statusbar|statusText|style|styleSheets|suffixes|summary
6492 |systemId|systemLanguage|tagName|tags|target|tBodies|text|textAlign|textDecoration|textIndent|textTransform|tFoot|tHead
6493 |title|toolbar|top|type|undefined|uniqueID|updateInterval|URL|URLUnencoded|useMap|userAgent|userLanguage|userProfile
6494 |vAlign|value|valueType|vendor|vendorSub|version|visibility|vspace|whiteSpace|width|X[MS]LDocument|zIndex))\b(?!\$|\s*(&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?\()</string>
6495 <key>captures</key>
6496 <dict>
6497 <key>1</key>
6498 <dict>
6499 <key>name</key>
6500 <string>punctuation.accessor.ts</string>
6501 </dict>
6502 <key>2</key>
6503 <dict>
6504 <key>name</key>
6505 <string>punctuation.accessor.optional.ts</string>
6506 </dict>
6507 <key>3</key>
6508 <dict>
6509 <key>name</key>
6510 <string>support.constant.dom.ts</string>
6511 </dict>
6512 <key>4</key>
6513 <dict>
6514 <key>name</key>
6515 <string>support.variable.property.dom.ts</string>
6516 </dict>
6517 </dict>
6518 </dict>
6519 <dict>
6520 <key>name</key>
6521 <string>support.class.node.ts</string>
6522 <key>match</key>
6523 <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(Buffer|EventEmitter|Server|Pipe|Socket|REPLServer|ReadStream|WriteStream|Stream
6524 |Inflate|Deflate|InflateRaw|DeflateRaw|GZip|GUnzip|Unzip|Zip)\b(?!\$)</string>
6525 </dict>
6526 <dict>
6527 <key>match</key>
6528 <string>(?x)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(process)(?:(?:(\.)|(\?\.(?!\s*[[:digit:]])))(?:
6529 (arch|argv|config|connected|env|execArgv|execPath|exitCode|mainModule|pid|platform|release|stderr|stdin|stdout|title|version|versions)
6530 |
6531 (abort|chdir|cwd|disconnect|exit|[sg]ete?[gu]id|send|[sg]etgroups|initgroups|kill|memoryUsage|nextTick|umask|uptime|hrtime)
6532))?\b(?!\$)</string>
6533 <key>captures</key>
6534 <dict>
6535 <key>1</key>
6536 <dict>
6537 <key>name</key>
6538 <string>support.variable.object.process.ts</string>
6539 </dict>
6540 <key>2</key>
6541 <dict>
6542 <key>name</key>
6543 <string>punctuation.accessor.ts</string>
6544 </dict>
6545 <key>3</key>
6546 <dict>
6547 <key>name</key>
6548 <string>punctuation.accessor.optional.ts</string>
6549 </dict>
6550 <key>4</key>
6551 <dict>
6552 <key>name</key>
6553 <string>support.variable.property.process.ts</string>
6554 </dict>
6555 <key>5</key>
6556 <dict>
6557 <key>name</key>
6558 <string>support.function.process.ts</string>
6559 </dict>
6560 </dict>
6561 </dict>
6562 <dict>
6563 <key>match</key>
6564 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(exports)|(module)(?:(?:(\.)|(\?\.(?!\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\b(?!\$)</string>
6565 <key>captures</key>
6566 <dict>
6567 <key>1</key>
6568 <dict>
6569 <key>name</key>
6570 <string>support.type.object.module.ts</string>
6571 </dict>
6572 <key>2</key>
6573 <dict>
6574 <key>name</key>
6575 <string>support.type.object.module.ts</string>
6576 </dict>
6577 <key>3</key>
6578 <dict>
6579 <key>name</key>
6580 <string>punctuation.accessor.ts</string>
6581 </dict>
6582 <key>4</key>
6583 <dict>
6584 <key>name</key>
6585 <string>punctuation.accessor.optional.ts</string>
6586 </dict>
6587 <key>5</key>
6588 <dict>
6589 <key>name</key>
6590 <string>support.type.object.module.ts</string>
6591 </dict>
6592 </dict>
6593 </dict>
6594 <dict>
6595 <key>name</key>
6596 <string>support.variable.object.node.ts</string>
6597 <key>match</key>
6598 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(global|GLOBAL|root|__dirname|__filename)\b(?!\$)</string>
6599 </dict>
6600 <dict>
6601 <key>match</key>
6602 <string>(?x) (?:(\.)|(\?\.(?!\s*[[:digit:]]))) \s*
6603(?:
6604 (on(?:Rowsinserted|Rowsdelete|Rowenter|Rowexit|Resize|Resizestart|Resizeend|Reset|
6605 Readystatechange|Mouseout|Mouseover|Mousedown|Mouseup|Mousemove|
6606 Before(?:cut|deactivate|unload|update|paste|print|editfocus|activate)|
6607 Blur|Scrolltop|Submit|Select|Selectstart|Selectionchange|Hover|Help|
6608 Change|Contextmenu|Controlselect|Cut|Cellchange|Clock|Close|Deactivate|
6609 Datasetchanged|Datasetcomplete|Dataavailable|Drop|Drag|Dragstart|Dragover|
6610 Dragdrop|Dragenter|Dragend|Dragleave|Dblclick|Unload|Paste|Propertychange|Error|
6611 Errorupdate|Keydown|Keyup|Keypress|Focus|Load|Activate|Afterupdate|Afterprint|Abort)
6612 ) |
6613 (shift|showModelessDialog|showModalDialog|showHelp|scroll|scrollX|scrollByPages|
6614 scrollByLines|scrollY|scrollTo|stop|strike|sizeToContent|sidebar|signText|sort|
6615 sup|sub|substr|substring|splice|split|send|set(?:Milliseconds|Seconds|Minutes|Hours|
6616 Month|Year|FullYear|Date|UTC(?:Milliseconds|Seconds|Minutes|Hours|Month|FullYear|Date)|
6617 Time|Hotkeys|Cursor|ZOptions|Active|Resizable|RequestHeader)|search|slice|
6618 savePreferences|small|home|handleEvent|navigate|char|charCodeAt|charAt|concat|
6619 contextual|confirm|compile|clear|captureEvents|call|createStyleSheet|createPopup|
6620 createEventObject|to(?:GMTString|UTCString|String|Source|UpperCase|LowerCase|LocaleString)|
6621 test|taint|taintEnabled|indexOf|italics|disableExternalCapture|dump|detachEvent|unshift|
6622 untaint|unwatch|updateCommands|join|javaEnabled|pop|push|plugins.refresh|paddings|parse|
6623 print|prompt|preference|enableExternalCapture|exec|execScript|valueOf|UTC|find|file|
6624 fileModifiedDate|fileSize|fileCreatedDate|fileUpdatedDate|fixed|fontsize|fontcolor|
6625 forward|fromCharCode|watch|link|load|lastIndexOf|anchor|attachEvent|atob|apply|alert|
6626 abort|routeEvents|resize|resizeBy|resizeTo|recalc|returnValue|replace|reverse|reload|
6627 releaseCapture|releaseEvents|go|get(?:Milliseconds|Seconds|Minutes|Hours|Month|Day|Year|FullYear|
6628 Time|Date|TimezoneOffset|UTC(?:Milliseconds|Seconds|Minutes|Hours|Day|Month|FullYear|Date)|
6629 Attention|Selection|ResponseHeader|AllResponseHeaders)|moveBy|moveBelow|moveTo|
6630 moveToAbsolute|moveAbove|mergeAttributes|match|margins|btoa|big|bold|borderWidths|blink|back
6631 ) |
6632 (acceptNode|add|addEventListener|addTextTrack|adoptNode|after|animate|append|
6633 appendChild|appendData|before|blur|canPlayType|captureStream|
6634 caretPositionFromPoint|caretRangeFromPoint|checkValidity|clear|click|
6635 cloneContents|cloneNode|cloneRange|close|closest|collapse|
6636 compareBoundaryPoints|compareDocumentPosition|comparePoint|contains|
6637 convertPointFromNode|convertQuadFromNode|convertRectFromNode|createAttribute|
6638 createAttributeNS|createCaption|createCDATASection|createComment|
6639 createContextualFragment|createDocument|createDocumentFragment|
6640 createDocumentType|createElement|createElementNS|createEntityReference|
6641 createEvent|createExpression|createHTMLDocument|createNodeIterator|
6642 createNSResolver|createProcessingInstruction|createRange|createShadowRoot|
6643 createTBody|createTextNode|createTFoot|createTHead|createTreeWalker|delete|
6644 deleteCaption|deleteCell|deleteContents|deleteData|deleteRow|deleteTFoot|
6645 deleteTHead|detach|disconnect|dispatchEvent|elementFromPoint|elementsFromPoint|
6646 enableStyleSheetsForSet|entries|evaluate|execCommand|exitFullscreen|
6647 exitPointerLock|expand|extractContents|fastSeek|firstChild|focus|forEach|get|
6648 getAll|getAnimations|getAttribute|getAttributeNames|getAttributeNode|
6649 getAttributeNodeNS|getAttributeNS|getBoundingClientRect|getBoxQuads|
6650 getClientRects|getContext|getDestinationInsertionPoints|getElementById|
6651 getElementsByClassName|getElementsByName|getElementsByTagName|
6652 getElementsByTagNameNS|getItem|getNamedItem|getSelection|getStartDate|
6653 getVideoPlaybackQuality|has|hasAttribute|hasAttributeNS|hasAttributes|
6654 hasChildNodes|hasFeature|hasFocus|importNode|initEvent|insertAdjacentElement|
6655 insertAdjacentHTML|insertAdjacentText|insertBefore|insertCell|insertData|
6656 insertNode|insertRow|intersectsNode|isDefaultNamespace|isEqualNode|
6657 isPointInRange|isSameNode|item|key|keys|lastChild|load|lookupNamespaceURI|
6658 lookupPrefix|matches|move|moveAttribute|moveAttributeNode|moveChild|
6659 moveNamedItem|namedItem|nextNode|nextSibling|normalize|observe|open|
6660 parentNode|pause|play|postMessage|prepend|preventDefault|previousNode|
6661 previousSibling|probablySupportsContext|queryCommandEnabled|
6662 queryCommandIndeterm|queryCommandState|queryCommandSupported|queryCommandValue|
6663 querySelector|querySelectorAll|registerContentHandler|registerElement|
6664 registerProtocolHandler|releaseCapture|releaseEvents|remove|removeAttribute|
6665 removeAttributeNode|removeAttributeNS|removeChild|removeEventListener|
6666 removeItem|replace|replaceChild|replaceData|replaceWith|reportValidity|
6667 requestFullscreen|requestPointerLock|reset|scroll|scrollBy|scrollIntoView|
6668 scrollTo|seekToNextFrame|select|selectNode|selectNodeContents|set|setAttribute|
6669 setAttributeNode|setAttributeNodeNS|setAttributeNS|setCapture|
6670 setCustomValidity|setEnd|setEndAfter|setEndBefore|setItem|setNamedItem|
6671 setRangeText|setSelectionRange|setSinkId|setStart|setStartAfter|setStartBefore|
6672 slice|splitText|stepDown|stepUp|stopImmediatePropagation|stopPropagation|
6673 submit|substringData|supports|surroundContents|takeRecords|terminate|toBlob|
6674 toDataURL|toggle|toString|values|write|writeln
6675 ) |
6676 (all|catch|finally|race|reject|resolve|then
6677 )
6678)(?=\s*\()</string>
6679 <key>captures</key>
6680 <dict>
6681 <key>1</key>
6682 <dict>
6683 <key>name</key>
6684 <string>punctuation.accessor.ts</string>
6685 </dict>
6686 <key>2</key>
6687 <dict>
6688 <key>name</key>
6689 <string>punctuation.accessor.optional.ts</string>
6690 </dict>
6691 <key>3</key>
6692 <dict>
6693 <key>name</key>
6694 <string>support.function.event-handler.ts</string>
6695 </dict>
6696 <key>4</key>
6697 <dict>
6698 <key>name</key>
6699 <string>support.function.ts</string>
6700 </dict>
6701 <key>5</key>
6702 <dict>
6703 <key>name</key>
6704 <string>support.function.dom.ts</string>
6705 </dict>
6706 <key>6</key>
6707 <dict>
6708 <key>name</key>
6709 <string>support.function.promise.ts</string>
6710 </dict>
6711 </dict>
6712 </dict>
6713 </array>
6714 </dict>
6715 <key>identifiers</key>
6716 <dict>
6717 <key>patterns</key>
6718 <array>
6719 <dict>
6720 <key>include</key>
6721 <string>#object-identifiers</string>
6722 </dict>
6723 <dict>
6724 <key>match</key>
6725 <string>(?x)(?:(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\s*=\s*(
6726 ((async\s+)?(
6727 (function\s*[(&lt;*]) |
6728 (function\s+) |
6729 ([_$[:alpha:]][_$[:alnum:]]*\s*=&gt;)
6730 )) |
6731 ((async\s*)?(
6732 ((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))))) |
6733 # sure shot arrow functions even if =&gt; is on new line
6734(
6735 (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?
6736 [(]\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*
6737 (
6738 ([)]\s*:) | # ():
6739 ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
6740 )
6741) |
6742
6743# arrow function possible to detect only with =&gt; on same line
6744(
6745 (&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters
6746 \(\s*(\/\*([^\*]|(\*[^\/]))*\*\/\s*)*(([_$[:alpha:]]|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()\'\"\`]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))*)?\) # parameters
6747 (\s*:\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+)? # return type
6748 \s*=&gt; # arrow operator
6749)
6750 ))
6751))</string>
6752 <key>captures</key>
6753 <dict>
6754 <key>1</key>
6755 <dict>
6756 <key>name</key>
6757 <string>punctuation.accessor.ts</string>
6758 </dict>
6759 <key>2</key>
6760 <dict>
6761 <key>name</key>
6762 <string>punctuation.accessor.optional.ts</string>
6763 </dict>
6764 <key>3</key>
6765 <dict>
6766 <key>name</key>
6767 <string>entity.name.function.ts</string>
6768 </dict>
6769 </dict>
6770 </dict>
6771 <dict>
6772 <key>match</key>
6773 <string>(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])</string>
6774 <key>captures</key>
6775 <dict>
6776 <key>1</key>
6777 <dict>
6778 <key>name</key>
6779 <string>punctuation.accessor.ts</string>
6780 </dict>
6781 <key>2</key>
6782 <dict>
6783 <key>name</key>
6784 <string>punctuation.accessor.optional.ts</string>
6785 </dict>
6786 <key>3</key>
6787 <dict>
6788 <key>name</key>
6789 <string>variable.other.constant.property.ts</string>
6790 </dict>
6791 </dict>
6792 </dict>
6793 <dict>
6794 <key>match</key>
6795 <string>(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(\#?[_$[:alpha:]][_$[:alnum:]]*)</string>
6796 <key>captures</key>
6797 <dict>
6798 <key>1</key>
6799 <dict>
6800 <key>name</key>
6801 <string>punctuation.accessor.ts</string>
6802 </dict>
6803 <key>2</key>
6804 <dict>
6805 <key>name</key>
6806 <string>punctuation.accessor.optional.ts</string>
6807 </dict>
6808 <key>3</key>
6809 <dict>
6810 <key>name</key>
6811 <string>variable.other.property.ts</string>
6812 </dict>
6813 </dict>
6814 </dict>
6815 <dict>
6816 <key>name</key>
6817 <string>variable.other.constant.ts</string>
6818 <key>match</key>
6819 <string>([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])</string>
6820 </dict>
6821 <dict>
6822 <key>name</key>
6823 <string>variable.other.readwrite.ts</string>
6824 <key>match</key>
6825 <string>[_$[:alpha:]][_$[:alnum:]]*</string>
6826 </dict>
6827 </array>
6828 </dict>
6829 <key>object-identifiers</key>
6830 <dict>
6831 <key>patterns</key>
6832 <array>
6833 <dict>
6834 <key>name</key>
6835 <string>support.class.ts</string>
6836 <key>match</key>
6837 <string>([_$[:alpha:]][_$[:alnum:]]*)(?=\s*\??\.\s*prototype\b(?!\$))</string>
6838 </dict>
6839 <dict>
6840 <key>match</key>
6841 <string>(?x)(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(?:
6842 (\#?[[:upper:]][_$[:digit:][:upper:]]*) |
6843 (\#?[_$[:alpha:]][_$[:alnum:]]*)
6844)(?=\s*\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*)</string>
6845 <key>captures</key>
6846 <dict>
6847 <key>1</key>
6848 <dict>
6849 <key>name</key>
6850 <string>punctuation.accessor.ts</string>
6851 </dict>
6852 <key>2</key>
6853 <dict>
6854 <key>name</key>
6855 <string>punctuation.accessor.optional.ts</string>
6856 </dict>
6857 <key>3</key>
6858 <dict>
6859 <key>name</key>
6860 <string>variable.other.constant.object.property.ts</string>
6861 </dict>
6862 <key>4</key>
6863 <dict>
6864 <key>name</key>
6865 <string>variable.other.object.property.ts</string>
6866 </dict>
6867 </dict>
6868 </dict>
6869 <dict>
6870 <key>match</key>
6871 <string>(?x)(?:
6872 ([[:upper:]][_$[:digit:][:upper:]]*) |
6873 ([_$[:alpha:]][_$[:alnum:]]*)
6874)(?=\s*\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*)</string>
6875 <key>captures</key>
6876 <dict>
6877 <key>1</key>
6878 <dict>
6879 <key>name</key>
6880 <string>variable.other.constant.object.ts</string>
6881 </dict>
6882 <key>2</key>
6883 <dict>
6884 <key>name</key>
6885 <string>variable.other.object.ts</string>
6886 </dict>
6887 </dict>
6888 </dict>
6889 </array>
6890 </dict>
6891 <key>type-annotation</key>
6892 <dict>
6893 <key>patterns</key>
6894 <array>
6895 <dict>
6896 <key>name</key>
6897 <string>meta.type.annotation.ts</string>
6898 <key>begin</key>
6899 <string>(:)(?=\s*\S)</string>
6900 <key>beginCaptures</key>
6901 <dict>
6902 <key>1</key>
6903 <dict>
6904 <key>name</key>
6905 <string>keyword.operator.type.annotation.ts</string>
6906 </dict>
6907 </dict>
6908 <key>end</key>
6909 <string>(?&lt;![:|&amp;])(?!\s*[|&amp;]\s+)((?=^|[,);\}\]]|//)|(?==[^&gt;])|((?&lt;=[\}&gt;\]\)]|[_$[:alpha:]])\s*(?=\{)))</string>
6910 <key>patterns</key>
6911 <array>
6912 <dict>
6913 <key>include</key>
6914 <string>#type</string>
6915 </dict>
6916 </array>
6917 </dict>
6918 <dict>
6919 <key>name</key>
6920 <string>meta.type.annotation.ts</string>
6921 <key>begin</key>
6922 <string>(:)</string>
6923 <key>beginCaptures</key>
6924 <dict>
6925 <key>1</key>
6926 <dict>
6927 <key>name</key>
6928 <string>keyword.operator.type.annotation.ts</string>
6929 </dict>
6930 </dict>
6931 <key>end</key>
6932 <string>(?&lt;![:|&amp;])((?=[,);\}\]]|\/\/)|(?==[^&gt;])|(?=^\s*$)|((?&lt;=[\}&gt;\]\)]|[_$[:alpha:]])\s*(?=\{)))</string>
6933 <key>patterns</key>
6934 <array>
6935 <dict>
6936 <key>include</key>
6937 <string>#type</string>
6938 </dict>
6939 </array>
6940 </dict>
6941 </array>
6942 </dict>
6943 <key>parameter-type-annotation</key>
6944 <dict>
6945 <key>patterns</key>
6946 <array>
6947 <dict>
6948 <key>name</key>
6949 <string>meta.type.annotation.ts</string>
6950 <key>begin</key>
6951 <string>(:)</string>
6952 <key>beginCaptures</key>
6953 <dict>
6954 <key>1</key>
6955 <dict>
6956 <key>name</key>
6957 <string>keyword.operator.type.annotation.ts</string>
6958 </dict>
6959 </dict>
6960 <key>end</key>
6961 <string>(?=[,)])|(?==[^&gt;])</string>
6962 <key>patterns</key>
6963 <array>
6964 <dict>
6965 <key>include</key>
6966 <string>#type</string>
6967 </dict>
6968 </array>
6969 </dict>
6970 </array>
6971 </dict>
6972 <key>return-type</key>
6973 <dict>
6974 <key>patterns</key>
6975 <array>
6976 <dict>
6977 <key>name</key>
6978 <string>meta.return.type.ts</string>
6979 <key>begin</key>
6980 <string>(?&lt;=\))\s*(:)(?=\s*\S)</string>
6981 <key>beginCaptures</key>
6982 <dict>
6983 <key>1</key>
6984 <dict>
6985 <key>name</key>
6986 <string>keyword.operator.type.annotation.ts</string>
6987 </dict>
6988 </dict>
6989 <key>end</key>
6990 <string>(?&lt;![:|&amp;])(?=$|^|[{};,]|//)</string>
6991 <key>patterns</key>
6992 <array>
6993 <dict>
6994 <key>include</key>
6995 <string>#return-type-core</string>
6996 </dict>
6997 </array>
6998 </dict>
6999 <dict>
7000 <key>name</key>
7001 <string>meta.return.type.ts</string>
7002 <key>begin</key>
7003 <string>(?&lt;=\))\s*(:)</string>
7004 <key>beginCaptures</key>
7005 <dict>
7006 <key>1</key>
7007 <dict>
7008 <key>name</key>
7009 <string>keyword.operator.type.annotation.ts</string>
7010 </dict>
7011 </dict>
7012 <key>end</key>
7013 <string>(?&lt;![:|&amp;])((?=[{};,]|//|^\s*$)|((?&lt;=\S)(?=\s*$)))</string>
7014 <key>patterns</key>
7015 <array>
7016 <dict>
7017 <key>include</key>
7018 <string>#return-type-core</string>
7019 </dict>
7020 </array>
7021 </dict>
7022 </array>
7023 </dict>
7024 <key>return-type-core</key>
7025 <dict>
7026 <key>patterns</key>
7027 <array>
7028 <dict>
7029 <key>include</key>
7030 <string>#comment</string>
7031 </dict>
7032 <dict>
7033 <key>begin</key>
7034 <string>(?&lt;=[:|&amp;])(?=\s*\{)</string>
7035 <key>end</key>
7036 <string>(?&lt;=\})</string>
7037 <key>patterns</key>
7038 <array>
7039 <dict>
7040 <key>include</key>
7041 <string>#type-object</string>
7042 </dict>
7043 </array>
7044 </dict>
7045 <dict>
7046 <key>include</key>
7047 <string>#type-predicate-operator</string>
7048 </dict>
7049 <dict>
7050 <key>include</key>
7051 <string>#type</string>
7052 </dict>
7053 </array>
7054 </dict>
7055 <key>arrow-return-type</key>
7056 <dict>
7057 <key>name</key>
7058 <string>meta.return.type.arrow.ts</string>
7059 <key>begin</key>
7060 <string>(?&lt;=\))\s*(:)</string>
7061 <key>beginCaptures</key>
7062 <dict>
7063 <key>1</key>
7064 <dict>
7065 <key>name</key>
7066 <string>keyword.operator.type.annotation.ts</string>
7067 </dict>
7068 </dict>
7069 <key>end</key>
7070 <string>(?==&gt;|\{|(^\s*(export|function|class|interface|let|var|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|const|import|enum|namespace|module|type|abstract|declare)\s+))</string>
7071 <key>patterns</key>
7072 <array>
7073 <dict>
7074 <key>include</key>
7075 <string>#arrow-return-type-body</string>
7076 </dict>
7077 </array>
7078 </dict>
7079 <key>possibly-arrow-return-type</key>
7080 <dict>
7081 <key>begin</key>
7082 <string>(?&lt;=\)|^)\s*(:)(?=\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*=&gt;)</string>
7083 <key>beginCaptures</key>
7084 <dict>
7085 <key>1</key>
7086 <dict>
7087 <key>name</key>
7088 <string>meta.arrow.ts meta.return.type.arrow.ts keyword.operator.type.annotation.ts</string>
7089 </dict>
7090 </dict>
7091 <key>end</key>
7092 <string>(?==&gt;|\{|(^\s*(export|function|class|interface|let|var|(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)|(?:\bawait\s+(?:\busing(?=\s+(?!in\b|of\b(?!\s*(?:of\b|=)))[_$[:alpha:]])\b)\b)|const|import|enum|namespace|module|type|abstract|declare)\s+))</string>
7093 <key>contentName</key>
7094 <string>meta.arrow.ts meta.return.type.arrow.ts</string>
7095 <key>patterns</key>
7096 <array>
7097 <dict>
7098 <key>include</key>
7099 <string>#arrow-return-type-body</string>
7100 </dict>
7101 </array>
7102 </dict>
7103 <key>arrow-return-type-body</key>
7104 <dict>
7105 <key>patterns</key>
7106 <array>
7107 <dict>
7108 <key>begin</key>
7109 <string>(?&lt;=[:])(?=\s*\{)</string>
7110 <key>end</key>
7111 <string>(?&lt;=\})</string>
7112 <key>patterns</key>
7113 <array>
7114 <dict>
7115 <key>include</key>
7116 <string>#type-object</string>
7117 </dict>
7118 </array>
7119 </dict>
7120 <dict>
7121 <key>include</key>
7122 <string>#type-predicate-operator</string>
7123 </dict>
7124 <dict>
7125 <key>include</key>
7126 <string>#type</string>
7127 </dict>
7128 </array>
7129 </dict>
7130 <key>type-parameters</key>
7131 <dict>
7132 <key>name</key>
7133 <string>meta.type.parameters.ts</string>
7134 <key>begin</key>
7135 <string>(&lt;)</string>
7136 <key>beginCaptures</key>
7137 <dict>
7138 <key>1</key>
7139 <dict>
7140 <key>name</key>
7141 <string>punctuation.definition.typeparameters.begin.ts</string>
7142 </dict>
7143 </dict>
7144 <key>end</key>
7145 <string>(&gt;)</string>
7146 <key>endCaptures</key>
7147 <dict>
7148 <key>1</key>
7149 <dict>
7150 <key>name</key>
7151 <string>punctuation.definition.typeparameters.end.ts</string>
7152 </dict>
7153 </dict>
7154 <key>patterns</key>
7155 <array>
7156 <dict>
7157 <key>include</key>
7158 <string>#comment</string>
7159 </dict>
7160 <dict>
7161 <key>name</key>
7162 <string>storage.modifier.ts</string>
7163 <key>match</key>
7164 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(extends|in|out|const)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
7165 </dict>
7166 <dict>
7167 <key>include</key>
7168 <string>#type</string>
7169 </dict>
7170 <dict>
7171 <key>include</key>
7172 <string>#punctuation-comma</string>
7173 </dict>
7174 <dict>
7175 <key>name</key>
7176 <string>keyword.operator.assignment.ts</string>
7177 <key>match</key>
7178 <string>(=)(?!&gt;)</string>
7179 </dict>
7180 </array>
7181 </dict>
7182 <key>type-arguments</key>
7183 <dict>
7184 <key>name</key>
7185 <string>meta.type.parameters.ts</string>
7186 <key>begin</key>
7187 <string>\&lt;</string>
7188 <key>beginCaptures</key>
7189 <dict>
7190 <key>0</key>
7191 <dict>
7192 <key>name</key>
7193 <string>punctuation.definition.typeparameters.begin.ts</string>
7194 </dict>
7195 </dict>
7196 <key>end</key>
7197 <string>\&gt;</string>
7198 <key>endCaptures</key>
7199 <dict>
7200 <key>0</key>
7201 <dict>
7202 <key>name</key>
7203 <string>punctuation.definition.typeparameters.end.ts</string>
7204 </dict>
7205 </dict>
7206 <key>patterns</key>
7207 <array>
7208 <dict>
7209 <key>include</key>
7210 <string>#type-arguments-body</string>
7211 </dict>
7212 </array>
7213 </dict>
7214 <key>type-arguments-body</key>
7215 <dict>
7216 <key>patterns</key>
7217 <array>
7218 <dict>
7219 <key>match</key>
7220 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(_)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
7221 <key>captures</key>
7222 <dict>
7223 <key>0</key>
7224 <dict>
7225 <key>name</key>
7226 <string>keyword.operator.type.ts</string>
7227 </dict>
7228 </dict>
7229 </dict>
7230 <dict>
7231 <key>include</key>
7232 <string>#type</string>
7233 </dict>
7234 <dict>
7235 <key>include</key>
7236 <string>#punctuation-comma</string>
7237 </dict>
7238 </array>
7239 </dict>
7240 <key>type</key>
7241 <dict>
7242 <key>patterns</key>
7243 <array>
7244 <dict>
7245 <key>include</key>
7246 <string>#comment</string>
7247 </dict>
7248 <dict>
7249 <key>include</key>
7250 <string>#type-string</string>
7251 </dict>
7252 <dict>
7253 <key>include</key>
7254 <string>#numeric-literal</string>
7255 </dict>
7256 <dict>
7257 <key>include</key>
7258 <string>#type-primitive</string>
7259 </dict>
7260 <dict>
7261 <key>include</key>
7262 <string>#type-builtin-literals</string>
7263 </dict>
7264 <dict>
7265 <key>include</key>
7266 <string>#type-parameters</string>
7267 </dict>
7268 <dict>
7269 <key>include</key>
7270 <string>#type-tuple</string>
7271 </dict>
7272 <dict>
7273 <key>include</key>
7274 <string>#type-object</string>
7275 </dict>
7276 <dict>
7277 <key>include</key>
7278 <string>#type-operators</string>
7279 </dict>
7280 <dict>
7281 <key>include</key>
7282 <string>#type-conditional</string>
7283 </dict>
7284 <dict>
7285 <key>include</key>
7286 <string>#type-fn-type-parameters</string>
7287 </dict>
7288 <dict>
7289 <key>include</key>
7290 <string>#type-paren-or-function-parameters</string>
7291 </dict>
7292 <dict>
7293 <key>include</key>
7294 <string>#type-function-return-type</string>
7295 </dict>
7296 <dict>
7297 <key>match</key>
7298 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(readonly)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))\s*</string>
7299 <key>captures</key>
7300 <dict>
7301 <key>1</key>
7302 <dict>
7303 <key>name</key>
7304 <string>storage.modifier.ts</string>
7305 </dict>
7306 </dict>
7307 </dict>
7308 <dict>
7309 <key>include</key>
7310 <string>#type-name</string>
7311 </dict>
7312 </array>
7313 </dict>
7314 <key>type-primitive</key>
7315 <dict>
7316 <key>name</key>
7317 <string>support.type.primitive.ts</string>
7318 <key>match</key>
7319 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
7320 </dict>
7321 <key>type-builtin-literals</key>
7322 <dict>
7323 <key>name</key>
7324 <string>support.type.builtin.ts</string>
7325 <key>match</key>
7326 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
7327 </dict>
7328 <key>type-tuple</key>
7329 <dict>
7330 <key>name</key>
7331 <string>meta.type.tuple.ts</string>
7332 <key>begin</key>
7333 <string>\[</string>
7334 <key>beginCaptures</key>
7335 <dict>
7336 <key>0</key>
7337 <dict>
7338 <key>name</key>
7339 <string>meta.brace.square.ts</string>
7340 </dict>
7341 </dict>
7342 <key>end</key>
7343 <string>\]</string>
7344 <key>endCaptures</key>
7345 <dict>
7346 <key>0</key>
7347 <dict>
7348 <key>name</key>
7349 <string>meta.brace.square.ts</string>
7350 </dict>
7351 </dict>
7352 <key>patterns</key>
7353 <array>
7354 <dict>
7355 <key>name</key>
7356 <string>keyword.operator.rest.ts</string>
7357 <key>match</key>
7358 <string>\.\.\.</string>
7359 </dict>
7360 <dict>
7361 <key>match</key>
7362 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))([_$[:alpha:]][_$[:alnum:]]*)\s*(\?)?\s*(:)</string>
7363 <key>captures</key>
7364 <dict>
7365 <key>1</key>
7366 <dict>
7367 <key>name</key>
7368 <string>entity.name.label.ts</string>
7369 </dict>
7370 <key>2</key>
7371 <dict>
7372 <key>name</key>
7373 <string>keyword.operator.optional.ts</string>
7374 </dict>
7375 <key>3</key>
7376 <dict>
7377 <key>name</key>
7378 <string>punctuation.separator.label.ts</string>
7379 </dict>
7380 </dict>
7381 </dict>
7382 <dict>
7383 <key>include</key>
7384 <string>#type</string>
7385 </dict>
7386 <dict>
7387 <key>include</key>
7388 <string>#punctuation-comma</string>
7389 </dict>
7390 </array>
7391 </dict>
7392 <key>type-object</key>
7393 <dict>
7394 <key>name</key>
7395 <string>meta.object.type.ts</string>
7396 <key>begin</key>
7397 <string>\{</string>
7398 <key>beginCaptures</key>
7399 <dict>
7400 <key>0</key>
7401 <dict>
7402 <key>name</key>
7403 <string>punctuation.definition.block.ts</string>
7404 </dict>
7405 </dict>
7406 <key>end</key>
7407 <string>\}</string>
7408 <key>endCaptures</key>
7409 <dict>
7410 <key>0</key>
7411 <dict>
7412 <key>name</key>
7413 <string>punctuation.definition.block.ts</string>
7414 </dict>
7415 </dict>
7416 <key>patterns</key>
7417 <array>
7418 <dict>
7419 <key>include</key>
7420 <string>#comment</string>
7421 </dict>
7422 <dict>
7423 <key>include</key>
7424 <string>#method-declaration</string>
7425 </dict>
7426 <dict>
7427 <key>include</key>
7428 <string>#indexer-declaration</string>
7429 </dict>
7430 <dict>
7431 <key>include</key>
7432 <string>#indexer-mapped-type-declaration</string>
7433 </dict>
7434 <dict>
7435 <key>include</key>
7436 <string>#field-declaration</string>
7437 </dict>
7438 <dict>
7439 <key>include</key>
7440 <string>#type-annotation</string>
7441 </dict>
7442 <dict>
7443 <key>begin</key>
7444 <string>\.\.\.</string>
7445 <key>beginCaptures</key>
7446 <dict>
7447 <key>0</key>
7448 <dict>
7449 <key>name</key>
7450 <string>keyword.operator.spread.ts</string>
7451 </dict>
7452 </dict>
7453 <key>end</key>
7454 <string>(?=\}|;|,|$)|(?&lt;=\})</string>
7455 <key>patterns</key>
7456 <array>
7457 <dict>
7458 <key>include</key>
7459 <string>#type</string>
7460 </dict>
7461 </array>
7462 </dict>
7463 <dict>
7464 <key>include</key>
7465 <string>#punctuation-comma</string>
7466 </dict>
7467 <dict>
7468 <key>include</key>
7469 <string>#punctuation-semicolon</string>
7470 </dict>
7471 <dict>
7472 <key>include</key>
7473 <string>#type</string>
7474 </dict>
7475 </array>
7476 </dict>
7477 <key>type-conditional</key>
7478 <dict>
7479 <key>patterns</key>
7480 <array>
7481 <dict>
7482 <key>begin</key>
7483 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(extends)\s+</string>
7484 <key>beginCaptures</key>
7485 <dict>
7486 <key>1</key>
7487 <dict>
7488 <key>name</key>
7489 <string>storage.modifier.ts</string>
7490 </dict>
7491 </dict>
7492 <key>end</key>
7493 <string>(?&lt;=:)</string>
7494 <key>patterns</key>
7495 <array>
7496 <dict>
7497 <key>begin</key>
7498 <string>\?</string>
7499 <key>beginCaptures</key>
7500 <dict>
7501 <key>0</key>
7502 <dict>
7503 <key>name</key>
7504 <string>keyword.operator.ternary.ts</string>
7505 </dict>
7506 </dict>
7507 <key>end</key>
7508 <string>:</string>
7509 <key>endCaptures</key>
7510 <dict>
7511 <key>0</key>
7512 <dict>
7513 <key>name</key>
7514 <string>keyword.operator.ternary.ts</string>
7515 </dict>
7516 </dict>
7517 <key>patterns</key>
7518 <array>
7519 <dict>
7520 <key>include</key>
7521 <string>#type</string>
7522 </dict>
7523 </array>
7524 </dict>
7525 <dict>
7526 <key>include</key>
7527 <string>#type</string>
7528 </dict>
7529 </array>
7530 </dict>
7531 </array>
7532 </dict>
7533 <key>type-paren-or-function-parameters</key>
7534 <dict>
7535 <key>name</key>
7536 <string>meta.type.paren.cover.ts</string>
7537 <key>begin</key>
7538 <string>\(</string>
7539 <key>beginCaptures</key>
7540 <dict>
7541 <key>0</key>
7542 <dict>
7543 <key>name</key>
7544 <string>meta.brace.round.ts</string>
7545 </dict>
7546 </dict>
7547 <key>end</key>
7548 <string>\)</string>
7549 <key>endCaptures</key>
7550 <dict>
7551 <key>0</key>
7552 <dict>
7553 <key>name</key>
7554 <string>meta.brace.round.ts</string>
7555 </dict>
7556 </dict>
7557 <key>patterns</key>
7558 <array>
7559 <dict>
7560 <key>match</key>
7561 <string>(?x)(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?&lt;!=|:)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\s*(\??)(?=\s*(:\s*(
7562 (&lt;) |
7563 ([(]\s*(
7564 ([)]) |
7565 (\.\.\.) |
7566 ([_$[:alnum:]]+\s*(
7567 ([:,?=])|
7568 ([)]\s*=&gt;)
7569 ))
7570 ))
7571)) |
7572(:\s*(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))Function(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))) |
7573(:\s*((&lt;\s*$)|((&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*(((const\s+)?[_$[:alpha:]])|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)?[\(]\s*((([\{\[]\s*)?$)|((\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})\s*((:\s*\{?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*)))|((\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])\s*((:\s*\[?$)|((\s*([^&lt;&gt;\(\)\{\}]|\&lt;([^&lt;&gt;]|\&lt;([^&lt;&gt;]|\&lt;[^&lt;&gt;]+\&gt;)+\&gt;)+\&gt;|\([^\(\)]+\)|\{[^\{\}]+\})+\s*)?=\s*))))))))</string>
7574 <key>captures</key>
7575 <dict>
7576 <key>1</key>
7577 <dict>
7578 <key>name</key>
7579 <string>storage.modifier.ts</string>
7580 </dict>
7581 <key>2</key>
7582 <dict>
7583 <key>name</key>
7584 <string>keyword.operator.rest.ts</string>
7585 </dict>
7586 <key>3</key>
7587 <dict>
7588 <key>name</key>
7589 <string>entity.name.function.ts variable.language.this.ts</string>
7590 </dict>
7591 <key>4</key>
7592 <dict>
7593 <key>name</key>
7594 <string>entity.name.function.ts</string>
7595 </dict>
7596 <key>5</key>
7597 <dict>
7598 <key>name</key>
7599 <string>keyword.operator.optional.ts</string>
7600 </dict>
7601 </dict>
7602 </dict>
7603 <dict>
7604 <key>match</key>
7605 <string>(?x)(?:(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(public|private|protected|readonly)\s+)?(?:(\.\.\.)\s*)?(?&lt;!=|:)(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\s*(\??)(?=:)</string>
7606 <key>captures</key>
7607 <dict>
7608 <key>1</key>
7609 <dict>
7610 <key>name</key>
7611 <string>storage.modifier.ts</string>
7612 </dict>
7613 <key>2</key>
7614 <dict>
7615 <key>name</key>
7616 <string>keyword.operator.rest.ts</string>
7617 </dict>
7618 <key>3</key>
7619 <dict>
7620 <key>name</key>
7621 <string>variable.parameter.ts variable.language.this.ts</string>
7622 </dict>
7623 <key>4</key>
7624 <dict>
7625 <key>name</key>
7626 <string>variable.parameter.ts</string>
7627 </dict>
7628 <key>5</key>
7629 <dict>
7630 <key>name</key>
7631 <string>keyword.operator.optional.ts</string>
7632 </dict>
7633 </dict>
7634 </dict>
7635 <dict>
7636 <key>include</key>
7637 <string>#type-annotation</string>
7638 </dict>
7639 <dict>
7640 <key>name</key>
7641 <string>punctuation.separator.parameter.ts</string>
7642 <key>match</key>
7643 <string>,</string>
7644 </dict>
7645 <dict>
7646 <key>include</key>
7647 <string>#type</string>
7648 </dict>
7649 </array>
7650 </dict>
7651 <key>type-fn-type-parameters</key>
7652 <dict>
7653 <key>patterns</key>
7654 <array>
7655 <dict>
7656 <key>begin</key>
7657 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(abstract)\s+)?(new)\b(?=\s*\&lt;)</string>
7658 <key>beginCaptures</key>
7659 <dict>
7660 <key>1</key>
7661 <dict>
7662 <key>name</key>
7663 <string>meta.type.constructor.ts storage.modifier.ts</string>
7664 </dict>
7665 <key>2</key>
7666 <dict>
7667 <key>name</key>
7668 <string>meta.type.constructor.ts keyword.control.new.ts</string>
7669 </dict>
7670 </dict>
7671 <key>end</key>
7672 <string>(?&lt;=&gt;)</string>
7673 <key>patterns</key>
7674 <array>
7675 <dict>
7676 <key>include</key>
7677 <string>#comment</string>
7678 </dict>
7679 <dict>
7680 <key>include</key>
7681 <string>#type-parameters</string>
7682 </dict>
7683 </array>
7684 </dict>
7685 <dict>
7686 <key>name</key>
7687 <string>meta.type.constructor.ts</string>
7688 <key>begin</key>
7689 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(abstract)\s+)?(new)\b\s*(?=\()</string>
7690 <key>beginCaptures</key>
7691 <dict>
7692 <key>1</key>
7693 <dict>
7694 <key>name</key>
7695 <string>storage.modifier.ts</string>
7696 </dict>
7697 <key>2</key>
7698 <dict>
7699 <key>name</key>
7700 <string>keyword.control.new.ts</string>
7701 </dict>
7702 </dict>
7703 <key>end</key>
7704 <string>(?&lt;=\))</string>
7705 <key>patterns</key>
7706 <array>
7707 <dict>
7708 <key>include</key>
7709 <string>#function-parameters</string>
7710 </dict>
7711 </array>
7712 </dict>
7713 <dict>
7714 <key>name</key>
7715 <string>meta.type.function.ts</string>
7716 <key>begin</key>
7717 <string>(?x)(
7718 (?=
7719 [(]\s*(
7720 ([)]) |
7721 (\.\.\.) |
7722 ([_$[:alnum:]]+\s*(
7723 ([:,?=])|
7724 ([)]\s*=&gt;)
7725 ))
7726 )
7727 )
7728)</string>
7729 <key>end</key>
7730 <string>(?&lt;=\))</string>
7731 <key>patterns</key>
7732 <array>
7733 <dict>
7734 <key>include</key>
7735 <string>#function-parameters</string>
7736 </dict>
7737 </array>
7738 </dict>
7739 </array>
7740 </dict>
7741 <key>type-function-return-type</key>
7742 <dict>
7743 <key>patterns</key>
7744 <array>
7745 <dict>
7746 <key>name</key>
7747 <string>meta.type.function.return.ts</string>
7748 <key>begin</key>
7749 <string>(=&gt;)(?=\s*\S)</string>
7750 <key>beginCaptures</key>
7751 <dict>
7752 <key>1</key>
7753 <dict>
7754 <key>name</key>
7755 <string>storage.type.function.arrow.ts</string>
7756 </dict>
7757 </dict>
7758 <key>end</key>
7759 <string>(?&lt;!=&gt;)(?&lt;![|&amp;])(?=[,\]\)\{\}=;&gt;:\?]|//|$)</string>
7760 <key>patterns</key>
7761 <array>
7762 <dict>
7763 <key>include</key>
7764 <string>#type-function-return-type-core</string>
7765 </dict>
7766 </array>
7767 </dict>
7768 <dict>
7769 <key>name</key>
7770 <string>meta.type.function.return.ts</string>
7771 <key>begin</key>
7772 <string>=&gt;</string>
7773 <key>beginCaptures</key>
7774 <dict>
7775 <key>0</key>
7776 <dict>
7777 <key>name</key>
7778 <string>storage.type.function.arrow.ts</string>
7779 </dict>
7780 </dict>
7781 <key>end</key>
7782 <string>(?&lt;!=&gt;)(?&lt;![|&amp;])((?=[,\]\)\{\}=;:\?&gt;]|//|^\s*$)|((?&lt;=\S)(?=\s*$)))</string>
7783 <key>patterns</key>
7784 <array>
7785 <dict>
7786 <key>include</key>
7787 <string>#type-function-return-type-core</string>
7788 </dict>
7789 </array>
7790 </dict>
7791 </array>
7792 </dict>
7793 <key>type-function-return-type-core</key>
7794 <dict>
7795 <key>patterns</key>
7796 <array>
7797 <dict>
7798 <key>include</key>
7799 <string>#comment</string>
7800 </dict>
7801 <dict>
7802 <key>begin</key>
7803 <string>(?&lt;==&gt;)(?=\s*\{)</string>
7804 <key>end</key>
7805 <string>(?&lt;=\})</string>
7806 <key>patterns</key>
7807 <array>
7808 <dict>
7809 <key>include</key>
7810 <string>#type-object</string>
7811 </dict>
7812 </array>
7813 </dict>
7814 <dict>
7815 <key>include</key>
7816 <string>#type-predicate-operator</string>
7817 </dict>
7818 <dict>
7819 <key>include</key>
7820 <string>#type</string>
7821 </dict>
7822 </array>
7823 </dict>
7824 <key>type-operators</key>
7825 <dict>
7826 <key>patterns</key>
7827 <array>
7828 <dict>
7829 <key>include</key>
7830 <string>#typeof-operator</string>
7831 </dict>
7832 <dict>
7833 <key>include</key>
7834 <string>#type-infer</string>
7835 </dict>
7836 <dict>
7837 <key>begin</key>
7838 <string>([&amp;|])(?=\s*\{)</string>
7839 <key>beginCaptures</key>
7840 <dict>
7841 <key>0</key>
7842 <dict>
7843 <key>name</key>
7844 <string>keyword.operator.type.ts</string>
7845 </dict>
7846 </dict>
7847 <key>end</key>
7848 <string>(?&lt;=\})</string>
7849 <key>patterns</key>
7850 <array>
7851 <dict>
7852 <key>include</key>
7853 <string>#type-object</string>
7854 </dict>
7855 </array>
7856 </dict>
7857 <dict>
7858 <key>begin</key>
7859 <string>[&amp;|]</string>
7860 <key>beginCaptures</key>
7861 <dict>
7862 <key>0</key>
7863 <dict>
7864 <key>name</key>
7865 <string>keyword.operator.type.ts</string>
7866 </dict>
7867 </dict>
7868 <key>end</key>
7869 <string>(?=\S)</string>
7870 </dict>
7871 <dict>
7872 <key>name</key>
7873 <string>keyword.operator.expression.keyof.ts</string>
7874 <key>match</key>
7875 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))keyof(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
7876 </dict>
7877 <dict>
7878 <key>name</key>
7879 <string>keyword.operator.ternary.ts</string>
7880 <key>match</key>
7881 <string>(\?|\:)</string>
7882 </dict>
7883 <dict>
7884 <key>name</key>
7885 <string>keyword.operator.expression.import.ts</string>
7886 <key>match</key>
7887 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))import(?=\s*\()</string>
7888 </dict>
7889 </array>
7890 </dict>
7891 <key>type-infer</key>
7892 <dict>
7893 <key>patterns</key>
7894 <array>
7895 <dict>
7896 <key>match</key>
7897 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(infer)\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))(?:\s+(extends)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))?</string>
7898 <key>name</key>
7899 <string>meta.type.infer.ts</string>
7900 <key>captures</key>
7901 <dict>
7902 <key>1</key>
7903 <dict>
7904 <key>name</key>
7905 <string>keyword.operator.expression.infer.ts</string>
7906 </dict>
7907 <key>2</key>
7908 <dict>
7909 <key>name</key>
7910 <string>entity.name.type.ts</string>
7911 </dict>
7912 <key>3</key>
7913 <dict>
7914 <key>name</key>
7915 <string>keyword.operator.expression.extends.ts</string>
7916 </dict>
7917 </dict>
7918 </dict>
7919 </array>
7920 </dict>
7921 <key>type-predicate-operator</key>
7922 <dict>
7923 <key>patterns</key>
7924 <array>
7925 <dict>
7926 <key>match</key>
7927 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(asserts)\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\s(is)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
7928 <key>captures</key>
7929 <dict>
7930 <key>1</key>
7931 <dict>
7932 <key>name</key>
7933 <string>keyword.operator.type.asserts.ts</string>
7934 </dict>
7935 <key>2</key>
7936 <dict>
7937 <key>name</key>
7938 <string>variable.parameter.ts variable.language.this.ts</string>
7939 </dict>
7940 <key>3</key>
7941 <dict>
7942 <key>name</key>
7943 <string>variable.parameter.ts</string>
7944 </dict>
7945 <key>4</key>
7946 <dict>
7947 <key>name</key>
7948 <string>keyword.operator.expression.is.ts</string>
7949 </dict>
7950 </dict>
7951 </dict>
7952 <dict>
7953 <key>match</key>
7954 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(asserts)\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
7955 <key>captures</key>
7956 <dict>
7957 <key>1</key>
7958 <dict>
7959 <key>name</key>
7960 <string>keyword.operator.type.asserts.ts</string>
7961 </dict>
7962 <key>2</key>
7963 <dict>
7964 <key>name</key>
7965 <string>variable.parameter.ts variable.language.this.ts</string>
7966 </dict>
7967 <key>3</key>
7968 <dict>
7969 <key>name</key>
7970 <string>variable.parameter.ts</string>
7971 </dict>
7972 </dict>
7973 </dict>
7974 <dict>
7975 <key>name</key>
7976 <string>keyword.operator.type.asserts.ts</string>
7977 <key>match</key>
7978 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))asserts(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
7979 </dict>
7980 <dict>
7981 <key>name</key>
7982 <string>keyword.operator.expression.is.ts</string>
7983 <key>match</key>
7984 <string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))is(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
7985 </dict>
7986 </array>
7987 </dict>
7988 <key>type-name</key>
7989 <dict>
7990 <key>patterns</key>
7991 <array>
7992 <dict>
7993 <key>begin</key>
7994 <string>([_$[:alpha:]][_$[:alnum:]]*)\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*(&lt;)</string>
7995 <key>captures</key>
7996 <dict>
7997 <key>1</key>
7998 <dict>
7999 <key>name</key>
8000 <string>entity.name.type.module.ts</string>
8001 </dict>
8002 <key>2</key>
8003 <dict>
8004 <key>name</key>
8005 <string>punctuation.accessor.ts</string>
8006 </dict>
8007 <key>3</key>
8008 <dict>
8009 <key>name</key>
8010 <string>punctuation.accessor.optional.ts</string>
8011 </dict>
8012 <key>4</key>
8013 <dict>
8014 <key>name</key>
8015 <string>meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts</string>
8016 </dict>
8017 </dict>
8018 <key>end</key>
8019 <string>(&gt;)</string>
8020 <key>endCaptures</key>
8021 <dict>
8022 <key>1</key>
8023 <dict>
8024 <key>name</key>
8025 <string>meta.type.parameters.ts punctuation.definition.typeparameters.end.ts</string>
8026 </dict>
8027 </dict>
8028 <key>contentName</key>
8029 <string>meta.type.parameters.ts</string>
8030 <key>patterns</key>
8031 <array>
8032 <dict>
8033 <key>include</key>
8034 <string>#type-arguments-body</string>
8035 </dict>
8036 </array>
8037 </dict>
8038 <dict>
8039 <key>begin</key>
8040 <string>([_$[:alpha:]][_$[:alnum:]]*)\s*(&lt;)</string>
8041 <key>beginCaptures</key>
8042 <dict>
8043 <key>1</key>
8044 <dict>
8045 <key>name</key>
8046 <string>entity.name.type.ts</string>
8047 </dict>
8048 <key>2</key>
8049 <dict>
8050 <key>name</key>
8051 <string>meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts</string>
8052 </dict>
8053 </dict>
8054 <key>end</key>
8055 <string>(&gt;)</string>
8056 <key>endCaptures</key>
8057 <dict>
8058 <key>1</key>
8059 <dict>
8060 <key>name</key>
8061 <string>meta.type.parameters.ts punctuation.definition.typeparameters.end.ts</string>
8062 </dict>
8063 </dict>
8064 <key>contentName</key>
8065 <string>meta.type.parameters.ts</string>
8066 <key>patterns</key>
8067 <array>
8068 <dict>
8069 <key>include</key>
8070 <string>#type-arguments-body</string>
8071 </dict>
8072 </array>
8073 </dict>
8074 <dict>
8075 <key>match</key>
8076 <string>([_$[:alpha:]][_$[:alnum:]]*)\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))</string>
8077 <key>captures</key>
8078 <dict>
8079 <key>1</key>
8080 <dict>
8081 <key>name</key>
8082 <string>entity.name.type.module.ts</string>
8083 </dict>
8084 <key>2</key>
8085 <dict>
8086 <key>name</key>
8087 <string>punctuation.accessor.ts</string>
8088 </dict>
8089 <key>3</key>
8090 <dict>
8091 <key>name</key>
8092 <string>punctuation.accessor.optional.ts</string>
8093 </dict>
8094 </dict>
8095 </dict>
8096 <dict>
8097 <key>name</key>
8098 <string>entity.name.type.ts</string>
8099 <key>match</key>
8100 <string>[_$[:alpha:]][_$[:alnum:]]*</string>
8101 </dict>
8102 </array>
8103 </dict>
8104 <key>punctuation-comma</key>
8105 <dict>
8106 <key>name</key>
8107 <string>punctuation.separator.comma.ts</string>
8108 <key>match</key>
8109 <string>,</string>
8110 </dict>
8111 <key>punctuation-semicolon</key>
8112 <dict>
8113 <key>name</key>
8114 <string>punctuation.terminator.statement.ts</string>
8115 <key>match</key>
8116 <string>;</string>
8117 </dict>
8118 <key>punctuation-accessor</key>
8119 <dict>
8120 <key>match</key>
8121 <string>(?:(\.)|(\?\.(?!\s*[[:digit:]])))</string>
8122 <key>captures</key>
8123 <dict>
8124 <key>1</key>
8125 <dict>
8126 <key>name</key>
8127 <string>punctuation.accessor.ts</string>
8128 </dict>
8129 <key>2</key>
8130 <dict>
8131 <key>name</key>
8132 <string>punctuation.accessor.optional.ts</string>
8133 </dict>
8134 </dict>
8135 </dict>
8136 <key>string</key>
8137 <dict>
8138 <key>patterns</key>
8139 <array>
8140 <dict>
8141 <key>include</key>
8142 <string>#qstring-single</string>
8143 </dict>
8144 <dict>
8145 <key>include</key>
8146 <string>#qstring-double</string>
8147 </dict>
8148 <dict>
8149 <key>include</key>
8150 <string>#template</string>
8151 </dict>
8152 </array>
8153 </dict>
8154 <key>qstring-double</key>
8155 <dict>
8156 <key>name</key>
8157 <string>string.quoted.double.ts</string>
8158 <key>begin</key>
8159 <string>"</string>
8160 <key>beginCaptures</key>
8161 <dict>
8162 <key>0</key>
8163 <dict>
8164 <key>name</key>
8165 <string>punctuation.definition.string.begin.ts</string>
8166 </dict>
8167 </dict>
8168 <key>end</key>
8169 <string>(")|((?:[^\\\n])$)</string>
8170 <key>endCaptures</key>
8171 <dict>
8172 <key>1</key>
8173 <dict>
8174 <key>name</key>
8175 <string>punctuation.definition.string.end.ts</string>
8176 </dict>
8177 <key>2</key>
8178 <dict>
8179 <key>name</key>
8180 <string>invalid.illegal.newline.ts</string>
8181 </dict>
8182 </dict>
8183 <key>patterns</key>
8184 <array>
8185 <dict>
8186 <key>include</key>
8187 <string>#string-character-escape</string>
8188 </dict>
8189 </array>
8190 </dict>
8191 <key>qstring-single</key>
8192 <dict>
8193 <key>name</key>
8194 <string>string.quoted.single.ts</string>
8195 <key>begin</key>
8196 <string>'</string>
8197 <key>beginCaptures</key>
8198 <dict>
8199 <key>0</key>
8200 <dict>
8201 <key>name</key>
8202 <string>punctuation.definition.string.begin.ts</string>
8203 </dict>
8204 </dict>
8205 <key>end</key>
8206 <string>(\')|((?:[^\\\n])$)</string>
8207 <key>endCaptures</key>
8208 <dict>
8209 <key>1</key>
8210 <dict>
8211 <key>name</key>
8212 <string>punctuation.definition.string.end.ts</string>
8213 </dict>
8214 <key>2</key>
8215 <dict>
8216 <key>name</key>
8217 <string>invalid.illegal.newline.ts</string>
8218 </dict>
8219 </dict>
8220 <key>patterns</key>
8221 <array>
8222 <dict>
8223 <key>include</key>
8224 <string>#string-character-escape</string>
8225 </dict>
8226 </array>
8227 </dict>
8228 <key>string-character-escape</key>
8229 <dict>
8230 <key>name</key>
8231 <string>constant.character.escape.ts</string>
8232 <key>match</key>
8233 <string>\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\{[0-9A-Fa-f]+\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)</string>
8234 </dict>
8235 <key>template</key>
8236 <dict>
8237 <key>patterns</key>
8238 <array>
8239 <dict>
8240 <key>include</key>
8241 <string>#template-call</string>
8242 </dict>
8243 <dict>
8244 <key>contentName</key>
8245 <string>string.template.ts</string>
8246 <key>begin</key>
8247 <string>([_$[:alpha:]][_$[:alnum:]]*)?(`)</string>
8248 <key>beginCaptures</key>
8249 <dict>
8250 <key>1</key>
8251 <dict>
8252 <key>name</key>
8253 <string>entity.name.function.tagged-template.ts</string>
8254 </dict>
8255 <key>2</key>
8256 <dict>
8257 <key>name</key>
8258 <string>string.template.ts punctuation.definition.string.template.begin.ts</string>
8259 </dict>
8260 </dict>
8261 <key>end</key>
8262 <string>`</string>
8263 <key>endCaptures</key>
8264 <dict>
8265 <key>0</key>
8266 <dict>
8267 <key>name</key>
8268 <string>string.template.ts punctuation.definition.string.template.end.ts</string>
8269 </dict>
8270 </dict>
8271 <key>patterns</key>
8272 <array>
8273 <dict>
8274 <key>include</key>
8275 <string>#template-substitution-element</string>
8276 </dict>
8277 <dict>
8278 <key>include</key>
8279 <string>#string-character-escape</string>
8280 </dict>
8281 </array>
8282 </dict>
8283 </array>
8284 </dict>
8285 <key>template-call</key>
8286 <dict>
8287 <key>patterns</key>
8288 <array>
8289 <dict>
8290 <key>begin</key>
8291 <string>(?=(([_$[:alpha:]][_$[:alnum:]]*\s*\??\.\s*)*|(\??\.\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))(([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;)*(?&lt;!=)\&gt;))*(?&lt;!=)\&gt;)*(?&lt;!=)&gt;\s*)?`)</string>
8292 <key>end</key>
8293 <string>(?=`)</string>
8294 <key>patterns</key>
8295 <array>
8296 <dict>
8297 <key>begin</key>
8298 <string>(?=(([_$[:alpha:]][_$[:alnum:]]*\s*\??\.\s*)*|(\??\.\s*)?)([_$[:alpha:]][_$[:alnum:]]*))</string>
8299 <key>end</key>
8300 <string>(?=(&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))(([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;)*(?&lt;!=)\&gt;))*(?&lt;!=)\&gt;)*(?&lt;!=)&gt;\s*)?`)</string>
8301 <key>patterns</key>
8302 <array>
8303 <dict>
8304 <key>include</key>
8305 <string>#support-function-call-identifiers</string>
8306 </dict>
8307 <dict>
8308 <key>name</key>
8309 <string>entity.name.function.tagged-template.ts</string>
8310 <key>match</key>
8311 <string>([_$[:alpha:]][_$[:alnum:]]*)</string>
8312 </dict>
8313 </array>
8314 </dict>
8315 <dict>
8316 <key>include</key>
8317 <string>#type-arguments</string>
8318 </dict>
8319 </array>
8320 </dict>
8321 <dict>
8322 <key>begin</key>
8323 <string>([_$[:alpha:]][_$[:alnum:]]*)?\s*(?=(&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))(([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{([^\{\}]|\{[^\{\}]*\})*\}))*\})|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(\[([^\[\]]|(\[([^\[\]]|\[[^\[\]]*\])*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\(([^\(\)]|\([^\(\)]*\))*\)))*\))|(?&lt;==)\&gt;)*(?&lt;!=)\&gt;))*(?&lt;!=)\&gt;)*(?&lt;!=)&gt;\s*)`)</string>
8324 <key>beginCaptures</key>
8325 <dict>
8326 <key>1</key>
8327 <dict>
8328 <key>name</key>
8329 <string>entity.name.function.tagged-template.ts</string>
8330 </dict>
8331 </dict>
8332 <key>end</key>
8333 <string>(?=`)</string>
8334 <key>patterns</key>
8335 <array>
8336 <dict>
8337 <key>include</key>
8338 <string>#type-arguments</string>
8339 </dict>
8340 </array>
8341 </dict>
8342 </array>
8343 </dict>
8344 <key>template-substitution-element</key>
8345 <dict>
8346 <key>name</key>
8347 <string>meta.template.expression.ts</string>
8348 <key>begin</key>
8349 <string>\$\{</string>
8350 <key>beginCaptures</key>
8351 <dict>
8352 <key>0</key>
8353 <dict>
8354 <key>name</key>
8355 <string>punctuation.definition.template-expression.begin.ts</string>
8356 </dict>
8357 </dict>
8358 <key>end</key>
8359 <string>\}</string>
8360 <key>endCaptures</key>
8361 <dict>
8362 <key>0</key>
8363 <dict>
8364 <key>name</key>
8365 <string>punctuation.definition.template-expression.end.ts</string>
8366 </dict>
8367 </dict>
8368 <key>patterns</key>
8369 <array>
8370 <dict>
8371 <key>include</key>
8372 <string>#expression</string>
8373 </dict>
8374 </array>
8375 <key>contentName</key>
8376 <string>meta.embedded.line.ts</string>
8377 </dict>
8378 <key>type-string</key>
8379 <dict>
8380 <key>patterns</key>
8381 <array>
8382 <dict>
8383 <key>include</key>
8384 <string>#qstring-single</string>
8385 </dict>
8386 <dict>
8387 <key>include</key>
8388 <string>#qstring-double</string>
8389 </dict>
8390 <dict>
8391 <key>include</key>
8392 <string>#template-type</string>
8393 </dict>
8394 </array>
8395 </dict>
8396 <key>template-type</key>
8397 <dict>
8398 <key>patterns</key>
8399 <array>
8400 <dict>
8401 <key>include</key>
8402 <string>#template-call</string>
8403 </dict>
8404 <dict>
8405 <key>contentName</key>
8406 <string>string.template.ts</string>
8407 <key>begin</key>
8408 <string>([_$[:alpha:]][_$[:alnum:]]*)?(`)</string>
8409 <key>beginCaptures</key>
8410 <dict>
8411 <key>1</key>
8412 <dict>
8413 <key>name</key>
8414 <string>entity.name.function.tagged-template.ts</string>
8415 </dict>
8416 <key>2</key>
8417 <dict>
8418 <key>name</key>
8419 <string>string.template.ts punctuation.definition.string.template.begin.ts</string>
8420 </dict>
8421 </dict>
8422 <key>end</key>
8423 <string>`</string>
8424 <key>endCaptures</key>
8425 <dict>
8426 <key>0</key>
8427 <dict>
8428 <key>name</key>
8429 <string>string.template.ts punctuation.definition.string.template.end.ts</string>
8430 </dict>
8431 </dict>
8432 <key>patterns</key>
8433 <array>
8434 <dict>
8435 <key>include</key>
8436 <string>#template-type-substitution-element</string>
8437 </dict>
8438 <dict>
8439 <key>include</key>
8440 <string>#string-character-escape</string>
8441 </dict>
8442 </array>
8443 </dict>
8444 </array>
8445 </dict>
8446 <key>template-type-substitution-element</key>
8447 <dict>
8448 <key>name</key>
8449 <string>meta.template.expression.ts</string>
8450 <key>begin</key>
8451 <string>\$\{</string>
8452 <key>beginCaptures</key>
8453 <dict>
8454 <key>0</key>
8455 <dict>
8456 <key>name</key>
8457 <string>punctuation.definition.template-expression.begin.ts</string>
8458 </dict>
8459 </dict>
8460 <key>end</key>
8461 <string>\}</string>
8462 <key>endCaptures</key>
8463 <dict>
8464 <key>0</key>
8465 <dict>
8466 <key>name</key>
8467 <string>punctuation.definition.template-expression.end.ts</string>
8468 </dict>
8469 </dict>
8470 <key>patterns</key>
8471 <array>
8472 <dict>
8473 <key>include</key>
8474 <string>#type</string>
8475 </dict>
8476 </array>
8477 <key>contentName</key>
8478 <string>meta.embedded.line.ts</string>
8479 </dict>
8480 <key>regex</key>
8481 <dict>
8482 <key>patterns</key>
8483 <array>
8484 <dict>
8485 <key>name</key>
8486 <string>string.regexp.ts</string>
8487 <key>begin</key>
8488 <string>(?&lt;!\+\+|--|})(?&lt;=[=(:,\[?+!]|^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case|=&gt;|&amp;&amp;|\|\||\*\/)\s*(\/)(?![\/*])(?=(?:[^\/\\\[\()]|\\.|\[([^\]\\]|\\.)+\]|\(([^\)\\]|\\.)+\))+\/([dgimsuvy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))</string>
8489 <key>beginCaptures</key>
8490 <dict>
8491 <key>1</key>
8492 <dict>
8493 <key>name</key>
8494 <string>punctuation.definition.string.begin.ts</string>
8495 </dict>
8496 </dict>
8497 <key>end</key>
8498 <string>(/)([dgimsuvy]*)</string>
8499 <key>endCaptures</key>
8500 <dict>
8501 <key>1</key>
8502 <dict>
8503 <key>name</key>
8504 <string>punctuation.definition.string.end.ts</string>
8505 </dict>
8506 <key>2</key>
8507 <dict>
8508 <key>name</key>
8509 <string>keyword.other.ts</string>
8510 </dict>
8511 </dict>
8512 <key>patterns</key>
8513 <array>
8514 <dict>
8515 <key>include</key>
8516 <string>#regexp</string>
8517 </dict>
8518 </array>
8519 </dict>
8520 <dict>
8521 <key>name</key>
8522 <string>string.regexp.ts</string>
8523 <key>begin</key>
8524 <string>((?&lt;![_$[:alnum:])\]]|\+\+|--|}|\*\/)|((?&lt;=^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case))\s*)\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/([dgimsuvy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))</string>
8525 <key>beginCaptures</key>
8526 <dict>
8527 <key>0</key>
8528 <dict>
8529 <key>name</key>
8530 <string>punctuation.definition.string.begin.ts</string>
8531 </dict>
8532 </dict>
8533 <key>end</key>
8534 <string>(/)([dgimsuvy]*)</string>
8535 <key>endCaptures</key>
8536 <dict>
8537 <key>1</key>
8538 <dict>
8539 <key>name</key>
8540 <string>punctuation.definition.string.end.ts</string>
8541 </dict>
8542 <key>2</key>
8543 <dict>
8544 <key>name</key>
8545 <string>keyword.other.ts</string>
8546 </dict>
8547 </dict>
8548 <key>patterns</key>
8549 <array>
8550 <dict>
8551 <key>include</key>
8552 <string>#regexp</string>
8553 </dict>
8554 </array>
8555 </dict>
8556 </array>
8557 </dict>
8558 <key>regexp</key>
8559 <dict>
8560 <key>patterns</key>
8561 <array>
8562 <dict>
8563 <key>name</key>
8564 <string>keyword.control.anchor.regexp</string>
8565 <key>match</key>
8566 <string>\\[bB]|\^|\$</string>
8567 </dict>
8568 <dict>
8569 <key>match</key>
8570 <string>\\[1-9]\d*|\\k&lt;([a-zA-Z_$][\w$]*)&gt;</string>
8571 <key>captures</key>
8572 <dict>
8573 <key>0</key>
8574 <dict>
8575 <key>name</key>
8576 <string>keyword.other.back-reference.regexp</string>
8577 </dict>
8578 <key>1</key>
8579 <dict>
8580 <key>name</key>
8581 <string>variable.other.regexp</string>
8582 </dict>
8583 </dict>
8584 </dict>
8585 <dict>
8586 <key>name</key>
8587 <string>keyword.operator.quantifier.regexp</string>
8588 <key>match</key>
8589 <string>[?+*]|\{(\d+,\d+|\d+,|,\d+|\d+)\}\??</string>
8590 </dict>
8591 <dict>
8592 <key>name</key>
8593 <string>keyword.operator.or.regexp</string>
8594 <key>match</key>
8595 <string>\|</string>
8596 </dict>
8597 <dict>
8598 <key>name</key>
8599 <string>meta.group.assertion.regexp</string>
8600 <key>begin</key>
8601 <string>(\()((\?=)|(\?!)|(\?&lt;=)|(\?&lt;!))</string>
8602 <key>beginCaptures</key>
8603 <dict>
8604 <key>1</key>
8605 <dict>
8606 <key>name</key>
8607 <string>punctuation.definition.group.regexp</string>
8608 </dict>
8609 <key>2</key>
8610 <dict>
8611 <key>name</key>
8612 <string>punctuation.definition.group.assertion.regexp</string>
8613 </dict>
8614 <key>3</key>
8615 <dict>
8616 <key>name</key>
8617 <string>meta.assertion.look-ahead.regexp</string>
8618 </dict>
8619 <key>4</key>
8620 <dict>
8621 <key>name</key>
8622 <string>meta.assertion.negative-look-ahead.regexp</string>
8623 </dict>
8624 <key>5</key>
8625 <dict>
8626 <key>name</key>
8627 <string>meta.assertion.look-behind.regexp</string>
8628 </dict>
8629 <key>6</key>
8630 <dict>
8631 <key>name</key>
8632 <string>meta.assertion.negative-look-behind.regexp</string>
8633 </dict>
8634 </dict>
8635 <key>end</key>
8636 <string>(\))</string>
8637 <key>endCaptures</key>
8638 <dict>
8639 <key>1</key>
8640 <dict>
8641 <key>name</key>
8642 <string>punctuation.definition.group.regexp</string>
8643 </dict>
8644 </dict>
8645 <key>patterns</key>
8646 <array>
8647 <dict>
8648 <key>include</key>
8649 <string>#regexp</string>
8650 </dict>
8651 </array>
8652 </dict>
8653 <dict>
8654 <key>name</key>
8655 <string>meta.group.regexp</string>
8656 <key>begin</key>
8657 <string>\((?:(\?:)|(?:\?&lt;([a-zA-Z_$][\w$]*)&gt;))?</string>
8658 <key>beginCaptures</key>
8659 <dict>
8660 <key>0</key>
8661 <dict>
8662 <key>name</key>
8663 <string>punctuation.definition.group.regexp</string>
8664 </dict>
8665 <key>1</key>
8666 <dict>
8667 <key>name</key>
8668 <string>punctuation.definition.group.no-capture.regexp</string>
8669 </dict>
8670 <key>2</key>
8671 <dict>
8672 <key>name</key>
8673 <string>variable.other.regexp</string>
8674 </dict>
8675 </dict>
8676 <key>end</key>
8677 <string>\)</string>
8678 <key>endCaptures</key>
8679 <dict>
8680 <key>0</key>
8681 <dict>
8682 <key>name</key>
8683 <string>punctuation.definition.group.regexp</string>
8684 </dict>
8685 </dict>
8686 <key>patterns</key>
8687 <array>
8688 <dict>
8689 <key>include</key>
8690 <string>#regexp</string>
8691 </dict>
8692 </array>
8693 </dict>
8694 <dict>
8695 <key>name</key>
8696 <string>constant.other.character-class.set.regexp</string>
8697 <key>begin</key>
8698 <string>(\[)(\^)?</string>
8699 <key>beginCaptures</key>
8700 <dict>
8701 <key>1</key>
8702 <dict>
8703 <key>name</key>
8704 <string>punctuation.definition.character-class.regexp</string>
8705 </dict>
8706 <key>2</key>
8707 <dict>
8708 <key>name</key>
8709 <string>keyword.operator.negation.regexp</string>
8710 </dict>
8711 </dict>
8712 <key>end</key>
8713 <string>(\])</string>
8714 <key>endCaptures</key>
8715 <dict>
8716 <key>1</key>
8717 <dict>
8718 <key>name</key>
8719 <string>punctuation.definition.character-class.regexp</string>
8720 </dict>
8721 </dict>
8722 <key>patterns</key>
8723 <array>
8724 <dict>
8725 <key>name</key>
8726 <string>constant.other.character-class.range.regexp</string>
8727 <key>match</key>
8728 <string>(?:.|(\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\c[A-Z])|(\\.))\-(?:[^\]\\]|(\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\c[A-Z])|(\\.))</string>
8729 <key>captures</key>
8730 <dict>
8731 <key>1</key>
8732 <dict>
8733 <key>name</key>
8734 <string>constant.character.numeric.regexp</string>
8735 </dict>
8736 <key>2</key>
8737 <dict>
8738 <key>name</key>
8739 <string>constant.character.control.regexp</string>
8740 </dict>
8741 <key>3</key>
8742 <dict>
8743 <key>name</key>
8744 <string>constant.character.escape.backslash.regexp</string>
8745 </dict>
8746 <key>4</key>
8747 <dict>
8748 <key>name</key>
8749 <string>constant.character.numeric.regexp</string>
8750 </dict>
8751 <key>5</key>
8752 <dict>
8753 <key>name</key>
8754 <string>constant.character.control.regexp</string>
8755 </dict>
8756 <key>6</key>
8757 <dict>
8758 <key>name</key>
8759 <string>constant.character.escape.backslash.regexp</string>
8760 </dict>
8761 </dict>
8762 </dict>
8763 <dict>
8764 <key>include</key>
8765 <string>#regex-character-class</string>
8766 </dict>
8767 </array>
8768 </dict>
8769 <dict>
8770 <key>include</key>
8771 <string>#regex-character-class</string>
8772 </dict>
8773 </array>
8774 </dict>
8775 <key>regex-character-class</key>
8776 <dict>
8777 <key>patterns</key>
8778 <array>
8779 <dict>
8780 <key>name</key>
8781 <string>constant.other.character-class.regexp</string>
8782 <key>match</key>
8783 <string>\\[wWsSdDtrnvf]|\.</string>
8784 </dict>
8785 <dict>
8786 <key>name</key>
8787 <string>constant.character.numeric.regexp</string>
8788 <key>match</key>
8789 <string>\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})</string>
8790 </dict>
8791 <dict>
8792 <key>name</key>
8793 <string>constant.character.control.regexp</string>
8794 <key>match</key>
8795 <string>\\c[A-Z]</string>
8796 </dict>
8797 <dict>
8798 <key>name</key>
8799 <string>constant.character.escape.backslash.regexp</string>
8800 <key>match</key>
8801 <string>\\.</string>
8802 </dict>
8803 </array>
8804 </dict>
8805 <key>comment</key>
8806 <dict>
8807 <key>patterns</key>
8808 <array>
8809 <dict>
8810 <key>name</key>
8811 <string>comment.block.documentation.ts</string>
8812 <key>begin</key>
8813 <string>/\*\*(?!/)</string>
8814 <key>beginCaptures</key>
8815 <dict>
8816 <key>0</key>
8817 <dict>
8818 <key>name</key>
8819 <string>punctuation.definition.comment.ts</string>
8820 </dict>
8821 </dict>
8822 <key>end</key>
8823 <string>\*/</string>
8824 <key>endCaptures</key>
8825 <dict>
8826 <key>0</key>
8827 <dict>
8828 <key>name</key>
8829 <string>punctuation.definition.comment.ts</string>
8830 </dict>
8831 </dict>
8832 <key>patterns</key>
8833 <array>
8834 <dict>
8835 <key>include</key>
8836 <string>#docblock</string>
8837 </dict>
8838 </array>
8839 </dict>
8840 <dict>
8841 <key>name</key>
8842 <string>comment.block.ts</string>
8843 <key>begin</key>
8844 <string>(/\*)(?:\s*((@)internal)(?=\s|(\*/)))?</string>
8845 <key>beginCaptures</key>
8846 <dict>
8847 <key>1</key>
8848 <dict>
8849 <key>name</key>
8850 <string>punctuation.definition.comment.ts</string>
8851 </dict>
8852 <key>2</key>
8853 <dict>
8854 <key>name</key>
8855 <string>storage.type.internaldeclaration.ts</string>
8856 </dict>
8857 <key>3</key>
8858 <dict>
8859 <key>name</key>
8860 <string>punctuation.decorator.internaldeclaration.ts</string>
8861 </dict>
8862 </dict>
8863 <key>end</key>
8864 <string>\*/</string>
8865 <key>endCaptures</key>
8866 <dict>
8867 <key>0</key>
8868 <dict>
8869 <key>name</key>
8870 <string>punctuation.definition.comment.ts</string>
8871 </dict>
8872 </dict>
8873 </dict>
8874 <dict>
8875 <key>begin</key>
8876 <string>(^[ \t]+)?((//)(?:\s*((@)internal)(?=\s|$))?)</string>
8877 <key>beginCaptures</key>
8878 <dict>
8879 <key>1</key>
8880 <dict>
8881 <key>name</key>
8882 <string>punctuation.whitespace.comment.leading.ts</string>
8883 </dict>
8884 <key>2</key>
8885 <dict>
8886 <key>name</key>
8887 <string>comment.line.double-slash.ts</string>
8888 </dict>
8889 <key>3</key>
8890 <dict>
8891 <key>name</key>
8892 <string>punctuation.definition.comment.ts</string>
8893 </dict>
8894 <key>4</key>
8895 <dict>
8896 <key>name</key>
8897 <string>storage.type.internaldeclaration.ts</string>
8898 </dict>
8899 <key>5</key>
8900 <dict>
8901 <key>name</key>
8902 <string>punctuation.decorator.internaldeclaration.ts</string>
8903 </dict>
8904 </dict>
8905 <key>end</key>
8906 <string>(?=$)</string>
8907 <key>contentName</key>
8908 <string>comment.line.double-slash.ts</string>
8909 </dict>
8910 </array>
8911 </dict>
8912 <key>single-line-comment-consuming-line-ending</key>
8913 <dict>
8914 <key>begin</key>
8915 <string>(^[ \t]+)?((//)(?:\s*((@)internal)(?=\s|$))?)</string>
8916 <key>beginCaptures</key>
8917 <dict>
8918 <key>1</key>
8919 <dict>
8920 <key>name</key>
8921 <string>punctuation.whitespace.comment.leading.ts</string>
8922 </dict>
8923 <key>2</key>
8924 <dict>
8925 <key>name</key>
8926 <string>comment.line.double-slash.ts</string>
8927 </dict>
8928 <key>3</key>
8929 <dict>
8930 <key>name</key>
8931 <string>punctuation.definition.comment.ts</string>
8932 </dict>
8933 <key>4</key>
8934 <dict>
8935 <key>name</key>
8936 <string>storage.type.internaldeclaration.ts</string>
8937 </dict>
8938 <key>5</key>
8939 <dict>
8940 <key>name</key>
8941 <string>punctuation.decorator.internaldeclaration.ts</string>
8942 </dict>
8943 </dict>
8944 <key>end</key>
8945 <string>(?=^)</string>
8946 <key>contentName</key>
8947 <string>comment.line.double-slash.ts</string>
8948 </dict>
8949 <key>directives</key>
8950 <dict>
8951 <key>name</key>
8952 <string>comment.line.triple-slash.directive.ts</string>
8953 <key>begin</key>
8954 <string>^(///)\s*(?=&lt;(reference|amd-dependency|amd-module)(\s+(path|types|no-default-lib|lib|name|resolution-mode)\s*=\s*((\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)))+\s*/&gt;\s*$)</string>
8955 <key>beginCaptures</key>
8956 <dict>
8957 <key>1</key>
8958 <dict>
8959 <key>name</key>
8960 <string>punctuation.definition.comment.ts</string>
8961 </dict>
8962 </dict>
8963 <key>end</key>
8964 <string>(?=$)</string>
8965 <key>patterns</key>
8966 <array>
8967 <dict>
8968 <key>name</key>
8969 <string>meta.tag.ts</string>
8970 <key>begin</key>
8971 <string>(&lt;)(reference|amd-dependency|amd-module)</string>
8972 <key>beginCaptures</key>
8973 <dict>
8974 <key>1</key>
8975 <dict>
8976 <key>name</key>
8977 <string>punctuation.definition.tag.directive.ts</string>
8978 </dict>
8979 <key>2</key>
8980 <dict>
8981 <key>name</key>
8982 <string>entity.name.tag.directive.ts</string>
8983 </dict>
8984 </dict>
8985 <key>end</key>
8986 <string>/&gt;</string>
8987 <key>endCaptures</key>
8988 <dict>
8989 <key>0</key>
8990 <dict>
8991 <key>name</key>
8992 <string>punctuation.definition.tag.directive.ts</string>
8993 </dict>
8994 </dict>
8995 <key>patterns</key>
8996 <array>
8997 <dict>
8998 <key>name</key>
8999 <string>entity.other.attribute-name.directive.ts</string>
9000 <key>match</key>
9001 <string>path|types|no-default-lib|lib|name|resolution-mode</string>
9002 </dict>
9003 <dict>
9004 <key>name</key>
9005 <string>keyword.operator.assignment.ts</string>
9006 <key>match</key>
9007 <string>=</string>
9008 </dict>
9009 <dict>
9010 <key>include</key>
9011 <string>#string</string>
9012 </dict>
9013 </array>
9014 </dict>
9015 </array>
9016 </dict>
9017 <key>docblock</key>
9018 <dict>
9019 <key>patterns</key>
9020 <array>
9021 <dict>
9022 <key>match</key>
9023 <string>(?x)
9024((@)(?:access|api))
9025\s+
9026(private|protected|public)
9027\b</string>
9028 <key>captures</key>
9029 <dict>
9030 <key>1</key>
9031 <dict>
9032 <key>name</key>
9033 <string>storage.type.class.jsdoc</string>
9034 </dict>
9035 <key>2</key>
9036 <dict>
9037 <key>name</key>
9038 <string>punctuation.definition.block.tag.jsdoc</string>
9039 </dict>
9040 <key>3</key>
9041 <dict>
9042 <key>name</key>
9043 <string>constant.language.access-type.jsdoc</string>
9044 </dict>
9045 </dict>
9046 </dict>
9047 <dict>
9048 <key>match</key>
9049 <string>(?x)
9050((@)author)
9051\s+
9052(
9053 [^@\s&lt;&gt;*/]
9054 (?:[^@&lt;&gt;*/]|\*[^/])*
9055)
9056(?:
9057 \s*
9058 (&lt;)
9059 ([^&gt;\s]+)
9060 (&gt;)
9061)?</string>
9062 <key>captures</key>
9063 <dict>
9064 <key>1</key>
9065 <dict>
9066 <key>name</key>
9067 <string>storage.type.class.jsdoc</string>
9068 </dict>
9069 <key>2</key>
9070 <dict>
9071 <key>name</key>
9072 <string>punctuation.definition.block.tag.jsdoc</string>
9073 </dict>
9074 <key>3</key>
9075 <dict>
9076 <key>name</key>
9077 <string>entity.name.type.instance.jsdoc</string>
9078 </dict>
9079 <key>4</key>
9080 <dict>
9081 <key>name</key>
9082 <string>punctuation.definition.bracket.angle.begin.jsdoc</string>
9083 </dict>
9084 <key>5</key>
9085 <dict>
9086 <key>name</key>
9087 <string>constant.other.email.link.underline.jsdoc</string>
9088 </dict>
9089 <key>6</key>
9090 <dict>
9091 <key>name</key>
9092 <string>punctuation.definition.bracket.angle.end.jsdoc</string>
9093 </dict>
9094 </dict>
9095 </dict>
9096 <dict>
9097 <key>match</key>
9098 <string>(?x)
9099((@)borrows) \s+
9100((?:[^@\s*/]|\*[^/])+) # &lt;that namepath&gt;
9101\s+ (as) \s+ # as
9102((?:[^@\s*/]|\*[^/])+) # &lt;this namepath&gt;</string>
9103 <key>captures</key>
9104 <dict>
9105 <key>1</key>
9106 <dict>
9107 <key>name</key>
9108 <string>storage.type.class.jsdoc</string>
9109 </dict>
9110 <key>2</key>
9111 <dict>
9112 <key>name</key>
9113 <string>punctuation.definition.block.tag.jsdoc</string>
9114 </dict>
9115 <key>3</key>
9116 <dict>
9117 <key>name</key>
9118 <string>entity.name.type.instance.jsdoc</string>
9119 </dict>
9120 <key>4</key>
9121 <dict>
9122 <key>name</key>
9123 <string>keyword.operator.control.jsdoc</string>
9124 </dict>
9125 <key>5</key>
9126 <dict>
9127 <key>name</key>
9128 <string>entity.name.type.instance.jsdoc</string>
9129 </dict>
9130 </dict>
9131 </dict>
9132 <dict>
9133 <key>name</key>
9134 <string>meta.example.jsdoc</string>
9135 <key>begin</key>
9136 <string>((@)example)\s+</string>
9137 <key>end</key>
9138 <string>(?=@|\*/)</string>
9139 <key>beginCaptures</key>
9140 <dict>
9141 <key>1</key>
9142 <dict>
9143 <key>name</key>
9144 <string>storage.type.class.jsdoc</string>
9145 </dict>
9146 <key>2</key>
9147 <dict>
9148 <key>name</key>
9149 <string>punctuation.definition.block.tag.jsdoc</string>
9150 </dict>
9151 </dict>
9152 <key>patterns</key>
9153 <array>
9154 <dict>
9155 <key>match</key>
9156 <string>^\s\*\s+</string>
9157 </dict>
9158 <dict>
9159 <key>contentName</key>
9160 <string>constant.other.description.jsdoc</string>
9161 <key>begin</key>
9162 <string>\G(&lt;)caption(&gt;)</string>
9163 <key>beginCaptures</key>
9164 <dict>
9165 <key>0</key>
9166 <dict>
9167 <key>name</key>
9168 <string>entity.name.tag.inline.jsdoc</string>
9169 </dict>
9170 <key>1</key>
9171 <dict>
9172 <key>name</key>
9173 <string>punctuation.definition.bracket.angle.begin.jsdoc</string>
9174 </dict>
9175 <key>2</key>
9176 <dict>
9177 <key>name</key>
9178 <string>punctuation.definition.bracket.angle.end.jsdoc</string>
9179 </dict>
9180 </dict>
9181 <key>end</key>
9182 <string>(&lt;/)caption(&gt;)|(?=\*/)</string>
9183 <key>endCaptures</key>
9184 <dict>
9185 <key>0</key>
9186 <dict>
9187 <key>name</key>
9188 <string>entity.name.tag.inline.jsdoc</string>
9189 </dict>
9190 <key>1</key>
9191 <dict>
9192 <key>name</key>
9193 <string>punctuation.definition.bracket.angle.begin.jsdoc</string>
9194 </dict>
9195 <key>2</key>
9196 <dict>
9197 <key>name</key>
9198 <string>punctuation.definition.bracket.angle.end.jsdoc</string>
9199 </dict>
9200 </dict>
9201 </dict>
9202 <dict>
9203 <key>match</key>
9204 <string>[^\s@*](?:[^*]|\*[^/])*</string>
9205 <key>captures</key>
9206 <dict>
9207 <key>0</key>
9208 <dict>
9209 <key>name</key>
9210 <string>source.embedded.ts</string>
9211 </dict>
9212 </dict>
9213 </dict>
9214 </array>
9215 </dict>
9216 <dict>
9217 <key>match</key>
9218 <string>(?x) ((@)kind) \s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \b</string>
9219 <key>captures</key>
9220 <dict>
9221 <key>1</key>
9222 <dict>
9223 <key>name</key>
9224 <string>storage.type.class.jsdoc</string>
9225 </dict>
9226 <key>2</key>
9227 <dict>
9228 <key>name</key>
9229 <string>punctuation.definition.block.tag.jsdoc</string>
9230 </dict>
9231 <key>3</key>
9232 <dict>
9233 <key>name</key>
9234 <string>constant.language.symbol-type.jsdoc</string>
9235 </dict>
9236 </dict>
9237 </dict>
9238 <dict>
9239 <key>match</key>
9240 <string>(?x)
9241((@)see)
9242\s+
9243(?:
9244 # URL
9245 (
9246 (?=https?://)
9247 (?:[^\s*]|\*[^/])+
9248 )
9249 |
9250 # JSDoc namepath
9251 (
9252 (?!
9253 # Avoid matching bare URIs (also acceptable as links)
9254 https?://
9255 |
9256 # Avoid matching {@inline tags}; we match those below
9257 (?:\[[^\[\]]*\])? # Possible description [preceding]{@tag}
9258 {@(?:link|linkcode|linkplain|tutorial)\b
9259 )
9260 # Matched namepath
9261 (?:[^@\s*/]|\*[^/])+
9262 )
9263)</string>
9264 <key>captures</key>
9265 <dict>
9266 <key>1</key>
9267 <dict>
9268 <key>name</key>
9269 <string>storage.type.class.jsdoc</string>
9270 </dict>
9271 <key>2</key>
9272 <dict>
9273 <key>name</key>
9274 <string>punctuation.definition.block.tag.jsdoc</string>
9275 </dict>
9276 <key>3</key>
9277 <dict>
9278 <key>name</key>
9279 <string>variable.other.link.underline.jsdoc</string>
9280 </dict>
9281 <key>4</key>
9282 <dict>
9283 <key>name</key>
9284 <string>entity.name.type.instance.jsdoc</string>
9285 </dict>
9286 </dict>
9287 </dict>
9288 <dict>
9289 <key>match</key>
9290 <string>(?x)
9291((@)template)
9292\s+
9293# One or more valid identifiers
9294(
9295 [A-Za-z_$] # First character: non-numeric word character
9296 [\w$.\[\]]* # Rest of identifier
9297 (?: # Possible list of additional identifiers
9298 \s* , \s*
9299 [A-Za-z_$]
9300 [\w$.\[\]]*
9301 )*
9302)</string>
9303 <key>captures</key>
9304 <dict>
9305 <key>1</key>
9306 <dict>
9307 <key>name</key>
9308 <string>storage.type.class.jsdoc</string>
9309 </dict>
9310 <key>2</key>
9311 <dict>
9312 <key>name</key>
9313 <string>punctuation.definition.block.tag.jsdoc</string>
9314 </dict>
9315 <key>3</key>
9316 <dict>
9317 <key>name</key>
9318 <string>variable.other.jsdoc</string>
9319 </dict>
9320 </dict>
9321 </dict>
9322 <dict>
9323 <key>begin</key>
9324 <string>(?x)((@)template)\s+(?={)</string>
9325 <key>beginCaptures</key>
9326 <dict>
9327 <key>1</key>
9328 <dict>
9329 <key>name</key>
9330 <string>storage.type.class.jsdoc</string>
9331 </dict>
9332 <key>2</key>
9333 <dict>
9334 <key>name</key>
9335 <string>punctuation.definition.block.tag.jsdoc</string>
9336 </dict>
9337 </dict>
9338 <key>end</key>
9339 <string>(?=\s|\*/|[^{}\[\]A-Za-z_$])</string>
9340 <key>patterns</key>
9341 <array>
9342 <dict>
9343 <key>include</key>
9344 <string>#jsdoctype</string>
9345 </dict>
9346 <dict>
9347 <key>name</key>
9348 <string>variable.other.jsdoc</string>
9349 <key>match</key>
9350 <string>([A-Za-z_$][\w$.\[\]]*)</string>
9351 </dict>
9352 </array>
9353 </dict>
9354 <dict>
9355 <key>match</key>
9356 <string>(?x)
9357(
9358 (@)
9359 (?:arg|argument|const|constant|member|namespace|param|var)
9360)
9361\s+
9362(
9363 [A-Za-z_$]
9364 [\w$.\[\]]*
9365)</string>
9366 <key>captures</key>
9367 <dict>
9368 <key>1</key>
9369 <dict>
9370 <key>name</key>
9371 <string>storage.type.class.jsdoc</string>
9372 </dict>
9373 <key>2</key>
9374 <dict>
9375 <key>name</key>
9376 <string>punctuation.definition.block.tag.jsdoc</string>
9377 </dict>
9378 <key>3</key>
9379 <dict>
9380 <key>name</key>
9381 <string>variable.other.jsdoc</string>
9382 </dict>
9383 </dict>
9384 </dict>
9385 <dict>
9386 <key>begin</key>
9387 <string>((@)typedef)\s+(?={)</string>
9388 <key>beginCaptures</key>
9389 <dict>
9390 <key>1</key>
9391 <dict>
9392 <key>name</key>
9393 <string>storage.type.class.jsdoc</string>
9394 </dict>
9395 <key>2</key>
9396 <dict>
9397 <key>name</key>
9398 <string>punctuation.definition.block.tag.jsdoc</string>
9399 </dict>
9400 </dict>
9401 <key>end</key>
9402 <string>(?=\s|\*/|[^{}\[\]A-Za-z_$])</string>
9403 <key>patterns</key>
9404 <array>
9405 <dict>
9406 <key>include</key>
9407 <string>#jsdoctype</string>
9408 </dict>
9409 <dict>
9410 <key>name</key>
9411 <string>entity.name.type.instance.jsdoc</string>
9412 <key>match</key>
9413 <string>(?:[^@\s*/]|\*[^/])+</string>
9414 </dict>
9415 </array>
9416 </dict>
9417 <dict>
9418 <key>begin</key>
9419 <string>((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\s+(?={)</string>
9420 <key>beginCaptures</key>
9421 <dict>
9422 <key>1</key>
9423 <dict>
9424 <key>name</key>
9425 <string>storage.type.class.jsdoc</string>
9426 </dict>
9427 <key>2</key>
9428 <dict>
9429 <key>name</key>
9430 <string>punctuation.definition.block.tag.jsdoc</string>
9431 </dict>
9432 </dict>
9433 <key>end</key>
9434 <string>(?=\s|\*/|[^{}\[\]A-Za-z_$])</string>
9435 <key>patterns</key>
9436 <array>
9437 <dict>
9438 <key>include</key>
9439 <string>#jsdoctype</string>
9440 </dict>
9441 <dict>
9442 <key>name</key>
9443 <string>variable.other.jsdoc</string>
9444 <key>match</key>
9445 <string>([A-Za-z_$][\w$.\[\]]*)</string>
9446 </dict>
9447 <dict>
9448 <key>name</key>
9449 <string>variable.other.jsdoc</string>
9450 <key>match</key>
9451 <string>(?x)
9452(\[)\s*
9453[\w$]+
9454(?:
9455 (?:\[\])? # Foo[ ].bar properties within an array
9456 \. # Foo.Bar namespaced parameter
9457 [\w$]+
9458)*
9459(?:
9460 \s*
9461 (=) # [foo=bar] Default parameter value
9462 \s*
9463 (
9464 # The inner regexes are to stop the match early at */ and to not stop at escaped quotes
9465 (?&gt;
9466 "(?:(?:\*(?!/))|(?:\\(?!"))|[^*\\])*?" | # [foo="bar"] Double-quoted
9467 '(?:(?:\*(?!/))|(?:\\(?!'))|[^*\\])*?' | # [foo='bar'] Single-quoted
9468 \[ (?:(?:\*(?!/))|[^*])*? \] | # [foo=[1,2]] Array literal
9469 (?:(?:\*(?!/))|\s(?!\s*\])|\[.*?(?:\]|(?=\*/))|[^*\s\[\]])* # Everything else
9470 )*
9471 )
9472)?
9473\s*(?:(\])((?:[^*\s]|\*[^\s/])+)?|(?=\*/))</string>
9474 <key>captures</key>
9475 <dict>
9476 <key>1</key>
9477 <dict>
9478 <key>name</key>
9479 <string>punctuation.definition.optional-value.begin.bracket.square.jsdoc</string>
9480 </dict>
9481 <key>2</key>
9482 <dict>
9483 <key>name</key>
9484 <string>keyword.operator.assignment.jsdoc</string>
9485 </dict>
9486 <key>3</key>
9487 <dict>
9488 <key>name</key>
9489 <string>source.embedded.ts</string>
9490 </dict>
9491 <key>4</key>
9492 <dict>
9493 <key>name</key>
9494 <string>punctuation.definition.optional-value.end.bracket.square.jsdoc</string>
9495 </dict>
9496 <key>5</key>
9497 <dict>
9498 <key>name</key>
9499 <string>invalid.illegal.syntax.jsdoc</string>
9500 </dict>
9501 </dict>
9502 </dict>
9503 </array>
9504 </dict>
9505 <dict>
9506 <key>begin</key>
9507 <string>(?x)
9508(
9509 (@)
9510 (?:define|enum|exception|export|extends|lends|implements|modifies
9511 |namespace|private|protected|returns?|satisfies|suppress|this|throws|type
9512 |yields?)
9513)
9514\s+(?={)</string>
9515 <key>beginCaptures</key>
9516 <dict>
9517 <key>1</key>
9518 <dict>
9519 <key>name</key>
9520 <string>storage.type.class.jsdoc</string>
9521 </dict>
9522 <key>2</key>
9523 <dict>
9524 <key>name</key>
9525 <string>punctuation.definition.block.tag.jsdoc</string>
9526 </dict>
9527 </dict>
9528 <key>end</key>
9529 <string>(?=\s|\*/|[^{}\[\]A-Za-z_$])</string>
9530 <key>patterns</key>
9531 <array>
9532 <dict>
9533 <key>include</key>
9534 <string>#jsdoctype</string>
9535 </dict>
9536 </array>
9537 </dict>
9538 <dict>
9539 <key>match</key>
9540 <string>(?x)
9541(
9542 (@)
9543 (?:alias|augments|callback|constructs|emits|event|fires|exports?
9544 |extends|external|function|func|host|lends|listens|interface|memberof!?
9545 |method|module|mixes|mixin|name|requires|see|this|typedef|uses)
9546)
9547\s+
9548(
9549 (?:
9550 [^{}@\s*] | \*[^/]
9551 )+
9552)</string>
9553 <key>captures</key>
9554 <dict>
9555 <key>1</key>
9556 <dict>
9557 <key>name</key>
9558 <string>storage.type.class.jsdoc</string>
9559 </dict>
9560 <key>2</key>
9561 <dict>
9562 <key>name</key>
9563 <string>punctuation.definition.block.tag.jsdoc</string>
9564 </dict>
9565 <key>3</key>
9566 <dict>
9567 <key>name</key>
9568 <string>entity.name.type.instance.jsdoc</string>
9569 </dict>
9570 </dict>
9571 </dict>
9572 <dict>
9573 <key>contentName</key>
9574 <string>variable.other.jsdoc</string>
9575 <key>begin</key>
9576 <string>((@)(?:default(?:value)?|license|version))\s+(([''"]))</string>
9577 <key>beginCaptures</key>
9578 <dict>
9579 <key>1</key>
9580 <dict>
9581 <key>name</key>
9582 <string>storage.type.class.jsdoc</string>
9583 </dict>
9584 <key>2</key>
9585 <dict>
9586 <key>name</key>
9587 <string>punctuation.definition.block.tag.jsdoc</string>
9588 </dict>
9589 <key>3</key>
9590 <dict>
9591 <key>name</key>
9592 <string>variable.other.jsdoc</string>
9593 </dict>
9594 <key>4</key>
9595 <dict>
9596 <key>name</key>
9597 <string>punctuation.definition.string.begin.jsdoc</string>
9598 </dict>
9599 </dict>
9600 <key>end</key>
9601 <string>(\3)|(?=$|\*/)</string>
9602 <key>endCaptures</key>
9603 <dict>
9604 <key>0</key>
9605 <dict>
9606 <key>name</key>
9607 <string>variable.other.jsdoc</string>
9608 </dict>
9609 <key>1</key>
9610 <dict>
9611 <key>name</key>
9612 <string>punctuation.definition.string.end.jsdoc</string>
9613 </dict>
9614 </dict>
9615 </dict>
9616 <dict>
9617 <key>match</key>
9618 <string>((@)(?:default(?:value)?|license|tutorial|variation|version))\s+([^\s*]+)</string>
9619 <key>captures</key>
9620 <dict>
9621 <key>1</key>
9622 <dict>
9623 <key>name</key>
9624 <string>storage.type.class.jsdoc</string>
9625 </dict>
9626 <key>2</key>
9627 <dict>
9628 <key>name</key>
9629 <string>punctuation.definition.block.tag.jsdoc</string>
9630 </dict>
9631 <key>3</key>
9632 <dict>
9633 <key>name</key>
9634 <string>variable.other.jsdoc</string>
9635 </dict>
9636 </dict>
9637 </dict>
9638 <dict>
9639 <key>name</key>
9640 <string>storage.type.class.jsdoc</string>
9641 <key>match</key>
9642 <string>(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \b</string>
9643 <key>captures</key>
9644 <dict>
9645 <key>1</key>
9646 <dict>
9647 <key>name</key>
9648 <string>punctuation.definition.block.tag.jsdoc</string>
9649 </dict>
9650 </dict>
9651 </dict>
9652 <dict>
9653 <key>include</key>
9654 <string>#inline-tags</string>
9655 </dict>
9656 <dict>
9657 <key>match</key>
9658 <string>((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\s+)</string>
9659 <key>captures</key>
9660 <dict>
9661 <key>1</key>
9662 <dict>
9663 <key>name</key>
9664 <string>storage.type.class.jsdoc</string>
9665 </dict>
9666 <key>2</key>
9667 <dict>
9668 <key>name</key>
9669 <string>punctuation.definition.block.tag.jsdoc</string>
9670 </dict>
9671 </dict>
9672 </dict>
9673 </array>
9674 </dict>
9675 <key>brackets</key>
9676 <dict>
9677 <key>patterns</key>
9678 <array>
9679 <dict>
9680 <key>begin</key>
9681 <string>{</string>
9682 <key>end</key>
9683 <string>}|(?=\*/)</string>
9684 <key>patterns</key>
9685 <array>
9686 <dict>
9687 <key>include</key>
9688 <string>#brackets</string>
9689 </dict>
9690 </array>
9691 </dict>
9692 <dict>
9693 <key>begin</key>
9694 <string>\[</string>
9695 <key>end</key>
9696 <string>\]|(?=\*/)</string>
9697 <key>patterns</key>
9698 <array>
9699 <dict>
9700 <key>include</key>
9701 <string>#brackets</string>
9702 </dict>
9703 </array>
9704 </dict>
9705 </array>
9706 </dict>
9707 <key>inline-tags</key>
9708 <dict>
9709 <key>patterns</key>
9710 <array>
9711 <dict>
9712 <key>name</key>
9713 <string>constant.other.description.jsdoc</string>
9714 <key>match</key>
9715 <string>(\[)[^\]]+(\])(?={@(?:link|linkcode|linkplain|tutorial))</string>
9716 <key>captures</key>
9717 <dict>
9718 <key>1</key>
9719 <dict>
9720 <key>name</key>
9721 <string>punctuation.definition.bracket.square.begin.jsdoc</string>
9722 </dict>
9723 <key>2</key>
9724 <dict>
9725 <key>name</key>
9726 <string>punctuation.definition.bracket.square.end.jsdoc</string>
9727 </dict>
9728 </dict>
9729 </dict>
9730 <dict>
9731 <key>name</key>
9732 <string>entity.name.type.instance.jsdoc</string>
9733 <key>begin</key>
9734 <string>({)((@)(?:link(?:code|plain)?|tutorial))\s*</string>
9735 <key>beginCaptures</key>
9736 <dict>
9737 <key>1</key>
9738 <dict>
9739 <key>name</key>
9740 <string>punctuation.definition.bracket.curly.begin.jsdoc</string>
9741 </dict>
9742 <key>2</key>
9743 <dict>
9744 <key>name</key>
9745 <string>storage.type.class.jsdoc</string>
9746 </dict>
9747 <key>3</key>
9748 <dict>
9749 <key>name</key>
9750 <string>punctuation.definition.inline.tag.jsdoc</string>
9751 </dict>
9752 </dict>
9753 <key>end</key>
9754 <string>}|(?=\*/)</string>
9755 <key>endCaptures</key>
9756 <dict>
9757 <key>0</key>
9758 <dict>
9759 <key>name</key>
9760 <string>punctuation.definition.bracket.curly.end.jsdoc</string>
9761 </dict>
9762 </dict>
9763 <key>patterns</key>
9764 <array>
9765 <dict>
9766 <key>match</key>
9767 <string>\G((?=https?://)(?:[^|}\s*]|\*[/])+)(\|)?</string>
9768 <key>captures</key>
9769 <dict>
9770 <key>1</key>
9771 <dict>
9772 <key>name</key>
9773 <string>variable.other.link.underline.jsdoc</string>
9774 </dict>
9775 <key>2</key>
9776 <dict>
9777 <key>name</key>
9778 <string>punctuation.separator.pipe.jsdoc</string>
9779 </dict>
9780 </dict>
9781 </dict>
9782 <dict>
9783 <key>match</key>
9784 <string>\G((?:[^{}@\s|*]|\*[^/])+)(\|)?</string>
9785 <key>captures</key>
9786 <dict>
9787 <key>1</key>
9788 <dict>
9789 <key>name</key>
9790 <string>variable.other.description.jsdoc</string>
9791 </dict>
9792 <key>2</key>
9793 <dict>
9794 <key>name</key>
9795 <string>punctuation.separator.pipe.jsdoc</string>
9796 </dict>
9797 </dict>
9798 </dict>
9799 </array>
9800 </dict>
9801 </array>
9802 </dict>
9803 <key>jsdoctype</key>
9804 <dict>
9805 <key>patterns</key>
9806 <array>
9807 <dict>
9808 <key>name</key>
9809 <string>invalid.illegal.type.jsdoc</string>
9810 <key>match</key>
9811 <string>\G{(?:[^}*]|\*[^/}])+$</string>
9812 </dict>
9813 <dict>
9814 <key>contentName</key>
9815 <string>entity.name.type.instance.jsdoc</string>
9816 <key>begin</key>
9817 <string>\G({)</string>
9818 <key>beginCaptures</key>
9819 <dict>
9820 <key>0</key>
9821 <dict>
9822 <key>name</key>
9823 <string>entity.name.type.instance.jsdoc</string>
9824 </dict>
9825 <key>1</key>
9826 <dict>
9827 <key>name</key>
9828 <string>punctuation.definition.bracket.curly.begin.jsdoc</string>
9829 </dict>
9830 </dict>
9831 <key>end</key>
9832 <string>((}))\s*|(?=\*/)</string>
9833 <key>endCaptures</key>
9834 <dict>
9835 <key>1</key>
9836 <dict>
9837 <key>name</key>
9838 <string>entity.name.type.instance.jsdoc</string>
9839 </dict>
9840 <key>2</key>
9841 <dict>
9842 <key>name</key>
9843 <string>punctuation.definition.bracket.curly.end.jsdoc</string>
9844 </dict>
9845 </dict>
9846 <key>patterns</key>
9847 <array>
9848 <dict>
9849 <key>include</key>
9850 <string>#brackets</string>
9851 </dict>
9852 </array>
9853 </dict>
9854 </array>
9855 </dict>
9856 </dict>
9857 </dict>
9858</plist>