@nuxt/devtools 0.8.0 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/chunks/module-main.mjs +33 -6025
- package/dist/chunks/vscode.mjs +4 -5
- package/dist/client/200.html +37 -2
- package/dist/client/404.html +37 -2
- package/dist/client/__blank/index.html +37 -2
- package/dist/client/_nuxt/{Badge.73590739.js → Badge.3c6fa035.js} +1 -1
- package/dist/client/_nuxt/{CodeDiff.vue.5bc59452.js → CodeDiff.vue.7a519a6d.js} +2 -2
- package/dist/client/_nuxt/{ComposableItem.vue.b891778e.js → ComposableItem.vue.ffcca591.js} +1 -1
- package/dist/client/_nuxt/{DataSchemaButton.vue.58aa4fbb.js → DataSchemaButton.vue.9ced8093.js} +1 -1
- package/dist/client/_nuxt/{DataSchemaDrawer.b54a9c8c.js → DataSchemaDrawer.6edfca87.js} +100 -100
- package/dist/client/_nuxt/{DrawerRight.vue.462f9048.js → DrawerRight.vue.8980fc15.js} +1 -1
- package/dist/client/_nuxt/{DurationDisplay.vue.281ea057.js → DurationDisplay.vue.dca5d690.js} +1 -1
- package/dist/client/_nuxt/{FilepathItem.vue.3d85c8b7.js → FilepathItem.vue.222c7a36.js} +1 -1
- package/dist/client/_nuxt/{HelpFab.vue.7e36821f.js → HelpFab.vue.6da14cd2.js} +1 -1
- package/dist/client/_nuxt/{LaunchPage.vue.fd74a96c.js → LaunchPage.vue.ded97a46.js} +1 -1
- package/dist/client/_nuxt/{NCheckbox.vue.1ddacd54.js → NCheckbox.vue.d47be8e5.js} +1 -1
- package/dist/client/_nuxt/{NCodeBlock.vue.31f18b3e.js → NCodeBlock.vue.cd0d52ca.js} +1 -1
- package/dist/client/_nuxt/{NDropdown.vue.ba86ab23.js → NDropdown.vue.3bf5669f.js} +1 -1
- package/dist/client/_nuxt/{NIconTitle.vue.9acdbad1.js → NIconTitle.vue.590f73cc.js} +1 -1
- package/dist/client/_nuxt/{NLink.vue.a8242afb.js → NLink.vue.2bd59538.js} +1 -1
- package/dist/client/_nuxt/{NMarkdown.vue.12b1eecd.js → NMarkdown.vue.0929ffc5.js} +1 -1
- package/dist/client/_nuxt/{NSectionBlock.00736ab5.js → NSectionBlock.2eb550f4.js} +1 -1
- package/dist/client/_nuxt/{NSelect.vue.d378258a.js → NSelect.vue.120a17c7.js} +1 -1
- package/dist/client/_nuxt/{NSelectTabs.vue.515b8214.js → NSelectTabs.vue.15ded4ea.js} +1 -1
- package/dist/client/_nuxt/{NSwitch.vue.8201d15e.js → NSwitch.vue.00f0a211.js} +1 -1
- package/dist/client/_nuxt/{NTip.vue.8812abb8.js → NTip.vue.b82daf5f.js} +1 -1
- package/dist/client/_nuxt/{Navbar.vue.c509e5d2.js → Navbar.vue.454bbdad.js} +1 -1
- package/dist/client/_nuxt/{StateEditor.vue.2dfb9208.js → StateEditor.vue.fb44992d.js} +1 -1
- package/dist/client/_nuxt/{__blank.6f88f9ac.js → __blank.ed5e6688.js} +1 -1
- package/dist/client/_nuxt/{analyze-build.ad9015ef.js → analyze-build.a348d54f.js} +1 -1
- package/dist/client/_nuxt/assets.9cc20f0c.js +16 -0
- package/dist/client/_nuxt/{client.237dd3ea.js → client.ecec2ff5.js} +1 -1
- package/dist/client/_nuxt/{components.5d298b86.js → components.eb546fab.js} +1 -1
- package/dist/client/_nuxt/css.5abce139.js +501 -0
- package/dist/client/_nuxt/{custom-_name_.6bfb7c0f.js → custom-_name_.405b1822.js} +1 -1
- package/dist/client/_nuxt/{default.f2c7ccc5.js → default.d9ec755b.js} +1 -1
- package/dist/client/_nuxt/diff.22e0b108.js +1 -0
- package/dist/client/_nuxt/entry.102d44fe.js +27 -0
- package/dist/client/_nuxt/entry.a2a7b315.css +1 -0
- package/dist/client/_nuxt/error-404.27f7c5ed.js +1 -0
- package/dist/client/_nuxt/error-404.82ac0ec5.css +1 -0
- package/dist/client/_nuxt/{error-500.7606b55d.js → error-500.6459d9b0.js} +1 -1
- package/dist/client/_nuxt/error-500.ff959f66.css +1 -0
- package/dist/client/_nuxt/{full.69c969de.js → full.ff28afbd.js} +1 -1
- package/dist/client/_nuxt/{hooks.2100ca5d.js → hooks.a92c198c.js} +1 -1
- package/dist/client/_nuxt/html.66e44e78.js +74 -0
- package/dist/client/_nuxt/{imports.cb581504.js → imports.af43913a.js} +1 -1
- package/dist/client/_nuxt/{index.f204f87e.js → index.475555a9.js} +1 -1
- package/dist/client/_nuxt/{index.0d56c910.js → index.9d25c8b5.js} +1 -1
- package/dist/client/_nuxt/javascript.ddb4c460.js +699 -0
- package/dist/client/_nuxt/json-editor-vue.28570b6b.js +130 -0
- package/dist/client/_nuxt/json.709f1c4d.js +25 -0
- package/dist/client/_nuxt/{middleware.688539e5.js → middleware.17de3e64.js} +1 -1
- package/dist/client/_nuxt/{modules.bd62827c.js → modules.d2b55e3a.js} +1 -1
- package/dist/client/_nuxt/{none.1af6e0ee.js → none.60868d86.js} +1 -1
- package/dist/client/_nuxt/onig.0c57a370.js +1 -0
- package/dist/client/_nuxt/{open-graph.11338a0a.js → open-graph.b86b82fa.js} +1 -1
- package/dist/client/_nuxt/{overview.94507b31.js → overview.5b1b22e6.js} +1 -1
- package/dist/client/_nuxt/{pages.e761585a.js → pages.7ce7ead1.js} +1 -1
- package/dist/client/_nuxt/{payload.6d63ca94.js → payload.95a96cbc.js} +1 -1
- package/dist/client/_nuxt/{plugins.37532eb5.js → plugins.19d4d843.js} +1 -1
- package/dist/client/_nuxt/{runtime-configs.5354fdd6.js → runtime-configs.ccb12a0d.js} +1 -1
- package/dist/client/_nuxt/server-routes.7cc44fc0.js +9 -0
- package/dist/client/_nuxt/{settings.5fe86309.js → settings.105e88e7.js} +1 -1
- package/dist/client/_nuxt/shellscript.3d8bff4d.js +4 -0
- package/dist/client/_nuxt/{state-components.7bf3566d.js → state-components.f27756f9.js} +1 -1
- package/dist/client/_nuxt/{state-modules.065d01b4.js → state-modules.4d65021c.js} +1 -1
- package/dist/client/_nuxt/{storage-options.f9b1696b.js → storage-options.f78173e7.js} +1 -1
- package/dist/client/_nuxt/{storage.228d88e2.js → storage.38ee52e0.js} +1 -1
- package/dist/client/_nuxt/{terminals.0377de90.js → terminals.6138e467.js} +1 -1
- package/dist/client/_nuxt/timeline.aeb379fb.js +57 -0
- package/dist/client/_nuxt/typescript.3ef79501.js +666 -0
- package/dist/client/_nuxt/unocss-runtime.50cd6f0c.js +2 -0
- package/dist/client/_nuxt/virtual-files.c0236487.js +1 -0
- package/dist/client/_nuxt/vitesse-dark.ab479e3d.js +1 -0
- package/dist/client/_nuxt/vitesse-light.696edcfd.js +1 -0
- package/dist/client/_nuxt/vue-html.b80b464f.js +1 -0
- package/dist/client/_nuxt/vue.5b4e1de3.js +1844 -0
- package/dist/client/_nuxt/yaml.b29e536f.js +200 -0
- package/dist/client/index.html +37 -2
- package/dist/client/modules/analyze-build/index.html +37 -2
- package/dist/client/modules/assets/index.html +37 -2
- package/dist/client/modules/components/index.html +37 -2
- package/dist/client/modules/hooks/index.html +37 -2
- package/dist/client/modules/imports/index.html +37 -2
- package/dist/client/modules/middleware/index.html +37 -2
- package/dist/client/modules/modules/index.html +37 -2
- package/dist/client/modules/open-graph/index.html +37 -2
- package/dist/client/modules/overview/index.html +37 -2
- package/dist/client/modules/pages/index.html +37 -2
- package/dist/client/modules/payload/index.html +37 -2
- package/dist/client/modules/plugins/index.html +37 -2
- package/dist/client/modules/runtime-configs/index.html +37 -2
- package/dist/client/modules/server-routes/index.html +37 -2
- package/dist/client/modules/storage/index.html +37 -2
- package/dist/client/modules/terminals/index.html +37 -2
- package/dist/client/modules/timeline/index.html +37 -2
- package/dist/client/modules/virtual-files/index.html +37 -2
- package/dist/client/settings/index.html +37 -2
- package/dist/module.json +1 -1
- package/dist/runtime/plugins/view/Main.vue +5 -0
- package/dist/runtime/plugins/view/client.mjs +10 -3
- package/package.json +35 -37
- package/dist/client/_nuxt/assets.d0e2ffb5.js +0 -16
- package/dist/client/_nuxt/entry.582098fc.css +0 -1
- package/dist/client/_nuxt/entry.d12f745d.js +0 -21
- package/dist/client/_nuxt/error-404.91003ceb.css +0 -1
- package/dist/client/_nuxt/error-404.ed94fa51.js +0 -1
- package/dist/client/_nuxt/error-500.7e02f53c.css +0 -1
- package/dist/client/_nuxt/json-editor-vue.ddceb6bb.js +0 -137
- package/dist/client/_nuxt/server-routes.6fd21992.js +0 -9
- package/dist/client/_nuxt/timeline.e89330f3.js +0 -57
- package/dist/client/_nuxt/unocss-runtime.a5ba4c7b.js +0 -2
- package/dist/client/_nuxt/virtual-files.1f7c68a1.js +0 -1
|
@@ -0,0 +1,699 @@
|
|
|
1
|
+
const e=Object.freeze({information_for_contributors:["This file has been converted from https://github.com/microsoft/TypeScript-TmLanguage/blob/master/TypeScriptReact.tmLanguage","If you want to provide a fix or improvement, please create a pull request against the original repository.","Once accepted there, we are happy to receive an update request."],version:"https://github.com/microsoft/TypeScript-TmLanguage/commit/e0aefd8205cc9d1bc7859cc5babbee0d833dca0f",name:"javascript",scopeName:"source.js",patterns:[{include:"#directives"},{include:"#statements"},{include:"#shebang"}],repository:{shebang:{name:"comment.line.shebang.js",match:"\\A(#!).*(?=$)",captures:{1:{name:"punctuation.definition.comment.js"}}},statements:{patterns:[{include:"#declaration"},{include:"#control-statement"},{include:"#after-operator-block-as-object-literal"},{include:"#decl-block"},{include:"#label"},{include:"#expression"},{include:"#punctuation-semicolon"},{include:"#string"},{include:"#comment"}]},declaration:{patterns:[{include:"#decorator"},{include:"#var-expr"},{include:"#function-declaration"},{include:"#class-declaration"},{include:"#interface-declaration"},{include:"#enum-declaration"},{include:"#namespace-declaration"},{include:"#type-alias-declaration"},{include:"#import-equals-declaration"},{include:"#import-declaration"},{include:"#export-declaration"},{name:"storage.modifier.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(declare|export)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"}]},"control-statement":{patterns:[{include:"#switch-statement"},{include:"#for-loop"},{name:"keyword.control.trycatch.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|goto)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",captures:{1:{name:"keyword.control.loop.js"},2:{name:"entity.name.label.js"}}},{name:"keyword.control.loop.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(return)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{0:{name:"keyword.control.flow.js"}},end:"(?=[;}]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",patterns:[{include:"#expression"}]},{name:"keyword.control.switch.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{include:"#if-statement"},{name:"keyword.control.conditional.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{name:"keyword.control.with.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(with)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{name:"keyword.control.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(package)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{name:"keyword.other.debugger.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(debugger)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"}]},label:{patterns:[{begin:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)(?=\\s*\\{)",beginCaptures:{1:{name:"entity.name.label.js"},2:{name:"punctuation.separator.label.js"}},end:"(?<=\\})",patterns:[{include:"#decl-block"}]},{match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)",captures:{1:{name:"entity.name.label.js"},2:{name:"punctuation.separator.label.js"}}}]},expression:{patterns:[{include:"#expressionWithoutIdentifiers"},{include:"#identifiers"},{include:"#expressionPunctuations"}]},expressionWithoutIdentifiers:{patterns:[{include:"#jsx"},{include:"#string"},{include:"#regex"},{include:"#comment"},{include:"#function-expression"},{include:"#class-expression"},{include:"#arrow-function"},{include:"#paren-expression-possibly-arrow"},{include:"#cast"},{include:"#ternary-expression"},{include:"#new-expr"},{include:"#instanceof-expr"},{include:"#object-literal"},{include:"#expression-operators"},{include:"#function-call"},{include:"#literal"},{include:"#support-objects"},{include:"#paren-expression"}]},expressionPunctuations:{patterns:[{include:"#punctuation-comma"},{include:"#punctuation-accessor"}]},decorator:{name:"meta.decorator.js",begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))\\@",beginCaptures:{0:{name:"punctuation.decorator.js"}},end:"(?=\\s)",patterns:[{include:"#expression"}]},"var-expr":{patterns:[{name:"meta.var.expr.js",begin:"(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",end:"(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=^|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))|((?<!^let|[^\\._$[:alnum:]]let|^var|[^\\._$[:alnum:]]var)(?=\\s*$)))",patterns:[{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",beginCaptures:{1:{name:"keyword.control.export.js"},2:{name:"storage.modifier.js"},3:{name:"storage.type.js"}},end:"(?=\\S)"},{include:"#destructuring-variable"},{include:"#var-single-variable"},{include:"#variable-initializer"},{include:"#comment"},{begin:"(,)\\s*(?=$|\\/\\/)",beginCaptures:{1:{name:"punctuation.separator.comma.js"}},end:"(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",patterns:[{include:"#single-line-comment-consuming-line-ending"},{include:"#comment"},{include:"#destructuring-variable"},{include:"#var-single-variable"},{include:"#punctuation-comma"}]},{include:"#punctuation-comma"}]},{name:"meta.var.expr.js",begin:"(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",beginCaptures:{1:{name:"keyword.control.export.js"},2:{name:"storage.modifier.js"},3:{name:"storage.type.js"}},end:"(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=^|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))|((?<!^const|[^\\._$[:alnum:]]const)(?=\\s*$)))",patterns:[{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",beginCaptures:{1:{name:"keyword.control.export.js"},2:{name:"storage.modifier.js"},3:{name:"storage.type.js"}},end:"(?=\\S)"},{include:"#destructuring-const"},{include:"#var-single-const"},{include:"#variable-initializer"},{include:"#comment"},{begin:"(,)\\s*(?=$|\\/\\/)",beginCaptures:{1:{name:"punctuation.separator.comma.js"}},end:"(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",patterns:[{include:"#single-line-comment-consuming-line-ending"},{include:"#comment"},{include:"#destructuring-const"},{include:"#var-single-const"},{include:"#punctuation-comma"}]},{include:"#punctuation-comma"}]}]},"var-single-variable":{patterns:[{name:"meta.var-single-variable.expr.js",begin:`(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\!)?(?=\\s*
|
|
2
|
+
# function assignment |
|
|
3
|
+
(=\\s*(
|
|
4
|
+
((async\\s+)?(
|
|
5
|
+
(function\\s*[(<*]) |
|
|
6
|
+
(function\\s+) |
|
|
7
|
+
([_$[:alpha:]][_$[:alnum:]]*\\s*=>)
|
|
8
|
+
)) |
|
|
9
|
+
((async\\s*)?(
|
|
10
|
+
((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |
|
|
11
|
+
# sure shot arrow functions even if => is on new line
|
|
12
|
+
(
|
|
13
|
+
(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
|
|
14
|
+
[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*
|
|
15
|
+
(
|
|
16
|
+
([)]\\s*:) | # ():
|
|
17
|
+
((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:
|
|
18
|
+
)
|
|
19
|
+
) |
|
|
20
|
+
(
|
|
21
|
+
[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends
|
|
22
|
+
) |
|
|
23
|
+
# arrow function possible to detect only with => on same line
|
|
24
|
+
(
|
|
25
|
+
(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters
|
|
26
|
+
\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters
|
|
27
|
+
(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type
|
|
28
|
+
\\s*=> # arrow operator
|
|
29
|
+
)
|
|
30
|
+
))
|
|
31
|
+
)) |
|
|
32
|
+
# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>
|
|
33
|
+
(:\\s*(
|
|
34
|
+
(<) |
|
|
35
|
+
([(]\\s*(
|
|
36
|
+
([)]) |
|
|
37
|
+
(\\.\\.\\.) |
|
|
38
|
+
([_$[:alnum:]]+\\s*(
|
|
39
|
+
([:,?=])|
|
|
40
|
+
([)]\\s*=>)
|
|
41
|
+
))
|
|
42
|
+
))
|
|
43
|
+
)) |
|
|
44
|
+
(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |
|
|
45
|
+
(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |
|
|
46
|
+
(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(
|
|
47
|
+
((async\\s+)?(
|
|
48
|
+
(function\\s*[(<*]) |
|
|
49
|
+
(function\\s+) |
|
|
50
|
+
([_$[:alpha:]][_$[:alnum:]]*\\s*=>)
|
|
51
|
+
)) |
|
|
52
|
+
((async\\s*)?(
|
|
53
|
+
((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |
|
|
54
|
+
# sure shot arrow functions even if => is on new line
|
|
55
|
+
(
|
|
56
|
+
(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
|
|
57
|
+
[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*
|
|
58
|
+
(
|
|
59
|
+
([)]\\s*:) | # ():
|
|
60
|
+
((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:
|
|
61
|
+
)
|
|
62
|
+
) |
|
|
63
|
+
(
|
|
64
|
+
[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends
|
|
65
|
+
) |
|
|
66
|
+
# arrow function possible to detect only with => on same line
|
|
67
|
+
(
|
|
68
|
+
(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters
|
|
69
|
+
\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters
|
|
70
|
+
(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type
|
|
71
|
+
\\s*=> # arrow operator
|
|
72
|
+
)
|
|
73
|
+
))
|
|
74
|
+
)))`,beginCaptures:{1:{name:"meta.definition.variable.js entity.name.function.js"},2:{name:"keyword.operator.definiteassignment.js"}},end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b)))",patterns:[{include:"#var-single-variable-type-annotation"}]},{name:"meta.var-single-variable.expr.js",begin:"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])(\\!)?",beginCaptures:{1:{name:"meta.definition.variable.js variable.other.constant.js"},2:{name:"keyword.operator.definiteassignment.js"}},end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b)))",patterns:[{include:"#var-single-variable-type-annotation"}]},{name:"meta.var-single-variable.expr.js",begin:"([_$[:alpha:]][_$[:alnum:]]*)(\\!)?",beginCaptures:{1:{name:"meta.definition.variable.js variable.other.readwrite.js"},2:{name:"keyword.operator.definiteassignment.js"}},end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b)))",patterns:[{include:"#var-single-variable-type-annotation"}]}]},"var-single-const":{patterns:[{name:"meta.var-single-variable.expr.js",begin:`(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*
|
|
75
|
+
# function assignment |
|
|
76
|
+
(=\\s*(
|
|
77
|
+
((async\\s+)?(
|
|
78
|
+
(function\\s*[(<*]) |
|
|
79
|
+
(function\\s+) |
|
|
80
|
+
([_$[:alpha:]][_$[:alnum:]]*\\s*=>)
|
|
81
|
+
)) |
|
|
82
|
+
((async\\s*)?(
|
|
83
|
+
((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |
|
|
84
|
+
# sure shot arrow functions even if => is on new line
|
|
85
|
+
(
|
|
86
|
+
(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
|
|
87
|
+
[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*
|
|
88
|
+
(
|
|
89
|
+
([)]\\s*:) | # ():
|
|
90
|
+
((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:
|
|
91
|
+
)
|
|
92
|
+
) |
|
|
93
|
+
(
|
|
94
|
+
[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends
|
|
95
|
+
) |
|
|
96
|
+
# arrow function possible to detect only with => on same line
|
|
97
|
+
(
|
|
98
|
+
(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters
|
|
99
|
+
\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters
|
|
100
|
+
(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type
|
|
101
|
+
\\s*=> # arrow operator
|
|
102
|
+
)
|
|
103
|
+
))
|
|
104
|
+
)) |
|
|
105
|
+
# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>
|
|
106
|
+
(:\\s*(
|
|
107
|
+
(<) |
|
|
108
|
+
([(]\\s*(
|
|
109
|
+
([)]) |
|
|
110
|
+
(\\.\\.\\.) |
|
|
111
|
+
([_$[:alnum:]]+\\s*(
|
|
112
|
+
([:,?=])|
|
|
113
|
+
([)]\\s*=>)
|
|
114
|
+
))
|
|
115
|
+
))
|
|
116
|
+
)) |
|
|
117
|
+
(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |
|
|
118
|
+
(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |
|
|
119
|
+
(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(
|
|
120
|
+
((async\\s+)?(
|
|
121
|
+
(function\\s*[(<*]) |
|
|
122
|
+
(function\\s+) |
|
|
123
|
+
([_$[:alpha:]][_$[:alnum:]]*\\s*=>)
|
|
124
|
+
)) |
|
|
125
|
+
((async\\s*)?(
|
|
126
|
+
((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |
|
|
127
|
+
# sure shot arrow functions even if => is on new line
|
|
128
|
+
(
|
|
129
|
+
(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
|
|
130
|
+
[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*
|
|
131
|
+
(
|
|
132
|
+
([)]\\s*:) | # ():
|
|
133
|
+
((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:
|
|
134
|
+
)
|
|
135
|
+
) |
|
|
136
|
+
(
|
|
137
|
+
[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends
|
|
138
|
+
) |
|
|
139
|
+
# arrow function possible to detect only with => on same line
|
|
140
|
+
(
|
|
141
|
+
(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters
|
|
142
|
+
\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters
|
|
143
|
+
(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type
|
|
144
|
+
\\s*=> # arrow operator
|
|
145
|
+
)
|
|
146
|
+
))
|
|
147
|
+
)))`,beginCaptures:{1:{name:"meta.definition.variable.js variable.other.constant.js entity.name.function.js"}},end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b)))",patterns:[{include:"#var-single-variable-type-annotation"}]},{name:"meta.var-single-variable.expr.js",begin:"([_$[:alpha:]][_$[:alnum:]]*)",beginCaptures:{1:{name:"meta.definition.variable.js variable.other.constant.js"}},end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b)))",patterns:[{include:"#var-single-variable-type-annotation"}]}]},"var-single-variable-type-annotation":{patterns:[{include:"#type-annotation"},{include:"#string"},{include:"#comment"}]},"destructuring-variable":{patterns:[{name:"meta.object-binding-pattern-variable.js",begin:"(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",patterns:[{include:"#object-binding-pattern"},{include:"#type-annotation"},{include:"#comment"}]},{name:"meta.array-binding-pattern-variable.js",begin:"(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",patterns:[{include:"#array-binding-pattern"},{include:"#type-annotation"},{include:"#comment"}]}]},"destructuring-const":{patterns:[{name:"meta.object-binding-pattern-variable.js",begin:"(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",patterns:[{include:"#object-binding-pattern-const"},{include:"#type-annotation"},{include:"#comment"}]},{name:"meta.array-binding-pattern-variable.js",begin:"(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",patterns:[{include:"#array-binding-pattern-const"},{include:"#type-annotation"},{include:"#comment"}]}]},"object-binding-element":{patterns:[{include:"#comment"},{begin:`(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:
|
|
148
|
+
(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3
|
|
149
|
+
(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3
|
|
150
|
+
(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3
|
|
151
|
+
(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3
|
|
152
|
+
(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1
|
|
153
|
+
(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.
|
|
154
|
+
(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1
|
|
155
|
+
(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1
|
|
156
|
+
)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))`,end:"(?=,|\\})",patterns:[{include:"#object-binding-element-propertyName"},{include:"#binding-element"}]},{include:"#object-binding-pattern"},{include:"#destructuring-variable-rest"},{include:"#variable-initializer"},{include:"#punctuation-comma"}]},"object-binding-element-const":{patterns:[{include:"#comment"},{begin:`(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:
|
|
157
|
+
(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3
|
|
158
|
+
(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3
|
|
159
|
+
(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3
|
|
160
|
+
(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3
|
|
161
|
+
(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1
|
|
162
|
+
(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.
|
|
163
|
+
(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1
|
|
164
|
+
(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1
|
|
165
|
+
)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))`,end:"(?=,|\\})",patterns:[{include:"#object-binding-element-propertyName"},{include:"#binding-element-const"}]},{include:"#object-binding-pattern-const"},{include:"#destructuring-variable-rest-const"},{include:"#variable-initializer"},{include:"#punctuation-comma"}]},"object-binding-element-propertyName":{begin:`(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:
|
|
166
|
+
(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3
|
|
167
|
+
(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3
|
|
168
|
+
(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3
|
|
169
|
+
(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3
|
|
170
|
+
(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1
|
|
171
|
+
(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.
|
|
172
|
+
(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1
|
|
173
|
+
(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1
|
|
174
|
+
)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))`,end:"(:)",endCaptures:{0:{name:"punctuation.destructuring.js"}},patterns:[{include:"#string"},{include:"#array-literal"},{include:"#numeric-literal"},{name:"variable.object.property.js",match:"([_$[:alpha:]][_$[:alnum:]]*)"}]},"binding-element":{patterns:[{include:"#comment"},{include:"#string"},{include:"#numeric-literal"},{include:"#regex"},{include:"#object-binding-pattern"},{include:"#array-binding-pattern"},{include:"#destructuring-variable-rest"},{include:"#variable-initializer"}]},"binding-element-const":{patterns:[{include:"#comment"},{include:"#string"},{include:"#numeric-literal"},{include:"#regex"},{include:"#object-binding-pattern-const"},{include:"#array-binding-pattern-const"},{include:"#destructuring-variable-rest-const"},{include:"#variable-initializer"}]},"destructuring-variable-rest":{match:"(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",captures:{1:{name:"keyword.operator.rest.js"},2:{name:"meta.definition.variable.js variable.other.readwrite.js"}}},"destructuring-variable-rest-const":{match:"(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",captures:{1:{name:"keyword.operator.rest.js"},2:{name:"meta.definition.variable.js variable.other.constant.js"}}},"object-binding-pattern":{begin:"(?:(\\.\\.\\.)\\s*)?(\\{)",beginCaptures:{1:{name:"keyword.operator.rest.js"},2:{name:"punctuation.definition.binding-pattern.object.js"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.binding-pattern.object.js"}},patterns:[{include:"#object-binding-element"}]},"object-binding-pattern-const":{begin:"(?:(\\.\\.\\.)\\s*)?(\\{)",beginCaptures:{1:{name:"keyword.operator.rest.js"},2:{name:"punctuation.definition.binding-pattern.object.js"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.binding-pattern.object.js"}},patterns:[{include:"#object-binding-element-const"}]},"array-binding-pattern":{begin:"(?:(\\.\\.\\.)\\s*)?(\\[)",beginCaptures:{1:{name:"keyword.operator.rest.js"},2:{name:"punctuation.definition.binding-pattern.array.js"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.binding-pattern.array.js"}},patterns:[{include:"#binding-element"},{include:"#punctuation-comma"}]},"array-binding-pattern-const":{begin:"(?:(\\.\\.\\.)\\s*)?(\\[)",beginCaptures:{1:{name:"keyword.operator.rest.js"},2:{name:"punctuation.definition.binding-pattern.array.js"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.binding-pattern.array.js"}},patterns:[{include:"#binding-element-const"},{include:"#punctuation-comma"}]},"parameter-name":{patterns:[{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)",captures:{1:{name:"storage.modifier.js"}}},{match:`(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*
|
|
175
|
+
# function assignment |
|
|
176
|
+
(=\\s*(
|
|
177
|
+
((async\\s+)?(
|
|
178
|
+
(function\\s*[(<*]) |
|
|
179
|
+
(function\\s+) |
|
|
180
|
+
([_$[:alpha:]][_$[:alnum:]]*\\s*=>)
|
|
181
|
+
)) |
|
|
182
|
+
((async\\s*)?(
|
|
183
|
+
((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |
|
|
184
|
+
# sure shot arrow functions even if => is on new line
|
|
185
|
+
(
|
|
186
|
+
(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
|
|
187
|
+
[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*
|
|
188
|
+
(
|
|
189
|
+
([)]\\s*:) | # ():
|
|
190
|
+
((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:
|
|
191
|
+
)
|
|
192
|
+
) |
|
|
193
|
+
(
|
|
194
|
+
[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends
|
|
195
|
+
) |
|
|
196
|
+
# arrow function possible to detect only with => on same line
|
|
197
|
+
(
|
|
198
|
+
(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters
|
|
199
|
+
\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters
|
|
200
|
+
(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type
|
|
201
|
+
\\s*=> # arrow operator
|
|
202
|
+
)
|
|
203
|
+
))
|
|
204
|
+
)) |
|
|
205
|
+
# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>
|
|
206
|
+
(:\\s*(
|
|
207
|
+
(<) |
|
|
208
|
+
([(]\\s*(
|
|
209
|
+
([)]) |
|
|
210
|
+
(\\.\\.\\.) |
|
|
211
|
+
([_$[:alnum:]]+\\s*(
|
|
212
|
+
([:,?=])|
|
|
213
|
+
([)]\\s*=>)
|
|
214
|
+
))
|
|
215
|
+
))
|
|
216
|
+
)) |
|
|
217
|
+
(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |
|
|
218
|
+
(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |
|
|
219
|
+
(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(
|
|
220
|
+
((async\\s+)?(
|
|
221
|
+
(function\\s*[(<*]) |
|
|
222
|
+
(function\\s+) |
|
|
223
|
+
([_$[:alpha:]][_$[:alnum:]]*\\s*=>)
|
|
224
|
+
)) |
|
|
225
|
+
((async\\s*)?(
|
|
226
|
+
((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |
|
|
227
|
+
# sure shot arrow functions even if => is on new line
|
|
228
|
+
(
|
|
229
|
+
(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
|
|
230
|
+
[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*
|
|
231
|
+
(
|
|
232
|
+
([)]\\s*:) | # ():
|
|
233
|
+
((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:
|
|
234
|
+
)
|
|
235
|
+
) |
|
|
236
|
+
(
|
|
237
|
+
[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends
|
|
238
|
+
) |
|
|
239
|
+
# arrow function possible to detect only with => on same line
|
|
240
|
+
(
|
|
241
|
+
(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters
|
|
242
|
+
\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters
|
|
243
|
+
(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type
|
|
244
|
+
\\s*=> # arrow operator
|
|
245
|
+
)
|
|
246
|
+
))
|
|
247
|
+
)))`,captures:{1:{name:"storage.modifier.js"},2:{name:"keyword.operator.rest.js"},3:{name:"entity.name.function.js variable.language.this.js"},4:{name:"entity.name.function.js"},5:{name:"keyword.operator.optional.js"}}},{match:"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)",captures:{1:{name:"storage.modifier.js"},2:{name:"keyword.operator.rest.js"},3:{name:"variable.parameter.js variable.language.this.js"},4:{name:"variable.parameter.js"},5:{name:"keyword.operator.optional.js"}}}]},"destructuring-parameter":{patterns:[{name:"meta.parameter.object-binding-pattern.js",begin:"(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\{)",beginCaptures:{1:{name:"keyword.operator.rest.js"},2:{name:"punctuation.definition.binding-pattern.object.js"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.binding-pattern.object.js"}},patterns:[{include:"#parameter-object-binding-element"}]},{name:"meta.paramter.array-binding-pattern.js",begin:"(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\[)",beginCaptures:{1:{name:"keyword.operator.rest.js"},2:{name:"punctuation.definition.binding-pattern.array.js"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.binding-pattern.array.js"}},patterns:[{include:"#parameter-binding-element"},{include:"#punctuation-comma"}]}]},"parameter-object-binding-element":{patterns:[{include:"#comment"},{begin:`(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:
|
|
248
|
+
(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3
|
|
249
|
+
(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3
|
|
250
|
+
(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3
|
|
251
|
+
(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3
|
|
252
|
+
(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1
|
|
253
|
+
(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.
|
|
254
|
+
(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1
|
|
255
|
+
(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1
|
|
256
|
+
)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))`,end:"(?=,|\\})",patterns:[{include:"#object-binding-element-propertyName"},{include:"#parameter-binding-element"},{include:"#paren-expression"}]},{include:"#parameter-object-binding-pattern"},{include:"#destructuring-parameter-rest"},{include:"#variable-initializer"},{include:"#punctuation-comma"}]},"parameter-binding-element":{patterns:[{include:"#comment"},{include:"#string"},{include:"#numeric-literal"},{include:"#regex"},{include:"#parameter-object-binding-pattern"},{include:"#parameter-array-binding-pattern"},{include:"#destructuring-parameter-rest"},{include:"#variable-initializer"}]},"destructuring-parameter-rest":{match:"(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",captures:{1:{name:"keyword.operator.rest.js"},2:{name:"variable.parameter.js"}}},"parameter-object-binding-pattern":{begin:"(?:(\\.\\.\\.)\\s*)?(\\{)",beginCaptures:{1:{name:"keyword.operator.rest.js"},2:{name:"punctuation.definition.binding-pattern.object.js"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.binding-pattern.object.js"}},patterns:[{include:"#parameter-object-binding-element"}]},"parameter-array-binding-pattern":{begin:"(?:(\\.\\.\\.)\\s*)?(\\[)",beginCaptures:{1:{name:"keyword.operator.rest.js"},2:{name:"punctuation.definition.binding-pattern.array.js"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.binding-pattern.array.js"}},patterns:[{include:"#parameter-binding-element"},{include:"#punctuation-comma"}]},"field-declaration":{name:"meta.field.declaration.js",begin:`(?x)(?<!\\()(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s+)?(?=\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:
|
|
257
|
+
(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3
|
|
258
|
+
(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3
|
|
259
|
+
(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3
|
|
260
|
+
(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3
|
|
261
|
+
(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1
|
|
262
|
+
(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.
|
|
263
|
+
(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1
|
|
264
|
+
(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1
|
|
265
|
+
)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|\\}|$))`,beginCaptures:{1:{name:"storage.modifier.js"}},end:`(?x)(?=\\}|;|,|$|(^(?!\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:
|
|
266
|
+
(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3
|
|
267
|
+
(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3
|
|
268
|
+
(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3
|
|
269
|
+
(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3
|
|
270
|
+
(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1
|
|
271
|
+
(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.
|
|
272
|
+
(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1
|
|
273
|
+
(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1
|
|
274
|
+
)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|$))))|(?<=\\})`,patterns:[{include:"#variable-initializer"},{include:"#type-annotation"},{include:"#string"},{include:"#array-literal"},{include:"#numeric-literal"},{include:"#comment"},{match:`(?x)(\\#?[_$[:alpha:]][_$[:alnum:]]*)(?:(\\?)|(\\!))?(?=\\s*\\s*
|
|
275
|
+
# function assignment |
|
|
276
|
+
(=\\s*(
|
|
277
|
+
((async\\s+)?(
|
|
278
|
+
(function\\s*[(<*]) |
|
|
279
|
+
(function\\s+) |
|
|
280
|
+
([_$[:alpha:]][_$[:alnum:]]*\\s*=>)
|
|
281
|
+
)) |
|
|
282
|
+
((async\\s*)?(
|
|
283
|
+
((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |
|
|
284
|
+
# sure shot arrow functions even if => is on new line
|
|
285
|
+
(
|
|
286
|
+
(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
|
|
287
|
+
[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*
|
|
288
|
+
(
|
|
289
|
+
([)]\\s*:) | # ():
|
|
290
|
+
((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:
|
|
291
|
+
)
|
|
292
|
+
) |
|
|
293
|
+
(
|
|
294
|
+
[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends
|
|
295
|
+
) |
|
|
296
|
+
# arrow function possible to detect only with => on same line
|
|
297
|
+
(
|
|
298
|
+
(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters
|
|
299
|
+
\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters
|
|
300
|
+
(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type
|
|
301
|
+
\\s*=> # arrow operator
|
|
302
|
+
)
|
|
303
|
+
))
|
|
304
|
+
)) |
|
|
305
|
+
# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>
|
|
306
|
+
(:\\s*(
|
|
307
|
+
(<) |
|
|
308
|
+
([(]\\s*(
|
|
309
|
+
([)]) |
|
|
310
|
+
(\\.\\.\\.) |
|
|
311
|
+
([_$[:alnum:]]+\\s*(
|
|
312
|
+
([:,?=])|
|
|
313
|
+
([)]\\s*=>)
|
|
314
|
+
))
|
|
315
|
+
))
|
|
316
|
+
)) |
|
|
317
|
+
(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |
|
|
318
|
+
(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |
|
|
319
|
+
(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(
|
|
320
|
+
((async\\s+)?(
|
|
321
|
+
(function\\s*[(<*]) |
|
|
322
|
+
(function\\s+) |
|
|
323
|
+
([_$[:alpha:]][_$[:alnum:]]*\\s*=>)
|
|
324
|
+
)) |
|
|
325
|
+
((async\\s*)?(
|
|
326
|
+
((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |
|
|
327
|
+
# sure shot arrow functions even if => is on new line
|
|
328
|
+
(
|
|
329
|
+
(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
|
|
330
|
+
[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*
|
|
331
|
+
(
|
|
332
|
+
([)]\\s*:) | # ():
|
|
333
|
+
((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:
|
|
334
|
+
)
|
|
335
|
+
) |
|
|
336
|
+
(
|
|
337
|
+
[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends
|
|
338
|
+
) |
|
|
339
|
+
# arrow function possible to detect only with => on same line
|
|
340
|
+
(
|
|
341
|
+
(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters
|
|
342
|
+
\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters
|
|
343
|
+
(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type
|
|
344
|
+
\\s*=> # arrow operator
|
|
345
|
+
)
|
|
346
|
+
))
|
|
347
|
+
)))`,captures:{1:{name:"meta.definition.property.js entity.name.function.js"},2:{name:"keyword.operator.optional.js"},3:{name:"keyword.operator.definiteassignment.js"}}},{name:"meta.definition.property.js variable.object.property.js",match:"\\#?[_$[:alpha:]][_$[:alnum:]]*"},{name:"keyword.operator.optional.js",match:"\\?"},{name:"keyword.operator.definiteassignment.js",match:"\\!"}]},"variable-initializer":{patterns:[{begin:"(?<!=|!)(=)(?!=)(?=\\s*\\S)(?!\\s*.*=>\\s*$)",beginCaptures:{1:{name:"keyword.operator.assignment.js"}},end:"(?=$|^|[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",patterns:[{include:"#expression"}]},{begin:"(?<!=|!)(=)(?!=)",beginCaptures:{1:{name:"keyword.operator.assignment.js"}},end:"(?=[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))|(?=^\\s*$)|(?<![\\|\\&\\+\\-\\*\\/])(?<=\\S)(?<!=)(?=\\s*$)",patterns:[{include:"#expression"}]}]},"function-declaration":{name:"meta.function.js",begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",beginCaptures:{1:{name:"keyword.control.export.js"},2:{name:"storage.modifier.js"},3:{name:"storage.modifier.async.js"},4:{name:"storage.type.function.js"},5:{name:"keyword.generator.asterisk.js"},6:{name:"meta.definition.function.js entity.name.function.js"}},end:"(?=;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))|(?<=\\})",patterns:[{include:"#function-name"},{include:"#function-body"}]},"function-expression":{name:"meta.function.expression.js",begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",beginCaptures:{1:{name:"storage.modifier.async.js"},2:{name:"storage.type.function.js"},3:{name:"keyword.generator.asterisk.js"},4:{name:"meta.definition.function.js entity.name.function.js"}},end:"(?=;)|(?<=\\})",patterns:[{include:"#function-name"},{include:"#single-line-comment-consuming-line-ending"},{include:"#function-body"}]},"function-name":{name:"meta.definition.function.js entity.name.function.js",match:"[_$[:alpha:]][_$[:alnum:]]*"},"function-body":{patterns:[{include:"#comment"},{include:"#type-parameters"},{include:"#function-parameters"},{include:"#return-type"},{include:"#type-function-return-type"},{include:"#decl-block"},{name:"keyword.generator.asterisk.js",match:"\\*"}]},"method-declaration":{patterns:[{name:"meta.method.declaration.js",begin:"(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?\\s*\\b(constructor)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{1:{name:"storage.modifier.js"},2:{name:"storage.modifier.js"},3:{name:"storage.modifier.js"},4:{name:"storage.modifier.async.js"},5:{name:"storage.type.js"}},end:"(?=\\}|;|,|$)|(?<=\\})",patterns:[{include:"#method-declaration-name"},{include:"#function-body"}]},{name:"meta.method.declaration.js",begin:"(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:(?:\\s*\\b(new)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|(?:(\\*)\\s*)?)(?=\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",beginCaptures:{1:{name:"storage.modifier.js"},2:{name:"storage.modifier.js"},3:{name:"storage.modifier.js"},4:{name:"storage.modifier.async.js"},5:{name:"keyword.operator.new.js"},6:{name:"keyword.generator.asterisk.js"}},end:"(?=\\}|;|,|$)|(?<=\\})",patterns:[{include:"#method-declaration-name"},{include:"#function-body"}]},{name:"meta.method.declaration.js",begin:`(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:
|
|
348
|
+
(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3
|
|
349
|
+
(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3
|
|
350
|
+
(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3
|
|
351
|
+
(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3
|
|
352
|
+
(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1
|
|
353
|
+
(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.
|
|
354
|
+
(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1
|
|
355
|
+
(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1
|
|
356
|
+
)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])`,beginCaptures:{1:{name:"storage.modifier.js"},2:{name:"storage.modifier.js"},3:{name:"storage.modifier.js"},4:{name:"storage.modifier.async.js"},5:{name:"storage.type.property.js"},6:{name:"keyword.generator.asterisk.js"}},end:"(?=\\}|;|,|$)|(?<=\\})",patterns:[{include:"#method-declaration-name"},{include:"#function-body"}]}]},"object-literal-method-declaration":{name:"meta.method.declaration.js",begin:`(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:
|
|
357
|
+
(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3
|
|
358
|
+
(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3
|
|
359
|
+
(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3
|
|
360
|
+
(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3
|
|
361
|
+
(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1
|
|
362
|
+
(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.
|
|
363
|
+
(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1
|
|
364
|
+
(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1
|
|
365
|
+
)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])`,beginCaptures:{1:{name:"storage.modifier.async.js"},2:{name:"storage.type.property.js"},3:{name:"keyword.generator.asterisk.js"}},end:"(?=\\}|;|,)|(?<=\\})",patterns:[{include:"#method-declaration-name"},{include:"#function-body"},{begin:`(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:
|
|
366
|
+
(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3
|
|
367
|
+
(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3
|
|
368
|
+
(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3
|
|
369
|
+
(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3
|
|
370
|
+
(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1
|
|
371
|
+
(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.
|
|
372
|
+
(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1
|
|
373
|
+
(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1
|
|
374
|
+
)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])`,beginCaptures:{1:{name:"storage.modifier.async.js"},2:{name:"storage.type.property.js"},3:{name:"keyword.generator.asterisk.js"}},end:"(?=\\(|\\<)",patterns:[{include:"#method-declaration-name"}]}]},"method-declaration-name":{begin:`(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:
|
|
375
|
+
(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3
|
|
376
|
+
(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3
|
|
377
|
+
(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3
|
|
378
|
+
(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3
|
|
379
|
+
(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1
|
|
380
|
+
(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.
|
|
381
|
+
(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1
|
|
382
|
+
(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1
|
|
383
|
+
)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??)\\s*[\\(\\<])`,end:"(?=\\(|\\<)",patterns:[{include:"#string"},{include:"#array-literal"},{include:"#numeric-literal"},{name:"meta.definition.method.js entity.name.function.js",match:"[_$[:alpha:]][_$[:alnum:]]*"},{name:"keyword.operator.optional.js",match:"\\?"}]},"arrow-function":{patterns:[{name:"meta.arrow.js",match:"(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(?==>)",captures:{1:{name:"storage.modifier.async.js"},2:{name:"variable.parameter.js"}}},{name:"meta.arrow.js",begin:`(?x) (?:
|
|
384
|
+
(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)
|
|
385
|
+
)? ((?<![})!\\]])\\s*
|
|
386
|
+
(?=
|
|
387
|
+
# sure shot arrow functions even if => is on new line
|
|
388
|
+
(
|
|
389
|
+
(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
|
|
390
|
+
[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*
|
|
391
|
+
(
|
|
392
|
+
([)]\\s*:) | # ():
|
|
393
|
+
((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:
|
|
394
|
+
)
|
|
395
|
+
) |
|
|
396
|
+
(
|
|
397
|
+
[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends
|
|
398
|
+
) |
|
|
399
|
+
# arrow function possible to detect only with => on same line
|
|
400
|
+
(
|
|
401
|
+
(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters
|
|
402
|
+
\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters
|
|
403
|
+
(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type
|
|
404
|
+
\\s*=> # arrow operator
|
|
405
|
+
)
|
|
406
|
+
)
|
|
407
|
+
)`,beginCaptures:{1:{name:"storage.modifier.async.js"}},end:"(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",patterns:[{include:"#comment"},{include:"#type-parameters"},{include:"#function-parameters"},{include:"#arrow-return-type"},{include:"#possibly-arrow-return-type"}]},{name:"meta.arrow.js",begin:"=>",beginCaptures:{0:{name:"storage.type.function.arrow.js"}},end:"((?<=\\}|\\S)(?<!=>)|((?!\\{)(?=\\S)))(?!\\/[\\/\\*])",patterns:[{include:"#single-line-comment-consuming-line-ending"},{include:"#decl-block"},{include:"#expression"}]}]},"indexer-declaration":{name:"meta.indexer.declaration.js",begin:"(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=:)",beginCaptures:{1:{name:"storage.modifier.js"},2:{name:"meta.brace.square.js"},3:{name:"variable.parameter.js"}},end:"(\\])\\s*(\\?\\s*)?|$",endCaptures:{1:{name:"meta.brace.square.js"},2:{name:"keyword.operator.optional.js"}},patterns:[{include:"#type-annotation"}]},"indexer-mapped-type-declaration":{name:"meta.indexer.mappedtype.declaration.js",begin:"(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([+-])?(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s+(in)\\s+",beginCaptures:{1:{name:"keyword.operator.type.modifier.js"},2:{name:"storage.modifier.js"},3:{name:"meta.brace.square.js"},4:{name:"entity.name.type.js"},5:{name:"keyword.operator.expression.in.js"}},end:"(\\])([+-])?\\s*(\\?\\s*)?|$",endCaptures:{1:{name:"meta.brace.square.js"},2:{name:"keyword.operator.type.modifier.js"},3:{name:"keyword.operator.optional.js"}},patterns:[{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+",captures:{1:{name:"keyword.control.as.js"}}},{include:"#type"}]},"function-parameters":{name:"meta.parameters.js",begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.parameters.begin.js"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.js"}},patterns:[{include:"#function-parameters-body"}]},"function-parameters-body":{patterns:[{include:"#comment"},{include:"#string"},{include:"#decorator"},{include:"#destructuring-parameter"},{include:"#parameter-name"},{include:"#parameter-type-annotation"},{include:"#variable-initializer"},{name:"punctuation.separator.parameter.js",match:","}]},"class-declaration":{name:"meta.class.js",begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(class)\\b(?=\\s+|/[/*])",beginCaptures:{1:{name:"keyword.control.export.js"},2:{name:"storage.modifier.js"},3:{name:"storage.modifier.js"},4:{name:"storage.type.class.js"}},end:"(?<=\\})",patterns:[{include:"#class-declaration-or-expression-patterns"}]},"class-expression":{name:"meta.class.js",begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(class)\\b(?=\\s+|[<{]|\\/[\\/*])",beginCaptures:{1:{name:"storage.modifier.js"},2:{name:"storage.type.class.js"}},end:"(?<=\\})",patterns:[{include:"#class-declaration-or-expression-patterns"}]},"class-declaration-or-expression-patterns":{patterns:[{include:"#comment"},{include:"#class-or-interface-heritage"},{match:"[_$[:alpha:]][_$[:alnum:]]*",captures:{0:{name:"entity.name.type.class.js"}}},{include:"#type-parameters"},{include:"#class-or-interface-body"}]},"interface-declaration":{name:"meta.interface.js",begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(interface)\\b(?=\\s+|/[/*])",beginCaptures:{1:{name:"keyword.control.export.js"},2:{name:"storage.modifier.js"},3:{name:"storage.modifier.js"},4:{name:"storage.type.interface.js"}},end:"(?<=\\})",patterns:[{include:"#comment"},{include:"#class-or-interface-heritage"},{match:"[_$[:alpha:]][_$[:alnum:]]*",captures:{0:{name:"entity.name.type.interface.js"}}},{include:"#type-parameters"},{include:"#class-or-interface-body"}]},"class-or-interface-heritage":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(extends|implements)\\b)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{1:{name:"storage.modifier.js"}},end:"(?=\\{)",patterns:[{include:"#comment"},{include:"#class-or-interface-heritage"},{include:"#type-parameters"},{include:"#expressionWithoutIdentifiers"},{match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s*\\??\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\s*)",captures:{1:{name:"entity.name.type.module.js"},2:{name:"punctuation.accessor.js"},3:{name:"punctuation.accessor.optional.js"}}},{match:"([_$[:alpha:]][_$[:alnum:]]*)",captures:{1:{name:"entity.other.inherited-class.js"}}},{include:"#expressionPunctuations"}]},"class-or-interface-body":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.js"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.js"}},patterns:[{include:"#comment"},{include:"#decorator"},{begin:"(?<=:)\\s*",end:"(?=\\s|[;),}\\]:\\-\\+]|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",patterns:[{include:"#expression"}]},{include:"#method-declaration"},{include:"#indexer-declaration"},{include:"#field-declaration"},{include:"#string"},{include:"#type-annotation"},{include:"#variable-initializer"},{include:"#access-modifier"},{include:"#property-accessor"},{include:"#async-modifier"},{include:"#after-operator-block-as-object-literal"},{include:"#decl-block"},{include:"#expression"},{include:"#punctuation-comma"},{include:"#punctuation-semicolon"}]},"access-modifier":{name:"storage.modifier.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},"property-accessor":{name:"storage.type.property.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(accessor|get|set)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},"async-modifier":{name:"storage.modifier.async.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(async)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},"enum-declaration":{name:"meta.enum.declaration.js",begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:\\b(const)\\s+)?\\b(enum)\\s+([_$[:alpha:]][_$[:alnum:]]*)",beginCaptures:{1:{name:"keyword.control.export.js"},2:{name:"storage.modifier.js"},3:{name:"storage.modifier.js"},4:{name:"storage.type.enum.js"},5:{name:"entity.name.type.enum.js"}},end:"(?<=\\})",patterns:[{include:"#comment"},{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.js"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.js"}},patterns:[{include:"#comment"},{begin:"([_$[:alpha:]][_$[:alnum:]]*)",beginCaptures:{0:{name:"variable.other.enummember.js"}},end:"(?=,|\\}|$)",patterns:[{include:"#comment"},{include:"#variable-initializer"}]},{begin:"(?=((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\])))",end:"(?=,|\\}|$)",patterns:[{include:"#string"},{include:"#array-literal"},{include:"#comment"},{include:"#variable-initializer"}]},{include:"#punctuation-comma"}]}]},"namespace-declaration":{name:"meta.namespace.declaration.js",begin:"(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(namespace|module)\\s+(?=[_$[:alpha:]\"'`]))",beginCaptures:{1:{name:"keyword.control.export.js"},2:{name:"storage.modifier.js"},3:{name:"storage.type.namespace.js"}},end:"(?<=\\})|(?=;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",patterns:[{include:"#comment"},{include:"#string"},{name:"entity.name.type.module.js",match:"([_$[:alpha:]][_$[:alnum:]]*)"},{include:"#punctuation-accessor"},{include:"#decl-block"}]},"type-alias-declaration":{name:"meta.type.declaration.js",begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(type)\\b\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*",beginCaptures:{1:{name:"keyword.control.export.js"},2:{name:"storage.modifier.js"},3:{name:"storage.type.type.js"},4:{name:"entity.name.type.alias.js"}},end:"(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",patterns:[{include:"#comment"},{include:"#type-parameters"},{begin:"(=)\\s*(intrinsic)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{1:{name:"keyword.operator.assignment.js"},2:{name:"keyword.control.intrinsic.js"}},end:"(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",patterns:[{include:"#type"}]},{begin:"(=)\\s*",beginCaptures:{1:{name:"keyword.operator.assignment.js"}},end:"(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",patterns:[{include:"#type"}]}]},"import-equals-declaration":{patterns:[{name:"meta.import-equals.external.js",begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(require)\\s*(\\()",beginCaptures:{1:{name:"keyword.control.export.js"},2:{name:"storage.modifier.js"},3:{name:"keyword.control.import.js"},4:{name:"keyword.control.type.js"},5:{name:"variable.other.readwrite.alias.js"},6:{name:"keyword.operator.assignment.js"},7:{name:"keyword.control.require.js"},8:{name:"meta.brace.round.js"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.js"}},patterns:[{include:"#comment"},{include:"#string"}]},{name:"meta.import-equals.internal.js",begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(?!require\\b)",beginCaptures:{1:{name:"keyword.control.export.js"},2:{name:"storage.modifier.js"},3:{name:"keyword.control.import.js"},4:{name:"keyword.control.type.js"},5:{name:"variable.other.readwrite.alias.js"},6:{name:"keyword.operator.assignment.js"}},end:"(?=;|$|^)",patterns:[{include:"#single-line-comment-consuming-line-ending"},{include:"#comment"},{match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",captures:{1:{name:"entity.name.type.module.js"},2:{name:"punctuation.accessor.js"},3:{name:"punctuation.accessor.optional.js"}}},{name:"variable.other.readwrite.js",match:"([_$[:alpha:]][_$[:alnum:]]*)"}]}]},"import-declaration":{name:"meta.import.js",begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type)(?!\\s+from))?(?!\\s*[:\\(])(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{1:{name:"keyword.control.export.js"},2:{name:"storage.modifier.js"},3:{name:"keyword.control.import.js"},4:{name:"keyword.control.type.js"}},end:"(?<!^import|[^\\._$[:alnum:]]import)(?=;|$|^)",patterns:[{include:"#single-line-comment-consuming-line-ending"},{include:"#comment"},{include:"#string"},{begin:`(?<=^import|[^\\._$[:alnum:]]import)(?!\\s*["'])`,end:"\\bfrom\\b",endCaptures:{0:{name:"keyword.control.from.js"}},patterns:[{include:"#import-export-declaration"}]},{include:"#import-export-declaration"}]},"export-declaration":{patterns:[{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)\\s+(as)\\s+(namespace)\\s+([_$[:alpha:]][_$[:alnum:]]*)",captures:{1:{name:"keyword.control.export.js"},2:{name:"keyword.control.as.js"},3:{name:"storage.type.namespace.js"},4:{name:"entity.name.type.module.js"}}},{name:"meta.export.default.js",begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?(?:(?:\\s*(=))|(?:\\s+(default)(?=\\s+)))",beginCaptures:{1:{name:"keyword.control.export.js"},2:{name:"keyword.control.type.js"},3:{name:"keyword.operator.assignment.js"},4:{name:"keyword.control.default.js"}},end:"(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",patterns:[{include:"#interface-declaration"},{include:"#expression"}]},{name:"meta.export.js",begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?\\b(?!(\\$)|(\\s*:))((?=\\s*[\\{*])|((?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s|,))(?!\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b)))",beginCaptures:{1:{name:"keyword.control.export.js"},2:{name:"keyword.control.type.js"}},end:"(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",patterns:[{include:"#import-export-declaration"}]}]},"import-export-declaration":{patterns:[{include:"#comment"},{include:"#string"},{include:"#import-export-block"},{name:"keyword.control.from.js",match:"\\bfrom\\b"},{include:"#import-export-assert-clause"},{include:"#import-export-clause"}]},"import-export-assert-clause":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(assert)\\s*(\\{)",beginCaptures:{1:{name:"keyword.control.assert.js"},2:{name:"punctuation.definition.block.js"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.js"}},patterns:[{include:"#comment"},{include:"#string"},{name:"meta.object-literal.key.js",match:"(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)"},{name:"punctuation.separator.key-value.js",match:":"}]},"import-export-block":{name:"meta.block.js",begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.js"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.js"}},patterns:[{include:"#import-export-clause"}]},"import-export-clause":{patterns:[{include:"#comment"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(?:(\\btype)\\s+)?(?:(\\bdefault)|(\\*)|(\\b[_$[:alpha:]][_$[:alnum:]]*)))\\s+(as)\\s+(?:(default(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|([_$[:alpha:]][_$[:alnum:]]*))",captures:{1:{name:"keyword.control.type.js"},2:{name:"keyword.control.default.js"},3:{name:"constant.language.import-export-all.js"},4:{name:"variable.other.readwrite.js"},5:{name:"keyword.control.as.js"},6:{name:"keyword.control.default.js"},7:{name:"variable.other.readwrite.alias.js"}}},{include:"#punctuation-comma"},{name:"constant.language.import-export-all.js",match:"\\*"},{name:"keyword.control.default.js",match:"\\b(default)\\b"},{match:"(?:(\\btype)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)",captures:{1:{name:"keyword.control.type.js"},2:{name:"variable.other.readwrite.alias.js"}}}]},"switch-statement":{name:"switch-statement.expr.js",begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bswitch\\s*\\()",end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.js"}},patterns:[{include:"#comment"},{name:"switch-expression.expr.js",begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(switch)\\s*(\\()",beginCaptures:{1:{name:"keyword.control.switch.js"},2:{name:"meta.brace.round.js"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.js"}},patterns:[{include:"#expression"}]},{name:"switch-block.expr.js",begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.js"}},end:"(?=\\})",patterns:[{name:"case-clause.expr.js",begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{1:{name:"keyword.control.switch.js"}},end:"(?=:)",patterns:[{include:"#expression"}]},{begin:"(:)\\s*(\\{)",beginCaptures:{1:{name:"case-clause.expr.js punctuation.definition.section.case-statement.js"},2:{name:"meta.block.js punctuation.definition.block.js"}},end:"\\}",endCaptures:{0:{name:"meta.block.js punctuation.definition.block.js"}},contentName:"meta.block.js",patterns:[{include:"#statements"}]},{match:"(:)",captures:{0:{name:"case-clause.expr.js punctuation.definition.section.case-statement.js"}}},{include:"#statements"}]}]},"for-loop":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))for(?=((\\s+|(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*))await)?\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)?(\\())",beginCaptures:{0:{name:"keyword.control.loop.js"}},end:"(?<=\\))",patterns:[{include:"#comment"},{name:"keyword.control.loop.js",match:"await"},{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.js"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.js"}},patterns:[{include:"#var-expr"},{include:"#expression"},{include:"#punctuation-semicolon"}]}]},"if-statement":{patterns:[{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bif\\s*(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))\\s*(?!\\{))",end:"(?=;|$|\\})",patterns:[{include:"#comment"},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(if)\\s*(\\()",beginCaptures:{1:{name:"keyword.control.conditional.js"},2:{name:"meta.brace.round.js"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.js"}},patterns:[{include:"#expression"}]},{name:"string.regexp.js",begin:"(?<=\\))\\s*\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",beginCaptures:{0:{name:"punctuation.definition.string.begin.js"}},end:"(/)([dgimsuy]*)",endCaptures:{1:{name:"punctuation.definition.string.end.js"},2:{name:"keyword.other.js"}},patterns:[{include:"#regexp"}]},{include:"#statements"}]}]},"decl-block":{name:"meta.block.js",begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.js"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.js"}},patterns:[{include:"#statements"}]},"after-operator-block-as-object-literal":{name:"meta.objectliteral.js",begin:"(?<!\\+\\+|--)(?<=[:=(,\\[?+!>]|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^yield|[^\\._$[:alnum:]]yield|^throw|[^\\._$[:alnum:]]throw|^in|[^\\._$[:alnum:]]in|^of|[^\\._$[:alnum:]]of|^typeof|[^\\._$[:alnum:]]typeof|&&|\\|\\||\\*)\\s*(\\{)",beginCaptures:{1:{name:"punctuation.definition.block.js"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.js"}},patterns:[{include:"#object-member"}]},"object-literal":{name:"meta.objectliteral.js",begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.js"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.js"}},patterns:[{include:"#object-member"}]},"object-member":{patterns:[{include:"#comment"},{include:"#object-literal-method-declaration"},{name:"meta.object.member.js meta.object-literal.key.js",begin:"(?=\\[)",end:"(?=:)|((?<=[\\]])(?=\\s*[\\(\\<]))",patterns:[{include:"#comment"},{include:"#array-literal"}]},{name:"meta.object.member.js meta.object-literal.key.js",begin:"(?=[\\'\\\"\\`])",end:"(?=:)|((?<=[\\'\\\"\\`])(?=((\\s*[\\(\\<,}])|(\\s+(as|satisifies)\\s+))))",patterns:[{include:"#comment"},{include:"#string"}]},{name:"meta.object.member.js meta.object-literal.key.js",begin:`(?x)(?=(\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:
|
|
408
|
+
(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3
|
|
409
|
+
(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3
|
|
410
|
+
(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3
|
|
411
|
+
(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3
|
|
412
|
+
(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1
|
|
413
|
+
(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.
|
|
414
|
+
(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1
|
|
415
|
+
(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1
|
|
416
|
+
)(?!\\$)))`,end:"(?=:)|(?=\\s*([\\(\\<,}])|(\\s+as|satisifies\\s+))",patterns:[{include:"#comment"},{include:"#numeric-literal"}]},{name:"meta.method.declaration.js",begin:"(?<=[\\]\\'\\\"\\`])(?=\\s*[\\(\\<])",end:"(?=\\}|;|,)|(?<=\\})",patterns:[{include:"#function-body"}]},{name:"meta.object.member.js",match:"(?![_$[:alpha:]])([[:digit:]]+)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",captures:{0:{name:"meta.object-literal.key.js"},1:{name:"constant.numeric.decimal.js"}}},{name:"meta.object.member.js",match:`(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/)*\\s*(
|
|
417
|
+
((async\\s+)?(
|
|
418
|
+
(function\\s*[(<*]) |
|
|
419
|
+
(function\\s+) |
|
|
420
|
+
([_$[:alpha:]][_$[:alnum:]]*\\s*=>)
|
|
421
|
+
)) |
|
|
422
|
+
((async\\s*)?(
|
|
423
|
+
((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |
|
|
424
|
+
# sure shot arrow functions even if => is on new line
|
|
425
|
+
(
|
|
426
|
+
(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
|
|
427
|
+
[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*
|
|
428
|
+
(
|
|
429
|
+
([)]\\s*:) | # ():
|
|
430
|
+
((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:
|
|
431
|
+
)
|
|
432
|
+
) |
|
|
433
|
+
(
|
|
434
|
+
[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends
|
|
435
|
+
) |
|
|
436
|
+
# arrow function possible to detect only with => on same line
|
|
437
|
+
(
|
|
438
|
+
(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters
|
|
439
|
+
\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters
|
|
440
|
+
(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type
|
|
441
|
+
\\s*=> # arrow operator
|
|
442
|
+
)
|
|
443
|
+
))
|
|
444
|
+
)))`,captures:{0:{name:"meta.object-literal.key.js"},1:{name:"entity.name.function.js"}}},{name:"meta.object.member.js",match:"(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",captures:{0:{name:"meta.object-literal.key.js"}}},{name:"meta.object.member.js",begin:"\\.\\.\\.",beginCaptures:{0:{name:"keyword.operator.spread.js"}},end:"(?=,|\\})",patterns:[{include:"#expression"}]},{name:"meta.object.member.js",match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$|\\/\\/|\\/\\*)",captures:{1:{name:"variable.other.readwrite.js"}}},{name:"meta.object.member.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*([,}]|$))",captures:{1:{name:"keyword.control.as.js"},2:{name:"storage.modifier.js"}}},{name:"meta.object.member.js",begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(as)|(satisfies))\\s+",beginCaptures:{1:{name:"keyword.control.as.js"},2:{name:"keyword.control.satisfies.js"}},end:"(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|^|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisifies)\\s+))",patterns:[{include:"#type"}]},{name:"meta.object.member.js",begin:"(?=[_$[:alpha:]][_$[:alnum:]]*\\s*=)",end:"(?=,|\\}|$|\\/\\/|\\/\\*)",patterns:[{include:"#expression"}]},{name:"meta.object.member.js",begin:":",beginCaptures:{0:{name:"meta.object-literal.key.js punctuation.separator.key-value.js"}},end:"(?=,|\\})",patterns:[{begin:"(?<=:)\\s*(async)?(?=\\s*(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",beginCaptures:{1:{name:"storage.modifier.async.js"}},end:"(?<=\\))",patterns:[{include:"#type-parameters"},{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.js"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.js"}},patterns:[{include:"#expression-inside-possibly-arrow-parens"}]}]},{begin:"(?<=:)\\s*(async)?\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",beginCaptures:{1:{name:"storage.modifier.async.js"},2:{name:"meta.brace.round.js"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.js"}},patterns:[{include:"#expression-inside-possibly-arrow-parens"}]},{begin:"(?<=:)\\s*(async)?\\s*(?=\\<\\s*$)",beginCaptures:{1:{name:"storage.modifier.async.js"}},end:"(?<=\\>)",patterns:[{include:"#type-parameters"}]},{begin:"(?<=\\>)\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",beginCaptures:{1:{name:"meta.brace.round.js"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.js"}},patterns:[{include:"#expression-inside-possibly-arrow-parens"}]},{include:"#possibly-arrow-return-type"},{include:"#expression"}]},{include:"#punctuation-comma"},{include:"#decl-block"}]},"ternary-expression":{begin:"(?!\\?\\.\\s*[^[:digit:]])(\\?)(?!\\?)",beginCaptures:{1:{name:"keyword.operator.ternary.js"}},end:"\\s*(:)",endCaptures:{1:{name:"keyword.operator.ternary.js"}},patterns:[{include:"#expression"}]},"function-call":{patterns:[{begin:"(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",end:"(?<=\\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",patterns:[{name:"meta.function-call.js",begin:"(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",end:"(?=\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",patterns:[{include:"#function-call-target"}]},{include:"#comment"},{include:"#function-call-optionals"},{include:"#type-arguments"},{include:"#paren-expression"}]},{begin:"(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",end:"(?<=\\>)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",patterns:[{name:"meta.function-call.js",begin:"(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",end:"(?=(<\\s*[\\{\\[\\(]\\s*$))",patterns:[{include:"#function-call-target"}]},{include:"#comment"},{include:"#function-call-optionals"},{include:"#type-arguments"}]}]},"function-call-target":{patterns:[{include:"#support-function-call-identifiers"},{name:"entity.name.function.js",match:"(\\#?[_$[:alpha:]][_$[:alnum:]]*)"}]},"function-call-optionals":{patterns:[{name:"meta.function-call.js punctuation.accessor.optional.js",match:"\\?\\."},{name:"meta.function-call.js keyword.operator.definiteassignment.js",match:"\\!"}]},"support-function-call-identifiers":{patterns:[{include:"#literal"},{include:"#support-objects"},{include:"#object-identifiers"},{include:"#punctuation-accessor"},{name:"keyword.operator.expression.import.js",match:"(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*[\\(]\\s*[\\\"\\'\\`]))"}]},"new-expr":{name:"new.expr.js",begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{1:{name:"keyword.operator.new.js"}},end:"(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",patterns:[{include:"#expression"}]},"instanceof-expr":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(instanceof)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{1:{name:"keyword.operator.expression.instanceof.js"}},end:"(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|(===|!==|==|!=)|(([\\&\\~\\^\\|]\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s+instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",patterns:[{include:"#type"}]},"paren-expression-possibly-arrow":{patterns:[{begin:"(?<=[(=,])\\s*(async)?(?=\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",beginCaptures:{1:{name:"storage.modifier.async.js"}},end:"(?<=\\))",patterns:[{include:"#paren-expression-possibly-arrow-with-typeparameters"}]},{begin:"(?<=[(=,]|=>|^return|[^\\._$[:alnum:]]return)\\s*(async)?(?=\\s*((((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\()|(<)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)))\\s*$)",beginCaptures:{1:{name:"storage.modifier.async.js"}},end:"(?<=\\))",patterns:[{include:"#paren-expression-possibly-arrow-with-typeparameters"}]},{include:"#possibly-arrow-return-type"}]},"paren-expression-possibly-arrow-with-typeparameters":{patterns:[{include:"#type-parameters"},{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.js"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.js"}},patterns:[{include:"#expression-inside-possibly-arrow-parens"}]}]},"expression-inside-possibly-arrow-parens":{patterns:[{include:"#expressionWithoutIdentifiers"},{include:"#comment"},{include:"#string"},{include:"#decorator"},{include:"#destructuring-parameter"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)",captures:{1:{name:"storage.modifier.js"}}},{match:`(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*
|
|
445
|
+
# function assignment |
|
|
446
|
+
(=\\s*(
|
|
447
|
+
((async\\s+)?(
|
|
448
|
+
(function\\s*[(<*]) |
|
|
449
|
+
(function\\s+) |
|
|
450
|
+
([_$[:alpha:]][_$[:alnum:]]*\\s*=>)
|
|
451
|
+
)) |
|
|
452
|
+
((async\\s*)?(
|
|
453
|
+
((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |
|
|
454
|
+
# sure shot arrow functions even if => is on new line
|
|
455
|
+
(
|
|
456
|
+
(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
|
|
457
|
+
[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*
|
|
458
|
+
(
|
|
459
|
+
([)]\\s*:) | # ():
|
|
460
|
+
((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:
|
|
461
|
+
)
|
|
462
|
+
) |
|
|
463
|
+
(
|
|
464
|
+
[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends
|
|
465
|
+
) |
|
|
466
|
+
# arrow function possible to detect only with => on same line
|
|
467
|
+
(
|
|
468
|
+
(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters
|
|
469
|
+
\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters
|
|
470
|
+
(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type
|
|
471
|
+
\\s*=> # arrow operator
|
|
472
|
+
)
|
|
473
|
+
))
|
|
474
|
+
)) |
|
|
475
|
+
# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>
|
|
476
|
+
(:\\s*(
|
|
477
|
+
(<) |
|
|
478
|
+
([(]\\s*(
|
|
479
|
+
([)]) |
|
|
480
|
+
(\\.\\.\\.) |
|
|
481
|
+
([_$[:alnum:]]+\\s*(
|
|
482
|
+
([:,?=])|
|
|
483
|
+
([)]\\s*=>)
|
|
484
|
+
))
|
|
485
|
+
))
|
|
486
|
+
)) |
|
|
487
|
+
(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |
|
|
488
|
+
(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |
|
|
489
|
+
(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(
|
|
490
|
+
((async\\s+)?(
|
|
491
|
+
(function\\s*[(<*]) |
|
|
492
|
+
(function\\s+) |
|
|
493
|
+
([_$[:alpha:]][_$[:alnum:]]*\\s*=>)
|
|
494
|
+
)) |
|
|
495
|
+
((async\\s*)?(
|
|
496
|
+
((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |
|
|
497
|
+
# sure shot arrow functions even if => is on new line
|
|
498
|
+
(
|
|
499
|
+
(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
|
|
500
|
+
[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*
|
|
501
|
+
(
|
|
502
|
+
([)]\\s*:) | # ():
|
|
503
|
+
((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:
|
|
504
|
+
)
|
|
505
|
+
) |
|
|
506
|
+
(
|
|
507
|
+
[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends
|
|
508
|
+
) |
|
|
509
|
+
# arrow function possible to detect only with => on same line
|
|
510
|
+
(
|
|
511
|
+
(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters
|
|
512
|
+
\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters
|
|
513
|
+
(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type
|
|
514
|
+
\\s*=> # arrow operator
|
|
515
|
+
)
|
|
516
|
+
))
|
|
517
|
+
)))`,captures:{1:{name:"storage.modifier.js"},2:{name:"keyword.operator.rest.js"},3:{name:"entity.name.function.js variable.language.this.js"},4:{name:"entity.name.function.js"},5:{name:"keyword.operator.optional.js"}}},{match:"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*[:,]|$)",captures:{1:{name:"storage.modifier.js"},2:{name:"keyword.operator.rest.js"},3:{name:"variable.parameter.js variable.language.this.js"},4:{name:"variable.parameter.js"},5:{name:"keyword.operator.optional.js"}}},{include:"#type-annotation"},{include:"#variable-initializer"},{name:"punctuation.separator.parameter.js",match:","},{include:"#identifiers"},{include:"#expressionPunctuations"}]},"paren-expression":{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.js"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.js"}},patterns:[{include:"#expression"}]},cast:{patterns:[{include:"#jsx"}]},"expression-operators":{patterns:[{name:"keyword.control.flow.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(await)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?=\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*\\*)",beginCaptures:{1:{name:"keyword.control.flow.js"}},end:"\\*",endCaptures:{0:{name:"keyword.generator.asterisk.js"}},patterns:[{include:"#comment"}]},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s*(\\*))?",captures:{1:{name:"keyword.control.flow.js"},2:{name:"keyword.generator.asterisk.js"}}},{name:"keyword.operator.expression.delete.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))delete(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{name:"keyword.operator.expression.in.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))in(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()"},{name:"keyword.operator.expression.of.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))of(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()"},{name:"keyword.operator.expression.instanceof.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{name:"keyword.operator.new.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{include:"#typeof-operator"},{name:"keyword.operator.expression.void.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))void(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*($|[;,:})\\]]))",captures:{1:{name:"keyword.control.as.js"},2:{name:"storage.modifier.js"}}},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(as)|(satisfies))\\s+",beginCaptures:{1:{name:"keyword.control.as.js"},2:{name:"keyword.control.satisfies.js"}},end:"(?=^|[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisfies)\\s+)|(\\s+\\<))",patterns:[{include:"#type"}]},{name:"keyword.operator.spread.js",match:"\\.\\.\\."},{name:"keyword.operator.assignment.compound.js",match:"\\*=|(?<!\\()/=|%=|\\+=|\\-="},{name:"keyword.operator.assignment.compound.bitwise.js",match:"\\&=|\\^=|<<=|>>=|>>>=|\\|="},{name:"keyword.operator.bitwise.shift.js",match:"<<|>>>|>>"},{name:"keyword.operator.comparison.js",match:"===|!==|==|!="},{name:"keyword.operator.relational.js",match:"<=|>=|<>|<|>"},{match:"(?<=[_$[:alnum:]])(\\!)\\s*(?:(/=)|(?:(/)(?![/*])))",captures:{1:{name:"keyword.operator.logical.js"},2:{name:"keyword.operator.assignment.compound.js"},3:{name:"keyword.operator.arithmetic.js"}}},{name:"keyword.operator.logical.js",match:"\\!|&&|\\|\\||\\?\\?"},{name:"keyword.operator.bitwise.js",match:"\\&|~|\\^|\\|"},{name:"keyword.operator.assignment.js",match:"\\="},{name:"keyword.operator.decrement.js",match:"--"},{name:"keyword.operator.increment.js",match:"\\+\\+"},{name:"keyword.operator.arithmetic.js",match:"%|\\*|/|-|\\+"},{begin:"(?<=[_$[:alnum:])\\]])\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)+(?:(/=)|(?:(/)(?![/*]))))",end:"(?:(/=)|(?:(/)(?!\\*([^\\*]|(\\*[^\\/]))*\\*\\/)))",endCaptures:{1:{name:"keyword.operator.assignment.compound.js"},2:{name:"keyword.operator.arithmetic.js"}},patterns:[{include:"#comment"}]},{match:"(?<=[_$[:alnum:])\\]])\\s*(?:(/=)|(?:(/)(?![/*])))",captures:{1:{name:"keyword.operator.assignment.compound.js"},2:{name:"keyword.operator.arithmetic.js"}}}]},"typeof-operator":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))typeof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{0:{name:"keyword.operator.expression.typeof.js"}},end:"(?=[,);}\\]=>:&|{\\?]|(extends\\s+)|$|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",patterns:[{include:"#type-arguments"},{include:"#expression"}]},literal:{patterns:[{include:"#numeric-literal"},{include:"#boolean-literal"},{include:"#null-literal"},{include:"#undefined-literal"},{include:"#numericConstant-literal"},{include:"#array-literal"},{include:"#this-literal"},{include:"#super-literal"}]},"array-literal":{name:"meta.array.literal.js",begin:"\\s*(\\[)",beginCaptures:{1:{name:"meta.brace.square.js"}},end:"\\]",endCaptures:{0:{name:"meta.brace.square.js"}},patterns:[{include:"#expression"},{include:"#punctuation-comma"}]},"numeric-literal":{patterns:[{name:"constant.numeric.hex.js",match:"\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$)",captures:{1:{name:"storage.type.numeric.bigint.js"}}},{name:"constant.numeric.binary.js",match:"\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$)",captures:{1:{name:"storage.type.numeric.bigint.js"}}},{name:"constant.numeric.octal.js",match:"\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$)",captures:{1:{name:"storage.type.numeric.bigint.js"}}},{match:`(?x)
|
|
518
|
+
(?<!\\$)(?:
|
|
519
|
+
(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3
|
|
520
|
+
(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3
|
|
521
|
+
(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3
|
|
522
|
+
(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3
|
|
523
|
+
(?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1
|
|
524
|
+
(?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.
|
|
525
|
+
(?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1
|
|
526
|
+
(?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1
|
|
527
|
+
)(?!\\$)`,captures:{0:{name:"constant.numeric.decimal.js"},1:{name:"meta.delimiter.decimal.period.js"},2:{name:"storage.type.numeric.bigint.js"},3:{name:"meta.delimiter.decimal.period.js"},4:{name:"storage.type.numeric.bigint.js"},5:{name:"meta.delimiter.decimal.period.js"},6:{name:"storage.type.numeric.bigint.js"},7:{name:"storage.type.numeric.bigint.js"},8:{name:"meta.delimiter.decimal.period.js"},9:{name:"storage.type.numeric.bigint.js"},10:{name:"meta.delimiter.decimal.period.js"},11:{name:"storage.type.numeric.bigint.js"},12:{name:"meta.delimiter.decimal.period.js"},13:{name:"storage.type.numeric.bigint.js"},14:{name:"storage.type.numeric.bigint.js"}}}]},"boolean-literal":{patterns:[{name:"constant.language.boolean.true.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{name:"constant.language.boolean.false.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"}]},"null-literal":{name:"constant.language.null.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))null(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},"this-literal":{name:"variable.language.this.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))this\\b(?!\\$)"},"super-literal":{name:"variable.language.super.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))super\\b(?!\\$)"},"undefined-literal":{name:"constant.language.undefined.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))undefined(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},"numericConstant-literal":{patterns:[{name:"constant.language.nan.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))NaN(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{name:"constant.language.infinity.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Infinity(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"}]},"support-objects":{patterns:[{name:"variable.language.arguments.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(arguments)\\b(?!\\$)"},{name:"support.class.promise.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Promise)\\b(?!\\$)"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(import)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(meta)\\b(?!\\$)",captures:{1:{name:"keyword.control.import.js"},2:{name:"punctuation.accessor.js"},3:{name:"punctuation.accessor.optional.js"},4:{name:"support.variable.property.importmeta.js"}}},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(target)\\b(?!\\$)",captures:{1:{name:"keyword.operator.new.js"},2:{name:"punctuation.accessor.js"},3:{name:"punctuation.accessor.optional.js"},4:{name:"support.variable.property.target.js"}}},{match:`(?x) (?:(\\.)|(\\?\\.(?!\\s*[[:digit:]]))) \\s* (?:
|
|
528
|
+
(?:(constructor|length|prototype|__proto__)\\b(?!\\$|\\s*(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\\())
|
|
529
|
+
|
|
|
530
|
+
(?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\b(?!\\$)))`,captures:{1:{name:"punctuation.accessor.js"},2:{name:"punctuation.accessor.optional.js"},3:{name:"support.variable.property.js"},4:{name:"support.constant.js"}}},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(exports)|(module)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\\b(?!\\$)",captures:{1:{name:"support.type.object.module.js"},2:{name:"support.type.object.module.js"},3:{name:"punctuation.accessor.js"},4:{name:"punctuation.accessor.optional.js"},5:{name:"support.type.object.module.js"}}}]},identifiers:{patterns:[{include:"#object-identifiers"},{match:`(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(
|
|
531
|
+
((async\\s+)?(
|
|
532
|
+
(function\\s*[(<*]) |
|
|
533
|
+
(function\\s+) |
|
|
534
|
+
([_$[:alpha:]][_$[:alnum:]]*\\s*=>)
|
|
535
|
+
)) |
|
|
536
|
+
((async\\s*)?(
|
|
537
|
+
((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |
|
|
538
|
+
# sure shot arrow functions even if => is on new line
|
|
539
|
+
(
|
|
540
|
+
(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
|
|
541
|
+
[(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*
|
|
542
|
+
(
|
|
543
|
+
([)]\\s*:) | # ():
|
|
544
|
+
((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:
|
|
545
|
+
)
|
|
546
|
+
) |
|
|
547
|
+
(
|
|
548
|
+
[<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends
|
|
549
|
+
) |
|
|
550
|
+
# arrow function possible to detect only with => on same line
|
|
551
|
+
(
|
|
552
|
+
(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters
|
|
553
|
+
\\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters
|
|
554
|
+
(\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type
|
|
555
|
+
\\s*=> # arrow operator
|
|
556
|
+
)
|
|
557
|
+
))
|
|
558
|
+
))`,captures:{1:{name:"punctuation.accessor.js"},2:{name:"punctuation.accessor.optional.js"},3:{name:"entity.name.function.js"}}},{match:"(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",captures:{1:{name:"punctuation.accessor.js"},2:{name:"punctuation.accessor.optional.js"},3:{name:"variable.other.constant.property.js"}}},{match:"(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)",captures:{1:{name:"punctuation.accessor.js"},2:{name:"punctuation.accessor.optional.js"},3:{name:"variable.other.property.js"}}},{name:"variable.other.constant.js",match:"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])"},{name:"variable.other.readwrite.js",match:"[_$[:alpha:]][_$[:alnum:]]*"}]},"object-identifiers":{patterns:[{name:"support.class.js",match:"([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\\??\\.\\s*prototype\\b(?!\\$))"},{match:`(?x)(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?:
|
|
559
|
+
(\\#?[[:upper:]][_$[:digit:][:upper:]]*) |
|
|
560
|
+
(\\#?[_$[:alpha:]][_$[:alnum:]]*)
|
|
561
|
+
)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)`,captures:{1:{name:"punctuation.accessor.js"},2:{name:"punctuation.accessor.optional.js"},3:{name:"variable.other.constant.object.property.js"},4:{name:"variable.other.object.property.js"}}},{match:`(?x)(?:
|
|
562
|
+
([[:upper:]][_$[:digit:][:upper:]]*) |
|
|
563
|
+
([_$[:alpha:]][_$[:alnum:]]*)
|
|
564
|
+
)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)`,captures:{1:{name:"variable.other.constant.object.js"},2:{name:"variable.other.object.js"}}}]},"type-annotation":{patterns:[{name:"meta.type.annotation.js",begin:"(:)(?=\\s*\\S)",beginCaptures:{1:{name:"keyword.operator.type.annotation.js"}},end:"(?<![:|&])(?!\\s*[|&]\\s+)((?=^|[,);\\}\\]]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",patterns:[{include:"#type"}]},{name:"meta.type.annotation.js",begin:"(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.js"}},end:"(?<![:|&])((?=[,);\\}\\]]|\\/\\/)|(?==[^>])|(?=^\\s*$)|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",patterns:[{include:"#type"}]}]},"parameter-type-annotation":{patterns:[{name:"meta.type.annotation.js",begin:"(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.js"}},end:"(?=[,)])|(?==[^>])",patterns:[{include:"#type"}]}]},"return-type":{patterns:[{name:"meta.return.type.js",begin:"(?<=\\))\\s*(:)(?=\\s*\\S)",beginCaptures:{1:{name:"keyword.operator.type.annotation.js"}},end:"(?<![:|&])(?=$|^|[{};,]|//)",patterns:[{include:"#return-type-core"}]},{name:"meta.return.type.js",begin:"(?<=\\))\\s*(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.js"}},end:"(?<![:|&])((?=[{};,]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",patterns:[{include:"#return-type-core"}]}]},"return-type-core":{patterns:[{include:"#comment"},{begin:"(?<=[:|&])(?=\\s*\\{)",end:"(?<=\\})",patterns:[{include:"#type-object"}]},{include:"#type-predicate-operator"},{include:"#type"}]},"arrow-return-type":{name:"meta.return.type.arrow.js",begin:"(?<=\\))\\s*(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.js"}},end:"(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",patterns:[{include:"#arrow-return-type-body"}]},"possibly-arrow-return-type":{begin:"(?<=\\)|^)\\s*(:)(?=\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*=>)",beginCaptures:{1:{name:"meta.arrow.js meta.return.type.arrow.js keyword.operator.type.annotation.js"}},end:"(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",contentName:"meta.arrow.js meta.return.type.arrow.js",patterns:[{include:"#arrow-return-type-body"}]},"arrow-return-type-body":{patterns:[{begin:"(?<=[:])(?=\\s*\\{)",end:"(?<=\\})",patterns:[{include:"#type-object"}]},{include:"#type-predicate-operator"},{include:"#type"}]},"type-parameters":{name:"meta.type.parameters.js",begin:"(<)",beginCaptures:{1:{name:"punctuation.definition.typeparameters.begin.js"}},end:"(>)",endCaptures:{1:{name:"punctuation.definition.typeparameters.end.js"}},patterns:[{include:"#comment"},{name:"storage.modifier.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends|in|out|const)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{include:"#type"},{include:"#punctuation-comma"},{name:"keyword.operator.assignment.js",match:"(=)(?!>)"}]},"type-arguments":{name:"meta.type.parameters.js",begin:"\\<",beginCaptures:{0:{name:"punctuation.definition.typeparameters.begin.js"}},end:"\\>",endCaptures:{0:{name:"punctuation.definition.typeparameters.end.js"}},patterns:[{include:"#type-arguments-body"}]},"type-arguments-body":{patterns:[{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(_)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",captures:{0:{name:"keyword.operator.type.js"}}},{include:"#type"},{include:"#punctuation-comma"}]},type:{patterns:[{include:"#comment"},{include:"#type-string"},{include:"#numeric-literal"},{include:"#type-primitive"},{include:"#type-builtin-literals"},{include:"#type-parameters"},{include:"#type-tuple"},{include:"#type-object"},{include:"#type-operators"},{include:"#type-conditional"},{include:"#type-fn-type-parameters"},{include:"#type-paren-or-function-parameters"},{include:"#type-function-return-type"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",captures:{1:{name:"storage.modifier.js"}}},{include:"#type-name"}]},"type-primitive":{name:"support.type.primitive.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},"type-builtin-literals":{name:"support.type.builtin.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},"type-tuple":{name:"meta.type.tuple.js",begin:"\\[",beginCaptures:{0:{name:"meta.brace.square.js"}},end:"\\]",endCaptures:{0:{name:"meta.brace.square.js"}},patterns:[{name:"keyword.operator.rest.js",match:"\\.\\.\\."},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",captures:{1:{name:"entity.name.label.js"},2:{name:"keyword.operator.optional.js"},3:{name:"punctuation.separator.label.js"}}},{include:"#type"},{include:"#punctuation-comma"}]},"type-object":{name:"meta.object.type.js",begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.js"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.js"}},patterns:[{include:"#comment"},{include:"#method-declaration"},{include:"#indexer-declaration"},{include:"#indexer-mapped-type-declaration"},{include:"#field-declaration"},{include:"#type-annotation"},{begin:"\\.\\.\\.",beginCaptures:{0:{name:"keyword.operator.spread.js"}},end:"(?=\\}|;|,|$)|(?<=\\})",patterns:[{include:"#type"}]},{include:"#punctuation-comma"},{include:"#punctuation-semicolon"},{include:"#type"}]},"type-conditional":{patterns:[{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",beginCaptures:{1:{name:"storage.modifier.js"}},end:"(?<=:)",patterns:[{begin:"\\?",beginCaptures:{0:{name:"keyword.operator.ternary.js"}},end:":",endCaptures:{0:{name:"keyword.operator.ternary.js"}},patterns:[{include:"#type"}]},{include:"#type"}]}]},"type-paren-or-function-parameters":{name:"meta.type.paren.cover.js",begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.js"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.js"}},patterns:[{match:`(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(
|
|
565
|
+
(<) |
|
|
566
|
+
([(]\\s*(
|
|
567
|
+
([)]) |
|
|
568
|
+
(\\.\\.\\.) |
|
|
569
|
+
([_$[:alnum:]]+\\s*(
|
|
570
|
+
([:,?=])|
|
|
571
|
+
([)]\\s*=>)
|
|
572
|
+
))
|
|
573
|
+
))
|
|
574
|
+
)) |
|
|
575
|
+
(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |
|
|
576
|
+
(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))`,captures:{1:{name:"storage.modifier.js"},2:{name:"keyword.operator.rest.js"},3:{name:"entity.name.function.js variable.language.this.js"},4:{name:"entity.name.function.js"},5:{name:"keyword.operator.optional.js"}}},{match:"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",captures:{1:{name:"storage.modifier.js"},2:{name:"keyword.operator.rest.js"},3:{name:"variable.parameter.js variable.language.this.js"},4:{name:"variable.parameter.js"},5:{name:"keyword.operator.optional.js"}}},{include:"#type-annotation"},{name:"punctuation.separator.parameter.js",match:","},{include:"#type"}]},"type-fn-type-parameters":{patterns:[{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",beginCaptures:{1:{name:"meta.type.constructor.js storage.modifier.js"},2:{name:"meta.type.constructor.js keyword.control.new.js"}},end:"(?<=>)",patterns:[{include:"#comment"},{include:"#type-parameters"}]},{name:"meta.type.constructor.js",begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",beginCaptures:{1:{name:"storage.modifier.js"},2:{name:"keyword.control.new.js"}},end:"(?<=\\))",patterns:[{include:"#function-parameters"}]},{name:"meta.type.function.js",begin:`(?x)(
|
|
577
|
+
(?=
|
|
578
|
+
[(]\\s*(
|
|
579
|
+
([)]) |
|
|
580
|
+
(\\.\\.\\.) |
|
|
581
|
+
([_$[:alnum:]]+\\s*(
|
|
582
|
+
([:,?=])|
|
|
583
|
+
([)]\\s*=>)
|
|
584
|
+
))
|
|
585
|
+
)
|
|
586
|
+
)
|
|
587
|
+
)`,end:"(?<=\\))",patterns:[{include:"#function-parameters"}]}]},"type-function-return-type":{patterns:[{name:"meta.type.function.return.js",begin:"(=>)(?=\\s*\\S)",beginCaptures:{1:{name:"storage.type.function.arrow.js"}},end:"(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",patterns:[{include:"#type-function-return-type-core"}]},{name:"meta.type.function.return.js",begin:"=>",beginCaptures:{0:{name:"storage.type.function.arrow.js"}},end:"(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",patterns:[{include:"#type-function-return-type-core"}]}]},"type-function-return-type-core":{patterns:[{include:"#comment"},{begin:"(?<==>)(?=\\s*\\{)",end:"(?<=\\})",patterns:[{include:"#type-object"}]},{include:"#type-predicate-operator"},{include:"#type"}]},"type-operators":{patterns:[{include:"#typeof-operator"},{include:"#type-infer"},{begin:"([&|])(?=\\s*\\{)",beginCaptures:{0:{name:"keyword.operator.type.js"}},end:"(?<=\\})",patterns:[{include:"#type-object"}]},{begin:"[&|]",beginCaptures:{0:{name:"keyword.operator.type.js"}},end:"(?=\\S)"},{name:"keyword.operator.expression.keyof.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))keyof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{name:"keyword.operator.ternary.js",match:"(\\?|\\:)"},{name:"keyword.operator.expression.import.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*\\()"}]},"type-infer":{patterns:[{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(infer)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s+(extends)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))?",name:"meta.type.infer.js",captures:{1:{name:"keyword.operator.expression.infer.js"},2:{name:"entity.name.type.js"},3:{name:"keyword.operator.expression.extends.js"}}}]},"type-predicate-operator":{patterns:[{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",captures:{1:{name:"keyword.operator.type.asserts.js"},2:{name:"variable.parameter.js variable.language.this.js"},3:{name:"variable.parameter.js"},4:{name:"keyword.operator.expression.is.js"}}},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",captures:{1:{name:"keyword.operator.type.asserts.js"},2:{name:"variable.parameter.js variable.language.this.js"},3:{name:"variable.parameter.js"}}},{name:"keyword.operator.type.asserts.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{name:"keyword.operator.expression.is.js",match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"}]},"type-name":{patterns:[{begin:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",captures:{1:{name:"entity.name.type.module.js"},2:{name:"punctuation.accessor.js"},3:{name:"punctuation.accessor.optional.js"},4:{name:"meta.type.parameters.js punctuation.definition.typeparameters.begin.js"}},end:"(>)",endCaptures:{1:{name:"meta.type.parameters.js punctuation.definition.typeparameters.end.js"}},contentName:"meta.type.parameters.js",patterns:[{include:"#type-arguments-body"}]},{begin:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",beginCaptures:{1:{name:"entity.name.type.js"},2:{name:"meta.type.parameters.js punctuation.definition.typeparameters.begin.js"}},end:"(>)",endCaptures:{1:{name:"meta.type.parameters.js punctuation.definition.typeparameters.end.js"}},contentName:"meta.type.parameters.js",patterns:[{include:"#type-arguments-body"}]},{match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",captures:{1:{name:"entity.name.type.module.js"},2:{name:"punctuation.accessor.js"},3:{name:"punctuation.accessor.optional.js"}}},{name:"entity.name.type.js",match:"[_$[:alpha:]][_$[:alnum:]]*"}]},"punctuation-comma":{name:"punctuation.separator.comma.js",match:","},"punctuation-semicolon":{name:"punctuation.terminator.statement.js",match:";"},"punctuation-accessor":{match:"(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",captures:{1:{name:"punctuation.accessor.js"},2:{name:"punctuation.accessor.optional.js"}}},string:{patterns:[{include:"#qstring-single"},{include:"#qstring-double"},{include:"#template"}]},"qstring-double":{name:"string.quoted.double.js",begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.js"}},end:'(")|((?:[^\\\\\\n])$)',endCaptures:{1:{name:"punctuation.definition.string.end.js"},2:{name:"invalid.illegal.newline.js"}},patterns:[{include:"#string-character-escape"}]},"qstring-single":{name:"string.quoted.single.js",begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.js"}},end:"(\\')|((?:[^\\\\\\n])$)",endCaptures:{1:{name:"punctuation.definition.string.end.js"},2:{name:"invalid.illegal.newline.js"}},patterns:[{include:"#string-character-escape"}]},"string-character-escape":{name:"constant.character.escape.js",match:"\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"},template:{patterns:[{include:"#template-call"},{contentName:"string.template.js",begin:"([_$[:alpha:]][_$[:alnum:]]*)?(`)",beginCaptures:{1:{name:"entity.name.function.tagged-template.js"},2:{name:"string.template.js punctuation.definition.string.template.begin.js"}},end:"`",endCaptures:{0:{name:"string.template.js punctuation.definition.string.template.end.js"}},patterns:[{include:"#template-substitution-element"},{include:"#string-character-escape"}]}]},"template-call":{patterns:[{begin:"(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",end:"(?=`)",patterns:[{begin:"(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",end:"(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",patterns:[{include:"#support-function-call-identifiers"},{name:"entity.name.function.tagged-template.js",match:"([_$[:alpha:]][_$[:alnum:]]*)"}]},{include:"#type-arguments"}]},{begin:"([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)",beginCaptures:{1:{name:"entity.name.function.tagged-template.js"}},end:"(?=`)",patterns:[{include:"#type-arguments"}]}]},"template-substitution-element":{name:"meta.template.expression.js",begin:"\\$\\{",beginCaptures:{0:{name:"punctuation.definition.template-expression.begin.js"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.template-expression.end.js"}},patterns:[{include:"#expression"}],contentName:"meta.embedded.line.js"},"type-string":{patterns:[{include:"#qstring-single"},{include:"#qstring-double"},{include:"#template-type"}]},"template-type":{patterns:[{include:"#template-call"},{contentName:"string.template.js",begin:"([_$[:alpha:]][_$[:alnum:]]*)?(`)",beginCaptures:{1:{name:"entity.name.function.tagged-template.js"},2:{name:"string.template.js punctuation.definition.string.template.begin.js"}},end:"`",endCaptures:{0:{name:"string.template.js punctuation.definition.string.template.end.js"}},patterns:[{include:"#template-type-substitution-element"},{include:"#string-character-escape"}]}]},"template-type-substitution-element":{name:"meta.template.expression.js",begin:"\\$\\{",beginCaptures:{0:{name:"punctuation.definition.template-expression.begin.js"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.template-expression.end.js"}},patterns:[{include:"#type"}],contentName:"meta.embedded.line.js"},regex:{patterns:[{name:"string.regexp.js",begin:"(?<!\\+\\+|--|})(?<=[=(:,\\[?+!]|^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case|=>|&&|\\|\\||\\*\\/)\\s*(\\/)(?![\\/*])(?=(?:[^\\/\\\\\\[\\()]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\]|\\(([^\\)\\\\]|\\\\.)+\\))+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",beginCaptures:{1:{name:"punctuation.definition.string.begin.js"}},end:"(/)([dgimsuy]*)",endCaptures:{1:{name:"punctuation.definition.string.end.js"},2:{name:"keyword.other.js"}},patterns:[{include:"#regexp"}]},{name:"string.regexp.js",begin:"((?<![_$[:alnum:])\\]]|\\+\\+|--|}|\\*\\/)|((?<=^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case))\\s*)\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",beginCaptures:{0:{name:"punctuation.definition.string.begin.js"}},end:"(/)([dgimsuy]*)",endCaptures:{1:{name:"punctuation.definition.string.end.js"},2:{name:"keyword.other.js"}},patterns:[{include:"#regexp"}]}]},regexp:{patterns:[{name:"keyword.control.anchor.regexp",match:"\\\\[bB]|\\^|\\$"},{match:"\\\\[1-9]\\d*|\\\\k<([a-zA-Z_$][\\w$]*)>",captures:{0:{name:"keyword.other.back-reference.regexp"},1:{name:"variable.other.regexp"}}},{name:"keyword.operator.quantifier.regexp",match:"[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??"},{name:"keyword.operator.or.regexp",match:"\\|"},{name:"meta.group.assertion.regexp",begin:"(\\()((\\?=)|(\\?!)|(\\?<=)|(\\?<!))",beginCaptures:{1:{name:"punctuation.definition.group.regexp"},2:{name:"punctuation.definition.group.assertion.regexp"},3:{name:"meta.assertion.look-ahead.regexp"},4:{name:"meta.assertion.negative-look-ahead.regexp"},5:{name:"meta.assertion.look-behind.regexp"},6:{name:"meta.assertion.negative-look-behind.regexp"}},end:"(\\))",endCaptures:{1:{name:"punctuation.definition.group.regexp"}},patterns:[{include:"#regexp"}]},{name:"meta.group.regexp",begin:"\\((?:(\\?:)|(?:\\?<([a-zA-Z_$][\\w$]*)>))?",beginCaptures:{0:{name:"punctuation.definition.group.regexp"},1:{name:"punctuation.definition.group.no-capture.regexp"},2:{name:"variable.other.regexp"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.regexp"}},patterns:[{include:"#regexp"}]},{name:"constant.other.character-class.set.regexp",begin:"(\\[)(\\^)?",beginCaptures:{1:{name:"punctuation.definition.character-class.regexp"},2:{name:"keyword.operator.negation.regexp"}},end:"(\\])",endCaptures:{1:{name:"punctuation.definition.character-class.regexp"}},patterns:[{name:"constant.other.character-class.range.regexp",match:"(?:.|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))\\-(?:[^\\]\\\\]|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))",captures:{1:{name:"constant.character.numeric.regexp"},2:{name:"constant.character.control.regexp"},3:{name:"constant.character.escape.backslash.regexp"},4:{name:"constant.character.numeric.regexp"},5:{name:"constant.character.control.regexp"},6:{name:"constant.character.escape.backslash.regexp"}}},{include:"#regex-character-class"}]},{include:"#regex-character-class"}]},"regex-character-class":{patterns:[{name:"constant.other.character-class.regexp",match:"\\\\[wWsSdDtrnvf]|\\."},{name:"constant.character.numeric.regexp",match:"\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})"},{name:"constant.character.control.regexp",match:"\\\\c[A-Z]"},{name:"constant.character.escape.backslash.regexp",match:"\\\\."}]},comment:{patterns:[{name:"comment.block.documentation.js",begin:"/\\*\\*(?!/)",beginCaptures:{0:{name:"punctuation.definition.comment.js"}},end:"\\*/",endCaptures:{0:{name:"punctuation.definition.comment.js"}},patterns:[{include:"#docblock"}]},{name:"comment.block.js",begin:"(/\\*)(?:\\s*((@)internal)(?=\\s|(\\*/)))?",beginCaptures:{1:{name:"punctuation.definition.comment.js"},2:{name:"storage.type.internaldeclaration.js"},3:{name:"punctuation.decorator.internaldeclaration.js"}},end:"\\*/",endCaptures:{0:{name:"punctuation.definition.comment.js"}}},{begin:"(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.js"},2:{name:"comment.line.double-slash.js"},3:{name:"punctuation.definition.comment.js"},4:{name:"storage.type.internaldeclaration.js"},5:{name:"punctuation.decorator.internaldeclaration.js"}},end:"(?=$)",contentName:"comment.line.double-slash.js"}]},"single-line-comment-consuming-line-ending":{begin:"(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.js"},2:{name:"comment.line.double-slash.js"},3:{name:"punctuation.definition.comment.js"},4:{name:"storage.type.internaldeclaration.js"},5:{name:"punctuation.decorator.internaldeclaration.js"}},end:"(?=^)",contentName:"comment.line.double-slash.js"},directives:{name:"comment.line.triple-slash.directive.js",begin:"^(///)\\s*(?=<(reference|amd-dependency|amd-module)(\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\s*=\\s*((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)))+\\s*/>\\s*$)",beginCaptures:{1:{name:"punctuation.definition.comment.js"}},end:"(?=$)",patterns:[{name:"meta.tag.js",begin:"(<)(reference|amd-dependency|amd-module)",beginCaptures:{1:{name:"punctuation.definition.tag.directive.js"},2:{name:"entity.name.tag.directive.js"}},end:"/>",endCaptures:{0:{name:"punctuation.definition.tag.directive.js"}},patterns:[{name:"entity.other.attribute-name.directive.js",match:"path|types|no-default-lib|lib|name|resolution-mode"},{name:"keyword.operator.assignment.js",match:"="},{include:"#string"}]}]},docblock:{patterns:[{match:`(?x)
|
|
588
|
+
((@)(?:access|api))
|
|
589
|
+
\\s+
|
|
590
|
+
(private|protected|public)
|
|
591
|
+
\\b`,captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"constant.language.access-type.jsdoc"}}},{match:`(?x)
|
|
592
|
+
((@)author)
|
|
593
|
+
\\s+
|
|
594
|
+
(
|
|
595
|
+
[^@\\s<>*/]
|
|
596
|
+
(?:[^@<>*/]|\\*[^/])*
|
|
597
|
+
)
|
|
598
|
+
(?:
|
|
599
|
+
\\s*
|
|
600
|
+
(<)
|
|
601
|
+
([^>\\s]+)
|
|
602
|
+
(>)
|
|
603
|
+
)?`,captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"entity.name.type.instance.jsdoc"},4:{name:"punctuation.definition.bracket.angle.begin.jsdoc"},5:{name:"constant.other.email.link.underline.jsdoc"},6:{name:"punctuation.definition.bracket.angle.end.jsdoc"}}},{match:`(?x)
|
|
604
|
+
((@)borrows) \\s+
|
|
605
|
+
((?:[^@\\s*/]|\\*[^/])+) # <that namepath>
|
|
606
|
+
\\s+ (as) \\s+ # as
|
|
607
|
+
((?:[^@\\s*/]|\\*[^/])+) # <this namepath>`,captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"entity.name.type.instance.jsdoc"},4:{name:"keyword.operator.control.jsdoc"},5:{name:"entity.name.type.instance.jsdoc"}}},{name:"meta.example.jsdoc",begin:"((@)example)\\s+",end:"(?=@|\\*/)",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},patterns:[{match:"^\\s\\*\\s+"},{contentName:"constant.other.description.jsdoc",begin:"\\G(<)caption(>)",beginCaptures:{0:{name:"entity.name.tag.inline.jsdoc"},1:{name:"punctuation.definition.bracket.angle.begin.jsdoc"},2:{name:"punctuation.definition.bracket.angle.end.jsdoc"}},end:"(</)caption(>)|(?=\\*/)",endCaptures:{0:{name:"entity.name.tag.inline.jsdoc"},1:{name:"punctuation.definition.bracket.angle.begin.jsdoc"},2:{name:"punctuation.definition.bracket.angle.end.jsdoc"}}},{match:"[^\\s@*](?:[^*]|\\*[^/])*",captures:{0:{name:"source.embedded.js"}}}]},{match:"(?x) ((@)kind) \\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\b",captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"constant.language.symbol-type.jsdoc"}}},{match:`(?x)
|
|
608
|
+
((@)see)
|
|
609
|
+
\\s+
|
|
610
|
+
(?:
|
|
611
|
+
# URL
|
|
612
|
+
(
|
|
613
|
+
(?=https?://)
|
|
614
|
+
(?:[^\\s*]|\\*[^/])+
|
|
615
|
+
)
|
|
616
|
+
|
|
|
617
|
+
# JSDoc namepath
|
|
618
|
+
(
|
|
619
|
+
(?!
|
|
620
|
+
# Avoid matching bare URIs (also acceptable as links)
|
|
621
|
+
https?://
|
|
622
|
+
|
|
|
623
|
+
# Avoid matching {@inline tags}; we match those below
|
|
624
|
+
(?:\\[[^\\[\\]]*\\])? # Possible description [preceding]{@tag}
|
|
625
|
+
{@(?:link|linkcode|linkplain|tutorial)\\b
|
|
626
|
+
)
|
|
627
|
+
# Matched namepath
|
|
628
|
+
(?:[^@\\s*/]|\\*[^/])+
|
|
629
|
+
)
|
|
630
|
+
)`,captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.link.underline.jsdoc"},4:{name:"entity.name.type.instance.jsdoc"}}},{match:`(?x)
|
|
631
|
+
((@)template)
|
|
632
|
+
\\s+
|
|
633
|
+
# One or more valid identifiers
|
|
634
|
+
(
|
|
635
|
+
[A-Za-z_$] # First character: non-numeric word character
|
|
636
|
+
[\\w$.\\[\\]]* # Rest of identifier
|
|
637
|
+
(?: # Possible list of additional identifiers
|
|
638
|
+
\\s* , \\s*
|
|
639
|
+
[A-Za-z_$]
|
|
640
|
+
[\\w$.\\[\\]]*
|
|
641
|
+
)*
|
|
642
|
+
)`,captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}}},{begin:"(?x)((@)template)\\s+(?={)",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"},{name:"variable.other.jsdoc",match:"([A-Za-z_$][\\w$.\\[\\]]*)"}]},{match:`(?x)
|
|
643
|
+
(
|
|
644
|
+
(@)
|
|
645
|
+
(?:arg|argument|const|constant|member|namespace|param|var)
|
|
646
|
+
)
|
|
647
|
+
\\s+
|
|
648
|
+
(
|
|
649
|
+
[A-Za-z_$]
|
|
650
|
+
[\\w$.\\[\\]]*
|
|
651
|
+
)`,captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}}},{begin:"((@)typedef)\\s+(?={)",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"},{name:"entity.name.type.instance.jsdoc",match:"(?:[^@\\s*/]|\\*[^/])+"}]},{begin:"((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\s+(?={)",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"},{name:"variable.other.jsdoc",match:"([A-Za-z_$][\\w$.\\[\\]]*)"},{name:"variable.other.jsdoc",match:`(?x)
|
|
652
|
+
(\\[)\\s*
|
|
653
|
+
[\\w$]+
|
|
654
|
+
(?:
|
|
655
|
+
(?:\\[\\])? # Foo[ ].bar properties within an array
|
|
656
|
+
\\. # Foo.Bar namespaced parameter
|
|
657
|
+
[\\w$]+
|
|
658
|
+
)*
|
|
659
|
+
(?:
|
|
660
|
+
\\s*
|
|
661
|
+
(=) # [foo=bar] Default parameter value
|
|
662
|
+
\\s*
|
|
663
|
+
(
|
|
664
|
+
# The inner regexes are to stop the match early at */ and to not stop at escaped quotes
|
|
665
|
+
(?>
|
|
666
|
+
"(?:(?:\\*(?!/))|(?:\\\\(?!"))|[^*\\\\])*?" | # [foo="bar"] Double-quoted
|
|
667
|
+
'(?:(?:\\*(?!/))|(?:\\\\(?!'))|[^*\\\\])*?' | # [foo='bar'] Single-quoted
|
|
668
|
+
\\[ (?:(?:\\*(?!/))|[^*])*? \\] | # [foo=[1,2]] Array literal
|
|
669
|
+
(?:(?:\\*(?!/))|\\s(?!\\s*\\])|\\[.*?(?:\\]|(?=\\*/))|[^*\\s\\[\\]])* # Everything else
|
|
670
|
+
)*
|
|
671
|
+
)
|
|
672
|
+
)?
|
|
673
|
+
\\s*(?:(\\])((?:[^*\\s]|\\*[^\\s/])+)?|(?=\\*/))`,captures:{1:{name:"punctuation.definition.optional-value.begin.bracket.square.jsdoc"},2:{name:"keyword.operator.assignment.jsdoc"},3:{name:"source.embedded.js"},4:{name:"punctuation.definition.optional-value.end.bracket.square.jsdoc"},5:{name:"invalid.illegal.syntax.jsdoc"}}}]},{begin:`(?x)
|
|
674
|
+
(
|
|
675
|
+
(@)
|
|
676
|
+
(?:define|enum|exception|export|extends|lends|implements|modifies
|
|
677
|
+
|namespace|private|protected|returns?|satisfies|suppress|this|throws|type
|
|
678
|
+
|yields?)
|
|
679
|
+
)
|
|
680
|
+
\\s+(?={)`,beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"}]},{match:`(?x)
|
|
681
|
+
(
|
|
682
|
+
(@)
|
|
683
|
+
(?:alias|augments|callback|constructs|emits|event|fires|exports?
|
|
684
|
+
|extends|external|function|func|host|lends|listens|interface|memberof!?
|
|
685
|
+
|method|module|mixes|mixin|name|requires|see|this|typedef|uses)
|
|
686
|
+
)
|
|
687
|
+
\\s+
|
|
688
|
+
(
|
|
689
|
+
(?:
|
|
690
|
+
[^{}@\\s*] | \\*[^/]
|
|
691
|
+
)+
|
|
692
|
+
)`,captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"entity.name.type.instance.jsdoc"}}},{contentName:"variable.other.jsdoc",begin:`((@)(?:default(?:value)?|license|version))\\s+(([''"]))`,beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"},4:{name:"punctuation.definition.string.begin.jsdoc"}},end:"(\\3)|(?=$|\\*/)",endCaptures:{0:{name:"variable.other.jsdoc"},1:{name:"punctuation.definition.string.end.jsdoc"}}},{match:"((@)(?:default(?:value)?|license|tutorial|variation|version))\\s+([^\\s*]+)",captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}}},{name:"storage.type.class.jsdoc",match:"(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \\b",captures:{1:{name:"punctuation.definition.block.tag.jsdoc"}}},{include:"#inline-tags"},{match:"((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\s+)",captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}}}]},brackets:{patterns:[{begin:"{",end:"}|(?=\\*/)",patterns:[{include:"#brackets"}]},{begin:"\\[",end:"\\]|(?=\\*/)",patterns:[{include:"#brackets"}]}]},"inline-tags":{patterns:[{name:"constant.other.description.jsdoc",match:"(\\[)[^\\]]+(\\])(?={@(?:link|linkcode|linkplain|tutorial))",captures:{1:{name:"punctuation.definition.bracket.square.begin.jsdoc"},2:{name:"punctuation.definition.bracket.square.end.jsdoc"}}},{name:"entity.name.type.instance.jsdoc",begin:"({)((@)(?:link(?:code|plain)?|tutorial))\\s*",beginCaptures:{1:{name:"punctuation.definition.bracket.curly.begin.jsdoc"},2:{name:"storage.type.class.jsdoc"},3:{name:"punctuation.definition.inline.tag.jsdoc"}},end:"}|(?=\\*/)",endCaptures:{0:{name:"punctuation.definition.bracket.curly.end.jsdoc"}},patterns:[{match:"\\G((?=https?://)(?:[^|}\\s*]|\\*[/])+)(\\|)?",captures:{1:{name:"variable.other.link.underline.jsdoc"},2:{name:"punctuation.separator.pipe.jsdoc"}}},{match:"\\G((?:[^{}@\\s|*]|\\*[^/])+)(\\|)?",captures:{1:{name:"variable.other.description.jsdoc"},2:{name:"punctuation.separator.pipe.jsdoc"}}}]}]},jsdoctype:{patterns:[{contentName:"entity.name.type.instance.jsdoc",begin:"\\G({)",beginCaptures:{0:{name:"entity.name.type.instance.jsdoc"},1:{name:"punctuation.definition.bracket.curly.begin.jsdoc"}},end:"((}))\\s*|(?=\\*/)",endCaptures:{1:{name:"entity.name.type.instance.jsdoc"},2:{name:"punctuation.definition.bracket.curly.end.jsdoc"}},patterns:[{include:"#brackets"}]}]},jsx:{patterns:[{include:"#jsx-tag-without-attributes-in-expression"},{include:"#jsx-tag-in-expression"}]},"jsx-tag-without-attributes-in-expression":{begin:"(?<!\\+\\+|--)(?<=[({\\[,?=>:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s*(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",end:"(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",patterns:[{include:"#jsx-tag-without-attributes"}]},"jsx-tag-without-attributes":{name:"meta.tag.without-attributes.js",begin:"(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>)",end:"(</)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.js"},2:{name:"entity.name.tag.namespace.js"},3:{name:"punctuation.separator.namespace.js"},4:{name:"entity.name.tag.js"},5:{name:"support.class.component.js"},6:{name:"punctuation.definition.tag.end.js"}},endCaptures:{1:{name:"punctuation.definition.tag.begin.js"},2:{name:"entity.name.tag.namespace.js"},3:{name:"punctuation.separator.namespace.js"},4:{name:"entity.name.tag.js"},5:{name:"support.class.component.js"},6:{name:"punctuation.definition.tag.end.js"}},contentName:"meta.jsx.children.js",patterns:[{include:"#jsx-children"}]},"jsx-tag-in-expression":{begin:`(?x)
|
|
693
|
+
(?<!\\+\\+|--)(?<=[({\\[,?=>:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s*
|
|
694
|
+
(?!<\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s+[^=>])|,)) # look ahead is not type parameter of arrow
|
|
695
|
+
(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))`,end:"(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",patterns:[{include:"#jsx-tag"}]},"jsx-tag":{name:"meta.tag.js",begin:"(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",end:"(/>)|(?:(</)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",endCaptures:{1:{name:"punctuation.definition.tag.end.js"},2:{name:"punctuation.definition.tag.begin.js"},3:{name:"entity.name.tag.namespace.js"},4:{name:"punctuation.separator.namespace.js"},5:{name:"entity.name.tag.js"},6:{name:"support.class.component.js"},7:{name:"punctuation.definition.tag.end.js"}},patterns:[{begin:"(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.js"},2:{name:"entity.name.tag.namespace.js"},3:{name:"punctuation.separator.namespace.js"},4:{name:"entity.name.tag.js"},5:{name:"support.class.component.js"}},end:"(?=[/]?>)",patterns:[{include:"#comment"},{include:"#type-arguments"},{include:"#jsx-tag-attributes"}]},{begin:"(>)",beginCaptures:{1:{name:"punctuation.definition.tag.end.js"}},end:"(?=</)",contentName:"meta.jsx.children.js",patterns:[{include:"#jsx-children"}]}]},"jsx-children":{patterns:[{include:"#jsx-tag-without-attributes"},{include:"#jsx-tag"},{include:"#jsx-evaluated-code"},{include:"#jsx-entities"}]},"jsx-evaluated-code":{contentName:"meta.embedded.expression.js",begin:"\\{",end:"\\}",beginCaptures:{0:{name:"punctuation.section.embedded.begin.js"}},endCaptures:{0:{name:"punctuation.section.embedded.end.js"}},patterns:[{include:"#expression"}]},"jsx-entities":{patterns:[{name:"constant.character.entity.js",match:"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",captures:{1:{name:"punctuation.definition.entity.js"},3:{name:"punctuation.definition.entity.js"}}}]},"jsx-tag-attributes":{name:"meta.tag.attributes.js",begin:"\\s+",end:"(?=[/]?>)",patterns:[{include:"#comment"},{include:"#jsx-tag-attribute-name"},{include:"#jsx-tag-attribute-assignment"},{include:"#jsx-string-double-quoted"},{include:"#jsx-string-single-quoted"},{include:"#jsx-evaluated-code"},{include:"#jsx-tag-attributes-illegal"}]},"jsx-tag-attribute-name":{match:`(?x)
|
|
696
|
+
\\s*
|
|
697
|
+
(?:([_$[:alpha:]][-_$[:alnum:].]*)(:))?
|
|
698
|
+
([_$[:alpha:]][-_$[:alnum:]]*)
|
|
699
|
+
(?=\\s|=|/?>|/\\*|//)`,captures:{1:{name:"entity.other.attribute-name.namespace.js"},2:{name:"punctuation.separator.namespace.js"},3:{name:"entity.other.attribute-name.js"}}},"jsx-tag-attribute-assignment":{name:"keyword.operator.assignment.js",match:`=(?=\\s*(?:'|"|{|/\\*|//|\\n))`},"jsx-string-double-quoted":{name:"string.quoted.double.js",begin:'"',end:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.js"}},endCaptures:{0:{name:"punctuation.definition.string.end.js"}},patterns:[{include:"#jsx-entities"}]},"jsx-string-single-quoted":{name:"string.quoted.single.js",begin:"'",end:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.js"}},endCaptures:{0:{name:"punctuation.definition.string.end.js"}},patterns:[{include:"#jsx-entities"}]},"jsx-tag-attributes-illegal":{name:"invalid.illegal.attribute.js",match:"\\S+"}},displayName:"JavaScript",aliases:["js"]});var n=[e];export{n as default};
|