github-linguist 7.0.0 → 7.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/grammars/source.abap.json +51 -25
  3. data/grammars/source.afm.json +22 -14
  4. data/grammars/source.ahk.json +3 -3
  5. data/grammars/source.angelscript.json +2 -2
  6. data/grammars/source.ballerina.json +26 -2
  7. data/grammars/source.clarion.json +6 -6
  8. data/grammars/source.csound.json +1 -1
  9. data/grammars/source.elixir.json +2 -2
  10. data/grammars/source.gfm.json +21 -0
  11. data/grammars/source.haproxy-config.json +100 -0
  12. data/grammars/source.jison.json +1 -1
  13. data/grammars/source.js.css.json +328 -0
  14. data/grammars/source.js.json +1 -1
  15. data/grammars/source.js.jsx.json +1030 -1686
  16. data/grammars/source.julia.json +3 -7
  17. data/grammars/source.kotlin.json +355 -487
  18. data/grammars/source.nim.json +5 -9
  19. data/grammars/source.prolog.json +1 -1
  20. data/grammars/source.python.json +52 -18
  21. data/grammars/source.rascal.json +1 -0
  22. data/grammars/source.ruby.json +28 -28
  23. data/grammars/source.sqf.json +1 -1
  24. data/grammars/source.toml.json +79 -2
  25. data/grammars/source.ts.json +85 -35
  26. data/grammars/source.tsx.json +85 -35
  27. data/grammars/source.yara.json +1 -1
  28. data/grammars/text.eml.basic.json +283 -0
  29. data/grammars/text.html.cshtml.json +356 -0
  30. data/grammars/text.roff.json +1 -1
  31. data/grammars/version +1 -1
  32. data/lib/linguist/VERSION +1 -1
  33. data/lib/linguist/documentation.yml +1 -0
  34. data/lib/linguist/generated.rb +24 -0
  35. data/lib/linguist/heuristics.yml +21 -0
  36. data/lib/linguist/language.rb +7 -0
  37. data/lib/linguist/languages.json +1 -1
  38. data/lib/linguist/languages.yml +61 -13
  39. data/lib/linguist/samples.json +2270 -797
  40. data/lib/linguist/samples.json.orig +175625 -0
  41. metadata +7 -3
  42. data/grammars/source.regexp.babel.json +0 -200
@@ -0,0 +1,100 @@
1
+ {
2
+ "name": "HAProxy",
3
+ "scopeName": "source.haproxy-config",
4
+ "patterns": [
5
+ {
6
+ "name": "meta.tag.haproxy-config",
7
+ "match": "^(backend|defaults|frontend|global|listen|mailers|peers|ruleset|userlist)\\s*(\\S+)?\\s*((\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})?:\\d{1,5})?(,)?((\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})?:\\d{1,5})?",
8
+ "captures": {
9
+ "2": {
10
+ "name": "string.unquoted.sectionname.haproxy-config"
11
+ },
12
+ "3": {
13
+ "name": "variable.parameter.ip-port.haproxy-config"
14
+ },
15
+ "5": {
16
+ "name": "punctuation.separator.ip.haproxy-config"
17
+ },
18
+ "6": {
19
+ "name": "variable.parameter.ip-port.haproxy-config"
20
+ }
21
+ }
22
+ },
23
+ {
24
+ "name": "comment.line.number-sign.haproxy-config",
25
+ "match": "#.+$"
26
+ },
27
+ {
28
+ "name": "constant.numeric.haproxy-config",
29
+ "match": "\\b[0-9]+([\\.:][0-9]+)*[a-z]?\\b"
30
+ },
31
+ {
32
+ "name": "variable.parameter.ip-port.haproxy-config",
33
+ "match": "(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})?:\\d{1,5}"
34
+ },
35
+ {
36
+ "name": "keyword.other.no-validate-params.haproxy-config",
37
+ "match": "^\\s*(acl|appsession|backlog|balance|bind|bind-process|block|clitimeout|compression|contimeout|cookie|default-server|default_backend|description|disabled|dispatch|enabled|errorfile|errorloc|errorloc302|errorloc303|filter|force-persist|fullconn|grace|hash-type|http-request|http-response|http-reuse|http-send-name-header|id|ignore-persist|load-server-state-from-file|log|log-format|log-format-sd|log-tag|max-keep-alive-queue|maxconn|mode|monitor-net|monitor-uri|redirect|redisp|redispatch|reqadd|reqallow|reqdel|reqdeny|reqiallow|reqidel|reqideny|reqipass|reqirep|reqitarpit|reqpass|reqrep|reqtarpit|retries|rspadd|rspdel|rspdeny|rspidel|rspideny|rspirep|rsprep|server|server-state-file-name|server-template|source|srvtimeout|stick-table|transparent|unique-id-format|unique-id-header|use-server|use_backend)\\b"
38
+ },
39
+ {
40
+ "name": "keyword.other.no-validate-params.haproxy-config",
41
+ "match": "^\\s*(51degrees-cache-size|51degrees-data-file|51degrees-property-name-list|51degrees-property-separator|ca-base|chroot|cpu-map|crt-base|daemon|debug|description|deviceatlas-json-file|deviceatlas-log-level|deviceatlas-properties-cookie|deviceatlas-separator|external-check|gid|group|hard-stop-after|log|log-send-hostname|log-tag|lua-load|max-spread-checks|maxcompcpuusage|maxcomprate|maxconn|maxconnrate|maxpipes|maxsessrate|maxsslconn|maxsslrate|maxzlibmem|nbproc|nbthread|node|noepoll|nogetaddrinfo|nokqueue|nopoll|noreuseport|nosplice|pidfile|presetenv|quiet|resetenv|server-state-base|server-state-file|setenv|spread-checks|ssl-default-bind-ciphers|ssl-default-bind-options|ssl-default-server-ciphers|ssl-default-server-options|ssl-dh-param-file|ssl-engine|ssl-mode-async|ssl-server-verify|stats|tune.buffers.limit|tune.buffers.reserve|tune.bufsize|tune.chksize|tune.comp.maxlevel|tune.h2.header-table-size|tune.h2.initial-window-size|tune.h2.max-concurrent-streams|tune.http.cookielen|tune.http.logurilen|tune.http.maxhdr|tune.idletimer|tune.lua.forced-yield|tune.lua.maxmem|tune.lua.service-timeout|tune.lua.session-timeout|tune.lua.task-timeout|tune.maxaccept|tune.maxpollevents|tune.maxrewrite|tune.pattern.cache-size|tune.pipesize|tune.rcvbuf.client|tune.rcvbuf.server|tune.recv_enough|tune.sndbuf.client|tune.sndbuf.server|tune.ssl.cachesize|tune.ssl.capture-cipherlist-size|tune.ssl.default-dh-param|tune.ssl.force-private-cache|tune.ssl.lifetime|tune.ssl.maxrecord|tune.ssl.ssl-ctx-cache-size|tune.vars.global-max-size|tune.vars.proc-max-size|tune.vars.reqres-max-size|tune.vars.sess-max-size|tune.vars.txn-max-size|tune.zlib.memlevel|tune.zlib.windowsize|uid|ulimit-n|unix-bind|unsetenv|user|wurfl-cache-size|wurfl-data-file|wurfl-engine-mode|wurfl-information-list|wurfl-information-list-separator|wurfl-useragent-priority)\\b"
42
+ },
43
+ {
44
+ "name": "keyword.other.no-validate-params.haproxy-config",
45
+ "match": "\\s+(mailer|timeout)(?=\\s+)"
46
+ },
47
+ {
48
+ "name": "keyword.other.no-validate-params.haproxy-config",
49
+ "match": "\\s+(disabled|enable|peer)(?=\\s+)"
50
+ },
51
+ {
52
+ "name": "keyword.other.no-validate-params.haproxy-config",
53
+ "match": "^\\s*(capture|declare|email-alert|external-check|http-check|monitor|option|persist|rate-limit|stats|stick|tcp-check|tcp-request|tcp-response|timeout)\\b"
54
+ },
55
+ {
56
+ "name": "variable.language.reserved.haproxy-config",
57
+ "match": "\\s+(abortonclose|accept-invalid-http-request|accept-invalid-http-response|admin|allbackups|auth|capture|check|checkcache|client|client-fin|clitcpka|clitimeout|command|connect|connection|content|contimeout|contstats|cookie|disable-on-404|dontlog-normal|dontlognull|enable|expect|external-check|fail|forceclose|forwardfor|from|hide-version|http-buffer-request|http-ignore-probes|http-keep-alive|http-no-delay|http-pretend-keepalive|http-request|http-server-close|http-tunnel|http-use-proxy-header|http_proxy|httpchk|httpclose|httplog|independent-streams|inspect-delay|ldap-check|level|log-health-checks|log-separate-errors|logasap|mailers|match|myhostname|mysql-check|nolinger|on|originalto|path|persist|pgsql-check|prefer-last-server|queue|rdp-cookie|realm|redis-check|redispatch|refresh|scope|send|send-binary|send-state|server|server-fin|session|sessions|show-desc|show-legends|show-node|smtpchk|socket-stats|splice-auto|splice-request|splice-response|spop-check|srvtcpka|srvtimeout|ssl-hello-chk|store-request|store-response|tarpit|tcp-check|tcp-smart-accept|tcp-smart-connect|tcpka|tcplog|to|transparent|tunnel|uri)(?=\\s+)"
58
+ },
59
+ {
60
+ "name": "variable.language.reserved.haproxy-config",
61
+ "match": "\\s+(accept-netscaler-cip|accept-proxy|allow-0rtt|alpn|backlog|ca-file|ca-ignore-err|ca-sign-file|ca-sign-pass|ciphers|crl-file|crt|crt-ignore-err|crt-list|curves|defer-accept|ecdhe|expose-fd|force-sslv3|force-tlsv10|force-tlsv11|force-tlsv12|force-tlsv13|generate-certificates|gid|group|id|interface|level|maxconn|mode|mss|name|namespace|nice|no-ca-names|no-sslv3|no-tls-tickets|no-tlsv10|no-tlsv11|no-tlsv12|no-tlsv13|npn|prefer-client-ciphers|process|severity-output|ssl|ssl-max-ver|ssl-min-ver|strict-sni|tcp-ut|tfo|tls-ticket-keys|transparent|uid|user|v4v6|v6only|verify)(?=\\s+)"
62
+ },
63
+ {
64
+ "name": "variable.language.reserved.haproxy-config",
65
+ "match": "\\s+(addr|agent-addr|agent-check|agent-inter|agent-port|agent-send|backup|ca-file|check|check-send-proxy|check-sni|check-ssl|ciphers|cookie|crl-file|crt|disabled|downinter|enabled|error-limit|fall|fastinter|force-sslv3|force-tlsv10|force-tlsv11|force-tlsv12|force-tlsv13|id|init-addr|inter|maxconn|maxqueue|minconn|namespace|no-agent-check|no-backup|no-check|no-check-ssl|no-send-proxy|no-send-proxy-v2|no-send-proxy-v2-ssl|no-send-proxy-v2-ssl-cn|no-ssl|no-ssl-reuse|no-sslv3|no-tls-tickets|no-tlsv10|no-tlsv11|no-tlsv12|no-tlsv13|no-verifyhost|non-stick|observe|on-error|on-marked-down|on-marked-up|port|redir|resolve-net|resolve-opts|resolve-prefer|resolvers|rise|send-proxy|send-proxy-v2|send-proxy-v2-ssl|send-proxy-v2-ssl-cn|slowstart|sni|source|ssl|ssl-max-ver|ssl-min-ver|ssl-reuse|stick|tcp-ut|tls-tickets|track|verify|verifyhost|weight)(?=\\s+)"
66
+ },
67
+ {
68
+ "name": "variable.language.reserved.haproxy-config",
69
+ "match": "\\s+(type|size|expire|nopurge|peers|store)(?=\\s+)"
70
+ },
71
+ {
72
+ "name": "variable.language.reserved.haproxy-config",
73
+ "match": "\\s+(allow|auth|redirect|reject|tarpit|deny|deny_status|add-header|set-challenge|set-header|set-src|set-status|capture|len|id|del-header|set-nice|set-log-level|replace-header|replace-value|set-method|set-uri|add-acl|del-acl|del-map|set-map|set-var|unset-var|track-sc0|track-sc1|track-sc2|sc-inc-gpc0|sc-inc-gpc1|sc-set-gpt0|silent-drop|send-spoe-group|cache-store|cache-use)(?=\\s+)"
74
+ },
75
+ {
76
+ "name": "variable.language.reserved.extra.haproxy-config",
77
+ "match": "\\s+(roundrobin|static-rr|leastconn|first|url_param|health|global|httplog|except|kern|user|mail|daemon|auth|syslog|lpr|news|uucp|cron|auth2|ftp|ntp|audit|alert|cron2|local0|local1|local2|local3|local4|local5|local6|local7|emerg|crit|err|warning|notice|info|debug|rewrite|insert|nocache|postonly|indirect|prefix|location|scheme|code|request|response|header|check|cookie|weight|usesrc|http|tcp)(?=\\s+)"
78
+ },
79
+ {
80
+ "name": "constant.character.escape.haproxy-config",
81
+ "match": "\\\\"
82
+ },
83
+ {
84
+ "name": "entity.name.function.hdr.haproxy-config",
85
+ "match": "\\s+((base|cook|hdr|path|shdr|url|urlp)(_beg|_dir|_dom|_end|_len|_reg|_sub)?)\\b"
86
+ },
87
+ {
88
+ "name": "keyword.control.directive.module.http.rewrite",
89
+ "match": "\\b(if|rewrite)\\b"
90
+ },
91
+ {
92
+ "name": "variable.language.other.haproxy-config",
93
+ "match": "%\\[[^\\]]+\\]"
94
+ },
95
+ {
96
+ "name": "keyword.operator.logical.haproxy-config",
97
+ "match": "\\s+(or|\\|\\||!)\\s+"
98
+ }
99
+ ]
100
+ }
@@ -656,7 +656,7 @@
656
656
  }
657
657
  },
658
658
  "injections": {
659
- "L:(meta.action.jison - (comment | string)), source.js.embedded.jison": {
659
+ "L:(meta.action.jison - (comment | string)), source.js.embedded.jison - (comment | string)": {
660
660
  "patterns": [
661
661
  {
662
662
  "name": "variable.language.semantic-value.jison",
@@ -0,0 +1,328 @@
1
+ {
2
+ "name": "Styled Components",
3
+ "scopeName": "source.js.css",
4
+ "patterns": [
5
+ {
6
+ "include": "#comment-block"
7
+ },
8
+ {
9
+ "include": "#rule-list"
10
+ }
11
+ ],
12
+ "repository": {
13
+ "color-values": {
14
+ "patterns": [
15
+ {
16
+ "name": "support.constant.color.w3c-standard-color-name.css",
17
+ "match": "\\b(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)\\b"
18
+ },
19
+ {
20
+ "name": "invalid.deprecated.color.w3c-non-standard-color-name.css",
21
+ "match": "\\b(aliceblue|antiquewhite|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|magenta|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato|turquoise|violet|wheat|whitesmoke|yellowgreen)\\b"
22
+ },
23
+ {
24
+ "begin": "(hsla?|rgba?)\\s*(\\()",
25
+ "end": "(\\))",
26
+ "patterns": [
27
+ {
28
+ "name": "constant.other.color.rgb-value.css",
29
+ "match": "(?x)\\b\n\t\t\t\t\t\t\t (0*((1?[0-9]{1,2})|(2([0-4][0-9]|5[0-5])))\\s*,\\s*){2}\n\t\t\t\t\t\t\t (0*((1?[0-9]{1,2})|(2([0-4][0-9]|5[0-5])))\\b)\n\t\t\t\t\t\t\t (\\s*,\\s*((0?\\.[0-9]+)|[0-1]))?\n\t\t\t\t\t\t\t"
30
+ },
31
+ {
32
+ "name": "constant.other.color.rgb-percentage.css",
33
+ "match": "\\b([0-9]{1,2}|100)\\s*%,\\s*([0-9]{1,2}|100)\\s*%,\\s*([0-9]{1,2}|100)\\s*%"
34
+ },
35
+ {
36
+ "include": "#numeric-values"
37
+ }
38
+ ],
39
+ "beginCaptures": {
40
+ "1": {
41
+ "name": "support.function.misc.css"
42
+ },
43
+ "2": {
44
+ "name": "punctuation.section.function.css"
45
+ }
46
+ },
47
+ "endCaptures": {
48
+ "1": {
49
+ "name": "punctuation.section.function.css"
50
+ }
51
+ }
52
+ }
53
+ ]
54
+ },
55
+ "comment-block": {
56
+ "name": "comment.block.css",
57
+ "begin": "/\\*",
58
+ "end": "\\*/",
59
+ "captures": {
60
+ "0": {
61
+ "name": "punctuation.definition.comment.css"
62
+ }
63
+ }
64
+ },
65
+ "media-query": {
66
+ "begin": "(?i)\\s*(only|not)?\\s*(all|aural|braille|embossed|handheld|print|projection|screen|tty|tv)?",
67
+ "end": "\\s*(?:(,)|(?=[{;]))",
68
+ "patterns": [
69
+ {
70
+ "begin": "\\s*(and)?\\s*(\\()\\s*",
71
+ "end": "\\)",
72
+ "patterns": [
73
+ {
74
+ "begin": "(?x)\n\t (\n\t ((min|max)-)?\n\t (\n\t ((device-)?(height|width|aspect-ratio))|\n\t (color(-index)?)|monochrome|resolution\n\t )\n\t )|grid|scan|orientation\n\t \\s*(?=[:)])",
75
+ "end": "(:)|(?=\\))",
76
+ "beginCaptures": {
77
+ "0": {
78
+ "name": "support.type.property-name.media.css"
79
+ }
80
+ },
81
+ "endCaptures": {
82
+ "1": {
83
+ "name": "punctuation.separator.key-value.css"
84
+ }
85
+ }
86
+ },
87
+ {
88
+ "name": "support.constant.property-value.css",
89
+ "match": "\\b(portrait|landscape|progressive|interlace)"
90
+ },
91
+ {
92
+ "match": "\\s*(\\d+)(/)(\\d+)",
93
+ "captures": {
94
+ "1": {
95
+ "name": "constant.numeric.css"
96
+ },
97
+ "2": {
98
+ "name": "keyword.operator.arithmetic.css"
99
+ },
100
+ "3": {
101
+ "name": "constant.numeric.css"
102
+ }
103
+ }
104
+ },
105
+ {
106
+ "include": "#numeric-values"
107
+ }
108
+ ],
109
+ "beginCaptures": {
110
+ "1": {
111
+ "name": "keyword.operator.logic.media.css"
112
+ }
113
+ }
114
+ }
115
+ ],
116
+ "beginCaptures": {
117
+ "1": {
118
+ "name": "keyword.operator.logic.media.css"
119
+ },
120
+ "2": {
121
+ "name": "support.constant.media.css"
122
+ }
123
+ },
124
+ "endCaptures": {
125
+ "1": {
126
+ "name": "punctuation.definition.arbitrary-repitition.css"
127
+ }
128
+ }
129
+ },
130
+ "media-query-list": {
131
+ "begin": "\\s*(?=[^{;])",
132
+ "end": "\\s*(?=[{;])",
133
+ "patterns": [
134
+ {
135
+ "include": "#media-query"
136
+ }
137
+ ]
138
+ },
139
+ "numeric-values": {
140
+ "patterns": [
141
+ {
142
+ "name": "constant.other.color.rgb-value.css",
143
+ "match": "(#)([0-9a-fA-F]{3}|[0-9a-fA-F]{6})\\b",
144
+ "captures": {
145
+ "1": {
146
+ "name": "punctuation.definition.constant.css"
147
+ }
148
+ }
149
+ },
150
+ {
151
+ "name": "constant.numeric.css",
152
+ "match": "(?x)\n\t\t\t\t\t (?:-|\\+)?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))\n\t\t\t\t\t ((?:px|pt|ch|cm|mm|in|r?em|ex|pc|deg|g?rad|dpi|dpcm|s)\\b|%)?\n\t\t\t\t\t",
153
+ "captures": {
154
+ "1": {
155
+ "name": "keyword.other.unit.css"
156
+ }
157
+ }
158
+ }
159
+ ]
160
+ },
161
+ "property-values": {
162
+ "patterns": [
163
+ {
164
+ "name": "support.constant.property-value.css",
165
+ "match": "\\b(absolute|all(-scroll)?|always|armenian|auto|avoid|baseline|below|bidi-override|block|bold|bolder|both|bottom|break-all|break-word|capitalize|center|char|circle|cjk-ideographic|col-resize|collapse|crosshair|dashed|decimal-leading-zero|decimal|default|disabled|disc|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ellipsis|fixed|geometricPrecision|georgian|groove|hand|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|inactive|inherit|inline-block|inline|inset|inside|inter-ideograph|inter-word|italic|justify|katakana-iroha|katakana|keep-all|left|lighter|line-edge|line-through|line|list-item|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|medium|middle|move|n-resize|ne-resize|newspaper|no-drop|no-repeat|nw-resize|none|normal|not-allowed|nowrap|oblique|optimize(Legibility|Quality|Speed)|outset|outside|overline|pointer|pre(-(wrap|line))?|progress|relative|repeat-x|repeat-y|repeat|right|ridge|row-resize|rtl|s-resize|scroll|se-resize|separate|small-caps|solid|square|static|strict|sub|super|sw-resize|table-footer-group|table-header-group|tb-rl|text-bottom|text-top|text|thick|thin|top|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|vertical(-(ideographic|text))?|visible(Painted|Fill|Stroke)?|w-resize|wait|whitespace|zero|smaller|larger|((xx?-)?(small|large))|painted|fill|stroke)\\b"
166
+ },
167
+ {
168
+ "name": "support.constant.font-name.css",
169
+ "match": "(\\b(?i:arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace)\\b)"
170
+ },
171
+ {
172
+ "include": "#numeric-values"
173
+ },
174
+ {
175
+ "include": "#color-values"
176
+ },
177
+ {
178
+ "include": "#string-double"
179
+ },
180
+ {
181
+ "include": "#string-single"
182
+ },
183
+ {
184
+ "begin": "(rect)\\s*(\\()",
185
+ "end": "(\\))",
186
+ "patterns": [
187
+ {
188
+ "include": "#numeric-values"
189
+ }
190
+ ],
191
+ "beginCaptures": {
192
+ "1": {
193
+ "name": "support.function.misc.css"
194
+ },
195
+ "2": {
196
+ "name": "punctuation.section.function.css"
197
+ }
198
+ },
199
+ "endCaptures": {
200
+ "1": {
201
+ "name": "punctuation.section.function.css"
202
+ }
203
+ }
204
+ },
205
+ {
206
+ "begin": "(format|local|url|attr|counter|counters)\\s*(\\()",
207
+ "end": "(\\))",
208
+ "patterns": [
209
+ {
210
+ "include": "#string-single"
211
+ },
212
+ {
213
+ "include": "#string-double"
214
+ },
215
+ {
216
+ "name": "variable.parameter.misc.css",
217
+ "match": "[^'\") \\t]+"
218
+ }
219
+ ],
220
+ "beginCaptures": {
221
+ "1": {
222
+ "name": "support.function.misc.css"
223
+ },
224
+ "2": {
225
+ "name": "punctuation.section.function.css"
226
+ }
227
+ },
228
+ "endCaptures": {
229
+ "1": {
230
+ "name": "punctuation.section.function.css"
231
+ }
232
+ }
233
+ },
234
+ {
235
+ "name": "keyword.other.important.css",
236
+ "match": "\\!\\s*important"
237
+ }
238
+ ]
239
+ },
240
+ "rule-list": {
241
+ "name": "meta.property-list.css",
242
+ "end": "(?=\\s*)",
243
+ "patterns": [
244
+ {
245
+ "include": "#comment-block"
246
+ },
247
+ {
248
+ "name": "meta.property-name.css",
249
+ "begin": "(?\u003c![-a-z])(?=[-a-z])",
250
+ "end": "$|(?![-a-z])",
251
+ "patterns": [
252
+ {
253
+ "name": "support.type.property-name.css",
254
+ "match": "\\b(azimuth|background-attachment|background-color|background-image|background-position|background-repeat|background|box-shadow|border-radius|border-bottom-color|border-bottom-style|border-bottom-width|border-bottom|border-collapse|border-color|border-left-color|border-left-style|border-left-width|border-left|border-right-color|border-right-style|border-right-width|border-right|border-spacing|border-style|border-top-color|border-top-style|border-top-width|border-top|border-width|border|bottom|caption-side|clear|clip|color|content|counter-increment|counter-reset|cue-after|cue-before|cue|cursor|direction|display|elevation|empty-cells|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|flex|float|font-family|font-size-adjust|font-size|font-stretch|font-style|font-variant|font-weight|font|height|image-rendering|left|letter-spacing|line-height|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|marker-offset|margin|marks|max-height|max-width|min-height|min-width|-moz-border-radius|opacity|orphans|outline-color|outline-style|outline-width|outline|overflow(-[xy])?|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page|pause-after|pause-before|pause|pitch-range|pitch|play-during|pointer-events|position|quotes|resize|richness|right|size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|src|stress|table-layout|text-(align|decoration|indent|rendering|shadow|transform)|top|transition|unicode-bidi|vertical-align|visibility|voice-family|volume|white-space|widows|width|word-(spacing|wrap)|zoom|z-index)\\b"
255
+ }
256
+ ]
257
+ },
258
+ {
259
+ "name": "meta.property-value.css",
260
+ "begin": "(?\u003c!\u0026|:)(:)\\s*",
261
+ "end": "\\s*(;|(?=\\}))",
262
+ "patterns": [
263
+ {
264
+ "include": "#property-values"
265
+ }
266
+ ],
267
+ "beginCaptures": {
268
+ "1": {
269
+ "name": "punctuation.separator.key-value.css"
270
+ }
271
+ },
272
+ "endCaptures": {
273
+ "1": {
274
+ "name": "punctuation.terminator.rule.css"
275
+ }
276
+ }
277
+ }
278
+ ],
279
+ "beginCaptures": {
280
+ "0": {
281
+ "name": "punctuation.section.property-list.css"
282
+ }
283
+ }
284
+ },
285
+ "string-double": {
286
+ "name": "string.quoted.double.css",
287
+ "begin": "\"",
288
+ "end": "\"",
289
+ "patterns": [
290
+ {
291
+ "name": "constant.character.escape.css",
292
+ "match": "\\\\."
293
+ }
294
+ ],
295
+ "beginCaptures": {
296
+ "0": {
297
+ "name": "punctuation.definition.string.begin.css"
298
+ }
299
+ },
300
+ "endCaptures": {
301
+ "0": {
302
+ "name": "punctuation.definition.string.end.css"
303
+ }
304
+ }
305
+ },
306
+ "string-single": {
307
+ "name": "string.quoted.single.css",
308
+ "begin": "'",
309
+ "end": "'",
310
+ "patterns": [
311
+ {
312
+ "name": "constant.character.escape.css",
313
+ "match": "\\\\."
314
+ }
315
+ ],
316
+ "beginCaptures": {
317
+ "0": {
318
+ "name": "punctuation.definition.string.begin.css"
319
+ }
320
+ },
321
+ "endCaptures": {
322
+ "0": {
323
+ "name": "punctuation.definition.string.end.css"
324
+ }
325
+ }
326
+ }
327
+ }
328
+ }
@@ -1733,7 +1733,7 @@
1733
1733
  },
1734
1734
  {
1735
1735
  "name": "string.quoted.template.graphql.js",
1736
- "begin": "(Relay\\.QL)\\s*(`)",
1736
+ "begin": "(Relay\\.QL|gql)\\s*(`)",
1737
1737
  "end": "`",
1738
1738
  "patterns": [
1739
1739
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "Babel ES6 JavaScript",
2
+ "name": "JavaScript (Babel)",
3
3
  "scopeName": "source.js.jsx",
4
4
  "patterns": [
5
5
  {
@@ -20,63 +20,218 @@
20
20
  }
21
21
  ]
22
22
  },
23
- "class-body": {
23
+ "class-method-definition": {
24
24
  "patterns": [
25
25
  {
26
- "include": "#flowtype-keywords"
27
- },
28
- {
29
- "include": "#literal-method"
30
- },
31
- {
32
- "include": "#brackets"
26
+ "name": "meta.short-method.flowtype.js",
27
+ "begin": "(@@[_$a-zA-Z][$\\w]*|static|return)(?=\\s*[\u003c(])|(?=\\s*\u003c)",
28
+ "end": "(?=\\s*[;{])",
29
+ "patterns": [
30
+ {
31
+ "include": "#flowtype-polymorph"
32
+ },
33
+ {
34
+ "include": "#function-declaration-parameters"
35
+ },
36
+ {
37
+ "include": "#flowtype-annotation"
38
+ },
39
+ {
40
+ "include": "#comments"
41
+ },
42
+ {
43
+ "include": "#curly-brackets"
44
+ }
45
+ ],
46
+ "beginCaptures": {
47
+ "1": {
48
+ "name": "keyword.operator.flowtype.js"
49
+ }
50
+ }
33
51
  },
34
52
  {
35
- "include": "#es7-decorators"
53
+ "name": "meta.class-method.computed.js",
54
+ "begin": "(?\u003c=[]\"'])\\s*(?=[\u003c(])",
55
+ "end": "(?=\\s*[;{])",
56
+ "patterns": [
57
+ {
58
+ "include": "#flowtype-polymorph"
59
+ },
60
+ {
61
+ "include": "#function-declaration-parameters"
62
+ },
63
+ {
64
+ "include": "#flowtype-annotation"
65
+ },
66
+ {
67
+ "include": "#comments"
68
+ },
69
+ {
70
+ "include": "#curly-brackets"
71
+ }
72
+ ]
36
73
  },
37
74
  {
38
- "include": "#comments"
75
+ "name": "meta.class-accessor.js",
76
+ "begin": "(?x)\n ((?\u003eget|set)\\s+)\n (?\u003e\n ((')((?\u003e[^'\\\\]|\\\\.)*)('))|\n ((\")((?\u003e[^\"\\\\]|\\\\.)*)(\"))|\n (([_$a-zA-Z][$\\w]*|\\d+))\n )(?=\\s*[\u003c(])",
77
+ "end": "(?=\\s*[;{])",
78
+ "patterns": [
79
+ {
80
+ "include": "#flowtype-polymorph"
81
+ },
82
+ {
83
+ "include": "#function-declaration-parameters"
84
+ },
85
+ {
86
+ "include": "#flowtype-annotation"
87
+ },
88
+ {
89
+ "include": "#comments"
90
+ },
91
+ {
92
+ "include": "#curly-brackets"
93
+ }
94
+ ],
95
+ "beginCaptures": {
96
+ "1": {
97
+ "name": "storage.type.js"
98
+ },
99
+ "10": {
100
+ "name": "string.unquoted.js"
101
+ },
102
+ "11": {
103
+ "name": "entity.name.function.js"
104
+ },
105
+ "2": {
106
+ "name": "string.quoted.js"
107
+ },
108
+ "3": {
109
+ "name": "punctuation.definition.string.begin.js"
110
+ },
111
+ "4": {
112
+ "name": "entity.name.function.js"
113
+ },
114
+ "5": {
115
+ "name": "punctuation.definition.string.end.js"
116
+ },
117
+ "6": {
118
+ "name": "string.quoted.js"
119
+ },
120
+ "7": {
121
+ "name": "punctuation.definition.string.begin.js"
122
+ },
123
+ "8": {
124
+ "name": "entity.name.function.js"
125
+ },
126
+ "9": {
127
+ "name": "punctuation.definition.string.end.js"
128
+ }
129
+ }
39
130
  },
40
131
  {
41
- "begin": "\\s*+(?==[^=\u003e])",
42
- "end": "(^\\s*+(?=([$\\w]*\\s*+\\??\\s*+(:|=(?!^==|=\u003e))|\\[|[$\\w]\\s*+\\(|\\bstatic\\b|\\s*+)))|\\s*(;)",
132
+ "name": "meta.class-method.js",
133
+ "begin": "(?x)\n (?\u003e\n ((')((?\u003e[^'\\\\]|\\\\.)*)('))|\n ((\")((?\u003e[^\"\\\\]|\\\\.)*)(\"))|\n (([_$a-zA-Z][$\\w]*|\\d+))\n )(?=\\s*[\u003c(])",
134
+ "end": "(?=\\s*[;{])",
43
135
  "patterns": [
44
136
  {
45
- "include": "#expression"
137
+ "include": "#flowtype-polymorph"
138
+ },
139
+ {
140
+ "include": "#function-declaration-parameters"
141
+ },
142
+ {
143
+ "include": "#flowtype-annotation"
144
+ },
145
+ {
146
+ "include": "#comments"
147
+ },
148
+ {
149
+ "include": "#curly-brackets"
46
150
  }
47
151
  ],
48
- "endCaptures": {
152
+ "beginCaptures": {
153
+ "1": {
154
+ "name": "string.quoted.js"
155
+ },
156
+ "10": {
157
+ "name": "entity.name.function.js"
158
+ },
159
+ "2": {
160
+ "name": "punctuation.definition.string.begin.js"
161
+ },
162
+ "3": {
163
+ "name": "entity.name.function.js"
164
+ },
49
165
  "4": {
50
- "name": "punctuation.terminator.statement.js"
166
+ "name": "punctuation.definition.string.end.js"
167
+ },
168
+ "5": {
169
+ "name": "string.quoted.js"
170
+ },
171
+ "6": {
172
+ "name": "punctuation.definition.string.begin.js"
173
+ },
174
+ "7": {
175
+ "name": "entity.name.function.js"
176
+ },
177
+ "8": {
178
+ "name": "punctuation.definition.string.end.js"
179
+ },
180
+ "9": {
181
+ "name": "string.unquoted.js"
51
182
  }
52
183
  }
53
- },
184
+ }
185
+ ]
186
+ },
187
+ "class-method-storage": {
188
+ "patterns": [
54
189
  {
55
190
  "name": "storage.modifier.js",
56
- "match": "\\s*+\\b(?\u003c!\\.)static\\b(?!\\.)"
191
+ "match": "(?\u003c!\\.)\\b(?\u003estatic|declare)\\b"
192
+ },
193
+ {
194
+ "name": "storage.type.js",
195
+ "match": "(?\u003c!\\.)\\b(async)\\b"
57
196
  },
58
197
  {
59
- "include": "#flowtype-variable"
198
+ "name": "storage.type.js",
199
+ "match": "(?\u003c!\\.)\\b(get|set)\\b(?!\\s*\\()"
60
200
  },
61
201
  {
62
- "include": "#literal-semi-colon"
202
+ "name": "keyword.generator.asterisk.js",
203
+ "match": "\\*"
63
204
  }
64
205
  ]
65
206
  },
66
- "comments": {
207
+ "class-properties": {
67
208
  "patterns": [
68
209
  {
69
- "include": "#special-comments-conditional-compilation"
70
- },
71
- {
72
- "name": "comment.block.documentation.js",
73
- "begin": "\\s*+/\\*\\*(?!/)",
74
- "end": "\\s*\\*/",
210
+ "name": "meta.class.property.js",
211
+ "begin": "([_$a-zA-Z][$\\w]*)(?=\\s*[:=])",
212
+ "end": "(?=\\s*[;}])",
75
213
  "patterns": [
76
214
  {
77
- "include": "#jsdoc"
215
+ "include": "#flowtype-annotation"
216
+ },
217
+ {
218
+ "include": "#expression"
78
219
  }
79
220
  ],
221
+ "beginCaptures": {
222
+ "1": {
223
+ "name": "variable.other.property.js"
224
+ }
225
+ }
226
+ }
227
+ ]
228
+ },
229
+ "comments": {
230
+ "patterns": [
231
+ {
232
+ "name": "comment.block.documentation.js",
233
+ "begin": "/\\*\\*(?!/)",
234
+ "end": "\\*/",
80
235
  "captures": {
81
236
  "0": {
82
237
  "name": "punctuation.definition.comment.js"
@@ -85,17 +240,22 @@
85
240
  },
86
241
  {
87
242
  "name": "comment.block.js",
88
- "begin": "\\s*+/\\*",
89
- "end": "\\s*\\*/",
90
- "captures": {
243
+ "begin": "/\\*",
244
+ "end": "\\*/",
245
+ "beginCaptures": {
91
246
  "0": {
92
- "name": "punctuation.definition.comment.js"
247
+ "name": "punctuation.definition.comment.begin.js"
248
+ }
249
+ },
250
+ "endCaptures": {
251
+ "0": {
252
+ "name": "punctuation.definition.comment.end.js"
93
253
  }
94
254
  }
95
255
  },
96
256
  {
97
257
  "name": "comment.block.html.js",
98
- "match": "\\s*+(\u003c!--|--\u003e)",
258
+ "match": "(?\u003e\u003c!--|--\u003e)",
99
259
  "captures": {
100
260
  "0": {
101
261
  "name": "punctuation.definition.comment.js"
@@ -104,9 +264,8 @@
104
264
  },
105
265
  {
106
266
  "name": "comment.line.double-slash.js",
107
- "begin": "\\s*+(//)",
108
- "end": "\\s*$",
109
- "beginCaptures": {
267
+ "match": "(//).*$\\n?",
268
+ "captures": {
110
269
  "1": {
111
270
  "name": "punctuation.definition.comment.js"
112
271
  }
@@ -125,12 +284,6 @@
125
284
  },
126
285
  "core": {
127
286
  "patterns": [
128
- {
129
- "include": "#ignore-long-lines"
130
- },
131
- {
132
- "include": "#flowtype-keywords"
133
- },
134
287
  {
135
288
  "include": "#literal-function-labels"
136
289
  },
@@ -147,10 +300,13 @@
147
300
  "include": "#literal-switch"
148
301
  },
149
302
  {
150
- "include": "#expression"
303
+ "include": "#styled-components"
151
304
  },
152
305
  {
153
- "include": "#literal-keywords"
306
+ "include": "#graphql"
307
+ },
308
+ {
309
+ "include": "#expression"
154
310
  },
155
311
  {
156
312
  "include": "#literal-punctuation"
@@ -160,8 +316,9 @@
160
316
  "curly-brackets": {
161
317
  "patterns": [
162
318
  {
163
- "begin": "\\s*+\\{",
164
- "end": "\\s*\\}",
319
+ "name": "meta.group.braces.curly.js",
320
+ "begin": "{",
321
+ "end": "}",
165
322
  "patterns": [
166
323
  {
167
324
  "include": "$self"
@@ -169,12 +326,12 @@
169
326
  ],
170
327
  "beginCaptures": {
171
328
  "0": {
172
- "name": "meta.brace.curly.js"
329
+ "name": "meta.brace.curly.begin.js"
173
330
  }
174
331
  },
175
332
  "endCaptures": {
176
333
  "0": {
177
- "name": "meta.brace.curly.js"
334
+ "name": "meta.brace.curly.end.js"
178
335
  }
179
336
  }
180
337
  }
@@ -184,7 +341,7 @@
184
341
  "patterns": [
185
342
  {
186
343
  "name": "tag.decorator.js",
187
- "match": "\\s*+(?\u003c!@)(@)([_$a-zA-Z][$\\w]*)\\b",
344
+ "match": "(?x)\n (@)([_$a-zA-Z][$\\w]*)\\b",
188
345
  "captures": {
189
346
  "1": {
190
347
  "name": "punctuation.definition.tag.js"
@@ -199,22 +356,22 @@
199
356
  "expression": {
200
357
  "patterns": [
201
358
  {
202
- "include": "#ignore-long-lines"
359
+ "include": "#merge-conflits"
203
360
  },
204
361
  {
205
- "include": "#jsx"
362
+ "include": "#literal-regexp"
206
363
  },
207
364
  {
208
- "include": "#es7-decorators"
365
+ "include": "#literal-jsx"
209
366
  },
210
367
  {
211
- "include": "#support"
368
+ "include": "#es7-decorators"
212
369
  },
213
370
  {
214
- "include": "#literal-function-labels"
371
+ "include": "#support-class"
215
372
  },
216
373
  {
217
- "include": "#literal-arrow-function-labels"
374
+ "include": "#support-other"
218
375
  },
219
376
  {
220
377
  "include": "#literal-function"
@@ -223,37 +380,37 @@
223
380
  "include": "#literal-arrow-function"
224
381
  },
225
382
  {
226
- "include": "#literal-method-alternate"
383
+ "include": "#literal-prototype"
227
384
  },
228
385
  {
229
- "include": "#literal-prototype"
386
+ "include": "#literal-keywords"
230
387
  },
231
388
  {
232
- "include": "#literal-regexp"
389
+ "include": "#literal-method"
233
390
  },
234
391
  {
235
- "include": "#literal-number"
392
+ "include": "#literal-module"
236
393
  },
237
394
  {
238
- "include": "#literal-quasi"
395
+ "include": "#literal-class"
239
396
  },
240
397
  {
241
- "include": "#literal-string"
398
+ "include": "#flowtype-declaration"
242
399
  },
243
400
  {
244
- "include": "#literal-language-constant"
401
+ "include": "#literal-number"
245
402
  },
246
403
  {
247
- "include": "#literal-language-variable"
404
+ "include": "#literal-template-string"
248
405
  },
249
406
  {
250
- "include": "#literal-object"
407
+ "include": "#literal-string"
251
408
  },
252
409
  {
253
- "include": "#literal-module"
410
+ "include": "#literal-language-constant"
254
411
  },
255
412
  {
256
- "include": "#literal-class"
413
+ "include": "#literal-language-variable"
257
414
  },
258
415
  {
259
416
  "include": "#literal-constructor"
@@ -275,802 +432,396 @@
275
432
  },
276
433
  {
277
434
  "include": "#literal-variable"
278
- },
279
- {
280
- "include": "#literal-comma"
281
- },
282
- {
283
- "include": "#miscellaneous"
284
435
  }
285
436
  ]
286
437
  },
287
- "flowtype": {
438
+ "flowtype-annotation": {
288
439
  "patterns": [
289
440
  {
290
- "include": "#comments"
291
- },
292
- {
293
- "include": "#flowtype-polymorphs"
294
- },
295
- {
296
- "include": "#flowtype-bracketed-parameters"
297
- },
298
- {
299
- "include": "#flowtype-return"
441
+ "name": "meta.flowtype.annotation.js",
442
+ "begin": "(?:(\\?)\\s*)?(:)",
443
+ "end": "(?=\\S)",
444
+ "patterns": [
445
+ {
446
+ "include": "#flowtype-tokens"
447
+ }
448
+ ],
449
+ "beginCaptures": {
450
+ "1": {
451
+ "name": "keyword.operator.flowtype.optional.js"
452
+ },
453
+ "2": {
454
+ "name": "keyword.operator.flowtype.annotation.js"
455
+ }
456
+ },
457
+ "applyEndPatternLast": true
300
458
  }
301
459
  ]
302
460
  },
303
- "flowtype-bracketed-parameters": {
461
+ "flowtype-brackets": {
304
462
  "patterns": [
305
463
  {
306
- "begin": "(?\u003c!=)\\s*+(\\()",
307
- "end": "\\s*(\\))",
464
+ "begin": "{",
465
+ "end": "}",
308
466
  "patterns": [
309
467
  {
310
- "include": "#flowtype-variable"
468
+ "include": "#flowtype-tokens"
311
469
  }
312
470
  ],
313
471
  "beginCaptures": {
314
- "1": {
315
- "name": "punctuation.definition.parameters.begin.js"
472
+ "0": {
473
+ "name": "punctuation.section.flowtype.begin.js"
316
474
  }
317
475
  },
318
476
  "endCaptures": {
319
- "1": {
320
- "name": "punctuation.definition.parameters.end.js"
477
+ "0": {
478
+ "name": "punctuation.section.flowtype.end.js"
321
479
  }
322
480
  }
323
481
  }
324
482
  ]
325
483
  },
326
- "flowtype-declare": {
484
+ "flowtype-declaration": {
327
485
  "patterns": [
328
486
  {
329
- "match": "\\s*+(?\u003c!\\.)\\b(declare)\\b\\s++(?=\\b(function|var|type|interface)\\s++)",
330
- "captures": {
331
- "1": {
332
- "name": "keyword.other.declare.flowtype"
333
- }
334
- }
487
+ "name": "support.type.declare.flowtype.js",
488
+ "match": "(?\u003c!\\.)\\b(declare)\\b"
335
489
  },
336
490
  {
337
- "begin": "\\s*+(?\u003c!\\.)\\b(declare)\\b\\s*+\\b(module)(.)(exports)(:)",
338
- "end": "(?=.)",
491
+ "name": "meta.type.flowtype.js",
492
+ "begin": "(?\u003c!\\.)\\b(type)\\b(?=\\s*[_$a-zA-Z])",
493
+ "end": "(?=\\s*(;|from))",
339
494
  "patterns": [
340
495
  {
341
- "include": "#flowtype-parse-types"
496
+ "include": "#flowtype-tokens"
342
497
  }
343
498
  ],
344
499
  "beginCaptures": {
345
500
  "1": {
346
- "name": "keyword.other.declare.flowtype"
347
- },
348
- "2": {
349
- "name": "storage.type.module.flowtype"
350
- },
351
- "3": {
352
- "name": "keyword.operator.accessor.flowtype"
353
- },
354
- "4": {
355
- "name": "storage.type.module.flowtype"
356
- },
357
- "5": {
358
- "name": "punctuation.type.flowtype"
501
+ "name": "support.type.type.flowtype.js"
359
502
  }
360
- },
361
- "applyEndPatternLast": true
503
+ }
362
504
  },
363
505
  {
364
- "begin": "\\s*+(?\u003c!\\.)\\b(declare)\\b\\s*+\\b(module)\\b",
365
- "end": "\\s*(?\u003c=})",
506
+ "name": "meta.type.flowtype.js",
507
+ "begin": "(?\u003c!\\.)\\b(type)\\b(?=\\s*{)",
508
+ "end": "(?\u003c=})",
366
509
  "patterns": [
367
510
  {
368
- "include": "#flowtype-polymorphs"
511
+ "include": "#comments"
369
512
  },
370
513
  {
371
- "name": "entity.name.class.js",
372
- "match": "(?\u003c!\\.)\\s*+([$_\\p{L}](?:[$\\p{L}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Nl}\\p{Pc}])*+)"
514
+ "include": "#flowtype-brackets"
373
515
  },
374
516
  {
375
- "include": "#literal-string"
517
+ "include": "#flowtype-polymorph"
376
518
  },
377
519
  {
378
- "contentName": "meta.class.body.js",
379
- "begin": "\\s*+({)",
380
- "end": "\\s*(})",
381
- "patterns": [
382
- {
383
- "include": "#flowtype-literal-method"
384
- },
385
- {
386
- "include": "#class-body"
387
- }
388
- ],
389
- "beginCaptures": {
390
- "1": {
391
- "name": "punctuation.section.class.begin.js"
392
- }
393
- },
394
- "endCaptures": {
395
- "1": {
396
- "name": "punctuation.section.class.end.js"
397
- }
398
- }
520
+ "name": "entity.name.type.js",
521
+ "match": "([_$a-zA-Z][$\\w]*)"
399
522
  }
400
523
  ],
401
524
  "beginCaptures": {
402
525
  "1": {
403
- "name": "keyword.other.declare.flowtype"
404
- },
405
- "2": {
406
- "name": "storage.type.module.flowtype"
526
+ "name": "support.type.type.flowtype.js"
407
527
  }
408
528
  }
529
+ }
530
+ ]
531
+ },
532
+ "flowtype-identifier": {
533
+ "patterns": [
534
+ {
535
+ "include": "#support-class"
409
536
  },
410
537
  {
411
- "begin": "\\s*+(?\u003c!\\.)\\b(declare)\\b\\s*+\\b(class)\\b",
412
- "end": "\\s*(?\u003c=})",
413
- "patterns": [
414
- {
415
- "include": "#flowtype-polymorphs"
416
- },
417
- {
418
- "match": "\\s*+\\b((extends))\\b\\s*+",
419
- "captures": {
420
- "1": {
421
- "name": "meta.class.extends.js"
422
- },
423
- "2": {
424
- "name": "storage.type.extends.js"
425
- }
426
- }
427
- },
428
- {
429
- "begin": "\\s*+\\b((mixins))\\b\\s*+",
430
- "end": "\\s*(?={)",
431
- "patterns": [
432
- {
433
- "name": "entity.name.class.js",
434
- "match": "(?\u003c!\\.)\\s*+([$_\\p{L}](?:[$\\p{L}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Nl}\\p{Pc}])*+)"
435
- },
436
- {
437
- "include": "#literal-coma"
438
- }
439
- ],
440
- "beginCaptures": {
441
- "1": {
442
- "name": "meta.class.extends.js"
443
- },
444
- "2": {
445
- "name": "storage.type.extends.js"
446
- }
447
- }
448
- },
449
- {
450
- "name": "entity.name.class.js",
451
- "match": "(?\u003c!\\.)\\s*+([$_\\p{L}](?:[$\\p{L}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Nl}\\p{Pc}])*+)"
452
- },
453
- {
454
- "contentName": "meta.class.body.js",
455
- "begin": "\\s*+({)",
456
- "end": "\\s*(})",
457
- "patterns": [
458
- {
459
- "include": "#flowtype-literal-method"
460
- },
461
- {
462
- "include": "#class-body"
463
- }
464
- ],
465
- "beginCaptures": {
466
- "1": {
467
- "name": "punctuation.section.class.begin.js"
468
- }
469
- },
470
- "endCaptures": {
471
- "1": {
472
- "name": "punctuation.section.class.end.js"
473
- }
474
- }
475
- }
476
- ],
477
- "beginCaptures": {
478
- "1": {
479
- "name": "keyword.other.declare.flowtype"
480
- },
481
- "2": {
482
- "name": "storage.type.class.flowtype"
483
- }
484
- }
485
- }
486
- ]
487
- },
488
- "flowtype-interface": {
489
- "begin": "\\s*+(?\u003c!\\.)\\b(interface)\\s++",
490
- "end": "\\s*(?\u003c=})",
491
- "patterns": [
492
- {
493
- "name": "support.type.class.interface.js",
494
- "match": "(?\u003c!\\.)\\s*+([$_\\p{L}](?:[$\\p{L}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Nl}\\p{Pc}])*+)"
538
+ "name": "constant.other.primitve.flowtype.js",
539
+ "match": "\\b(?:any|bool|boolean|mixed|number|string|void)\\b"
495
540
  },
496
541
  {
497
- "include": "#flowtype-polymorphs"
542
+ "name": "variable.other.flowtype.js",
543
+ "match": "[_$a-zA-Z][$\\w]*"
498
544
  },
499
545
  {
500
- "contentName": "meta.class.body.js",
501
- "begin": "\\s*+{",
502
- "end": "\\s*(})",
503
- "patterns": [
504
- {
505
- "include": "#flowtype-literal-method"
506
- },
507
- {
508
- "include": "#class-body"
509
- }
510
- ],
511
- "beginCaptures": {
512
- "0": {
513
- "name": "punctuation.section.class.begin.js"
514
- }
515
- },
516
- "endCaptures": {
517
- "1": {
518
- "name": "punctuation.section.class.end.js"
519
- }
520
- }
521
- }
522
- ],
523
- "beginCaptures": {
524
- "1": {
525
- "name": "keyword.other.interface.flowtype"
526
- }
527
- }
528
- },
529
- "flowtype-keywords": {
530
- "patterns": [
531
- {
532
- "include": "#flowtype-declare"
533
- },
534
- {
535
- "include": "#flowtype-type-aliases"
536
- },
537
- {
538
- "include": "#flowtype-interface"
546
+ "name": "keyword.operator.flowtype.optional.js",
547
+ "match": "\\?"
539
548
  }
540
549
  ]
541
550
  },
542
- "flowtype-literal-method": {
543
- "begin": "(?\u003c!:)\\s*+(?=(\u003c(?:(?\u003e[^\u003c\u003e]+)|\\g\u003c-1\u003e)*\u003e)?(\\())",
544
- "end": "\\s*(?=.)",
551
+ "flowtype-polymorph": {
552
+ "name": "meta.flowtype.polymorph.js",
553
+ "begin": "\u003c",
554
+ "end": "\u003e",
545
555
  "patterns": [
546
556
  {
547
- "include": "#flowtype"
557
+ "include": "#flowtype-tokens"
548
558
  }
549
559
  ],
550
560
  "beginCaptures": {
551
- "1": {
552
- "name": "storage.modifier.js"
553
- },
554
- "2": {
555
- "name": "storage.type.js"
556
- },
557
- "3": {
558
- "name": "keyword.generator.asterisk.js"
559
- }
560
- },
561
- "applyEndPatternLast": true
562
- },
563
- "flowtype-object-property": {
564
- "patterns": [
565
- {
566
- "match": "\\s*+(((?P\u003cquote\u003e\"|').*?(?\u003c=[^\\\\])(?P=quote))|([$_\\p{L}](?:[$.\\p{L}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Nl}\\p{Pc}])*+))\\s*+(\\??)\\s*+(?=:)",
567
- "captures": {
568
- "1": {
569
- "name": "variable.other.property.flowtype"
570
- },
571
- "5": {
572
- "name": "keyword.operator.optional.parameter.flowtype"
573
- }
574
- }
575
- },
576
- {
577
- "include": "#flowtype-vars-and-props"
578
- }
579
- ]
580
- },
581
- "flowtype-parse-array": {
582
- "begin": "(?\u003c!=|[$_A-Za-z0-9])\\s*+(\\[)",
583
- "end": "\\s*(\\])",
584
- "patterns": [
585
- {
586
- "include": "#flowtype-variable"
587
- }
588
- ],
589
- "beginCaptures": {
590
- "1": {
591
- "name": "meta.brace.square.open.flowtype"
561
+ "0": {
562
+ "name": "punctuation.section.flowtype.begin.js"
592
563
  }
593
564
  },
594
565
  "endCaptures": {
595
- "1": {
596
- "name": "meta.brace.square.end.flowtype"
566
+ "0": {
567
+ "name": "punctuation.section.flowtype.end.js"
597
568
  }
598
569
  }
599
570
  },
600
- "flowtype-parse-objects": {
601
- "begin": "(?\u003c=:|\\||\u0026|\\?|=\u003e|\u003c)\\s*+(\\{)",
602
- "end": "\\s*(\\})",
571
+ "flowtype-tokens": {
603
572
  "patterns": [
604
573
  {
605
- "include": "#flowtype-object-property"
606
- }
607
- ],
608
- "beginCaptures": {
609
- "1": {
610
- "name": "meta.brace.round.open.flowtype"
611
- }
612
- },
613
- "endCaptures": {
614
- "1": {
615
- "name": "meta.brace.round.close.flowtype"
616
- }
617
- },
618
- "applyEndPatternLast": true
619
- },
620
- "flowtype-parse-types": {
621
- "patterns": [
622
- {
623
- "name": "keyword.operator.maybe.flowtype",
624
- "match": "\\s*+\\?"
625
- },
626
- {
627
- "name": "keyword.operator.flowtype",
628
- "match": "\\s*+\\btypeof\\b\\s*+"
629
- },
630
- {
631
- "match": "(?!^)\\s*+\\b((?\u003eany|boolean|mixed|number|string|void))\\b",
632
- "captures": {
633
- "1": {
634
- "name": "support.type.builtin.primitive.flowtype"
574
+ "begin": "(?\u003c=[:?|\u0026=])(?=\\s*{)",
575
+ "end": "(?\u003c=})",
576
+ "patterns": [
577
+ {
578
+ "include": "#flowtype-brackets"
635
579
  }
636
- }
580
+ ]
637
581
  },
638
582
  {
639
- "match": "(?!^)\\s*+\\b((?\u003eArrayBuffer|ArrayBufferView|Boolean|Date|DataView|Error|EvalError|Float32Array|Float64Array|Function|Int8Array|Int16Array|Int32Array|JSON|Math|Number|Object|RangeError|ReferenceError|RegExp|String|Symbol|TypeError|Uint8Array|Uint16Array|Uint32Array|Uint8ClampedArray))\\b",
583
+ "name": "meta.flowtype.set.js",
584
+ "match": "\\s*([|\u0026])\\s*",
640
585
  "captures": {
641
586
  "1": {
642
- "name": "support.type.builtin.class.flowtype"
587
+ "name": "keyword.operator.flowtype.other.js"
643
588
  }
644
589
  }
645
590
  },
646
591
  {
647
- "include": "#flowtype-polymorphs"
592
+ "name": "keyword.operator.flowtype.other.js",
593
+ "match": "[*:?\u0026|.]|\\.\\.\\.|\\b(typeof)\\b"
648
594
  },
649
595
  {
650
- "match": "(?!^)\\s*+([$_[\\p{Lu}\\p{Lt}\\p{Lm}\\p{Lo}]][$.\\p{L}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Nl}\\p{Pc}]*+)(?!\\s*+\\()",
651
- "captures": {
652
- "1": {
653
- "name": "support.type.class.flowtype"
596
+ "begin": "\u003c",
597
+ "end": "\u003e",
598
+ "patterns": [
599
+ {
600
+ "include": "#flowtype-tokens"
654
601
  }
655
- }
656
- },
657
- {
658
- "match": "(?!^)\\s*+(?!\\b(if|switch|try|var|let|const|static|function|return|class|do|for|while|debugger|export|import|yield|type|declare|interface)\\b)([$_\\p{L}][$.\\p{L}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Nl}\\p{Pc}]*+)(?!\\s*+\\()",
659
- "captures": {
660
- "2": {
661
- "name": "support.type.primitive.flowtype"
602
+ ],
603
+ "beginCaptures": {
604
+ "0": {
605
+ "name": "punctuation.section.flowtype.begin.js"
662
606
  }
663
- }
664
- },
665
- {
666
- "name": "kewyword.operator.union.flowtype",
667
- "match": "\\s*+\\|"
668
- },
669
- {
670
- "name": "kewyword.operator.intersection.flowtype",
671
- "match": "\\s*+\\\u0026"
672
- },
673
- {
674
- "name": "kewyword.operator.existential.flowtype",
675
- "match": "\\s*+\\*"
676
- },
677
- {
678
- "name": "punctuation.type.flowtype",
679
- "match": "\\s*+(:)"
680
- },
681
- {
682
- "match": "(?\u003c=\\))\\s*+(=\u003e)",
683
- "captures": {
684
- "1": {
685
- "name": "storage.type.function.arrow.js"
607
+ },
608
+ "endCaptures": {
609
+ "0": {
610
+ "name": "punctuation.section.flowtype.end.js"
686
611
  }
687
612
  }
688
613
  },
689
614
  {
690
- "include": "#literal-string"
691
- },
692
- {
693
- "include": "#literal-number"
694
- },
695
- {
696
- "include": "#flowtype-bracketed-parameters"
697
- },
698
- {
699
- "include": "#flowtype-parse-objects"
700
- },
701
- {
702
- "include": "#flowtype-parse-array"
703
- },
704
- {
705
- "include": "#comments"
706
- }
707
- ]
708
- },
709
- "flowtype-polymorphs": {
710
- "patterns": [
711
- {
712
- "begin": "\\s*+\\b((?\u003eArray|Class|Map|Promise|Set|WeakMap|WeakSet))\\s*+(\u003c)",
713
- "end": "\\s*(\u003e)",
615
+ "begin": "\\[",
616
+ "end": "\\]",
714
617
  "patterns": [
715
618
  {
716
- "include": "#literal-comma"
717
- },
718
- {
719
- "match": "\\s*+(\\+|-)",
720
- "captures": {
721
- "1": {
722
- "name": "support.type.variant.flowtype"
723
- }
724
- }
725
- },
726
- {
727
- "include": "#flowtype-parse-types"
619
+ "include": "#flowtype-tokens"
728
620
  }
729
621
  ],
730
622
  "beginCaptures": {
731
- "1": {
732
- "name": "support.type.builtin.class.flowtype"
733
- },
734
- "2": {
735
- "name": "punctuation.flowtype"
623
+ "0": {
624
+ "name": "punctuation.section.flowtype.begin.js"
736
625
  }
737
626
  },
738
627
  "endCaptures": {
739
- "1": {
740
- "name": "punctuation.flowtype"
628
+ "0": {
629
+ "name": "punctuation.section.flowtype.end.js"
741
630
  }
742
631
  }
743
632
  },
744
633
  {
745
- "begin": "\\s*+(\u003c)(?!\u003c)",
746
- "end": "\\s*(\u003e)",
634
+ "begin": "\\(",
635
+ "end": "\\)",
747
636
  "patterns": [
748
637
  {
749
- "include": "#literal-comma"
750
- },
751
- {
752
- "match": "\\s*+(\\+|-)",
753
- "captures": {
754
- "1": {
755
- "name": "support.type.variant.flowtype"
756
- }
757
- }
758
- },
759
- {
760
- "include": "#flowtype-parse-types"
638
+ "include": "#flowtype-tokens"
761
639
  }
762
640
  ],
763
641
  "beginCaptures": {
764
- "1": {
765
- "name": "punctutation.flowtype"
642
+ "0": {
643
+ "name": "punctuation.section.flowtype.begin.js"
766
644
  }
767
645
  },
768
646
  "endCaptures": {
769
- "1": {
770
- "name": "punctutation.flowtype"
647
+ "0": {
648
+ "name": "punctuation.section.flowtype.end.js"
771
649
  }
772
650
  }
773
- }
774
- ]
775
- },
776
- "flowtype-return": {
777
- "patterns": [
651
+ },
778
652
  {
779
- "begin": "(?\u003c=\\))\\s*+(:)",
780
- "end": "(?=.)",
653
+ "name": "meta.flowtype.function.js",
654
+ "begin": "=\u003e",
655
+ "end": "(?\u003c=}|[_$a-zA-Z])",
781
656
  "patterns": [
782
657
  {
783
- "include": "#flowtype-parse-types"
658
+ "include": "#flowtype-brackets"
659
+ },
660
+ {
661
+ "include": "#flowtype-identifier"
662
+ },
663
+ {
664
+ "include": "#comments"
784
665
  }
785
666
  ],
786
667
  "beginCaptures": {
787
- "1": {
788
- "name": "punctuation.type.flowtype"
668
+ "0": {
669
+ "name": "keyword.operator.flowtype.js"
789
670
  }
790
- },
791
- "applyEndPatternLast": true
671
+ }
672
+ },
673
+ {
674
+ "include": "#flowtype-identifier"
675
+ },
676
+ {
677
+ "include": "#literal-string"
678
+ },
679
+ {
680
+ "include": "#comments"
792
681
  }
793
682
  ]
794
683
  },
795
- "flowtype-type-aliases": {
684
+ "function-declaration-parameters": {
796
685
  "patterns": [
797
686
  {
798
- "begin": "\\s*+(?:\\b(import|export))?\\b\\s*(type)\\b\\s*(?!(instanceof|in)\\b)(?=[$_A-Za-z{\\[])",
799
- "end": "\\s*(\\;)|\\b(?=if|switch|try|var|let|const|static|function|return|class|do|for|while|debugger|export|import|yield|type|declare|interface)\\b",
687
+ "begin": "\\(",
688
+ "end": "\\)",
800
689
  "patterns": [
801
690
  {
802
- "match": "\\s*+="
691
+ "include": "#comments"
803
692
  },
804
693
  {
805
- "begin": "\\s*+{",
806
- "end": "\\s*}",
807
- "patterns": [
808
- {
809
- "include": "#flowtype"
810
- },
811
- {
812
- "include": "#flowtype-variable"
813
- },
814
- {
815
- "include": "#comments"
816
- },
817
- {
818
- "include": "#flowtype-function-name"
819
- }
820
- ],
821
- "beginCaptures": {
822
- "0": {
823
- "name": "meta.brace.curly.js"
824
- }
825
- },
826
- "endCaptures": {
827
- "0": {
828
- "name": "meta.brace.curly.js"
829
- }
830
- },
831
- "applyEndPatternLast": true
694
+ "include": "#flowtype-annotation"
832
695
  },
833
696
  {
834
- "include": "#flowtype"
697
+ "name": "keyword.operator.spread.js",
698
+ "match": "(?\u003c!\\.)\\.\\.\\."
835
699
  },
836
700
  {
837
- "include": "#flowtype-parse-types"
701
+ "name": "variable.parameter.function.js",
702
+ "match": "([_$a-zA-Z][$\\w]*)"
838
703
  },
839
704
  {
840
- "include": "#comments"
705
+ "name": "punctuation.separator.parameter.function.js",
706
+ "match": ","
841
707
  },
842
708
  {
843
- "include": "#flowtype-function-name"
709
+ "name": "meta.parameter.optional.js",
710
+ "begin": "=",
711
+ "end": "(?=[,)])",
712
+ "patterns": [
713
+ {
714
+ "include": "#expression"
715
+ }
716
+ ],
717
+ "beginCaptures": {
718
+ "0": {
719
+ "name": "keyword.operator.assignment.js"
720
+ }
721
+ }
844
722
  }
845
723
  ],
846
724
  "beginCaptures": {
847
- "1": {
848
- "name": "keyword.control.module.js"
849
- },
850
- "2": {
851
- "name": "keyword.other.typedef.flowtype"
725
+ "0": {
726
+ "name": "punctuation.definition.parameters.begin.js"
852
727
  }
853
728
  },
854
729
  "endCaptures": {
855
- "1": {
856
- "name": "punctuation.object.end.flowtype"
730
+ "0": {
731
+ "name": "punctuation.definition.parameters.end.js"
857
732
  }
858
733
  }
859
734
  }
860
735
  ]
861
736
  },
862
- "flowtype-typecast": {
737
+ "graphql": {
863
738
  "patterns": [
864
739
  {
865
- "begin": "\\s*+:",
866
- "end": "(?=\\s*+\\))",
740
+ "name": "meta.graphql.js",
741
+ "begin": "\\s*+gql`",
742
+ "end": "`",
867
743
  "patterns": [
868
744
  {
869
- "include": "#flowtype-parse-types"
870
- }
871
- ]
872
- }
873
- ]
874
- },
875
- "flowtype-variable": {
876
- "patterns": [
877
- {
878
- "match": "(?\u003c!\\.)\\s*+([$_\\p{L}](?:[$.\\p{L}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Nl}\\p{Pc}])*+)\\s*+(\\??)\\s*+(?=:\\s*(\\bFunction\\b|(\\((?:(?\u003e[^()]+)|\\g\u003c-1\u003e)*\\))\\s*=\u003e|\\(\\s*$))",
879
- "captures": {
880
- "1": {
881
- "name": "storage.type.function.js"
882
- },
883
- "2": {
884
- "name": "keyword.operator.optional.parameter.flowtype"
885
- }
886
- }
887
- },
888
- {
889
- "match": "\\s*+((?\u003c!\\.)\\.\\.\\.)?([$_\\p{L}](?:[$.\\p{L}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Nl}\\p{Pc}])*+)\\s*+(\\??)\\s*+(?=:|=\u003e)",
890
- "captures": {
891
- "1": {
892
- "name": "keyword.operator.spread.js"
745
+ "include": "source.graphql"
893
746
  },
894
- "2": {
895
- "name": "variable.other.readwrite.js"
896
- },
897
- "3": {
898
- "name": "keyword.operator.optional.parameter.flowtype"
899
- }
900
- }
901
- },
902
- {
903
- "include": "#flowtype-vars-and-props"
904
- }
905
- ]
906
- },
907
- "flowtype-vars-and-props": {
908
- "patterns": [
909
- {
910
- "name": "punctuation.type.flowtype",
911
- "match": "\\s*+\\?"
912
- },
913
- {
914
- "name": "kewyword.operator.union.flowtype",
915
- "match": "\\s*+\\|"
916
- },
917
- {
918
- "name": "kewyword.operator.intersection.flowtype",
919
- "match": "\\s*+\\\u0026"
920
- },
921
- {
922
- "begin": "\\s*+(:)",
923
- "end": "(?=.)",
924
- "patterns": [
925
747
  {
926
- "include": "#flowtype-parse-types"
927
- }
928
- ],
929
- "beginCaptures": {
930
- "1": {
931
- "name": "punctuation.type.flowtype"
932
- }
933
- },
934
- "applyEndPatternLast": true
935
- },
936
- {
937
- "include": "#literal-comma"
938
- },
939
- {
940
- "match": "\\s*+@@"
941
- },
942
- {
943
- "begin": "\\s*+(=\u003e)",
944
- "end": "(?=.)",
945
- "patterns": [
946
- {
947
- "include": "#flowtype-parse-types"
948
- }
949
- ],
950
- "beginCaptures": {
951
- "1": {
952
- "name": "storage.type.function.arrow.js"
953
- }
954
- },
955
- "applyEndPatternLast": true
956
- },
957
- {
958
- "begin": "\\s*+(?=([$_\\p{L}](?:[$.\\p{L}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Nl}\\p{Pc}])*+)?\\s*=)(?!=\u003e|==)",
959
- "end": "\\s*(?=,|;|\\)|}|\\]|\\b(if|switch|try|var|let|const|static|function|return|class|do|for|while|debugger|export|import|yield)\\b|type\\s+[$\\w]+|declare\\s+[$\\w]+|interface\\s+[$\\w]+)",
960
- "patterns": [
961
- {
962
- "include": "#expression"
963
- }
964
- ]
965
- },
966
- {
967
- "include": "#flowtype-bracketed-parameters"
968
- },
969
- {
970
- "include": "#flowtype-parse-array"
971
- },
972
- {
973
- "include": "#expression"
974
- }
975
- ]
976
- },
977
- "ignore-long-lines": {
978
- "patterns": [
979
- {
980
- "match": "^(?:).{1000,}"
981
- }
982
- ]
983
- },
984
- "jsdoc": {
985
- "patterns": [
986
- {
987
- "name": "storage.type.class.doc",
988
- "match": "(?\u003c!\\w)@(abstract|alias|author|class|constructor|deprecated|enum|event|example|extends|fires|ignore|inheritdoc|member|method|param|private|property|protected|readonly|requires|return|since|static|throws|type|var)\\b"
989
- },
990
- {
991
- "name": "storage.type.class.jsdoc",
992
- "match": "(?\u003c!\\w)@(access|also|arg|arguments|augments|borrows|borrowsThis|callback|callbackDocument|classdesc|constant|const|constructs|copyright|default|defaultvalue|desc|description|emits|exception|exports|external|file|fileoverview|function|func|global|host|implements|inner|instance|interface|kind|lends|license|listens|link|linkcode|linkplain|memberof|mixes|mixin|module|name|namespace|overview|prop|public|returns|see|summary|this|todo|tutorial|typedef|undocumented|variation|version|virtual)\\b"
748
+ "name": "js",
749
+ "begin": "\\${",
750
+ "end": "}",
751
+ "patterns": [
752
+ {
753
+ "include": "#core"
754
+ }
755
+ ]
756
+ }
757
+ ]
993
758
  },
994
759
  {
995
- "name": "storage.type.class.jsduck",
996
- "match": "(?\u003c!\\w)@(accessor|alternateClassName|aside|cfg|chainable|docauthor|evented|experimental|ftype|hide|inheritable|localdoc|markdown|mixins|new|override|preventable|ptype|removed|scss mixin|singleton|template|uses|xtype)\\b"
997
- }
998
- ]
999
- },
1000
- "jsx": {
1001
- "patterns": [
1002
- {
1003
- "begin": "(?\u003c=\\(|\\{|\\[|,|\u0026\u0026|\\|\\||\\?|:|=|=\u003e|\\Wreturn|^return|\\Wdefault|^)\\s*+(?=\u003c[$_\\p{L}])",
1004
- "end": "(?=.)",
760
+ "name": "meta.graphql.js",
761
+ "begin": "\\s*+`#graphql",
762
+ "end": "`",
1005
763
  "patterns": [
1006
764
  {
1007
- "include": "#jsx-tag-element-name"
765
+ "include": "source.graphql"
766
+ },
767
+ {
768
+ "name": "js",
769
+ "begin": "\\${",
770
+ "end": "}",
771
+ "patterns": [
772
+ {
773
+ "include": "#core"
774
+ }
775
+ ]
1008
776
  }
1009
- ],
1010
- "applyEndPatternLast": true
777
+ ]
1011
778
  }
1012
779
  ]
1013
780
  },
1014
- "jsx-assignment": {
1015
- "patterns": [
1016
- {
1017
- "name": "keyword.operator.assignment.jsx",
1018
- "match": "=(?=\\s*(?:'|\"|{|/\\*|\u003c|//|\\n))"
1019
- }
1020
- ]
781
+ "jsx-attribute-assignment": {
782
+ "name": "keyword.operator.assignment.jsx",
783
+ "match": "="
1021
784
  },
1022
785
  "jsx-attribute-name": {
786
+ "name": "entity.other.attribute-name.jsx",
787
+ "match": "[_$a-zA-Z][-$\\w]*"
788
+ },
789
+ "jsx-attributes": {
1023
790
  "patterns": [
1024
791
  {
1025
- "match": "(?\u003c!\\S)([$_\\p{L}](?:[$.\\p{L}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Nl}\\p{Pc}-](?\u003c!\\.\\.))*+)(?\u003c!\\.)(?=//|/\\*|=|\\s|\u003e|/\u003e)",
1026
- "captures": {
1027
- "0": {
1028
- "name": "entity.other.attribute-name.jsx"
1029
- }
1030
- }
792
+ "include": "#jsx-attribute-name"
793
+ },
794
+ {
795
+ "include": "#jsx-attribute-assignment"
796
+ },
797
+ {
798
+ "include": "#jsx-string-quoted"
799
+ },
800
+ {
801
+ "include": "#jsx-evaluated-code"
802
+ },
803
+ {
804
+ "include": "#comments"
1031
805
  }
1032
806
  ]
1033
807
  },
1034
808
  "jsx-entities": {
1035
809
  "patterns": [
1036
810
  {
1037
- "match": "(\u0026)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",
1038
- "captures": {
1039
- "0": {
1040
- "name": "constant.character.entity.jsx"
1041
- },
1042
- "1": {
1043
- "name": "punctuation.definition.entity.jsx"
1044
- },
1045
- "2": {
1046
- "name": "entity.name.tag.html.jsx"
1047
- },
1048
- "3": {
1049
- "name": "punctuation.definition.entity.jsx"
1050
- }
1051
- }
811
+ "name": "constant.character.entity.jsx",
812
+ "match": "\u0026(?:[a-zA-Z0-9]+|#\\d+|#x[[:xdigit:]]+);"
1052
813
  },
1053
814
  {
1054
815
  "name": "invalid.illegal.bad-ampersand.jsx",
1055
- "match": "\u0026\\s*+;"
816
+ "match": "\u0026\\S*;"
1056
817
  }
1057
818
  ]
1058
819
  },
1059
820
  "jsx-evaluated-code": {
1060
- "name": "meta.embedded.expression.js",
1061
- "contentName": "source.js.jsx",
821
+ "name": "meta.embedded.expression.jsx",
1062
822
  "begin": "{",
1063
823
  "end": "}",
1064
824
  "patterns": [
1065
- {
1066
- "include": "#jsx-string-double-quoted"
1067
- },
1068
- {
1069
- "include": "#jsx-string-single-quoted"
1070
- },
1071
- {
1072
- "include": "#jsx-spread-attribute"
1073
- },
1074
825
  {
1075
826
  "include": "#expression"
1076
827
  }
@@ -1086,18 +837,10 @@
1086
837
  }
1087
838
  }
1088
839
  },
1089
- "jsx-spread-attribute": {
1090
- "patterns": [
1091
- {
1092
- "name": "keyword.operator.spread.jsx",
1093
- "match": "(?\u003c!\\.)\\.\\.\\."
1094
- }
1095
- ]
1096
- },
1097
- "jsx-string-double-quoted": {
1098
- "name": "string.quoted.double.js",
1099
- "begin": "\"",
1100
- "end": "\"(?\u003c!\\\\\")",
840
+ "jsx-string-quoted": {
841
+ "name": "string.quoted.jsx",
842
+ "begin": "([\"'])",
843
+ "end": "\\1",
1101
844
  "patterns": [
1102
845
  {
1103
846
  "include": "#jsx-entities"
@@ -1114,128 +857,65 @@
1114
857
  }
1115
858
  }
1116
859
  },
1117
- "jsx-string-single-quoted": {
1118
- "name": "string.quoted.single.js",
1119
- "begin": "'",
1120
- "end": "'(?\u003c!\\\\')",
860
+ "jsx-tag-end": {
861
+ "begin": "\u003e",
862
+ "end": "(?=\u003c/)",
1121
863
  "patterns": [
864
+ {
865
+ "include": "#jsx-tag-start"
866
+ },
867
+ {
868
+ "include": "#jsx-evaluated-code"
869
+ },
1122
870
  {
1123
871
  "include": "#jsx-entities"
1124
872
  }
1125
873
  ],
1126
874
  "beginCaptures": {
1127
875
  "0": {
1128
- "name": "punctuation.definition.string.begin.jsx"
1129
- }
1130
- },
1131
- "endCaptures": {
1132
- "0": {
1133
- "name": "punctuation.definition.string.end.jsx"
876
+ "name": "punctuation.definition.tag.end.jsx"
1134
877
  }
1135
878
  }
1136
879
  },
1137
- "jsx-tag-attributes": {
1138
- "patterns": [
1139
- {
1140
- "include": "#jsx-attribute-name"
1141
- },
1142
- {
1143
- "include": "#jsx-assignment"
1144
- },
1145
- {
1146
- "include": "#jsx-string-double-quoted"
1147
- },
1148
- {
1149
- "include": "#jsx-string-single-quoted"
1150
- },
1151
- {
1152
- "include": "#jsx-evaluated-code"
1153
- },
1154
- {
1155
- "include": "#jsx-tag-element-name"
1156
- },
1157
- {
1158
- "include": "#comments"
1159
- }
1160
- ]
1161
- },
1162
- "jsx-tag-element-name": {
880
+ "jsx-tag-start": {
1163
881
  "patterns": [
1164
882
  {
1165
- "name": "meta.tag.jsx",
1166
- "begin": "\\s*+(\u003c)((\\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}\\.-](?\u003c!\\.\\.))*+)+))(?=[ /\u003e\\s])(?![:])(?\u003c!\\.|:)",
1167
- "end": "\\s*(?\u003c=\u003c/)((\\4)|\\2)(\u003e)|(/\u003e)|((?\u003c=\u003c/)[\\S ]*?)\u003e",
883
+ "begin": "(\u003c)([_$a-zA-Z][-$:.\\w]*[$\\w]*)",
884
+ "end": "(\u003c/)(\\2)(\u003e)|(/\u003e)",
1168
885
  "patterns": [
1169
886
  {
1170
- "include": "#jsx-tag-termination"
887
+ "include": "#jsx-tag-end"
1171
888
  },
1172
889
  {
1173
- "include": "#jsx-tag-attributes"
890
+ "include": "#jsx-attributes"
1174
891
  }
1175
892
  ],
1176
893
  "beginCaptures": {
1177
894
  "1": {
1178
- "name": "punctuation.definition.tag.jsx"
895
+ "name": "punctuation.definition.tag.begin.jsx"
1179
896
  },
1180
897
  "2": {
1181
- "name": "entity.name.tag.open.jsx"
1182
- },
1183
- "4": {
1184
- "name": "support.class.component.open.jsx"
898
+ "name": "entity.name.tag.html.jsx"
1185
899
  }
1186
900
  },
1187
901
  "endCaptures": {
1188
902
  "1": {
1189
- "name": "entity.name.tag.close.jsx"
903
+ "name": "punctuation.definition.tag.begin.jsx"
1190
904
  },
1191
905
  "2": {
1192
- "name": "support.class.component.close.jsx"
906
+ "name": "entity.name.tag.html.jsx"
1193
907
  },
1194
908
  "3": {
1195
- "name": "punctuation.definition.tag.jsx"
909
+ "name": "punctuation.definition.tag.end.jsx"
1196
910
  },
1197
911
  "4": {
1198
- "name": "punctuation.definition.tag.jsx"
1199
- },
1200
- "5": {
1201
- "name": "invalid.illegal.termination.jsx"
912
+ "name": "punctuation.definition.tag.end.jsx"
1202
913
  }
1203
914
  }
1204
- }
1205
- ]
1206
- },
1207
- "jsx-tag-termination": {
1208
- "patterns": [
915
+ },
1209
916
  {
1210
- "begin": "(\u003e)",
1211
- "end": "(\u003c/)",
1212
- "patterns": [
1213
- {
1214
- "include": "#jsx-evaluated-code"
1215
- },
1216
- {
1217
- "include": "#jsx-entities"
1218
- },
1219
- {
1220
- "include": "#jsx-tag-element-name"
1221
- }
1222
- ],
1223
- "beginCaptures": {
1224
- "0": {
1225
- "name": "punctuation.definition.tag.jsx"
1226
- },
1227
- "1": {
1228
- "name": "JSXStartTagEnd"
1229
- }
1230
- },
1231
- "endCaptures": {
1232
- "0": {
1233
- "name": "punctuation.definition.tag.jsx"
1234
- },
1235
- "1": {
1236
- "name": "JSXEndTagStart"
1237
- }
1238
- }
917
+ "name": "invalid.illegal.tag.incomplete.jsx",
918
+ "match": "\u003c"
1239
919
  }
1240
920
  ]
1241
921
  },
@@ -1243,47 +923,11 @@
1243
923
  "patterns": [
1244
924
  {
1245
925
  "name": "meta.function.arrow.js",
1246
- "begin": "\\s*+(\\basync\\b)?\\s*+(?=(\u003c(?:(?\u003e[^\u003c\u003e]+)|\\g\u003c-1\u003e)*\u003e)?\\s*+(\\((?:(?\u003e[^()]+)|\\g\u003c-1\u003e)*\\))\\s*+(?:\\s*:(\\s*+(\u0026|\\|)?(\\s*+[$_a-zA-Z0-9]+(\u003c(?:(?\u003e[^\u003c\u003e]+)|\\g\u003c-1\u003e)*\u003e)?|\\s*+(\\{(?:(?\u003e[^{}]+)|\\g\u003c-1\u003e)*\\})|\\s*+(\\[(?:(?\u003e[^\\[\\]]+)|\\g\u003c-1\u003e)*\\])|\\s*+(\\s*(?P\u003cquote\u003e[\"']).*?(?P=quote)(?\u003c!\\\\.))|\\s*[x0-9A-Fa-f]+))*+)*\\s*=\u003e)",
1247
- "end": "\\s*(=\u003e)",
1248
- "patterns": [
1249
- {
1250
- "include": "#flowtype"
1251
- }
1252
- ],
1253
- "beginCaptures": {
1254
- "1": {
1255
- "name": "storage.type.js"
1256
- }
1257
- },
1258
- "endCaptures": {
1259
- "1": {
1260
- "name": "storage.type.function.arrow.js"
1261
- }
1262
- },
1263
- "applyEndPatternLast": true
1264
- },
1265
- {
1266
- "name": "meta.function.arrow.js",
1267
- "match": "\\s*+(\\basync\\b)?\\s*+([_$a-zA-Z][$\\w]*)\\s*(=\u003e)",
1268
- "captures": {
1269
- "1": {
1270
- "name": "storage.type.js"
1271
- },
1272
- "2": {
1273
- "name": "variable.other.readwrite.js"
1274
- },
1275
- "3": {
1276
- "name": "storage.type.function.arrow.js"
1277
- }
1278
- }
1279
- },
1280
- {
1281
- "name": "meta.function.arrow.js",
1282
- "begin": "\\s*+(\\b[_$a-zA-Z][$\\w]*)\\s*+(=)\\s*+(\\basync\\b)?\\s*+(?=(\u003c(?:(?\u003e[^\u003c\u003e]+)|\\g\u003c-1\u003e)*\u003e)?\\s*+(\\((?:(?\u003e[^()]+)|\\g\u003c-1\u003e)*\\))\\s*+(?:\\s*:(\\s*+(\u0026|\\|)?(\\s*+[$_a-zA-Z0-9]+(\u003c(?:(?\u003e[^\u003c\u003e]+)|\\g\u003c-1\u003e)*\u003e)?|\\s*+(\\{(?:(?\u003e[^{}]+)|\\g\u003c-1\u003e)*\\})|\\s*+(\\[(?:(?\u003e[^\\[\\]]+)|\\g\u003c-1\u003e)*\\])|\\s*+(\\s*(?P\u003cquote\u003e[\"']).*?(?P=quote)(?\u003c!\\\\.))|\\s*[x0-9A-Fa-f]+))*+)*\\s*=\u003e)",
1283
- "end": "\\s*(=\u003e)",
926
+ "begin": "(?x)\n (?:([_$a-zA-Z][$\\w]*)\\s*(=)\\s*)?\n (?:\\b(async)\\s+)?\n (?=(\\((?\u003e(?\u003e[^()]+)|\\g\u003c-1\u003e)*\\))\\s*(=\u003e))",
927
+ "end": "(?\u003c=\\))\\s*(=\u003e)",
1284
928
  "patterns": [
1285
929
  {
1286
- "include": "#flowtype"
930
+ "include": "#function-declaration-parameters"
1287
931
  }
1288
932
  ],
1289
933
  "beginCaptures": {
@@ -1301,12 +945,11 @@
1301
945
  "1": {
1302
946
  "name": "storage.type.function.arrow.js"
1303
947
  }
1304
- },
1305
- "applyEndPatternLast": true
948
+ }
1306
949
  },
1307
950
  {
1308
951
  "name": "meta.function.arrow.js",
1309
- "match": "\\s*+(\\b[_$a-zA-Z][$\\w]*)\\s*+(=)\\s*+\\s*+(\\basync\\b)?\\s*+([_$a-zA-Z][$\\w]*)\\s*(=\u003e)",
952
+ "match": "(?x)\n (?:([_$a-zA-Z][$\\w]*)\\s*(=)\\s*)?\n (?:(async)\\s+)?\n \\b([_$a-zA-Z][$\\w]*)\\s*(=\u003e)",
1310
953
  "captures": {
1311
954
  "1": {
1312
955
  "name": "entity.name.function.js"
@@ -1318,7 +961,7 @@
1318
961
  "name": "storage.type.js"
1319
962
  },
1320
963
  "4": {
1321
- "name": "variable.other.readwrite.js"
964
+ "name": "variable.parameter.function.js"
1322
965
  },
1323
966
  "5": {
1324
967
  "name": "storage.type.function.arrow.js"
@@ -1327,11 +970,11 @@
1327
970
  },
1328
971
  {
1329
972
  "name": "meta.prototype.function.arrow.js",
1330
- "begin": "\\s*+(\\b[A-Z][$\\w]*)?(\\.)(prototype)(\\.)([_$a-zA-Z][$\\w]*)\\s*+(=)\\s*+(\\basync\\b)?\\s*+(?=(\u003c(?:(?\u003e[^\u003c\u003e]+)|\\g\u003c-1\u003e)*\u003e)?\\s*+(\\((?:(?\u003e[^()]+)|\\g\u003c-1\u003e)*\\))\\s*+(?:\\s*:(\\s*+(\u0026|\\|)?(\\s*+[$_a-zA-Z0-9]+(\u003c(?:(?\u003e[^\u003c\u003e]+)|\\g\u003c-1\u003e)*\u003e)?|\\s*+(\\{(?:(?\u003e[^{}]+)|\\g\u003c-1\u003e)*\\})|\\s*+(\\[(?:(?\u003e[^\\[\\]]+)|\\g\u003c-1\u003e)*\\])|\\s*+(\\s*(?P\u003cquote\u003e[\"']).*?(?P=quote)(?\u003c!\\\\.))|\\s*[x0-9A-Fa-f]+))*+)*\\s*=\u003e)",
1331
- "end": "\\s*(=\u003e)",
973
+ "begin": "(?x)\n (\\b_?[A-Z][$\\w]*)?\n (\\.)(prototype)\n (\\.)([_$a-zA-Z][$\\w]*)\n \\s*(=)\n \\s*(async)?\n \\s*(?=(\\((?\u003e(?\u003e[^()]+)|\\g\u003c-1\u003e)*\\))\\s*(=\u003e))",
974
+ "end": "(?\u003c=\\))\\s*(=\u003e)",
1332
975
  "patterns": [
1333
976
  {
1334
- "include": "#flowtype"
977
+ "include": "#function-declaration-parameters"
1335
978
  }
1336
979
  ],
1337
980
  "beginCaptures": {
@@ -1361,12 +1004,11 @@
1361
1004
  "1": {
1362
1005
  "name": "storage.type.function.arrow.js"
1363
1006
  }
1364
- },
1365
- "applyEndPatternLast": true
1007
+ }
1366
1008
  },
1367
1009
  {
1368
1010
  "name": "meta.prototype.function.arrow.js",
1369
- "match": "\\s*+(\\b_?[A-Z][$\\w]*)?(\\.)(prototype)(\\.)([_$a-zA-Z][$\\w]*)\\s*+(=)\\s*+(\\basync\\b)?\\s*+([_$a-zA-Z][$\\w]*)\\s*(=\u003e)",
1011
+ "match": "(?x)\n (\\b_?[A-Z][$\\w]*)?\n (\\.)(prototype)\n (\\.)([_$a-zA-Z][$\\w]*)\n \\s*(=)\n \\s*(async)?\n \\s*\\b([_$a-zA-Z][$\\w]*)\\s*(=\u003e)",
1370
1012
  "captures": {
1371
1013
  "1": {
1372
1014
  "name": "entity.name.class.js"
@@ -1390,7 +1032,7 @@
1390
1032
  "name": "storage.type.js"
1391
1033
  },
1392
1034
  "8": {
1393
- "name": "variable.other.readwrite.js"
1035
+ "name": "variable.parameter.function.js"
1394
1036
  },
1395
1037
  "9": {
1396
1038
  "name": "storage.type.function.arrow.js"
@@ -1399,11 +1041,11 @@
1399
1041
  },
1400
1042
  {
1401
1043
  "name": "meta.function.static.arrow.js",
1402
- "begin": "\\s*+(\\b_?[A-Z][$\\w]*)?(\\.)([_$a-zA-Z][$\\w]*)\\s*+(=)\\s*+(\\basync\\b)?\\s*+(?=(\u003c(?:(?\u003e[^\u003c\u003e]+)|\\g\u003c-1\u003e)*\u003e)?\\s*+(\\((?:(?\u003e[^()]+)|\\g\u003c-1\u003e)*\\))\\s*+(?:\\s*:(\\s*+(\u0026|\\|)?(\\s*+[$_a-zA-Z0-9]+(\u003c(?:(?\u003e[^\u003c\u003e]+)|\\g\u003c-1\u003e)*\u003e)?|\\s*+(\\{(?:(?\u003e[^{}]+)|\\g\u003c-1\u003e)*\\})|\\s*+(\\[(?:(?\u003e[^\\[\\]]+)|\\g\u003c-1\u003e)*\\])|\\s*+(\\s*(?P\u003cquote\u003e[\"']).*?(?P=quote)(?\u003c!\\\\.))|\\s*[x0-9A-Fa-f]+))*+)*\\s*=\u003e)",
1403
- "end": "\\s*(=\u003e)",
1044
+ "begin": "(?x)\n (\\b_?[A-Z][$\\w]*)?\n (\\.)([_$a-zA-Z][$\\w]*)\n \\s*(=)\n \\s*(async)?\n \\s*(?=(\\((?\u003e(?\u003e[^()]+)|\\g\u003c-1\u003e)*\\))\\s*(=\u003e))",
1045
+ "end": "(?\u003c=\\))\\s*(=\u003e)",
1404
1046
  "patterns": [
1405
1047
  {
1406
- "include": "#flowtype"
1048
+ "include": "#function-declaration-parameters"
1407
1049
  }
1408
1050
  ],
1409
1051
  "beginCaptures": {
@@ -1427,12 +1069,11 @@
1427
1069
  "1": {
1428
1070
  "name": "storage.type.function.arrow.js"
1429
1071
  }
1430
- },
1431
- "applyEndPatternLast": true
1072
+ }
1432
1073
  },
1433
1074
  {
1434
1075
  "name": "meta.function.static.arrow.js",
1435
- "match": "\\s*+(\\b_?[A-Z][$\\w]*)?(\\.)([_$a-zA-Z][$\\w]*)\\s*+(=)\\s*+(\\basync\\b)?\\s*+([_$a-zA-Z][$\\w]*)\\s*(=\u003e)",
1076
+ "match": "(?x)\n (\\b_?[A-Z][$\\w]*)?\n (\\.)([_$a-zA-Z][$\\w]*)\n \\s*(=)\n \\s*(async)?\n \\s*\\b([_$a-zA-Z][$\\w]*)\\s*(=\u003e)",
1436
1077
  "captures": {
1437
1078
  "1": {
1438
1079
  "name": "entity.name.class.js"
@@ -1450,7 +1091,7 @@
1450
1091
  "name": "storage.type.js"
1451
1092
  },
1452
1093
  "6": {
1453
- "name": "variable.other.readwrite.js"
1094
+ "name": "variable.parameter.function.js"
1454
1095
  },
1455
1096
  "7": {
1456
1097
  "name": "storage.type.function.arrow.js"
@@ -1463,71 +1104,25 @@
1463
1104
  "patterns": [
1464
1105
  {
1465
1106
  "name": "meta.function.json.arrow.js",
1466
- "begin": "(?\u003c=^|{|,)\\s*+(\\b[_$a-zA-Z][$\\w]*)\\s*+(:)\\s*+(\\basync\\b)?\\s*+(?=(\u003c(?:(?\u003e[^\u003c\u003e]+)|\\g\u003c-1\u003e)*\u003e)?\\s*+(\\((?:(?\u003e[^()]+)|\\g\u003c-1\u003e)*\\))\\s*+(?:\\s*:(\\s*+(\u0026|\\|)?(\\s*+[$_a-zA-Z0-9]+(\u003c(?:(?\u003e[^\u003c\u003e]+)|\\g\u003c-1\u003e)*\u003e)?|\\s*+(\\{(?:(?\u003e[^{}]+)|\\g\u003c-1\u003e)*\\})|\\s*+(\\[(?:(?\u003e[^\\[\\]]+)|\\g\u003c-1\u003e)*\\])|\\s*+(\\s*(?P\u003cquote\u003e[\"']).*?(?P=quote)(?\u003c!\\\\.))|\\s*[x0-9A-Fa-f]+))*+)*\\s*=\u003e)",
1467
- "end": "\\s*(=\u003e)",
1107
+ "begin": "(?x)\n (?\u003e\n ((')((?\u003e[^'\\\\]|\\\\.)*)('))|\n ((\")((?\u003e[^\"\\\\]|\\\\.)*)(\"))|\n (([_$a-zA-Z][$\\w]*|\\d+))\n )\n \\s*(:)\n \\s*(?:\\b(async)\\s+)?\n \\s*(?=(\\((?\u003e(?\u003e[^()]+)|\\g\u003c-1\u003e)*\\))\\s*(=\u003e))",
1108
+ "end": "(?\u003c=\\))\\s*(=\u003e)",
1468
1109
  "patterns": [
1469
1110
  {
1470
- "include": "#flowtype"
1111
+ "include": "#function-declaration-parameters"
1471
1112
  }
1472
1113
  ],
1473
1114
  "beginCaptures": {
1474
1115
  "1": {
1475
- "name": "entity.name.function.js"
1476
- },
1477
- "2": {
1478
- "name": "punctuation.separator.key-value.js"
1479
- },
1480
- "3": {
1481
- "name": "storage.type.js"
1482
- }
1483
- },
1484
- "endCaptures": {
1485
- "1": {
1486
- "name": "storage.type.function.arrow.js"
1487
- }
1488
- }
1489
- },
1490
- {
1491
- "name": "meta.function.json.arrow.js",
1492
- "begin": "(?\u003c=^|{|,)\\s*+(\\b[_$a-zA-Z][$\\w]*)\\s*+(:)\\s*+(\\basync\\b)?\\s*+(?=(\u003c(?:(?\u003e[^\u003c\u003e]+)|\\g\u003c-1\u003e)*\u003e)?\\s*+([_$a-zA-Z][$\\w]*)\\s*+(?:\\s*:(\\s*+(\u0026|\\|)?(\\s*+[$_a-zA-Z0-9]+(\u003c(?:(?\u003e[^\u003c\u003e]+)|\\g\u003c-1\u003e)*\u003e)?|\\s*+(\\{(?:(?\u003e[^{}]+)|\\g\u003c-1\u003e)*\\})|\\s*+(\\[(?:(?\u003e[^\\[\\]]+)|\\g\u003c-1\u003e)*\\])|\\s*+(\\s*(?P\u003cquote\u003e[\"']).*?(?P=quote)(?\u003c!\\\\.))|\\s*[x0-9A-Fa-f]+))*+)*\\s*=\u003e)",
1493
- "end": "\\s*(=\u003e)",
1494
- "patterns": [
1495
- {
1496
- "include": "#flowtype-polymorphs"
1116
+ "name": "string.quoted.js"
1497
1117
  },
1498
- {
1499
- "include": "#flowtype-variable"
1500
- }
1501
- ],
1502
- "beginCaptures": {
1503
- "1": {
1118
+ "10": {
1504
1119
  "name": "entity.name.function.js"
1505
1120
  },
1506
- "2": {
1121
+ "11": {
1507
1122
  "name": "punctuation.separator.key-value.js"
1508
1123
  },
1509
- "3": {
1124
+ "12": {
1510
1125
  "name": "storage.type.js"
1511
- }
1512
- },
1513
- "endCaptures": {
1514
- "1": {
1515
- "name": "storage.type.function.arrow.js"
1516
- }
1517
- }
1518
- },
1519
- {
1520
- "name": "meta.function.json.arrow.js",
1521
- "begin": "(?\u003c=^|{|,)\\s*+((?P\u003cquote1\u003e'|\\\")([^\"']*)(?P=quote1))\\s*(:)\\s*+(\\basync\\b)?\\s*+(?=(\u003c(?:(?\u003e[^\u003c\u003e]+)|\\g\u003c-1\u003e)*\u003e)?\\s*+(\\((?:(?\u003e[^()]+)|\\g\u003c-1\u003e)*\\))\\s*+(?:\\s*:(\\s*+(\u0026|\\|)?(\\s*+[$_a-zA-Z0-9]+(\u003c(?:(?\u003e[^\u003c\u003e]+)|\\g\u003c-1\u003e)*\u003e)?|\\s*+(\\{(?:(?\u003e[^{}]+)|\\g\u003c-1\u003e)*\\})|\\s*+(\\[(?:(?\u003e[^\\[\\]]+)|\\g\u003c-1\u003e)*\\])|\\s*+(\\s*(?P\u003cquote2\u003e[\"']).*?(?P=quote2)(?\u003c!\\\\.))|\\s*[x0-9A-Fa-f]+))*+)*\\s*=\u003e)",
1522
- "end": "\\s*(=\u003e)",
1523
- "patterns": [
1524
- {
1525
- "include": "#flowtype"
1526
- }
1527
- ],
1528
- "beginCaptures": {
1529
- "1": {
1530
- "name": "string.quoted.js"
1531
1126
  },
1532
1127
  "2": {
1533
1128
  "name": "punctuation.definition.string.begin.js"
@@ -1539,35 +1134,49 @@
1539
1134
  "name": "punctuation.definition.string.end.js"
1540
1135
  },
1541
1136
  "5": {
1542
- "name": "punctuation.separator.key-value.js"
1137
+ "name": "string.quoted.js"
1543
1138
  },
1544
1139
  "6": {
1545
- "name": "storage.type.js"
1140
+ "name": "punctuation.definition.string.begin.js"
1141
+ },
1142
+ "7": {
1143
+ "name": "entity.name.function.js"
1144
+ },
1145
+ "8": {
1146
+ "name": "punctuation.definition.string.end.js"
1147
+ },
1148
+ "9": {
1149
+ "name": "string.unquoted.js"
1546
1150
  }
1547
1151
  },
1548
1152
  "endCaptures": {
1549
1153
  "1": {
1550
1154
  "name": "storage.type.function.arrow.js"
1551
1155
  }
1552
- },
1553
- "applyEndPatternLast": true
1156
+ }
1554
1157
  },
1555
1158
  {
1556
1159
  "name": "meta.function.json.arrow.js",
1557
- "begin": "(?\u003c=^|{|,)\\s*+((?P\u003cquote1\u003e'|\\\")([^\"']*)(?P=quote1))\\s*+(:)\\s*+(\\basync\\b)?\\s*+(?=(\u003c(?:(?\u003e[^\u003c\u003e]+)|\\g\u003c-1\u003e)*\u003e)?\\s*+([_$a-zA-Z][$\\w]*)\\s*+(?:\\s*:(\\s*+(\u0026|\\|)?(\\s*+[$_a-zA-Z0-9]+(\u003c(?:(?\u003e[^\u003c\u003e]+)|\\g\u003c-1\u003e)*\u003e)?|\\s*+(\\{(?:(?\u003e[^{}]+)|\\g\u003c-1\u003e)*\\})|\\s*+(\\[(?:(?\u003e[^\\[\\]]+)|\\g\u003c-1\u003e)*\\])|\\s*+(\\s*(?P\u003cquote2\u003e[\"']).*?(?P=quote2)(?\u003c!\\\\.))|\\s*[x0-9A-Fa-f]+))*+)*\\s*=\u003e)",
1558
- "end": "\\s*(=\u003e)",
1559
- "patterns": [
1560
- {
1561
- "include": "#flowtype-polymorphs"
1562
- },
1563
- {
1564
- "include": "#flowtype-variable"
1565
- }
1566
- ],
1567
- "beginCaptures": {
1160
+ "match": "(?x)\n (?\u003e\n ((')((?\u003e[^'\\\\]|\\\\.)*)('))|\n ((\")((?\u003e[^\"\\\\]|\\\\.)*)(\"))|\n (([_$a-zA-Z][$\\w]*|\\d+))\n )\n \\s*(:)\n \\s*(?:\\b(async)\\s+)?\n \\s*\\b([_$a-zA-Z][$\\w]*)\\s*(=\u003e)",
1161
+ "captures": {
1568
1162
  "1": {
1569
1163
  "name": "string.quoted.js"
1570
1164
  },
1165
+ "10": {
1166
+ "name": "entity.name.function.js"
1167
+ },
1168
+ "11": {
1169
+ "name": "punctuation.separator.key-value.js"
1170
+ },
1171
+ "12": {
1172
+ "name": "storage.type.js"
1173
+ },
1174
+ "13": {
1175
+ "name": "variable.parameter.function.js"
1176
+ },
1177
+ "14": {
1178
+ "name": "storage.type.function.arrow.js"
1179
+ },
1571
1180
  "2": {
1572
1181
  "name": "punctuation.definition.string.begin.js"
1573
1182
  },
@@ -1578,15 +1187,19 @@
1578
1187
  "name": "punctuation.definition.string.end.js"
1579
1188
  },
1580
1189
  "5": {
1581
- "name": "punctuation.separator.key-value.js"
1190
+ "name": "string.quoted.js"
1582
1191
  },
1583
1192
  "6": {
1584
- "name": "storage.type.js"
1585
- }
1586
- },
1587
- "endCaptures": {
1588
- "1": {
1589
- "name": "storage.type.function.arrow.js"
1193
+ "name": "punctuation.definition.string.begin.js"
1194
+ },
1195
+ "7": {
1196
+ "name": "entity.name.function.js"
1197
+ },
1198
+ "8": {
1199
+ "name": "punctuation.definition.string.end.js"
1200
+ },
1201
+ "9": {
1202
+ "name": "string.unquoted.js"
1590
1203
  }
1591
1204
  }
1592
1205
  }
@@ -1595,85 +1208,112 @@
1595
1208
  "literal-class": {
1596
1209
  "patterns": [
1597
1210
  {
1598
- "begin": "\\s*+(?\u003c!\\.)\\b(class)\\s+",
1599
- "end": "\\s*(?\u003c=})",
1211
+ "name": "meta.class.js",
1212
+ "begin": "(?\u003c!\\.)\\b(?:(class)|(interface))\\b",
1213
+ "end": "\\}",
1600
1214
  "patterns": [
1601
1215
  {
1602
- "match": "\\s*+\\b(extends)\\b\\s*+",
1603
- "captures": {
1604
- "0": {
1605
- "name": "meta.class.extends.js"
1216
+ "include": "#comments"
1217
+ },
1218
+ {
1219
+ "begin": "([_$a-zA-Z][$\\w]*)",
1220
+ "end": "(?={)",
1221
+ "patterns": [
1222
+ {
1223
+ "include": "#comments"
1224
+ },
1225
+ {
1226
+ "include": "#flowtype-polymorph"
1606
1227
  },
1607
- "1": {
1608
- "name": "storage.type.extends.js"
1228
+ {
1229
+ "name": "meta.class.extends.js",
1230
+ "begin": "(?\u003c!\\.)\\b(extends)\\b",
1231
+ "end": "(?={)",
1232
+ "patterns": [
1233
+ {
1234
+ "include": "#flowtype-polymorph"
1235
+ },
1236
+ {
1237
+ "include": "#expression"
1238
+ }
1239
+ ],
1240
+ "beginCaptures": {
1241
+ "0": {
1242
+ "name": "storage.type.extends.js"
1243
+ }
1244
+ }
1245
+ }
1246
+ ],
1247
+ "beginCaptures": {
1248
+ "0": {
1249
+ "name": "entity.name.class.js"
1609
1250
  }
1610
1251
  }
1611
1252
  },
1612
1253
  {
1613
- "name": "entity.name.class.js",
1614
- "match": "(?\u003c!\\.)\\s*+([$_\\p{L}](?:[$\\p{L}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Nl}\\p{Pc}])*+)"
1615
- },
1616
- {
1617
- "include": "#flowtype-polymorphs"
1618
- },
1619
- {
1620
- "contentName": "meta.class.body.js",
1621
- "begin": "\\s*+{",
1622
- "end": "\\s*(})",
1254
+ "begin": "\\{",
1255
+ "end": "(?=})",
1623
1256
  "patterns": [
1624
1257
  {
1625
- "include": "#class-body"
1258
+ "include": "#es7-decorators"
1259
+ },
1260
+ {
1261
+ "include": "#class-properties"
1262
+ },
1263
+ {
1264
+ "include": "#class-method-definition"
1265
+ },
1266
+ {
1267
+ "include": "#class-method-storage"
1268
+ },
1269
+ {
1270
+ "include": "#brackets"
1271
+ },
1272
+ {
1273
+ "include": "#comments"
1626
1274
  }
1627
1275
  ],
1628
1276
  "beginCaptures": {
1629
1277
  "0": {
1630
- "name": "punctuation.section.class.begin.js"
1631
- }
1632
- },
1633
- "endCaptures": {
1634
- "1": {
1635
- "name": "punctuation.section.class.end.js"
1278
+ "name": "meta.brace.curly.begin.js"
1636
1279
  }
1637
1280
  }
1638
- },
1639
- {
1640
- "include": "#expression"
1641
1281
  }
1642
1282
  ],
1643
1283
  "beginCaptures": {
1644
- "0": {
1645
- "name": "meta.class.js"
1646
- },
1647
1284
  "1": {
1648
1285
  "name": "storage.type.class.js"
1286
+ },
1287
+ "2": {
1288
+ "name": "storage.type.interface.flowtype.js"
1289
+ }
1290
+ },
1291
+ "endCaptures": {
1292
+ "0": {
1293
+ "name": "meta.brace.curly.end.js"
1649
1294
  }
1650
1295
  }
1651
1296
  }
1652
1297
  ]
1653
1298
  },
1654
- "literal-comma": {
1655
- "patterns": [
1656
- {
1657
- "name": "meta.delimiter.comma.js",
1658
- "match": "\\s*+,"
1659
- }
1660
- ]
1661
- },
1662
1299
  "literal-constructor": {
1663
1300
  "patterns": [
1664
1301
  {
1665
- "name": "meta.instance.constructor",
1666
- "begin": "\\s*+(new)\\s+(?=[_$a-zA-Z][$\\w.]*)",
1302
+ "name": "meta.instance.constructor.js",
1303
+ "begin": "(new)\\s+(?=[_$a-zA-Z][$\\w.]*)",
1667
1304
  "end": "(?![_$a-zA-Z][$\\w.]*)",
1668
1305
  "patterns": [
1669
1306
  {
1670
- "include": "#support"
1307
+ "include": "#support-class"
1308
+ },
1309
+ {
1310
+ "include": "#support-other"
1671
1311
  },
1672
1312
  {
1673
1313
  "match": "([_$a-zA-Z][$\\w.]*\\.)?([_$a-zA-Z][$\\w]*)",
1674
1314
  "captures": {
1675
1315
  "2": {
1676
- "name": "entity.name.type.new.js"
1316
+ "name": "variable.function.constructor.js"
1677
1317
  }
1678
1318
  }
1679
1319
  }
@@ -1682,8 +1322,7 @@
1682
1322
  "1": {
1683
1323
  "name": "keyword.operator.new.js"
1684
1324
  }
1685
- },
1686
- "disabled": true
1325
+ }
1687
1326
  }
1688
1327
  ]
1689
1328
  },
@@ -1691,12 +1330,15 @@
1691
1330
  "patterns": [
1692
1331
  {
1693
1332
  "name": "meta.for.js",
1694
- "begin": "\\s*+(?\u003c!\\.)\\b(for)\\b",
1695
- "end": "\\s*\\)",
1333
+ "begin": "(?\u003c!\\.)\\b(for)\\b",
1334
+ "end": "\\)",
1696
1335
  "patterns": [
1697
1336
  {
1698
- "begin": "\\s*+\\(",
1699
- "end": "\\s*(?=\\))",
1337
+ "include": "#comments"
1338
+ },
1339
+ {
1340
+ "begin": "\\(",
1341
+ "end": "(?=\\))",
1700
1342
  "patterns": [
1701
1343
  {
1702
1344
  "include": "#literal-keyword-storage"
@@ -1710,7 +1352,7 @@
1710
1352
  ],
1711
1353
  "beginCaptures": {
1712
1354
  "0": {
1713
- "name": "meta.brace.round.js"
1355
+ "name": "meta.brace.round.begin.js"
1714
1356
  }
1715
1357
  }
1716
1358
  }
@@ -1722,7 +1364,7 @@
1722
1364
  },
1723
1365
  "endCaptures": {
1724
1366
  "0": {
1725
- "name": "meta.brace.round.js"
1367
+ "name": "meta.brace.round.end.js"
1726
1368
  }
1727
1369
  }
1728
1370
  }
@@ -1732,36 +1374,14 @@
1732
1374
  "patterns": [
1733
1375
  {
1734
1376
  "name": "meta.function.js",
1735
- "begin": "\\s*+(?:\\b(async)\\b\\s+)?\\s*+(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(\\bfunction\\b)\\s*+(\\*?)\\s*+([_$a-zA-Z][$\\w]*)?\\s*+(?=\\(|\u003c)",
1736
- "end": "\\s*(?=\\;|{|\\b(if|switch|try|var|let|const|static|function|return|class|do|for|while|debugger|export|import|yield|type|declare|interface)\\b|\\)|})",
1377
+ "begin": "(?x)\n (?:([_$a-zA-Z][$\\w]*)\\s*(=)\\s*)?\n (?:(async)\\s+)?\n (function)(?\u003e\\s*(\\*)|(?=[\\s(\u003c]))\n \\s*([_$a-zA-Z][$\\w]*)?",
1378
+ "end": "(?\u003c=\\))",
1737
1379
  "patterns": [
1738
1380
  {
1739
- "include": "#flowtype"
1740
- }
1741
- ],
1742
- "beginCaptures": {
1743
- "1": {
1744
- "name": "storage.type.js"
1745
- },
1746
- "2": {
1747
- "name": "storage.type.function.js"
1748
- },
1749
- "3": {
1750
- "name": "keyword.generator.asterisk.js"
1381
+ "include": "#flowtype-polymorph"
1751
1382
  },
1752
- "4": {
1753
- "name": "entity.name.function.js"
1754
- }
1755
- },
1756
- "applyEndPatternLast": true
1757
- },
1758
- {
1759
- "name": "meta.function.js",
1760
- "begin": "\\s*+(\\b[_$a-zA-Z][$\\w]*)\\s*+(=)\\s*+(?:(async)\\s+)?\\s*+((?\u003c!\\.)\\bfunction\\b)\\s*+(\\*?)\\s*+([_$a-zA-Z][$\\w]*)?\\s*+(?=\\(|\u003c)",
1761
- "end": "\\s*(?=\\;|{|\\b(if|switch|try|var|let|const|static|function|return|class|do|for|while|debugger|export|import|yield|type|declare|interface)\\b|\\)|})",
1762
- "patterns": [
1763
1383
  {
1764
- "include": "#flowtype"
1384
+ "include": "#function-declaration-parameters"
1765
1385
  }
1766
1386
  ],
1767
1387
  "beginCaptures": {
@@ -1783,16 +1403,18 @@
1783
1403
  "6": {
1784
1404
  "name": "entity.name.function.js"
1785
1405
  }
1786
- },
1787
- "applyEndPatternLast": true
1406
+ }
1788
1407
  },
1789
1408
  {
1790
- "name": "meta.prototype.function.js",
1791
- "begin": "\\s*+(\\b_?[A-Z][$\\w]*)?(\\.)(prototype)(\\.)([_$a-zA-Z][$\\w]*)\\s*+(=)\\s*+(?:(async)\\s+)?\\s*+((?\u003c!\\.)\\bfunction\\b)\\s*+(\\*?)\\s*+([_$a-zA-Z][$\\w]*)?\\s*+(?=\\(|\u003c)",
1792
- "end": "\\s*(?=\\;|{|\\b(if|switch|try|var|let|const|static|function|return|class|do|for|while|debugger|export|import|yield|type|declare|interface)\\b|\\)|})",
1409
+ "name": "meta.function.prototype.js",
1410
+ "begin": "(?x)\n (\\b_?[A-Z][$\\w]*)?\n (\\.)(prototype)\n (\\.)([_$a-zA-Z][$\\w]*)\n \\s*(=)\n \\s*(?:(async)\\s+)?\n \\s*(function)(?\u003e\\s*(\\*)|(?=[\\s(\u003c]))\n \\s*([_$a-zA-Z][$\\w]*)?\\s*",
1411
+ "end": "(?\u003c=\\))",
1793
1412
  "patterns": [
1794
1413
  {
1795
- "include": "#flowtype"
1414
+ "include": "#flowtype-polymorph"
1415
+ },
1416
+ {
1417
+ "include": "#function-declaration-parameters"
1796
1418
  }
1797
1419
  ],
1798
1420
  "beginCaptures": {
@@ -1826,16 +1448,18 @@
1826
1448
  "9": {
1827
1449
  "name": "keyword.generator.asterisk.js"
1828
1450
  }
1829
- },
1830
- "applyEndPatternLast": true
1451
+ }
1831
1452
  },
1832
1453
  {
1833
1454
  "name": "meta.function.static.js",
1834
- "begin": "\\s*+(\\b_?[A-Z][$\\w]*)?(\\.)([_$a-zA-Z][$\\w]*)\\s*+(=)\\s*+(?:(async)\\s+)?\\s*+((?\u003c!\\.)\\bfunction\\b)\\s*+(\\*?)\\s*+([_$a-zA-Z][$\\w]*)?\\s*+(?=\\(|\u003c)",
1835
- "end": "\\s*(?=\\;|{|\\b(if|switch|try|var|let|const|static|function|return|class|do|for|while|debugger|export|import|yield|type|declare|interface)\\b|\\)|})",
1455
+ "begin": "(?x)\n (\\b_?[A-Z][$\\w]*)?\n (\\.)([_$a-zA-Z][$\\w]*)\n \\s*(=)\n \\s*(?:(async)\\s+)?\n \\s*(function)(?\u003e\\s*(\\*)|(?=[\\s(\u003c]))\n \\s*([_$a-zA-Z][$\\w]*)?\\s*",
1456
+ "end": "(?\u003c=\\))",
1836
1457
  "patterns": [
1837
1458
  {
1838
- "include": "#flowtype"
1459
+ "include": "#flowtype-polymorph"
1460
+ },
1461
+ {
1462
+ "include": "#function-declaration-parameters"
1839
1463
  }
1840
1464
  ],
1841
1465
  "beginCaptures": {
@@ -1863,90 +1487,41 @@
1863
1487
  "8": {
1864
1488
  "name": "entity.name.function.js"
1865
1489
  }
1866
- },
1867
- "applyEndPatternLast": true
1490
+ }
1868
1491
  }
1869
1492
  ]
1870
1493
  },
1871
1494
  "literal-function-call": {
1872
1495
  "patterns": [
1873
- {
1874
- "include": "#literal-keywords"
1875
- },
1876
1496
  {
1877
1497
  "name": "meta.function-call.without-arguments.js",
1878
- "match": "\\s*+((\\bnew\\b)*)\\s*+([_$a-zA-Z][$\\w]*)\\s*+(\\()\\s*+(\\))",
1498
+ "match": "([_$a-zA-Z][$\\w]*)\\s*(\\(\\s*\\))",
1879
1499
  "captures": {
1880
- "2": {
1881
- "name": "keyword.operator.js"
1882
- },
1883
- "3": {
1500
+ "1": {
1884
1501
  "name": "entity.name.function.js"
1885
1502
  },
1886
- "4": {
1887
- "name": "meta.brace.round.js"
1888
- },
1889
- "5": {
1890
- "name": "meta.brace.round.js"
1891
- }
1892
- }
1893
- },
1894
- {
1895
- "name": "meta.function-call.without-arguments.js",
1896
- "begin": "\\s*+((\\bnew\\b)*)\\s*+(?=(\\[(?:(?\u003e[^\\[\\]]+)|\\g\u003c-1\u003e)*\\])\\s*+\\(\\s*+\\))",
1897
- "end": "(?=.)",
1898
- "patterns": [
1899
- {
1900
- "include": "#square-brackets"
1901
- },
1902
- {
1903
- "include": "#round-brackets"
1904
- }
1905
- ],
1906
- "beginCaptures": {
1907
1503
  "2": {
1908
- "name": "keyword.operator.js"
1504
+ "name": "meta.group.braces.round.function.arguments.js"
1909
1505
  }
1910
- },
1911
- "applyEndPatternLast": true
1506
+ }
1912
1507
  },
1913
1508
  {
1914
1509
  "name": "meta.function-call.with-arguments.js",
1915
- "begin": "\\s*+((\\bnew\\b)*)\\s*+([_$a-zA-Z][$\\w]*)\\s*+(?=\\()",
1916
- "end": "(?=.)",
1917
- "patterns": [
1918
- {
1919
- "include": "#round-brackets"
1920
- }
1921
- ],
1922
- "beginCaptures": {
1923
- "2": {
1924
- "name": "keyword.operator.js"
1925
- },
1926
- "3": {
1510
+ "match": "([_$a-zA-Z][$\\w]*)\\s*(?=\\()",
1511
+ "captures": {
1512
+ "1": {
1927
1513
  "name": "entity.name.function.js"
1928
1514
  }
1929
- },
1930
- "applyEndPatternLast": true
1515
+ }
1931
1516
  },
1932
1517
  {
1933
- "name": "meta.function-call.without-arguments.js",
1934
- "begin": "\\s*+((\\bnew\\b)*)\\s*+(?=(\\[(?:(?\u003e[^\\[\\]]+)|\\g\u003c-1\u003e)*\\])\\s*+\\()",
1935
- "end": "(?=.)",
1936
- "patterns": [
1937
- {
1938
- "include": "#square-brackets"
1939
- },
1940
- {
1941
- "include": "#round-brackets"
1942
- }
1943
- ],
1944
- "beginCaptures": {
1945
- "2": {
1946
- "name": "keyword.operator.js"
1518
+ "name": "meta.function-call.tagged-template.js",
1519
+ "match": "([_$a-zA-Z][$\\w]*)\\s*(?=`)",
1520
+ "captures": {
1521
+ "1": {
1522
+ "name": "entity.name.function.js"
1947
1523
  }
1948
- },
1949
- "applyEndPatternLast": true
1524
+ }
1950
1525
  }
1951
1526
  ]
1952
1527
  },
@@ -1954,44 +1529,37 @@
1954
1529
  "patterns": [
1955
1530
  {
1956
1531
  "name": "meta.function.json.js",
1957
- "begin": "(?\u003c=^|{|,)\\s*+([_$a-zA-Z][$\\w]*)\\s*+(:)\\s*+(?:(async)\\s+)?\\s*+((?\u003c!\\.)\\bfunction\\b)\\s*+(?:(\\*)\\s*)?\\s*(?=\\(|\u003c)",
1958
- "end": "(?=\\{)",
1532
+ "begin": "(?x)\n (?\u003e\n ((')((?\u003e[^'\\\\]|\\\\.)*)('))|\n ((\")((?\u003e[^\"\\\\]|\\\\.)*)(\"))|\n (([_$a-zA-Z][$\\w]*|\\d+))\n )\n \\s*(:)\n \\s*(?:\\b(async)\\s+)?\n \\s*(function)(?\u003e\\s*(\\*)|(?=[\\s(\u003c]))\n \\s*([_$a-zA-Z][$\\w]*)?",
1533
+ "end": "(?\u003c=\\))",
1959
1534
  "patterns": [
1960
1535
  {
1961
- "include": "#flowtype"
1536
+ "include": "#flowtype-polymorph"
1537
+ },
1538
+ {
1539
+ "include": "#function-declaration-parameters"
1962
1540
  }
1963
1541
  ],
1964
1542
  "beginCaptures": {
1965
1543
  "1": {
1544
+ "name": "string.quoted.js"
1545
+ },
1546
+ "10": {
1966
1547
  "name": "entity.name.function.js"
1967
1548
  },
1968
- "2": {
1549
+ "11": {
1969
1550
  "name": "punctuation.separator.key-value.js"
1970
1551
  },
1971
- "3": {
1552
+ "12": {
1972
1553
  "name": "storage.type.js"
1973
1554
  },
1974
- "4": {
1555
+ "13": {
1975
1556
  "name": "storage.type.function.js"
1976
1557
  },
1977
- "5": {
1558
+ "14": {
1978
1559
  "name": "keyword.generator.asterisk.js"
1979
- }
1980
- },
1981
- "applyEndPatternLast": true
1982
- },
1983
- {
1984
- "name": "meta.function.json.js",
1985
- "begin": "(?\u003c=^|{|,)\\s*+((?P\u003cquote\u003e'|\\\")([^\"']*)(?P=quote))\\s*+(:)\\s*+(async)?\\s*+((?\u003c!\\.)\\bfunction\\b)\\s*(\\*\\s*)?\\s*(?=\\(|\u003c)",
1986
- "end": "(?=\\{)",
1987
- "patterns": [
1988
- {
1989
- "include": "#flowtype"
1990
- }
1991
- ],
1992
- "beginCaptures": {
1993
- "1": {
1994
- "name": "string.quoted.js"
1560
+ },
1561
+ "15": {
1562
+ "name": "entity.name.function.js"
1995
1563
  },
1996
1564
  "2": {
1997
1565
  "name": "punctuation.definition.string.begin.js"
@@ -2003,48 +1571,39 @@
2003
1571
  "name": "punctuation.definition.string.end.js"
2004
1572
  },
2005
1573
  "5": {
2006
- "name": "punctuation.separator.key-value.js"
1574
+ "name": "string.quoted.js"
2007
1575
  },
2008
1576
  "6": {
2009
- "name": "storage.type.js"
1577
+ "name": "punctuation.definition.string.begin.js"
2010
1578
  },
2011
1579
  "7": {
2012
- "name": "storage.type.function.js"
1580
+ "name": "entity.name.function.js"
2013
1581
  },
2014
1582
  "8": {
2015
- "name": "keyword.generator.asterisk.js"
1583
+ "name": "punctuation.definition.string.end.js"
1584
+ },
1585
+ "9": {
1586
+ "name": "string.unquoted.js"
2016
1587
  }
2017
- },
2018
- "applyEndPatternLast": true
1588
+ }
1589
+ }
1590
+ ]
1591
+ },
1592
+ "literal-jsx": {
1593
+ "contentName": "meta.jsx.js",
1594
+ "begin": "(?\u003c=\\(|\\{|\\[|,|\u0026\u0026|\\|\\||\\?|:|=|=\u003e|\\Wreturn|^return|\\Wdefault|^)(?=\\s*\u003c[_$a-zA-Z])",
1595
+ "end": "(?\u003c=/\u003e|\u003e)",
1596
+ "patterns": [
1597
+ {
1598
+ "include": "#jsx-tag-start"
2019
1599
  }
2020
1600
  ]
2021
1601
  },
2022
1602
  "literal-keyword-storage": {
2023
1603
  "patterns": [
2024
1604
  {
2025
- "begin": "\\s*+(?\u003c!\\.)\\b(const|let|var)\\b",
2026
- "end": "\\s*(?=\\;|\\b(if|switch|try|var|let|const|static|function|return|class|do|for|while|debugger|export|import|yield|type|declare|interface)\\b|\\)|})",
2027
- "patterns": [
2028
- {
2029
- "begin": "\\s*",
2030
- "end": "\\s*((,)|(?=(\\;)|\\b(if|switch|try|var|let|const|static|function|return|class|do|for|while|debugger|export|import|yield|type|declare|interface)\\b|\\)|}))",
2031
- "patterns": [
2032
- {
2033
- "include": "#flowtype-variable"
2034
- }
2035
- ],
2036
- "endCaptures": {
2037
- "2": {
2038
- "name": "punctuation.terminator.statement.js"
2039
- }
2040
- }
2041
- }
2042
- ],
2043
- "beginCaptures": {
2044
- "1": {
2045
- "name": "storage.type.js"
2046
- }
2047
- }
1605
+ "name": "storage.type.js",
1606
+ "match": "(?\u003c!\\.)\\b(?\u003econst|let|var)\\b"
2048
1607
  }
2049
1608
  ]
2050
1609
  },
@@ -2054,8 +1613,7 @@
2054
1613
  "include": "#literal-keyword-storage"
2055
1614
  },
2056
1615
  {
2057
- "name": "keyword.control.flow.js",
2058
- "match": "\\s*+(?\u003c!\\.)\\b(yield)\\b(?:\\s*+(\\*))?",
1616
+ "match": "(?\u003c!\\.)\\b((?\u003eawait|yield))\\b(?:\\s*(\\*))?",
2059
1617
  "captures": {
2060
1618
  "1": {
2061
1619
  "name": "keyword.control.flow.js"
@@ -2067,81 +1625,52 @@
2067
1625
  },
2068
1626
  {
2069
1627
  "name": "keyword.control.flow.js",
2070
- "match": "\\s*+(?\u003c!\\.)\\b(await|return)\\b"
1628
+ "match": "(?\u003c!\\.)\\b(return)\\b"
2071
1629
  },
2072
1630
  {
2073
1631
  "name": "keyword.control.conditional.js",
2074
- "match": "\\s*+(?\u003c!\\.)\\b(if|else)\\b"
1632
+ "match": "(?\u003c!\\.)\\b(?\u003eif|else)\\b"
2075
1633
  },
2076
1634
  {
2077
1635
  "name": "keyword.control.trycatch.js",
2078
- "match": "\\s*+(?\u003c!\\.)\\b(catch|finally|throw|try)\\b"
1636
+ "match": "(?\u003c!\\.)\\b(?\u003ecatch|finally|throw|try)\\b"
2079
1637
  },
2080
1638
  {
2081
1639
  "name": "keyword.control.loop.js",
2082
- "match": "\\s*+(?\u003c!\\.)\\b(break|continue|do|goto|while)\\b"
1640
+ "match": "(?\u003c!\\.)\\b(?\u003ebreak|continue|do|goto|while|case|default)\\b"
1641
+ },
1642
+ {
1643
+ "name": "keyword.other.reserved.js",
1644
+ "match": "(?\u003c!\\.)\\b(?\u003eenum|module|public|package|private|interface|protected)\\b"
1645
+ },
1646
+ {
1647
+ "name": "keyword.other.js",
1648
+ "match": "(?\u003c!\\.)\\b(debugger)\\b"
2083
1649
  }
2084
1650
  ]
2085
1651
  },
2086
1652
  "literal-labels": {
2087
1653
  "patterns": [
2088
1654
  {
2089
- "match": "\\s*+(?\u003c!\\.|\\?|\\?\\s|\\?\\s\\s)(((\\\")(\\\\.|[^\\\\\"])*(\\\"))|((')(\\\\.|[^\\\\'])*(')))\\s*+(:)",
2090
- "captures": {
2091
- "1": {
2092
- "name": "constant.other.object.key.js"
2093
- },
2094
- "10": {
2095
- "name": "punctuation.separator.key-value.js"
2096
- },
2097
- "2": {
2098
- "name": "string.quoted.double.js"
2099
- },
2100
- "3": {
2101
- "name": "punctuation.definition.string.begin.js"
2102
- },
2103
- "5": {
2104
- "name": "punctuation.definition.string.end.js"
2105
- },
2106
- "6": {
2107
- "name": "string.quoted.single.js"
2108
- },
2109
- "7": {
2110
- "name": "punctuation.definition.string.begin.js"
2111
- },
2112
- "9": {
2113
- "name": "punctuation.definition.string.end.js"
2114
- }
2115
- }
2116
- },
2117
- {
2118
- "begin": "\\s*+(?\u003c!\\.|\\?|\\?\\s|\\?\\s\\s)(\\[)(?=(?:[^\\[]+)*?\\]\\s*+(:)(?=\\s*+\\S))",
2119
- "end": "\\s*(\\])\\s*+(:)",
1655
+ "begin": "(?x)\n (?\u003c!\\?)(?\u003c!\\?\\s)(?=(?\u003e\n ((')((?\u003e[^'\\\\]|\\\\.)*)('))|\n ((\")((?\u003e[^\"\\\\]|\\\\.)*)(\"))|\n )\\s*:)",
1656
+ "end": ":",
2120
1657
  "patterns": [
2121
1658
  {
2122
- "include": "#expression"
2123
- }
2124
- ],
2125
- "beginCaptures": {
2126
- "1": {
2127
- "name": "meta.brace.square.js"
1659
+ "include": "#literal-string"
2128
1660
  }
2129
- },
1661
+ ],
2130
1662
  "endCaptures": {
2131
- "1": {
2132
- "name": "meta.brace.square.js"
2133
- },
2134
- "2": {
1663
+ "0": {
2135
1664
  "name": "punctuation.separator.key-value.js"
2136
1665
  }
2137
1666
  }
2138
1667
  },
2139
1668
  {
2140
1669
  "name": "constant.other.object.key.js",
2141
- "match": "\\s*+(?\u003c!\\.|\\?|\\?\\s|\\?\\s\\s)\\s*+([_$a-zA-Z][$\\w]*)\\s*+(:)",
1670
+ "match": "(?\u003c!\\.|\\?|\\?\\s)([_$a-zA-Z][$\\w]*)\\s*(:)",
2142
1671
  "captures": {
2143
1672
  "1": {
2144
- "name": "string.unquoted.js"
1673
+ "name": "string.unquoted.label.js"
2145
1674
  },
2146
1675
  "2": {
2147
1676
  "name": "punctuation.separator.key-value.js"
@@ -2154,23 +1683,23 @@
2154
1683
  "patterns": [
2155
1684
  {
2156
1685
  "name": "constant.language.boolean.true.js",
2157
- "match": "\\s*+(?\u003c!\\.)\\btrue\\b"
1686
+ "match": "(?\u003c!\\.)\\b(true)\\b"
2158
1687
  },
2159
1688
  {
2160
1689
  "name": "constant.language.boolean.false.js",
2161
- "match": "\\s*+(?\u003c!\\.)\\bfalse\\b"
1690
+ "match": "(?\u003c!\\.)\\b(false)\\b"
2162
1691
  },
2163
1692
  {
2164
1693
  "name": "constant.language.null.js",
2165
- "match": "\\s*+(?\u003c!\\.)\\bnull\\b"
1694
+ "match": "(?\u003c!\\.)\\b(null)\\b"
2166
1695
  },
2167
1696
  {
2168
1697
  "name": "constant.language.undefined.js",
2169
- "match": "\\s*+(?\u003c!\\.)\\bundefined\\b"
1698
+ "match": "(?\u003c!\\.)\\b(undefined)\\b"
2170
1699
  },
2171
1700
  {
2172
1701
  "name": "constant.language.nan.js",
2173
- "match": "\\s*+(?\u003c!\\.)\\bNaN\\b"
1702
+ "match": "(?\u003c!\\.)\\b(NaN)\\b"
2174
1703
  }
2175
1704
  ]
2176
1705
  },
@@ -2178,73 +1707,60 @@
2178
1707
  "patterns": [
2179
1708
  {
2180
1709
  "name": "variable.language.arguments.js",
2181
- "match": "\\s*+(?\u003c!(?\u003c!\\.\\.)\\.)\\b(arguments)\\b"
1710
+ "match": "(?\u003c!(?\u003c!\\.\\.)\\.)\\b(arguments)\\b"
2182
1711
  },
2183
1712
  {
2184
1713
  "name": "variable.language.super.js",
2185
- "match": "\\s*+(?\u003c!(?\u003c!\\.\\.)\\.)\\b(super)\\b\\s*+(?!\\()"
1714
+ "match": "(?\u003c!(?\u003c!\\.\\.)\\.)\\b(super)\\b"
2186
1715
  },
2187
1716
  {
2188
1717
  "name": "variable.language.this.js",
2189
- "match": "\\s*+(?\u003c!(?\u003c!\\.\\.)\\.)\\b(this)\\b"
1718
+ "match": "(?\u003c!(?\u003c!\\.\\.)\\.)\\b(this)\\b"
2190
1719
  },
2191
1720
  {
2192
1721
  "name": "variable.language.self.js",
2193
- "match": "\\s*+(?\u003c!(?\u003c!\\.\\.)\\.)\\b(self)\\b\\s*+(?!\\()"
1722
+ "match": "(?\u003c!(?\u003c!\\.\\.)\\.)\\b(self)\\b"
2194
1723
  },
2195
1724
  {
2196
1725
  "name": "variable.language.proto.js",
2197
- "match": "\\s*+(?\u003c=\\.)\\b(__proto__)\\b"
1726
+ "match": "(?\u003c=\\.)(__proto__)\\b"
2198
1727
  },
2199
1728
  {
2200
1729
  "name": "variable.language.constructor.js",
2201
- "match": "\\s*+(?\u003c=\\.)\\b(constructor)\\b\\s*+(?!\\()"
1730
+ "match": "(?\u003c=\\.)(constructor)\\b"
2202
1731
  },
2203
1732
  {
2204
1733
  "name": "variable.language.prototype.js",
2205
- "match": "\\s*+(?\u003c=\\.)\\b(prototype)\\b"
1734
+ "match": "(?\u003c=\\.)(prototype)\\b"
2206
1735
  }
2207
1736
  ]
2208
1737
  },
2209
1738
  "literal-method": {
2210
1739
  "patterns": [
2211
1740
  {
2212
- "name": "meta.function.method.js",
2213
- "begin": "(?\u003c!:)\\s*+(\\bstatic\\b)?\\s*+(\\basync\\b)?\\s*+(\\*?)\\s*+(?\u003c!\\.)([_$a-zA-Z][$\\w]*)\\s*+(?=(\u003c(?:(?\u003e[^\u003c\u003e]+)|\\g\u003c-1\u003e)*\u003e)?(\\())",
2214
- "end": "\\s*(?=.)",
1741
+ "name": "meta.method.js",
1742
+ "begin": "(?x)\n (?:\\b(static)\\s+)?\n (?:\\b(async)\\s+)?\n (?:(\\*)\\s*)?\n (?\u003e\n ((')((?\u003e[^'\\\\]|\\\\.)*)('))|\n ((\")((?\u003e[^\"\\\\]|\\\\.)*)(\"))|\n (([_$a-zA-Z][$\\w]*|\\d+))\n )\n (?=\\s*(\\((?\u003e(?\u003e[^()]+)|\\g\u003c-1\u003e)*\\))(?\u003e\\s|/\\*.*\\*/)*\\{)",
1743
+ "end": "(?\u003c=\\))",
2215
1744
  "patterns": [
2216
1745
  {
2217
- "include": "#flowtype"
1746
+ "include": "#function-declaration-parameters"
2218
1747
  }
2219
1748
  ],
2220
1749
  "beginCaptures": {
2221
1750
  "1": {
2222
- "name": "storage.modifier.js"
2223
- },
2224
- "2": {
2225
1751
  "name": "storage.type.js"
2226
1752
  },
2227
- "3": {
2228
- "name": "keyword.generator.asterisk.js"
1753
+ "10": {
1754
+ "name": "entity.name.function.js"
2229
1755
  },
2230
- "4": {
2231
- "name": "entity.name.function.method.js"
2232
- }
2233
- },
2234
- "applyEndPatternLast": true
2235
- },
2236
- {
2237
- "name": "meta.function.method.js",
2238
- "begin": "(?\u003c!:)\\s*+(\\bstatic\\b)?\\s*+(\\basync\\b)?\\s*+(\\*?)\\s*+(?\u003c!\\.)((?P\u003cquote\u003e'|\\\")([^\"']*)(?P=quote))\\s*+(?=(\u003c(?:(?\u003e[^\u003c\u003e]+)|\\g\u003c-1\u003e)*\u003e)?(\\())",
2239
- "end": "\\s*(?=.)",
2240
- "patterns": [
2241
- {
2242
- "include": "#flowtype"
2243
- }
2244
- ],
2245
- "beginCaptures": {
2246
- "1": {
2247
- "name": "storage.modifier.js"
1756
+ "11": {
1757
+ "name": "punctuation.definition.string.end.js"
1758
+ },
1759
+ "12": {
1760
+ "name": "string.unquoted.js"
1761
+ },
1762
+ "13": {
1763
+ "name": "entity.name.function.js"
2248
1764
  },
2249
1765
  "2": {
2250
1766
  "name": "storage.type.js"
@@ -2253,79 +1769,37 @@
2253
1769
  "name": "keyword.generator.asterisk.js"
2254
1770
  },
2255
1771
  "4": {
2256
- "name": "entity.name.function.method.js"
2257
- }
2258
- },
2259
- "applyEndPatternLast": true
2260
- },
2261
- {
2262
- "name": "meta.function.method.js",
2263
- "begin": "(?\u003c!:)\\s*+(\\bstatic\\b)?\\s*+(\\basync\\b)?\\s*+(\\*?)\\s*+(?=((\\[(?:(?\u003e[^\\[\\]]+)|\\g\u003c-1\u003e)*\\]))\\s*+(\u003c(?:(?\u003e[^\u003c\u003e]+)|\\g\u003c-1\u003e)*\u003e)?\\s*+(\\())",
2264
- "end": "\\s*(?=.)",
2265
- "patterns": [
2266
- {
2267
- "include": "#flowtype"
2268
- },
2269
- {
2270
- "include": "#square-brackets"
2271
- }
2272
- ],
2273
- "beginCaptures": {
2274
- "1": {
2275
- "name": "storage.modifier.js"
1772
+ "name": "string.quoted.js"
2276
1773
  },
2277
- "2": {
2278
- "name": "storage.type.js"
1774
+ "5": {
1775
+ "name": "punctuation.definition.string.begin.js"
2279
1776
  },
2280
- "3": {
2281
- "name": "keyword.generator.asterisk.js"
1777
+ "6": {
1778
+ "name": "entity.name.function.js"
2282
1779
  },
2283
- "4": {
2284
- "name": "entity.name.function.method.js"
2285
- }
2286
- },
2287
- "applyEndPatternLast": true
2288
- },
2289
- {
2290
- "name": "meta.accessor.js",
2291
- "begin": "\\s*+\\b(?:(static)\\s+)?(get|set)\\s+([_$a-zA-Z][$\\w]*)\\s*+(?=\\()",
2292
- "end": "\\s*(?={)",
2293
- "patterns": [
2294
- {
2295
- "include": "#flowtype"
2296
- }
2297
- ],
2298
- "beginCaptures": {
2299
- "1": {
2300
- "name": "storage.modifier.js"
1780
+ "7": {
1781
+ "name": "punctuation.definition.string.end.js"
2301
1782
  },
2302
- "2": {
2303
- "name": "storage.type.accessor.js"
1783
+ "8": {
1784
+ "name": "string.quoted.js"
2304
1785
  },
2305
- "3": {
2306
- "name": "entity.name.accessor.js"
1786
+ "9": {
1787
+ "name": "punctuation.definition.string.begin.js"
2307
1788
  }
2308
- },
2309
- "applyEndPatternLast": true
1789
+ }
2310
1790
  },
2311
1791
  {
2312
1792
  "name": "meta.accessor.js",
2313
- "begin": "\\s*+\\b(?:(static)\\s+)?(get|set)\\s+(?=((\\[(?:(?\u003e[^\\[\\]]+)|\\g\u003c-1\u003e)*\\])|\\s*+(((')((?:[^']|\\\\')*)('))|\\s*+((\")((?:[^\"]|\\\\\")*)(\"))))\\s*+(\\())",
2314
- "end": "\\s*(?={)",
1793
+ "begin": "(?x)\n \\b(?:(static)\\s+)?\n (get|set)\\s+\n ([_$a-zA-Z][$\\w]*|\\d+)\\s*\n (?=(\\((?\u003e(?\u003e[^()]+)|\\g\u003c-1\u003e)*\\))(?\u003e\\s|/\\*.*\\*/)*\\{)",
1794
+ "end": "(?\u003c=\\))",
2315
1795
  "patterns": [
2316
1796
  {
2317
- "include": "#flowtype-parse-array"
2318
- },
2319
- {
2320
- "include": "#literal-string"
2321
- },
2322
- {
2323
- "include": "#flowtype"
1797
+ "include": "#function-declaration-parameters"
2324
1798
  }
2325
1799
  ],
2326
1800
  "beginCaptures": {
2327
1801
  "1": {
2328
- "name": "storage.modifier.js"
1802
+ "name": "storage.type.js"
2329
1803
  },
2330
1804
  "2": {
2331
1805
  "name": "storage.type.accessor.js"
@@ -2333,37 +1807,7 @@
2333
1807
  "3": {
2334
1808
  "name": "entity.name.accessor.js"
2335
1809
  }
2336
- },
2337
- "applyEndPatternLast": true
2338
- }
2339
- ]
2340
- },
2341
- "literal-method-alternate": {
2342
- "patterns": [
2343
- {
2344
- "name": "meta.function.method.js",
2345
- "begin": "(?:^|;)\\s*+(\\bstatic\\b)?\\s*+(\\basync\\b)?\\s*+(\\*?)\\s*+(?\u003c!\\.)(?!\\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*+(?=(\u003c(?:(?\u003e[^\u003c\u003e]+)|\\g\u003c-1\u003e)*\u003e)?(\\((?:(?\u003e[^()]+)|\\g\u003c-1\u003e)*\\))\\s*+(?:\\s*:(\\s*+(\u0026|\\|)?(\\s*+[$_a-zA-Z0-9]+(\u003c(?:(?\u003e[^\u003c\u003e]+)|\\g\u003c-1\u003e)*\u003e)?|\\s*+(\\{(?:(?\u003e[^{}]+)|\\g\u003c-1\u003e)*\\})|\\s*+(\\[(?:(?\u003e[^\\[\\]]+)|\\g\u003c-1\u003e)*\\])|\\s*+(\\s*(?P\u003cquote\u003e[\"']).*?(?P=quote)(?\u003c!\\\\.))|\\s*[x0-9A-Fa-f]+))*+)*\\s*\\{)",
2346
- "end": "\\s*(?=.)",
2347
- "patterns": [
2348
- {
2349
- "include": "#flowtype"
2350
- }
2351
- ],
2352
- "beginCaptures": {
2353
- "1": {
2354
- "name": "storage.modifier.js"
2355
- },
2356
- "2": {
2357
- "name": "storage.type.js"
2358
- },
2359
- "3": {
2360
- "name": "keyword.generator.asterisk.js"
2361
- },
2362
- "5": {
2363
- "name": "entity.name.function.method.js"
2364
- }
2365
- },
2366
- "applyEndPatternLast": true
1810
+ }
2367
1811
  }
2368
1812
  ]
2369
1813
  },
@@ -2371,7 +1815,7 @@
2371
1815
  "patterns": [
2372
1816
  {
2373
1817
  "name": "meta.function-call.static.without-arguments.js",
2374
- "match": "\\s*+(?:(?\u003c=\\.)|\\b)([A-Z][$\\w]*)\\s*+(\\.)([_$a-zA-Z][$\\w]*)\\s*+(\\(\\s*+\\))",
1818
+ "match": "(?x)\n (?:(?\u003c=\\.)|\\b)\n ([A-Z][$\\w]*)\\s*(\\.)\n ([_$a-zA-Z][$\\w]*)\\s*\n (\\(\\s*\\))",
2375
1819
  "captures": {
2376
1820
  "1": {
2377
1821
  "name": "variable.other.class.js"
@@ -2389,14 +1833,8 @@
2389
1833
  },
2390
1834
  {
2391
1835
  "name": "meta.function-call.static.with-arguments.js",
2392
- "begin": "\\s*+(?:(?\u003c=\\.)|\\b)\\s*+([A-Z][$\\w]*)\\s*+(\\.)([_$a-zA-Z][$\\w]*)\\s*+(?=\\()",
2393
- "end": "(?=.)",
2394
- "patterns": [
2395
- {
2396
- "include": "#round-brackets"
2397
- }
2398
- ],
2399
- "beginCaptures": {
1836
+ "match": "(?x)\n (?:(?\u003c=\\.)|\\b)\n ([A-Z][$\\w]*)\\s*(\\.)\n ([_$a-zA-Z][$\\w]*)\\s*\n (?=\\()",
1837
+ "captures": {
2400
1838
  "1": {
2401
1839
  "name": "variable.other.class.js"
2402
1840
  },
@@ -2406,12 +1844,11 @@
2406
1844
  "3": {
2407
1845
  "name": "entity.name.function.js"
2408
1846
  }
2409
- },
2410
- "applyEndPatternLast": true
1847
+ }
2411
1848
  },
2412
1849
  {
2413
1850
  "name": "meta.function-call.method.without-arguments.js",
2414
- "match": "\\s*+(?\u003c=\\.)\\s*+([_$a-zA-Z][$\\w]*)\\s*+(\\(\\s*+\\))",
1851
+ "match": "(?x)\n (?\u003c=\\.)\n ([_$a-zA-Z][$\\w]*)\\s*\n (\\(\\s*\\))",
2415
1852
  "captures": {
2416
1853
  "1": {
2417
1854
  "name": "entity.name.function.js"
@@ -2423,104 +1860,40 @@
2423
1860
  },
2424
1861
  {
2425
1862
  "name": "meta.function-call.method.with-arguments.js",
2426
- "begin": "\\s*+(?\u003c=\\.)([_$a-zA-Z][$\\w]*)\\s*+(?=\\()",
2427
- "end": "(?=.)",
2428
- "patterns": [
2429
- {
2430
- "include": "#round-brackets"
2431
- }
2432
- ],
2433
- "beginCaptures": {
1863
+ "match": "(?x)\n (?\u003c=\\.)\n ([_$a-zA-Z][$\\w]*)\\s*\n (?=\\()",
1864
+ "captures": {
2434
1865
  "1": {
2435
1866
  "name": "entity.name.function.js"
2436
1867
  }
2437
- },
2438
- "applyEndPatternLast": true
1868
+ }
2439
1869
  }
2440
1870
  ]
2441
1871
  },
2442
1872
  "literal-module": {
2443
1873
  "patterns": [
2444
1874
  {
2445
- "name": "keyword.control.module.js",
2446
- "match": "\\s*+(?\u003c!\\.)\\b(import|export|default)\\b"
2447
- },
2448
- {
2449
- "name": "keyword.control.module.reference.js",
2450
- "match": "\\s*+(?\u003c!\\.)\\b(from|as)\\b"
1875
+ "name": "keyword.operator.module.js",
1876
+ "match": "(?\u003c!\\.)\\b(?\u003eimport|export|default|from|as)\\b"
2451
1877
  }
2452
1878
  ]
2453
1879
  },
2454
1880
  "literal-number": {
2455
1881
  "patterns": [
2456
1882
  {
2457
- "match": "\\s*+((?:\\B[-+])?(?:\\b0[bB][0-1]*|\\b0[oO][0-7]*|\\b0[xX][0-9a-fA-F]*|(\\B\\.[0-9]+|\\b[0-9]+(\\.[0-9]*)?)([eE][-+]?[0-9]+)?))",
2458
- "captures": {
2459
- "1": {
2460
- "name": "constant.numeric.js"
2461
- }
2462
- }
1883
+ "name": "invalid.illegal.numeric.hex.js",
1884
+ "match": "(?i)(?:\\B[-+]|\\b)0x[0-9a-f]*\\.(\\B|\\b[0-9]+)"
2463
1885
  },
2464
1886
  {
2465
- "match": "\\s*+((?:\\B[-+]|\\b)(Infinity)\\b)",
2466
- "captures": {
2467
- "1": {
2468
- "name": "constant.language.infinity.js"
2469
- }
2470
- }
2471
- }
2472
- ]
2473
- },
2474
- "literal-object": {
2475
- "patterns": [
1887
+ "name": "invalid.illegal.numeric.octal.js",
1888
+ "match": "(?:\\B[-+]|\\b)0[0-9]+\\.(\\B|\\b[0-9]+)"
1889
+ },
2476
1890
  {
2477
- "begin": "(?:(?\u003c=\\(|\\[)|(?:\\s*(?:(=)|\\b(default)\\b|\\b(return)\\b|(,))))\\s*({)",
2478
- "end": "\\s*+(})",
2479
- "patterns": [
2480
- {
2481
- "include": "#literal-function-labels"
2482
- },
2483
- {
2484
- "include": "#literal-arrow-function-labels"
2485
- },
2486
- {
2487
- "include": "#literal-arrow-function"
2488
- },
2489
- {
2490
- "include": "#literal-method"
2491
- },
2492
- {
2493
- "include": "#literal-labels"
2494
- },
2495
- {
2496
- "include": "#expression"
2497
- },
2498
- {
2499
- "include": "#literal-punctuation"
2500
- }
2501
- ],
2502
- "beginCaptures": {
2503
- "1": {
2504
- "name": "keyword.operator.assignment.js"
2505
- },
2506
- "2": {
2507
- "name": "keyword.control.module.js"
2508
- },
2509
- "3": {
2510
- "name": "keyword.control.flow.js"
2511
- },
2512
- "4": {
2513
- "name": "meta.delimiter.comma.js"
2514
- },
2515
- "5": {
2516
- "name": "meta.brace.curly.js"
2517
- }
2518
- },
2519
- "endCaptures": {
2520
- "1": {
2521
- "name": "meta.brace.curly.js"
2522
- }
2523
- }
1891
+ "name": "constant.numeric.js",
1892
+ "match": "(?xi)\n (?:\\B[-+])?\n (?:\n \\b0b[0-1]*| # binary\n \\b0o[0-7]*| # octal\n \\b0x[0-9a-f]*| # hex\n (\n \\B\\.[0-9]+| # e.g. .999\n \\b[0-9]+(\\.[0-9]*)? # e.g. 999.999, 999. or 999\n )(e[-+]?[0-9]+)? # e.g. e+123, E-123\n )"
1893
+ },
1894
+ {
1895
+ "name": "constant.language.infinity.js",
1896
+ "match": "(?:\\B[-+]|\\b)(Infinity)\\b"
2524
1897
  }
2525
1898
  ]
2526
1899
  },
@@ -2528,58 +1901,43 @@
2528
1901
  "patterns": [
2529
1902
  {
2530
1903
  "name": "keyword.operator.js",
2531
- "match": "\\s*+(?\u003c!\\.)\\b(delete|in|instanceof|new|of|typeof|void|with)\\b"
1904
+ "match": "(?\u003c!\\.)\\b(?\u003edelete|instanceof|in|new|of|typeof|void|with)\\b"
2532
1905
  },
2533
1906
  {
2534
1907
  "name": "keyword.operator.logical.js",
2535
- "match": "\\s*+(!(?!=)|\u0026\u0026|\\|\\|)"
1908
+ "match": "(?x)\n !(?!=)| # logical-not right-to-left right\n \u0026\u0026 | # logical-and left-to-right both\n \\|\\| # logical-or left-to-right both"
2536
1909
  },
2537
1910
  {
2538
1911
  "name": "keyword.operator.assignment.js",
2539
- "match": "\\s*+(=(?!(=|\u003e)))"
1912
+ "match": "(?x)\n =(?!=) # assignment right-to-left both"
2540
1913
  },
2541
1914
  {
2542
1915
  "name": "keyword.operator.assignment.augmented.js",
2543
- "match": "\\s*+(%=|\u0026=|\\*=|\\+=|-=|/=|\\^=|\\|=|\u003c\u003c=|\u003e\u003e=|\u003e\u003e\u003e=)"
1916
+ "match": "(?x)\n %= | # assignment right-to-left both\n \u0026= | # assignment right-to-left both\n \\*= | # assignment right-to-left both\n \\+= | # assignment right-to-left both\n -= | # assignment right-to-left both\n /= | # assignment right-to-left both\n \\^= | # assignment right-to-left both\n \\|= | # assignment right-to-left both\n \u003c\u003c= | # assignment right-to-left both\n \u003e\u003e= | # assignment right-to-left both\n \u003e\u003e\u003e= # assignment right-to-left both"
2544
1917
  },
2545
1918
  {
2546
1919
  "name": "keyword.operator.bitwise.js",
2547
- "match": "\\s*+(~|\u003c\u003c|\u003e\u003e\u003e|\u003e\u003e|\u0026|\\^|\\|)"
1920
+ "match": "(?x)\n ~ | # bitwise-not right-to-left right\n \u003c\u003c | # bitwise-shift left-to-right both\n \u003e\u003e\u003e | # bitwise-shift left-to-right both\n \u003e\u003e | # bitwise-shift left-to-right both\n \u0026 | # bitwise-and left-to-right both\n \\^ | # bitwise-xor left-to-right both\n \\| # bitwise-or left-to-right both"
2548
1921
  },
2549
1922
  {
2550
1923
  "name": "keyword.operator.relational.js",
2551
- "match": "\\s*+(\u003c=|\u003e=|\u003c|\u003e)"
1924
+ "match": "(?x)\n \u003c= | # relational left-to-right both\n \u003e= | # relational left-to-right both\n \u003c | # relational left-to-right both\n \u003e # relational left-to-right both"
2552
1925
  },
2553
1926
  {
2554
1927
  "name": "keyword.operator.comparison.js",
2555
- "match": "\\s*+(===|!==|==|!=)"
1928
+ "match": "(?x)\n === | # equality left-to-right both\n !== | # equality left-to-right both\n == | # equality left-to-right both\n != # equality left-to-right both"
2556
1929
  },
2557
1930
  {
2558
1931
  "name": "keyword.operator.arithmetic.js",
2559
- "match": "\\s*+(--|\\+\\+|/(?!/|\\*)|%|\\*(?\u003c!/\\*)|\\+|-)"
1932
+ "match": "(?x)\n -- | # decrement n/a right-or-left\n \\+\\+ | # increment n/a right-or-left\n / | # division left-to-right both\n % | # modulus left-to-right both\n \\* | # multiplication left-to-right both\n \\+ | # addition left-to-right both\n - # subtraction left-to-right both"
2560
1933
  },
2561
1934
  {
2562
- "begin": "\\s*+(\\?)",
2563
- "end": "\\s*(:)",
2564
- "patterns": [
2565
- {
2566
- "include": "#expression"
2567
- }
2568
- ],
2569
- "beginCaptures": {
2570
- "1": {
2571
- "name": "keyword.operator.ternary.js"
2572
- }
2573
- },
2574
- "endCaptures": {
2575
- "1": {
2576
- "name": "keyword.operator.ternary.js"
2577
- }
2578
- }
1935
+ "name": "keyword.operator.ternary.js",
1936
+ "match": "[?:]"
2579
1937
  },
2580
1938
  {
2581
1939
  "name": "keyword.operator.spread.js",
2582
- "match": "\\s*+(?\u003c!\\.)\\.\\.\\."
1940
+ "match": "(?\u003c!\\.)\\.\\.\\."
2583
1941
  },
2584
1942
  {
2585
1943
  "name": "keyword.operator.accessor.js",
@@ -2589,112 +1947,61 @@
2589
1947
  },
2590
1948
  "literal-prototype": {
2591
1949
  "patterns": [
2592
- {
2593
- "name": "meta.prototype.access.js",
2594
- "match": "\\s*+([_$a-zA-Z][$\\w]*)(\\.)(prototype)\\b",
2595
- "captures": {
2596
- "1": {
2597
- "name": "entity.name.class.js"
2598
- },
2599
- "2": {
2600
- "name": "keyword.operator.accessor.js"
2601
- },
2602
- "3": {
2603
- "name": "variable.language.prototype.js"
2604
- }
2605
- }
2606
- },
2607
- {
2608
- "name": "meta.prototype.declaration.js",
2609
- "match": "\\s*+([_$a-zA-Z][$\\w]*)(\\.)(prototype)\\s*+=\\s*+",
2610
- "captures": {
2611
- "1": {
2612
- "name": "entity.name.class.js"
2613
- },
2614
- "2": {
2615
- "name": "keyword.operator.accessor.js"
2616
- },
2617
- "3": {
2618
- "name": "variable.language.prototype.js"
2619
- }
2620
- }
2621
- }
2622
- ]
2623
- },
2624
- "literal-punctuation": {
2625
- "patterns": [
2626
- {
2627
- "include": "#literal-semi-colon"
2628
- },
2629
- {
2630
- "include": "#literal-comma"
2631
- }
2632
- ]
2633
- },
2634
- "literal-quasi": {
2635
- "patterns": [
2636
- {
2637
- "name": "string.quasi.js",
2638
- "contentName": "string.quoted.template.js",
2639
- "begin": "\\s*+([a-zA-Z$_][\\w$_]*)?((`))",
2640
- "end": "\\s*(?\u003c!\\\\)((`))",
2641
- "patterns": [
2642
- {
2643
- "name": "entity.quasi.element.js",
2644
- "begin": "(?\u003c!\\\\)\\${",
2645
- "end": "\\s*}",
2646
- "patterns": [
2647
- {
2648
- "include": "#expression"
2649
- }
2650
- ],
2651
- "beginCaptures": {
2652
- "0": {
2653
- "name": "punctuation.quasi.element.begin.js"
2654
- }
2655
- },
2656
- "endCaptures": {
2657
- "0": {
2658
- "name": "punctuation.quasi.element.end.js"
2659
- }
2660
- }
2661
- },
2662
- {
2663
- "include": "#string-content"
2664
- }
2665
- ],
2666
- "beginCaptures": {
1950
+ {
1951
+ "name": "meta.prototype.declaration.js",
1952
+ "match": "([_$a-zA-Z][$\\w]*)(\\.)(prototype)\\s*(=)\\s*",
1953
+ "captures": {
2667
1954
  "1": {
2668
- "name": "entity.quasi.tag.name.js"
1955
+ "name": "entity.name.class.js"
2669
1956
  },
2670
1957
  "2": {
2671
- "name": "punctuation.definition.quasi.begin.js"
1958
+ "name": "keyword.operator.accessor.js"
2672
1959
  },
2673
1960
  "3": {
2674
- "name": "string.quoted.template.js"
1961
+ "name": "variable.language.prototype.js"
1962
+ },
1963
+ "4": {
1964
+ "name": "keyword.operator.assignment.js"
2675
1965
  }
2676
- },
2677
- "endCaptures": {
1966
+ }
1967
+ },
1968
+ {
1969
+ "name": "meta.prototype.access.js",
1970
+ "match": "([_$a-zA-Z][$\\w]*)(\\.)(prototype)\\b",
1971
+ "captures": {
2678
1972
  "1": {
2679
- "name": "punctuation.definition.quasi.end.js"
1973
+ "name": "entity.name.class.js"
2680
1974
  },
2681
1975
  "2": {
2682
- "name": "string.quoted.template.js"
1976
+ "name": "keyword.operator.accessor.js"
1977
+ },
1978
+ "3": {
1979
+ "name": "variable.language.prototype.js"
2683
1980
  }
2684
1981
  }
2685
1982
  }
2686
1983
  ]
2687
1984
  },
1985
+ "literal-punctuation": {
1986
+ "patterns": [
1987
+ {
1988
+ "name": "punctuation.terminator.statement.js",
1989
+ "match": ";"
1990
+ },
1991
+ {
1992
+ "name": "meta.delimiter.comma.js",
1993
+ "match": ","
1994
+ }
1995
+ ]
1996
+ },
2688
1997
  "literal-regexp": {
2689
1998
  "patterns": [
2690
1999
  {
2691
2000
  "name": "string.regexp.js",
2692
- "begin": "(?\u003c=\\.|\\(|,|{|}|\\[|;|,|\u003c|\u003e|\u003c=|\u003e=|==|!=|===|!==|\\+|-|\\*|%|\\+\\+|--|\u003c\u003c|\u003e\u003e|\u003e\u003e\u003e|\u0026|\\||\\^|!|~|\u0026\u0026|\\|\\||\\?|:|=|\\+=|-=|\\*=|%=|\u003c\u003c=|\u003e\u003e=|\u003e\u003e\u003e=|\u0026=|\\|=|\\^=|/|/=|\\Wnew|\\Wdelete|\\Wvoid|\\Wtypeof|\\Winstanceof|\\Win|\\Wdo|\\Wreturn|\\Wcase|\\Wthrow|^new|^delete|^void|^typeof|^instanceof|^in|^do|^return|^case|^throw|^)\\s*+(/)(?!/|\\*|$)",
2693
- "end": "(/)([gimyu]*)",
2001
+ "begin": "(?x)\n (?\u003c=\n \\.|\\(|,|{|}|\\[|;|\u003c|\u003e|\u003c=|\u003e=|==|!=|===|!==|\\+|-|\\*|%|\\+\\+|--|\u003c\u003c|\u003e\u003e|\u003e\u003e\u003e|\u0026|\\||\\^|!|~|\u0026\u0026|\\|\\||\\?|:|=|\\+=|-=|\\*=|%=|\u003c\u003c=|\u003e\u003e=|\u003e\u003e\u003e=|\u0026=|\\|=|\\^=|/|/=|\n \\Wnew|\\Wdelete|\\Wvoid|\\Wtypeof|\\Winstanceof|\\Win|\\Wdo|\\Wreturn|\\Wcase|\\Wthrow|\\Wyield|\n ^new|^delete|^void|^typeof|^instanceof|^in|^do|^return|^case|^throw|^yield|^\n )\\s*\n (/)\n (?!/|\\*|$)",
2002
+ "end": "(/)([gimy]*)",
2694
2003
  "patterns": [
2695
- {
2696
- "include": "source.regexp.babel"
2697
- }
2004
+ {}
2698
2005
  ],
2699
2006
  "beginCaptures": {
2700
2007
  "1": {
@@ -2712,70 +2019,27 @@
2712
2019
  }
2713
2020
  ]
2714
2021
  },
2715
- "literal-semi-colon": {
2716
- "patterns": [
2717
- {
2718
- "name": "punctuation.terminator.statement.js",
2719
- "match": "\\s*+\\;"
2720
- }
2721
- ]
2722
- },
2723
2022
  "literal-string": {
2724
2023
  "patterns": [
2725
2024
  {
2726
- "contentName": "string.quoted.single.js",
2727
- "begin": "\\s*+(('))",
2728
- "end": "\\s*+(?:(('))|(\n))",
2025
+ "name": "string.quoted.js",
2026
+ "begin": "([\"'])",
2027
+ "end": "(\\1)|(\\n)",
2729
2028
  "patterns": [
2730
2029
  {
2731
2030
  "include": "#string-content"
2732
2031
  }
2733
2032
  ],
2734
2033
  "beginCaptures": {
2735
- "1": {
2736
- "name": "string.quoted.single.js"
2737
- },
2738
- "2": {
2034
+ "0": {
2739
2035
  "name": "punctuation.definition.string.begin.js"
2740
2036
  }
2741
2037
  },
2742
2038
  "endCaptures": {
2743
2039
  "1": {
2744
- "name": "string.quoted.single.js"
2745
- },
2746
- "2": {
2747
2040
  "name": "punctuation.definition.string.end.js"
2748
2041
  },
2749
- "3": {
2750
- "name": "invalid.illegal.newline.js"
2751
- }
2752
- }
2753
- },
2754
- {
2755
- "contentName": "string.quoted.double.js",
2756
- "begin": "\\s*+((\"))",
2757
- "end": "\\s*+(?:((\"))|(\n))",
2758
- "patterns": [
2759
- {
2760
- "include": "#string-content"
2761
- }
2762
- ],
2763
- "beginCaptures": {
2764
- "1": {
2765
- "name": "string.quoted.double.js"
2766
- },
2767
- "2": {
2768
- "name": "punctuation.definition.string.begin.js"
2769
- }
2770
- },
2771
- "endCaptures": {
2772
- "1": {
2773
- "name": "string.quoted.double.js"
2774
- },
2775
2042
  "2": {
2776
- "name": "punctuation.definition.string.end.js"
2777
- },
2778
- "3": {
2779
2043
  "name": "invalid.illegal.newline.js"
2780
2044
  }
2781
2045
  }
@@ -2786,19 +2050,22 @@
2786
2050
  "patterns": [
2787
2051
  {
2788
2052
  "name": "meta.switch.js",
2789
- "begin": "\\s*+(?\u003c!\\.)\\b(switch)\\b",
2790
- "end": "\\s*\\}",
2053
+ "begin": "(?\u003c!\\.)\\b(switch)\\b",
2054
+ "end": "\\}",
2791
2055
  "patterns": [
2056
+ {
2057
+ "include": "#comments"
2058
+ },
2792
2059
  {
2793
2060
  "include": "#round-brackets"
2794
2061
  },
2795
2062
  {
2796
- "begin": "\\s*+\\{",
2797
- "end": "\\s*(?=})",
2063
+ "begin": "\\{",
2064
+ "end": "(?=})",
2798
2065
  "patterns": [
2799
2066
  {
2800
- "begin": "\\s*+(?\u003c!\\.)\\b(case|default)\\b",
2801
- "end": "\\s*(:)",
2067
+ "begin": "(?\u003c!\\.)\\b(case|default)\\b",
2068
+ "end": "(?=:)",
2802
2069
  "patterns": [
2803
2070
  {
2804
2071
  "include": "#expression"
@@ -2808,11 +2075,6 @@
2808
2075
  "1": {
2809
2076
  "name": "keyword.control.switch.js"
2810
2077
  }
2811
- },
2812
- "endCaptures": {
2813
- "1": {
2814
- "name": "keyword.operator.js"
2815
- }
2816
2078
  }
2817
2079
  },
2818
2080
  {
@@ -2821,7 +2083,7 @@
2821
2083
  ],
2822
2084
  "beginCaptures": {
2823
2085
  "0": {
2824
- "name": "meta.brace.curly.js"
2086
+ "name": "meta.brace.curly.begin.js"
2825
2087
  }
2826
2088
  }
2827
2089
  }
@@ -2833,25 +2095,67 @@
2833
2095
  },
2834
2096
  "endCaptures": {
2835
2097
  "0": {
2836
- "name": "meta.brace.curly.js"
2098
+ "name": "meta.brace.curly.end.js"
2837
2099
  }
2838
2100
  }
2839
2101
  }
2840
2102
  ]
2841
2103
  },
2842
- "literal-variable": {
2104
+ "literal-template-string": {
2105
+ "begin": "`",
2106
+ "end": "`",
2843
2107
  "patterns": [
2844
2108
  {
2845
- "name": "variable.other.constant.js",
2846
- "match": "\\s*+[A-Z][_$\\dA-Z]*\\b"
2109
+ "include": "#string-content"
2110
+ },
2111
+ {
2112
+ "name": "constant.character.escape.js",
2113
+ "match": "\\\\`"
2114
+ },
2115
+ {
2116
+ "begin": "\\${",
2117
+ "end": "}",
2118
+ "patterns": [
2119
+ {
2120
+ "include": "#expression"
2121
+ }
2122
+ ],
2123
+ "beginCaptures": {
2124
+ "0": {
2125
+ "name": "keyword.other.substitution.begin.js"
2126
+ }
2127
+ },
2128
+ "endCaptures": {
2129
+ "0": {
2130
+ "name": "keyword.other.substitution.end.js"
2131
+ }
2132
+ }
2847
2133
  },
2848
2134
  {
2849
- "name": "variable.other.dollar.js",
2850
- "match": "\\s*+\\$[$\\w]*"
2135
+ "name": "string.interpolated.js",
2136
+ "match": "."
2137
+ }
2138
+ ],
2139
+ "captures": {
2140
+ "0": {
2141
+ "name": "keyword.other.template.end.js"
2142
+ }
2143
+ },
2144
+ "beginCaptures": {
2145
+ "0": {
2146
+ "name": "keyword.other.template.begin.js"
2147
+ }
2148
+ }
2149
+ },
2150
+ "literal-variable": {
2151
+ "patterns": [
2152
+ {
2153
+ "name": "variable.other.constant.js",
2154
+ "match": "_*?[A-Z][_$\\dA-Z]*\\b"
2851
2155
  },
2852
2156
  {
2853
2157
  "name": "meta.property.class.js",
2854
- "match": "\\s*+\\b([A-Z][$\\w]*)\\s*+(\\.)([_$a-zA-Z][$\\w]*)",
2158
+ "match": "\\b([A-Z][$\\w]*)\\s*(\\.)([_$a-zA-Z][$\\w]*)",
2855
2159
  "captures": {
2856
2160
  "1": {
2857
2161
  "name": "variable.other.class.js"
@@ -2866,7 +2170,7 @@
2866
2170
  },
2867
2171
  {
2868
2172
  "name": "variable.other.object.js",
2869
- "match": "\\s*+(?\u003c!\\.)[_$a-zA-Z][$\\w]*\\s*+(?=[\\[\\.])",
2173
+ "match": "(?\u003c!\\.)([_$a-zA-Z][$\\w]*)\\s*(?=[\\[\\.])",
2870
2174
  "captures": {
2871
2175
  "1": {
2872
2176
  "name": "variable.other.object.js"
@@ -2875,26 +2179,48 @@
2875
2179
  },
2876
2180
  {
2877
2181
  "name": "meta.property.object.js",
2878
- "match": "\\s*+(?\u003c=\\.)\\s*+[_$a-zA-Z][$\\w]*",
2182
+ "match": "(?\u003c=\\.)\\s*([_$a-zA-Z][$\\w]*)",
2879
2183
  "captures": {
2880
- "0": {
2184
+ "1": {
2881
2185
  "name": "variable.other.property.js"
2882
2186
  }
2883
2187
  }
2884
2188
  },
2885
2189
  {
2886
2190
  "name": "variable.other.readwrite.js",
2887
- "match": "\\s*+[_$a-zA-Z][$\\w]*"
2191
+ "match": "[_$a-zA-Z][$\\w]*"
2888
2192
  }
2889
2193
  ]
2890
2194
  },
2891
- "miscellaneous": {
2195
+ "merge-conflits": {
2892
2196
  "patterns": [
2893
2197
  {
2894
- "match": "\\s*(=\u003e)",
2198
+ "match": "^([\u003c]{7})\\s(.+)$",
2895
2199
  "captures": {
2896
2200
  "1": {
2897
- "name": "storage.type.function.arrow.js"
2201
+ "name": "invalid.illegal.conflict-marker.merge-into.js"
2202
+ },
2203
+ "2": {
2204
+ "name": "invalid.illegal.string.js"
2205
+ }
2206
+ }
2207
+ },
2208
+ {
2209
+ "match": "^([=|]{7})$",
2210
+ "captures": {
2211
+ "1": {
2212
+ "name": "invalid.illegal.conflict-marker.separator.js"
2213
+ }
2214
+ }
2215
+ },
2216
+ {
2217
+ "match": "^([\u003e]{7})\\s(.+)$",
2218
+ "captures": {
2219
+ "1": {
2220
+ "name": "invalid.illegal.conflict-marker.other-commit.js"
2221
+ },
2222
+ "2": {
2223
+ "name": "invalid.illegal.string.js"
2898
2224
  }
2899
2225
  }
2900
2226
  }
@@ -2903,30 +2229,33 @@
2903
2229
  "round-brackets": {
2904
2230
  "patterns": [
2905
2231
  {
2906
- "begin": "(^|:|;|=|(?\u003c=:|;|=))\\s*+(\\((?=((?P\u003cquote\u003e\"|').*?(?\u003c=[^\\\\])(?P=quote)|[^?:])*(:|\\?\\s*+:)))",
2907
- "end": "\\s*\\)",
2232
+ "name": "meta.group.braces.round.js",
2233
+ "begin": "\\(",
2234
+ "end": "\\)",
2908
2235
  "patterns": [
2909
- {
2910
- "include": "#flowtype-typecast"
2911
- },
2912
2236
  {
2913
2237
  "include": "#expression"
2914
2238
  }
2915
2239
  ],
2916
2240
  "beginCaptures": {
2917
- "2": {
2918
- "name": "meta.brace.round.js"
2241
+ "0": {
2242
+ "name": "meta.brace.round.begin.js"
2919
2243
  }
2920
2244
  },
2921
2245
  "endCaptures": {
2922
2246
  "0": {
2923
- "name": "meta.brace.round.js"
2247
+ "name": "meta.brace.round.end.js"
2924
2248
  }
2925
2249
  }
2926
- },
2250
+ }
2251
+ ]
2252
+ },
2253
+ "square-brackets": {
2254
+ "patterns": [
2927
2255
  {
2928
- "begin": "\\s*+\\(",
2929
- "end": "\\s*\\)",
2256
+ "name": "meta.group.braces.square.js",
2257
+ "begin": "\\[",
2258
+ "end": "\\]",
2930
2259
  "patterns": [
2931
2260
  {
2932
2261
  "include": "#expression"
@@ -2934,141 +2263,175 @@
2934
2263
  ],
2935
2264
  "beginCaptures": {
2936
2265
  "0": {
2937
- "name": "meta.brace.round.js"
2266
+ "name": "meta.brace.square.begin.js"
2938
2267
  }
2939
2268
  },
2940
2269
  "endCaptures": {
2941
2270
  "0": {
2942
- "name": "meta.brace.round.js"
2271
+ "name": "meta.brace.square.end.js"
2943
2272
  }
2944
2273
  }
2945
2274
  }
2946
2275
  ]
2947
2276
  },
2948
- "special-comments-conditional-compilation": {
2277
+ "string-content": {
2278
+ "patterns": [
2279
+ {
2280
+ "name": "constant.character.escape.newline.js",
2281
+ "match": "\\\\\\s*\\n"
2282
+ },
2283
+ {
2284
+ "name": "constant.character.escape.js",
2285
+ "match": "\\\\([1-7][0-7]{0,2}|[0-7]{2,3}|[bfnrtv0'\"\\\\]|x[[:xdigit:]]{2}|u\\{[[:xdigit:]]+\\}|u[[:xdigit:]]{4})"
2286
+ }
2287
+ ]
2288
+ },
2289
+ "styled-components": {
2949
2290
  "patterns": [
2950
2291
  {
2951
- "name": "comment.block.conditional.js",
2952
- "begin": "\\s*+/\\*(?=@)",
2953
- "end": "\\s*\\*/",
2292
+ "name": "meta.styled-components.js",
2293
+ "contentName": "source.css.embedded.js",
2294
+ "begin": "(?\u003c!\\.)\\b(injectGlobal|keyframes)\\s*(`)",
2295
+ "end": "`",
2954
2296
  "patterns": [
2955
2297
  {
2956
- "name": "punctuation.definition.comment.js",
2957
- "match": "\\s*+/\\*"
2958
- },
2959
- {
2960
- "include": "$self"
2298
+ "include": "source.js.css"
2961
2299
  }
2962
2300
  ],
2963
- "captures": {
2964
- "0": {
2965
- "name": "punctuation.definition.comment.js"
2966
- }
2967
- },
2968
- "endCaptures": {
2301
+ "beginCaptures": {
2969
2302
  "1": {
2970
- "name": "keyword.control.conditional.js"
2303
+ "name": "variable.function.tagged-template.js"
2971
2304
  },
2972
2305
  "2": {
2973
- "name": "punctuation.definition.keyword.js"
2306
+ "name": "punctuation.definition.string.template.begin.js"
2974
2307
  }
2975
- }
2976
- },
2977
- {
2978
- "name": "keyword.control.conditional.js",
2979
- "match": "\\s*+(?!@)(@)(if|elif|else|end|ifdef|endif|cc_on|set)\\b",
2980
- "captures": {
2981
- "1": {
2982
- "name": "punctuation.definition.keyword.js"
2308
+ },
2309
+ "endCaptures": {
2310
+ "0": {
2311
+ "name": "punctuation.definition.string.template.end.js"
2983
2312
  }
2984
2313
  }
2985
2314
  },
2986
2315
  {
2987
- "name": "variable.other.conditional.js",
2988
- "match": "\\s*+(?!@)(@)(_win32|_win16|_mac|_alpha|_x86|_mc680x0|_PowerPC|_jscript|_jscript_build|_jscript_version|_debug|_fast|[a-zA-Z]\\w+)",
2989
- "captures": {
2990
- "1": {
2991
- "name": "punctuation.definition.variable.js"
2992
- }
2993
- }
2994
- }
2995
- ]
2996
- },
2997
- "square-brackets": {
2998
- "patterns": [
2999
- {
3000
- "begin": "\\s*+\\[",
3001
- "end": "\\s*\\]",
2316
+ "name": "meta.styled-components.js",
2317
+ "contentName": "source.css.embedded.js",
2318
+ "begin": "(?\u003c!\\.)\\b(styled)(\\.)([_$a-zA-Z][$\\w]*)\\s*(`)",
2319
+ "end": "`",
3002
2320
  "patterns": [
3003
2321
  {
3004
- "include": "#expression"
2322
+ "include": "source.js.css"
3005
2323
  }
3006
2324
  ],
3007
2325
  "beginCaptures": {
3008
- "0": {
3009
- "name": "meta.brace.square.js"
2326
+ "1": {
2327
+ "name": "variable.other.object.js"
2328
+ },
2329
+ "2": {
2330
+ "name": "punctuation.accessor.js"
2331
+ },
2332
+ "3": {
2333
+ "name": "variable.function.tagged-template.js"
2334
+ },
2335
+ "4": {
2336
+ "name": "punctuation.definition.string.template.begin.js"
3010
2337
  }
3011
2338
  },
3012
2339
  "endCaptures": {
3013
2340
  "0": {
3014
- "name": "meta.brace.square.js"
2341
+ "name": "punctuation.definition.string.template.end.js"
2342
+ }
2343
+ }
2344
+ },
2345
+ {
2346
+ "name": "meta.styled-components.js",
2347
+ "begin": "(?\u003c!\\.)\\b(styled)\\s*(?=(\\((?\u003e(?\u003e[^()]+)|\\g\u003c-1\u003e)*\\))\\s*`)",
2348
+ "end": "(?\u003c=`)",
2349
+ "patterns": [
2350
+ {
2351
+ "name": "meta.function-call.with-arguments.js meta.group.js",
2352
+ "begin": "\\(",
2353
+ "end": "\\)",
2354
+ "patterns": [
2355
+ {
2356
+ "include": "#expression"
2357
+ }
2358
+ ],
2359
+ "beginCaptures": {
2360
+ "0": {
2361
+ "name": "punctuation.definition.group.begin.js"
2362
+ }
2363
+ },
2364
+ "endCaptures": {
2365
+ "0": {
2366
+ "name": "punctuation.definition.group.end.js"
2367
+ }
2368
+ }
2369
+ },
2370
+ {
2371
+ "contentName": "source.css.embedded.js",
2372
+ "begin": "`",
2373
+ "end": "`",
2374
+ "patterns": [
2375
+ {
2376
+ "include": "source.js.css"
2377
+ }
2378
+ ],
2379
+ "beginCaptures": {
2380
+ "0": {
2381
+ "name": "punctuation.definition.string.template.begin.js"
2382
+ }
2383
+ },
2384
+ "endCaptures": {
2385
+ "0": {
2386
+ "name": "punctuation.definition.string.template.end.js"
2387
+ }
2388
+ }
2389
+ }
2390
+ ],
2391
+ "captures": {
2392
+ "1": {
2393
+ "name": "meta.function-call.with-arguments.js entity.name.function.js"
3015
2394
  }
3016
2395
  }
3017
2396
  }
3018
2397
  ]
3019
2398
  },
3020
- "string-content": {
2399
+ "support-class": {
3021
2400
  "patterns": [
3022
2401
  {
3023
- "name": "constant.character.escape.newline.js",
3024
- "match": "\\\\\n"
3025
- },
3026
- {
3027
- "name": "constant.character.escape",
3028
- "match": "\\\\['|\"|\\\\|n|r|t|b|f|v|0]"
2402
+ "name": "support.class.builtin.js",
2403
+ "match": "(?\u003c!\\.)\\b(Array|ArrayBuffer|Boolean|DataView|Date|Float32Array|Float64Array|Function|Infinity|Int16Array|Int32Array|Int8Array|JSON|Map|Math|NaN|Number|Object|Promise|Proxy|Reflect|RegExp|Set|String|Symbol|System|TypeError|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|WeakMap|WeakSet)\\b"
3029
2404
  },
3030
2405
  {
3031
- "name": "constant.character.escape",
3032
- "match": "\\\\u((\\{[0-9a-fA-F]+\\})|[0-9a-fA-F]{4})"
2406
+ "name": "support.class.error.js",
2407
+ "match": "(?\u003c!\\.)\\b((?\u003eEval|Range|Reference|Syntax|Type|URI)?Error)\\b"
3033
2408
  },
3034
2409
  {
3035
- "name": "constant.character.escape",
3036
- "match": "\\\\x[0-9a-fA-F]{2}"
2410
+ "name": "support.class.node.js",
2411
+ "match": "\\b(?\u003eBuffer)\\b"
3037
2412
  }
3038
2413
  ]
3039
2414
  },
3040
- "support": {
2415
+ "support-other": {
3041
2416
  "patterns": [
3042
2417
  {
3043
- "name": "support.class.builtin.js",
3044
- "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"
3045
- },
3046
- {
3047
- "name": "support.function.js",
3048
- "match": "\\s*+(?\u003c!\\.)\\b(decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|escape|eval|isFinite|isNaN|parseFloat|parseInt|unescape)\\b"
3049
- },
3050
- {
3051
- "name": "support.function.mutator.js",
3052
- "match": "(?\u003c=\\.)(shift|sort|splice|unshift|pop|push|reverse)\\b"
3053
- },
3054
- {
3055
- "name": "support.class.error.js",
3056
- "match": "\\s*+(?\u003c!\\.)\\b((Eval|Range|Reference|Syntax|Type|URI)?Error)\\b"
2418
+ "name": "support.function.builtin.js",
2419
+ "match": "(?\u003c!\\.)\\b(constructor|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|escape|eval|hasOwnProperty|isFinite|isNaN|isPrototypeOf|parseFloat|parseInt|propertyIsEnumerable|toLocaleString|toString|unescape|valueOf)\\b"
3057
2420
  },
3058
2421
  {
3059
- "name": "keyword.other.js",
3060
- "match": "\\s*+(?\u003c!\\.)\\b(debugger)\\b"
2422
+ "name": "support.function.node.js",
2423
+ "match": "(?\u003c!\\.)\\b(clearImmediate|clearInterval|clearTimeout|require|setImmediate|setInterval|setTimeout)\\b"
3061
2424
  },
3062
2425
  {
3063
2426
  "name": "support.type.object.dom.js",
3064
- "match": "\\s*+(?\u003c!\\.)\\b(document|window)\\b"
2427
+ "match": "(?\u003c!\\.)\\b(?\u003edocument|window)\\b"
3065
2428
  },
3066
2429
  {
3067
- "name": "support.constant.dom.js",
3068
- "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"
2430
+ "name": "support.type.object.node.js",
2431
+ "match": "(?\u003c!\\.)\\b(?\u003eglobal|GLOBAL|root|__dirname|__filename)\\b"
3069
2432
  },
3070
2433
  {
3071
- "match": "\\s*+(?\u003c!\\.)\\b(console)(?:(\\.)(warn|info|log|error|time|timeEnd|assert))?\\b",
2434
+ "match": "(?\u003c!\\.)\\b(console)(?:(\\.)(assert|count|dir|error|group|groupCollapsed|groupEnd|info|log|profile|profileEnd|table|time|timeEnd|trace|warn))?\\b",
3072
2435
  "captures": {
3073
2436
  "1": {
3074
2437
  "name": "support.type.object.console.js"
@@ -3082,7 +2445,7 @@
3082
2445
  }
3083
2446
  },
3084
2447
  {
3085
- "match": "\\s*+(?\u003c!\\.)\\b(process)(?:(\\.)(stdout|stderr|stdin|argv|execPath|execArgv|env|exitCode|version|versions|config|pid|title|arch|platform|mainModule))?\\b",
2448
+ "match": "(?\u003c!\\.)\\b(process)(?:(\\.)(?:(arch|argv|config|env|execArgv|execPath|exitCode|mainModule|pid|platform|stderr|stdin|stdout|title|version|versions)|(abort|chdir|cwd|exit|getgid|getgroups|getuid|hrtime|initgroups|kill|memoryUsage|nextTick|setgid|setgroups|setuid|umask|uptime)))?\\b",
3086
2449
  "captures": {
3087
2450
  "1": {
3088
2451
  "name": "support.type.object.process.js"
@@ -3092,25 +2455,14 @@
3092
2455
  },
3093
2456
  "3": {
3094
2457
  "name": "support.type.object.process.js"
3095
- }
3096
- }
3097
- },
3098
- {
3099
- "match": "\\s*+(?\u003c!\\.)\\b(process)(?:(\\.)(abort|chdir|cwd|exit|getgid|setgid|getuid|setuid|setgroups|getgroups|initgroups|kill|memoryUsage|nextTick|umask|uptime|hrtime))?\\b",
3100
- "captures": {
3101
- "1": {
3102
- "name": "support.type.object.process.js"
3103
- },
3104
- "2": {
3105
- "name": "keyword.operator.accessor.js"
3106
2458
  },
3107
- "3": {
2459
+ "4": {
3108
2460
  "name": "support.function.process.js"
3109
2461
  }
3110
2462
  }
3111
2463
  },
3112
2464
  {
3113
- "match": "\\s*+\\b(((?\u003c!\\.)module\\.((?\u003c!\\,)exports|id|require|parent|filename|loaded|children)|exports))\\b",
2465
+ "match": "(?\u003c!\\.)\\b(exports|module)(?:(\\.)(children|exports|filename|id|loaded|parent))?\\b",
3114
2466
  "captures": {
3115
2467
  "1": {
3116
2468
  "name": "support.type.object.module.js"
@@ -3123,18 +2475,10 @@
3123
2475
  }
3124
2476
  }
3125
2477
  },
3126
- {
3127
- "name": "support.type.object.node.js",
3128
- "match": "\\s*+(?\u003c!\\.)\\b(global|GLOBAL|root|__dirname|__filename)\\b"
3129
- },
3130
- {
3131
- "name": "support.class.node.js",
3132
- "match": "\\s*+\\b(Buffer|EventEmitter|Server|Pipe|Socket|REPLServer|ReadStream|WriteStream|Stream|Inflate|Deflate|InflateRaw|DeflateRaw|GZip|GUnzip|Unzip|Zip)\\b"
3133
- },
3134
2478
  {
3135
2479
  "name": "meta.tag.mustache.js",
3136
- "begin": "\\s*+{{",
3137
- "end": "\\s*}}"
2480
+ "begin": "{{",
2481
+ "end": "}}"
3138
2482
  }
3139
2483
  ]
3140
2484
  }