github-linguist 4.8.9 → 4.8.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/bin/git-linguist +2 -2
  3. data/grammars/source.ats.json +58 -128
  4. data/grammars/source.autoit.json +158 -153
  5. data/grammars/source.awk.json +333 -383
  6. data/grammars/source.batchfile.json +194 -0
  7. data/grammars/source.c.platform.json +359 -22
  8. data/grammars/source.changelogs.rpm-spec.json +99 -0
  9. data/grammars/source.clojure.json +9 -3
  10. data/grammars/source.dockerfile.json +67 -78
  11. data/grammars/source.elm.json +20 -379
  12. data/grammars/source.emacs.lisp.json +656 -0
  13. data/grammars/source.gdscript.json +233 -228
  14. data/grammars/source.graphql.json +75 -10
  15. data/grammars/source.js.json +2 -2
  16. data/grammars/source.js.jsx.json +247 -839
  17. data/grammars/source.js.regexp.json +1 -1
  18. data/grammars/source.nginx.json +882 -768
  19. data/grammars/source.nsis.json +151 -143
  20. data/grammars/source.objc.json +3 -0
  21. data/grammars/source.objc.platform.json +174 -104
  22. data/grammars/source.puppet.json +429 -396
  23. data/grammars/source.pyjade.json +11 -0
  24. data/grammars/source.regexp.babel.json +1 -1
  25. data/grammars/source.rpm-spec.json +770 -0
  26. data/grammars/source.systemverilog.json +1110 -961
  27. data/grammars/source.ts.json +57 -57
  28. data/grammars/source.tsx.json +57 -57
  29. data/grammars/text.dart-analysis-output.json +67 -152
  30. data/grammars/text.error-list.json +54 -0
  31. data/grammars/text.find-refs.json +927 -0
  32. data/grammars/text.html.basic.json +1 -1
  33. data/grammars/text.html.mediawiki.elm-build-output.json +108 -0
  34. data/grammars/text.html.mediawiki.elm-documentation.json +22 -0
  35. data/grammars/text.html.vue.json +35 -0
  36. data/grammars/text.jade.json +34 -12
  37. data/grammars/text.roff.json +1 -1
  38. data/lib/linguist/heuristics.rb +16 -4
  39. data/lib/linguist/languages.json +1 -1
  40. data/lib/linguist/languages.yml +25 -5
  41. data/lib/linguist/samples.json +1367 -163
  42. data/lib/linguist/version.rb +1 -1
  43. metadata +10 -3
  44. data/grammars/source.dosbatch.json +0 -70
@@ -11,6 +11,18 @@
11
11
  {
12
12
  "include": "#comment"
13
13
  },
14
+ {
15
+ "include": "#typeDef"
16
+ },
17
+ {
18
+ "include": "#typeDefImplements"
19
+ },
20
+ {
21
+ "include": "#unionOptions"
22
+ },
23
+ {
24
+ "include": "#directive"
25
+ },
14
26
  {
15
27
  "name": "meta.fragment",
16
28
  "comment": "a fragment definintion",
@@ -26,7 +38,7 @@
26
38
  "name": "keyword.operator"
27
39
  },
28
40
  "4": {
29
- "name": "support.constant"
41
+ "name": "support.class"
30
42
  }
31
43
  }
32
44
  },
@@ -71,9 +83,20 @@
71
83
  }
72
84
  ]
73
85
  },
74
- "variable": {
75
- "name": "constant.other.symbol",
76
- "match": "\\$[_A-Za-z][_0-9A-Za-z]*"
86
+ "variableDefinition": {
87
+ "match": "(\\$[_A-Za-z][_0-9A-Za-z]*)\\:\\s*([_A-Za-z][_0-9A-Za-z]*)",
88
+ "captures": {
89
+ "1": {
90
+ "name": "constant.other.symbol"
91
+ },
92
+ "2": {
93
+ "name": "support.class"
94
+ }
95
+ }
96
+ },
97
+ "variableUsage": {
98
+ "match": "\\$[_A-Za-z][_0-9A-Za-z]*",
99
+ "name": "constant.other.symbol"
77
100
  },
78
101
  "boolean": {
79
102
  "name": "constant.language.boolean",
@@ -85,15 +108,15 @@
85
108
  },
86
109
  "directive": {
87
110
  "name": "storage.modifier",
88
- "match": "@[a-z]+"
111
+ "match": "@[_A-Za-z][_0-9A-Za-z]+"
89
112
  },
90
113
  "argument": {
91
114
  "name": "variable.parameter",
92
115
  "match": "[_A-Za-z][_0-9A-Za-z]*:"
93
116
  },
94
117
  "enum": {
95
- "name": "support.constant.enum",
96
- "match": "[_A-Za-z][_0-9A-Za-z]*"
118
+ "match": "([A-Z][A-Z_]+)",
119
+ "name": "support.constant.enum"
97
120
  },
98
121
  "fragmentSpread": {
99
122
  "match": "(\\.\\.\\.)\\s*([_A-Za-z][_0-9A-Za-z]*)\\s*(on\\s*)?([_A-Za-z][_0-9A-Za-z]*)?",
@@ -108,7 +131,7 @@
108
131
  "name": "keyword.operator"
109
132
  },
110
133
  "4": {
111
- "name": "support.constant"
134
+ "name": "support.class"
112
135
  }
113
136
  }
114
137
  },
@@ -122,7 +145,7 @@
122
145
  "name": "keyword.operator"
123
146
  },
124
147
  "3": {
125
- "name": "support.constant"
148
+ "name": "support.class"
126
149
  }
127
150
  }
128
151
  },
@@ -151,7 +174,10 @@
151
174
  "include": "#boolean"
152
175
  },
153
176
  {
154
- "include": "#variable"
177
+ "include": "#variableDefinition"
178
+ },
179
+ {
180
+ "include": "#variableUsage"
155
181
  },
156
182
  {
157
183
  "include": "#number"
@@ -159,6 +185,9 @@
159
185
  {
160
186
  "include": "#enum"
161
187
  },
188
+ {
189
+ "include": "#directive"
190
+ },
162
191
  {
163
192
  "include": "#comment"
164
193
  }
@@ -202,6 +231,9 @@
202
231
  },
203
232
  {
204
233
  "include": "#builtInField"
234
+ },
235
+ {
236
+ "include": "#enum"
205
237
  }
206
238
  ]
207
239
  },
@@ -220,6 +252,39 @@
220
252
  "fieldAlias": {
221
253
  "match": "[_A-Za-z][_0-9A-Za-z]*:",
222
254
  "name": "variable.other.alias.graphql"
255
+ },
256
+ "typeDef": {
257
+ "match": "(type|interface|union|scalar|enum|input|directive|extend|schema)\\s+([_A-Za-z][_0-9A-Za-z]*)?",
258
+ "captures": {
259
+ "1": {
260
+ "name": "keyword.operator"
261
+ },
262
+ "2": {
263
+ "name": "support.class"
264
+ }
265
+ }
266
+ },
267
+ "typeDefImplements": {
268
+ "match": "(implements)\\s+([_A-Za-z][_0-9A-Za-z,\\s]*)",
269
+ "captures": {
270
+ "1": {
271
+ "name": "keyword.operator"
272
+ },
273
+ "2": {
274
+ "name": "support.class"
275
+ }
276
+ }
277
+ },
278
+ "unionOptions": {
279
+ "match": "(=|\\||on)\\s+([_A-Za-z][_0-9A-Za-z]*)",
280
+ "captures": {
281
+ "1": {
282
+ "name": "keyword.operator"
283
+ },
284
+ "2": {
285
+ "name": "support.class"
286
+ }
287
+ }
223
288
  }
224
289
  }
225
290
  }
@@ -1671,7 +1671,7 @@
1671
1671
  "name": "storage.type.class.jsdoc"
1672
1672
  },
1673
1673
  {
1674
- "match": "(?x)\n({(?:\\*|(?:\\?|\\!|\\.{3})?(?:\\([a-zA-Z_$][\\w$]*(?:[\\.|][a-zA-Z_$][\\w$]*)*\\)|[a-zA-Z_$][\\w$]*(?:[\\.|][a-zA-Z_$][\\w$]*)*)(?:\\[\\])?=?)})\n\\s+\n(\\[(?:[a-zA-Z_$]+(?:=[\\w][\\s\\w$]*)?)\\]|(?:[a-zA-Z_$][\\w$]*(?:[\\.|][a-zA-Z_$][\\w$]*)*))\n\\s+\n((?:(?!\\*\\/).)*)",
1674
+ "match": "(?x)\n(?:(?<=@param)|(?<=@type))\n\\s+\n({(?:\n \\* | # {*} any type\n \\? | # {?} unknown type\n\n (?: # Check for a prefix\n \\? | # {?string} nullable type\n ! | # {!string} non-nullable type\n \\.{3} # {...string} variable number of parameters\n )?\n\n (?:\n \\( # Opening bracket of multiple types with parenthesis {(string|number)}\n [a-zA-Z_$]+\n (?:\n (?:\n [\\w$]*\n (?:\\[\\])? # {(string[]|number)} type application, an array of strings or a number\n ) |\n <[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application\n )\n (?:\n [\\.|~] # {Foo.bar} namespaced, {string|number} multiple, {Foo~bar} class-specific callback\n [a-zA-Z_$]+\n (?:\n (?:\n [\\w$]*\n (?:\\[\\])? # {(string|number[])} type application, a string or an array of numbers\n ) |\n <[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application\n )\n )*\n \\) |\n [a-zA-Z_$]+\n (?:\n (?:\n [\\w$]*\n (?:\\[\\])? # {string[]|number} type application, an array of strings or a number\n ) |\n <[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application\n )\n (?:\n [\\.|~] # {Foo.bar} namespaced, {string|number} multiple, {Foo~bar} class-specific callback\n [a-zA-Z_$]+\n (?:\n [\\w$]* |\n <[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application\n )\n )*\n )\n # Check for suffix\n (?:\\[\\])? # {string[]} type application, an array of strings\n =? # {string=} optional parameter\n)})\n\\s+\n(\n \\[ # [foo] optional parameter\n \\s*\n (?:\n [a-zA-Z_$][\\w$]*\n (?:\n (?:\\[\\])? # Foo[].bar properties within an array\n \\. # Foo.Bar namespaced parameter\n [a-zA-Z_$][\\w$]*\n )*\n (?:\n \\s*\n = # [foo=bar] Default parameter value\n \\s*\n [\\w$\\s]*\n )?\n )\n \\s*\n \\] |\n (?:\n [a-zA-Z_$][\\w$]*\n (?:\n (?:\\[\\])? # Foo[].bar properties within an array\n \\. # Foo.Bar namespaced parameter\n [a-zA-Z_$][\\w$]*\n )*\n )?\n)\n\\s+\n((?:(?!\\*\\/).)*) # The type description",
1675
1675
  "captures": {
1676
1676
  "0": {
1677
1677
  "name": "other.meta.jsdoc"
@@ -1688,7 +1688,7 @@
1688
1688
  }
1689
1689
  },
1690
1690
  {
1691
- "match": "(?x)\n(?:(?<=@returns)|(?<=@return))\n\\s+\n({(?:\\*|(?:\\?|\\!|\\.{3})?(?:\\([a-zA-Z_$][\\w$]*(?:[\\.|][a-zA-Z_$][\\w$]*)*\\)|[a-zA-Z_$][\\w$]*(?:[\\.|][a-zA-Z_$][\\w$]*)*)(?:\\[\\])?=?)})\n\\s+\n((?:(?!\\*\\/).)*)",
1691
+ "match": "(?x)\n({(?:\n \\* | # {*} any type\n \\? | # {?} unknown type\n\n (?: # Check for a prefix\n \\? | # {?string} nullable type\n ! | # {!string} non-nullable type\n \\.{3} # {...string} variable number of parameters\n )?\n\n (?:\n \\( # Opening bracket of multiple types with parenthesis {(string|number)}\n [a-zA-Z_$]+\n (?:\n [\\w$]* |\n <[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application\n )\n (?:\n [\\.|~] # {Foo.bar} namespaced, {string|number} multiple, {Foo~bar} class-specific callback\n [a-zA-Z_$]+\n (?:\n [\\w$]* |\n <[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application\n )\n )*\n \\) |\n [a-zA-Z_$]+\n (?:\n [\\w$]* |\n <[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application\n )\n (?:\n [\\.|~] # {Foo.bar} namespaced, {string|number} multiple, {Foo~bar} class-specific callback\n [a-zA-Z_$]+\n (?:\n [\\w$]* |\n <[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application\n )\n )*\n )\n # Check for suffix\n (?:\\[\\])? # {string[]} type application, an array of strings\n =? # {string=} optional parameter\n)})\n\\s+\n((?:(?!\\*\\/).)*) # The type description",
1692
1692
  "captures": {
1693
1693
  "0": {
1694
1694
  "name": "other.meta.jsdoc"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "Babel ES6 JavaScript",
3
3
  "scopeName": "source.js.jsx",
4
- "foldingStartMarker": "(/\\*|{|\\()",
4
+ "foldingStartMarker": "(/\\*|\\{|\\()",
5
5
  "foldingEndMarker": "(\\*/|\\}|\\))",
6
6
  "firstLineMatch": "^#!\\s*/.*\\b(node|js)$\\n?",
7
7
  "fileTypes": [
@@ -105,8 +105,7 @@
105
105
  "include": "#literal-language-variable"
106
106
  },
107
107
  {
108
- "include": "#literal-object",
109
- "comment": "before literal-module as it traps default {"
108
+ "include": "#literal-object"
110
109
  },
111
110
  {
112
111
  "include": "#literal-module"
@@ -147,7 +146,7 @@
147
146
  "comment": "so set at arbitary 1000 chars to avoid parsing minified files",
148
147
  "patterns": [
149
148
  {
150
- "match": "^.{1000,}"
149
+ "match": "^(?:).{1000,}"
151
150
  }
152
151
  ]
153
152
  },
@@ -157,7 +156,7 @@
157
156
  "comment": "e.g. play: function(arg1, arg2) { }",
158
157
  "name": "meta.function.json.js",
159
158
  "begin": "(?<=^|{|,)\\s*+([_$a-zA-Z][$\\w]*)\\s*+(:)\\s*+(?:(async)\\s+)?\\s*+((?<!\\.)\\bfunction\\b)\\s*+(?:(\\*)\\s*)?\\s*(?=\\(|<)",
160
- "end": "(?={)",
159
+ "end": "(?=\\{)",
161
160
  "applyEndPatternLast": 1,
162
161
  "beginCaptures": {
163
162
  "1": {
@@ -185,8 +184,8 @@
185
184
  {
186
185
  "comment": "e.g. 'play': function(arg1, arg2) { }",
187
186
  "name": "meta.function.json.js",
188
- "begin": "(?<=^|{|,)\\s*+(('|\")([^\"']*)(\\k<-3>))\\s*+(:)\\s*+(async)?\\s*+((?<!\\.)\\bfunction\\b)\\s*(\\*\\s*)?\\s*(?=\\(|<)",
189
- "end": "(?={)",
187
+ "begin": "(?<=^|{|,)\\s*+(('|\\\")([^\"']*)(\\k<-3>))\\s*+(:)\\s*+(async)?\\s*+((?<!\\.)\\bfunction\\b)\\s*(\\*\\s*)?\\s*(?=\\(|<)",
188
+ "end": "(?=\\{)",
190
189
  "applyEndPatternLast": 1,
191
190
  "beginCaptures": {
192
191
  "1": {
@@ -227,7 +226,7 @@
227
226
  {
228
227
  "comment": "e.g. play: async <T>(args) => { }",
229
228
  "name": "meta.function.json.arrow.js",
230
- "begin": "(?<=^|{|,)\\s*+(\\b[_$a-zA-Z][$\\w]*)\\s*+(:)\\s*+(\\basync\\b)?\\s*+(?=(<(?:(?>[^<>]+)|\\g<-1>)*>)?\\s*+(\\((?:(?>[^()]+)|\\g<-1>)*\\))\\s*+(((?::(?:(\\s*+(&|\\|)?(\\s*+[$_a-zA-Z0-9]+(<(?:(?>[^<>]+)|\\g<-1>)*>)?|\\s*+({(?:(?>[^{}]+)|\\g<-1>)*\\})|\\s*+(\\[(?:(?>[^\\[\\]]+)|\\g<-1>)*\\])|\\s*+(\\s*([\"']).*?\\k<-1>(?<!\\\\.))|\\s*[x0-9A-Fa-f]+))|(?:\\s*+/\\*.*?\\*/))*+)*)|(?:/\\*.*?\\*/))(((?<=checks)|(\\s*\\bchecks))\\b\\s*(\\((?:(?>[^()]+)|\\g<-1>)*\\))?)?\\s*=>)",
229
+ "begin": "(?<=^|{|,)\\s*+(\\b[_$a-zA-Z][$\\w]*)\\s*+(:)\\s*+(\\basync\\b)?\\s*+(?=(<(?:(?>[^<>]+)|\\g<-1>)*>)?\\s*+(\\((?:(?>[^()]+)|\\g<-1>)*\\))\\s*+(?:\\s*:(\\s*+(&|\\|)?(\\s*+[$_a-zA-Z0-9]+(<(?:(?>[^<>]+)|\\g<-1>)*>)?|\\s*+(\\{(?:(?>[^{}]+)|\\g<-1>)*\\})|\\s*+(\\[(?:(?>[^\\[\\]]+)|\\g<-1>)*\\])|\\s*+(\\s*([\"']).*?\\k<-1>(?<!\\\\.))|\\s*[x0-9A-Fa-f]+))*+)*\\s*=>)",
231
230
  "end": "\\s*(=>)",
232
231
  "beginCaptures": {
233
232
  "1": {
@@ -254,7 +253,7 @@
254
253
  {
255
254
  "comment": "e.g. play: arg => { }",
256
255
  "name": "meta.function.json.arrow.js",
257
- "begin": "(?<=^|{|,)\\s*+(\\b[_$a-zA-Z][$\\w]*)\\s*+(:)\\s*+(\\basync\\b)?\\s*+(?=(<(?:(?>[^<>]+)|\\g<-1>)*>)?\\s*+([_$a-zA-Z][$\\w]*)\\s*+(((?::(?:(\\s*+(&|\\|)?(\\s*+[$_a-zA-Z0-9]+(<(?:(?>[^<>]+)|\\g<-1>)*>)?|\\s*+({(?:(?>[^{}]+)|\\g<-1>)*\\})|\\s*+(\\[(?:(?>[^\\[\\]]+)|\\g<-1>)*\\])|\\s*+(\\s*([\"']).*?\\k<-1>(?<!\\\\.))|\\s*[x0-9A-Fa-f]+))|(?:\\s*+/\\*.*?\\*/))*+)*)|(?:/\\*.*?\\*/))\\s*=>)",
256
+ "begin": "(?<=^|{|,)\\s*+(\\b[_$a-zA-Z][$\\w]*)\\s*+(:)\\s*+(\\basync\\b)?\\s*+(?=(<(?:(?>[^<>]+)|\\g<-1>)*>)?\\s*+([_$a-zA-Z][$\\w]*)\\s*+(?:\\s*:(\\s*+(&|\\|)?(\\s*+[$_a-zA-Z0-9]+(<(?:(?>[^<>]+)|\\g<-1>)*>)?|\\s*+(\\{(?:(?>[^{}]+)|\\g<-1>)*\\})|\\s*+(\\[(?:(?>[^\\[\\]]+)|\\g<-1>)*\\])|\\s*+(\\s*([\"']).*?\\k<-1>(?<!\\\\.))|\\s*[x0-9A-Fa-f]+))*+)*\\s*=>)",
258
257
  "end": "\\s*(=>)",
259
258
  "beginCaptures": {
260
259
  "1": {
@@ -284,7 +283,7 @@
284
283
  {
285
284
  "comment": "e.g. 'play': (args) => { }",
286
285
  "name": "meta.function.json.arrow.js",
287
- "begin": "(?<=^|{|,)\\s*+(('|\")([^\"']*)(\\k<-3>))\\s*(:)\\s*+(\\basync\\b)?\\s*+(?=(<(?:(?>[^<>]+)|\\g<-1>)*>)?\\s*+(\\((?:(?>[^()]+)|\\g<-1>)*\\))\\s*+(((?::(?:(\\s*+(&|\\|)?(\\s*+[$_a-zA-Z0-9]+(<(?:(?>[^<>]+)|\\g<-1>)*>)?|\\s*+({(?:(?>[^{}]+)|\\g<-1>)*\\})|\\s*+(\\[(?:(?>[^\\[\\]]+)|\\g<-1>)*\\])|\\s*+(\\s*([\"']).*?\\k<-1>(?<!\\\\.))|\\s*[x0-9A-Fa-f]+))|(?:\\s*+/\\*.*?\\*/))*+)*)|(?:/\\*.*?\\*/))(((?<=checks)|(\\s*\\bchecks))\\b\\s*(\\((?:(?>[^()]+)|\\g<-1>)*\\))?)?\\s*=>)",
286
+ "begin": "(?<=^|{|,)\\s*+(('|\\\")([^\"']*)(\\k<-3>))\\s*(:)\\s*+(\\basync\\b)?\\s*+(?=(<(?:(?>[^<>]+)|\\g<-1>)*>)?\\s*+(\\((?:(?>[^()]+)|\\g<-1>)*\\))\\s*+(?:\\s*:(\\s*+(&|\\|)?(\\s*+[$_a-zA-Z0-9]+(<(?:(?>[^<>]+)|\\g<-1>)*>)?|\\s*+(\\{(?:(?>[^{}]+)|\\g<-1>)*\\})|\\s*+(\\[(?:(?>[^\\[\\]]+)|\\g<-1>)*\\])|\\s*+(\\s*([\"']).*?\\k<-1>(?<!\\\\.))|\\s*[x0-9A-Fa-f]+))*+)*\\s*=>)",
288
287
  "end": "\\s*(=>)",
289
288
  "applyEndPatternLast": 1,
290
289
  "endCaptures": {
@@ -321,7 +320,7 @@
321
320
  {
322
321
  "comment": "e.g. 'play': arg => { }",
323
322
  "name": "meta.function.json.arrow.js",
324
- "begin": "(?<=^|{|,)\\s*+(('|\")([^\"']*)(\\k<-3>))\\s*+(:)\\s*+(\\basync\\b)?\\s*+(?=(<(?:(?>[^<>]+)|\\g<-1>)*>)?\\s*+([_$a-zA-Z][$\\w]*)\\s*+(((?::(?:(\\s*+(&|\\|)?(\\s*+[$_a-zA-Z0-9]+(<(?:(?>[^<>]+)|\\g<-1>)*>)?|\\s*+({(?:(?>[^{}]+)|\\g<-1>)*\\})|\\s*+(\\[(?:(?>[^\\[\\]]+)|\\g<-1>)*\\])|\\s*+(\\s*([\"']).*?\\k<-1>(?<!\\\\.))|\\s*[x0-9A-Fa-f]+))|(?:\\s*+/\\*.*?\\*/))*+)*)|(?:/\\*.*?\\*/))\\s*=>)",
323
+ "begin": "(?<=^|{|,)\\s*+(('|\\\")([^\"']*)(\\k<-3>))\\s*+(:)\\s*+(\\basync\\b)?\\s*+(?=(<(?:(?>[^<>]+)|\\g<-1>)*>)?\\s*+([_$a-zA-Z][$\\w]*)\\s*+(?:\\s*:(\\s*+(&|\\|)?(\\s*+[$_a-zA-Z0-9]+(<(?:(?>[^<>]+)|\\g<-1>)*>)?|\\s*+(\\{(?:(?>[^{}]+)|\\g<-1>)*\\})|\\s*+(\\[(?:(?>[^\\[\\]]+)|\\g<-1>)*\\])|\\s*+(\\s*([\"']).*?\\k<-1>(?<!\\\\.))|\\s*[x0-9A-Fa-f]+))*+)*\\s*=>)",
325
324
  "end": "\\s*(=>)",
326
325
  "beginCaptures": {
327
326
  "1": {
@@ -363,7 +362,7 @@
363
362
  "patterns": [
364
363
  {
365
364
  "comment": "string as a property name",
366
- "match": "\\s*+(?<!\\.|\\?|\\?\\s|\\?\\s\\s)(((\")(\\\\.|[^\\\\\"])*(\"))|((')(\\\\.|[^\\\\'])*(')))\\s*+(:)",
365
+ "match": "\\s*+(?<!\\.|\\?|\\?\\s|\\?\\s\\s)(((\\\")(\\\\.|[^\\\\\"])*(\\\"))|((')(\\\\.|[^\\\\'])*(')))\\s*+(:)",
367
366
  "captures": {
368
367
  "1": {
369
368
  "name": "constant.other.object.key.js"
@@ -434,6 +433,7 @@
434
433
  "include": "#literal-keyword-storage"
435
434
  },
436
435
  {
436
+ "name": "keyword.control.flow.js",
437
437
  "match": "\\s*+(?<!\\.)\\b(yield)\\b(?:\\s*+(\\*))?",
438
438
  "captures": {
439
439
  "1": {
@@ -445,36 +445,20 @@
445
445
  }
446
446
  },
447
447
  {
448
- "match": "\\s*+(?<!\\.)\\b(await|return)\\b",
449
- "captures": {
450
- "1": {
451
- "name": "keyword.control.flow.js"
452
- }
453
- }
448
+ "name": "keyword.control.flow.js",
449
+ "match": "\\s*+(?<!\\.)\\b(await|return)\\b"
454
450
  },
455
451
  {
456
- "match": "\\s*+(?<!\\.)\\b(if|else)\\b",
457
- "captures": {
458
- "1": {
459
- "name": "keyword.control.conditional.js"
460
- }
461
- }
452
+ "name": "keyword.control.conditional.js",
453
+ "match": "\\s*+(?<!\\.)\\b(if|else)\\b"
462
454
  },
463
455
  {
464
- "match": "\\s*+(?<!\\.)\\b(catch|finally|throw|try)\\b",
465
- "captures": {
466
- "1": {
467
- "name": "keyword.control.trycatch.js"
468
- }
469
- }
456
+ "name": "keyword.control.trycatch.js",
457
+ "match": "\\s*+(?<!\\.)\\b(catch|finally|throw|try)\\b"
470
458
  },
471
459
  {
472
- "match": "\\s*+(?<!\\.)\\b(break|continue|do|goto|while)\\b",
473
- "captures": {
474
- "1": {
475
- "name": "keyword.control.loop.js"
476
- }
477
- }
460
+ "name": "keyword.control.loop.js",
461
+ "match": "\\s*+(?<!\\.)\\b(break|continue|do|goto|while)\\b"
478
462
  }
479
463
  ]
480
464
  },
@@ -483,9 +467,9 @@
483
467
  {
484
468
  "name": "meta.for.js",
485
469
  "begin": "\\s*+(?<!\\.)\\b(for)\\b",
486
- "end": "\\s*(\\))",
470
+ "end": "\\s*\\)",
487
471
  "endCaptures": {
488
- "1": {
472
+ "0": {
489
473
  "name": "meta.brace.round.js"
490
474
  }
491
475
  },
@@ -496,10 +480,10 @@
496
480
  },
497
481
  "patterns": [
498
482
  {
499
- "begin": "\\s*+(\\()",
483
+ "begin": "\\s*+\\(",
500
484
  "end": "\\s*(?=\\))",
501
485
  "beginCaptures": {
502
- "1": {
486
+ "0": {
503
487
  "name": "meta.brace.round.js"
504
488
  }
505
489
  },
@@ -524,14 +508,14 @@
524
508
  {
525
509
  "name": "meta.switch.js",
526
510
  "begin": "\\s*+(?<!\\.)\\b(switch)\\b",
527
- "end": "\\s*(\\})",
511
+ "end": "\\s*\\}",
528
512
  "beginCaptures": {
529
513
  "1": {
530
514
  "name": "keyword.control.switch.js"
531
515
  }
532
516
  },
533
517
  "endCaptures": {
534
- "1": {
518
+ "0": {
535
519
  "name": "meta.brace.curly.js"
536
520
  }
537
521
  },
@@ -540,10 +524,10 @@
540
524
  "include": "#round-brackets"
541
525
  },
542
526
  {
543
- "begin": "\\s*+({)",
527
+ "begin": "\\s*+\\{",
544
528
  "end": "\\s*(?=})",
545
529
  "beginCaptures": {
546
- "1": {
530
+ "0": {
547
531
  "name": "meta.brace.curly.js"
548
532
  }
549
533
  },
@@ -594,14 +578,14 @@
594
578
  {
595
579
  "comment": "try to avoid ternary operators which have a '? some chars :'",
596
580
  "begin": "(^|:|;|=|(?<=:|;|=))\\s*+(\\((?=((\"|').*?(?<=[^\\\\])\\k<-1>|[^?:])*(:|\\?\\s*+:)))",
597
- "end": "\\s*(\\))",
581
+ "end": "\\s*\\)",
598
582
  "beginCaptures": {
599
583
  "2": {
600
584
  "name": "meta.brace.round.js"
601
585
  }
602
586
  },
603
587
  "endCaptures": {
604
- "1": {
588
+ "0": {
605
589
  "name": "meta.brace.round.js"
606
590
  }
607
591
  },
@@ -615,15 +599,15 @@
615
599
  ]
616
600
  },
617
601
  {
618
- "begin": "\\s*+(\\()",
619
- "end": "\\s*(\\))",
602
+ "begin": "\\s*+\\(",
603
+ "end": "\\s*\\)",
620
604
  "endCaptures": {
621
- "1": {
605
+ "0": {
622
606
  "name": "meta.brace.round.js"
623
607
  }
624
608
  },
625
609
  "beginCaptures": {
626
- "1": {
610
+ "0": {
627
611
  "name": "meta.brace.round.js"
628
612
  }
629
613
  },
@@ -638,15 +622,15 @@
638
622
  "square-brackets": {
639
623
  "patterns": [
640
624
  {
641
- "begin": "\\s*+(\\[)",
642
- "end": "\\s*(\\])",
625
+ "begin": "\\s*+\\[",
626
+ "end": "\\s*\\]",
643
627
  "endCaptures": {
644
- "1": {
628
+ "0": {
645
629
  "name": "meta.brace.square.js"
646
630
  }
647
631
  },
648
632
  "beginCaptures": {
649
- "1": {
633
+ "0": {
650
634
  "name": "meta.brace.square.js"
651
635
  }
652
636
  },
@@ -661,15 +645,15 @@
661
645
  "curly-brackets": {
662
646
  "patterns": [
663
647
  {
664
- "begin": "\\s*+({)",
665
- "end": "\\s*(\\})",
648
+ "begin": "\\s*+\\{",
649
+ "end": "\\s*\\}",
666
650
  "endCaptures": {
667
- "1": {
651
+ "0": {
668
652
  "name": "meta.brace.curly.js"
669
653
  }
670
654
  },
671
655
  "beginCaptures": {
672
- "1": {
656
+ "0": {
673
657
  "name": "meta.brace.curly.js"
674
658
  }
675
659
  },
@@ -702,21 +686,15 @@
702
686
  },
703
687
  "comments": {
704
688
  "patterns": [
705
- {
706
- "include": "#flowtype-comments"
707
- },
708
689
  {
709
690
  "include": "#special-comments-conditional-compilation"
710
691
  },
711
692
  {
712
- "contentName": "comment.block.documentation.js",
713
- "begin": "\\s*+((/\\*\\*))(?!/)",
714
- "end": "(\\s*(\\*/))",
693
+ "name": "comment.block.documentation.js",
694
+ "begin": "\\s*+/\\*\\*(?!/)",
695
+ "end": "\\s*\\*/",
715
696
  "captures": {
716
- "1": {
717
- "name": "comment.block.documentation.js"
718
- },
719
- "2": {
697
+ "0": {
720
698
  "name": "punctuation.definition.comment.js"
721
699
  }
722
700
  },
@@ -727,45 +705,32 @@
727
705
  ]
728
706
  },
729
707
  {
730
- "contentName": "comment.block.js",
731
- "begin": "\\s*+((/\\*))",
732
- "end": "(\\s*(\\*/))",
708
+ "name": "comment.block.js",
709
+ "begin": "\\s*+/\\*",
710
+ "end": "\\s*\\*/",
733
711
  "captures": {
734
- "1": {
735
- "name": "comment.block.js"
736
- },
737
- "2": {
712
+ "0": {
738
713
  "name": "punctuation.definition.comment.js"
739
714
  }
740
715
  }
741
716
  },
742
717
  {
743
- "match": "\\s*+((<!--|-->))",
718
+ "name": "comment.block.html.js",
719
+ "match": "\\s*+(<!--|-->)",
744
720
  "captures": {
745
- "1": {
746
- "name": "comment.block.html.js"
747
- },
748
- "2": {
721
+ "0": {
749
722
  "name": "punctuation.definition.comment.js"
750
723
  }
751
724
  }
752
725
  },
753
726
  {
754
- "contentName": "comment.line.double-slash.js",
755
- "begin": "\\s*+((//))",
727
+ "name": "comment.line.double-slash.js",
728
+ "begin": "\\s*+(//)",
756
729
  "end": "\\s*$",
757
730
  "beginCaptures": {
758
731
  "1": {
759
- "name": "comment.line.double-slash.js"
760
- },
761
- "2": {
762
732
  "name": "punctuation.definition.comment.js"
763
733
  }
764
- },
765
- "endCaptures": {
766
- "0": {
767
- "name": "comment.line.double-slash.js"
768
- }
769
734
  }
770
735
  },
771
736
  {
@@ -782,14 +747,11 @@
782
747
  "special-comments-conditional-compilation": {
783
748
  "patterns": [
784
749
  {
785
- "contentName": "comment.block.conditional.js",
786
- "begin": "\\s*+((/\\*))(?=@)",
750
+ "name": "comment.block.conditional.js",
751
+ "begin": "\\s*+/\\*(?=@)",
787
752
  "end": "\\s*\\*/",
788
753
  "captures": {
789
- "1": {
790
- "name": "comment.block.conditional.js"
791
- },
792
- "2": {
754
+ "0": {
793
755
  "name": "punctuation.definition.comment.js"
794
756
  }
795
757
  },
@@ -844,24 +806,16 @@
844
806
  "literal-semi-colon": {
845
807
  "patterns": [
846
808
  {
847
- "match": "\\s*+(;)",
848
- "captures": {
849
- "1": {
850
- "name": "punctuation.terminator.statement.js"
851
- }
852
- }
809
+ "name": "punctuation.terminator.statement.js",
810
+ "match": "\\s*+\\;"
853
811
  }
854
812
  ]
855
813
  },
856
814
  "literal-comma": {
857
815
  "patterns": [
858
816
  {
859
- "match": "\\s*+(,)",
860
- "captures": {
861
- "1": {
862
- "name": "meta.delimiter.comma.js"
863
- }
864
- }
817
+ "name": "meta.delimiter.comma.js",
818
+ "match": "\\s*+,"
865
819
  }
866
820
  ]
867
821
  },
@@ -869,7 +823,7 @@
869
823
  "patterns": [
870
824
  {
871
825
  "begin": "\\s*+(?<!\\.)\\b(const|let|var)\\b",
872
- "end": "\\s*(?=;|\\b(if|switch|try|var|let|const|static|function|return|class|do|for|while|debugger|export|import|yield|type|declare|interface)\\b|\\)|})",
826
+ "end": "\\s*(?=\\;|\\b(if|switch|try|var|let|const|static|function|return|class|do|for|while|debugger|export|import|yield|type|declare|interface)\\b|\\)|})",
873
827
  "beginCaptures": {
874
828
  "1": {
875
829
  "name": "storage.type.js"
@@ -879,7 +833,7 @@
879
833
  {
880
834
  "comment": "other variables",
881
835
  "begin": "\\s*",
882
- "end": "\\s*((,)|(?=(;)|\\b(if|switch|try|var|let|const|static|function|return|class|do|for|while|debugger|export|import|yield|type|declare|interface)\\b|\\)|}))",
836
+ "end": "\\s*((,)|(?=(\\;)|\\b(if|switch|try|var|let|const|static|function|return|class|do|for|while|debugger|export|import|yield|type|declare|interface)\\b|\\)|}))",
883
837
  "endCaptures": {
884
838
  "2": {
885
839
  "name": "punctuation.terminator.statement.js"
@@ -901,7 +855,7 @@
901
855
  "comment": "e.g. function play<T>(arg1, arg2) { }",
902
856
  "name": "meta.function.js",
903
857
  "begin": "\\s*+(?:\\b(async)\\b\\s+)?\\s*+(?:(?<=\\.\\.\\.)|(?<!\\.))(\\bfunction\\b)\\s*+(\\*?)\\s*+([_$a-zA-Z][$\\w]*)?\\s*+(?=\\(|<)",
904
- "end": "\\s*(?=;|{|\\b(if|switch|try|var|let|const|static|function|return|class|do|for|while|debugger|export|import|yield|type|declare|interface)\\b|\\)|})",
858
+ "end": "\\s*(?=\\;|{|\\b(if|switch|try|var|let|const|static|function|return|class|do|for|while|debugger|export|import|yield|type|declare|interface)\\b|\\)|})",
905
859
  "applyEndPatternLast": 1,
906
860
  "beginCaptures": {
907
861
  "1": {
@@ -927,7 +881,7 @@
927
881
  "comment": "e.g. play = function(arg1, arg2) { }",
928
882
  "name": "meta.function.js",
929
883
  "begin": "\\s*+(\\b[_$a-zA-Z][$\\w]*)\\s*+(=)\\s*+(?:(async)\\s+)?\\s*+((?<!\\.)\\bfunction\\b)\\s*+(\\*?)\\s*+([_$a-zA-Z][$\\w]*)?\\s*+(?=\\(|<)",
930
- "end": "\\s*(?=;|{|\\b(if|switch|try|var|let|const|static|function|return|class|do|for|while|debugger|export|import|yield|type|declare|interface)\\b|\\)|})",
884
+ "end": "\\s*(?=\\;|{|\\b(if|switch|try|var|let|const|static|function|return|class|do|for|while|debugger|export|import|yield|type|declare|interface)\\b|\\)|})",
931
885
  "applyEndPatternLast": 1,
932
886
  "beginCaptures": {
933
887
  "1": {
@@ -959,7 +913,7 @@
959
913
  "comment": "e.g. Sound.prototype.play = function(arg1, arg2) { }",
960
914
  "name": "meta.prototype.function.js",
961
915
  "begin": "\\s*+(\\b_?[A-Z][$\\w]*)?(\\.)(prototype)(\\.)([_$a-zA-Z][$\\w]*)\\s*+(=)\\s*+(?:(async)\\s+)?\\s*+((?<!\\.)\\bfunction\\b)\\s*+(\\*?)\\s*+([_$a-zA-Z][$\\w]*)?\\s*+(?=\\(|<)",
962
- "end": "\\s*(?=;|{|\\b(if|switch|try|var|let|const|static|function|return|class|do|for|while|debugger|export|import|yield|type|declare|interface)\\b|\\)|})",
916
+ "end": "\\s*(?=\\;|{|\\b(if|switch|try|var|let|const|static|function|return|class|do|for|while|debugger|export|import|yield|type|declare|interface)\\b|\\)|})",
963
917
  "applyEndPatternLast": 1,
964
918
  "beginCaptures": {
965
919
  "1": {
@@ -1003,7 +957,7 @@
1003
957
  "comment": "e.g. Sound.play = function(arg1, arg2) { }",
1004
958
  "name": "meta.function.static.js",
1005
959
  "begin": "\\s*+(\\b_?[A-Z][$\\w]*)?(\\.)([_$a-zA-Z][$\\w]*)\\s*+(=)\\s*+(?:(async)\\s+)?\\s*+((?<!\\.)\\bfunction\\b)\\s*+(\\*?)\\s*+([_$a-zA-Z][$\\w]*)?\\s*+(?=\\(|<)",
1006
- "end": "\\s*(?=;|{|\\b(if|switch|try|var|let|const|static|function|return|class|do|for|while|debugger|export|import|yield|type|declare|interface)\\b|\\)|})",
960
+ "end": "\\s*(?=\\;|{|\\b(if|switch|try|var|let|const|static|function|return|class|do|for|while|debugger|export|import|yield|type|declare|interface)\\b|\\)|})",
1007
961
  "applyEndPatternLast": 1,
1008
962
  "beginCaptures": {
1009
963
  "1": {
@@ -1123,9 +1077,6 @@
1123
1077
  }
1124
1078
  },
1125
1079
  "patterns": [
1126
- {
1127
- "include": "#html-template"
1128
- },
1129
1080
  {
1130
1081
  "include": "#literal-function-labels"
1131
1082
  },
@@ -1154,71 +1105,36 @@
1154
1105
  "literal-operators": {
1155
1106
  "patterns": [
1156
1107
  {
1157
- "include": "#es7-function-bind"
1158
- },
1159
- {
1160
- "match": "\\s*+(?<!\\.)\\b(delete|in|instanceof|new|of|typeof|void|with)\\b",
1161
- "captures": {
1162
- "1": {
1163
- "name": "keyword.operator.js"
1164
- }
1165
- }
1108
+ "name": "keyword.operator.js",
1109
+ "match": "\\s*+(?<!\\.)\\b(delete|in|instanceof|new|of|typeof|void|with)\\b"
1166
1110
  },
1167
1111
  {
1168
- "match": "\\s*+(!(?!=)|&&|\\|\\|)",
1169
- "captures": {
1170
- "1": {
1171
- "name": "keyword.operator.logical.js"
1172
- }
1173
- }
1112
+ "name": "keyword.operator.logical.js",
1113
+ "match": "\\s*+(!(?!=)|&&|\\|\\|)"
1174
1114
  },
1175
1115
  {
1176
- "match": "\\s*+(=(?!(=|>)))",
1177
- "captures": {
1178
- "1": {
1179
- "name": "keyword.operator.assignment.js"
1180
- }
1181
- }
1116
+ "name": "keyword.operator.assignment.js",
1117
+ "match": "\\s*+(=(?!(=|>)))"
1182
1118
  },
1183
1119
  {
1184
- "match": "\\s*+(%=|&=|\\*=|\\+=|-=|/=|\\^=|\\|=|<<=|>>=|>>>=)",
1185
- "captures": {
1186
- "1": {
1187
- "name": "keyword.operator.assignment.augmented.js"
1188
- }
1189
- }
1120
+ "name": "keyword.operator.assignment.augmented.js",
1121
+ "match": "\\s*+(%=|&=|\\*=|\\+=|-=|/=|\\^=|\\|=|<<=|>>=|>>>=)"
1190
1122
  },
1191
1123
  {
1192
- "match": "\\s*+(~|<<|>>>|>>|&|\\^|\\|)",
1193
- "captures": {
1194
- "1": {
1195
- "name": "keyword.operator.bitwise.js"
1196
- }
1197
- }
1124
+ "name": "keyword.operator.bitwise.js",
1125
+ "match": "\\s*+(~|<<|>>>|>>|&|\\^|\\|)"
1198
1126
  },
1199
1127
  {
1200
- "match": "\\s*+(<=|>=|<|>)",
1201
- "captures": {
1202
- "1": {
1203
- "name": "keyword.operator.relational.js"
1204
- }
1205
- }
1128
+ "name": "keyword.operator.relational.js",
1129
+ "match": "\\s*+(<=|>=|<|>)"
1206
1130
  },
1207
1131
  {
1208
- "match": "\\s*+(===|!==|==|!=)",
1209
- "captures": {
1210
- "1": {
1211
- "name": "keyword.operator.comparison.js"
1212
- }
1213
- }
1132
+ "name": "keyword.operator.comparison.js",
1133
+ "match": "\\s*+(===|!==|==|!=)"
1214
1134
  },
1215
1135
  {
1216
- "match": "\\s*+(--|\\+\\+|/(?!/|\\*)|%|\\*(?<!/\\*)|\\+|-)",
1217
- "captures": {
1218
- "1": {
1219
- "name": "keyword.operator.arithmetic.js"
1220
- }
1221
- }
1136
+ "name": "keyword.operator.arithmetic.js",
1137
+ "match": "\\s*+(--|\\+\\+|/(?!/|\\*)|%|\\*(?<!/\\*)|\\+|-)"
1222
1138
  },
1223
1139
  {
1224
1140
  "comment": "ternary operator - make sure end : is consumed to avoid mistake as flow type",
@@ -1241,12 +1157,8 @@
1241
1157
  ]
1242
1158
  },
1243
1159
  {
1244
- "match": "\\s*+(?<!\\.)(\\.\\.\\.)",
1245
- "captures": {
1246
- "1": {
1247
- "name": "keyword.operator.spread.js"
1248
- }
1249
- }
1160
+ "name": "keyword.operator.spread.js",
1161
+ "match": "\\s*+(?<!\\.)\\.\\.\\."
1250
1162
  },
1251
1163
  {
1252
1164
  "name": "keyword.operator.accessor.js",
@@ -1340,84 +1252,56 @@
1340
1252
  "literal-language-constant": {
1341
1253
  "patterns": [
1342
1254
  {
1343
- "match": "\\s*+(?<!\\.)\\b((true)|(false)|(null)|(undefined)|(NaN))\\b",
1344
- "captures": {
1345
- "2": {
1346
- "name": "constant.language.boolean.true.js"
1347
- },
1348
- "3": {
1349
- "name": "constant.language.boolean.false.js"
1350
- },
1351
- "4": {
1352
- "name": "constant.language.null.js"
1353
- },
1354
- "5": {
1355
- "name": "constant.language.undefined.js"
1356
- },
1357
- "6": {
1358
- "name": "constant.language.nan.js"
1359
- }
1360
- }
1255
+ "name": "constant.language.boolean.true.js",
1256
+ "match": "\\s*+(?<!\\.)\\btrue\\b"
1257
+ },
1258
+ {
1259
+ "name": "constant.language.boolean.false.js",
1260
+ "match": "\\s*+(?<!\\.)\\bfalse\\b"
1261
+ },
1262
+ {
1263
+ "name": "constant.language.null.js",
1264
+ "match": "\\s*+(?<!\\.)\\bnull\\b"
1265
+ },
1266
+ {
1267
+ "name": "constant.language.undefined.js",
1268
+ "match": "\\s*+(?<!\\.)\\bundefined\\b"
1269
+ },
1270
+ {
1271
+ "name": "constant.language.nan.js",
1272
+ "match": "\\s*+(?<!\\.)\\bNaN\\b"
1361
1273
  }
1362
1274
  ]
1363
1275
  },
1364
1276
  "support": {
1365
1277
  "patterns": [
1366
1278
  {
1367
- "match": "\\s*+\\b(Array|ArrayBuffer|Boolean|DataView|Date|Float(32|64)Array|Int(8|16|32)Array|Function|GeneratorFunction|Map|Math|Number|Object|Promise|Proxy|RegExp|Set|String|Uint(8|16|32)Array|Uint8ClampedArray|WeakMap|WeakSet)\\b",
1368
- "captures": {
1369
- "1": {
1370
- "name": "support.class.builtin.js"
1371
- }
1372
- }
1279
+ "name": "support.class.builtin.js",
1280
+ "match": "\\s*+\\b(Array|ArrayBuffer|Boolean|DataView|Date|Float(32|64)Array|Int(8|16|32)Array|Function|GeneratorFunction|Map|Math|Number|Object|Promise|Proxy|RegExp|Set|String|Uint(8|16|32)Array|Uint8ClampedArray|WeakMap|WeakSet)\\b"
1373
1281
  },
1374
1282
  {
1375
- "match": "\\s*+(?<!\\.)\\b(decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|escape|eval|isFinite|isNaN|parseFloat|parseInt|unescape)\\b",
1376
- "captures": {
1377
- "1": {
1378
- "name": "support.function.js"
1379
- }
1380
- }
1283
+ "name": "support.function.js",
1284
+ "match": "\\s*+(?<!\\.)\\b(decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|escape|eval|isFinite|isNaN|parseFloat|parseInt|unescape)\\b"
1381
1285
  },
1382
1286
  {
1383
- "match": "(?<=\\.)(shift|sort|splice|unshift|pop|push|reverse)\\b",
1384
- "captures": {
1385
- "1": {
1386
- "name": "support.function.mutator.js"
1387
- }
1388
- }
1287
+ "name": "support.function.mutator.js",
1288
+ "match": "(?<=\\.)(shift|sort|splice|unshift|pop|push|reverse)\\b"
1389
1289
  },
1390
1290
  {
1391
- "match": "\\s*+(?<!\\.)\\b((Eval|Range|Reference|Syntax|Type|URI)?Error)\\b",
1392
- "captures": {
1393
- "1": {
1394
- "name": "support.class.error.js"
1395
- }
1396
- }
1291
+ "name": "support.class.error.js",
1292
+ "match": "\\s*+(?<!\\.)\\b((Eval|Range|Reference|Syntax|Type|URI)?Error)\\b"
1397
1293
  },
1398
1294
  {
1399
- "match": "\\s*+(?<!\\.)\\b(debugger)\\b",
1400
- "captures": {
1401
- "1": {
1402
- "name": "keyword.other.js"
1403
- }
1404
- }
1295
+ "name": "keyword.other.js",
1296
+ "match": "\\s*+(?<!\\.)\\b(debugger)\\b"
1405
1297
  },
1406
1298
  {
1407
- "match": "\\s*+(?<!\\.)\\b(document|window)\\b",
1408
- "captures": {
1409
- "1": {
1410
- "name": "support.type.object.dom.js"
1411
- }
1412
- }
1299
+ "name": "support.type.object.dom.js",
1300
+ "match": "\\s*+(?<!\\.)\\b(document|window)\\b"
1413
1301
  },
1414
1302
  {
1415
- "match": "\\s*+\\b(ELEMENT_NODE|ATTRIBUTE_NODE|TEXT_NODE|CDATA_SECTION_NODE|ENTITY_REFERENCE_NODE|ENTITY_NODE|PROCESSING_INSTRUCTION_NODE|COMMENT_NODE|DOCUMENT_NODE|DOCUMENT_TYPE_NODE|DOCUMENT_FRAGMENT_NODE|NOTATION_NODE|INDEX_SIZE_ERR|DOMSTRING_SIZE_ERR|HIERARCHY_REQUEST_ERR|WRONG_DOCUMENT_ERR|INVALID_CHARACTER_ERR|NO_DATA_ALLOWED_ERR|NO_MODIFICATION_ALLOWED_ERR|NOT_FOUND_ERR|NOT_SUPPORTED_ERR|INUSE_ATTRIBUTE_ERR)\\b",
1416
- "captures": {
1417
- "1": {
1418
- "name": "support.constant.dom.js"
1419
- }
1420
- }
1303
+ "name": "support.constant.dom.js",
1304
+ "match": "\\s*+\\b(ELEMENT_NODE|ATTRIBUTE_NODE|TEXT_NODE|CDATA_SECTION_NODE|ENTITY_REFERENCE_NODE|ENTITY_NODE|PROCESSING_INSTRUCTION_NODE|COMMENT_NODE|DOCUMENT_NODE|DOCUMENT_TYPE_NODE|DOCUMENT_FRAGMENT_NODE|NOTATION_NODE|INDEX_SIZE_ERR|DOMSTRING_SIZE_ERR|HIERARCHY_REQUEST_ERR|WRONG_DOCUMENT_ERR|INVALID_CHARACTER_ERR|NO_DATA_ALLOWED_ERR|NO_MODIFICATION_ALLOWED_ERR|NOT_FOUND_ERR|NOT_SUPPORTED_ERR|INUSE_ATTRIBUTE_ERR)\\b"
1421
1305
  },
1422
1306
  {
1423
1307
  "match": "\\s*+(?<!\\.)\\b(console)(?:(\\.)(warn|info|log|error|time|timeEnd|assert))?\\b",
@@ -1476,30 +1360,17 @@
1476
1360
  }
1477
1361
  },
1478
1362
  {
1479
- "match": "\\s*+(?<!\\.)\\b(global|GLOBAL|root|__dirname|__filename)\\b",
1480
- "captures": {
1481
- "1": {
1482
- "name": "support.type.object.node.js"
1483
- }
1484
- }
1363
+ "name": "support.type.object.node.js",
1364
+ "match": "\\s*+(?<!\\.)\\b(global|GLOBAL|root|__dirname|__filename)\\b"
1485
1365
  },
1486
1366
  {
1487
- "match": "\\s*+\\b(Buffer|EventEmitter|Server|Pipe|Socket|REPLServer|ReadStream|WriteStream|Stream|Inflate|Deflate|InflateRaw|DeflateRaw|GZip|GUnzip|Unzip|Zip)\\b",
1488
- "captures": {
1489
- "1": {
1490
- "name": "support.class.node.js"
1491
- }
1492
- }
1367
+ "name": "support.class.node.js",
1368
+ "match": "\\s*+\\b(Buffer|EventEmitter|Server|Pipe|Socket|REPLServer|ReadStream|WriteStream|Stream|Inflate|Deflate|InflateRaw|DeflateRaw|GZip|GUnzip|Unzip|Zip)\\b"
1493
1369
  },
1494
1370
  {
1495
- "contentName": "meta.tag.mustache.js",
1496
- "begin": "\\s*+({{)",
1497
- "end": "(\\s*}})",
1498
- "captures": {
1499
- "1": {
1500
- "name": "meta.tag.mustache.js"
1501
- }
1502
- }
1371
+ "name": "meta.tag.mustache.js",
1372
+ "begin": "\\s*+{{",
1373
+ "end": "\\s*}}"
1503
1374
  }
1504
1375
  ]
1505
1376
  },
@@ -1507,24 +1378,24 @@
1507
1378
  "patterns": [
1508
1379
  {
1509
1380
  "comment": "Classes",
1510
- "begin": "\\s*+(?<!\\.)\\b((class))\\s+",
1381
+ "begin": "\\s*+(?<!\\.)\\b(class)\\s+",
1511
1382
  "end": "\\s*(?<=})",
1512
1383
  "beginCaptures": {
1513
- "1": {
1384
+ "0": {
1514
1385
  "name": "meta.class.js"
1515
1386
  },
1516
- "2": {
1387
+ "1": {
1517
1388
  "name": "storage.type.class.js"
1518
1389
  }
1519
1390
  },
1520
1391
  "patterns": [
1521
1392
  {
1522
- "match": "\\s*+\\b((extends))\\b\\s*+",
1393
+ "match": "\\s*+\\b(extends)\\b\\s*+",
1523
1394
  "captures": {
1524
- "1": {
1395
+ "0": {
1525
1396
  "name": "meta.class.extends.js"
1526
1397
  },
1527
- "2": {
1398
+ "1": {
1528
1399
  "name": "storage.type.extends.js"
1529
1400
  }
1530
1401
  }
@@ -1532,21 +1403,17 @@
1532
1403
  {
1533
1404
  "comment": "look for classes names but dont assume uppercase start char",
1534
1405
  "match": "(?<!\\.)\\s*+([$_\\p{L}](?:[$\\p{L}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Nl}\\p{Pc}])*+)",
1535
- "captures": {
1536
- "1": {
1537
- "name": "entity.name.class.js"
1538
- }
1539
- }
1406
+ "name": "entity.name.class.js"
1540
1407
  },
1541
1408
  {
1542
1409
  "include": "#flowtype-polymorphs"
1543
1410
  },
1544
1411
  {
1545
- "begin": "\\s*+({)",
1412
+ "begin": "\\s*+{",
1546
1413
  "end": "\\s*(})",
1547
1414
  "contentName": "meta.class.body.js",
1548
1415
  "beginCaptures": {
1549
- "1": {
1416
+ "0": {
1550
1417
  "name": "punctuation.section.class.begin.js"
1551
1418
  }
1552
1419
  },
@@ -1601,12 +1468,8 @@
1601
1468
  ]
1602
1469
  },
1603
1470
  {
1604
- "match": "\\s*+(?<!\\.)\\b(static)\\b(?!\\.)",
1605
- "captures": {
1606
- "1": {
1607
- "name": "storage.modifier.js"
1608
- }
1609
- }
1471
+ "match": "\\s*+\\b(?<!\\.)static\\b(?!\\.)",
1472
+ "name": "storage.modifier.js"
1610
1473
  },
1611
1474
  {
1612
1475
  "include": "#flowtype-variable"
@@ -1692,60 +1555,32 @@
1692
1555
  "literal-language-variable": {
1693
1556
  "patterns": [
1694
1557
  {
1695
- "match": "\\s*+(?<!(?<!\\.\\.)\\.)\\b(arguments)\\b",
1696
- "captures": {
1697
- "1": {
1698
- "name": "variable.language.arguments.js"
1699
- }
1700
- }
1558
+ "name": "variable.language.arguments.js",
1559
+ "match": "\\s*+(?<!(?<!\\.\\.)\\.)\\b(arguments)\\b"
1701
1560
  },
1702
1561
  {
1703
- "match": "\\s*+(?<!(?<!\\.\\.)\\.)\\b(super)\\b\\s*+(?!\\()",
1704
- "captures": {
1705
- "1": {
1706
- "name": "variable.language.super.js"
1707
- }
1708
- }
1562
+ "name": "variable.language.super.js",
1563
+ "match": "\\s*+(?<!(?<!\\.\\.)\\.)\\b(super)\\b\\s*+(?!\\()"
1709
1564
  },
1710
1565
  {
1711
- "match": "\\s*+(?<!(?<!\\.\\.)\\.)\\b(this)\\b",
1712
- "captures": {
1713
- "1": {
1714
- "name": "variable.language.this.js"
1715
- }
1716
- }
1566
+ "name": "variable.language.this.js",
1567
+ "match": "\\s*+(?<!(?<!\\.\\.)\\.)\\b(this)\\b"
1717
1568
  },
1718
1569
  {
1719
- "match": "\\s*+(?<!(?<!\\.\\.)\\.)\\b(self)\\b\\s*+(?!\\()",
1720
- "captures": {
1721
- "1": {
1722
- "name": "variable.language.self.js"
1723
- }
1724
- }
1570
+ "name": "variable.language.self.js",
1571
+ "match": "\\s*+(?<!(?<!\\.\\.)\\.)\\b(self)\\b\\s*+(?!\\()"
1725
1572
  },
1726
1573
  {
1727
- "match": "\\s*+(?<=\\.)\\b(__proto__)\\b",
1728
- "captures": {
1729
- "1": {
1730
- "name": "variable.language.proto.js"
1731
- }
1732
- }
1574
+ "name": "variable.language.proto.js",
1575
+ "match": "\\s*+(?<=\\.)\\b(__proto__)\\b"
1733
1576
  },
1734
1577
  {
1735
- "match": "\\s*+(?<=\\.)\\b(constructor)\\b\\s*+(?!\\()",
1736
- "captures": {
1737
- "1": {
1738
- "name": "variable.language.constructor.js"
1739
- }
1740
- }
1578
+ "name": "variable.language.constructor.js",
1579
+ "match": "\\s*+(?<=\\.)\\b(constructor)\\b\\s*+(?!\\()"
1741
1580
  },
1742
1581
  {
1743
- "match": "\\s*+(?<=\\.)\\b(prototype)\\b",
1744
- "captures": {
1745
- "1": {
1746
- "name": "variable.language.prototype.js"
1747
- }
1748
- }
1582
+ "name": "variable.language.prototype.js",
1583
+ "match": "\\s*+(?<=\\.)\\b(prototype)\\b"
1749
1584
  }
1750
1585
  ]
1751
1586
  },
@@ -1761,7 +1596,7 @@
1761
1596
  },
1762
1597
  {
1763
1598
  "name": "constant.character.escape",
1764
- "match": "\\\\u(({[0-9a-fA-F]+\\})|[0-9a-fA-F]{4})"
1599
+ "match": "\\\\u((\\{[0-9a-fA-F]+\\})|[0-9a-fA-F]{4})"
1765
1600
  },
1766
1601
  {
1767
1602
  "name": "constant.character.escape",
@@ -1822,7 +1657,7 @@
1822
1657
  {
1823
1658
  "comment": "e.g. (args) => { }",
1824
1659
  "name": "meta.function.arrow.js",
1825
- "begin": "\\s*+(\\basync\\b)?\\s*+(?=(<(?:(?>[^<>]+)|\\g<-1>)*>)?\\s*+(\\((?:(?>[^()]+)|\\g<-1>)*\\))\\s*+(((?::(?:(\\s*+(&|\\|)?(\\s*+[$_a-zA-Z0-9]+(<(?:(?>[^<>]+)|\\g<-1>)*>)?|\\s*+({(?:(?>[^{}]+)|\\g<-1>)*\\})|\\s*+(\\[(?:(?>[^\\[\\]]+)|\\g<-1>)*\\])|\\s*+(\\s*([\"']).*?\\k<-1>(?<!\\\\.))|\\s*[x0-9A-Fa-f]+))|(?:\\s*+/\\*.*?\\*/))*+)*)|(?:/\\*.*?\\*/))(((?<=checks)|(\\s*\\bchecks))\\b\\s*(\\((?:(?>[^()]+)|\\g<-1>)*\\))?)?\\s*=>)",
1660
+ "begin": "\\s*+(\\basync\\b)?\\s*+(?=(<(?:(?>[^<>]+)|\\g<-1>)*>)?\\s*+(\\((?:(?>[^()]+)|\\g<-1>)*\\))\\s*+(?:\\s*:(\\s*+(&|\\|)?(\\s*+[$_a-zA-Z0-9]+(<(?:(?>[^<>]+)|\\g<-1>)*>)?|\\s*+(\\{(?:(?>[^{}]+)|\\g<-1>)*\\})|\\s*+(\\[(?:(?>[^\\[\\]]+)|\\g<-1>)*\\])|\\s*+(\\s*([\"']).*?\\k<-1>(?<!\\\\.))|\\s*[x0-9A-Fa-f]+))*+)*\\s*=>)",
1826
1661
  "end": "\\s*(=>)",
1827
1662
  "applyEndPatternLast": 1,
1828
1663
  "endCaptures": {
@@ -1860,7 +1695,7 @@
1860
1695
  {
1861
1696
  "comment": "e.g. play = (args) => { }",
1862
1697
  "name": "meta.function.arrow.js",
1863
- "begin": "\\s*+(\\b[_$a-zA-Z][$\\w]*)\\s*+(=)\\s*+(\\basync\\b)?\\s*+(?=(<(?:(?>[^<>]+)|\\g<-1>)*>)?\\s*+(\\((?:(?>[^()]+)|\\g<-1>)*\\))\\s*+(((?::(?:(\\s*+(&|\\|)?(\\s*+[$_a-zA-Z0-9]+(<(?:(?>[^<>]+)|\\g<-1>)*>)?|\\s*+({(?:(?>[^{}]+)|\\g<-1>)*\\})|\\s*+(\\[(?:(?>[^\\[\\]]+)|\\g<-1>)*\\])|\\s*+(\\s*([\"']).*?\\k<-1>(?<!\\\\.))|\\s*[x0-9A-Fa-f]+))|(?:\\s*+/\\*.*?\\*/))*+)*)|(?:/\\*.*?\\*/))(((?<=checks)|(\\s*\\bchecks))\\b\\s*(\\((?:(?>[^()]+)|\\g<-1>)*\\))?)?\\s*=>)",
1698
+ "begin": "\\s*+(\\b[_$a-zA-Z][$\\w]*)\\s*+(=)\\s*+(\\basync\\b)?\\s*+(?=(<(?:(?>[^<>]+)|\\g<-1>)*>)?\\s*+(\\((?:(?>[^()]+)|\\g<-1>)*\\))\\s*+(?:\\s*:(\\s*+(&|\\|)?(\\s*+[$_a-zA-Z0-9]+(<(?:(?>[^<>]+)|\\g<-1>)*>)?|\\s*+(\\{(?:(?>[^{}]+)|\\g<-1>)*\\})|\\s*+(\\[(?:(?>[^\\[\\]]+)|\\g<-1>)*\\])|\\s*+(\\s*([\"']).*?\\k<-1>(?<!\\\\.))|\\s*[x0-9A-Fa-f]+))*+)*\\s*=>)",
1864
1699
  "end": "\\s*(=>)",
1865
1700
  "applyEndPatternLast": 1,
1866
1701
  "beginCaptures": {
@@ -1910,7 +1745,7 @@
1910
1745
  {
1911
1746
  "comment": "Sound.prototype.play = (args) => { }",
1912
1747
  "name": "meta.prototype.function.arrow.js",
1913
- "begin": "\\s*+(\\b[A-Z][$\\w]*)?(\\.)(prototype)(\\.)([_$a-zA-Z][$\\w]*)\\s*+(=)\\s*+(\\basync\\b)?\\s*+(?=(<(?:(?>[^<>]+)|\\g<-1>)*>)?\\s*+(\\((?:(?>[^()]+)|\\g<-1>)*\\))\\s*+(((?::(?:(\\s*+(&|\\|)?(\\s*+[$_a-zA-Z0-9]+(<(?:(?>[^<>]+)|\\g<-1>)*>)?|\\s*+({(?:(?>[^{}]+)|\\g<-1>)*\\})|\\s*+(\\[(?:(?>[^\\[\\]]+)|\\g<-1>)*\\])|\\s*+(\\s*([\"']).*?\\k<-1>(?<!\\\\.))|\\s*[x0-9A-Fa-f]+))|(?:\\s*+/\\*.*?\\*/))*+)*)|(?:/\\*.*?\\*/))(((?<=checks)|(\\s*\\bchecks))\\b\\s*(\\((?:(?>[^()]+)|\\g<-1>)*\\))?)?\\s*=>)",
1748
+ "begin": "\\s*+(\\b[A-Z][$\\w]*)?(\\.)(prototype)(\\.)([_$a-zA-Z][$\\w]*)\\s*+(=)\\s*+(\\basync\\b)?\\s*+(?=(<(?:(?>[^<>]+)|\\g<-1>)*>)?\\s*+(\\((?:(?>[^()]+)|\\g<-1>)*\\))\\s*+(?:\\s*:(\\s*+(&|\\|)?(\\s*+[$_a-zA-Z0-9]+(<(?:(?>[^<>]+)|\\g<-1>)*>)?|\\s*+(\\{(?:(?>[^{}]+)|\\g<-1>)*\\})|\\s*+(\\[(?:(?>[^\\[\\]]+)|\\g<-1>)*\\])|\\s*+(\\s*([\"']).*?\\k<-1>(?<!\\\\.))|\\s*[x0-9A-Fa-f]+))*+)*\\s*=>)",
1914
1749
  "end": "\\s*(=>)",
1915
1750
  "applyEndPatternLast": 1,
1916
1751
  "beginCaptures": {
@@ -1984,7 +1819,7 @@
1984
1819
  {
1985
1820
  "comment": "e.g. Sound.play = (args) => { }",
1986
1821
  "name": "meta.function.static.arrow.js",
1987
- "begin": "\\s*+(\\b_?[A-Z][$\\w]*)?(\\.)([_$a-zA-Z][$\\w]*)\\s*+(=)\\s*+(\\basync\\b)?\\s*+(?=(<(?:(?>[^<>]+)|\\g<-1>)*>)?\\s*+(\\((?:(?>[^()]+)|\\g<-1>)*\\))\\s*+(((?::(?:(\\s*+(&|\\|)?(\\s*+[$_a-zA-Z0-9]+(<(?:(?>[^<>]+)|\\g<-1>)*>)?|\\s*+({(?:(?>[^{}]+)|\\g<-1>)*\\})|\\s*+(\\[(?:(?>[^\\[\\]]+)|\\g<-1>)*\\])|\\s*+(\\s*([\"']).*?\\k<-1>(?<!\\\\.))|\\s*[x0-9A-Fa-f]+))|(?:\\s*+/\\*.*?\\*/))*+)*)|(?:/\\*.*?\\*/))(((?<=checks)|(\\s*\\bchecks))\\b\\s*(\\((?:(?>[^()]+)|\\g<-1>)*\\))?)?\\s*=>)",
1822
+ "begin": "\\s*+(\\b_?[A-Z][$\\w]*)?(\\.)([_$a-zA-Z][$\\w]*)\\s*+(=)\\s*+(\\basync\\b)?\\s*+(?=(<(?:(?>[^<>]+)|\\g<-1>)*>)?\\s*+(\\((?:(?>[^()]+)|\\g<-1>)*\\))\\s*+(?:\\s*:(\\s*+(&|\\|)?(\\s*+[$_a-zA-Z0-9]+(<(?:(?>[^<>]+)|\\g<-1>)*>)?|\\s*+(\\{(?:(?>[^{}]+)|\\g<-1>)*\\})|\\s*+(\\[(?:(?>[^\\[\\]]+)|\\g<-1>)*\\])|\\s*+(\\s*([\"']).*?\\k<-1>(?<!\\\\.))|\\s*[x0-9A-Fa-f]+))*+)*\\s*=>)",
1988
1823
  "end": "\\s*(=>)",
1989
1824
  "applyEndPatternLast": 1,
1990
1825
  "beginCaptures": {
@@ -2051,7 +1886,7 @@
2051
1886
  {
2052
1887
  "comment": "e.g. play<T,T>(arg1, arg2): Type<T> { }",
2053
1888
  "name": "meta.function.method.js",
2054
- "begin": "(?:^|;)\\s*+(\\bstatic\\b)?\\s*+(\\basync\\b)?\\s*+(\\*?)\\s*+(?<!\\.)(?!\\b(break|case|catch|continue|do|else|finally|for|function|if|export|import|package|return|switch|throw|try|while|with)\\b)([_$a-zA-Z][$\\w]*)\\s*+(?=(<(?:(?>[^<>]+)|\\g<-1>)*>)?(\\((?:(?>[^()]+)|\\g<-1>)*\\))\\s*+(?:\\s*:(\\s*+(&|\\|)?(\\s*+[$_a-zA-Z0-9]+(<(?:(?>[^<>]+)|\\g<-1>)*>)?|\\s*+({(?:(?>[^{}]+)|\\g<-1>)*\\})|\\s*+(\\[(?:(?>[^\\[\\]]+)|\\g<-1>)*\\])|\\s*+(\\s*([\"']).*?\\k<-1>(?<!\\\\.))|\\s*[x0-9A-Fa-f]+))*+)*\\s*{)",
1889
+ "begin": "(?:^|;)\\s*+(\\bstatic\\b)?\\s*+(\\basync\\b)?\\s*+(\\*?)\\s*+(?<!\\.)(?!\\b(break|case|catch|continue|do|else|finally|for|function|if|export|import|package|return|switch|throw|try|while|with)\\b)([_$a-zA-Z][$\\w]*)\\s*+(?=(<(?:(?>[^<>]+)|\\g<-1>)*>)?(\\((?:(?>[^()]+)|\\g<-1>)*\\))\\s*+(?:\\s*:(\\s*+(&|\\|)?(\\s*+[$_a-zA-Z0-9]+(<(?:(?>[^<>]+)|\\g<-1>)*>)?|\\s*+(\\{(?:(?>[^{}]+)|\\g<-1>)*\\})|\\s*+(\\[(?:(?>[^\\[\\]]+)|\\g<-1>)*\\])|\\s*+(\\s*([\"']).*?\\k<-1>(?<!\\\\.))|\\s*[x0-9A-Fa-f]+))*+)*\\s*\\{)",
2055
1890
  "end": "\\s*(?=.)",
2056
1891
  "applyEndPatternLast": 1,
2057
1892
  "beginCaptures": {
@@ -2107,7 +1942,7 @@
2107
1942
  {
2108
1943
  "comment": "e.g. 'play'<T,T>(arg1, arg2): Type<T> { }",
2109
1944
  "name": "meta.function.method.js",
2110
- "begin": "(?<!:)\\s*+(\\bstatic\\b)?\\s*+(\\basync\\b)?\\s*+(\\*?)\\s*+(?<!\\.)(('|\")([^\"']*)(\\k<-3>))\\s*+(?=(<(?:(?>[^<>]+)|\\g<-1>)*>)?(\\())",
1945
+ "begin": "(?<!:)\\s*+(\\bstatic\\b)?\\s*+(\\basync\\b)?\\s*+(\\*?)\\s*+(?<!\\.)(('|\\\")([^\"']*)(\\k<-3>))\\s*+(?=(<(?:(?>[^<>]+)|\\g<-1>)*>)?(\\())",
2111
1946
  "end": "\\s*(?=.)",
2112
1947
  "applyEndPatternLast": 1,
2113
1948
  "beginCaptures": {
@@ -2305,209 +2140,16 @@
2305
2140
  "literal-module": {
2306
2141
  "patterns": [
2307
2142
  {
2308
- "include": "#literal-module-import"
2143
+ "name": "keyword.control.module.js",
2144
+ "match": "\\s*+(?<!\\.)\\b(import|export|default)\\b"
2309
2145
  },
2310
2146
  {
2311
- "include": "#literal-module-export"
2147
+ "name": "keyword.control.module.reference.js",
2148
+ "match": "\\s*+(?<!\\.)\\b(from|as)\\b"
2312
2149
  }
2313
2150
  ]
2314
2151
  },
2315
- "literal-module-import": {
2316
- "begin": "\\s*+(?<!\\.)\\b(import)(?!\\s*:)\\b",
2317
- "end": "\\s*(?:(?:(\\bfrom\\b)?+\\s++(('|\")([^\"']*)(\\k<-3>)))|(?=;|^\\s*\\b(if|switch|try|var|let|const|static|function|return|class|do|for|while|debugger|export|import|yield|type|declare|interface)\\b|\\)|}))",
2318
- "beginCaptures": {
2319
- "1": {
2320
- "name": "keyword.control.module.js"
2321
- }
2322
- },
2323
- "endCaptures": {
2324
- "1": {
2325
- "name": "keyword.control.module.js"
2326
- },
2327
- "3": {
2328
- "name": "punctuation.definition.string.begin.js"
2329
- },
2330
- "4": {
2331
- "name": "string.quoted.module.js"
2332
- },
2333
- "5": {
2334
- "name": "punctuation.definition.string.begin.js"
2335
- }
2336
- },
2337
- "patterns": [
2338
- {
2339
- "match": "\\s*\\b(default)\\b",
2340
- "captures": {
2341
- "1": {
2342
- "name": "keyword.control.module.js"
2343
- }
2344
- }
2345
- },
2346
- {
2347
- "match": "\\s*\\b(typeof|type)\\b\\s++(?={|[$_a-zA-Z])(?!\\b(instanceof|in|as)\\b|,)",
2348
- "captures": {
2349
- "1": {
2350
- "name": "keyword.other.typedef.flowtype"
2351
- }
2352
- }
2353
- },
2354
- {
2355
- "name": "keyword.operator.module.all.js",
2356
- "match": "\\*"
2357
- },
2358
- {
2359
- "include": "#literal-module-as"
2360
- },
2361
- {
2362
- "include": "#literal-module-brackets"
2363
- },
2364
- {
2365
- "include": "#literal-variable"
2366
- },
2367
- {
2368
- "include": "#comments"
2369
- },
2370
- {
2371
- "include": "#literal-comma"
2372
- }
2373
- ]
2374
- },
2375
- "literal-module-export": {
2376
- "patterns": [
2377
- {
2378
- "comment": "e.g. export let variable =, export type a=",
2379
- "match": "\\s*+(?<!\\.)\\b(export)(?!\\s*:)\\b(?=\\s++(let|type|typeof)\\s++[$_a-zA-Z])",
2380
- "captures": {
2381
- "1": {
2382
- "name": "keyword.control.module.js"
2383
- }
2384
- }
2385
- },
2386
- {
2387
- "comment": "export { or export * or export var from module",
2388
- "begin": "\\s*+(?<!\\.)\\b(export)\\b(?=\\s++({|\\*|[$_a-zA-Z][$_\\w]*(\\s++from\\b|\\s*,)))",
2389
- "end": "\\s*(?:(?:(\\bfrom\\b)?+\\s++(('|\")([^\"']*)(\\k<-3>)))|(?=;|^\\s*\\b(if|switch|try|var|let|const|static|function|return|class|do|for|while|debugger|export|import|yield|type|declare|interface)\\b|\\)|}))",
2390
- "beginCaptures": {
2391
- "1": {
2392
- "name": "keyword.control.module.js"
2393
- }
2394
- },
2395
- "endCaptures": {
2396
- "1": {
2397
- "name": "keyword.control.module.js"
2398
- },
2399
- "3": {
2400
- "name": "punctuation.definition.string.begin.js"
2401
- },
2402
- "4": {
2403
- "name": "string.quoted.module.js"
2404
- },
2405
- "5": {
2406
- "name": "punctuation.definition.string.begin.js"
2407
- }
2408
- },
2409
- "patterns": [
2410
- {
2411
- "name": "keyword.operator.module.all.js",
2412
- "match": "\\*"
2413
- },
2414
- {
2415
- "include": "#literal-module-as"
2416
- },
2417
- {
2418
- "include": "#literal-module-brackets"
2419
- },
2420
- {
2421
- "include": "#literal-variable"
2422
- },
2423
- {
2424
- "include": "#comments"
2425
- },
2426
- {
2427
- "include": "#literal-comma"
2428
- }
2429
- ]
2430
- },
2431
- {
2432
- "comment": "trap expressions among - export function* () {}",
2433
- "match": "\\s*+(?<!\\.)\\b(export|default)(?!\\s*:)\\b",
2434
- "captures": {
2435
- "1": {
2436
- "name": "keyword.control.module.js"
2437
- }
2438
- }
2439
- }
2440
- ]
2441
- },
2442
- "literal-module-as": {
2443
- "match": "\\s*+(?:(\\*)|([$_a-zA-Z][$_\\w]*))\\s++(\\bas\\b)\\s++(?:(\\bdefault\\b)|([$_a-zA-Z][$_\\w]*))",
2444
- "captures": {
2445
- "1": {
2446
- "name": "keyword.operator.module.all.js"
2447
- },
2448
- "2": {
2449
- "name": "variable.other.readwrite.js"
2450
- },
2451
- "3": {
2452
- "name": "keyword.control.module.reference.js"
2453
- },
2454
- "4": {
2455
- "name": "keyword.control.module.js"
2456
- },
2457
- "5": {
2458
- "name": "variable.other.readwrite.js"
2459
- }
2460
- }
2461
- },
2462
- "literal-module-brackets": {
2463
- "patterns": [
2464
- {
2465
- "begin": "\\s*+(?:({)|(\\[))",
2466
- "end": "\\s*(?:(\\})|(\\]))",
2467
- "beginCaptures": {
2468
- "1": {
2469
- "name": "meta.brace.curly.js"
2470
- },
2471
- "2": {
2472
- "name": "meta.brace.square.js"
2473
- }
2474
- },
2475
- "endCaptures": {
2476
- "1": {
2477
- "name": "meta.brace.curly.js"
2478
- },
2479
- "2": {
2480
- "name": "meta.brace.square.js"
2481
- }
2482
- },
2483
- "patterns": [
2484
- {
2485
- "name": "keyword.operator.module.all.js",
2486
- "match": "\\*"
2487
- },
2488
- {
2489
- "include": "#literal-module-as"
2490
- },
2491
- {
2492
- "include": "#literal-module-brackets"
2493
- },
2494
- {
2495
- "include": "#literal-variable"
2496
- },
2497
- {
2498
- "include": "#literal-string"
2499
- },
2500
- {
2501
- "include": "#comments"
2502
- },
2503
- {
2504
- "include": "#literal-comma"
2505
- }
2506
- ]
2507
- }
2508
- ]
2509
- },
2510
- "literal-variable": {
2152
+ "literal-variable": {
2511
2153
  "patterns": [
2512
2154
  {
2513
2155
  "comment": "e.g. CONSTANT",
@@ -2614,24 +2256,11 @@
2614
2256
  }
2615
2257
  ]
2616
2258
  },
2617
- "es7-function-bind": {
2618
- "patterns": [
2619
- {
2620
- "comment": "https://github.com/zenparsing/es-function-bind#examples",
2621
- "match": "\\s*(::)",
2622
- "captures": {
2623
- "1": {
2624
- "name": "keyword.operator.accessor.js"
2625
- }
2626
- }
2627
- }
2628
- ]
2629
- },
2630
2259
  "jsx": {
2631
2260
  "comment": "Avoid < operator expressions as best we can using Zertosh's regex",
2632
2261
  "patterns": [
2633
2262
  {
2634
- "begin": "(?<=\\(|{|\\[|,|&&|\\|\\||\\?|:|=|=>|\\Wreturn|^return|\\Wdefault|^)\\s*+(?=<[$_\\p{L}])",
2263
+ "begin": "(?<=\\(|\\{|\\[|,|&&|\\|\\||\\?|:|=|=>|\\Wreturn|^return|\\Wdefault|^)\\s*+(?=<[$_\\p{L}])",
2635
2264
  "end": "(?=.)",
2636
2265
  "applyEndPatternLast": 1,
2637
2266
  "patterns": [
@@ -2647,7 +2276,6 @@
2647
2276
  {
2648
2277
  "comment": "Tags that end > are trapped in #jsx-tag-termination",
2649
2278
  "name": "meta.tag.jsx",
2650
- "contentName": "JSXAttrs",
2651
2279
  "begin": "\\s*+(<)((\\p{Ll}[\\p{Ll}0-9]*)|((?:[$_\\p{L}\\p{Nl}][$_\\p{L}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Nl}\\p{Pc}-]*?:)?+(?:[$_\\p{L}\\p{Nl}](?:[$_\\p{L}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Nl}\\p{Pc}\\.-](?<!\\.\\.))*+)+))(?=[ />\\s])(?![:])(?<!\\.|:)",
2652
2280
  "end": "\\s*(?<=</)((\\4)|\\2)(>)|(/>)|((?<=</)[\\S ]*?)>",
2653
2281
  "beginCaptures": {
@@ -2693,7 +2321,6 @@
2693
2321
  "patterns": [
2694
2322
  {
2695
2323
  "comment": "uses non consuming search for </ in </tag>",
2696
- "contentName": "JSXNested",
2697
2324
  "begin": "(>)",
2698
2325
  "end": "(</)",
2699
2326
  "beginCaptures": {
@@ -2823,52 +2450,32 @@
2823
2450
  ]
2824
2451
  },
2825
2452
  "jsx-evaluated-code": {
2453
+ "name": "meta.embedded.expression.js",
2454
+ "begin": "{",
2455
+ "end": "}",
2456
+ "beginCaptures": {
2457
+ "0": {
2458
+ "name": "punctuation.section.embedded.begin.jsx"
2459
+ }
2460
+ },
2461
+ "endCaptures": {
2462
+ "0": {
2463
+ "name": "punctuation.section.embedded.end.jsx"
2464
+ }
2465
+ },
2466
+ "contentName": "source.js.jsx",
2826
2467
  "patterns": [
2827
2468
  {
2828
- "name": "meta.embedded.expression.commented-out.jsx",
2829
- "contentName": "comment.embedded.jsx",
2830
- "begin": "^\\s*({/\\*)",
2831
- "end": "\\s*(\\*/})",
2832
- "beginCaptures": {
2833
- "1": {
2834
- "name": "punctuation.section.embedded.begin.jsx"
2835
- }
2836
- },
2837
- "endCaptures": {
2838
- "1": {
2839
- "name": "punctuation.section.embedded.end.jsx"
2840
- }
2841
- }
2469
+ "include": "#jsx-string-double-quoted"
2842
2470
  },
2843
2471
  {
2844
- "name": "meta.embedded.expression.js",
2845
- "contentName": "source.js.jsx",
2846
- "begin": "{",
2847
- "end": "}",
2848
- "beginCaptures": {
2849
- "0": {
2850
- "name": "punctuation.section.embedded.begin.jsx"
2851
- }
2852
- },
2853
- "endCaptures": {
2854
- "0": {
2855
- "name": "punctuation.section.embedded.end.jsx"
2856
- }
2857
- },
2858
- "patterns": [
2859
- {
2860
- "include": "#jsx-string-double-quoted"
2861
- },
2862
- {
2863
- "include": "#jsx-string-single-quoted"
2864
- },
2865
- {
2866
- "include": "#jsx-spread-attribute"
2867
- },
2868
- {
2869
- "include": "#expression"
2870
- }
2871
- ]
2472
+ "include": "#jsx-string-single-quoted"
2473
+ },
2474
+ {
2475
+ "include": "#jsx-spread-attribute"
2476
+ },
2477
+ {
2478
+ "include": "#expression"
2872
2479
  }
2873
2480
  ]
2874
2481
  },
@@ -2928,32 +2535,10 @@
2928
2535
  }
2929
2536
  },
2930
2537
  "patterns": [
2931
- {
2932
- "include": "#flowtype-predicate"
2933
- },
2934
2538
  {
2935
2539
  "include": "#flowtype-parse-types"
2936
2540
  }
2937
2541
  ]
2938
- },
2939
- {
2940
- "include": "#flowtype-predicate"
2941
- }
2942
- ]
2943
- },
2944
- "flowtype-predicate": {
2945
- "comment": "flow predicate checks",
2946
- "begin": "\\s*\\b(checks)\\b(?=(\\s*(\\((?:(?>[^()]+)|\\g<-1>)*\\))?)?\\s*(=>|{|;|$))",
2947
- "end": "(?=.)",
2948
- "applyEndPatternLast": 1,
2949
- "beginCaptures": {
2950
- "1": {
2951
- "name": "entity.name.function.predicate.flowtype"
2952
- }
2953
- },
2954
- "patterns": [
2955
- {
2956
- "include": "#round-brackets"
2957
2542
  }
2958
2543
  ]
2959
2544
  },
@@ -2961,7 +2546,7 @@
2961
2546
  "patterns": [
2962
2547
  {
2963
2548
  "comment": "e.g. let a: ()=>null = function() {return null}",
2964
- "match": "(?<!\\.)\\s*+([$_\\p{L}](?:[$.\\p{L}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Nl}\\p{Pc}])*+)\\s*+(\\??)\\s*+(?=:\\s*([$_\\p{L}](?:[$.\\p{L}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Nl}\\p{Pc}])*+)?\\s*(<(?:(?>[^<>]+)|\\g<-1>)*>)?\\s*(\\bFunction\\b|(\\((?:(?>[^()]+)|\\g<-1>)*\\))\\s*=>|\\(\\s*$))",
2549
+ "match": "(?<!\\.)\\s*+([$_\\p{L}](?:[$.\\p{L}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Nl}\\p{Pc}])*+)\\s*+(\\??)\\s*+(?=:\\s*(\\bFunction\\b|(\\((?:(?>[^()]+)|\\g<-1>)*\\))\\s*=>|\\(\\s*$))",
2965
2550
  "captures": {
2966
2551
  "1": {
2967
2552
  "name": "storage.type.function.js"
@@ -2995,30 +2580,18 @@
2995
2580
  "patterns": [
2996
2581
  {
2997
2582
  "comment": "flowtype optional arg/parameter e.g. protocol? : string",
2998
- "match": "\\s*+(\\?)",
2999
- "captures": {
3000
- "1": {
3001
- "name": "punctuation.type.flowtype"
3002
- }
3003
- }
2583
+ "name": "punctuation.type.flowtype",
2584
+ "match": "\\s*+\\?"
3004
2585
  },
3005
2586
  {
3006
2587
  "comment": "Type Unions |",
3007
- "match": "\\s*+(\\|)",
3008
- "captures": {
3009
- "1": {
3010
- "name": "kewyword.operator.union.flowtype"
3011
- }
3012
- }
2588
+ "name": "kewyword.operator.union.flowtype",
2589
+ "match": "\\s*+\\|"
3013
2590
  },
3014
2591
  {
3015
2592
  "comment": "intersection of types &",
3016
- "match": "\\s*+(\\&)",
3017
- "captures": {
3018
- "1": {
3019
- "name": "kewyword.operator.intersection.flowtype"
3020
- }
3021
- }
2593
+ "name": "kewyword.operator.intersection.flowtype",
2594
+ "match": "\\s*+\\&"
3022
2595
  },
3023
2596
  {
3024
2597
  "comment": "typed entity :",
@@ -3041,7 +2614,7 @@
3041
2614
  },
3042
2615
  {
3043
2616
  "comment": "An Iterator prefix?",
3044
- "match": "\\s*+(@@)"
2617
+ "match": "\\s*+@@"
3045
2618
  },
3046
2619
  {
3047
2620
  "begin": "\\s*+(=>)",
@@ -3083,20 +2656,12 @@
3083
2656
  "patterns": [
3084
2657
  {
3085
2658
  "comment": "Maybe types",
3086
- "match": "\\s*+(\\?)",
3087
- "captures": {
3088
- "1": {
3089
- "name": "keyword.operator.maybe.flowtype"
3090
- }
3091
- }
2659
+ "name": "keyword.operator.maybe.flowtype",
2660
+ "match": "\\s*+\\?"
3092
2661
  },
3093
2662
  {
3094
- "match": "\\s*+\\b(typeof)\\b\\s*+",
3095
- "captures": {
3096
- "1": {
3097
- "name": "keyword.operator.flowtype"
3098
- }
3099
- }
2663
+ "name": "keyword.operator.flowtype",
2664
+ "match": "\\s*+\\btypeof\\b\\s*+"
3100
2665
  },
3101
2666
  {
3102
2667
  "comment": "primitive flowtypes",
@@ -3139,40 +2704,23 @@
3139
2704
  },
3140
2705
  {
3141
2706
  "comment": "Type Unions |",
3142
- "match": "\\s*+(\\|)",
3143
- "captures": {
3144
- "1": {
3145
- "name": "kewyword.operator.union.flowtype"
3146
- }
3147
- }
2707
+ "name": "kewyword.operator.union.flowtype",
2708
+ "match": "\\s*+\\|"
3148
2709
  },
3149
2710
  {
3150
2711
  "comment": "intersection of types &",
3151
- "match": "\\s*+(\\&)",
3152
- "captures": {
3153
- "1": {
3154
- "name": "kewyword.operator.intersection.flowtype"
3155
- }
3156
- }
2712
+ "name": "kewyword.operator.intersection.flowtype",
2713
+ "match": "\\s*+\\&"
3157
2714
  },
3158
2715
  {
3159
2716
  "comment": "as per React declares in flowtype github",
3160
- "match": "\\s*+(\\*)",
3161
- "captures": {
3162
- "1": {
3163
- "name": "kewyword.operator.existential.flowtype"
3164
- }
3165
- }
2717
+ "name": "kewyword.operator.existential.flowtype",
2718
+ "match": "\\s*+\\*"
3166
2719
  },
3167
2720
  {
3168
2721
  "comment": "types of type marker e.g. <T: number | string>",
3169
2722
  "name": "punctuation.type.flowtype",
3170
- "match": "\\s*+(:)",
3171
- "captures": {
3172
- "1": {
3173
- "name": "support.type.builtin.primitive.flowtype"
3174
- }
3175
- }
2723
+ "match": "\\s*+(:)"
3176
2724
  },
3177
2725
  {
3178
2726
  "comment": "call back with a form ) => type",
@@ -3220,9 +2768,6 @@
3220
2768
  }
3221
2769
  },
3222
2770
  "patterns": [
3223
- {
3224
- "include": "#flowtype-polymorphs"
3225
- },
3226
2771
  {
3227
2772
  "include": "#flowtype-variable"
3228
2773
  }
@@ -3302,7 +2847,7 @@
3302
2847
  },
3303
2848
  "flowtype-parse-objects": {
3304
2849
  "comment": "object literal flowtype preceded by either => : | & ? symbols",
3305
- "begin": "(?<=:|\\||&|\\?|=>|<)\\s*+({)",
2850
+ "begin": "(?<=:|\\||&|\\?|=>|<)\\s*+(\\{)",
3306
2851
  "end": "\\s*(\\})",
3307
2852
  "applyEndPatternLast": 1,
3308
2853
  "beginCaptures": {
@@ -3324,13 +2869,19 @@
3324
2869
  "flowtype-object-property": {
3325
2870
  "patterns": [
3326
2871
  {
3327
- "include": "#literal-method"
3328
- },
3329
- {
3330
- "include": "#comments"
2872
+ "comment": "name of property which can be a string",
2873
+ "match": "\\s*+(((\"|').*?(?<=[^\\\\])\\k<-1>)|([$_\\p{L}](?:[$.\\p{L}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Nl}\\p{Pc}])*+))\\s*+(\\??)\\s*+(?=:)",
2874
+ "captures": {
2875
+ "1": {
2876
+ "name": "variable.other.property.flowtype"
2877
+ },
2878
+ "5": {
2879
+ "name": "keyword.operator.optional.parameter.flowtype"
2880
+ }
2881
+ }
3331
2882
  },
3332
2883
  {
3333
- "include": "#flowtype-variable"
2884
+ "include": "#flowtype-vars-and-props"
3334
2885
  }
3335
2886
  ]
3336
2887
  },
@@ -3358,10 +2909,13 @@
3358
2909
  "patterns": [
3359
2910
  {
3360
2911
  "comment": "type aliases for export but avoid type instaceof or type in operators",
3361
- "begin": "(?:^|\\s)\\s*+(type)\\b\\s+(?!(instanceof|in)\\b)(?=[$_A-Za-z{\\[])",
3362
- "end": "\\s*(;)|\\b(?=if|switch|try|var|let|const|static|function|return|class|do|for|while|debugger|export|import|yield|type|declare|interface)\\b",
2912
+ "begin": "\\s*+(?:\\b(import|export))?\\b\\s*(type)\\b\\s*(?!(instanceof|in)\\b)(?=[$_A-Za-z{\\[])",
2913
+ "end": "\\s*(\\;)|\\b(?=if|switch|try|var|let|const|static|function|return|class|do|for|while|debugger|export|import|yield|type|declare|interface)\\b",
3363
2914
  "beginCaptures": {
3364
2915
  "1": {
2916
+ "name": "keyword.control.module.js"
2917
+ },
2918
+ "2": {
3365
2919
  "name": "keyword.other.typedef.flowtype"
3366
2920
  }
3367
2921
  },
@@ -3375,17 +2929,31 @@
3375
2929
  "match": "\\s*+="
3376
2930
  },
3377
2931
  {
3378
- "begin": "\\s*+({)",
3379
- "end": "\\s*(})",
2932
+ "begin": "\\s*+{",
2933
+ "end": "\\s*}",
3380
2934
  "applyEndPatternLast": 1,
3381
- "captures": {
3382
- "1": {
2935
+ "beginCaptures": {
2936
+ "0": {
2937
+ "name": "meta.brace.curly.js"
2938
+ }
2939
+ },
2940
+ "endCaptures": {
2941
+ "0": {
3383
2942
  "name": "meta.brace.curly.js"
3384
2943
  }
3385
2944
  },
3386
2945
  "patterns": [
3387
2946
  {
3388
- "include": "#flowtype-object-property"
2947
+ "include": "#flowtype"
2948
+ },
2949
+ {
2950
+ "include": "#flowtype-variable"
2951
+ },
2952
+ {
2953
+ "include": "#comments"
2954
+ },
2955
+ {
2956
+ "include": "#flowtype-function-name"
3389
2957
  }
3390
2958
  ]
3391
2959
  },
@@ -3423,11 +2991,11 @@
3423
2991
  "include": "#flowtype-polymorphs"
3424
2992
  },
3425
2993
  {
3426
- "begin": "\\s*+({)",
2994
+ "begin": "\\s*+{",
3427
2995
  "end": "\\s*(})",
3428
2996
  "contentName": "meta.class.body.js",
3429
2997
  "beginCaptures": {
3430
- "1": {
2998
+ "0": {
3431
2999
  "name": "punctuation.section.class.begin.js"
3432
3000
  }
3433
3001
  },
@@ -3450,7 +3018,7 @@
3450
3018
  "flowtype-declare": {
3451
3019
  "patterns": [
3452
3020
  {
3453
- "match": "\\s*+(?<!\\.)\\b(declare)(?=\\s+(function|var|type|interface)\\b)",
3021
+ "match": "\\s*+(?<!\\.)\\b(declare)\\b\\s++(?=\\b(function|var|type|interface)\\s++)",
3454
3022
  "captures": {
3455
3023
  "1": {
3456
3024
  "name": "keyword.other.declare.flowtype"
@@ -3480,9 +3048,6 @@
3480
3048
  }
3481
3049
  },
3482
3050
  "patterns": [
3483
- {
3484
- "include": "#flowtype-parse-objects"
3485
- },
3486
3051
  {
3487
3052
  "include": "#flowtype-parse-types"
3488
3053
  }
@@ -3507,11 +3072,7 @@
3507
3072
  {
3508
3073
  "comment": "look for module names but dont assume uppercase start char",
3509
3074
  "match": "(?<!\\.)\\s*+([$_\\p{L}](?:[$\\p{L}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Nl}\\p{Pc}])*+)",
3510
- "captures": {
3511
- "1": {
3512
- "name": "entity.name.class.js"
3513
- }
3514
- }
3075
+ "name": "entity.name.class.js"
3515
3076
  },
3516
3077
  {
3517
3078
  "comment": "look for module names in quoted string forms",
@@ -3589,18 +3150,14 @@
3589
3150
  "name": "entity.name.class.js"
3590
3151
  },
3591
3152
  {
3592
- "include": "#literal-comma"
3153
+ "include": "#literal-coma"
3593
3154
  }
3594
3155
  ]
3595
3156
  },
3596
3157
  {
3597
3158
  "comment": "look for class names but dont assume uppercase start char",
3598
3159
  "match": "(?<!\\.)\\s*+([$_\\p{L}](?:[$\\p{L}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Nl}\\p{Pc}])*+)",
3599
- "captures": {
3600
- "1": {
3601
- "name": "entity.name.class.js"
3602
- }
3603
- }
3160
+ "name": "entity.name.class.js"
3604
3161
  },
3605
3162
  {
3606
3163
  "begin": "\\s*+({)",
@@ -3667,7 +3224,7 @@
3667
3224
  "flowtype-typecast": {
3668
3225
  "patterns": [
3669
3226
  {
3670
- "begin": "\\s*+(:)",
3227
+ "begin": "\\s*+:",
3671
3228
  "end": "(?=\\s*+\\))",
3672
3229
  "patterns": [
3673
3230
  {
@@ -3677,106 +3234,6 @@
3677
3234
  }
3678
3235
  ]
3679
3236
  },
3680
- "flowtype-comments": {
3681
- "patterns": [
3682
- {
3683
- "begin": "\\s*+(/\\*)\\s*(::)",
3684
- "end": "\\s*(\\*/)",
3685
- "beginCaptures": {
3686
- "1": {
3687
- "name": "punctuation.definition.comment.js"
3688
- },
3689
- "2": {
3690
- "name": "punctuation.type.flowtype"
3691
- }
3692
- },
3693
- "endCaptures": {
3694
- "1": {
3695
- "name": "punctuation.definition.comment.js"
3696
- }
3697
- },
3698
- "patterns": [
3699
- {
3700
- "include": "#flowtype-comments-optional-parameter"
3701
- },
3702
- {
3703
- "include": "#literal-module"
3704
- },
3705
- {
3706
- "include": "#flowtype-keywords"
3707
- },
3708
- {
3709
- "include": "#flowtype-parse-types"
3710
- }
3711
- ]
3712
- },
3713
- {
3714
- "begin": "\\s*+(/\\*)\\s*(flow-include)\\b",
3715
- "end": "\\s*(\\*/)",
3716
- "beginCaptures": {
3717
- "1": {
3718
- "name": "punctuation.definition.comment.js"
3719
- },
3720
- "2": {
3721
- "name": "punctuation.definition.variable.flowtype"
3722
- }
3723
- },
3724
- "endCaptures": {
3725
- "1": {
3726
- "name": "punctuation.definition.comment.js"
3727
- }
3728
- },
3729
- "patterns": [
3730
- {
3731
- "include": "#flowtype-comments-optional-parameter"
3732
- },
3733
- {
3734
- "include": "#literal-module"
3735
- },
3736
- {
3737
- "include": "#flowtype-keywords"
3738
- },
3739
- {
3740
- "include": "#flowtype-parse-types"
3741
- }
3742
- ]
3743
- },
3744
- {
3745
- "begin": "\\s*+(/\\*)\\s*(:)",
3746
- "end": "\\s*(\\*/)",
3747
- "beginCaptures": {
3748
- "1": {
3749
- "name": "punctuation.definition.comment.js"
3750
- },
3751
- "2": {
3752
- "name": "punctuation.type.flowtype"
3753
- }
3754
- },
3755
- "endCaptures": {
3756
- "1": {
3757
- "name": "punctuation.definition.comment.js"
3758
- }
3759
- },
3760
- "patterns": [
3761
- {
3762
- "include": "#flowtype-parse-types"
3763
- }
3764
- ]
3765
- }
3766
- ]
3767
- },
3768
- "flowtype-comments-optional-parameter": {
3769
- "patterns": [
3770
- {
3771
- "match": "(?<=::|flow-include)\\s*(\\?)",
3772
- "captures": {
3773
- "1": {
3774
- "name": "keyword.operator.optional.parameter.flowtype"
3775
- }
3776
- }
3777
- }
3778
- ]
3779
- },
3780
3237
  "miscellaneous": {
3781
3238
  "comment": "trap miscellaneous stuff",
3782
3239
  "patterns": [
@@ -3790,55 +3247,6 @@
3790
3247
  }
3791
3248
  }
3792
3249
  ]
3793
- },
3794
- "html-template": {
3795
- "comment": "Assume object properties of template: `some html` contain html",
3796
- "begin": "(?:(?:^|(?<=,|{))\\s*\\b((template))\\b\\s*(:)\\s*(`))",
3797
- "end": "\\s*(`)",
3798
- "beginCaptures": {
3799
- "1": {
3800
- "name": "constant.other.object.key.js"
3801
- },
3802
- "2": {
3803
- "name": "string.unquoted.js"
3804
- },
3805
- "3": {
3806
- "name": "punctuation.separator.key-value.js"
3807
- },
3808
- "4": {
3809
- "name": "punctuation.definition.quasi.begin.js"
3810
- }
3811
- },
3812
- "endCaptures": {
3813
- "1": {
3814
- "name": "punctuation.definition.quasi.end.js"
3815
- }
3816
- },
3817
- "patterns": [
3818
- {
3819
- "name": "entity.quasi.element.js",
3820
- "begin": "(?<!\\\\)\\${",
3821
- "end": "\\s*}",
3822
- "beginCaptures": {
3823
- "0": {
3824
- "name": "punctuation.quasi.element.begin.js"
3825
- }
3826
- },
3827
- "endCaptures": {
3828
- "0": {
3829
- "name": "punctuation.quasi.element.end.js"
3830
- }
3831
- },
3832
- "patterns": [
3833
- {
3834
- "include": "#expression"
3835
- }
3836
- ]
3837
- },
3838
- {
3839
- "include": "text.html.mustache"
3840
- }
3841
- ]
3842
3250
  }
3843
3251
  }
3844
3252
  }