vite-plugin-vue-devtools 7.2.0 → 7.3.0-beta.1

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.
Files changed (47) hide show
  1. package/client/assets/index-DhLLQ7AJ.css +1 -0
  2. package/client/assets/{index-CDBAuZCi.js → index-I7cYn7yD.js} +112 -113
  3. package/client/assets/{unocss-runtime-C2aH1Jer.js → unocss-runtime-DET60yni.js} +2 -2
  4. package/client/assets/{vue-yccoFuXf-q8nGVquG.js → vue-CCacahFR-CRnm5w84.js} +2 -2
  5. package/client/assets/{vue-CMvPPucx.js → vue-CpF6k_42.js} +2 -2
  6. package/client/assets/{vue-html-PWeNQaIl-ChlIBMe8.js → vue-html-Cae35ipv-514FnJ3-.js} +1 -1
  7. package/client/assets/{vue-html-DxgvOoVJ.js → vue-html-aHkQr8H2.js} +1 -1
  8. package/client/css-CAzixsid-CEpuX1HY.js +511 -0
  9. package/client/css-CAzixsid.js +511 -0
  10. package/client/devtools-panel.css +1 -0
  11. package/client/devtools-panel.js +92963 -0
  12. package/client/diff-Bo5iyMQ2-Bo5iyMQ2.js +7 -0
  13. package/client/diff-Bo5iyMQ2.js +7 -0
  14. package/client/html-BZB5lEhh-B74zAnWx.js +84 -0
  15. package/client/html-BZB5lEhh.js +84 -0
  16. package/client/index.html +2 -2
  17. package/client/javascript-DqVBMyXe-DqVBMyXe.js +705 -0
  18. package/client/javascript-DqVBMyXe.js +705 -0
  19. package/client/json-B12k4-6m-B12k4-6m.js +31 -0
  20. package/client/json-B12k4-6m.js +31 -0
  21. package/client/shellscript-C_gmBC5P-C_gmBC5P.js +7 -0
  22. package/client/shellscript-C_gmBC5P.js +7 -0
  23. package/client/typescript-AEg-ehu7-AEg-ehu7.js +672 -0
  24. package/client/typescript-AEg-ehu7.js +672 -0
  25. package/client/unocss-runtime-CysDdJDT.js +2041 -0
  26. package/client/vitesse-dark-CkUHDarG-CkUHDarG.js +685 -0
  27. package/client/vitesse-dark-CkUHDarG.js +685 -0
  28. package/client/vitesse-light-K81-viQS-K81-viQS.js +683 -0
  29. package/client/vitesse-light-K81-viQS.js +683 -0
  30. package/client/vue-CCacahFR-DGkPCBY5.js +2125 -0
  31. package/client/vue-CCacahFR.js +2125 -0
  32. package/client/vue-apis-Ba6Wxigc.js +1152 -0
  33. package/client/vue-html-Cae35ipv-C0hVhFzJ.js +11 -0
  34. package/client/vue-html-Cae35ipv.js +11 -0
  35. package/client/yaml-PGla5xPP-HJurM_FJ.js +206 -0
  36. package/client/yaml-PGla5xPP.js +206 -0
  37. package/dist/vite.cjs +140 -114
  38. package/dist/vite.d.cts +3 -17
  39. package/dist/vite.d.mts +3 -17
  40. package/dist/vite.d.ts +3 -17
  41. package/dist/vite.mjs +141 -115
  42. package/package.json +6 -6
  43. package/src/overlay/devtools-overlay.css +1 -1
  44. package/src/overlay/devtools-overlay.js +2 -2
  45. package/src/overlay/devtools-overlay.mjs +8 -0
  46. package/src/overlay.js +10 -4
  47. package/client/assets/index-Cka_f-Nd.css +0 -1
@@ -0,0 +1,705 @@
1
+ const e = Object.freeze({ displayName: "JavaScript", name: "javascript", patterns: [{ include: "#directives" }, { include: "#statements" }, { include: "#shebang" }], repository: { "access-modifier": { match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", name: "storage.modifier.js" }, "after-operator-block-as-object-literal": { 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" } }, name: "meta.objectliteral.js", patterns: [{ include: "#object-member" }] }, "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" }] }, "array-literal": { begin: "\\s*(\\[)", beginCaptures: { 1: { name: "meta.brace.square.js" } }, end: "\\]", endCaptures: { 0: { name: "meta.brace.square.js" } }, name: "meta.array.literal.js", patterns: [{ include: "#expression" }, { include: "#punctuation-comma" }] }, "arrow-function": { patterns: [{ captures: { 1: { name: "storage.modifier.async.js" }, 2: { name: "variable.parameter.js" } }, match: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(?==>)", name: "meta.arrow.js" }, { begin: `(?x) (?:
2
+ (?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)
3
+ )? ((?<![})!\\]])\\s*
4
+ (?=
5
+
6
+ (
7
+ (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
8
+ [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*
9
+ (
10
+ ([)]\\s*:) |
11
+ ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)
12
+ )
13
+ ) |
14
+ (
15
+ [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]
16
+ ) |
17
+ # arrow function possible to detect only with => on same line
18
+ (
19
+ (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
20
+ \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\)
21
+ (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?
22
+ \\s*=>
23
+ )
24
+ )
25
+ )`, beginCaptures: { 1: { name: "storage.modifier.async.js" } }, end: "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))", name: "meta.arrow.js", patterns: [{ include: "#comment" }, { include: "#type-parameters" }, { include: "#function-parameters" }, { include: "#arrow-return-type" }, { include: "#possibly-arrow-return-type" }] }, { begin: "=>", beginCaptures: { 0: { name: "storage.type.function.arrow.js" } }, end: "((?<=\\}|\\S)(?<!=>)|((?!\\{)(?=\\S)))(?!\\/[\\/\\*])", name: "meta.arrow.js", patterns: [{ include: "#single-line-comment-consuming-line-ending" }, { include: "#decl-block" }, { include: "#expression" }] }] }, "arrow-return-type": { begin: "(?<=\\))\\s*(:)", beginCaptures: { 1: { name: "keyword.operator.type.annotation.js" } }, end: "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))", name: "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" }] }, "async-modifier": { match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(async)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", name: "storage.modifier.async.js" }, "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" }] }, "boolean-literal": { patterns: [{ match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", name: "constant.language.boolean.true.js" }, { match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", name: "constant.language.boolean.false.js" }] }, brackets: { patterns: [{ begin: "{", end: "}|(?=\\*/)", patterns: [{ include: "#brackets" }] }, { begin: "\\[", end: "\\]|(?=\\*/)", patterns: [{ include: "#brackets" }] }] }, cast: { patterns: [{ include: "#jsx" }] }, "class-declaration": { 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: "(?<=\\})", name: "meta.class.js", patterns: [{ include: "#class-declaration-or-expression-patterns" }] }, "class-declaration-or-expression-patterns": { patterns: [{ include: "#comment" }, { include: "#class-or-interface-heritage" }, { captures: { 0: { name: "entity.name.type.class.js" } }, match: "[_$[:alpha:]][_$[:alnum:]]*" }, { include: "#type-parameters" }, { include: "#class-or-interface-body" }] }, "class-expression": { begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(class)\\b(?=\\s+|[<{]|\\/[\\/*])", beginCaptures: { 1: { name: "storage.modifier.js" }, 2: { name: "storage.type.class.js" } }, end: "(?<=\\})", name: "meta.class.js", patterns: [{ include: "#class-declaration-or-expression-patterns" }] }, "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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))", 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" }] }, "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" }, { captures: { 1: { name: "entity.name.type.module.js" }, 2: { name: "punctuation.accessor.js" }, 3: { name: "punctuation.accessor.optional.js" } }, match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s*\\??\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\s*)" }, { captures: { 1: { name: "entity.other.inherited-class.js" } }, match: "([_$[:alpha:]][_$[:alnum:]]*)" }, { include: "#expressionPunctuations" }] }, comment: { patterns: [{ begin: "/\\*\\*(?!/)", beginCaptures: { 0: { name: "punctuation.definition.comment.js" } }, end: "\\*/", endCaptures: { 0: { name: "punctuation.definition.comment.js" } }, name: "comment.block.documentation.js", patterns: [{ include: "#docblock" }] }, { 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" } }, name: "comment.block.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" } }, contentName: "comment.line.double-slash.js", end: "(?=$)" }] }, "control-statement": { patterns: [{ include: "#switch-statement" }, { include: "#for-loop" }, { match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", name: "keyword.control.trycatch.js" }, { captures: { 1: { name: "keyword.control.loop.js" }, 2: { name: "entity.name.label.js" } }, match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|goto)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))" }, { match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", name: "keyword.control.loop.js" }, { begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(return)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", beginCaptures: { 0: { name: "keyword.control.flow.js" } }, end: "(?=[;}]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))", patterns: [{ include: "#expression" }] }, { match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", name: "keyword.control.switch.js" }, { include: "#if-statement" }, { match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", name: "keyword.control.conditional.js" }, { match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(with)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", name: "keyword.control.with.js" }, { match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(package)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", name: "keyword.control.js" }, { match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(debugger)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", name: "keyword.other.debugger.js" }] }, "decl-block": { begin: "\\{", beginCaptures: { 0: { name: "punctuation.definition.block.js" } }, end: "\\}", endCaptures: { 0: { name: "punctuation.definition.block.js" } }, name: "meta.block.js", patterns: [{ include: "#statements" }] }, 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" }, { match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(declare|export)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", name: "storage.modifier.js" }] }, decorator: { begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))\\@", beginCaptures: { 0: { name: "punctuation.decorator.js" } }, end: "(?=\\s)", name: "meta.decorator.js", patterns: [{ include: "#expression" }] }, "destructuring-const": { patterns: [{ begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)", end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))", name: "meta.object-binding-pattern-variable.js", patterns: [{ include: "#object-binding-pattern-const" }, { include: "#type-annotation" }, { include: "#comment" }] }, { begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)", end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))", name: "meta.array-binding-pattern-variable.js", patterns: [{ include: "#array-binding-pattern-const" }, { include: "#type-annotation" }, { include: "#comment" }] }] }, "destructuring-parameter": { patterns: [{ 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" } }, name: "meta.parameter.object-binding-pattern.js", patterns: [{ include: "#parameter-object-binding-element" }] }, { 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" } }, name: "meta.paramter.array-binding-pattern.js", patterns: [{ include: "#parameter-binding-element" }, { include: "#punctuation-comma" }] }] }, "destructuring-parameter-rest": { captures: { 1: { name: "keyword.operator.rest.js" }, 2: { name: "variable.parameter.js" } }, match: "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)" }, "destructuring-variable": { patterns: [{ begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)", end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))", name: "meta.object-binding-pattern-variable.js", patterns: [{ include: "#object-binding-pattern" }, { include: "#type-annotation" }, { include: "#comment" }] }, { begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)", end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))", name: "meta.array-binding-pattern-variable.js", patterns: [{ include: "#array-binding-pattern" }, { include: "#type-annotation" }, { include: "#comment" }] }] }, "destructuring-variable-rest": { captures: { 1: { name: "keyword.operator.rest.js" }, 2: { name: "meta.definition.variable.js variable.other.readwrite.js" } }, match: "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)" }, "destructuring-variable-rest-const": { captures: { 1: { name: "keyword.operator.rest.js" }, 2: { name: "meta.definition.variable.js variable.other.constant.js" } }, match: "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)" }, directives: { 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: "(?=$)", name: "comment.line.triple-slash.directive.js", patterns: [{ 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" } }, name: "meta.tag.js", patterns: [{ match: "path|types|no-default-lib|lib|name|resolution-mode", name: "entity.other.attribute-name.directive.js" }, { match: "=", name: "keyword.operator.assignment.js" }, { include: "#string" }] }] }, docblock: { patterns: [{ captures: { 1: { name: "storage.type.class.jsdoc" }, 2: { name: "punctuation.definition.block.tag.jsdoc" }, 3: { name: "constant.language.access-type.jsdoc" } }, match: `(?x)
26
+ ((@)(?:access|api))
27
+ \\s+
28
+ (private|protected|public)
29
+ \\b` }, { 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)
30
+ ((@)author)
31
+ \\s+
32
+ (
33
+ [^@\\s<>*/]
34
+ (?:[^@<>*/]|\\*[^/])*
35
+ )
36
+ (?:
37
+ \\s*
38
+ (<)
39
+ ([^>\\s]+)
40
+ (>)
41
+ )?` }, { 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" } }, match: `(?x)
42
+ ((@)borrows) \\s+
43
+ ((?:[^@\\s*/]|\\*[^/])+)
44
+ \\s+ (as) \\s+
45
+ ((?:[^@\\s*/]|\\*[^/])+)` }, { begin: "((@)example)\\s+", beginCaptures: { 1: { name: "storage.type.class.jsdoc" }, 2: { name: "punctuation.definition.block.tag.jsdoc" } }, end: "(?=@|\\*/)", name: "meta.example.jsdoc", patterns: [{ match: "^\\s\\*\\s+" }, { 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" } }, contentName: "constant.other.description.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" } } }, { captures: { 0: { name: "source.embedded.js" } }, match: "[^\\s@*](?:[^*]|\\*[^/])*" }] }, { captures: { 1: { name: "storage.type.class.jsdoc" }, 2: { name: "punctuation.definition.block.tag.jsdoc" }, 3: { name: "constant.language.symbol-type.jsdoc" } }, 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: "variable.other.link.underline.jsdoc" }, 4: { name: "entity.name.type.instance.jsdoc" } }, match: `(?x)
46
+ ((@)see)
47
+ \\s+
48
+ (?:
49
+
50
+ (
51
+ (?=https?://)
52
+ (?:[^\\s*]|\\*[^/])+
53
+ )
54
+ |
55
+
56
+ (
57
+ (?!
58
+
59
+ https?://
60
+ |
61
+
62
+ (?:\\[[^\\[\\]]*\\])?
63
+ {@(?:link|linkcode|linkplain|tutorial)\\b
64
+ )
65
+
66
+ (?:[^@\\s*/]|\\*[^/])+
67
+ )
68
+ )` }, { captures: { 1: { name: "storage.type.class.jsdoc" }, 2: { name: "punctuation.definition.block.tag.jsdoc" }, 3: { name: "variable.other.jsdoc" } }, match: `(?x)
69
+ ((@)template)
70
+ \\s+
71
+ # One or more valid identifiers
72
+ (
73
+ [A-Za-z_$]
74
+ [\\w$.\\[\\]]*
75
+ (?:
76
+ \\s* , \\s*
77
+ [A-Za-z_$]
78
+ [\\w$.\\[\\]]*
79
+ )*
80
+ )` }, { 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" }, { match: "([A-Za-z_$][\\w$.\\[\\]]*)", name: "variable.other.jsdoc" }] }, { captures: { 1: { name: "storage.type.class.jsdoc" }, 2: { name: "punctuation.definition.block.tag.jsdoc" }, 3: { name: "variable.other.jsdoc" } }, match: `(?x)
81
+ (
82
+ (@)
83
+ (?:arg|argument|const|constant|member|namespace|param|var)
84
+ )
85
+ \\s+
86
+ (
87
+ [A-Za-z_$]
88
+ [\\w$.\\[\\]]*
89
+ )` }, { 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" }, { match: "(?:[^@\\s*/]|\\*[^/])+", name: "entity.name.type.instance.jsdoc" }] }, { 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" }, { match: "([A-Za-z_$][\\w$.\\[\\]]*)", name: "variable.other.jsdoc" }, { 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" } }, match: `(?x)
90
+ (\\[)\\s*
91
+ [\\w$]+
92
+ (?:
93
+ (?:\\[\\])?
94
+ \\.
95
+ [\\w$]+
96
+ )*
97
+ (?:
98
+ \\s*
99
+ (=)
100
+ \\s*
101
+ (
102
+
103
+ (?>
104
+ "(?:(?:\\*(?!/))|(?:\\\\(?!"))|[^*\\\\])*?" |
105
+ '(?:(?:\\*(?!/))|(?:\\\\(?!'))|[^*\\\\])*?' |
106
+ \\[ (?:(?:\\*(?!/))|[^*])*? \\] |
107
+ (?:(?:\\*(?!/))|\\s(?!\\s*\\])|\\[.*?(?:\\]|(?=\\*/))|[^*\\s\\[\\]])*
108
+ )*
109
+ )
110
+ )?
111
+ \\s*(?:(\\])((?:[^*\\s]|\\*[^\\s/])+)?|(?=\\*/))`, name: "variable.other.jsdoc" }] }, { begin: `(?x)
112
+ (
113
+ (@)
114
+ (?:define|enum|exception|export|extends|lends|implements|modifies
115
+ |namespace|private|protected|returns?|satisfies|suppress|this|throws|type
116
+ |yields?)
117
+ )
118
+ \\s+(?={)`, beginCaptures: { 1: { name: "storage.type.class.jsdoc" }, 2: { name: "punctuation.definition.block.tag.jsdoc" } }, end: "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])", patterns: [{ include: "#jsdoctype" }] }, { captures: { 1: { name: "storage.type.class.jsdoc" }, 2: { name: "punctuation.definition.block.tag.jsdoc" }, 3: { name: "entity.name.type.instance.jsdoc" } }, match: `(?x)
119
+ (
120
+ (@)
121
+ (?:alias|augments|callback|constructs|emits|event|fires|exports?
122
+ |extends|external|function|func|host|lends|listens|interface|memberof!?
123
+ |method|module|mixes|mixin|name|requires|see|this|typedef|uses)
124
+ )
125
+ \\s+
126
+ (
127
+ (?:
128
+ [^{}@\\s*] | \\*[^/]
129
+ )+
130
+ )` }, { 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" } }, contentName: "variable.other.jsdoc", end: "(\\3)|(?=$|\\*/)", endCaptures: { 0: { name: "variable.other.jsdoc" }, 1: { name: "punctuation.definition.string.end.jsdoc" } } }, { captures: { 1: { name: "storage.type.class.jsdoc" }, 2: { name: "punctuation.definition.block.tag.jsdoc" }, 3: { name: "variable.other.jsdoc" } }, match: "((@)(?:default(?:value)?|license|tutorial|variation|version))\\s+([^\\s*]+)" }, { captures: { 1: { name: "punctuation.definition.block.tag.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", name: "storage.type.class.jsdoc" }, { include: "#inline-tags" }, { captures: { 1: { name: "storage.type.class.jsdoc" }, 2: { name: "punctuation.definition.block.tag.jsdoc" } }, match: "((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\s+)" }] }, "enum-declaration": { 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: "(?<=\\})", name: "meta.enum.declaration.js", 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" }] }] }, "export-declaration": { patterns: [{ 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" } }, match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)\\s+(as)\\s+(namespace)\\s+([_$[:alpha:]][_$[:alnum:]]*)" }, { 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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))", name: "meta.export.default.js", patterns: [{ include: "#interface-declaration" }, { include: "#expression" }] }, { begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?\\b(?!(\\$)|(\\s*:))((?=\\s*[\\{*])|((?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s|,))(?!\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))", beginCaptures: { 1: { name: "keyword.control.export.js" }, 2: { name: "keyword.control.type.js" } }, end: "(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))", name: "meta.export.js", patterns: [{ include: "#import-export-declaration" }] }] }, expression: { patterns: [{ include: "#expressionWithoutIdentifiers" }, { include: "#identifiers" }, { include: "#expressionPunctuations" }] }, "expression-inside-possibly-arrow-parens": { patterns: [{ include: "#expressionWithoutIdentifiers" }, { include: "#comment" }, { include: "#string" }, { include: "#decorator" }, { include: "#destructuring-parameter" }, { captures: { 1: { name: "storage.modifier.js" } }, match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\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:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*
131
+ # function assignment |
132
+ (=\\s*(
133
+ ((async\\s+)?(
134
+ (function\\s*[(<*]) |
135
+ (function\\s+) |
136
+ ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)
137
+ )) |
138
+ ((async\\s*)?(
139
+ ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |
140
+
141
+ (
142
+ (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
143
+ [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*
144
+ (
145
+ ([)]\\s*:) |
146
+ ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)
147
+ )
148
+ ) |
149
+ (
150
+ [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]
151
+ ) |
152
+ # arrow function possible to detect only with => on same line
153
+ (
154
+ (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
155
+ \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\)
156
+ (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?
157
+ \\s*=>
158
+ )
159
+ ))
160
+ )) |
161
+ # typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>
162
+ (:\\s*(
163
+ (<) |
164
+ ([(]\\s*(
165
+ ([)]) |
166
+ (\\.\\.\\.) |
167
+ ([_$[:alnum:]]+\\s*(
168
+ ([:,?=])|
169
+ ([)]\\s*=>)
170
+ ))
171
+ ))
172
+ )) |
173
+ (:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |
174
+ (:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |
175
+ (:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(
176
+ ((async\\s+)?(
177
+ (function\\s*[(<*]) |
178
+ (function\\s+) |
179
+ ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)
180
+ )) |
181
+ ((async\\s*)?(
182
+ ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |
183
+
184
+ (
185
+ (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
186
+ [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*
187
+ (
188
+ ([)]\\s*:) |
189
+ ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)
190
+ )
191
+ ) |
192
+ (
193
+ [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]
194
+ ) |
195
+ # arrow function possible to detect only with => on same line
196
+ (
197
+ (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
198
+ \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\)
199
+ (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?
200
+ \\s*=>
201
+ )
202
+ ))
203
+ )))` }, { 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" } }, match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*[:,]|$)" }, { include: "#type-annotation" }, { include: "#variable-initializer" }, { match: ",", name: "punctuation.separator.parameter.js" }, { include: "#identifiers" }, { include: "#expressionPunctuations" }] }, "expression-operators": { patterns: [{ match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(await)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", name: "keyword.control.flow.js" }, { begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?=\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*\\*)", beginCaptures: { 1: { name: "keyword.control.flow.js" } }, end: "\\*", endCaptures: { 0: { name: "keyword.generator.asterisk.js" } }, patterns: [{ include: "#comment" }] }, { captures: { 1: { name: "keyword.control.flow.js" }, 2: { name: "keyword.generator.asterisk.js" } }, match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s*(\\*))?" }, { match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))delete(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", name: "keyword.operator.expression.delete.js" }, { match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))in(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()", name: "keyword.operator.expression.in.js" }, { match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))of(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()", name: "keyword.operator.expression.of.js" }, { match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", name: "keyword.operator.expression.instanceof.js" }, { match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", name: "keyword.operator.new.js" }, { include: "#typeof-operator" }, { match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))void(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", name: "keyword.operator.expression.void.js" }, { captures: { 1: { name: "keyword.control.as.js" }, 2: { name: "storage.modifier.js" } }, match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*($|[;,:})\\]]))" }, { 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" }] }, { match: "\\.\\.\\.", 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" }, { captures: { 1: { name: "keyword.operator.logical.js" }, 2: { name: "keyword.operator.assignment.compound.js" }, 3: { name: "keyword.operator.arithmetic.js" } }, match: "(?<=[_$[:alnum:]])(\\!)\\s*(?:(/=)|(?:(/)(?![/*])))" }, { match: "\\!|&&|\\|\\||\\?\\?", 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" }, { begin: "(?<=[_$[:alnum:])\\]])\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)+(?:(/=)|(?:(/)(?![/*]))))", end: "(?:(/=)|(?:(/)(?!\\*([^\\*]|(\\*[^\\/]))*\\*\\/)))", endCaptures: { 1: { name: "keyword.operator.assignment.compound.js" }, 2: { name: "keyword.operator.arithmetic.js" } }, patterns: [{ include: "#comment" }] }, { captures: { 1: { name: "keyword.operator.assignment.compound.js" }, 2: { name: "keyword.operator.arithmetic.js" } }, match: "(?<=[_$[:alnum:])\\]])\\s*(?:(/=)|(?:(/)(?![/*])))" }] }, expressionPunctuations: { patterns: [{ include: "#punctuation-comma" }, { include: "#punctuation-accessor" }] }, 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" }] }, "field-declaration": { 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(?!\\$))|((?<!\\$)(?:
204
+ (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
205
+ (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|
206
+ (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
207
+ (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
208
+ (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|
209
+ (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|
210
+ (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|
211
+ (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))
212
+ )(?!\\$))|(\\#?[_$[: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(?!\\$))|((?<!\\$)(?:
213
+ (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
214
+ (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|
215
+ (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
216
+ (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
217
+ (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|
218
+ (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|
219
+ (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|
220
+ (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))
221
+ )(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|$))))|(?<=\\})`, name: "meta.field.declaration.js", patterns: [{ include: "#variable-initializer" }, { include: "#type-annotation" }, { include: "#string" }, { include: "#array-literal" }, { include: "#numeric-literal" }, { include: "#comment" }, { captures: { 1: { name: "meta.definition.property.js entity.name.function.js" }, 2: { name: "keyword.operator.optional.js" }, 3: { name: "keyword.operator.definiteassignment.js" } }, match: `(?x)(\\#?[_$[:alpha:]][_$[:alnum:]]*)(?:(\\?)|(\\!))?(?=\\s*\\s*
222
+ # function assignment |
223
+ (=\\s*(
224
+ ((async\\s+)?(
225
+ (function\\s*[(<*]) |
226
+ (function\\s+) |
227
+ ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)
228
+ )) |
229
+ ((async\\s*)?(
230
+ ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |
231
+
232
+ (
233
+ (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
234
+ [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*
235
+ (
236
+ ([)]\\s*:) |
237
+ ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)
238
+ )
239
+ ) |
240
+ (
241
+ [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]
242
+ ) |
243
+ # arrow function possible to detect only with => on same line
244
+ (
245
+ (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
246
+ \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\)
247
+ (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?
248
+ \\s*=>
249
+ )
250
+ ))
251
+ )) |
252
+ # typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>
253
+ (:\\s*(
254
+ (<) |
255
+ ([(]\\s*(
256
+ ([)]) |
257
+ (\\.\\.\\.) |
258
+ ([_$[:alnum:]]+\\s*(
259
+ ([:,?=])|
260
+ ([)]\\s*=>)
261
+ ))
262
+ ))
263
+ )) |
264
+ (:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |
265
+ (:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |
266
+ (:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(
267
+ ((async\\s+)?(
268
+ (function\\s*[(<*]) |
269
+ (function\\s+) |
270
+ ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)
271
+ )) |
272
+ ((async\\s*)?(
273
+ ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |
274
+
275
+ (
276
+ (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
277
+ [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*
278
+ (
279
+ ([)]\\s*:) |
280
+ ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)
281
+ )
282
+ ) |
283
+ (
284
+ [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]
285
+ ) |
286
+ # arrow function possible to detect only with => on same line
287
+ (
288
+ (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
289
+ \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\)
290
+ (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?
291
+ \\s*=>
292
+ )
293
+ ))
294
+ )))` }, { match: "\\#?[_$[:alpha:]][_$[:alnum:]]*", name: "meta.definition.property.js variable.object.property.js" }, { match: "\\?", name: "keyword.operator.optional.js" }, { match: "\\!", name: "keyword.operator.definiteassignment.js" }] }, "for-loop": { begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))for(?=((\\s+|(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*))await)?\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)?(\\())", beginCaptures: { 0: { name: "keyword.control.loop.js" } }, end: "(?<=\\))", patterns: [{ include: "#comment" }, { match: "await", name: "keyword.control.loop.js" }, { 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" }] }] }, "function-body": { patterns: [{ include: "#comment" }, { include: "#type-parameters" }, { include: "#function-parameters" }, { include: "#return-type" }, { include: "#type-function-return-type" }, { include: "#decl-block" }, { match: "\\*", name: "keyword.generator.asterisk.js" }] }, "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: [{ 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*)?\\())", name: "meta.function-call.js", 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: [{ begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))", end: "(?=(<\\s*[\\{\\[\\(]\\s*$))", name: "meta.function-call.js", patterns: [{ include: "#function-call-target" }] }, { include: "#comment" }, { include: "#function-call-optionals" }, { include: "#type-arguments" }] }] }, "function-call-optionals": { patterns: [{ match: "\\?\\.", name: "meta.function-call.js punctuation.accessor.optional.js" }, { match: "\\!", name: "meta.function-call.js keyword.operator.definiteassignment.js" }] }, "function-call-target": { patterns: [{ include: "#support-function-call-identifiers" }, { match: "(\\#?[_$[:alpha:]][_$[:alnum:]]*)", name: "entity.name.function.js" }] }, "function-declaration": { 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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))|(?<=\\})", name: "meta.function.js", patterns: [{ include: "#function-name" }, { include: "#function-body" }] }, "function-expression": { 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: "(?=;)|(?<=\\})", name: "meta.function.expression.js", patterns: [{ include: "#function-name" }, { include: "#single-line-comment-consuming-line-ending" }, { include: "#function-body" }] }, "function-name": { match: "[_$[:alpha:]][_$[:alnum:]]*", name: "meta.definition.function.js entity.name.function.js" }, "function-parameters": { begin: "\\(", beginCaptures: { 0: { name: "punctuation.definition.parameters.begin.js" } }, end: "\\)", endCaptures: { 0: { name: "punctuation.definition.parameters.end.js" } }, name: "meta.parameters.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" }, { match: ",", name: "punctuation.separator.parameter.js" }] }, identifiers: { patterns: [{ include: "#object-identifiers" }, { captures: { 1: { name: "punctuation.accessor.js" }, 2: { name: "punctuation.accessor.optional.js" }, 3: { name: "entity.name.function.js" } }, match: `(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(
295
+ ((async\\s+)?(
296
+ (function\\s*[(<*]) |
297
+ (function\\s+) |
298
+ ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)
299
+ )) |
300
+ ((async\\s*)?(
301
+ ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |
302
+
303
+ (
304
+ (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
305
+ [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*
306
+ (
307
+ ([)]\\s*:) |
308
+ ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)
309
+ )
310
+ ) |
311
+ (
312
+ [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]
313
+ ) |
314
+ # arrow function possible to detect only with => on same line
315
+ (
316
+ (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
317
+ \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\)
318
+ (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?
319
+ \\s*=>
320
+ )
321
+ ))
322
+ ))` }, { captures: { 1: { name: "punctuation.accessor.js" }, 2: { name: "punctuation.accessor.optional.js" }, 3: { name: "variable.other.constant.property.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.property.js" } }, match: "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)" }, { match: "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])", name: "variable.other.constant.js" }, { match: "[_$[:alpha:]][_$[:alnum:]]*", name: "variable.other.readwrite.js" }] }, "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" }] }, { 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" } }, name: "string.regexp.js", patterns: [{ include: "#regexp" }] }, { include: "#statements" }] }] }, "import-declaration": { 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)(?=;|$|^)", name: "meta.import.js", 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" }] }, "import-equals-declaration": { patterns: [{ 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" } }, name: "meta.import-equals.external.js", patterns: [{ include: "#comment" }, { include: "#string" }] }, { 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: "(?=;|$|^)", name: "meta.import-equals.internal.js", patterns: [{ include: "#single-line-comment-consuming-line-ending" }, { include: "#comment" }, { captures: { 1: { name: "entity.name.type.module.js" }, 2: { name: "punctuation.accessor.js" }, 3: { name: "punctuation.accessor.optional.js" } }, match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))" }, { match: "([_$[:alpha:]][_$[:alnum:]]*)", name: "variable.other.readwrite.js" }] }] }, "import-export-assert-clause": { begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(with)|(assert))\\s*(\\{)", beginCaptures: { 1: { name: "keyword.control.with.js" }, 2: { name: "keyword.control.assert.js" }, 3: { name: "punctuation.definition.block.js" } }, end: "\\}", endCaptures: { 0: { name: "punctuation.definition.block.js" } }, patterns: [{ include: "#comment" }, { include: "#string" }, { match: "(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)", name: "meta.object-literal.key.js" }, { match: ":", name: "punctuation.separator.key-value.js" }] }, "import-export-block": { begin: "\\{", beginCaptures: { 0: { name: "punctuation.definition.block.js" } }, end: "\\}", endCaptures: { 0: { name: "punctuation.definition.block.js" } }, name: "meta.block.js", patterns: [{ include: "#import-export-clause" }] }, "import-export-clause": { patterns: [{ include: "#comment" }, { 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" } }, match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(?:(\\btype)\\s+)?(?:(\\bdefault)|(\\*)|(\\b[_$[:alpha:]][_$[:alnum:]]*)))\\s+(as)\\s+(?:(default(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|([_$[:alpha:]][_$[:alnum:]]*))" }, { include: "#punctuation-comma" }, { match: "\\*", name: "constant.language.import-export-all.js" }, { match: "\\b(default)\\b", name: "keyword.control.default.js" }, { captures: { 1: { name: "keyword.control.type.js" }, 2: { name: "variable.other.readwrite.alias.js" } }, match: "(?:(\\btype)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)" }] }, "import-export-declaration": { patterns: [{ include: "#comment" }, { include: "#string" }, { include: "#import-export-block" }, { match: "\\bfrom\\b", name: "keyword.control.from.js" }, { include: "#import-export-assert-clause" }, { include: "#import-export-clause" }] }, "indexer-declaration": { 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" } }, name: "meta.indexer.declaration.js", patterns: [{ include: "#type-annotation" }] }, "indexer-mapped-type-declaration": { 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" } }, name: "meta.indexer.mappedtype.declaration.js", patterns: [{ captures: { 1: { name: "keyword.control.as.js" } }, match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+" }, { include: "#type" }] }, "inline-tags": { patterns: [{ captures: { 1: { name: "punctuation.definition.bracket.square.begin.jsdoc" }, 2: { name: "punctuation.definition.bracket.square.end.jsdoc" } }, match: "(\\[)[^\\]]+(\\])(?={@(?:link|linkcode|linkplain|tutorial))", name: "constant.other.description.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" } }, name: "entity.name.type.instance.jsdoc", patterns: [{ captures: { 1: { name: "variable.other.link.underline.jsdoc" }, 2: { name: "punctuation.separator.pipe.jsdoc" } }, match: "\\G((?=https?://)(?:[^|}\\s*]|\\*[/])+)(\\|)?" }, { captures: { 1: { name: "variable.other.description.jsdoc" }, 2: { name: "punctuation.separator.pipe.jsdoc" } }, match: "\\G((?:[^{}@\\s|*]|\\*[^/])+)(\\|)?" }] }] }, "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" }] }, "interface-declaration": { 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: "(?<=\\})", name: "meta.interface.js", patterns: [{ include: "#comment" }, { include: "#class-or-interface-heritage" }, { captures: { 0: { name: "entity.name.type.interface.js" } }, match: "[_$[:alpha:]][_$[:alnum:]]*" }, { include: "#type-parameters" }, { include: "#class-or-interface-body" }] }, jsdoctype: { patterns: [{ begin: "\\G({)", beginCaptures: { 0: { name: "entity.name.type.instance.jsdoc" }, 1: { name: "punctuation.definition.bracket.curly.begin.jsdoc" } }, contentName: "entity.name.type.instance.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-children": { patterns: [{ include: "#jsx-tag-without-attributes" }, { include: "#jsx-tag" }, { include: "#jsx-evaluated-code" }, { include: "#jsx-entities" }] }, "jsx-entities": { patterns: [{ captures: { 1: { name: "punctuation.definition.entity.js" }, 3: { name: "punctuation.definition.entity.js" } }, match: "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)", name: "constant.character.entity.js" }] }, "jsx-evaluated-code": { begin: "\\{", beginCaptures: { 0: { name: "punctuation.section.embedded.begin.js" } }, contentName: "meta.embedded.expression.js", end: "\\}", endCaptures: { 0: { name: "punctuation.section.embedded.end.js" } }, patterns: [{ include: "#expression" }] }, "jsx-string-double-quoted": { begin: '"', beginCaptures: { 0: { name: "punctuation.definition.string.begin.js" } }, end: '"', endCaptures: { 0: { name: "punctuation.definition.string.end.js" } }, name: "string.quoted.double.js", patterns: [{ include: "#jsx-entities" }] }, "jsx-string-single-quoted": { begin: "'", beginCaptures: { 0: { name: "punctuation.definition.string.begin.js" } }, end: "'", endCaptures: { 0: { name: "punctuation.definition.string.end.js" } }, name: "string.quoted.single.js", patterns: [{ include: "#jsx-entities" }] }, "jsx-tag": { 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" } }, name: "meta.tag.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" } }, contentName: "meta.jsx.children.js", end: "(?=</)", patterns: [{ include: "#jsx-children" }] }] }, "jsx-tag-attribute-assignment": { match: `=(?=\\s*(?:'|"|{|/\\*|//|\\n))`, name: "keyword.operator.assignment.js" }, "jsx-tag-attribute-name": { captures: { 1: { name: "entity.other.attribute-name.namespace.js" }, 2: { name: "punctuation.separator.namespace.js" }, 3: { name: "entity.other.attribute-name.js" } }, match: `(?x)
323
+ \\s*
324
+ (?:([_$[:alpha:]][-_$[:alnum:].]*)(:))?
325
+ ([_$[:alpha:]][-_$[:alnum:]]*)
326
+ (?=\\s|=|/?>|/\\*|//)` }, "jsx-tag-attributes": { begin: "\\s+", end: "(?=[/]?>)", name: "meta.tag.attributes.js", 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-attributes-illegal": { match: "\\S+", name: "invalid.illegal.attribute.js" }, "jsx-tag-in-expression": { begin: `(?x)
327
+ (?<!\\+\\+|--)(?<=[({\\[,?=>:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s*
328
+ (?!<\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s+[^=>])|,))
329
+ (?=(<)\\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-without-attributes": { begin: "(<)\\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" } }, contentName: "meta.jsx.children.js", end: "(</)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>)", 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" } }, name: "meta.tag.without-attributes.js", patterns: [{ include: "#jsx-children" }] }, "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" }] }, 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" }] }, { captures: { 1: { name: "entity.name.label.js" }, 2: { name: "punctuation.separator.label.js" } }, match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)" }] }, 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" }] }, "method-declaration": { patterns: [{ 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: "(?=\\}|;|,|$)|(?<=\\})", name: "meta.method.declaration.js", patterns: [{ include: "#method-declaration-name" }, { include: "#function-body" }] }, { 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: "(?=\\}|;|,|$)|(?<=\\})", name: "meta.method.declaration.js", patterns: [{ include: "#method-declaration-name" }, { include: "#function-body" }] }, { 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(?!\\$))|((?<!\\$)(?:
330
+ (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
331
+ (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|
332
+ (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
333
+ (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
334
+ (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|
335
+ (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|
336
+ (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|
337
+ (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))
338
+ )(?!\\$))|([_$[: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: "(?=\\}|;|,|$)|(?<=\\})", name: "meta.method.declaration.js", patterns: [{ include: "#method-declaration-name" }, { include: "#function-body" }] }] }, "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(?!\\$))|((?<!\\$)(?:
339
+ (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
340
+ (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|
341
+ (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
342
+ (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
343
+ (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|
344
+ (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|
345
+ (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|
346
+ (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))
347
+ )(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??)\\s*[\\(\\<])`, end: "(?=\\(|\\<)", patterns: [{ include: "#string" }, { include: "#array-literal" }, { include: "#numeric-literal" }, { match: "[_$[:alpha:]][_$[:alnum:]]*", name: "meta.definition.method.js entity.name.function.js" }, { match: "\\?", name: "keyword.operator.optional.js" }] }, "namespace-declaration": { 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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))", name: "meta.namespace.declaration.js", patterns: [{ include: "#comment" }, { include: "#string" }, { match: "([_$[:alpha:]][_$[:alnum:]]*)", name: "entity.name.type.module.js" }, { include: "#punctuation-accessor" }, { include: "#decl-block" }] }, "new-expr": { begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", beginCaptures: { 1: { name: "keyword.operator.new.js" } }, end: "(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))", name: "new.expr.js", patterns: [{ include: "#expression" }] }, "null-literal": { match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))null(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", name: "constant.language.null.js" }, "numeric-literal": { patterns: [{ captures: { 1: { name: "storage.type.numeric.bigint.js" } }, match: "\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$)", name: "constant.numeric.hex.js" }, { captures: { 1: { name: "storage.type.numeric.bigint.js" } }, match: "\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$)", name: "constant.numeric.binary.js" }, { captures: { 1: { name: "storage.type.numeric.bigint.js" } }, match: "\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$)", name: "constant.numeric.octal.js" }, { 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" } }, match: `(?x)
348
+ (?<!\\$)(?:
349
+ (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
350
+ (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|
351
+ (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
352
+ (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
353
+ (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|
354
+ (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|
355
+ (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|
356
+ (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))
357
+ )(?!\\$)` }] }, "numericConstant-literal": { patterns: [{ match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))NaN(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", name: "constant.language.nan.js" }, { match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Infinity(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", name: "constant.language.infinity.js" }] }, "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(?!\\$))|((?<!\\$)(?:
358
+ (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
359
+ (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|
360
+ (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
361
+ (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
362
+ (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|
363
+ (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|
364
+ (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|
365
+ (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))
366
+ )(?!\\$))|([_$[: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(?!\\$))|((?<!\\$)(?:
367
+ (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
368
+ (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|
369
+ (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
370
+ (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
371
+ (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|
372
+ (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|
373
+ (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|
374
+ (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))
375
+ )(?!\\$))|([_$[: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(?!\\$))|((?<!\\$)(?:
376
+ (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
377
+ (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|
378
+ (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
379
+ (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
380
+ (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|
381
+ (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|
382
+ (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|
383
+ (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))
384
+ )(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))`, end: "(:)", endCaptures: { 0: { name: "punctuation.destructuring.js" } }, patterns: [{ include: "#string" }, { include: "#array-literal" }, { include: "#numeric-literal" }, { match: "([_$[:alpha:]][_$[:alnum:]]*)", name: "variable.object.property.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" }] }, "object-identifiers": { patterns: [{ match: "([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\\??\\.\\s*prototype\\b(?!\\$))", name: "support.class.js" }, { 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)(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?:
385
+ (\\#?[[:upper:]][_$[:digit:][:upper:]]*) |
386
+ (\\#?[_$[:alpha:]][_$[:alnum:]]*)
387
+ )(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)` }, { captures: { 1: { name: "variable.other.constant.object.js" }, 2: { name: "variable.other.object.js" } }, match: `(?x)(?:
388
+ ([[:upper:]][_$[:digit:][:upper:]]*) |
389
+ ([_$[:alpha:]][_$[:alnum:]]*)
390
+ )(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)` }] }, "object-literal": { begin: "\\{", beginCaptures: { 0: { name: "punctuation.definition.block.js" } }, end: "\\}", endCaptures: { 0: { name: "punctuation.definition.block.js" } }, name: "meta.objectliteral.js", patterns: [{ include: "#object-member" }] }, "object-literal-method-declaration": { 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(?!\\$))|((?<!\\$)(?:
391
+ (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
392
+ (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|
393
+ (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
394
+ (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
395
+ (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|
396
+ (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|
397
+ (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|
398
+ (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))
399
+ )(?!\\$))|([_$[: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: "(?=\\}|;|,)|(?<=\\})", name: "meta.method.declaration.js", 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(?!\\$))|((?<!\\$)(?:
400
+ (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
401
+ (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|
402
+ (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
403
+ (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
404
+ (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|
405
+ (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|
406
+ (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|
407
+ (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))
408
+ )(?!\\$))|([_$[: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" }] }] }, "object-member": { patterns: [{ include: "#comment" }, { include: "#object-literal-method-declaration" }, { begin: "(?=\\[)", end: "(?=:)|((?<=[\\]])(?=\\s*[\\(\\<]))", name: "meta.object.member.js meta.object-literal.key.js", patterns: [{ include: "#comment" }, { include: "#array-literal" }] }, { begin: "(?=[\\'\\\"\\`])", end: "(?=:)|((?<=[\\'\\\"\\`])(?=((\\s*[\\(\\<,}])|(\\s+(as|satisifies)\\s+))))", name: "meta.object.member.js meta.object-literal.key.js", patterns: [{ include: "#comment" }, { include: "#string" }] }, { 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(?!\\$))|((?<!\\$)(?:
409
+ (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
410
+ (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|
411
+ (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
412
+ (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
413
+ (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|
414
+ (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|
415
+ (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|
416
+ (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))
417
+ )(?!\\$)))`, end: "(?=:)|(?=\\s*([\\(\\<,}])|(\\s+as|satisifies\\s+))", name: "meta.object.member.js meta.object-literal.key.js", patterns: [{ include: "#comment" }, { include: "#numeric-literal" }] }, { begin: "(?<=[\\]\\'\\\"\\`])(?=\\s*[\\(\\<])", end: "(?=\\}|;|,)|(?<=\\})", name: "meta.method.declaration.js", patterns: [{ include: "#function-body" }] }, { captures: { 0: { name: "meta.object-literal.key.js" }, 1: { name: "constant.numeric.decimal.js" } }, match: "(?![_$[:alpha:]])([[:digit:]]+)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)", name: "meta.object.member.js" }, { captures: { 0: { name: "meta.object-literal.key.js" }, 1: { name: "entity.name.function.js" } }, match: `(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/)*\\s*(
418
+ ((async\\s+)?(
419
+ (function\\s*[(<*]) |
420
+ (function\\s+) |
421
+ ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)
422
+ )) |
423
+ ((async\\s*)?(
424
+ ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |
425
+
426
+ (
427
+ (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
428
+ [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*
429
+ (
430
+ ([)]\\s*:) |
431
+ ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)
432
+ )
433
+ ) |
434
+ (
435
+ [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]
436
+ ) |
437
+ # arrow function possible to detect only with => on same line
438
+ (
439
+ (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
440
+ \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\)
441
+ (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?
442
+ \\s*=>
443
+ )
444
+ ))
445
+ )))`, name: "meta.object.member.js" }, { captures: { 0: { name: "meta.object-literal.key.js" } }, match: "(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)", name: "meta.object.member.js" }, { begin: "\\.\\.\\.", beginCaptures: { 0: { name: "keyword.operator.spread.js" } }, end: "(?=,|\\})", name: "meta.object.member.js", patterns: [{ include: "#expression" }] }, { captures: { 1: { name: "variable.other.readwrite.js" } }, match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$|\\/\\/|\\/\\*)", name: "meta.object.member.js" }, { captures: { 1: { name: "keyword.control.as.js" }, 2: { name: "storage.modifier.js" } }, match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*([,}]|$))", 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+))", name: "meta.object.member.js", patterns: [{ include: "#type" }] }, { begin: "(?=[_$[:alpha:]][_$[:alnum:]]*\\s*=)", end: "(?=,|\\}|$|\\/\\/|\\/\\*)", name: "meta.object.member.js", patterns: [{ include: "#expression" }] }, { begin: ":", beginCaptures: { 0: { name: "meta.object-literal.key.js punctuation.separator.key-value.js" } }, end: "(?=,|\\})", name: "meta.object.member.js", 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" }] }, "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" }] }, "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" }] }, "parameter-name": { patterns: [{ captures: { 1: { name: "storage.modifier.js" } }, match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\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:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*
446
+ # function assignment |
447
+ (=\\s*(
448
+ ((async\\s+)?(
449
+ (function\\s*[(<*]) |
450
+ (function\\s+) |
451
+ ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)
452
+ )) |
453
+ ((async\\s*)?(
454
+ ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |
455
+
456
+ (
457
+ (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
458
+ [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*
459
+ (
460
+ ([)]\\s*:) |
461
+ ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)
462
+ )
463
+ ) |
464
+ (
465
+ [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]
466
+ ) |
467
+ # arrow function possible to detect only with => on same line
468
+ (
469
+ (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
470
+ \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\)
471
+ (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?
472
+ \\s*=>
473
+ )
474
+ ))
475
+ )) |
476
+ # typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>
477
+ (:\\s*(
478
+ (<) |
479
+ ([(]\\s*(
480
+ ([)]) |
481
+ (\\.\\.\\.) |
482
+ ([_$[:alnum:]]+\\s*(
483
+ ([:,?=])|
484
+ ([)]\\s*=>)
485
+ ))
486
+ ))
487
+ )) |
488
+ (:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |
489
+ (:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |
490
+ (:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(
491
+ ((async\\s+)?(
492
+ (function\\s*[(<*]) |
493
+ (function\\s+) |
494
+ ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)
495
+ )) |
496
+ ((async\\s*)?(
497
+ ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |
498
+
499
+ (
500
+ (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
501
+ [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*
502
+ (
503
+ ([)]\\s*:) |
504
+ ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)
505
+ )
506
+ ) |
507
+ (
508
+ [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]
509
+ ) |
510
+ # arrow function possible to detect only with => on same line
511
+ (
512
+ (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
513
+ \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\)
514
+ (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?
515
+ \\s*=>
516
+ )
517
+ ))
518
+ )))` }, { 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" } }, match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)" }] }, "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(?!\\$))|((?<!\\$)(?:
519
+ (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
520
+ (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|
521
+ (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
522
+ (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|
523
+ (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|
524
+ (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|
525
+ (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|
526
+ (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))
527
+ )(?!\\$))|([_$[: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-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-type-annotation": { patterns: [{ begin: "(:)", beginCaptures: { 1: { name: "keyword.operator.type.annotation.js" } }, end: "(?=[,)])|(?==[^>])", name: "meta.type.annotation.js", patterns: [{ include: "#type" }] }] }, "paren-expression": { begin: "\\(", beginCaptures: { 0: { name: "meta.brace.round.js" } }, end: "\\)", endCaptures: { 0: { name: "meta.brace.round.js" } }, patterns: [{ include: "#expression" }] }, "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" }] }] }, "possibly-arrow-return-type": { begin: "(?<=\\)|^)\\s*(:)(?=\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*=>)", beginCaptures: { 1: { name: "meta.arrow.js meta.return.type.arrow.js keyword.operator.type.annotation.js" } }, contentName: "meta.arrow.js meta.return.type.arrow.js", end: "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))", patterns: [{ include: "#arrow-return-type-body" }] }, "property-accessor": { match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(accessor|get|set)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", name: "storage.type.property.js" }, "punctuation-accessor": { captures: { 1: { name: "punctuation.accessor.js" }, 2: { name: "punctuation.accessor.optional.js" } }, match: "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))" }, "punctuation-comma": { match: ",", name: "punctuation.separator.comma.js" }, "punctuation-semicolon": { match: ";", name: "punctuation.terminator.statement.js" }, "qstring-double": { 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" } }, name: "string.quoted.double.js", patterns: [{ include: "#string-character-escape" }] }, "qstring-single": { 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" } }, name: "string.quoted.single.js", patterns: [{ include: "#string-character-escape" }] }, regex: { patterns: [{ 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" } }, name: "string.regexp.js", patterns: [{ include: "#regexp" }] }, { 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" } }, name: "string.regexp.js", patterns: [{ include: "#regexp" }] }] }, "regex-character-class": { patterns: [{ match: "\\\\[wWsSdDtrnvf]|\\.", name: "constant.other.character-class.regexp" }, { match: "\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})", name: "constant.character.numeric.regexp" }, { match: "\\\\c[A-Z]", name: "constant.character.control.regexp" }, { match: "\\\\.", name: "constant.character.escape.backslash.regexp" }] }, regexp: { patterns: [{ match: "\\\\[bB]|\\^|\\$", name: "keyword.control.anchor.regexp" }, { captures: { 0: { name: "keyword.other.back-reference.regexp" }, 1: { name: "variable.other.regexp" } }, match: "\\\\[1-9]\\d*|\\\\k<([a-zA-Z_$][\\w$]*)>" }, { match: "[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??", name: "keyword.operator.quantifier.regexp" }, { match: "\\|", name: "keyword.operator.or.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" } }, name: "meta.group.assertion.regexp", patterns: [{ include: "#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" } }, name: "meta.group.regexp", patterns: [{ include: "#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" } }, name: "constant.other.character-class.set.regexp", patterns: [{ 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" } }, 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])|(\\\\.))", name: "constant.other.character-class.range.regexp" }, { include: "#regex-character-class" }] }, { include: "#regex-character-class" }] }, "return-type": { patterns: [{ begin: "(?<=\\))\\s*(:)(?=\\s*\\S)", beginCaptures: { 1: { name: "keyword.operator.type.annotation.js" } }, end: "(?<![:|&])(?=$|^|[{};,]|//)", name: "meta.return.type.js", patterns: [{ include: "#return-type-core" }] }, { begin: "(?<=\\))\\s*(:)", beginCaptures: { 1: { name: "keyword.operator.type.annotation.js" } }, end: "(?<![:|&])((?=[{};,]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))", name: "meta.return.type.js", patterns: [{ include: "#return-type-core" }] }] }, "return-type-core": { patterns: [{ include: "#comment" }, { begin: "(?<=[:|&])(?=\\s*\\{)", end: "(?<=\\})", patterns: [{ include: "#type-object" }] }, { include: "#type-predicate-operator" }, { include: "#type" }] }, shebang: { captures: { 1: { name: "punctuation.definition.comment.js" } }, match: "\\A(#!).*(?=$)", name: "comment.line.shebang.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" } }, contentName: "comment.line.double-slash.js", end: "(?=^)" }, 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" }] }, string: { patterns: [{ include: "#qstring-single" }, { include: "#qstring-double" }, { include: "#template" }] }, "string-character-escape": { 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]?|.|$)", name: "constant.character.escape.js" }, "super-literal": { match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))super\\b(?!\\$)", name: "variable.language.super.js" }, "support-function-call-identifiers": { patterns: [{ include: "#literal" }, { include: "#support-objects" }, { include: "#object-identifiers" }, { include: "#punctuation-accessor" }, { match: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*[\\(]\\s*[\\\"\\'\\`]))", name: "keyword.operator.expression.import.js" }] }, "support-objects": { patterns: [{ match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(arguments)\\b(?!\\$)", name: "variable.language.arguments.js" }, { match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Promise)\\b(?!\\$)", name: "support.class.promise.js" }, { 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:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(import)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(meta)\\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: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(target)\\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: `(?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: "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" } }, match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(exports)|(module)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\\b(?!\\$)" }] }, "switch-statement": { begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bswitch\\s*\\()", end: "\\}", endCaptures: { 0: { name: "punctuation.definition.block.js" } }, name: "switch-statement.expr.js", patterns: [{ include: "#comment" }, { 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" } }, name: "switch-expression.expr.js", patterns: [{ include: "#expression" }] }, { begin: "\\{", beginCaptures: { 0: { name: "punctuation.definition.block.js" } }, end: "(?=\\})", name: "switch-block.expr.js", patterns: [{ begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", beginCaptures: { 1: { name: "keyword.control.switch.js" } }, end: "(?=:)", name: "case-clause.expr.js", 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" } }, contentName: "meta.block.js", end: "\\}", endCaptures: { 0: { name: "meta.block.js punctuation.definition.block.js" } }, patterns: [{ include: "#statements" }] }, { captures: { 0: { name: "case-clause.expr.js punctuation.definition.section.case-statement.js" } }, match: "(:)" }, { include: "#statements" }] }] }, template: { patterns: [{ include: "#template-call" }, { begin: "([_$[:alpha:]][_$[:alnum:]]*)?(`)", beginCaptures: { 1: { name: "entity.name.function.tagged-template.js" }, 2: { name: "string.template.js punctuation.definition.string.template.begin.js" } }, contentName: "string.template.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" }, { match: "([_$[:alpha:]][_$[:alnum:]]*)", name: "entity.name.function.tagged-template.js" }] }, { 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": { begin: "\\$\\{", beginCaptures: { 0: { name: "punctuation.definition.template-expression.begin.js" } }, contentName: "meta.embedded.line.js", end: "\\}", endCaptures: { 0: { name: "punctuation.definition.template-expression.end.js" } }, name: "meta.template.expression.js", patterns: [{ include: "#expression" }] }, "template-type": { patterns: [{ include: "#template-call" }, { begin: "([_$[:alpha:]][_$[:alnum:]]*)?(`)", beginCaptures: { 1: { name: "entity.name.function.tagged-template.js" }, 2: { name: "string.template.js punctuation.definition.string.template.begin.js" } }, contentName: "string.template.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": { begin: "\\$\\{", beginCaptures: { 0: { name: "punctuation.definition.template-expression.begin.js" } }, contentName: "meta.embedded.line.js", end: "\\}", endCaptures: { 0: { name: "punctuation.definition.template-expression.end.js" } }, name: "meta.template.expression.js", patterns: [{ include: "#type" }] }, "ternary-expression": { begin: "(?!\\?\\.\\s*[^[:digit:]])(\\?)(?!\\?)", beginCaptures: { 1: { name: "keyword.operator.ternary.js" } }, end: "\\s*(:)", endCaptures: { 1: { name: "keyword.operator.ternary.js" } }, patterns: [{ include: "#expression" }] }, "this-literal": { match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))this\\b(?!\\$)", name: "variable.language.this.js" }, 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" }, { captures: { 1: { name: "storage.modifier.js" } }, match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*" }, { include: "#type-name" }] }, "type-alias-declaration": { 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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))", name: "meta.type.declaration.js", 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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))", patterns: [{ include: "#type" }] }, { begin: "(=)\\s*", beginCaptures: { 1: { name: "keyword.operator.assignment.js" } }, end: "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))", patterns: [{ include: "#type" }] }] }, "type-annotation": { patterns: [{ begin: "(:)(?=\\s*\\S)", beginCaptures: { 1: { name: "keyword.operator.type.annotation.js" } }, end: "(?<![:|&])(?!\\s*[|&]\\s+)((?=^|[,);\\}\\]]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))", name: "meta.type.annotation.js", patterns: [{ include: "#type" }] }, { begin: "(:)", beginCaptures: { 1: { name: "keyword.operator.type.annotation.js" } }, end: "(?<![:|&])((?=[,);\\}\\]]|\\/\\/)|(?==[^>])|(?=^\\s*$)|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))", name: "meta.type.annotation.js", patterns: [{ include: "#type" }] }] }, "type-arguments": { begin: "\\<", beginCaptures: { 0: { name: "punctuation.definition.typeparameters.begin.js" } }, end: "\\>", endCaptures: { 0: { name: "punctuation.definition.typeparameters.end.js" } }, name: "meta.type.parameters.js", patterns: [{ include: "#type-arguments-body" }] }, "type-arguments-body": { patterns: [{ captures: { 0: { name: "keyword.operator.type.js" } }, match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(_)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))" }, { include: "#type" }, { include: "#punctuation-comma" }] }, "type-builtin-literals": { match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", name: "support.type.builtin.js" }, "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-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" }] }, { begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()", beginCaptures: { 1: { name: "storage.modifier.js" }, 2: { name: "keyword.control.new.js" } }, end: "(?<=\\))", name: "meta.type.constructor.js", patterns: [{ include: "#function-parameters" }] }, { begin: `(?x)(
531
+ (?=
532
+ [(]\\s*(
533
+ ([)]) |
534
+ (\\.\\.\\.) |
535
+ ([_$[:alnum:]]+\\s*(
536
+ ([:,?=])|
537
+ ([)]\\s*=>)
538
+ ))
539
+ )
540
+ )
541
+ )`, end: "(?<=\\))", name: "meta.type.function.js", patterns: [{ include: "#function-parameters" }] }] }, "type-function-return-type": { patterns: [{ begin: "(=>)(?=\\s*\\S)", beginCaptures: { 1: { name: "storage.type.function.arrow.js" } }, end: "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)", name: "meta.type.function.return.js", patterns: [{ include: "#type-function-return-type-core" }] }, { begin: "=>", beginCaptures: { 0: { name: "storage.type.function.arrow.js" } }, end: "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))", name: "meta.type.function.return.js", 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-infer": { patterns: [{ captures: { 1: { name: "keyword.operator.expression.infer.js" }, 2: { name: "entity.name.type.js" }, 3: { name: "keyword.operator.expression.extends.js" } }, match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(infer)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s+(extends)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))?", name: "meta.type.infer.js" }] }, "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" } }, contentName: "meta.type.parameters.js", end: "(>)", endCaptures: { 1: { name: "meta.type.parameters.js punctuation.definition.typeparameters.end.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" } }, contentName: "meta.type.parameters.js", end: "(>)", endCaptures: { 1: { name: "meta.type.parameters.js punctuation.definition.typeparameters.end.js" } }, patterns: [{ include: "#type-arguments-body" }] }, { captures: { 1: { name: "entity.name.type.module.js" }, 2: { name: "punctuation.accessor.js" }, 3: { name: "punctuation.accessor.optional.js" } }, match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))" }, { match: "[_$[:alpha:]][_$[:alnum:]]*", name: "entity.name.type.js" }] }, "type-object": { begin: "\\{", beginCaptures: { 0: { name: "punctuation.definition.block.js" } }, end: "\\}", endCaptures: { 0: { name: "punctuation.definition.block.js" } }, name: "meta.object.type.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-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)" }, { match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))keyof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", name: "keyword.operator.expression.keyof.js" }, { match: "(\\?|\\:)", name: "keyword.operator.ternary.js" }, { match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*\\()", name: "keyword.operator.expression.import.js" }] }, "type-parameters": { begin: "(<)", beginCaptures: { 1: { name: "punctuation.definition.typeparameters.begin.js" } }, end: "(>)", endCaptures: { 1: { name: "punctuation.definition.typeparameters.end.js" } }, name: "meta.type.parameters.js", patterns: [{ include: "#comment" }, { match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends|in|out|const)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", name: "storage.modifier.js" }, { include: "#type" }, { include: "#punctuation-comma" }, { match: "(=)(?!>)", name: "keyword.operator.assignment.js" }] }, "type-paren-or-function-parameters": { begin: "\\(", beginCaptures: { 0: { name: "meta.brace.round.js" } }, end: "\\)", endCaptures: { 0: { name: "meta.brace.round.js" } }, name: "meta.type.paren.cover.js", patterns: [{ 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*(\\??)(?=\\s*(:\\s*(
542
+ (<) |
543
+ ([(]\\s*(
544
+ ([)]) |
545
+ (\\.\\.\\.) |
546
+ ([_$[:alnum:]]+\\s*(
547
+ ([:,?=])|
548
+ ([)]\\s*=>)
549
+ ))
550
+ ))
551
+ )) |
552
+ (:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |
553
+ (:\\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: "variable.parameter.js variable.language.this.js" }, 4: { name: "variable.parameter.js" }, 5: { name: "keyword.operator.optional.js" } }, match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)" }, { include: "#type-annotation" }, { match: ",", name: "punctuation.separator.parameter.js" }, { include: "#type" }] }, "type-predicate-operator": { patterns: [{ 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+)?(?!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" } }, match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))" }, { match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", name: "keyword.operator.type.asserts.js" }, { match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", name: "keyword.operator.expression.is.js" }] }, "type-primitive": { match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", name: "support.type.primitive.js" }, "type-string": { patterns: [{ include: "#qstring-single" }, { include: "#qstring-double" }, { include: "#template-type" }] }, "type-tuple": { begin: "\\[", beginCaptures: { 0: { name: "meta.brace.square.js" } }, end: "\\]", endCaptures: { 0: { name: "meta.brace.square.js" } }, name: "meta.type.tuple.js", patterns: [{ match: "\\.\\.\\.", name: "keyword.operator.rest.js" }, { captures: { 1: { name: "entity.name.label.js" }, 2: { name: "keyword.operator.optional.js" }, 3: { name: "punctuation.separator.label.js" } }, match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)" }, { include: "#type" }, { include: "#punctuation-comma" }] }, "typeof-operator": { begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))typeof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", beginCaptures: { 0: { name: "keyword.operator.expression.typeof.js" } }, end: "(?=[,);}\\]=>:&|{\\?]|(extends\\s+)|$|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))", patterns: [{ include: "#type-arguments" }, { include: "#expression" }] }, "undefined-literal": { match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))undefined(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", name: "constant.language.undefined.js" }, "var-expr": { patterns: [{ 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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))|((?<!^let|[^\\._$[:alnum:]]let|^var|[^\\._$[:alnum:]]var)(?=\\s*$)))", name: "meta.var.expr.js", 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" }] }, { 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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))|((?<!^const|[^\\._$[:alnum:]]const)(?=\\s*$)))", name: "meta.var.expr.js", 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" }] }, { begin: "(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b((?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))", beginCaptures: { 1: { name: "keyword.control.export.js" }, 2: { name: "storage.modifier.js" }, 3: { name: "storage.type.js" } }, end: "(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b((?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))|((?<!^using|[^\\._$[:alnum:]]using|^await\\s+using|[^\\._$[:alnum:]]await\\s+using)(?=\\s*$)))", name: "meta.var.expr.js", patterns: [{ begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b((?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*", beginCaptures: { 1: { name: "keyword.control.export.js" }, 2: { name: "storage.modifier.js" }, 3: { name: "storage.type.js" } }, end: "(?=\\S)" }, { include: "#var-single-const" }, { include: "#variable-initializer" }, { include: "#comment" }, { begin: "(,)\\s*((?!\\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: "#var-single-const" }, { include: "#punctuation-comma" }] }, { include: "#punctuation-comma" }] }] }, "var-single-const": { patterns: [{ begin: `(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*
554
+ # function assignment |
555
+ (=\\s*(
556
+ ((async\\s+)?(
557
+ (function\\s*[(<*]) |
558
+ (function\\s+) |
559
+ ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)
560
+ )) |
561
+ ((async\\s*)?(
562
+ ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |
563
+
564
+ (
565
+ (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
566
+ [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*
567
+ (
568
+ ([)]\\s*:) |
569
+ ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)
570
+ )
571
+ ) |
572
+ (
573
+ [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]
574
+ ) |
575
+ # arrow function possible to detect only with => on same line
576
+ (
577
+ (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
578
+ \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\)
579
+ (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?
580
+ \\s*=>
581
+ )
582
+ ))
583
+ )) |
584
+ # typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>
585
+ (:\\s*(
586
+ (<) |
587
+ ([(]\\s*(
588
+ ([)]) |
589
+ (\\.\\.\\.) |
590
+ ([_$[:alnum:]]+\\s*(
591
+ ([:,?=])|
592
+ ([)]\\s*=>)
593
+ ))
594
+ ))
595
+ )) |
596
+ (:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |
597
+ (:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |
598
+ (:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(
599
+ ((async\\s+)?(
600
+ (function\\s*[(<*]) |
601
+ (function\\s+) |
602
+ ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)
603
+ )) |
604
+ ((async\\s*)?(
605
+ ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |
606
+
607
+ (
608
+ (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
609
+ [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*
610
+ (
611
+ ([)]\\s*:) |
612
+ ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)
613
+ )
614
+ ) |
615
+ (
616
+ [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]
617
+ ) |
618
+ # arrow function possible to detect only with => on same line
619
+ (
620
+ (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
621
+ \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\)
622
+ (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?
623
+ \\s*=>
624
+ )
625
+ ))
626
+ )))`, beginCaptures: { 1: { name: "meta.definition.variable.js variable.other.constant.js entity.name.function.js" } }, end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))", name: "meta.var-single-variable.expr.js", patterns: [{ include: "#var-single-variable-type-annotation" }] }, { begin: "([_$[:alpha:]][_$[:alnum:]]*)", beginCaptures: { 1: { name: "meta.definition.variable.js variable.other.constant.js" } }, end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))", name: "meta.var-single-variable.expr.js", patterns: [{ include: "#var-single-variable-type-annotation" }] }] }, "var-single-variable": { patterns: [{ begin: `(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\!)?(?=\\s*
627
+ # function assignment |
628
+ (=\\s*(
629
+ ((async\\s+)?(
630
+ (function\\s*[(<*]) |
631
+ (function\\s+) |
632
+ ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)
633
+ )) |
634
+ ((async\\s*)?(
635
+ ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |
636
+
637
+ (
638
+ (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
639
+ [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*
640
+ (
641
+ ([)]\\s*:) |
642
+ ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)
643
+ )
644
+ ) |
645
+ (
646
+ [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]
647
+ ) |
648
+ # arrow function possible to detect only with => on same line
649
+ (
650
+ (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
651
+ \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\)
652
+ (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?
653
+ \\s*=>
654
+ )
655
+ ))
656
+ )) |
657
+ # typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>
658
+ (:\\s*(
659
+ (<) |
660
+ ([(]\\s*(
661
+ ([)]) |
662
+ (\\.\\.\\.) |
663
+ ([_$[:alnum:]]+\\s*(
664
+ ([:,?=])|
665
+ ([)]\\s*=>)
666
+ ))
667
+ ))
668
+ )) |
669
+ (:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |
670
+ (:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |
671
+ (:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(
672
+ ((async\\s+)?(
673
+ (function\\s*[(<*]) |
674
+ (function\\s+) |
675
+ ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)
676
+ )) |
677
+ ((async\\s*)?(
678
+ ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |
679
+
680
+ (
681
+ (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
682
+ [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*
683
+ (
684
+ ([)]\\s*:) |
685
+ ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)
686
+ )
687
+ ) |
688
+ (
689
+ [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]
690
+ ) |
691
+ # arrow function possible to detect only with => on same line
692
+ (
693
+ (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?
694
+ \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\)
695
+ (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?
696
+ \\s*=>
697
+ )
698
+ ))
699
+ )))`, 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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))", name: "meta.var-single-variable.expr.js", patterns: [{ include: "#var-single-variable-type-annotation" }] }, { 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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))", name: "meta.var-single-variable.expr.js", patterns: [{ include: "#var-single-variable-type-annotation" }] }, { 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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))", name: "meta.var-single-variable.expr.js", patterns: [{ include: "#var-single-variable-type-annotation" }] }] }, "var-single-variable-type-annotation": { patterns: [{ include: "#type-annotation" }, { include: "#string" }, { include: "#comment" }] }, "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" }] }] } }, scopeName: "source.js", aliases: ["js"] });
700
+ var n = [
701
+ e
702
+ ];
703
+ export {
704
+ n as default
705
+ };