github-linguist 6.0.0 → 6.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,314 +1,4315 @@
1
1
  {
2
2
  "name": "TypeScriptReact",
3
3
  "scopeName": "source.tsx",
4
- "repository": {
5
- "cast": {
6
- "patterns": [
7
- {
8
- "include": "#jsx"
9
- }
10
- ]
11
- },
12
- "expressionWithoutIdentifiers": {
13
- "patterns": [
14
- {
15
- "include": "#jsx"
16
- }
17
- ]
4
+ "patterns": [
5
+ {
6
+ "include": "#directives"
18
7
  },
19
- "jsx": {
20
- "patterns": [
21
- {
22
- "include": "#jsx-tag-without-attributes-in-expression"
23
- },
24
- {
25
- "include": "#jsx-tag-in-expression"
26
- }
27
- ]
8
+ {
9
+ "include": "#statements"
28
10
  },
29
- "jsx-child-tag": {
30
- "begin": "(?x)\n (?=(\u003c)\\s*\n ([_$a-zA-Z][-$\\w.]*(?\u003c!\\.|-))\n (?=\\s+(?!\\?)|/?\u003e))",
31
- "end": "(/\u003e)|(?:(\u003c/)\\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\\w.]*))(?\u003c!\\.|-))\\s*(\u003e))",
32
- "patterns": [
33
- {
34
- "include": "#jsx-tag"
35
- }
36
- ],
37
- "endCaptures": {
38
- "0": {
39
- "name": "meta.tag.tsx"
40
- },
11
+ {
12
+ "name": "comment.line.shebang.ts",
13
+ "match": "\\A(#!).*(?=$)",
14
+ "captures": {
41
15
  "1": {
42
- "name": "punctuation.definition.tag.end.tsx"
43
- },
44
- "2": {
45
- "name": "punctuation.definition.tag.begin.tsx"
46
- },
47
- "3": {
48
- "name": "entity.name.tag.tsx"
49
- },
50
- "4": {
51
- "name": "support.class.component.tsx"
52
- },
53
- "5": {
54
- "name": "punctuation.definition.tag.end.tsx"
16
+ "name": "punctuation.definition.comment.ts"
55
17
  }
56
18
  }
19
+ }
20
+ ],
21
+ "repository": {
22
+ "access-modifier": {
23
+ "name": "storage.modifier.tsx",
24
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(abstract|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
57
25
  },
58
- "jsx-children": {
59
- "patterns": [
60
- {
61
- "include": "#jsx-tag-without-attributes"
62
- },
63
- {
64
- "include": "#jsx-child-tag"
65
- },
66
- {
67
- "include": "#jsx-evaluated-code"
68
- },
69
- {
70
- "include": "#jsx-entities"
71
- }
72
- ]
73
- },
74
- "jsx-entities": {
75
- "patterns": [
76
- {
77
- "name": "constant.character.entity.tsx",
78
- "match": "(\u0026)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",
79
- "captures": {
80
- "1": {
81
- "name": "punctuation.definition.entity.tsx"
82
- },
83
- "3": {
84
- "name": "punctuation.definition.entity.tsx"
85
- }
86
- }
87
- },
88
- {
89
- "name": "invalid.illegal.bad-ampersand.tsx",
90
- "match": "\u0026"
91
- }
92
- ]
93
- },
94
- "jsx-evaluated-code": {
95
- "name": "meta.embedded.expression.tsx",
96
- "begin": "\\{",
26
+ "after-operator-block-as-object-literal": {
27
+ "name": "meta.objectliteral.tsx",
28
+ "begin": "(?\u003c=[=(,\\[?+!]|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^yield|[^\\._$[:alnum:]]yield|^throw|[^\\._$[:alnum:]]throw|^in|[^\\._$[:alnum:]]in|^of|[^\\._$[:alnum:]]of|^typeof|[^\\._$[:alnum:]]typeof|\u0026\u0026|\\|\\||\\*)\\s*(\\{)",
97
29
  "end": "\\}",
98
30
  "patterns": [
99
31
  {
100
- "include": "#expression"
32
+ "include": "#object-member"
101
33
  }
102
34
  ],
103
35
  "beginCaptures": {
104
- "0": {
105
- "name": "punctuation.section.embedded.begin.tsx"
36
+ "1": {
37
+ "name": "punctuation.definition.block.tsx"
106
38
  }
107
39
  },
108
40
  "endCaptures": {
109
41
  "0": {
110
- "name": "punctuation.section.embedded.end.tsx"
42
+ "name": "punctuation.definition.block.tsx"
111
43
  }
112
44
  }
113
45
  },
114
- "jsx-string-double-quoted": {
115
- "name": "string.quoted.double.tsx",
116
- "begin": "\"",
117
- "end": "\"",
46
+ "array-binding-pattern": {
47
+ "begin": "(?:(\\.\\.\\.)\\s*)?(\\[)",
48
+ "end": "\\]",
118
49
  "patterns": [
119
50
  {
120
- "include": "#jsx-entities"
51
+ "include": "#binding-element"
52
+ },
53
+ {
54
+ "include": "#punctuation-comma"
121
55
  }
122
56
  ],
123
57
  "beginCaptures": {
124
- "0": {
125
- "name": "punctuation.definition.string.begin.tsx"
58
+ "1": {
59
+ "name": "keyword.operator.rest.tsx"
60
+ },
61
+ "2": {
62
+ "name": "punctuation.definition.binding-pattern.array.tsx"
126
63
  }
127
64
  },
128
65
  "endCaptures": {
129
66
  "0": {
130
- "name": "punctuation.definition.string.end.tsx"
67
+ "name": "punctuation.definition.binding-pattern.array.tsx"
131
68
  }
132
69
  }
133
70
  },
134
- "jsx-string-single-quoted": {
135
- "name": "string.quoted.single.tsx",
136
- "begin": "'",
137
- "end": "'",
71
+ "array-literal": {
72
+ "name": "meta.array.literal.tsx",
73
+ "begin": "\\[",
74
+ "end": "\\]",
138
75
  "patterns": [
139
76
  {
140
- "include": "#jsx-entities"
77
+ "include": "#expression"
78
+ },
79
+ {
80
+ "include": "#punctuation-comma"
141
81
  }
142
82
  ],
143
83
  "beginCaptures": {
144
84
  "0": {
145
- "name": "punctuation.definition.string.begin.tsx"
85
+ "name": "meta.brace.square.tsx"
146
86
  }
147
87
  },
148
88
  "endCaptures": {
149
89
  "0": {
150
- "name": "punctuation.definition.string.end.tsx"
90
+ "name": "meta.brace.square.tsx"
151
91
  }
152
92
  }
153
93
  },
154
- "jsx-tag": {
155
- "name": "meta.tag.tsx",
156
- "begin": "(?x)\n (?=(\u003c)\\s*\n ([_$a-zA-Z][-$\\w.]*(?\u003c!\\.|-))\n (?=\\s+(?!\\?)|/?\u003e))",
157
- "end": "(?=(/\u003e)|(?:(\u003c/)\\s*([_$a-zA-Z][-$\\w.]*(?\u003c!\\.|-))\\s*(\u003e)))",
94
+ "arrow-function": {
158
95
  "patterns": [
159
96
  {
160
- "contentName": "meta.tag.attributes.tsx",
161
- "begin": "(?x)\n (\u003c)\\s*\n ((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\\w.]*))(?\u003c!\\.|-))\n (?=\\s+(?!\\?)|/?\u003e)",
162
- "end": "(?=[/]?\u003e)",
97
+ "name": "meta.arrow.tsx",
98
+ "match": "(?:(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(\\basync)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(?==\u003e)",
99
+ "captures": {
100
+ "1": {
101
+ "name": "storage.modifier.async.tsx"
102
+ },
103
+ "2": {
104
+ "name": "variable.parameter.tsx"
105
+ }
106
+ }
107
+ },
108
+ {
109
+ "name": "meta.arrow.tsx",
110
+ "begin": "(?x) (?:\n (?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(\\basync)\n)? ((?\u003c![})!\\]])\\s*\n (?=\n # sure shot arrow functions even if =\u003e is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [\u003c]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=\u003e] # \u003c typeparam extends\n) |\n# arrow function possible to detect only with =\u003e on same line\n(\n (\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c])*\\\u003e)*\u003e\\s*)? # typeparameters\n \\(\\s*([_$[:alpha:]\\{\\[]([^()]|\\((\\s*[^()]*)?\\))*)?\\) # parameteres\n (\\s*:\\s*([^\u003c\u003e\\(\\)]|\\\u003c[^\u003c\u003e]+\\\u003e|\\([^\\(\\)]+\\))+)? # return type\n \\s*=\u003e # arrow operator\n)\n )\n)",
111
+ "end": "(?==\u003e|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
163
112
  "patterns": [
164
113
  {
165
114
  "include": "#comment"
166
115
  },
167
116
  {
168
- "include": "#jsx-tag-attributes"
117
+ "include": "#type-parameters"
169
118
  },
170
119
  {
171
- "include": "#jsx-tag-attributes-illegal"
120
+ "include": "#function-parameters"
121
+ },
122
+ {
123
+ "include": "#arrow-return-type"
172
124
  }
173
125
  ],
174
126
  "beginCaptures": {
175
127
  "1": {
176
- "name": "punctuation.definition.tag.begin.tsx"
177
- },
178
- "2": {
179
- "name": "entity.name.tag.tsx"
180
- },
181
- "3": {
182
- "name": "support.class.component.tsx"
128
+ "name": "storage.modifier.async.tsx"
183
129
  }
184
130
  }
185
131
  },
186
132
  {
187
- "contentName": "meta.jsx.children.tsx",
188
- "begin": "(\u003e)",
189
- "end": "(?=\u003c/)",
133
+ "name": "meta.arrow.tsx",
134
+ "begin": "=\u003e",
135
+ "end": "(?\u003c=\\}|\\S)(?\u003c!=\u003e)|((?!\\{)(?=\\S))",
190
136
  "patterns": [
191
137
  {
192
- "include": "#jsx-children"
138
+ "include": "#decl-block"
139
+ },
140
+ {
141
+ "include": "#expression"
193
142
  }
194
143
  ],
195
144
  "beginCaptures": {
196
- "1": {
197
- "name": "punctuation.definition.tag.end.tsx"
145
+ "0": {
146
+ "name": "storage.type.function.arrow.tsx"
198
147
  }
199
148
  }
200
149
  }
201
150
  ]
202
151
  },
203
- "jsx-tag-attribute-assignment": {
204
- "name": "keyword.operator.assignment.tsx",
205
- "match": "=(?=\\s*(?:'|\"|{|/\\*|//|\\n))"
206
- },
207
- "jsx-tag-attribute-name": {
208
- "match": "(?x)\n \\s*\n ([_$a-zA-Z][-$\\w]*)\n (?=\\s|=|/?\u003e|/\\*|//)",
209
- "captures": {
152
+ "arrow-return-type": {
153
+ "name": "meta.return.type.arrow.tsx",
154
+ "begin": "(?\u003c=\\))\\s*(:)",
155
+ "end": "(?==\u003e|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
156
+ "patterns": [
157
+ {
158
+ "begin": "(?\u003c=[:])(?=\\s*\\{)",
159
+ "end": "(?\u003c=\\})",
160
+ "patterns": [
161
+ {
162
+ "include": "#type-object"
163
+ }
164
+ ]
165
+ },
166
+ {
167
+ "include": "#type-predicate-operator"
168
+ },
169
+ {
170
+ "include": "#type"
171
+ }
172
+ ],
173
+ "beginCaptures": {
210
174
  "1": {
211
- "name": "entity.other.attribute-name.tsx"
175
+ "name": "keyword.operator.type.annotation.tsx"
212
176
  }
213
177
  }
214
178
  },
215
- "jsx-tag-attributes": {
179
+ "binding-element": {
216
180
  "patterns": [
217
181
  {
218
- "include": "#jsx-tag-attribute-name"
182
+ "include": "#comment"
219
183
  },
220
184
  {
221
- "include": "#jsx-tag-attribute-assignment"
185
+ "include": "#object-binding-pattern"
222
186
  },
223
187
  {
224
- "include": "#jsx-string-double-quoted"
188
+ "include": "#array-binding-pattern"
225
189
  },
226
190
  {
227
- "include": "#jsx-string-single-quoted"
191
+ "include": "#destructuring-variable-rest"
228
192
  },
229
193
  {
230
- "include": "#jsx-evaluated-code"
194
+ "include": "#variable-initializer"
231
195
  }
232
196
  ]
233
197
  },
234
- "jsx-tag-attributes-illegal": {
235
- "name": "invalid.illegal.attribute.tsx",
236
- "match": "\\S+"
198
+ "boolean-literal": {
199
+ "patterns": [
200
+ {
201
+ "name": "constant.language.boolean.true.tsx",
202
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
203
+ },
204
+ {
205
+ "name": "constant.language.boolean.false.tsx",
206
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
207
+ }
208
+ ]
237
209
  },
238
- "jsx-tag-in-expression": {
239
- "begin": "(?x)\n (?\u003c=[({\\[,?=\u003e:*]|\u0026\u0026|\\|\\||\\?|{{lookBehindReturn}}|{{lookBehindDefault}}|^)\\s*\n (?!\u003c\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s+[^=\u003e])|,)) # look ahead is not type parameter of arrow\n (?=(\u003c)\\s*\n ([_$a-zA-Z][-$\\w.]*(?\u003c!\\.|-))\n (?=\\s+(?!\\?)|/?\u003e))",
240
- "end": "(/\u003e)|(?:(\u003c/)\\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\\w.]*))(?\u003c!\\.|-))\\s*(\u003e))",
210
+ "brackets": {
241
211
  "patterns": [
242
212
  {
243
- "include": "#jsx-tag"
213
+ "begin": "{",
214
+ "end": "}|(?=\\*/)",
215
+ "patterns": [
216
+ {
217
+ "include": "#brackets"
218
+ }
219
+ ]
220
+ },
221
+ {
222
+ "begin": "\\[",
223
+ "end": "\\]|(?=\\*/)",
224
+ "patterns": [
225
+ {
226
+ "include": "#brackets"
227
+ }
228
+ ]
229
+ }
230
+ ]
231
+ },
232
+ "cast": {
233
+ "patterns": [
234
+ {
235
+ "include": "#jsx"
236
+ }
237
+ ]
238
+ },
239
+ "class-declaration": {
240
+ "name": "meta.class.tsx",
241
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(export)\\s+)?\\b(?:(abstract)\\s+)?\\b(class)\\b(?=\\s+|/[/*])",
242
+ "end": "(?\u003c=\\})",
243
+ "patterns": [
244
+ {
245
+ "include": "#class-declaration-or-expression-patterns"
244
246
  }
245
247
  ],
246
- "endCaptures": {
247
- "0": {
248
- "name": "meta.tag.tsx"
249
- },
248
+ "beginCaptures": {
250
249
  "1": {
251
- "name": "punctuation.definition.tag.end.tsx"
250
+ "name": "keyword.control.export.tsx"
252
251
  },
253
252
  "2": {
254
- "name": "punctuation.definition.tag.begin.tsx"
253
+ "name": "storage.modifier.tsx"
255
254
  },
256
255
  "3": {
257
- "name": "entity.name.tag.tsx"
256
+ "name": "storage.type.class.tsx"
257
+ }
258
+ }
259
+ },
260
+ "class-declaration-or-expression-patterns": {
261
+ "patterns": [
262
+ {
263
+ "include": "#comment"
258
264
  },
259
- "4": {
260
- "name": "support.class.component.tsx"
265
+ {
266
+ "include": "#class-or-interface-heritage"
261
267
  },
262
- "5": {
263
- "name": "punctuation.definition.tag.end.tsx"
268
+ {
269
+ "match": "[_$[:alpha:]][_$[:alnum:]]*",
270
+ "captures": {
271
+ "0": {
272
+ "name": "entity.name.type.class.tsx"
273
+ }
274
+ }
275
+ },
276
+ {
277
+ "include": "#type-parameters"
278
+ },
279
+ {
280
+ "include": "#class-or-interface-body"
264
281
  }
265
- }
282
+ ]
266
283
  },
267
- "jsx-tag-without-attributes": {
268
- "name": "meta.tag.without-attributes.tsx",
269
- "contentName": "meta.jsx.children.tsx",
270
- "begin": "(\u003c)\\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\\w.]*))(?\u003c!\\.|-))?\\s*(\u003e)",
271
- "end": "(\u003c/)\\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\\w.]*))(?\u003c!\\.|-))?\\s*(\u003e)",
284
+ "class-expression": {
285
+ "name": "meta.class.tsx",
286
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(class)\\b(?=\\s+|[\u003c{]|/[/*])",
287
+ "end": "(?\u003c=\\})",
272
288
  "patterns": [
273
289
  {
274
- "include": "#jsx-children"
290
+ "include": "#class-declaration-or-expression-patterns"
275
291
  }
276
292
  ],
277
293
  "beginCaptures": {
278
294
  "1": {
279
- "name": "punctuation.definition.tag.begin.tsx"
295
+ "name": "storage.type.class.tsx"
296
+ }
297
+ }
298
+ },
299
+ "class-or-interface-body": {
300
+ "begin": "\\{",
301
+ "end": "\\}",
302
+ "patterns": [
303
+ {
304
+ "include": "#string"
280
305
  },
281
- "2": {
282
- "name": "entity.name.tag.tsx"
306
+ {
307
+ "include": "#comment"
283
308
  },
284
- "3": {
285
- "name": "support.class.component.tsx"
309
+ {
310
+ "include": "#decorator"
286
311
  },
287
- "4": {
288
- "name": "punctuation.definition.tag.end.tsx"
312
+ {
313
+ "include": "#method-declaration"
314
+ },
315
+ {
316
+ "include": "#indexer-declaration"
317
+ },
318
+ {
319
+ "include": "#field-declaration"
320
+ },
321
+ {
322
+ "include": "#type-annotation"
323
+ },
324
+ {
325
+ "include": "#variable-initializer"
326
+ },
327
+ {
328
+ "include": "#access-modifier"
329
+ },
330
+ {
331
+ "include": "#property-accessor"
332
+ },
333
+ {
334
+ "include": "#after-operator-block-as-object-literal"
335
+ },
336
+ {
337
+ "include": "#decl-block"
338
+ },
339
+ {
340
+ "include": "#expression"
341
+ },
342
+ {
343
+ "include": "#punctuation-comma"
344
+ },
345
+ {
346
+ "include": "#punctuation-semicolon"
347
+ }
348
+ ],
349
+ "beginCaptures": {
350
+ "0": {
351
+ "name": "punctuation.definition.block.tsx"
289
352
  }
290
353
  },
291
354
  "endCaptures": {
355
+ "0": {
356
+ "name": "punctuation.definition.block.tsx"
357
+ }
358
+ }
359
+ },
360
+ "class-or-interface-heritage": {
361
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:\\b(extends|implements)\\b)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
362
+ "end": "(?=\\{)",
363
+ "patterns": [
364
+ {
365
+ "include": "#comment"
366
+ },
367
+ {
368
+ "include": "#class-or-interface-heritage"
369
+ },
370
+ {
371
+ "include": "#type-parameters"
372
+ },
373
+ {
374
+ "include": "#expressionWithoutIdentifiers"
375
+ },
376
+ {
377
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s*\\??\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\s*)",
378
+ "captures": {
379
+ "1": {
380
+ "name": "entity.name.type.module.tsx"
381
+ },
382
+ "2": {
383
+ "name": "punctuation.accessor.tsx"
384
+ },
385
+ "3": {
386
+ "name": "punctuation.accessor.optional.tsx"
387
+ }
388
+ }
389
+ },
390
+ {
391
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)",
392
+ "captures": {
393
+ "1": {
394
+ "name": "entity.other.inherited-class.tsx"
395
+ }
396
+ }
397
+ },
398
+ {
399
+ "include": "#expressionPunctuations"
400
+ }
401
+ ],
402
+ "beginCaptures": {
292
403
  "1": {
293
- "name": "punctuation.definition.tag.begin.tsx"
404
+ "name": "storage.modifier.tsx"
405
+ }
406
+ }
407
+ },
408
+ "comment": {
409
+ "patterns": [
410
+ {
411
+ "name": "comment.block.documentation.tsx",
412
+ "begin": "/\\*\\*(?!/)",
413
+ "end": "\\*/",
414
+ "patterns": [
415
+ {
416
+ "include": "#docblock"
417
+ }
418
+ ],
419
+ "beginCaptures": {
420
+ "0": {
421
+ "name": "punctuation.definition.comment.tsx"
422
+ }
423
+ },
424
+ "endCaptures": {
425
+ "0": {
426
+ "name": "punctuation.definition.comment.tsx"
427
+ }
428
+ }
429
+ },
430
+ {
431
+ "name": "comment.block.tsx",
432
+ "begin": "(/\\*)(?:\\s*((@)internal)(?=\\s|(\\*/)))?",
433
+ "end": "\\*/",
434
+ "beginCaptures": {
435
+ "1": {
436
+ "name": "punctuation.definition.comment.tsx"
437
+ },
438
+ "2": {
439
+ "name": "storage.type.internaldeclaration.tsx"
440
+ },
441
+ "3": {
442
+ "name": "punctuation.decorator.internaldeclaration.tsx"
443
+ }
444
+ },
445
+ "endCaptures": {
446
+ "0": {
447
+ "name": "punctuation.definition.comment.tsx"
448
+ }
449
+ }
450
+ },
451
+ {
452
+ "contentName": "comment.line.double-slash.tsx",
453
+ "begin": "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",
454
+ "end": "(?=^)",
455
+ "beginCaptures": {
456
+ "1": {
457
+ "name": "punctuation.whitespace.comment.leading.tsx"
458
+ },
459
+ "2": {
460
+ "name": "comment.line.double-slash.tsx"
461
+ },
462
+ "3": {
463
+ "name": "punctuation.definition.comment.tsx"
464
+ },
465
+ "4": {
466
+ "name": "storage.type.internaldeclaration.tsx"
467
+ },
468
+ "5": {
469
+ "name": "punctuation.decorator.internaldeclaration.tsx"
470
+ }
471
+ }
472
+ }
473
+ ]
474
+ },
475
+ "control-statement": {
476
+ "patterns": [
477
+ {
478
+ "include": "#switch-statement"
479
+ },
480
+ {
481
+ "include": "#for-loop"
482
+ },
483
+ {
484
+ "name": "keyword.control.trycatch.tsx",
485
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
486
+ },
487
+ {
488
+ "name": "keyword.control.loop.tsx",
489
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
490
+ },
491
+ {
492
+ "name": "keyword.control.flow.tsx",
493
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(return)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
494
+ },
495
+ {
496
+ "name": "keyword.control.switch.tsx",
497
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
498
+ },
499
+ {
500
+ "name": "keyword.control.conditional.tsx",
501
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
502
+ },
503
+ {
504
+ "name": "keyword.control.with.tsx",
505
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(with)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
506
+ },
507
+ {
508
+ "name": "keyword.other.debugger.tsx",
509
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(debugger)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
510
+ },
511
+ {
512
+ "name": "storage.modifier.tsx",
513
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(declare)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
514
+ }
515
+ ]
516
+ },
517
+ "decl-block": {
518
+ "name": "meta.block.tsx",
519
+ "begin": "\\{",
520
+ "end": "\\}",
521
+ "patterns": [
522
+ {
523
+ "include": "#statements"
524
+ }
525
+ ],
526
+ "beginCaptures": {
527
+ "0": {
528
+ "name": "punctuation.definition.block.tsx"
529
+ }
530
+ },
531
+ "endCaptures": {
532
+ "0": {
533
+ "name": "punctuation.definition.block.tsx"
534
+ }
535
+ }
536
+ },
537
+ "declaration": {
538
+ "patterns": [
539
+ {
540
+ "include": "#decorator"
541
+ },
542
+ {
543
+ "include": "#var-expr"
544
+ },
545
+ {
546
+ "include": "#function-declaration"
547
+ },
548
+ {
549
+ "include": "#class-declaration"
550
+ },
551
+ {
552
+ "include": "#interface-declaration"
553
+ },
554
+ {
555
+ "include": "#enum-declaration"
556
+ },
557
+ {
558
+ "include": "#namespace-declaration"
559
+ },
560
+ {
561
+ "include": "#type-alias-declaration"
562
+ },
563
+ {
564
+ "include": "#import-equals-declaration"
565
+ },
566
+ {
567
+ "include": "#import-declaration"
568
+ },
569
+ {
570
+ "include": "#export-declaration"
571
+ }
572
+ ]
573
+ },
574
+ "decorator": {
575
+ "name": "meta.decorator.tsx",
576
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))\\@",
577
+ "end": "(?=\\s)",
578
+ "patterns": [
579
+ {
580
+ "include": "#expression"
581
+ }
582
+ ],
583
+ "beginCaptures": {
584
+ "0": {
585
+ "name": "punctuation.decorator.tsx"
586
+ }
587
+ }
588
+ },
589
+ "destructuring-parameter": {
590
+ "patterns": [
591
+ {
592
+ "name": "meta.parameter.object-binding-pattern.tsx",
593
+ "begin": "(?\u003c!=|:)\\s*(\\{)",
594
+ "end": "\\}",
595
+ "patterns": [
596
+ {
597
+ "include": "#parameter-object-binding-element"
598
+ }
599
+ ],
600
+ "beginCaptures": {
601
+ "1": {
602
+ "name": "punctuation.definition.binding-pattern.object.tsx"
603
+ }
604
+ },
605
+ "endCaptures": {
606
+ "0": {
607
+ "name": "punctuation.definition.binding-pattern.object.tsx"
608
+ }
609
+ }
610
+ },
611
+ {
612
+ "name": "meta.paramter.array-binding-pattern.tsx",
613
+ "begin": "(?\u003c!=|:)\\s*(\\[)",
614
+ "end": "\\]",
615
+ "patterns": [
616
+ {
617
+ "include": "#parameter-binding-element"
618
+ },
619
+ {
620
+ "include": "#punctuation-comma"
621
+ }
622
+ ],
623
+ "beginCaptures": {
624
+ "1": {
625
+ "name": "punctuation.definition.binding-pattern.array.tsx"
626
+ }
627
+ },
628
+ "endCaptures": {
629
+ "0": {
630
+ "name": "punctuation.definition.binding-pattern.array.tsx"
631
+ }
632
+ }
633
+ }
634
+ ]
635
+ },
636
+ "destructuring-parameter-rest": {
637
+ "match": "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
638
+ "captures": {
639
+ "1": {
640
+ "name": "keyword.operator.rest.tsx"
294
641
  },
295
642
  "2": {
296
- "name": "entity.name.tag.tsx"
643
+ "name": "variable.parameter.tsx"
644
+ }
645
+ }
646
+ },
647
+ "destructuring-variable": {
648
+ "patterns": [
649
+ {
650
+ "name": "meta.object-binding-pattern-variable.tsx",
651
+ "begin": "(?\u003c!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",
652
+ "end": "(?=$|^|[;,=}]|(\\s+(of|in)\\s+))",
653
+ "patterns": [
654
+ {
655
+ "include": "#object-binding-pattern"
656
+ },
657
+ {
658
+ "include": "#type-annotation"
659
+ },
660
+ {
661
+ "include": "#comment"
662
+ }
663
+ ]
297
664
  },
298
- "3": {
299
- "name": "support.class.component.tsx"
665
+ {
666
+ "name": "meta.array-binding-pattern-variable.tsx",
667
+ "begin": "(?\u003c!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",
668
+ "end": "(?=$|^|[;,=}]|(\\s+(of|in)\\s+))",
669
+ "patterns": [
670
+ {
671
+ "include": "#array-binding-pattern"
672
+ },
673
+ {
674
+ "include": "#type-annotation"
675
+ },
676
+ {
677
+ "include": "#comment"
678
+ }
679
+ ]
680
+ }
681
+ ]
682
+ },
683
+ "destructuring-variable-rest": {
684
+ "match": "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
685
+ "captures": {
686
+ "1": {
687
+ "name": "keyword.operator.rest.tsx"
300
688
  },
301
- "4": {
302
- "name": "punctuation.definition.tag.end.tsx"
689
+ "2": {
690
+ "name": "meta.definition.variable.tsx variable.other.readwrite.tsx"
303
691
  }
304
692
  }
305
693
  },
306
- "jsx-tag-without-attributes-in-expression": {
307
- "begin": "(?x)\n (?\u003c=[({\\[,?=\u003e:*]|\u0026\u0026|\\|\\||\\?|{{lookBehindReturn}}|{{lookBehindDefault}}|^)\\s*\n (?=(\u003c)\\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\\w.]*))(?\u003c!\\.|-))?\\s*(\u003e))",
308
- "end": "(?!\\s*(\u003c)\\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\\w.]*))(?\u003c!\\.|-))?\\s*(\u003e))",
694
+ "directives": {
695
+ "name": "comment.line.triple-slash.directive.tsx",
696
+ "begin": "^(///)\\s*(?=\u003c(reference|amd-dependency|amd-module)(\\s+(path|types|no-default-lib|name)\\s*=\\s*((\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")))+\\s*/\u003e\\s*$)",
697
+ "end": "(?=^)",
309
698
  "patterns": [
310
699
  {
311
- "include": "#jsx-tag-without-attributes"
700
+ "name": "meta.tag.tsx",
701
+ "begin": "(\u003c)(reference|amd-dependency|amd-module)",
702
+ "end": "/\u003e",
703
+ "patterns": [
704
+ {
705
+ "name": "entity.other.attribute-name.directive.tsx",
706
+ "match": "path|types|no-default-lib|name"
707
+ },
708
+ {
709
+ "name": "keyword.operator.assignment.tsx",
710
+ "match": "="
711
+ },
712
+ {
713
+ "include": "#string"
714
+ }
715
+ ],
716
+ "beginCaptures": {
717
+ "1": {
718
+ "name": "punctuation.definition.tag.directive.tsx"
719
+ },
720
+ "2": {
721
+ "name": "entity.name.tag.directive.tsx"
722
+ }
723
+ },
724
+ "endCaptures": {
725
+ "0": {
726
+ "name": "punctuation.definition.tag.directive.tsx"
727
+ }
728
+ }
729
+ }
730
+ ],
731
+ "beginCaptures": {
732
+ "1": {
733
+ "name": "punctuation.definition.comment.tsx"
734
+ }
735
+ }
736
+ },
737
+ "docblock": {
738
+ "patterns": [
739
+ {
740
+ "match": "(?x)\n((@)(?:access|api))\n\\s+\n(private|protected|public)\n\\b",
741
+ "captures": {
742
+ "1": {
743
+ "name": "storage.type.class.jsdoc"
744
+ },
745
+ "2": {
746
+ "name": "punctuation.definition.block.tag.jsdoc"
747
+ },
748
+ "3": {
749
+ "name": "constant.language.access-type.jsdoc"
750
+ }
751
+ }
752
+ },
753
+ {
754
+ "match": "(?x)\n((@)author)\n\\s+\n(\n [^@\\s\u003c\u003e*/]\n (?:[^@\u003c\u003e*/]|\\*[^/])*\n)\n(?:\n \\s*\n (\u003c)\n ([^\u003e\\s]+)\n (\u003e)\n)?",
755
+ "captures": {
756
+ "1": {
757
+ "name": "storage.type.class.jsdoc"
758
+ },
759
+ "2": {
760
+ "name": "punctuation.definition.block.tag.jsdoc"
761
+ },
762
+ "3": {
763
+ "name": "entity.name.type.instance.jsdoc"
764
+ },
765
+ "4": {
766
+ "name": "punctuation.definition.bracket.angle.begin.jsdoc"
767
+ },
768
+ "5": {
769
+ "name": "constant.other.email.link.underline.jsdoc"
770
+ },
771
+ "6": {
772
+ "name": "punctuation.definition.bracket.angle.end.jsdoc"
773
+ }
774
+ }
775
+ },
776
+ {
777
+ "match": "(?x)\n((@)borrows) \\s+\n((?:[^@\\s*/]|\\*[^/])+) # \u003cthat namepath\u003e\n\\s+ (as) \\s+ # as\n((?:[^@\\s*/]|\\*[^/])+) # \u003cthis namepath\u003e",
778
+ "captures": {
779
+ "1": {
780
+ "name": "storage.type.class.jsdoc"
781
+ },
782
+ "2": {
783
+ "name": "punctuation.definition.block.tag.jsdoc"
784
+ },
785
+ "3": {
786
+ "name": "entity.name.type.instance.jsdoc"
787
+ },
788
+ "4": {
789
+ "name": "keyword.operator.control.jsdoc"
790
+ },
791
+ "5": {
792
+ "name": "entity.name.type.instance.jsdoc"
793
+ }
794
+ }
795
+ },
796
+ {
797
+ "name": "meta.example.jsdoc",
798
+ "begin": "((@)example)\\s+",
799
+ "end": "(?=@|\\*/)",
800
+ "patterns": [
801
+ {
802
+ "match": "^\\s\\*\\s+"
803
+ },
804
+ {
805
+ "contentName": "constant.other.description.jsdoc",
806
+ "begin": "\\G(\u003c)caption(\u003e)",
807
+ "end": "(\u003c/)caption(\u003e)|(?=\\*/)",
808
+ "beginCaptures": {
809
+ "0": {
810
+ "name": "entity.name.tag.inline.jsdoc"
811
+ },
812
+ "1": {
813
+ "name": "punctuation.definition.bracket.angle.begin.jsdoc"
814
+ },
815
+ "2": {
816
+ "name": "punctuation.definition.bracket.angle.end.jsdoc"
817
+ }
818
+ },
819
+ "endCaptures": {
820
+ "0": {
821
+ "name": "entity.name.tag.inline.jsdoc"
822
+ },
823
+ "1": {
824
+ "name": "punctuation.definition.bracket.angle.begin.jsdoc"
825
+ },
826
+ "2": {
827
+ "name": "punctuation.definition.bracket.angle.end.jsdoc"
828
+ }
829
+ }
830
+ },
831
+ {
832
+ "match": "[^\\s@*](?:[^*]|\\*[^/])*",
833
+ "captures": {
834
+ "0": {
835
+ "name": "source.embedded.tsx"
836
+ }
837
+ }
838
+ }
839
+ ],
840
+ "beginCaptures": {
841
+ "1": {
842
+ "name": "storage.type.class.jsdoc"
843
+ },
844
+ "2": {
845
+ "name": "punctuation.definition.block.tag.jsdoc"
846
+ }
847
+ }
848
+ },
849
+ {
850
+ "match": "(?x) ((@)kind) \\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\b",
851
+ "captures": {
852
+ "1": {
853
+ "name": "storage.type.class.jsdoc"
854
+ },
855
+ "2": {
856
+ "name": "punctuation.definition.block.tag.jsdoc"
857
+ },
858
+ "3": {
859
+ "name": "constant.language.symbol-type.jsdoc"
860
+ }
861
+ }
862
+ },
863
+ {
864
+ "match": "(?x)\n((@)see)\n\\s+\n(?:\n # URL\n (\n (?=https?://)\n (?:[^\\s*]|\\*[^/])+\n )\n |\n # JSDoc namepath\n (\n (?!\n # Avoid matching bare URIs (also acceptable as links)\n https?://\n |\n # Avoid matching {@inline tags}; we match those below\n (?:\\[[^\\[\\]]*\\])? # Possible description [preceding]{@tag}\n {@(?:link|linkcode|linkplain|tutorial)\\b\n )\n # Matched namepath\n (?:[^@\\s*/]|\\*[^/])+\n )\n)",
865
+ "captures": {
866
+ "1": {
867
+ "name": "storage.type.class.jsdoc"
868
+ },
869
+ "2": {
870
+ "name": "punctuation.definition.block.tag.jsdoc"
871
+ },
872
+ "3": {
873
+ "name": "variable.other.link.underline.jsdoc"
874
+ },
875
+ "4": {
876
+ "name": "entity.name.type.instance.jsdoc"
877
+ }
878
+ }
879
+ },
880
+ {
881
+ "match": "(?x)\n((@)template)\n\\s+\n# One or more valid identifiers\n(\n [A-Za-z_$] # First character: non-numeric word character\n [\\w$.\\[\\]]* # Rest of identifier\n (?: # Possible list of additional identifiers\n \\s* , \\s*\n [A-Za-z_$]\n [\\w$.\\[\\]]*\n )*\n)",
882
+ "captures": {
883
+ "1": {
884
+ "name": "storage.type.class.jsdoc"
885
+ },
886
+ "2": {
887
+ "name": "punctuation.definition.block.tag.jsdoc"
888
+ },
889
+ "3": {
890
+ "name": "variable.other.jsdoc"
891
+ }
892
+ }
893
+ },
894
+ {
895
+ "match": "(?x)\n(\n (@)\n (?:arg|argument|const|constant|member|namespace|param|var)\n)\n\\s+\n(\n [A-Za-z_$]\n [\\w$.\\[\\]]*\n)",
896
+ "captures": {
897
+ "1": {
898
+ "name": "storage.type.class.jsdoc"
899
+ },
900
+ "2": {
901
+ "name": "punctuation.definition.block.tag.jsdoc"
902
+ },
903
+ "3": {
904
+ "name": "variable.other.jsdoc"
905
+ }
906
+ }
907
+ },
908
+ {
909
+ "begin": "((@)typedef)\\s+(?={)",
910
+ "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
911
+ "patterns": [
912
+ {
913
+ "include": "#jsdoctype"
914
+ },
915
+ {
916
+ "name": "entity.name.type.instance.jsdoc",
917
+ "match": "(?:[^@\\s*/]|\\*[^/])+"
918
+ }
919
+ ],
920
+ "beginCaptures": {
921
+ "1": {
922
+ "name": "storage.type.class.jsdoc"
923
+ },
924
+ "2": {
925
+ "name": "punctuation.definition.block.tag.jsdoc"
926
+ }
927
+ }
928
+ },
929
+ {
930
+ "begin": "((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\s+(?={)",
931
+ "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
932
+ "patterns": [
933
+ {
934
+ "include": "#jsdoctype"
935
+ },
936
+ {
937
+ "name": "variable.other.jsdoc",
938
+ "match": "([A-Za-z_$][\\w$.\\[\\]]*)"
939
+ },
940
+ {
941
+ "name": "variable.other.jsdoc",
942
+ "match": "(?x)\n(\\[)\\s*\n[\\w$]+\n(?:\n (?:\\[\\])? # Foo[ ].bar properties within an array\n \\. # Foo.Bar namespaced parameter\n [\\w$]+\n)*\n(?:\n \\s*\n (=) # [foo=bar] Default parameter value\n \\s*\n (\n # The inner regexes are to stop the match early at */ and to not stop at escaped quotes\n (?\u003e\n \"(?:(?:\\*(?!/))|(?:\\\\(?!\"))|[^*\\\\])*?\" | # [foo=\"bar\"] Double-quoted\n '(?:(?:\\*(?!/))|(?:\\\\(?!'))|[^*\\\\])*?' | # [foo='bar'] Single-quoted\n \\[ (?:(?:\\*(?!/))|[^*])*? \\] | # [foo=[1,2]] Array literal\n (?:(?:\\*(?!/))|\\s(?!\\s*\\])|\\[.*?(?:\\]|(?=\\*/))|[^*\\s\\[\\]])* # Everything else\n )*\n )\n)?\n\\s*(?:(\\])((?:[^*\\s]|\\*[^\\s/])+)?|(?=\\*/))",
943
+ "captures": {
944
+ "1": {
945
+ "name": "punctuation.definition.optional-value.begin.bracket.square.jsdoc"
946
+ },
947
+ "2": {
948
+ "name": "keyword.operator.assignment.jsdoc"
949
+ },
950
+ "3": {
951
+ "name": "source.embedded.tsx"
952
+ },
953
+ "4": {
954
+ "name": "punctuation.definition.optional-value.end.bracket.square.jsdoc"
955
+ },
956
+ "5": {
957
+ "name": "invalid.illegal.syntax.jsdoc"
958
+ }
959
+ }
960
+ }
961
+ ],
962
+ "beginCaptures": {
963
+ "1": {
964
+ "name": "storage.type.class.jsdoc"
965
+ },
966
+ "2": {
967
+ "name": "punctuation.definition.block.tag.jsdoc"
968
+ }
969
+ }
970
+ },
971
+ {
972
+ "begin": "(?x)\n(\n (@)\n (?:define|enum|exception|export|extends|lends|implements|modifies\n |namespace|private|protected|returns?|suppress|this|throws|type\n |yields?)\n)\n\\s+(?={)",
973
+ "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
974
+ "patterns": [
975
+ {
976
+ "include": "#jsdoctype"
977
+ }
978
+ ],
979
+ "beginCaptures": {
980
+ "1": {
981
+ "name": "storage.type.class.jsdoc"
982
+ },
983
+ "2": {
984
+ "name": "punctuation.definition.block.tag.jsdoc"
985
+ }
986
+ }
987
+ },
988
+ {
989
+ "match": "(?x)\n(\n (@)\n (?:alias|augments|callback|constructs|emits|event|fires|exports?\n |extends|external|function|func|host|lends|listens|interface|memberof!?\n |method|module|mixes|mixin|name|requires|see|this|typedef|uses)\n)\n\\s+\n(\n (?:\n [^{}@\\s*] | \\*[^/]\n )+\n)",
990
+ "captures": {
991
+ "1": {
992
+ "name": "storage.type.class.jsdoc"
993
+ },
994
+ "2": {
995
+ "name": "punctuation.definition.block.tag.jsdoc"
996
+ },
997
+ "3": {
998
+ "name": "entity.name.type.instance.jsdoc"
999
+ }
1000
+ }
1001
+ },
1002
+ {
1003
+ "contentName": "variable.other.jsdoc",
1004
+ "begin": "((@)(?:default(?:value)?|license|version))\\s+(([''\"]))",
1005
+ "end": "(\\3)|(?=$|\\*/)",
1006
+ "beginCaptures": {
1007
+ "1": {
1008
+ "name": "storage.type.class.jsdoc"
1009
+ },
1010
+ "2": {
1011
+ "name": "punctuation.definition.block.tag.jsdoc"
1012
+ },
1013
+ "3": {
1014
+ "name": "variable.other.jsdoc"
1015
+ },
1016
+ "4": {
1017
+ "name": "punctuation.definition.string.begin.jsdoc"
1018
+ }
1019
+ },
1020
+ "endCaptures": {
1021
+ "0": {
1022
+ "name": "variable.other.jsdoc"
1023
+ },
1024
+ "1": {
1025
+ "name": "punctuation.definition.string.end.jsdoc"
1026
+ }
1027
+ }
1028
+ },
1029
+ {
1030
+ "match": "((@)(?:default(?:value)?|license|tutorial|variation|version))\\s+([^\\s*]+)",
1031
+ "captures": {
1032
+ "1": {
1033
+ "name": "storage.type.class.jsdoc"
1034
+ },
1035
+ "2": {
1036
+ "name": "punctuation.definition.block.tag.jsdoc"
1037
+ },
1038
+ "3": {
1039
+ "name": "variable.other.jsdoc"
1040
+ }
1041
+ }
1042
+ },
1043
+ {
1044
+ "name": "storage.type.class.jsdoc",
1045
+ "match": "(?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",
1046
+ "captures": {
1047
+ "1": {
1048
+ "name": "punctuation.definition.block.tag.jsdoc"
1049
+ }
1050
+ }
1051
+ },
1052
+ {
1053
+ "include": "#inline-tags"
1054
+ }
1055
+ ]
1056
+ },
1057
+ "enum-declaration": {
1058
+ "name": "meta.enum.declaration.tsx",
1059
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(\\bexport)\\s+)?(?:\\b(const)\\s+)?\\b(enum)\\s+([_$[:alpha:]][_$[:alnum:]]*)",
1060
+ "end": "(?\u003c=\\})",
1061
+ "patterns": [
1062
+ {
1063
+ "include": "#comment"
1064
+ },
1065
+ {
1066
+ "begin": "\\{",
1067
+ "end": "\\}",
1068
+ "patterns": [
1069
+ {
1070
+ "include": "#comment"
1071
+ },
1072
+ {
1073
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)",
1074
+ "end": "(?=,|\\}|$)",
1075
+ "patterns": [
1076
+ {
1077
+ "include": "#comment"
1078
+ },
1079
+ {
1080
+ "include": "#variable-initializer"
1081
+ }
1082
+ ],
1083
+ "beginCaptures": {
1084
+ "0": {
1085
+ "name": "variable.other.enummember.tsx"
1086
+ }
1087
+ }
1088
+ },
1089
+ {
1090
+ "begin": "(?=((\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\])))",
1091
+ "end": "(?=,|\\}|$)",
1092
+ "patterns": [
1093
+ {
1094
+ "include": "#string"
1095
+ },
1096
+ {
1097
+ "include": "#array-literal"
1098
+ },
1099
+ {
1100
+ "include": "#comment"
1101
+ },
1102
+ {
1103
+ "include": "#variable-initializer"
1104
+ }
1105
+ ]
1106
+ },
1107
+ {
1108
+ "include": "#punctuation-comma"
1109
+ }
1110
+ ],
1111
+ "beginCaptures": {
1112
+ "0": {
1113
+ "name": "punctuation.definition.block.tsx"
1114
+ }
1115
+ },
1116
+ "endCaptures": {
1117
+ "0": {
1118
+ "name": "punctuation.definition.block.tsx"
1119
+ }
1120
+ }
1121
+ }
1122
+ ],
1123
+ "beginCaptures": {
1124
+ "1": {
1125
+ "name": "keyword.control.export.tsx"
1126
+ },
1127
+ "2": {
1128
+ "name": "storage.modifier.tsx"
1129
+ },
1130
+ "3": {
1131
+ "name": "storage.type.enum.tsx"
1132
+ },
1133
+ "4": {
1134
+ "name": "entity.name.type.enum.tsx"
1135
+ }
1136
+ }
1137
+ },
1138
+ "export-declaration": {
1139
+ "patterns": [
1140
+ {
1141
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(export)\\s+(as)\\s+(namespace)\\s+([_$[:alpha:]][_$[:alnum:]]*)",
1142
+ "captures": {
1143
+ "1": {
1144
+ "name": "keyword.control.export.tsx"
1145
+ },
1146
+ "2": {
1147
+ "name": "keyword.control.as.tsx"
1148
+ },
1149
+ "3": {
1150
+ "name": "storage.type.namespace.tsx"
1151
+ },
1152
+ "4": {
1153
+ "name": "entity.name.type.module.tsx"
1154
+ }
1155
+ }
1156
+ },
1157
+ {
1158
+ "name": "meta.export.default.tsx",
1159
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(export)(?:(?:\\s*(=))|(?:\\s+(default)(?=\\s+)))",
1160
+ "end": "(?=;|$|\\babstract\\b|\\basync\\b|\\bclass\\b|\\bconst\\b|\\bdeclare\\b|\\benum\\b|\\bexport\\b|\\bfunction\\b|\\bimport\\b|\\binterface\\b|\\blet\\b|\\bmodule\\b|\\bnamespace\\b|\\btype\\b|\\bvar\\b)",
1161
+ "patterns": [
1162
+ {
1163
+ "include": "#expression"
1164
+ }
1165
+ ],
1166
+ "beginCaptures": {
1167
+ "1": {
1168
+ "name": "keyword.control.export.tsx"
1169
+ },
1170
+ "2": {
1171
+ "name": "keyword.operator.assignment.tsx"
1172
+ },
1173
+ "3": {
1174
+ "name": "keyword.control.default.tsx"
1175
+ }
1176
+ }
1177
+ },
1178
+ {
1179
+ "name": "meta.export.tsx",
1180
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(export)(?!\\s*:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
1181
+ "end": "(?=;|$|\\babstract\\b|\\basync\\b|\\bclass\\b|\\bconst\\b|\\bdeclare\\b|\\benum\\b|\\bexport\\b|\\bfunction\\b|\\bimport\\b|\\binterface\\b|\\blet\\b|\\bmodule\\b|\\bnamespace\\b|\\btype\\b|\\bvar\\b)",
1182
+ "patterns": [
1183
+ {
1184
+ "include": "#import-export-declaration"
1185
+ }
1186
+ ],
1187
+ "beginCaptures": {
1188
+ "0": {
1189
+ "name": "keyword.control.export.tsx"
1190
+ }
1191
+ }
1192
+ }
1193
+ ]
1194
+ },
1195
+ "expression": {
1196
+ "patterns": [
1197
+ {
1198
+ "include": "#expressionWithoutIdentifiers"
1199
+ },
1200
+ {
1201
+ "include": "#identifiers"
1202
+ },
1203
+ {
1204
+ "include": "#expressionPunctuations"
1205
+ }
1206
+ ]
1207
+ },
1208
+ "expression-operators": {
1209
+ "patterns": [
1210
+ {
1211
+ "name": "keyword.control.flow.tsx",
1212
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(await)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
1213
+ },
1214
+ {
1215
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s*(\\*))?",
1216
+ "captures": {
1217
+ "1": {
1218
+ "name": "keyword.control.flow.tsx"
1219
+ },
1220
+ "2": {
1221
+ "name": "keyword.generator.asterisk.tsx"
1222
+ }
1223
+ }
1224
+ },
1225
+ {
1226
+ "name": "keyword.operator.expression.delete.tsx",
1227
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))delete(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
1228
+ },
1229
+ {
1230
+ "name": "keyword.operator.expression.in.tsx",
1231
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))in(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
1232
+ },
1233
+ {
1234
+ "name": "keyword.operator.expression.of.tsx",
1235
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))of(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
1236
+ },
1237
+ {
1238
+ "name": "keyword.operator.expression.instanceof.tsx",
1239
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
1240
+ },
1241
+ {
1242
+ "name": "keyword.operator.new.tsx",
1243
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
1244
+ },
1245
+ {
1246
+ "include": "#typeof-operator"
1247
+ },
1248
+ {
1249
+ "name": "keyword.operator.expression.void.tsx",
1250
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))void(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
1251
+ },
1252
+ {
1253
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(as)\\s+",
1254
+ "end": "(?=$|^|[;,:})\\]]|((?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(as)\\s+))",
1255
+ "patterns": [
1256
+ {
1257
+ "include": "#type"
1258
+ }
1259
+ ],
1260
+ "beginCaptures": {
1261
+ "1": {
1262
+ "name": "keyword.control.as.tsx"
1263
+ }
1264
+ }
1265
+ },
1266
+ {
1267
+ "name": "keyword.operator.spread.tsx",
1268
+ "match": "\\.\\.\\."
1269
+ },
1270
+ {
1271
+ "name": "keyword.operator.assignment.compound.tsx",
1272
+ "match": "\\*=|(?\u003c!\\()/=|%=|\\+=|\\-="
1273
+ },
1274
+ {
1275
+ "name": "keyword.operator.assignment.compound.bitwise.tsx",
1276
+ "match": "\\\u0026=|\\^=|\u003c\u003c=|\u003e\u003e=|\u003e\u003e\u003e=|\\|="
1277
+ },
1278
+ {
1279
+ "name": "keyword.operator.bitwise.shift.tsx",
1280
+ "match": "\u003c\u003c|\u003e\u003e\u003e|\u003e\u003e"
1281
+ },
1282
+ {
1283
+ "name": "keyword.operator.comparison.tsx",
1284
+ "match": "===|!==|==|!="
1285
+ },
1286
+ {
1287
+ "name": "keyword.operator.relational.tsx",
1288
+ "match": "\u003c=|\u003e=|\u003c\u003e|\u003c|\u003e"
1289
+ },
1290
+ {
1291
+ "name": "keyword.operator.logical.tsx",
1292
+ "match": "\\!|\u0026\u0026|\\|\\|"
1293
+ },
1294
+ {
1295
+ "name": "keyword.operator.bitwise.tsx",
1296
+ "match": "\\\u0026|~|\\^|\\|"
1297
+ },
1298
+ {
1299
+ "name": "keyword.operator.assignment.tsx",
1300
+ "match": "\\="
1301
+ },
1302
+ {
1303
+ "name": "keyword.operator.decrement.tsx",
1304
+ "match": "--"
1305
+ },
1306
+ {
1307
+ "name": "keyword.operator.increment.tsx",
1308
+ "match": "\\+\\+"
1309
+ },
1310
+ {
1311
+ "name": "keyword.operator.arithmetic.tsx",
1312
+ "match": "%|\\*|/|-|\\+"
1313
+ },
1314
+ {
1315
+ "match": "(?\u003c=[_$[:alnum:])])\\s*(/)(?![/*])",
1316
+ "captures": {
1317
+ "1": {
1318
+ "name": "keyword.operator.arithmetic.tsx"
1319
+ }
1320
+ }
1321
+ }
1322
+ ]
1323
+ },
1324
+ "expressionPunctuations": {
1325
+ "patterns": [
1326
+ {
1327
+ "include": "#punctuation-comma"
1328
+ },
1329
+ {
1330
+ "include": "#punctuation-accessor"
1331
+ }
1332
+ ]
1333
+ },
1334
+ "expressionWithoutIdentifiers": {
1335
+ "patterns": [
1336
+ {
1337
+ "include": "#jsx"
1338
+ },
1339
+ {
1340
+ "include": "#string"
1341
+ },
1342
+ {
1343
+ "include": "#regex"
1344
+ },
1345
+ {
1346
+ "include": "#template"
1347
+ },
1348
+ {
1349
+ "include": "#comment"
1350
+ },
1351
+ {
1352
+ "include": "#function-expression"
1353
+ },
1354
+ {
1355
+ "include": "#class-expression"
1356
+ },
1357
+ {
1358
+ "include": "#arrow-function"
1359
+ },
1360
+ {
1361
+ "include": "#cast"
1362
+ },
1363
+ {
1364
+ "include": "#ternary-expression"
1365
+ },
1366
+ {
1367
+ "include": "#new-expr"
1368
+ },
1369
+ {
1370
+ "include": "#object-literal"
1371
+ },
1372
+ {
1373
+ "include": "#expression-operators"
1374
+ },
1375
+ {
1376
+ "include": "#function-call"
1377
+ },
1378
+ {
1379
+ "include": "#literal"
1380
+ },
1381
+ {
1382
+ "include": "#support-objects"
1383
+ },
1384
+ {
1385
+ "include": "#paren-expression"
1386
+ }
1387
+ ]
1388
+ },
1389
+ "field-declaration": {
1390
+ "name": "meta.field.declaration.tsx",
1391
+ "begin": "(?\u003c!\\()(?:(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(readonly)\\s+)?(?=(([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\?\\s*)?(=|:))",
1392
+ "end": "(?=\\}|;|,|$|(^(?!(([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\?\\s*)?(=|:))))|(?\u003c=\\})",
1393
+ "patterns": [
1394
+ {
1395
+ "include": "#variable-initializer"
1396
+ },
1397
+ {
1398
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\?\\s*)?(=|:))",
1399
+ "end": "(?=[};,=]|$|(^(?!(([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\?\\s*)?(=|:))))|(?\u003c=\\})",
1400
+ "patterns": [
1401
+ {
1402
+ "include": "#type-annotation"
1403
+ },
1404
+ {
1405
+ "include": "#string"
1406
+ },
1407
+ {
1408
+ "include": "#array-literal"
1409
+ },
1410
+ {
1411
+ "include": "#comment"
1412
+ },
1413
+ {
1414
+ "name": "meta.definition.property.tsx entity.name.function.tsx",
1415
+ "match": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=(\\?\\s*)?\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(\u003c*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=\u003e)\n )) |\n ((async\\s*)?(\n # sure shot arrow functions even if =\u003e is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [\u003c]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=\u003e] # \u003c typeparam extends\n) |\n# arrow function possible to detect only with =\u003e on same line\n(\n (\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c])*\\\u003e)*\u003e\\s*)? # typeparameters\n \\(\\s*([_$[:alpha:]\\{\\[]([^()]|\\((\\s*[^()]*)?\\))*)?\\) # parameteres\n (\\s*:\\s*([^\u003c\u003e\\(\\)]|\\\u003c[^\u003c\u003e]+\\\u003e|\\([^\\(\\)]+\\))+)? # return type\n \\s*=\u003e # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: \u003c | () | (... | (param: | (param, | (param? | (param= | (param) =\u003e\n(:\\s*(\n (\u003c) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=\u003e)\n ))\n ))\n)) |\n(:\\s*(=\u003e|(\\([^\\(\\)]*\\))|(\u003c[^\u003c\u003e]*\u003e)|[^\u003c\u003e(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(\u003c*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=\u003e)\n )) |\n ((async\\s*)?(\n # sure shot arrow functions even if =\u003e is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [\u003c]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=\u003e] # \u003c typeparam extends\n) |\n# arrow function possible to detect only with =\u003e on same line\n(\n (\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c])*\\\u003e)*\u003e\\s*)? # typeparameters\n \\(\\s*([_$[:alpha:]\\{\\[]([^()]|\\((\\s*[^()]*)?\\))*)?\\) # parameteres\n (\\s*:\\s*([^\u003c\u003e\\(\\)]|\\\u003c[^\u003c\u003e]+\\\u003e|\\([^\\(\\)]+\\))+)? # return type\n \\s*=\u003e # arrow operator\n)\n ))\n)))"
1416
+ },
1417
+ {
1418
+ "name": "meta.definition.property.tsx variable.object.property.tsx",
1419
+ "match": "[_$[:alpha:]][_$[:alnum:]]*"
1420
+ },
1421
+ {
1422
+ "name": "keyword.operator.optional.tsx",
1423
+ "match": "\\?"
1424
+ }
1425
+ ]
1426
+ }
1427
+ ],
1428
+ "beginCaptures": {
1429
+ "1": {
1430
+ "name": "storage.modifier.tsx"
1431
+ }
1432
+ }
1433
+ },
1434
+ "for-loop": {
1435
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(for)(?:\\s+(await))?\\s*(\\()",
1436
+ "end": "\\)",
1437
+ "patterns": [
1438
+ {
1439
+ "include": "#var-expr"
1440
+ },
1441
+ {
1442
+ "include": "#expression"
1443
+ },
1444
+ {
1445
+ "include": "#punctuation-semicolon"
1446
+ }
1447
+ ],
1448
+ "beginCaptures": {
1449
+ "1": {
1450
+ "name": "keyword.control.loop.tsx"
1451
+ },
1452
+ "2": {
1453
+ "name": "keyword.control.loop.tsx"
1454
+ },
1455
+ "3": {
1456
+ "name": "meta.brace.round.tsx"
1457
+ }
1458
+ },
1459
+ "endCaptures": {
1460
+ "0": {
1461
+ "name": "meta.brace.round.tsx"
1462
+ }
1463
+ }
1464
+ },
1465
+ "function-body": {
1466
+ "patterns": [
1467
+ {
1468
+ "include": "#comment"
1469
+ },
1470
+ {
1471
+ "include": "#type-parameters"
1472
+ },
1473
+ {
1474
+ "include": "#function-parameters"
1475
+ },
1476
+ {
1477
+ "include": "#return-type"
1478
+ },
1479
+ {
1480
+ "include": "#decl-block"
1481
+ }
1482
+ ]
1483
+ },
1484
+ "function-call": {
1485
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?\\.\\s*)?(\u003c\\s*(([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))([^\u003c\u003e\\(]|(\\([^\\(\\)]*\\))|(?\u003c==)\\\u003e|\\\u003c\\s*(([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))([^\u003c\u003e\\(]|(\\([^\\(\\)]*\\))|(?\u003c==)\\\u003e)*(?!=)\\\u003e)*(?!=)\u003e\\s*)?\\()",
1486
+ "end": "(?\u003c=\\))(?!(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?\\.\\s*)?(\u003c\\s*(([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))([^\u003c\u003e\\(]|(\\([^\\(\\)]*\\))|(?\u003c==)\\\u003e|\\\u003c\\s*(([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))([^\u003c\u003e\\(]|(\\([^\\(\\)]*\\))|(?\u003c==)\\\u003e)*(?!=)\\\u003e)*(?!=)\u003e\\s*)?\\()",
1487
+ "patterns": [
1488
+ {
1489
+ "name": "meta.function-call.tsx",
1490
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",
1491
+ "end": "(?=\\s*(\\?\\.\\s*)?(\u003c\\s*(([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))([^\u003c\u003e\\(]|(\\([^\\(\\)]*\\))|(?\u003c==)\\\u003e|\\\u003c\\s*(([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))([^\u003c\u003e\\(]|(\\([^\\(\\)]*\\))|(?\u003c==)\\\u003e)*(?!=)\\\u003e)*(?!=)\u003e\\s*)?\\()",
1492
+ "patterns": [
1493
+ {
1494
+ "include": "#literal"
1495
+ },
1496
+ {
1497
+ "include": "#support-objects"
1498
+ },
1499
+ {
1500
+ "include": "#object-identifiers"
1501
+ },
1502
+ {
1503
+ "include": "#punctuation-accessor"
1504
+ },
1505
+ {
1506
+ "name": "keyword.operator.expression.import.tsx",
1507
+ "match": "(?:(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))import(?=\\s*[\\(]\\s*[\\\"\\'\\`]))"
1508
+ },
1509
+ {
1510
+ "name": "entity.name.function.tsx",
1511
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)"
1512
+ }
1513
+ ]
1514
+ },
1515
+ {
1516
+ "include": "#comment"
1517
+ },
1518
+ {
1519
+ "name": "meta.function-call.tsx punctuation.accessor.optional.tsx",
1520
+ "match": "\\?\\."
1521
+ },
1522
+ {
1523
+ "name": "meta.type.parameters.tsx",
1524
+ "begin": "\\\u003c",
1525
+ "end": "\\\u003e",
1526
+ "patterns": [
1527
+ {
1528
+ "include": "#type"
1529
+ },
1530
+ {
1531
+ "include": "#punctuation-comma"
1532
+ }
1533
+ ],
1534
+ "beginCaptures": {
1535
+ "0": {
1536
+ "name": "punctuation.definition.typeparameters.begin.tsx"
1537
+ }
1538
+ },
1539
+ "endCaptures": {
1540
+ "0": {
1541
+ "name": "punctuation.definition.typeparameters.end.tsx"
1542
+ }
1543
+ }
1544
+ },
1545
+ {
1546
+ "include": "#paren-expression"
1547
+ }
1548
+ ]
1549
+ },
1550
+ "function-declaration": {
1551
+ "name": "meta.function.tsx",
1552
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(export)\\s+)?(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?\u003c=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",
1553
+ "end": "(?=$|^|;)|(?\u003c=\\})",
1554
+ "patterns": [
1555
+ {
1556
+ "include": "#function-body"
1557
+ }
1558
+ ],
1559
+ "beginCaptures": {
1560
+ "1": {
1561
+ "name": "keyword.control.export.tsx"
1562
+ },
1563
+ "2": {
1564
+ "name": "storage.modifier.async.tsx"
1565
+ },
1566
+ "3": {
1567
+ "name": "storage.type.function.tsx"
1568
+ },
1569
+ "4": {
1570
+ "name": "keyword.generator.asterisk.tsx"
1571
+ },
1572
+ "5": {
1573
+ "name": "meta.definition.function.tsx entity.name.function.tsx"
1574
+ }
1575
+ }
1576
+ },
1577
+ "function-expression": {
1578
+ "name": "meta.function.expression.tsx",
1579
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?\u003c=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",
1580
+ "end": "(?\u003c=\\})",
1581
+ "patterns": [
1582
+ {
1583
+ "include": "#function-body"
1584
+ }
1585
+ ],
1586
+ "beginCaptures": {
1587
+ "1": {
1588
+ "name": "storage.modifier.async.tsx"
1589
+ },
1590
+ "2": {
1591
+ "name": "storage.type.function.tsx"
1592
+ },
1593
+ "3": {
1594
+ "name": "keyword.generator.asterisk.tsx"
1595
+ },
1596
+ "4": {
1597
+ "name": "meta.definition.function.tsx entity.name.function.tsx"
1598
+ }
1599
+ }
1600
+ },
1601
+ "function-parameters": {
1602
+ "name": "meta.parameters.tsx",
1603
+ "begin": "\\(",
1604
+ "end": "\\)",
1605
+ "patterns": [
1606
+ {
1607
+ "include": "#comment"
1608
+ },
1609
+ {
1610
+ "include": "#decorator"
1611
+ },
1612
+ {
1613
+ "include": "#destructuring-parameter"
1614
+ },
1615
+ {
1616
+ "include": "#parameter-name"
1617
+ },
1618
+ {
1619
+ "include": "#type-annotation"
1620
+ },
1621
+ {
1622
+ "include": "#variable-initializer"
1623
+ },
1624
+ {
1625
+ "name": "punctuation.separator.parameter.tsx",
1626
+ "match": ","
1627
+ }
1628
+ ],
1629
+ "beginCaptures": {
1630
+ "0": {
1631
+ "name": "punctuation.definition.parameters.begin.tsx"
1632
+ }
1633
+ },
1634
+ "endCaptures": {
1635
+ "0": {
1636
+ "name": "punctuation.definition.parameters.end.tsx"
1637
+ }
1638
+ }
1639
+ },
1640
+ "identifiers": {
1641
+ "patterns": [
1642
+ {
1643
+ "include": "#object-identifiers"
1644
+ },
1645
+ {
1646
+ "match": "(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(\n ((async\\s+)?(\n (function\\s*[(\u003c*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=\u003e)\n )) |\n ((async\\s*)?(\n # sure shot arrow functions even if =\u003e is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [\u003c]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=\u003e] # \u003c typeparam extends\n) |\n# arrow function possible to detect only with =\u003e on same line\n(\n (\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c])*\\\u003e)*\u003e\\s*)? # typeparameters\n \\(\\s*([_$[:alpha:]\\{\\[]([^()]|\\((\\s*[^()]*)?\\))*)?\\) # parameteres\n (\\s*:\\s*([^\u003c\u003e\\(\\)]|\\\u003c[^\u003c\u003e]+\\\u003e|\\([^\\(\\)]+\\))+)? # return type\n \\s*=\u003e # arrow operator\n)\n ))\n))",
1647
+ "captures": {
1648
+ "1": {
1649
+ "name": "punctuation.accessor.tsx"
1650
+ },
1651
+ "2": {
1652
+ "name": "punctuation.accessor.optional.tsx"
1653
+ },
1654
+ "3": {
1655
+ "name": "entity.name.function.tsx"
1656
+ }
1657
+ }
1658
+ },
1659
+ {
1660
+ "match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",
1661
+ "captures": {
1662
+ "1": {
1663
+ "name": "punctuation.accessor.tsx"
1664
+ },
1665
+ "2": {
1666
+ "name": "punctuation.accessor.optional.tsx"
1667
+ },
1668
+ "3": {
1669
+ "name": "variable.other.constant.property.tsx"
1670
+ }
1671
+ }
1672
+ },
1673
+ {
1674
+ "match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*([_$[:alpha:]][_$[:alnum:]]*)",
1675
+ "captures": {
1676
+ "1": {
1677
+ "name": "punctuation.accessor.tsx"
1678
+ },
1679
+ "2": {
1680
+ "name": "punctuation.accessor.optional.tsx"
1681
+ },
1682
+ "3": {
1683
+ "name": "variable.other.property.tsx"
1684
+ }
1685
+ }
1686
+ },
1687
+ {
1688
+ "name": "variable.other.constant.tsx",
1689
+ "match": "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])"
1690
+ },
1691
+ {
1692
+ "name": "variable.other.readwrite.tsx",
1693
+ "match": "[_$[:alpha:]][_$[:alnum:]]*"
1694
+ }
1695
+ ]
1696
+ },
1697
+ "import-declaration": {
1698
+ "name": "meta.import.tsx",
1699
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(\\bexport)\\s+)?\\b(import)(?!\\s*[:\\(])(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
1700
+ "end": "(?=;|$|^)",
1701
+ "patterns": [
1702
+ {
1703
+ "include": "#import-export-declaration"
1704
+ }
1705
+ ],
1706
+ "beginCaptures": {
1707
+ "1": {
1708
+ "name": "keyword.control.export.tsx"
1709
+ },
1710
+ "2": {
1711
+ "name": "keyword.control.import.tsx"
1712
+ }
1713
+ }
1714
+ },
1715
+ "import-equals-declaration": {
1716
+ "patterns": [
1717
+ {
1718
+ "name": "meta.import-equals.external.tsx",
1719
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(\\bexport)\\s+)?\\b(import)\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(require)\\s*(\\()",
1720
+ "end": "\\)",
1721
+ "patterns": [
1722
+ {
1723
+ "include": "#comment"
1724
+ },
1725
+ {
1726
+ "include": "#string"
1727
+ }
1728
+ ],
1729
+ "beginCaptures": {
1730
+ "1": {
1731
+ "name": "keyword.control.export.tsx"
1732
+ },
1733
+ "2": {
1734
+ "name": "keyword.control.import.tsx"
1735
+ },
1736
+ "3": {
1737
+ "name": "variable.other.readwrite.alias.tsx"
1738
+ },
1739
+ "4": {
1740
+ "name": "keyword.operator.assignment.tsx"
1741
+ },
1742
+ "5": {
1743
+ "name": "keyword.control.require.tsx"
1744
+ },
1745
+ "6": {
1746
+ "name": "meta.brace.round.tsx"
1747
+ }
1748
+ },
1749
+ "endCaptures": {
1750
+ "0": {
1751
+ "name": "meta.brace.round.tsx"
1752
+ }
1753
+ }
1754
+ },
1755
+ {
1756
+ "name": "meta.import-equals.internal.tsx",
1757
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(\\bexport)\\s+)?\\b(import)\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(?!require\\b)",
1758
+ "end": "(?=;|$|^)",
1759
+ "patterns": [
1760
+ {
1761
+ "include": "#comment"
1762
+ },
1763
+ {
1764
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
1765
+ "captures": {
1766
+ "1": {
1767
+ "name": "entity.name.type.module.tsx"
1768
+ },
1769
+ "2": {
1770
+ "name": "punctuation.accessor.tsx"
1771
+ },
1772
+ "3": {
1773
+ "name": "punctuation.accessor.optional.tsx"
1774
+ }
1775
+ }
1776
+ },
1777
+ {
1778
+ "name": "variable.other.readwrite.tsx",
1779
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)"
1780
+ }
1781
+ ],
1782
+ "beginCaptures": {
1783
+ "1": {
1784
+ "name": "keyword.control.export.tsx"
1785
+ },
1786
+ "2": {
1787
+ "name": "keyword.control.import.tsx"
1788
+ },
1789
+ "3": {
1790
+ "name": "variable.other.readwrite.alias.tsx"
1791
+ },
1792
+ "4": {
1793
+ "name": "keyword.operator.assignment.tsx"
1794
+ }
1795
+ }
1796
+ }
1797
+ ]
1798
+ },
1799
+ "import-export-block": {
1800
+ "name": "meta.block.tsx",
1801
+ "begin": "\\{",
1802
+ "end": "\\}",
1803
+ "patterns": [
1804
+ {
1805
+ "include": "#import-export-clause"
1806
+ }
1807
+ ],
1808
+ "beginCaptures": {
1809
+ "0": {
1810
+ "name": "punctuation.definition.block.tsx"
1811
+ }
1812
+ },
1813
+ "endCaptures": {
1814
+ "0": {
1815
+ "name": "punctuation.definition.block.tsx"
1816
+ }
1817
+ }
1818
+ },
1819
+ "import-export-clause": {
1820
+ "patterns": [
1821
+ {
1822
+ "include": "#comment"
1823
+ },
1824
+ {
1825
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(\\bdefault)|(\\*)|(\\b[_$[:alpha:]][_$[:alnum:]]*))\\s+(as)\\s+(\\b[_$[:alpha:]][_$[:alnum:]]*)",
1826
+ "captures": {
1827
+ "1": {
1828
+ "name": "keyword.control.default.tsx"
1829
+ },
1830
+ "2": {
1831
+ "name": "constant.language.import-export-all.tsx"
1832
+ },
1833
+ "3": {
1834
+ "name": "variable.other.readwrite.tsx"
1835
+ },
1836
+ "4": {
1837
+ "name": "keyword.control.as.tsx"
1838
+ },
1839
+ "5": {
1840
+ "name": "variable.other.readwrite.alias.tsx"
1841
+ }
1842
+ }
1843
+ },
1844
+ {
1845
+ "include": "#punctuation-comma"
1846
+ },
1847
+ {
1848
+ "name": "constant.language.import-export-all.tsx",
1849
+ "match": "\\*"
1850
+ },
1851
+ {
1852
+ "name": "keyword.control.default.tsx",
1853
+ "match": "\\b(default)\\b"
1854
+ },
1855
+ {
1856
+ "name": "variable.other.readwrite.alias.tsx",
1857
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)"
1858
+ }
1859
+ ]
1860
+ },
1861
+ "import-export-declaration": {
1862
+ "patterns": [
1863
+ {
1864
+ "include": "#comment"
1865
+ },
1866
+ {
1867
+ "include": "#string"
1868
+ },
1869
+ {
1870
+ "include": "#import-export-block"
1871
+ },
1872
+ {
1873
+ "name": "keyword.control.from.tsx",
1874
+ "match": "\\bfrom\\b"
1875
+ },
1876
+ {
1877
+ "include": "#import-export-clause"
1878
+ }
1879
+ ]
1880
+ },
1881
+ "indexer-declaration": {
1882
+ "name": "meta.indexer.declaration.tsx",
1883
+ "begin": "(?:(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(readonly)\\s*)?(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=:)",
1884
+ "end": "(\\])\\s*(\\?\\s*)?|$",
1885
+ "patterns": [
1886
+ {
1887
+ "include": "#type-annotation"
1888
+ }
1889
+ ],
1890
+ "beginCaptures": {
1891
+ "1": {
1892
+ "name": "storage.modifier.tsx"
1893
+ },
1894
+ "2": {
1895
+ "name": "meta.brace.square.tsx"
1896
+ },
1897
+ "3": {
1898
+ "name": "variable.parameter.tsx"
1899
+ }
1900
+ },
1901
+ "endCaptures": {
1902
+ "1": {
1903
+ "name": "meta.brace.square.tsx"
1904
+ },
1905
+ "2": {
1906
+ "name": "keyword.operator.optional.tsx"
1907
+ }
1908
+ }
1909
+ },
1910
+ "indexer-mapped-type-declaration": {
1911
+ "name": "meta.indexer.mappedtype.declaration.tsx",
1912
+ "begin": "(?:(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(readonly)\\s*)?(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s+(in)\\s+",
1913
+ "end": "(\\])\\s*(\\?\\s*)?|$",
1914
+ "patterns": [
1915
+ {
1916
+ "include": "#type"
1917
+ }
1918
+ ],
1919
+ "beginCaptures": {
1920
+ "1": {
1921
+ "name": "storage.modifier.tsx"
1922
+ },
1923
+ "2": {
1924
+ "name": "meta.brace.square.tsx"
1925
+ },
1926
+ "3": {
1927
+ "name": "entity.name.type.tsx"
1928
+ },
1929
+ "4": {
1930
+ "name": "keyword.operator.expression.in.tsx"
1931
+ }
1932
+ },
1933
+ "endCaptures": {
1934
+ "1": {
1935
+ "name": "meta.brace.square.tsx"
1936
+ },
1937
+ "2": {
1938
+ "name": "keyword.operator.optional.tsx"
1939
+ }
1940
+ }
1941
+ },
1942
+ "inline-tags": {
1943
+ "patterns": [
1944
+ {
1945
+ "name": "constant.other.description.jsdoc",
1946
+ "match": "(\\[)[^\\]]+(\\])(?={@(?:link|linkcode|linkplain|tutorial))",
1947
+ "captures": {
1948
+ "1": {
1949
+ "name": "punctuation.definition.bracket.square.begin.jsdoc"
1950
+ },
1951
+ "2": {
1952
+ "name": "punctuation.definition.bracket.square.end.jsdoc"
1953
+ }
1954
+ }
1955
+ },
1956
+ {
1957
+ "name": "entity.name.type.instance.jsdoc",
1958
+ "begin": "({)((@)(?:link(?:code|plain)?|tutorial))\\s*",
1959
+ "end": "}|(?=\\*/)",
1960
+ "patterns": [
1961
+ {
1962
+ "match": "\\G((?=https?://)(?:[^|}\\s*]|\\*[/])+)(\\|)?",
1963
+ "captures": {
1964
+ "1": {
1965
+ "name": "variable.other.link.underline.jsdoc"
1966
+ },
1967
+ "2": {
1968
+ "name": "punctuation.separator.pipe.jsdoc"
1969
+ }
1970
+ }
1971
+ },
1972
+ {
1973
+ "match": "\\G((?:[^{}@\\s|*]|\\*[^/])+)(\\|)?",
1974
+ "captures": {
1975
+ "1": {
1976
+ "name": "variable.other.description.jsdoc"
1977
+ },
1978
+ "2": {
1979
+ "name": "punctuation.separator.pipe.jsdoc"
1980
+ }
1981
+ }
1982
+ }
1983
+ ],
1984
+ "beginCaptures": {
1985
+ "1": {
1986
+ "name": "punctuation.definition.bracket.curly.begin.jsdoc"
1987
+ },
1988
+ "2": {
1989
+ "name": "storage.type.class.jsdoc"
1990
+ },
1991
+ "3": {
1992
+ "name": "punctuation.definition.inline.tag.jsdoc"
1993
+ }
1994
+ },
1995
+ "endCaptures": {
1996
+ "0": {
1997
+ "name": "punctuation.definition.bracket.curly.end.jsdoc"
1998
+ }
1999
+ }
2000
+ }
2001
+ ]
2002
+ },
2003
+ "interface-declaration": {
2004
+ "name": "meta.interface.tsx",
2005
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(export)\\s+)?\\b(?:(abstract)\\s+)?\\b(interface)\\b(?=\\s+|/[/*])",
2006
+ "end": "(?\u003c=\\})",
2007
+ "patterns": [
2008
+ {
2009
+ "include": "#comment"
2010
+ },
2011
+ {
2012
+ "include": "#class-or-interface-heritage"
2013
+ },
2014
+ {
2015
+ "match": "[_$[:alpha:]][_$[:alnum:]]*",
2016
+ "captures": {
2017
+ "0": {
2018
+ "name": "entity.name.type.interface.tsx"
2019
+ }
2020
+ }
2021
+ },
2022
+ {
2023
+ "include": "#type-parameters"
2024
+ },
2025
+ {
2026
+ "include": "#class-or-interface-body"
2027
+ }
2028
+ ],
2029
+ "beginCaptures": {
2030
+ "1": {
2031
+ "name": "keyword.control.export.tsx"
2032
+ },
2033
+ "2": {
2034
+ "name": "storage.modifier.tsx"
2035
+ },
2036
+ "3": {
2037
+ "name": "storage.type.interface.tsx"
2038
+ }
2039
+ }
2040
+ },
2041
+ "jsdoctype": {
2042
+ "patterns": [
2043
+ {
2044
+ "name": "invalid.illegal.type.jsdoc",
2045
+ "match": "\\G{(?:[^}*]|\\*[^/}])+$"
2046
+ },
2047
+ {
2048
+ "contentName": "entity.name.type.instance.jsdoc",
2049
+ "begin": "\\G({)",
2050
+ "end": "((}))\\s*|(?=\\*/)",
2051
+ "patterns": [
2052
+ {
2053
+ "include": "#brackets"
2054
+ }
2055
+ ],
2056
+ "beginCaptures": {
2057
+ "0": {
2058
+ "name": "entity.name.type.instance.jsdoc"
2059
+ },
2060
+ "1": {
2061
+ "name": "punctuation.definition.bracket.curly.begin.jsdoc"
2062
+ }
2063
+ },
2064
+ "endCaptures": {
2065
+ "1": {
2066
+ "name": "entity.name.type.instance.jsdoc"
2067
+ },
2068
+ "2": {
2069
+ "name": "punctuation.definition.bracket.curly.end.jsdoc"
2070
+ }
2071
+ }
2072
+ }
2073
+ ]
2074
+ },
2075
+ "jsx": {
2076
+ "patterns": [
2077
+ {
2078
+ "include": "#jsx-tag-without-attributes-in-expression"
2079
+ },
2080
+ {
2081
+ "include": "#jsx-tag-in-expression"
2082
+ }
2083
+ ]
2084
+ },
2085
+ "jsx-child-tag": {
2086
+ "begin": "(?x)\n (?=(\u003c)\\s*\n ([_$a-zA-Z][-$\\w.]*(?\u003c!\\.|-))\n (?=\\s+(?!\\?)|/?\u003e))",
2087
+ "end": "(/\u003e)|(?:(\u003c/)\\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\\w.]*))(?\u003c!\\.|-))\\s*(\u003e))",
2088
+ "patterns": [
2089
+ {
2090
+ "include": "#jsx-tag"
2091
+ }
2092
+ ],
2093
+ "endCaptures": {
2094
+ "0": {
2095
+ "name": "meta.tag.tsx"
2096
+ },
2097
+ "1": {
2098
+ "name": "punctuation.definition.tag.end.tsx"
2099
+ },
2100
+ "2": {
2101
+ "name": "punctuation.definition.tag.begin.tsx"
2102
+ },
2103
+ "3": {
2104
+ "name": "entity.name.tag.tsx"
2105
+ },
2106
+ "4": {
2107
+ "name": "support.class.component.tsx"
2108
+ },
2109
+ "5": {
2110
+ "name": "punctuation.definition.tag.end.tsx"
2111
+ }
2112
+ }
2113
+ },
2114
+ "jsx-children": {
2115
+ "patterns": [
2116
+ {
2117
+ "include": "#jsx-tag-without-attributes"
2118
+ },
2119
+ {
2120
+ "include": "#jsx-child-tag"
2121
+ },
2122
+ {
2123
+ "include": "#jsx-evaluated-code"
2124
+ },
2125
+ {
2126
+ "include": "#jsx-entities"
2127
+ }
2128
+ ]
2129
+ },
2130
+ "jsx-entities": {
2131
+ "patterns": [
2132
+ {
2133
+ "name": "constant.character.entity.tsx",
2134
+ "match": "(\u0026)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",
2135
+ "captures": {
2136
+ "1": {
2137
+ "name": "punctuation.definition.entity.tsx"
2138
+ },
2139
+ "3": {
2140
+ "name": "punctuation.definition.entity.tsx"
2141
+ }
2142
+ }
2143
+ },
2144
+ {
2145
+ "name": "invalid.illegal.bad-ampersand.tsx",
2146
+ "match": "\u0026"
2147
+ }
2148
+ ]
2149
+ },
2150
+ "jsx-evaluated-code": {
2151
+ "name": "meta.embedded.expression.tsx",
2152
+ "begin": "\\{",
2153
+ "end": "\\}",
2154
+ "patterns": [
2155
+ {
2156
+ "include": "#expression"
2157
+ }
2158
+ ],
2159
+ "beginCaptures": {
2160
+ "0": {
2161
+ "name": "punctuation.section.embedded.begin.tsx"
2162
+ }
2163
+ },
2164
+ "endCaptures": {
2165
+ "0": {
2166
+ "name": "punctuation.section.embedded.end.tsx"
2167
+ }
2168
+ }
2169
+ },
2170
+ "jsx-string-double-quoted": {
2171
+ "name": "string.quoted.double.tsx",
2172
+ "begin": "\"",
2173
+ "end": "\"",
2174
+ "patterns": [
2175
+ {
2176
+ "include": "#jsx-entities"
2177
+ }
2178
+ ],
2179
+ "beginCaptures": {
2180
+ "0": {
2181
+ "name": "punctuation.definition.string.begin.tsx"
2182
+ }
2183
+ },
2184
+ "endCaptures": {
2185
+ "0": {
2186
+ "name": "punctuation.definition.string.end.tsx"
2187
+ }
2188
+ }
2189
+ },
2190
+ "jsx-string-single-quoted": {
2191
+ "name": "string.quoted.single.tsx",
2192
+ "begin": "'",
2193
+ "end": "'",
2194
+ "patterns": [
2195
+ {
2196
+ "include": "#jsx-entities"
2197
+ }
2198
+ ],
2199
+ "beginCaptures": {
2200
+ "0": {
2201
+ "name": "punctuation.definition.string.begin.tsx"
2202
+ }
2203
+ },
2204
+ "endCaptures": {
2205
+ "0": {
2206
+ "name": "punctuation.definition.string.end.tsx"
2207
+ }
2208
+ }
2209
+ },
2210
+ "jsx-tag": {
2211
+ "name": "meta.tag.tsx",
2212
+ "begin": "(?x)\n (?=(\u003c)\\s*\n ([_$a-zA-Z][-$\\w.]*(?\u003c!\\.|-))\n (?=\\s+(?!\\?)|/?\u003e))",
2213
+ "end": "(?=(/\u003e)|(?:(\u003c/)\\s*([_$a-zA-Z][-$\\w.]*(?\u003c!\\.|-))\\s*(\u003e)))",
2214
+ "patterns": [
2215
+ {
2216
+ "contentName": "meta.tag.attributes.tsx",
2217
+ "begin": "(?x)\n (\u003c)\\s*\n ((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\\w.]*))(?\u003c!\\.|-))\n (?=\\s+(?!\\?)|/?\u003e)",
2218
+ "end": "(?=[/]?\u003e)",
2219
+ "patterns": [
2220
+ {
2221
+ "include": "#comment"
2222
+ },
2223
+ {
2224
+ "include": "#jsx-tag-attributes"
2225
+ },
2226
+ {
2227
+ "include": "#jsx-tag-attributes-illegal"
2228
+ }
2229
+ ],
2230
+ "beginCaptures": {
2231
+ "1": {
2232
+ "name": "punctuation.definition.tag.begin.tsx"
2233
+ },
2234
+ "2": {
2235
+ "name": "entity.name.tag.tsx"
2236
+ },
2237
+ "3": {
2238
+ "name": "support.class.component.tsx"
2239
+ }
2240
+ }
2241
+ },
2242
+ {
2243
+ "contentName": "meta.jsx.children.tsx",
2244
+ "begin": "(\u003e)",
2245
+ "end": "(?=\u003c/)",
2246
+ "patterns": [
2247
+ {
2248
+ "include": "#jsx-children"
2249
+ }
2250
+ ],
2251
+ "beginCaptures": {
2252
+ "1": {
2253
+ "name": "punctuation.definition.tag.end.tsx"
2254
+ }
2255
+ }
2256
+ }
2257
+ ]
2258
+ },
2259
+ "jsx-tag-attribute-assignment": {
2260
+ "name": "keyword.operator.assignment.tsx",
2261
+ "match": "=(?=\\s*(?:'|\"|{|/\\*|//|\\n))"
2262
+ },
2263
+ "jsx-tag-attribute-name": {
2264
+ "match": "(?x)\n \\s*\n ([_$a-zA-Z][-$\\w]*)\n (?=\\s|=|/?\u003e|/\\*|//)",
2265
+ "captures": {
2266
+ "1": {
2267
+ "name": "entity.other.attribute-name.tsx"
2268
+ }
2269
+ }
2270
+ },
2271
+ "jsx-tag-attributes": {
2272
+ "patterns": [
2273
+ {
2274
+ "include": "#jsx-tag-attribute-name"
2275
+ },
2276
+ {
2277
+ "include": "#jsx-tag-attribute-assignment"
2278
+ },
2279
+ {
2280
+ "include": "#jsx-string-double-quoted"
2281
+ },
2282
+ {
2283
+ "include": "#jsx-string-single-quoted"
2284
+ },
2285
+ {
2286
+ "include": "#jsx-evaluated-code"
2287
+ }
2288
+ ]
2289
+ },
2290
+ "jsx-tag-attributes-illegal": {
2291
+ "name": "invalid.illegal.attribute.tsx",
2292
+ "match": "\\S+"
2293
+ },
2294
+ "jsx-tag-in-expression": {
2295
+ "begin": "(?x)\n (?\u003c=[({\\[,?=\u003e:*]|\u0026\u0026|\\|\\||\\?|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^)\\s*\n (?!\u003c\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s+[^=\u003e])|,)) # look ahead is not type parameter of arrow\n (?=(\u003c)\\s*\n ([_$a-zA-Z][-$\\w.]*(?\u003c!\\.|-))\n (?=\\s+(?!\\?)|/?\u003e))",
2296
+ "end": "(/\u003e)|(?:(\u003c/)\\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\\w.]*))(?\u003c!\\.|-))\\s*(\u003e))",
2297
+ "patterns": [
2298
+ {
2299
+ "include": "#jsx-tag"
2300
+ }
2301
+ ],
2302
+ "endCaptures": {
2303
+ "0": {
2304
+ "name": "meta.tag.tsx"
2305
+ },
2306
+ "1": {
2307
+ "name": "punctuation.definition.tag.end.tsx"
2308
+ },
2309
+ "2": {
2310
+ "name": "punctuation.definition.tag.begin.tsx"
2311
+ },
2312
+ "3": {
2313
+ "name": "entity.name.tag.tsx"
2314
+ },
2315
+ "4": {
2316
+ "name": "support.class.component.tsx"
2317
+ },
2318
+ "5": {
2319
+ "name": "punctuation.definition.tag.end.tsx"
2320
+ }
2321
+ }
2322
+ },
2323
+ "jsx-tag-without-attributes": {
2324
+ "name": "meta.tag.without-attributes.tsx",
2325
+ "contentName": "meta.jsx.children.tsx",
2326
+ "begin": "(\u003c)\\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\\w.]*))(?\u003c!\\.|-))?\\s*(\u003e)",
2327
+ "end": "(\u003c/)\\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\\w.]*))(?\u003c!\\.|-))?\\s*(\u003e)",
2328
+ "patterns": [
2329
+ {
2330
+ "include": "#jsx-children"
2331
+ }
2332
+ ],
2333
+ "beginCaptures": {
2334
+ "1": {
2335
+ "name": "punctuation.definition.tag.begin.tsx"
2336
+ },
2337
+ "2": {
2338
+ "name": "entity.name.tag.tsx"
2339
+ },
2340
+ "3": {
2341
+ "name": "support.class.component.tsx"
2342
+ },
2343
+ "4": {
2344
+ "name": "punctuation.definition.tag.end.tsx"
2345
+ }
2346
+ },
2347
+ "endCaptures": {
2348
+ "1": {
2349
+ "name": "punctuation.definition.tag.begin.tsx"
2350
+ },
2351
+ "2": {
2352
+ "name": "entity.name.tag.tsx"
2353
+ },
2354
+ "3": {
2355
+ "name": "support.class.component.tsx"
2356
+ },
2357
+ "4": {
2358
+ "name": "punctuation.definition.tag.end.tsx"
2359
+ }
2360
+ }
2361
+ },
2362
+ "jsx-tag-without-attributes-in-expression": {
2363
+ "begin": "(?x)\n (?\u003c=[({\\[,?=\u003e:*]|\u0026\u0026|\\|\\||\\?|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^)\\s*\n (?=(\u003c)\\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\\w.]*))(?\u003c!\\.|-))?\\s*(\u003e))",
2364
+ "end": "(?!\\s*(\u003c)\\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\\w.]*))(?\u003c!\\.|-))?\\s*(\u003e))",
2365
+ "patterns": [
2366
+ {
2367
+ "include": "#jsx-tag-without-attributes"
2368
+ }
2369
+ ]
2370
+ },
2371
+ "literal": {
2372
+ "patterns": [
2373
+ {
2374
+ "include": "#numeric-literal"
2375
+ },
2376
+ {
2377
+ "include": "#boolean-literal"
2378
+ },
2379
+ {
2380
+ "include": "#null-literal"
2381
+ },
2382
+ {
2383
+ "include": "#undefined-literal"
2384
+ },
2385
+ {
2386
+ "include": "#numericConstant-literal"
2387
+ },
2388
+ {
2389
+ "include": "#array-literal"
2390
+ },
2391
+ {
2392
+ "include": "#this-literal"
2393
+ },
2394
+ {
2395
+ "include": "#super-literal"
2396
+ }
2397
+ ]
2398
+ },
2399
+ "method-declaration": {
2400
+ "patterns": [
2401
+ {
2402
+ "name": "meta.method.declaration.tsx",
2403
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)(?:(\\*)\\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*[\\(\\\u003c])",
2404
+ "end": "(?=\\}|;|,|$)|(?\u003c=\\})",
2405
+ "patterns": [
2406
+ {
2407
+ "include": "#method-declaration-name"
2408
+ },
2409
+ {
2410
+ "include": "#function-body"
2411
+ }
2412
+ ],
2413
+ "beginCaptures": {
2414
+ "1": {
2415
+ "name": "storage.modifier.tsx"
2416
+ },
2417
+ "2": {
2418
+ "name": "storage.modifier.tsx"
2419
+ },
2420
+ "3": {
2421
+ "name": "storage.modifier.async.tsx"
2422
+ },
2423
+ "4": {
2424
+ "name": "storage.type.property.tsx"
2425
+ },
2426
+ "5": {
2427
+ "name": "keyword.generator.asterisk.tsx"
2428
+ }
2429
+ }
2430
+ },
2431
+ {
2432
+ "name": "meta.method.declaration.tsx",
2433
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:(?:\\b(?:(new)|(constructor))\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|(?:(\\*)\\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))?\\s*[\\(\\\u003c]))",
2434
+ "end": "(?=\\}|;|,|$)|(?\u003c=\\})",
2435
+ "patterns": [
2436
+ {
2437
+ "include": "#method-declaration-name"
2438
+ },
2439
+ {
2440
+ "include": "#function-body"
2441
+ }
2442
+ ],
2443
+ "beginCaptures": {
2444
+ "1": {
2445
+ "name": "storage.modifier.tsx"
2446
+ },
2447
+ "2": {
2448
+ "name": "storage.modifier.tsx"
2449
+ },
2450
+ "3": {
2451
+ "name": "storage.modifier.async.tsx"
2452
+ },
2453
+ "4": {
2454
+ "name": "keyword.operator.new.tsx"
2455
+ },
2456
+ "5": {
2457
+ "name": "storage.type.tsx"
2458
+ },
2459
+ "6": {
2460
+ "name": "keyword.generator.asterisk.tsx"
2461
+ }
2462
+ }
2463
+ }
2464
+ ]
2465
+ },
2466
+ "method-declaration-name": {
2467
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??)\\s*[\\(\\\u003c])",
2468
+ "end": "(?=\\(|\\\u003c)",
2469
+ "patterns": [
2470
+ {
2471
+ "include": "#string"
2472
+ },
2473
+ {
2474
+ "include": "#array-literal"
2475
+ },
2476
+ {
2477
+ "name": "meta.definition.method.tsx entity.name.function.tsx",
2478
+ "match": "[_$[:alpha:]][_$[:alnum:]]*"
2479
+ },
2480
+ {
2481
+ "name": "keyword.operator.optional.tsx",
2482
+ "match": "\\?"
2483
+ }
2484
+ ]
2485
+ },
2486
+ "namespace-declaration": {
2487
+ "name": "meta.namespace.declaration.tsx",
2488
+ "begin": "(?:(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(\\bexport)\\s+)?\\b(namespace|module)\\s+(?=[_$[:alpha:]\"'`]))",
2489
+ "end": "(?\u003c=\\})|(?=;|\\babstract\\b|\\basync\\b|\\bclass\\b|\\bconst\\b|\\bdeclare\\b|\\benum\\b|\\bexport\\b|\\bfunction\\b|\\bimport\\b|\\binterface\\b|\\blet\\b|\\bmodule\\b|\\bnamespace\\b|\\btype\\b|\\bvar\\b)",
2490
+ "patterns": [
2491
+ {
2492
+ "include": "#comment"
2493
+ },
2494
+ {
2495
+ "include": "#string"
2496
+ },
2497
+ {
2498
+ "name": "entity.name.type.module.tsx",
2499
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)"
2500
+ },
2501
+ {
2502
+ "include": "#punctuation-accessor"
2503
+ },
2504
+ {
2505
+ "include": "#decl-block"
2506
+ }
2507
+ ],
2508
+ "beginCaptures": {
2509
+ "1": {
2510
+ "name": "keyword.control.export.tsx"
2511
+ },
2512
+ "2": {
2513
+ "name": "storage.type.namespace.tsx"
2514
+ }
2515
+ }
2516
+ },
2517
+ "new-expr": {
2518
+ "name": "new.expr.tsx",
2519
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(new)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
2520
+ "end": "(?\u003c=\\))|(?=[;),}\\]]|$|((?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",
2521
+ "patterns": [
2522
+ {
2523
+ "include": "#paren-expression"
2524
+ },
2525
+ {
2526
+ "include": "#class-declaration"
2527
+ },
2528
+ {
2529
+ "include": "#type"
2530
+ }
2531
+ ],
2532
+ "beginCaptures": {
2533
+ "1": {
2534
+ "name": "keyword.operator.new.tsx"
2535
+ }
2536
+ }
2537
+ },
2538
+ "null-literal": {
2539
+ "name": "constant.language.null.tsx",
2540
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))null(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
2541
+ },
2542
+ "numeric-literal": {
2543
+ "patterns": [
2544
+ {
2545
+ "name": "constant.numeric.hex.tsx",
2546
+ "match": "\\b(?\u003c!\\$)0(x|X)[0-9a-fA-F]+\\b(?!\\$)"
2547
+ },
2548
+ {
2549
+ "name": "constant.numeric.binary.tsx",
2550
+ "match": "\\b(?\u003c!\\$)0(b|B)[01]+\\b(?!\\$)"
2551
+ },
2552
+ {
2553
+ "name": "constant.numeric.octal.tsx",
2554
+ "match": "\\b(?\u003c!\\$)0(o|O)?[0-7]+\\b(?!\\$)"
2555
+ },
2556
+ {
2557
+ "match": "(?x)\n(?\u003c!\\$)(?:\n (?:\\b[0-9]+(\\.)[0-9]+[eE][+-]?[0-9]+\\b)| # 1.1E+3\n (?:\\b[0-9]+(\\.)[eE][+-]?[0-9]+\\b)| # 1.E+3\n (?:\\B(\\.)[0-9]+[eE][+-]?[0-9]+\\b)| # .1E+3\n (?:\\b[0-9]+[eE][+-]?[0-9]+\\b)| # 1E+3\n (?:\\b[0-9]+(\\.)[0-9]+\\b)| # 1.1\n (?:\\b[0-9]+(\\.)\\B)| # 1.\n (?:\\B(\\.)[0-9]+\\b)| # .1\n (?:\\b[0-9]+\\b(?!\\.)) # 1\n)(?!\\$)",
2558
+ "captures": {
2559
+ "0": {
2560
+ "name": "constant.numeric.decimal.tsx"
2561
+ },
2562
+ "1": {
2563
+ "name": "meta.delimiter.decimal.period.tsx"
2564
+ },
2565
+ "2": {
2566
+ "name": "meta.delimiter.decimal.period.tsx"
2567
+ },
2568
+ "3": {
2569
+ "name": "meta.delimiter.decimal.period.tsx"
2570
+ },
2571
+ "4": {
2572
+ "name": "meta.delimiter.decimal.period.tsx"
2573
+ },
2574
+ "5": {
2575
+ "name": "meta.delimiter.decimal.period.tsx"
2576
+ },
2577
+ "6": {
2578
+ "name": "meta.delimiter.decimal.period.tsx"
2579
+ }
2580
+ }
2581
+ }
2582
+ ]
2583
+ },
2584
+ "numericConstant-literal": {
2585
+ "patterns": [
2586
+ {
2587
+ "name": "constant.language.nan.tsx",
2588
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))NaN(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
2589
+ },
2590
+ {
2591
+ "name": "constant.language.infinity.tsx",
2592
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))Infinity(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
2593
+ }
2594
+ ]
2595
+ },
2596
+ "object-binding-element": {
2597
+ "patterns": [
2598
+ {
2599
+ "include": "#comment"
2600
+ },
2601
+ {
2602
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
2603
+ "end": "(?=,|\\})",
2604
+ "patterns": [
2605
+ {
2606
+ "include": "#object-binding-element-propertyName"
2607
+ },
2608
+ {
2609
+ "include": "#binding-element"
2610
+ }
2611
+ ]
2612
+ },
2613
+ {
2614
+ "include": "#object-binding-pattern"
2615
+ },
2616
+ {
2617
+ "include": "#destructuring-variable-rest"
2618
+ },
2619
+ {
2620
+ "include": "#variable-initializer"
2621
+ },
2622
+ {
2623
+ "include": "#punctuation-comma"
2624
+ }
2625
+ ]
2626
+ },
2627
+ "object-binding-element-propertyName": {
2628
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
2629
+ "end": "(:)",
2630
+ "patterns": [
2631
+ {
2632
+ "include": "#string"
2633
+ },
2634
+ {
2635
+ "include": "#array-literal"
2636
+ },
2637
+ {
2638
+ "name": "variable.object.property.tsx",
2639
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)"
2640
+ }
2641
+ ],
2642
+ "endCaptures": {
2643
+ "0": {
2644
+ "name": "punctuation.destructuring.tsx"
2645
+ }
2646
+ }
2647
+ },
2648
+ "object-binding-pattern": {
2649
+ "begin": "(?:(\\.\\.\\.)\\s*)?(\\{)",
2650
+ "end": "\\}",
2651
+ "patterns": [
2652
+ {
2653
+ "include": "#object-binding-element"
2654
+ }
2655
+ ],
2656
+ "beginCaptures": {
2657
+ "1": {
2658
+ "name": "keyword.operator.rest.tsx"
2659
+ },
2660
+ "2": {
2661
+ "name": "punctuation.definition.binding-pattern.object.tsx"
2662
+ }
2663
+ },
2664
+ "endCaptures": {
2665
+ "0": {
2666
+ "name": "punctuation.definition.binding-pattern.object.tsx"
2667
+ }
2668
+ }
2669
+ },
2670
+ "object-identifiers": {
2671
+ "patterns": [
2672
+ {
2673
+ "name": "support.class.tsx",
2674
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\\??\\.\\s*prototype\\b(?!\\$))"
2675
+ },
2676
+ {
2677
+ "match": "(?x)(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?:\n ([[:upper:]][_$[:digit:][:upper:]]*) |\n ([_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)",
2678
+ "captures": {
2679
+ "1": {
2680
+ "name": "punctuation.accessor.tsx"
2681
+ },
2682
+ "2": {
2683
+ "name": "punctuation.accessor.optional.tsx"
2684
+ },
2685
+ "3": {
2686
+ "name": "variable.other.constant.object.property.tsx"
2687
+ },
2688
+ "4": {
2689
+ "name": "variable.other.object.property.tsx"
2690
+ }
2691
+ }
2692
+ },
2693
+ {
2694
+ "match": "(?x)(?:\n ([[:upper:]][_$[:digit:][:upper:]]*) |\n ([_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)",
2695
+ "captures": {
2696
+ "1": {
2697
+ "name": "variable.other.constant.object.tsx"
2698
+ },
2699
+ "2": {
2700
+ "name": "variable.other.object.tsx"
2701
+ }
2702
+ }
2703
+ }
2704
+ ]
2705
+ },
2706
+ "object-literal": {
2707
+ "name": "meta.objectliteral.tsx",
2708
+ "begin": "\\{",
2709
+ "end": "\\}",
2710
+ "patterns": [
2711
+ {
2712
+ "include": "#object-member"
2713
+ }
2714
+ ],
2715
+ "beginCaptures": {
2716
+ "0": {
2717
+ "name": "punctuation.definition.block.tsx"
2718
+ }
2719
+ },
2720
+ "endCaptures": {
2721
+ "0": {
2722
+ "name": "punctuation.definition.block.tsx"
2723
+ }
2724
+ }
2725
+ },
2726
+ "object-literal-method-declaration": {
2727
+ "name": "meta.method.declaration.tsx",
2728
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*[\\(\\\u003c])",
2729
+ "end": "(?=\\}|;|,)|(?\u003c=\\})",
2730
+ "patterns": [
2731
+ {
2732
+ "include": "#method-declaration-name"
2733
+ },
2734
+ {
2735
+ "include": "#function-body"
2736
+ },
2737
+ {
2738
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*[\\(\\\u003c])",
2739
+ "end": "(?=\\(|\\\u003c)",
2740
+ "patterns": [
2741
+ {
2742
+ "include": "#method-declaration-name"
2743
+ }
2744
+ ],
2745
+ "beginCaptures": {
2746
+ "1": {
2747
+ "name": "storage.modifier.async.tsx"
2748
+ },
2749
+ "2": {
2750
+ "name": "storage.type.property.tsx"
2751
+ },
2752
+ "3": {
2753
+ "name": "keyword.generator.asterisk.tsx"
2754
+ }
2755
+ }
2756
+ }
2757
+ ],
2758
+ "beginCaptures": {
2759
+ "1": {
2760
+ "name": "storage.modifier.async.tsx"
2761
+ },
2762
+ "2": {
2763
+ "name": "storage.type.property.tsx"
2764
+ },
2765
+ "3": {
2766
+ "name": "keyword.generator.asterisk.tsx"
2767
+ }
2768
+ }
2769
+ },
2770
+ "object-member": {
2771
+ "patterns": [
2772
+ {
2773
+ "include": "#comment"
2774
+ },
2775
+ {
2776
+ "include": "#object-literal-method-declaration"
2777
+ },
2778
+ {
2779
+ "name": "meta.object.member.tsx meta.object-literal.key.tsx",
2780
+ "begin": "(?=\\[)",
2781
+ "end": "(?=:)",
2782
+ "patterns": [
2783
+ {
2784
+ "include": "#array-literal"
2785
+ }
2786
+ ]
2787
+ },
2788
+ {
2789
+ "name": "meta.object.member.tsx meta.object-literal.key.tsx",
2790
+ "begin": "(?=[\\'\\\"])",
2791
+ "end": "(?=:)",
2792
+ "patterns": [
2793
+ {
2794
+ "include": "#string"
2795
+ }
2796
+ ]
2797
+ },
2798
+ {
2799
+ "name": "meta.object.member.tsx",
2800
+ "match": "(?![_$[:alpha:]])([[:digit:]]+)\\s*(?=:)",
2801
+ "captures": {
2802
+ "0": {
2803
+ "name": "meta.object-literal.key.tsx"
2804
+ },
2805
+ "1": {
2806
+ "name": "constant.numeric.decimal.tsx"
2807
+ }
2808
+ }
2809
+ },
2810
+ {
2811
+ "name": "meta.object.member.tsx",
2812
+ "match": "(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=:\\s*(\n ((async\\s+)?(\n (function\\s*[(\u003c*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=\u003e)\n )) |\n ((async\\s*)?(\n # sure shot arrow functions even if =\u003e is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [\u003c]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=\u003e] # \u003c typeparam extends\n) |\n# arrow function possible to detect only with =\u003e on same line\n(\n (\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c])*\\\u003e)*\u003e\\s*)? # typeparameters\n \\(\\s*([_$[:alpha:]\\{\\[]([^()]|\\((\\s*[^()]*)?\\))*)?\\) # parameteres\n (\\s*:\\s*([^\u003c\u003e\\(\\)]|\\\u003c[^\u003c\u003e]+\\\u003e|\\([^\\(\\)]+\\))+)? # return type\n \\s*=\u003e # arrow operator\n)\n ))\n)))",
2813
+ "captures": {
2814
+ "0": {
2815
+ "name": "meta.object-literal.key.tsx"
2816
+ },
2817
+ "1": {
2818
+ "name": "entity.name.function.tsx"
2819
+ }
2820
+ }
2821
+ },
2822
+ {
2823
+ "name": "meta.object.member.tsx",
2824
+ "match": "(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=:)",
2825
+ "captures": {
2826
+ "0": {
2827
+ "name": "meta.object-literal.key.tsx"
2828
+ }
2829
+ }
2830
+ },
2831
+ {
2832
+ "name": "meta.object.member.tsx",
2833
+ "begin": "\\.\\.\\.",
2834
+ "end": "(?=,|\\})",
2835
+ "patterns": [
2836
+ {
2837
+ "include": "#expression"
2838
+ }
2839
+ ],
2840
+ "beginCaptures": {
2841
+ "0": {
2842
+ "name": "keyword.operator.spread.tsx"
2843
+ }
2844
+ }
2845
+ },
2846
+ {
2847
+ "name": "meta.object.member.tsx",
2848
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$)",
2849
+ "captures": {
2850
+ "1": {
2851
+ "name": "variable.other.readwrite.tsx"
2852
+ }
2853
+ }
2854
+ },
2855
+ {
2856
+ "name": "meta.object.member.tsx",
2857
+ "begin": "(?=[_$[:alpha:]][_$[:alnum:]]*\\s*=)",
2858
+ "end": "(?=,|\\}|$)",
2859
+ "patterns": [
2860
+ {
2861
+ "include": "#expression"
2862
+ }
2863
+ ]
2864
+ },
2865
+ {
2866
+ "name": "meta.object.member.tsx",
2867
+ "begin": ":",
2868
+ "end": "(?=,|\\})",
2869
+ "patterns": [
2870
+ {
2871
+ "include": "#expression"
2872
+ }
2873
+ ],
2874
+ "beginCaptures": {
2875
+ "0": {
2876
+ "name": "meta.object-literal.key.tsx punctuation.separator.key-value.tsx"
2877
+ }
2878
+ }
2879
+ },
2880
+ {
2881
+ "include": "#punctuation-comma"
2882
+ }
2883
+ ]
2884
+ },
2885
+ "parameter-array-binding-pattern": {
2886
+ "begin": "(?:(\\.\\.\\.)\\s*)?(\\[)",
2887
+ "end": "\\]",
2888
+ "patterns": [
2889
+ {
2890
+ "include": "#parameter-binding-element"
2891
+ },
2892
+ {
2893
+ "include": "#punctuation-comma"
2894
+ }
2895
+ ],
2896
+ "beginCaptures": {
2897
+ "1": {
2898
+ "name": "keyword.operator.rest.tsx"
2899
+ },
2900
+ "2": {
2901
+ "name": "punctuation.definition.binding-pattern.array.tsx"
2902
+ }
2903
+ },
2904
+ "endCaptures": {
2905
+ "0": {
2906
+ "name": "punctuation.definition.binding-pattern.array.tsx"
2907
+ }
2908
+ }
2909
+ },
2910
+ "parameter-binding-element": {
2911
+ "patterns": [
2912
+ {
2913
+ "include": "#comment"
2914
+ },
2915
+ {
2916
+ "include": "#parameter-object-binding-pattern"
2917
+ },
2918
+ {
2919
+ "include": "#parameter-array-binding-pattern"
2920
+ },
2921
+ {
2922
+ "include": "#destructuring-parameter-rest"
2923
+ },
2924
+ {
2925
+ "include": "#variable-initializer"
2926
+ }
2927
+ ]
2928
+ },
2929
+ "parameter-name": {
2930
+ "patterns": [
2931
+ {
2932
+ "match": "\\s*\\b(public|protected|private|readonly)(?=\\s+(public|protected|private|readonly)\\s+)",
2933
+ "captures": {
2934
+ "1": {
2935
+ "name": "storage.modifier.tsx"
2936
+ }
2937
+ }
2938
+ },
2939
+ {
2940
+ "match": "(?x)(?:\\s*\\b(public|private|protected|readonly)\\s+)?(\\.\\.\\.)?\\s*(?\u003c!=|:)(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(\u003c*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=\u003e)\n )) |\n ((async\\s*)?(\n # sure shot arrow functions even if =\u003e is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [\u003c]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=\u003e] # \u003c typeparam extends\n) |\n# arrow function possible to detect only with =\u003e on same line\n(\n (\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c])*\\\u003e)*\u003e\\s*)? # typeparameters\n \\(\\s*([_$[:alpha:]\\{\\[]([^()]|\\((\\s*[^()]*)?\\))*)?\\) # parameteres\n (\\s*:\\s*([^\u003c\u003e\\(\\)]|\\\u003c[^\u003c\u003e]+\\\u003e|\\([^\\(\\)]+\\))+)? # return type\n \\s*=\u003e # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: \u003c | () | (... | (param: | (param, | (param? | (param= | (param) =\u003e\n(:\\s*(\n (\u003c) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=\u003e)\n ))\n ))\n)) |\n(:\\s*(=\u003e|(\\([^\\(\\)]*\\))|(\u003c[^\u003c\u003e]*\u003e)|[^\u003c\u003e(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(\u003c*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=\u003e)\n )) |\n ((async\\s*)?(\n # sure shot arrow functions even if =\u003e is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [\u003c]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=\u003e] # \u003c typeparam extends\n) |\n# arrow function possible to detect only with =\u003e on same line\n(\n (\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c])*\\\u003e)*\u003e\\s*)? # typeparameters\n \\(\\s*([_$[:alpha:]\\{\\[]([^()]|\\((\\s*[^()]*)?\\))*)?\\) # parameteres\n (\\s*:\\s*([^\u003c\u003e\\(\\)]|\\\u003c[^\u003c\u003e]+\\\u003e|\\([^\\(\\)]+\\))+)? # return type\n \\s*=\u003e # arrow operator\n)\n ))\n)))",
2941
+ "captures": {
2942
+ "1": {
2943
+ "name": "storage.modifier.tsx"
2944
+ },
2945
+ "2": {
2946
+ "name": "keyword.operator.rest.tsx"
2947
+ },
2948
+ "3": {
2949
+ "name": "entity.name.function.tsx variable.language.this.tsx"
2950
+ },
2951
+ "4": {
2952
+ "name": "entity.name.function.tsx"
2953
+ },
2954
+ "5": {
2955
+ "name": "keyword.operator.optional.tsx"
2956
+ }
2957
+ }
2958
+ },
2959
+ {
2960
+ "match": "(?x)(?:\\s*\\b(public|private|protected|readonly)\\s+)?(\\.\\.\\.)?\\s*(?\u003c!=|:)(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)",
2961
+ "captures": {
2962
+ "1": {
2963
+ "name": "storage.modifier.tsx"
2964
+ },
2965
+ "2": {
2966
+ "name": "keyword.operator.rest.tsx"
2967
+ },
2968
+ "3": {
2969
+ "name": "variable.parameter.tsx variable.language.this.tsx"
2970
+ },
2971
+ "4": {
2972
+ "name": "variable.parameter.tsx"
2973
+ },
2974
+ "5": {
2975
+ "name": "keyword.operator.optional.tsx"
2976
+ }
2977
+ }
2978
+ }
2979
+ ]
2980
+ },
2981
+ "parameter-object-binding-element": {
2982
+ "patterns": [
2983
+ {
2984
+ "include": "#comment"
2985
+ },
2986
+ {
2987
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
2988
+ "end": "(?=,|\\})",
2989
+ "patterns": [
2990
+ {
2991
+ "include": "#object-binding-element-propertyName"
2992
+ },
2993
+ {
2994
+ "include": "#parameter-binding-element"
2995
+ }
2996
+ ]
2997
+ },
2998
+ {
2999
+ "include": "#parameter-object-binding-pattern"
3000
+ },
3001
+ {
3002
+ "include": "#destructuring-parameter-rest"
3003
+ },
3004
+ {
3005
+ "include": "#variable-initializer"
3006
+ },
3007
+ {
3008
+ "include": "#punctuation-comma"
3009
+ }
3010
+ ]
3011
+ },
3012
+ "parameter-object-binding-pattern": {
3013
+ "begin": "(?:(\\.\\.\\.)\\s*)?(\\{)",
3014
+ "end": "\\}",
3015
+ "patterns": [
3016
+ {
3017
+ "include": "#parameter-object-binding-element"
3018
+ }
3019
+ ],
3020
+ "beginCaptures": {
3021
+ "1": {
3022
+ "name": "keyword.operator.rest.tsx"
3023
+ },
3024
+ "2": {
3025
+ "name": "punctuation.definition.binding-pattern.object.tsx"
3026
+ }
3027
+ },
3028
+ "endCaptures": {
3029
+ "0": {
3030
+ "name": "punctuation.definition.binding-pattern.object.tsx"
3031
+ }
3032
+ }
3033
+ },
3034
+ "paren-expression": {
3035
+ "begin": "\\(",
3036
+ "end": "\\)",
3037
+ "patterns": [
3038
+ {
3039
+ "include": "#expression"
3040
+ },
3041
+ {
3042
+ "include": "#punctuation-comma"
3043
+ }
3044
+ ],
3045
+ "beginCaptures": {
3046
+ "0": {
3047
+ "name": "meta.brace.round.tsx"
3048
+ }
3049
+ },
3050
+ "endCaptures": {
3051
+ "0": {
3052
+ "name": "meta.brace.round.tsx"
3053
+ }
3054
+ }
3055
+ },
3056
+ "property-accessor": {
3057
+ "name": "storage.type.property.tsx",
3058
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(get|set)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
3059
+ },
3060
+ "punctuation-accessor": {
3061
+ "match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
3062
+ "captures": {
3063
+ "1": {
3064
+ "name": "punctuation.accessor.tsx"
3065
+ },
3066
+ "2": {
3067
+ "name": "punctuation.accessor.optional.tsx"
3068
+ }
3069
+ }
3070
+ },
3071
+ "punctuation-comma": {
3072
+ "name": "punctuation.separator.comma.tsx",
3073
+ "match": ","
3074
+ },
3075
+ "punctuation-semicolon": {
3076
+ "name": "punctuation.terminator.statement.tsx",
3077
+ "match": ";"
3078
+ },
3079
+ "qstring-double": {
3080
+ "name": "string.quoted.double.tsx",
3081
+ "begin": "\"",
3082
+ "end": "(\")|((?:[^\\\\\\n])$)",
3083
+ "patterns": [
3084
+ {
3085
+ "include": "#string-character-escape"
3086
+ }
3087
+ ],
3088
+ "beginCaptures": {
3089
+ "0": {
3090
+ "name": "punctuation.definition.string.begin.tsx"
3091
+ }
3092
+ },
3093
+ "endCaptures": {
3094
+ "1": {
3095
+ "name": "punctuation.definition.string.end.tsx"
3096
+ },
3097
+ "2": {
3098
+ "name": "invalid.illegal.newline.tsx"
3099
+ }
3100
+ }
3101
+ },
3102
+ "qstring-single": {
3103
+ "name": "string.quoted.single.tsx",
3104
+ "begin": "'",
3105
+ "end": "(\\')|((?:[^\\\\\\n])$)",
3106
+ "patterns": [
3107
+ {
3108
+ "include": "#string-character-escape"
3109
+ }
3110
+ ],
3111
+ "beginCaptures": {
3112
+ "0": {
3113
+ "name": "punctuation.definition.string.begin.tsx"
3114
+ }
3115
+ },
3116
+ "endCaptures": {
3117
+ "1": {
3118
+ "name": "punctuation.definition.string.end.tsx"
3119
+ },
3120
+ "2": {
3121
+ "name": "invalid.illegal.newline.tsx"
3122
+ }
3123
+ }
3124
+ },
3125
+ "regex": {
3126
+ "patterns": [
3127
+ {
3128
+ "name": "string.regexp.tsx",
3129
+ "begin": "(?\u003c=[=(:,\\[?+!]|^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case|=\u003e|\u0026\u0026|\\|\\||\\*\\/)\\s*(\\/)(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\])+\\/(?![\\/*])[gimuy]*(?!\\s*[a-zA-Z0-9_$]))",
3130
+ "end": "(/)([gimuy]*)",
3131
+ "patterns": [
3132
+ {
3133
+ "include": "#regexp"
3134
+ }
3135
+ ],
3136
+ "beginCaptures": {
3137
+ "1": {
3138
+ "name": "punctuation.definition.string.begin.tsx"
3139
+ }
3140
+ },
3141
+ "endCaptures": {
3142
+ "1": {
3143
+ "name": "punctuation.definition.string.end.tsx"
3144
+ },
3145
+ "2": {
3146
+ "name": "keyword.other.tsx"
3147
+ }
3148
+ }
3149
+ },
3150
+ {
3151
+ "name": "string.regexp.tsx",
3152
+ "begin": "(?\u003c![_$[:alnum:])])\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\])+\\/(?![\\/*])[gimuy]*(?!\\s*[a-zA-Z0-9_$]))",
3153
+ "end": "(/)([gimuy]*)",
3154
+ "patterns": [
3155
+ {
3156
+ "include": "#regexp"
3157
+ }
3158
+ ],
3159
+ "beginCaptures": {
3160
+ "0": {
3161
+ "name": "punctuation.definition.string.begin.tsx"
3162
+ }
3163
+ },
3164
+ "endCaptures": {
3165
+ "1": {
3166
+ "name": "punctuation.definition.string.end.tsx"
3167
+ },
3168
+ "2": {
3169
+ "name": "keyword.other.tsx"
3170
+ }
3171
+ }
3172
+ }
3173
+ ]
3174
+ },
3175
+ "regex-character-class": {
3176
+ "patterns": [
3177
+ {
3178
+ "name": "constant.other.character-class.regexp",
3179
+ "match": "\\\\[wWsSdDtrnvf]|\\."
3180
+ },
3181
+ {
3182
+ "name": "constant.character.numeric.regexp",
3183
+ "match": "\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})"
3184
+ },
3185
+ {
3186
+ "name": "constant.character.control.regexp",
3187
+ "match": "\\\\c[A-Z]"
3188
+ },
3189
+ {
3190
+ "name": "constant.character.escape.backslash.regexp",
3191
+ "match": "\\\\."
3192
+ }
3193
+ ]
3194
+ },
3195
+ "regexp": {
3196
+ "patterns": [
3197
+ {
3198
+ "name": "keyword.control.anchor.regexp",
3199
+ "match": "\\\\[bB]|\\^|\\$"
3200
+ },
3201
+ {
3202
+ "name": "keyword.other.back-reference.regexp",
3203
+ "match": "\\\\[1-9]\\d*"
3204
+ },
3205
+ {
3206
+ "name": "keyword.operator.quantifier.regexp",
3207
+ "match": "[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??"
3208
+ },
3209
+ {
3210
+ "name": "keyword.operator.or.regexp",
3211
+ "match": "\\|"
3212
+ },
3213
+ {
3214
+ "name": "meta.group.assertion.regexp",
3215
+ "begin": "(\\()((\\?=)|(\\?!))",
3216
+ "end": "(\\))",
3217
+ "patterns": [
3218
+ {
3219
+ "include": "#regexp"
3220
+ }
3221
+ ],
3222
+ "beginCaptures": {
3223
+ "1": {
3224
+ "name": "punctuation.definition.group.regexp"
3225
+ },
3226
+ "2": {
3227
+ "name": "punctuation.definition.group.assertion.regexp"
3228
+ },
3229
+ "3": {
3230
+ "name": "meta.assertion.look-ahead.regexp"
3231
+ },
3232
+ "4": {
3233
+ "name": "meta.assertion.negative-look-ahead.regexp"
3234
+ }
3235
+ },
3236
+ "endCaptures": {
3237
+ "1": {
3238
+ "name": "punctuation.definition.group.regexp"
3239
+ }
3240
+ }
3241
+ },
3242
+ {
3243
+ "name": "meta.group.regexp",
3244
+ "begin": "\\((\\?:)?",
3245
+ "end": "\\)",
3246
+ "patterns": [
3247
+ {
3248
+ "include": "#regexp"
3249
+ }
3250
+ ],
3251
+ "beginCaptures": {
3252
+ "0": {
3253
+ "name": "punctuation.definition.group.regexp"
3254
+ },
3255
+ "1": {
3256
+ "name": "punctuation.definition.group.no-capture.regexp"
3257
+ }
3258
+ },
3259
+ "endCaptures": {
3260
+ "0": {
3261
+ "name": "punctuation.definition.group.regexp"
3262
+ }
3263
+ }
3264
+ },
3265
+ {
3266
+ "name": "constant.other.character-class.set.regexp",
3267
+ "begin": "(\\[)(\\^)?",
3268
+ "end": "(\\])",
3269
+ "patterns": [
3270
+ {
3271
+ "name": "constant.other.character-class.range.regexp",
3272
+ "match": "(?:.|(\\\\(?:[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])|(\\\\.))",
3273
+ "captures": {
3274
+ "1": {
3275
+ "name": "constant.character.numeric.regexp"
3276
+ },
3277
+ "2": {
3278
+ "name": "constant.character.control.regexp"
3279
+ },
3280
+ "3": {
3281
+ "name": "constant.character.escape.backslash.regexp"
3282
+ },
3283
+ "4": {
3284
+ "name": "constant.character.numeric.regexp"
3285
+ },
3286
+ "5": {
3287
+ "name": "constant.character.control.regexp"
3288
+ },
3289
+ "6": {
3290
+ "name": "constant.character.escape.backslash.regexp"
3291
+ }
3292
+ }
3293
+ },
3294
+ {
3295
+ "include": "#regex-character-class"
3296
+ }
3297
+ ],
3298
+ "beginCaptures": {
3299
+ "1": {
3300
+ "name": "punctuation.definition.character-class.regexp"
3301
+ },
3302
+ "2": {
3303
+ "name": "keyword.operator.negation.regexp"
3304
+ }
3305
+ },
3306
+ "endCaptures": {
3307
+ "1": {
3308
+ "name": "punctuation.definition.character-class.regexp"
3309
+ }
3310
+ }
3311
+ },
3312
+ {
3313
+ "include": "#regex-character-class"
3314
+ }
3315
+ ]
3316
+ },
3317
+ "return-type": {
3318
+ "patterns": [
3319
+ {
3320
+ "name": "meta.return.type.tsx",
3321
+ "begin": "(?\u003c=\\))\\s*(:)(?=\\s*\\S)",
3322
+ "end": "(?\u003c![:|\u0026])(?=$|^|[{};,]|//)",
3323
+ "patterns": [
3324
+ {
3325
+ "include": "#return-type-core"
3326
+ }
3327
+ ],
3328
+ "beginCaptures": {
3329
+ "1": {
3330
+ "name": "keyword.operator.type.annotation.tsx"
3331
+ }
3332
+ }
3333
+ },
3334
+ {
3335
+ "name": "meta.return.type.tsx",
3336
+ "begin": "(?\u003c=\\))\\s*(:)",
3337
+ "end": "(?\u003c![:|\u0026])((?=[{};,]|//|^\\s*$)|((?\u003c=\\S)(?=\\s*$)))",
3338
+ "patterns": [
3339
+ {
3340
+ "include": "#return-type-core"
3341
+ }
3342
+ ],
3343
+ "beginCaptures": {
3344
+ "1": {
3345
+ "name": "keyword.operator.type.annotation.tsx"
3346
+ }
3347
+ }
3348
+ }
3349
+ ]
3350
+ },
3351
+ "return-type-core": {
3352
+ "patterns": [
3353
+ {
3354
+ "include": "#comment"
3355
+ },
3356
+ {
3357
+ "begin": "(?\u003c=[:|\u0026])(?=\\s*\\{)",
3358
+ "end": "(?\u003c=\\})",
3359
+ "patterns": [
3360
+ {
3361
+ "include": "#type-object"
3362
+ }
3363
+ ]
3364
+ },
3365
+ {
3366
+ "include": "#type-predicate-operator"
3367
+ },
3368
+ {
3369
+ "include": "#type"
3370
+ }
3371
+ ]
3372
+ },
3373
+ "statements": {
3374
+ "patterns": [
3375
+ {
3376
+ "include": "#string"
3377
+ },
3378
+ {
3379
+ "include": "#template"
3380
+ },
3381
+ {
3382
+ "include": "#comment"
3383
+ },
3384
+ {
3385
+ "include": "#declaration"
3386
+ },
3387
+ {
3388
+ "include": "#control-statement"
3389
+ },
3390
+ {
3391
+ "include": "#after-operator-block-as-object-literal"
3392
+ },
3393
+ {
3394
+ "include": "#decl-block"
3395
+ },
3396
+ {
3397
+ "include": "#expression"
3398
+ },
3399
+ {
3400
+ "include": "#punctuation-semicolon"
3401
+ }
3402
+ ]
3403
+ },
3404
+ "string": {
3405
+ "patterns": [
3406
+ {
3407
+ "include": "#qstring-single"
3408
+ },
3409
+ {
3410
+ "include": "#qstring-double"
3411
+ }
3412
+ ]
3413
+ },
3414
+ "string-character-escape": {
3415
+ "name": "constant.character.escape.tsx",
3416
+ "match": "\\\\(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
3417
+ },
3418
+ "super-literal": {
3419
+ "name": "variable.language.super.tsx",
3420
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))super\\b(?!\\$)"
3421
+ },
3422
+ "support-objects": {
3423
+ "patterns": [
3424
+ {
3425
+ "name": "variable.language.arguments.tsx",
3426
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(arguments)\\b(?!\\$)"
3427
+ },
3428
+ {
3429
+ "name": "support.class.builtin.tsx",
3430
+ "match": "(?x)(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(Array|ArrayBuffer|Atomics|Boolean|DataView|Date|Float32Array|Float64Array|Function|Generator\n |GeneratorFunction|Int8Array|Int16Array|Int32Array|Intl|Map|Number|Object|Promise|Proxy\n |Reflect|RegExp|Set|SharedArrayBuffer|SIMD|String|Symbol|TypedArray\n |Uint8Array|Uint16Array|Uint32Array|Uint8ClampedArray|WeakMap|WeakSet)\\b(?!\\$)"
3431
+ },
3432
+ {
3433
+ "name": "support.class.error.tsx",
3434
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))((Eval|Internal|Range|Reference|Syntax|Type|URI)?Error)\\b(?!\\$)"
3435
+ },
3436
+ {
3437
+ "name": "support.function.tsx",
3438
+ "match": "(?x)(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(clear(Interval|Timeout)|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|escape|eval|\n isFinite|isNaN|parseFloat|parseInt|require|set(Interval|Timeout)|super|unescape|uneval)(?=\\s*\\()"
3439
+ },
3440
+ {
3441
+ "match": "(?x)(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(Math)(?:\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?:\n (abs|acos|acosh|asin|asinh|atan|atan2|atanh|cbrt|ceil|clz32|cos|cosh|exp|\n expm1|floor|fround|hypot|imul|log|log10|log1p|log2|max|min|pow|random|\n round|sign|sin|sinh|sqrt|tan|tanh|trunc)\n |\n (E|LN10|LN2|LOG10E|LOG2E|PI|SQRT1_2|SQRT2)))?\\b(?!\\$)",
3442
+ "captures": {
3443
+ "1": {
3444
+ "name": "support.constant.math.tsx"
3445
+ },
3446
+ "2": {
3447
+ "name": "punctuation.accessor.tsx"
3448
+ },
3449
+ "3": {
3450
+ "name": "punctuation.accessor.optional.tsx"
3451
+ },
3452
+ "4": {
3453
+ "name": "support.function.math.tsx"
3454
+ },
3455
+ "5": {
3456
+ "name": "support.constant.property.math.tsx"
3457
+ }
3458
+ }
3459
+ },
3460
+ {
3461
+ "match": "(?x)(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(console)(?:\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\n assert|clear|count|debug|dir|error|group|groupCollapsed|groupEnd|info|log\n |profile|profileEnd|table|time|timeEnd|timeStamp|trace|warn))?\\b(?!\\$)",
3462
+ "captures": {
3463
+ "1": {
3464
+ "name": "support.class.console.tsx"
3465
+ },
3466
+ "2": {
3467
+ "name": "punctuation.accessor.tsx"
3468
+ },
3469
+ "3": {
3470
+ "name": "punctuation.accessor.optional.tsx"
3471
+ },
3472
+ "4": {
3473
+ "name": "support.function.console.tsx"
3474
+ }
3475
+ }
3476
+ },
3477
+ {
3478
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(JSON)(?:\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(parse|stringify))?\\b(?!\\$)",
3479
+ "captures": {
3480
+ "1": {
3481
+ "name": "support.constant.json.tsx"
3482
+ },
3483
+ "2": {
3484
+ "name": "punctuation.accessor.tsx"
3485
+ },
3486
+ "3": {
3487
+ "name": "punctuation.accessor.optional.tsx"
3488
+ },
3489
+ "4": {
3490
+ "name": "support.function.json.tsx"
3491
+ }
3492
+ }
3493
+ },
3494
+ {
3495
+ "match": "(?x) (?:(\\.)|(\\?\\.(?!\\s*[[:digit:]]))) \\s* (?:\n (constructor|length|prototype|__proto__)\n |\n (EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY))\\b(?!\\$)",
3496
+ "captures": {
3497
+ "1": {
3498
+ "name": "punctuation.accessor.tsx"
3499
+ },
3500
+ "2": {
3501
+ "name": "punctuation.accessor.optional.tsx"
3502
+ },
3503
+ "3": {
3504
+ "name": "support.variable.property.tsx"
3505
+ },
3506
+ "4": {
3507
+ "name": "support.constant.tsx"
3508
+ }
3509
+ }
3510
+ },
3511
+ {
3512
+ "match": "(?x) (?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.)) \\b (?:\n (document|event|navigator|performance|screen|window)\n |\n (AnalyserNode|ArrayBufferView|Attr|AudioBuffer|AudioBufferSourceNode|AudioContext|AudioDestinationNode|AudioListener\n |AudioNode|AudioParam|BatteryManager|BeforeUnloadEvent|BiquadFilterNode|Blob|BufferSource|ByteString|CSS|CSSConditionRule\n |CSSCounterStyleRule|CSSGroupingRule|CSSMatrix|CSSMediaRule|CSSPageRule|CSSPrimitiveValue|CSSRule|CSSRuleList|CSSStyleDeclaration\n |CSSStyleRule|CSSStyleSheet|CSSSupportsRule|CSSValue|CSSValueList|CanvasGradient|CanvasImageSource|CanvasPattern\n |CanvasRenderingContext2D|ChannelMergerNode|ChannelSplitterNode|CharacterData|ChromeWorker|CloseEvent|Comment|CompositionEvent\n |Console|ConvolverNode|Coordinates|Credential|CredentialsContainer|Crypto|CryptoKey|CustomEvent|DOMError|DOMException\n |DOMHighResTimeStamp|DOMImplementation|DOMString|DOMStringList|DOMStringMap|DOMTimeStamp|DOMTokenList|DataTransfer\n |DataTransferItem|DataTransferItemList|DedicatedWorkerGlobalScope|DelayNode|DeviceProximityEvent|DirectoryEntry\n |DirectoryEntrySync|DirectoryReader|DirectoryReaderSync|Document|DocumentFragment|DocumentTouch|DocumentType|DragEvent\n |DynamicsCompressorNode|Element|Entry|EntrySync|ErrorEvent|Event|EventListener|EventSource|EventTarget|FederatedCredential\n |FetchEvent|File|FileEntry|FileEntrySync|FileException|FileList|FileReader|FileReaderSync|FileSystem|FileSystemSync\n |FontFace|FormData|GainNode|Gamepad|GamepadButton|GamepadEvent|Geolocation|GlobalEventHandlers|HTMLAnchorElement\n |HTMLAreaElement|HTMLAudioElement|HTMLBRElement|HTMLBaseElement|HTMLBodyElement|HTMLButtonElement|HTMLCanvasElement\n |HTMLCollection|HTMLContentElement|HTMLDListElement|HTMLDataElement|HTMLDataListElement|HTMLDialogElement|HTMLDivElement\n |HTMLDocument|HTMLElement|HTMLEmbedElement|HTMLFieldSetElement|HTMLFontElement|HTMLFormControlsCollection|HTMLFormElement\n |HTMLHRElement|HTMLHeadElement|HTMLHeadingElement|HTMLHtmlElement|HTMLIFrameElement|HTMLImageElement|HTMLInputElement\n |HTMLKeygenElement|HTMLLIElement|HTMLLabelElement|HTMLLegendElement|HTMLLinkElement|HTMLMapElement|HTMLMediaElement\n |HTMLMetaElement|HTMLMeterElement|HTMLModElement|HTMLOListElement|HTMLObjectElement|HTMLOptGroupElement|HTMLOptionElement\n |HTMLOptionsCollection|HTMLOutputElement|HTMLParagraphElement|HTMLParamElement|HTMLPreElement|HTMLProgressElement\n |HTMLQuoteElement|HTMLScriptElement|HTMLSelectElement|HTMLShadowElement|HTMLSourceElement|HTMLSpanElement|HTMLStyleElement\n |HTMLTableCaptionElement|HTMLTableCellElement|HTMLTableColElement|HTMLTableDataCellElement|HTMLTableElement|HTMLTableHeaderCellElement\n |HTMLTableRowElement|HTMLTableSectionElement|HTMLTextAreaElement|HTMLTimeElement|HTMLTitleElement|HTMLTrackElement\n |HTMLUListElement|HTMLUnknownElement|HTMLVideoElement|HashChangeEvent|History|IDBCursor|IDBCursorWithValue|IDBDatabase\n |IDBEnvironment|IDBFactory|IDBIndex|IDBKeyRange|IDBMutableFile|IDBObjectStore|IDBOpenDBRequest|IDBRequest|IDBTransaction\n |IDBVersionChangeEvent|IIRFilterNode|IdentityManager|ImageBitmap|ImageBitmapFactories|ImageData|Index|InputDeviceCapabilities\n |InputEvent|InstallEvent|InstallTrigger|KeyboardEvent|LinkStyle|LocalFileSystem|LocalFileSystemSync|Location|MIDIAccess\n |MIDIConnectionEvent|MIDIInput|MIDIInputMap|MIDIOutputMap|MediaElementAudioSourceNode|MediaError|MediaKeyMessageEvent\n |MediaKeySession|MediaKeyStatusMap|MediaKeySystemAccess|MediaKeySystemConfiguration|MediaKeys|MediaRecorder|MediaStream\n |MediaStreamAudioDestinationNode|MediaStreamAudioSourceNode|MessageChannel|MessageEvent|MessagePort|MouseEvent\n |MutationObserver|MutationRecord|NamedNodeMap|Navigator|NavigatorConcurrentHardware|NavigatorGeolocation|NavigatorID\n |NavigatorLanguage|NavigatorOnLine|Node|NodeFilter|NodeIterator|NodeList|NonDocumentTypeChildNode|Notification\n |OfflineAudioCompletionEvent|OfflineAudioContext|OscillatorNode|PageTransitionEvent|PannerNode|ParentNode|PasswordCredential\n |Path2D|PaymentAddress|PaymentRequest|PaymentResponse|Performance|PerformanceEntry|PerformanceFrameTiming|PerformanceMark\n |PerformanceMeasure|PerformanceNavigation|PerformanceNavigationTiming|PerformanceObserver|PerformanceObserverEntryList\n |PerformanceResourceTiming|PerformanceTiming|PeriodicSyncEvent|PeriodicWave|Plugin|Point|PointerEvent|PopStateEvent\n |PortCollection|Position|PositionError|PositionOptions|PresentationConnectionClosedEvent|PresentationConnectionList\n |PresentationReceiver|ProcessingInstruction|ProgressEvent|PromiseRejectionEvent|PushEvent|PushRegistrationManager\n |RTCCertificate|RTCConfiguration|RTCPeerConnection|RTCSessionDescriptionCallback|RTCStatsReport|RadioNodeList|RandomSource\n |Range|ReadableByteStream|RenderingContext|SVGAElement|SVGAngle|SVGAnimateColorElement|SVGAnimateElement|SVGAnimateMotionElement\n |SVGAnimateTransformElement|SVGAnimatedAngle|SVGAnimatedBoolean|SVGAnimatedEnumeration|SVGAnimatedInteger|SVGAnimatedLength\n |SVGAnimatedLengthList|SVGAnimatedNumber|SVGAnimatedNumberList|SVGAnimatedPoints|SVGAnimatedPreserveAspectRatio\n |SVGAnimatedRect|SVGAnimatedString|SVGAnimatedTransformList|SVGAnimationElement|SVGCircleElement|SVGClipPathElement\n |SVGCursorElement|SVGDefsElement|SVGDescElement|SVGElement|SVGEllipseElement|SVGEvent|SVGFilterElement|SVGFontElement\n |SVGFontFaceElement|SVGFontFaceFormatElement|SVGFontFaceNameElement|SVGFontFaceSrcElement|SVGFontFaceUriElement\n |SVGForeignObjectElement|SVGGElement|SVGGlyphElement|SVGGradientElement|SVGHKernElement|SVGImageElement|SVGLength\n |SVGLengthList|SVGLineElement|SVGLinearGradientElement|SVGMPathElement|SVGMaskElement|SVGMatrix|SVGMissingGlyphElement\n |SVGNumber|SVGNumberList|SVGPathElement|SVGPatternElement|SVGPoint|SVGPolygonElement|SVGPolylineElement|SVGPreserveAspectRatio\n |SVGRadialGradientElement|SVGRect|SVGRectElement|SVGSVGElement|SVGScriptElement|SVGSetElement|SVGStopElement|SVGStringList\n |SVGStylable|SVGStyleElement|SVGSwitchElement|SVGSymbolElement|SVGTRefElement|SVGTSpanElement|SVGTests|SVGTextElement\n |SVGTextPositioningElement|SVGTitleElement|SVGTransform|SVGTransformList|SVGTransformable|SVGUseElement|SVGVKernElement\n |SVGViewElement|ServiceWorker|ServiceWorkerContainer|ServiceWorkerGlobalScope|ServiceWorkerRegistration|ServiceWorkerState\n |ShadowRoot|SharedWorker|SharedWorkerGlobalScope|SourceBufferList|StereoPannerNode|Storage|StorageEvent|StyleSheet\n |StyleSheetList|SubtleCrypto|SyncEvent|Text|TextMetrics|TimeEvent|TimeRanges|Touch|TouchEvent|TouchList|Transferable\n |TreeWalker|UIEvent|USVString|VRDisplayCapabilities|ValidityState|WaveShaperNode|WebGL|WebGLActiveInfo|WebGLBuffer\n |WebGLContextEvent|WebGLFramebuffer|WebGLProgram|WebGLRenderbuffer|WebGLRenderingContext|WebGLShader|WebGLShaderPrecisionFormat\n |WebGLTexture|WebGLTimerQueryEXT|WebGLTransformFeedback|WebGLUniformLocation|WebGLVertexArrayObject|WebGLVertexArrayObjectOES\n |WebSocket|WebSockets|WebVTT|WheelEvent|Window|WindowBase64|WindowEventHandlers|WindowTimers|Worker|WorkerGlobalScope\n |WorkerLocation|WorkerNavigator|XMLHttpRequest|XMLHttpRequestEventTarget|XMLSerializer|XPathExpression|XPathResult\n |XSLTProcessor))\\b(?!\\$)",
3513
+ "captures": {
3514
+ "1": {
3515
+ "name": "support.variable.dom.tsx"
3516
+ },
3517
+ "2": {
3518
+ "name": "support.class.dom.tsx"
3519
+ }
3520
+ }
3521
+ },
3522
+ {
3523
+ "match": "(?x) (?:(\\.)|(\\?\\.(?!\\s*[[:digit:]]))) \\s* (?:\n (ATTRIBUTE_NODE|CDATA_SECTION_NODE|COMMENT_NODE|DOCUMENT_FRAGMENT_NODE|DOCUMENT_NODE|DOCUMENT_TYPE_NODE\n |DOMSTRING_SIZE_ERR|ELEMENT_NODE|ENTITY_NODE|ENTITY_REFERENCE_NODE|HIERARCHY_REQUEST_ERR|INDEX_SIZE_ERR\n |INUSE_ATTRIBUTE_ERR|INVALID_CHARACTER_ERR|NO_DATA_ALLOWED_ERR|NO_MODIFICATION_ALLOWED_ERR|NOT_FOUND_ERR\n |NOT_SUPPORTED_ERR|NOTATION_NODE|PROCESSING_INSTRUCTION_NODE|TEXT_NODE|WRONG_DOCUMENT_ERR)\n |\n (_content|[xyz]|abbr|above|accept|acceptCharset|accessKey|action|align|[av]Link(?:color)?|all|alt|anchors|appCodeName\n |appCore|applets|appMinorVersion|appName|appVersion|archive|areas|arguments|attributes|availHeight|availLeft|availTop\n |availWidth|axis|background|backgroundColor|backgroundImage|below|bgColor|body|border|borderBottomWidth|borderColor\n |borderLeftWidth|borderRightWidth|borderStyle|borderTopWidth|borderWidth|bottom|bufferDepth|callee|caller|caption\n |cellPadding|cells|cellSpacing|ch|characterSet|charset|checked|childNodes|chOff|cite|classes|className|clear\n |clientInformation|clip|clipBoardData|closed|code|codeBase|codeType|color|colorDepth|cols|colSpan|compact|complete\n |components|content|controllers|cookie|cookieEnabled|cords|cpuClass|crypto|current|data|dateTime|declare|defaultCharset\n |defaultChecked|defaultSelected|defaultStatus|defaultValue|defaultView|defer|description|dialogArguments|dialogHeight\n |dialogLeft|dialogTop|dialogWidth|dir|directories|disabled|display|docmain|doctype|documentElement|elements|embeds\n |enabledPlugin|encoding|enctype|entities|event|expando|external|face|fgColor|filename|firstChild|fontFamily|fontSize\n |fontWeight|form|formName|forms|frame|frameBorder|frameElement|frames|hasFocus|hash|headers|height|history|host\n |hostname|href|hreflang|hspace|htmlFor|httpEquiv|id|ids|ignoreCase|images|implementation|index|innerHeight|innerWidth\n |input|isMap|label|lang|language|lastChild|lastIndex|lastMatch|lastModified|lastParen|layer[sXY]|left|leftContext\n |lineHeight|link|linkColor|links|listStyleType|localName|location|locationbar|longDesc|lowsrc|lowSrc|marginBottom\n |marginHeight|marginLeft|marginRight|marginTop|marginWidth|maxLength|media|menubar|method|mimeTypes|multiline|multiple\n |name|nameProp|namespaces|namespaceURI|next|nextSibling|nodeName|nodeType|nodeValue|noHref|noResize|noShade|notationName\n |notations|noWrap|object|offscreenBuffering|onLine|onreadystatechange|opener|opsProfile|options|oscpu|outerHeight\n |outerWidth|ownerDocument|paddingBottom|paddingLeft|paddingRight|paddingTop|page[XY]|page[XY]Offset|parent|parentLayer\n |parentNode|parentWindow|pathname|personalbar|pixelDepth|pkcs11|platform|plugins|port|prefix|previous|previousDibling\n |product|productSub|profile|profileend|prompt|prompter|protocol|publicId|readOnly|readyState|referrer|rel|responseText\n |responseXML|rev|right|rightContext|rowIndex|rows|rowSpan|rules|scheme|scope|screen[XY]|screenLeft|screenTop|scripts\n |scrollbars|scrolling|sectionRowIndex|security|securityPolicy|selected|selectedIndex|selection|self|shape|siblingAbove\n |siblingBelow|size|source|specified|standby|start|status|statusbar|statusText|style|styleSheets|suffixes|summary\n |systemId|systemLanguage|tagName|tags|target|tBodies|text|textAlign|textDecoration|textIndent|textTransform|tFoot|tHead\n |title|toolbar|top|type|undefined|uniqueID|updateInterval|URL|URLUnencoded|useMap|userAgent|userLanguage|userProfile\n |vAlign|value|valueType|vendor|vendorSub|version|visibility|vspace|whiteSpace|width|X[MS]LDocument|zIndex))\\b(?!\\$|\\s*(\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c])*\\\u003e)*\u003e\\s*)?\\()",
3524
+ "captures": {
3525
+ "1": {
3526
+ "name": "punctuation.accessor.tsx"
3527
+ },
3528
+ "2": {
3529
+ "name": "punctuation.accessor.optional.tsx"
3530
+ },
3531
+ "3": {
3532
+ "name": "support.constant.dom.tsx"
3533
+ },
3534
+ "4": {
3535
+ "name": "support.variable.property.dom.tsx"
3536
+ }
3537
+ }
3538
+ },
3539
+ {
3540
+ "name": "support.class.node.tsx",
3541
+ "match": "(?x)(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(Buffer|EventEmitter|Server|Pipe|Socket|REPLServer|ReadStream|WriteStream|Stream\n |Inflate|Deflate|InflateRaw|DeflateRaw|GZip|GUnzip|Unzip|Zip)\\b(?!\\$)"
3542
+ },
3543
+ {
3544
+ "match": "(?x)(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(process)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(?:\n (arch|argv|config|connected|env|execArgv|execPath|exitCode|mainModule|pid|platform|release|stderr|stdin|stdout|title|version|versions)\n |\n (abort|chdir|cwd|disconnect|exit|[sg]ete?[gu]id|send|[sg]etgroups|initgroups|kill|memoryUsage|nextTick|umask|uptime|hrtime)\n))?\\b(?!\\$)",
3545
+ "captures": {
3546
+ "1": {
3547
+ "name": "support.variable.object.process.tsx"
3548
+ },
3549
+ "2": {
3550
+ "name": "punctuation.accessor.tsx"
3551
+ },
3552
+ "3": {
3553
+ "name": "punctuation.accessor.optional.tsx"
3554
+ },
3555
+ "4": {
3556
+ "name": "support.variable.property.process.tsx"
3557
+ },
3558
+ "5": {
3559
+ "name": "support.function.process.tsx"
3560
+ }
3561
+ }
3562
+ },
3563
+ {
3564
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(exports)|(module)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\\b(?!\\$)",
3565
+ "captures": {
3566
+ "1": {
3567
+ "name": "support.type.object.module.tsx"
3568
+ },
3569
+ "2": {
3570
+ "name": "support.type.object.module.tsx"
3571
+ },
3572
+ "3": {
3573
+ "name": "punctuation.accessor.tsx"
3574
+ },
3575
+ "4": {
3576
+ "name": "punctuation.accessor.optional.tsx"
3577
+ },
3578
+ "5": {
3579
+ "name": "support.type.object.module.tsx"
3580
+ }
3581
+ }
3582
+ },
3583
+ {
3584
+ "name": "support.variable.object.node.tsx",
3585
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(global|GLOBAL|root|__dirname|__filename)\\b(?!\\$)"
3586
+ },
3587
+ {
3588
+ "match": "(?x) (?:(\\.)|(\\?\\.(?!\\s*[[:digit:]]))) \\s*\n(?:\n (on(?:Rowsinserted|Rowsdelete|Rowenter|Rowexit|Resize|Resizestart|Resizeend|Reset|\n Readystatechange|Mouseout|Mouseover|Mousedown|Mouseup|Mousemove|\n Before(?:cut|deactivate|unload|update|paste|print|editfocus|activate)|\n Blur|Scrolltop|Submit|Select|Selectstart|Selectionchange|Hover|Help|\n Change|Contextmenu|Controlselect|Cut|Cellchange|Clock|Close|Deactivate|\n Datasetchanged|Datasetcomplete|Dataavailable|Drop|Drag|Dragstart|Dragover|\n Dragdrop|Dragenter|Dragend|Dragleave|Dblclick|Unload|Paste|Propertychange|Error|\n Errorupdate|Keydown|Keyup|Keypress|Focus|Load|Activate|Afterupdate|Afterprint|Abort)\n ) |\n (shift|showModelessDialog|showModalDialog|showHelp|scroll|scrollX|scrollByPages|\n scrollByLines|scrollY|scrollTo|stop|strike|sizeToContent|sidebar|signText|sort|\n sup|sub|substr|substring|splice|split|send|set(?:Milliseconds|Seconds|Minutes|Hours|\n Month|Year|FullYear|Date|UTC(?:Milliseconds|Seconds|Minutes|Hours|Month|FullYear|Date)|\n Time|Hotkeys|Cursor|ZOptions|Active|Resizable|RequestHeader)|search|slice|\n savePreferences|small|home|handleEvent|navigate|char|charCodeAt|charAt|concat|\n contextual|confirm|compile|clear|captureEvents|call|createStyleSheet|createPopup|\n createEventObject|to(?:GMTString|UTCString|String|Source|UpperCase|LowerCase|LocaleString)|\n test|taint|taintEnabled|indexOf|italics|disableExternalCapture|dump|detachEvent|unshift|\n untaint|unwatch|updateCommands|join|javaEnabled|pop|push|plugins.refresh|paddings|parse|\n print|prompt|preference|enableExternalCapture|exec|execScript|valueOf|UTC|find|file|\n fileModifiedDate|fileSize|fileCreatedDate|fileUpdatedDate|fixed|fontsize|fontcolor|\n forward|fromCharCode|watch|link|load|lastIndexOf|anchor|attachEvent|atob|apply|alert|\n abort|routeEvents|resize|resizeBy|resizeTo|recalc|returnValue|replace|reverse|reload|\n releaseCapture|releaseEvents|go|get(?:Milliseconds|Seconds|Minutes|Hours|Month|Day|Year|FullYear|\n Time|Date|TimezoneOffset|UTC(?:Milliseconds|Seconds|Minutes|Hours|Day|Month|FullYear|Date)|\n Attention|Selection|ResponseHeader|AllResponseHeaders)|moveBy|moveBelow|moveTo|\n moveToAbsolute|moveAbove|mergeAttributes|match|margins|btoa|big|bold|borderWidths|blink|back\n ) |\n (acceptNode|add|addEventListener|addTextTrack|adoptNode|after|animate|append|\n appendChild|appendData|before|blur|canPlayType|captureStream|\n caretPositionFromPoint|caretRangeFromPoint|checkValidity|clear|click|\n cloneContents|cloneNode|cloneRange|close|closest|collapse|\n compareBoundaryPoints|compareDocumentPosition|comparePoint|contains|\n convertPointFromNode|convertQuadFromNode|convertRectFromNode|createAttribute|\n createAttributeNS|createCaption|createCDATASection|createComment|\n createContextualFragment|createDocument|createDocumentFragment|\n createDocumentType|createElement|createElementNS|createEntityReference|\n createEvent|createExpression|createHTMLDocument|createNodeIterator|\n createNSResolver|createProcessingInstruction|createRange|createShadowRoot|\n createTBody|createTextNode|createTFoot|createTHead|createTreeWalker|delete|\n deleteCaption|deleteCell|deleteContents|deleteData|deleteRow|deleteTFoot|\n deleteTHead|detach|disconnect|dispatchEvent|elementFromPoint|elementsFromPoint|\n enableStyleSheetsForSet|entries|evaluate|execCommand|exitFullscreen|\n exitPointerLock|expand|extractContents|fastSeek|firstChild|focus|forEach|get|\n getAll|getAnimations|getAttribute|getAttributeNames|getAttributeNode|\n getAttributeNodeNS|getAttributeNS|getBoundingClientRect|getBoxQuads|\n getClientRects|getContext|getDestinationInsertionPoints|getElementById|\n getElementsByClassName|getElementsByName|getElementsByTagName|\n getElementsByTagNameNS|getItem|getNamedItem|getSelection|getStartDate|\n getVideoPlaybackQuality|has|hasAttribute|hasAttributeNS|hasAttributes|\n hasChildNodes|hasFeature|hasFocus|importNode|initEvent|insertAdjacentElement|\n insertAdjacentHTML|insertAdjacentText|insertBefore|insertCell|insertData|\n insertNode|insertRow|intersectsNode|isDefaultNamespace|isEqualNode|\n isPointInRange|isSameNode|item|key|keys|lastChild|load|lookupNamespaceURI|\n lookupPrefix|matches|move|moveAttribute|moveAttributeNode|moveChild|\n moveNamedItem|namedItem|nextNode|nextSibling|normalize|observe|open|\n parentNode|pause|play|postMessage|prepend|preventDefault|previousNode|\n previousSibling|probablySupportsContext|queryCommandEnabled|\n queryCommandIndeterm|queryCommandState|queryCommandSupported|queryCommandValue|\n querySelector|querySelectorAll|registerContentHandler|registerElement|\n registerProtocolHandler|releaseCapture|releaseEvents|remove|removeAttribute|\n removeAttributeNode|removeAttributeNS|removeChild|removeEventListener|\n removeItem|replace|replaceChild|replaceData|replaceWith|reportValidity|\n requestFullscreen|requestPointerLock|reset|scroll|scrollBy|scrollIntoView|\n scrollTo|seekToNextFrame|select|selectNode|selectNodeContents|set|setAttribute|\n setAttributeNode|setAttributeNodeNS|setAttributeNS|setCapture|\n setCustomValidity|setEnd|setEndAfter|setEndBefore|setItem|setNamedItem|\n setRangeText|setSelectionRange|setSinkId|setStart|setStartAfter|setStartBefore|\n slice|splitText|stepDown|stepUp|stopImmediatePropagation|stopPropagation|\n submit|substringData|supports|surroundContents|takeRecords|terminate|toBlob|\n toDataURL|toggle|toString|values|write|writeln\n )\n)(?=\\s*\\()",
3589
+ "captures": {
3590
+ "1": {
3591
+ "name": "punctuation.accessor.tsx"
3592
+ },
3593
+ "2": {
3594
+ "name": "punctuation.accessor.optional.tsx"
3595
+ },
3596
+ "3": {
3597
+ "name": "support.function.event-handler.tsx"
3598
+ },
3599
+ "4": {
3600
+ "name": "support.function.tsx"
3601
+ },
3602
+ "5": {
3603
+ "name": "support.function.dom.tsx"
3604
+ }
3605
+ }
3606
+ }
3607
+ ]
3608
+ },
3609
+ "switch-statement": {
3610
+ "name": "switch-statement.expr.tsx",
3611
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?=\\bswitch\\s*\\()",
3612
+ "end": "\\}",
3613
+ "patterns": [
3614
+ {
3615
+ "name": "switch-expression.expr.tsx",
3616
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(switch)\\s*(\\()",
3617
+ "end": "\\)",
3618
+ "patterns": [
3619
+ {
3620
+ "include": "#expression"
3621
+ }
3622
+ ],
3623
+ "beginCaptures": {
3624
+ "1": {
3625
+ "name": "keyword.control.switch.tsx"
3626
+ },
3627
+ "2": {
3628
+ "name": "meta.brace.round.tsx"
3629
+ }
3630
+ },
3631
+ "endCaptures": {
3632
+ "0": {
3633
+ "name": "meta.brace.round.tsx"
3634
+ }
3635
+ }
3636
+ },
3637
+ {
3638
+ "name": "switch-block.expr.tsx",
3639
+ "begin": "\\{",
3640
+ "end": "(?=\\})",
3641
+ "patterns": [
3642
+ {
3643
+ "name": "case-clause.expr.tsx",
3644
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
3645
+ "end": ":",
3646
+ "patterns": [
3647
+ {
3648
+ "include": "#expression"
3649
+ }
3650
+ ],
3651
+ "beginCaptures": {
3652
+ "1": {
3653
+ "name": "keyword.control.switch.tsx"
3654
+ }
3655
+ },
3656
+ "endCaptures": {
3657
+ "0": {
3658
+ "name": "punctuation.definition.section.case-statement.tsx"
3659
+ }
3660
+ }
3661
+ },
3662
+ {
3663
+ "include": "#statements"
3664
+ }
3665
+ ],
3666
+ "beginCaptures": {
3667
+ "0": {
3668
+ "name": "punctuation.definition.block.tsx"
3669
+ }
3670
+ }
3671
+ }
3672
+ ],
3673
+ "endCaptures": {
3674
+ "0": {
3675
+ "name": "punctuation.definition.block.tsx"
3676
+ }
3677
+ }
3678
+ },
3679
+ "template": {
3680
+ "name": "string.template.tsx",
3681
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
3682
+ "end": "`",
3683
+ "patterns": [
3684
+ {
3685
+ "include": "#template-substitution-element"
3686
+ },
3687
+ {
3688
+ "include": "#string-character-escape"
3689
+ }
3690
+ ],
3691
+ "beginCaptures": {
3692
+ "1": {
3693
+ "name": "entity.name.function.tagged-template.tsx"
3694
+ },
3695
+ "2": {
3696
+ "name": "punctuation.definition.string.template.begin.tsx"
3697
+ }
3698
+ },
3699
+ "endCaptures": {
3700
+ "0": {
3701
+ "name": "punctuation.definition.string.template.end.tsx"
3702
+ }
3703
+ }
3704
+ },
3705
+ "template-substitution-element": {
3706
+ "name": "meta.template.expression.tsx",
3707
+ "contentName": "meta.embedded.line.tsx",
3708
+ "begin": "\\$\\{",
3709
+ "end": "\\}",
3710
+ "patterns": [
3711
+ {
3712
+ "include": "#expression"
3713
+ }
3714
+ ],
3715
+ "beginCaptures": {
3716
+ "0": {
3717
+ "name": "punctuation.definition.template-expression.begin.tsx"
3718
+ }
3719
+ },
3720
+ "endCaptures": {
3721
+ "0": {
3722
+ "name": "punctuation.definition.template-expression.end.tsx"
3723
+ }
3724
+ }
3725
+ },
3726
+ "ternary-expression": {
3727
+ "begin": "(?!\\?\\.\\s*[^[:digit:]])(\\?)",
3728
+ "end": "(:)",
3729
+ "patterns": [
3730
+ {
3731
+ "include": "#expression"
3732
+ }
3733
+ ],
3734
+ "beginCaptures": {
3735
+ "1": {
3736
+ "name": "keyword.operator.ternary.tsx"
3737
+ }
3738
+ },
3739
+ "endCaptures": {
3740
+ "0": {
3741
+ "name": "keyword.operator.ternary.tsx"
3742
+ }
3743
+ }
3744
+ },
3745
+ "this-literal": {
3746
+ "name": "variable.language.this.tsx",
3747
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))this\\b(?!\\$)"
3748
+ },
3749
+ "type": {
3750
+ "patterns": [
3751
+ {
3752
+ "include": "#comment"
3753
+ },
3754
+ {
3755
+ "include": "#string"
3756
+ },
3757
+ {
3758
+ "include": "#numeric-literal"
3759
+ },
3760
+ {
3761
+ "include": "#type-primitive"
3762
+ },
3763
+ {
3764
+ "include": "#type-builtin-literals"
3765
+ },
3766
+ {
3767
+ "include": "#type-parameters"
3768
+ },
3769
+ {
3770
+ "include": "#type-tuple"
3771
+ },
3772
+ {
3773
+ "include": "#type-object"
3774
+ },
3775
+ {
3776
+ "include": "#type-operators"
3777
+ },
3778
+ {
3779
+ "include": "#type-fn-type-parameters"
3780
+ },
3781
+ {
3782
+ "include": "#type-paren-or-function-parameters"
3783
+ },
3784
+ {
3785
+ "include": "#type-function-return-type"
3786
+ },
3787
+ {
3788
+ "include": "#type-name"
3789
+ }
3790
+ ]
3791
+ },
3792
+ "type-alias-declaration": {
3793
+ "name": "meta.type.declaration.tsx",
3794
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(\\bexport)\\s+)?\\b(type)\\b\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*",
3795
+ "end": "(?=[};]|\\babstract\\b|\\basync\\b|\\bclass\\b|\\bconst\\b|\\bdeclare\\b|\\benum\\b|\\bexport\\b|\\bfunction\\b|\\bimport\\b|\\binterface\\b|\\blet\\b|\\bmodule\\b|\\bnamespace\\b|\\btype\\b|\\bvar\\b)",
3796
+ "patterns": [
3797
+ {
3798
+ "include": "#comment"
3799
+ },
3800
+ {
3801
+ "include": "#type-parameters"
3802
+ },
3803
+ {
3804
+ "include": "#type"
3805
+ },
3806
+ {
3807
+ "match": "(=)\\s*",
3808
+ "captures": {
3809
+ "1": {
3810
+ "name": "keyword.operator.assignment.tsx"
3811
+ }
3812
+ }
3813
+ }
3814
+ ],
3815
+ "beginCaptures": {
3816
+ "1": {
3817
+ "name": "keyword.control.export.tsx"
3818
+ },
3819
+ "2": {
3820
+ "name": "storage.type.type.tsx"
3821
+ },
3822
+ "3": {
3823
+ "name": "entity.name.type.alias.tsx"
3824
+ }
3825
+ }
3826
+ },
3827
+ "type-annotation": {
3828
+ "patterns": [
3829
+ {
3830
+ "name": "meta.type.annotation.tsx",
3831
+ "begin": "(:)(?=\\s*\\S)",
3832
+ "end": "(?\u003c![:|\u0026])((?=$|^|[,);\\}\\]]|//)|(?==[^\u003e])|((?\u003c=[\\}\u003e\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
3833
+ "patterns": [
3834
+ {
3835
+ "include": "#type"
3836
+ }
3837
+ ],
3838
+ "beginCaptures": {
3839
+ "1": {
3840
+ "name": "keyword.operator.type.annotation.tsx"
3841
+ }
3842
+ }
3843
+ },
3844
+ {
3845
+ "name": "meta.type.annotation.tsx",
3846
+ "begin": "(:)",
3847
+ "end": "(?\u003c![:|\u0026])((?=[,);\\}\\]]|//)|(?==[^\u003e])|(?=^\\s*$)|((?\u003c=\\S)(?=\\s*$))|((?\u003c=[\\}\u003e\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
3848
+ "patterns": [
3849
+ {
3850
+ "include": "#type"
3851
+ }
3852
+ ],
3853
+ "beginCaptures": {
3854
+ "1": {
3855
+ "name": "keyword.operator.type.annotation.tsx"
3856
+ }
3857
+ }
3858
+ }
3859
+ ]
3860
+ },
3861
+ "type-builtin-literals": {
3862
+ "name": "support.type.builtin.tsx",
3863
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
3864
+ },
3865
+ "type-fn-type-parameters": {
3866
+ "patterns": [
3867
+ {
3868
+ "name": "meta.type.constructor.tsx",
3869
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(new)\\b(?=\\s*\\\u003c)",
3870
+ "captures": {
3871
+ "1": {
3872
+ "name": "keyword.control.new.tsx"
3873
+ }
3874
+ }
3875
+ },
3876
+ {
3877
+ "name": "meta.type.constructor.tsx",
3878
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(new)\\b\\s*(?=\\()",
3879
+ "end": "(?\u003c=\\))",
3880
+ "patterns": [
3881
+ {
3882
+ "include": "#function-parameters"
3883
+ }
3884
+ ],
3885
+ "beginCaptures": {
3886
+ "1": {
3887
+ "name": "keyword.control.new.tsx"
3888
+ }
3889
+ }
3890
+ },
3891
+ {
3892
+ "name": "meta.type.function.tsx",
3893
+ "begin": "(?x)(\n (?=\n [(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=\u003e)\n ))\n )\n )\n)",
3894
+ "end": "(?\u003c=\\))",
3895
+ "patterns": [
3896
+ {
3897
+ "include": "#function-parameters"
3898
+ }
3899
+ ]
3900
+ }
3901
+ ]
3902
+ },
3903
+ "type-function-return-type": {
3904
+ "patterns": [
3905
+ {
3906
+ "name": "meta.type.function.return.tsx",
3907
+ "begin": "(=\u003e)(?=\\s*\\S)",
3908
+ "end": "(?\u003c!=\u003e)(?\u003c![|\u0026])(?=[,\\]\\)\\{\\}=;\u003e]|//|$)",
3909
+ "patterns": [
3910
+ {
3911
+ "include": "#type-function-return-type-core"
3912
+ }
3913
+ ],
3914
+ "beginCaptures": {
3915
+ "1": {
3916
+ "name": "storage.type.function.arrow.tsx"
3917
+ }
3918
+ }
3919
+ },
3920
+ {
3921
+ "name": "meta.type.function.return.tsx",
3922
+ "begin": "=\u003e",
3923
+ "end": "(?\u003c!=\u003e)(?\u003c![|\u0026])((?=[,\\]\\)\\{\\}=;\u003e]|//|^\\s*$)|((?\u003c=\\S)(?=\\s*$)))",
3924
+ "patterns": [
3925
+ {
3926
+ "include": "#type-function-return-type-core"
3927
+ }
3928
+ ],
3929
+ "beginCaptures": {
3930
+ "0": {
3931
+ "name": "storage.type.function.arrow.tsx"
3932
+ }
3933
+ }
3934
+ }
3935
+ ]
3936
+ },
3937
+ "type-function-return-type-core": {
3938
+ "patterns": [
3939
+ {
3940
+ "include": "#comment"
3941
+ },
3942
+ {
3943
+ "begin": "(?\u003c==\u003e)(?=\\s*\\{)",
3944
+ "end": "(?\u003c=\\})",
3945
+ "patterns": [
3946
+ {
3947
+ "include": "#type-object"
3948
+ }
3949
+ ]
3950
+ },
3951
+ {
3952
+ "include": "#type-predicate-operator"
3953
+ },
3954
+ {
3955
+ "include": "#type"
3956
+ }
3957
+ ]
3958
+ },
3959
+ "type-name": {
3960
+ "patterns": [
3961
+ {
3962
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
3963
+ "captures": {
3964
+ "1": {
3965
+ "name": "entity.name.type.module.tsx"
3966
+ },
3967
+ "2": {
3968
+ "name": "punctuation.accessor.tsx"
3969
+ },
3970
+ "3": {
3971
+ "name": "punctuation.accessor.optional.tsx"
3972
+ }
3973
+ }
3974
+ },
3975
+ {
3976
+ "name": "entity.name.type.tsx",
3977
+ "match": "[_$[:alpha:]][_$[:alnum:]]*"
3978
+ }
3979
+ ]
3980
+ },
3981
+ "type-object": {
3982
+ "name": "meta.object.type.tsx",
3983
+ "begin": "\\{",
3984
+ "end": "\\}",
3985
+ "patterns": [
3986
+ {
3987
+ "include": "#comment"
3988
+ },
3989
+ {
3990
+ "include": "#method-declaration"
3991
+ },
3992
+ {
3993
+ "include": "#indexer-declaration"
3994
+ },
3995
+ {
3996
+ "include": "#indexer-mapped-type-declaration"
3997
+ },
3998
+ {
3999
+ "include": "#field-declaration"
4000
+ },
4001
+ {
4002
+ "include": "#type-annotation"
4003
+ },
4004
+ {
4005
+ "begin": "\\.\\.\\.",
4006
+ "end": "(?=\\}|;|,|$)|(?\u003c=\\})",
4007
+ "patterns": [
4008
+ {
4009
+ "include": "#type"
4010
+ }
4011
+ ],
4012
+ "beginCaptures": {
4013
+ "0": {
4014
+ "name": "keyword.operator.spread.tsx"
4015
+ }
4016
+ }
4017
+ },
4018
+ {
4019
+ "include": "#punctuation-comma"
4020
+ },
4021
+ {
4022
+ "include": "#punctuation-semicolon"
4023
+ },
4024
+ {
4025
+ "include": "#type"
4026
+ }
4027
+ ],
4028
+ "beginCaptures": {
4029
+ "0": {
4030
+ "name": "punctuation.definition.block.tsx"
4031
+ }
4032
+ },
4033
+ "endCaptures": {
4034
+ "0": {
4035
+ "name": "punctuation.definition.block.tsx"
4036
+ }
4037
+ }
4038
+ },
4039
+ "type-operators": {
4040
+ "patterns": [
4041
+ {
4042
+ "include": "#typeof-operator"
4043
+ },
4044
+ {
4045
+ "begin": "([\u0026|])(?=\\s*\\{)",
4046
+ "end": "(?\u003c=\\})",
4047
+ "patterns": [
4048
+ {
4049
+ "include": "#type-object"
4050
+ }
4051
+ ],
4052
+ "beginCaptures": {
4053
+ "0": {
4054
+ "name": "keyword.operator.type.tsx"
4055
+ }
4056
+ }
4057
+ },
4058
+ {
4059
+ "begin": "[\u0026|]",
4060
+ "end": "(?=\\S)",
4061
+ "beginCaptures": {
4062
+ "0": {
4063
+ "name": "keyword.operator.type.tsx"
4064
+ }
4065
+ }
4066
+ },
4067
+ {
4068
+ "name": "keyword.operator.expression.keyof.tsx",
4069
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))keyof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
4070
+ }
4071
+ ]
4072
+ },
4073
+ "type-parameters": {
4074
+ "name": "meta.type.parameters.tsx",
4075
+ "begin": "(\u003c)",
4076
+ "end": "(\u003e)",
4077
+ "patterns": [
4078
+ {
4079
+ "include": "#comment"
4080
+ },
4081
+ {
4082
+ "name": "storage.modifier.tsx",
4083
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(extends)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
4084
+ },
4085
+ {
4086
+ "name": "keyword.operator.assignment.tsx",
4087
+ "match": "\\=(?!\u003e)"
4088
+ },
4089
+ {
4090
+ "include": "#type"
4091
+ },
4092
+ {
4093
+ "include": "#punctuation-comma"
4094
+ }
4095
+ ],
4096
+ "beginCaptures": {
4097
+ "1": {
4098
+ "name": "punctuation.definition.typeparameters.begin.tsx"
4099
+ }
4100
+ },
4101
+ "endCaptures": {
4102
+ "1": {
4103
+ "name": "punctuation.definition.typeparameters.end.tsx"
4104
+ }
4105
+ }
4106
+ },
4107
+ "type-paren-or-function-parameters": {
4108
+ "name": "meta.type.paren.cover.tsx",
4109
+ "begin": "\\(",
4110
+ "end": "\\)",
4111
+ "patterns": [
4112
+ {
4113
+ "include": "#type"
4114
+ },
4115
+ {
4116
+ "include": "#function-parameters"
4117
+ }
4118
+ ],
4119
+ "beginCaptures": {
4120
+ "0": {
4121
+ "name": "meta.brace.round.tsx"
4122
+ }
4123
+ },
4124
+ "endCaptures": {
4125
+ "0": {
4126
+ "name": "meta.brace.round.tsx"
4127
+ }
4128
+ }
4129
+ },
4130
+ "type-predicate-operator": {
4131
+ "name": "keyword.operator.expression.is.tsx",
4132
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
4133
+ },
4134
+ "type-primitive": {
4135
+ "name": "support.type.primitive.tsx",
4136
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(string|number|boolean|symbol|any|void|never)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
4137
+ },
4138
+ "type-tuple": {
4139
+ "name": "meta.type.tuple.tsx",
4140
+ "begin": "\\[",
4141
+ "end": "\\]",
4142
+ "patterns": [
4143
+ {
4144
+ "include": "#type"
4145
+ },
4146
+ {
4147
+ "include": "#punctuation-comma"
4148
+ }
4149
+ ],
4150
+ "beginCaptures": {
4151
+ "0": {
4152
+ "name": "meta.brace.square.tsx"
4153
+ }
4154
+ },
4155
+ "endCaptures": {
4156
+ "0": {
4157
+ "name": "meta.brace.square.tsx"
4158
+ }
4159
+ }
4160
+ },
4161
+ "typeof-operator": {
4162
+ "name": "keyword.operator.expression.typeof.tsx",
4163
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))typeof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
4164
+ },
4165
+ "undefined-literal": {
4166
+ "name": "constant.language.undefined.tsx",
4167
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))undefined(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
4168
+ },
4169
+ "var-expr": {
4170
+ "name": "meta.var.expr.tsx",
4171
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(\\bexport)\\s+)?\\b(var|let|const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
4172
+ "end": "(?=$|^|;|}|(\\s+(of|in)\\s+))",
4173
+ "patterns": [
4174
+ {
4175
+ "include": "#destructuring-variable"
4176
+ },
4177
+ {
4178
+ "include": "#var-single-variable"
4179
+ },
4180
+ {
4181
+ "include": "#variable-initializer"
4182
+ },
4183
+ {
4184
+ "include": "#comment"
4185
+ },
4186
+ {
4187
+ "begin": "(,)\\s*(?!\\S)",
4188
+ "end": "(?\u003c!,)((?==|;|}|(\\s+(of|in)\\s+)|^\\s*$))|((?\u003c=\\S)(?=\\s*$))",
4189
+ "patterns": [
4190
+ {
4191
+ "include": "#comment"
4192
+ },
4193
+ {
4194
+ "include": "#destructuring-variable"
4195
+ },
4196
+ {
4197
+ "include": "#var-single-variable"
4198
+ },
4199
+ {
4200
+ "include": "#punctuation-comma"
4201
+ }
4202
+ ],
4203
+ "beginCaptures": {
4204
+ "1": {
4205
+ "name": "punctuation.separator.comma.tsx"
4206
+ }
4207
+ }
4208
+ },
4209
+ {
4210
+ "include": "#punctuation-comma"
4211
+ }
4212
+ ],
4213
+ "beginCaptures": {
4214
+ "1": {
4215
+ "name": "keyword.control.export.tsx"
4216
+ },
4217
+ "2": {
4218
+ "name": "storage.type.tsx"
4219
+ }
4220
+ }
4221
+ },
4222
+ "var-single-variable": {
4223
+ "patterns": [
4224
+ {
4225
+ "name": "meta.var-single-variable.expr.tsx",
4226
+ "begin": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(\u003c*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=\u003e)\n )) |\n ((async\\s*)?(\n # sure shot arrow functions even if =\u003e is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [\u003c]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=\u003e] # \u003c typeparam extends\n) |\n# arrow function possible to detect only with =\u003e on same line\n(\n (\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c])*\\\u003e)*\u003e\\s*)? # typeparameters\n \\(\\s*([_$[:alpha:]\\{\\[]([^()]|\\((\\s*[^()]*)?\\))*)?\\) # parameteres\n (\\s*:\\s*([^\u003c\u003e\\(\\)]|\\\u003c[^\u003c\u003e]+\\\u003e|\\([^\\(\\)]+\\))+)? # return type\n \\s*=\u003e # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: \u003c | () | (... | (param: | (param, | (param? | (param= | (param) =\u003e\n(:\\s*(\n (\u003c) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=\u003e)\n ))\n ))\n)) |\n(:\\s*(=\u003e|(\\([^\\(\\)]*\\))|(\u003c[^\u003c\u003e]*\u003e)|[^\u003c\u003e(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(\u003c*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=\u003e)\n )) |\n ((async\\s*)?(\n # sure shot arrow functions even if =\u003e is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [\u003c]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=\u003e] # \u003c typeparam extends\n) |\n# arrow function possible to detect only with =\u003e on same line\n(\n (\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c])*\\\u003e)*\u003e\\s*)? # typeparameters\n \\(\\s*([_$[:alpha:]\\{\\[]([^()]|\\((\\s*[^()]*)?\\))*)?\\) # parameteres\n (\\s*:\\s*([^\u003c\u003e\\(\\)]|\\\u003c[^\u003c\u003e]+\\\u003e|\\([^\\(\\)]+\\))+)? # return type\n \\s*=\u003e # arrow operator\n)\n ))\n)))",
4227
+ "end": "(?=$|^|[;,=}]|(\\s+(of|in)\\s+))",
4228
+ "patterns": [
4229
+ {
4230
+ "include": "#var-single-variable-type-annotation"
4231
+ }
4232
+ ],
4233
+ "beginCaptures": {
4234
+ "1": {
4235
+ "name": "meta.definition.variable.tsx entity.name.function.tsx"
4236
+ }
4237
+ }
4238
+ },
4239
+ {
4240
+ "name": "meta.var-single-variable.expr.tsx",
4241
+ "begin": "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",
4242
+ "end": "(?=$|^|[;,=}]|(\\s+(of|in)\\s+))",
4243
+ "patterns": [
4244
+ {
4245
+ "include": "#var-single-variable-type-annotation"
4246
+ }
4247
+ ],
4248
+ "beginCaptures": {
4249
+ "1": {
4250
+ "name": "meta.definition.variable.tsx variable.other.constant.tsx"
4251
+ }
4252
+ }
4253
+ },
4254
+ {
4255
+ "name": "meta.var-single-variable.expr.tsx",
4256
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)",
4257
+ "end": "(?=$|^|[;,=}]|(\\s+(of|in)\\s+))",
4258
+ "patterns": [
4259
+ {
4260
+ "include": "#var-single-variable-type-annotation"
4261
+ }
4262
+ ],
4263
+ "beginCaptures": {
4264
+ "1": {
4265
+ "name": "meta.definition.variable.tsx variable.other.readwrite.tsx"
4266
+ }
4267
+ }
4268
+ }
4269
+ ]
4270
+ },
4271
+ "var-single-variable-type-annotation": {
4272
+ "patterns": [
4273
+ {
4274
+ "include": "#type-annotation"
4275
+ },
4276
+ {
4277
+ "include": "#string"
4278
+ },
4279
+ {
4280
+ "include": "#comment"
4281
+ }
4282
+ ]
4283
+ },
4284
+ "variable-initializer": {
4285
+ "patterns": [
4286
+ {
4287
+ "begin": "(?\u003c!=|!)(=)(?!=)(?=\\s*\\S)",
4288
+ "end": "(?=$|^|[,);}\\]])",
4289
+ "patterns": [
4290
+ {
4291
+ "include": "#expression"
4292
+ }
4293
+ ],
4294
+ "beginCaptures": {
4295
+ "1": {
4296
+ "name": "keyword.operator.assignment.tsx"
4297
+ }
4298
+ }
4299
+ },
4300
+ {
4301
+ "begin": "(?\u003c!=|!)(=)(?!=)",
4302
+ "end": "(?=[,);}\\]])|(?=^\\s*$)|(?\u003c=\\S)(?\u003c!=)(?=\\s*$)",
4303
+ "patterns": [
4304
+ {
4305
+ "include": "#expression"
4306
+ }
4307
+ ],
4308
+ "beginCaptures": {
4309
+ "1": {
4310
+ "name": "keyword.operator.assignment.tsx"
4311
+ }
4312
+ }
312
4313
  }
313
4314
  ]
314
4315
  }