UNPKG

@inst/vscode-bin-darwin

Version:

BINARY ONLY - VSCode binary deployment for macOS

2,239 lines 120 kB
{ "information_for_contributors": [ "This file has been converted from https://github.com/Microsoft/TypeScript-TmLanguage/blob/master/TypeScriptReact.tmLanguage", "If you want to provide a fix or improvement, please create a pull request against the original repository.", "Once accepted there, we are happy to receive an update request." ], "version": "https://github.com/Microsoft/TypeScript-TmLanguage/commit/2dea76a2bd6c522cf824168c8a2d3cd05196069d", "name": "JavaScript (with React support)", "scopeName": "source.js", "fileTypes": [ ".js", ".jsx", ".es6", ".mjs" ], "uuid": "805375ec-d614-41f5-8993-5843fe63ea82", "patterns": [ { "include": "#directives" }, { "include": "#statements" }, { "name": "comment.line.shebang.ts", "match": "\\A(#!).*(?=$)", "captures": { "1": { "name": "punctuation.definition.comment.ts" } } } ], "repository": { "statements": { "patterns": [ { "include": "#string" }, { "include": "#template" }, { "include": "#comment" }, { "include": "#declaration" }, { "include": "#switch-statement" }, { "include": "#for-loop" }, { "include": "#after-operator-block" }, { "include": "#decl-block" }, { "include": "#control-statement" }, { "include": "#expression" }, { "include": "#punctuation-semicolon" } ] }, "var-expr": { "name": "meta.var.expr.js", "begin": "(?<!\\.|\\$)(?:(\\bexport)\\s+)?\\b(var|let|const(?!\\s+enum\\b))\\b(?!\\$|\\.)", "beginCaptures": { "1": { "name": "keyword.control.export.js" }, "2": { "name": "storage.type.js" } }, "end": "(?=$|^|;|}|(\\s+(of|in)\\s+))", "patterns": [ { "include": "#destructuring-variable" }, { "include": "#var-single-variable" }, { "include": "#variable-initializer" }, { "include": "#comment" }, { "begin": "(,)\\s*(?!\\S)", "beginCaptures": { "1": { "name": "punctuation.separator.comma.js" } }, "end": "(?<!,)((?==|;|}|(\\s+(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$))", "patterns": [ { "include": "#comment" }, { "include": "#destructuring-variable" }, { "include": "#var-single-variable" }, { "include": "#punctuation-comma" } ] }, { "include": "#punctuation-comma" } ] }, "var-single-variable": { "patterns": [ { "name": "meta.var-single-variable.expr.js", "begin": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n (=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([(]\\s*(([)]\\s*:)|([_$[:alpha:]][_$[:alnum:]]*\\s*:)|(\\.\\.\\.) )) |\n ([<]\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s*[^=>])|(\\s*[,]))) |\n ((<\\s*[_$[:alpha:]\\{\\(]([^<>=]|=[^<]|\\<\\s*[_$[:alpha:]\\{\\(]([^=<>]|=[^<])+\\>)+>\\s*)?\\((\\s*[_$[:alpha:]\\{\\(]([^()]|\\((\\s*[_$[:alpha:]\\{\\(]\\{\\(][^()]*)?\\))*)?\\)(\\s*:\\s*(.)*)?\\s*=>)\n ))\n )) |\n (:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n ))\n)", "beginCaptures": { "1": { "name": "meta.definition.variable.js entity.name.function.js" } }, "end": "(?=$|^|[;,=}]|(\\s+(of|in)\\s+))", "patterns": [ { "include": "#var-single-variable-type-annotation" } ] }, { "name": "meta.var-single-variable.expr.js", "begin": "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])", "beginCaptures": { "1": { "name": "meta.definition.variable.js variable.other.constant.js" } }, "end": "(?=$|^|[;,=}]|(\\s+(of|in)\\s+))", "patterns": [ { "include": "#var-single-variable-type-annotation" } ] }, { "name": "meta.var-single-variable.expr.js", "begin": "([_$[:alpha:]][_$[:alnum:]]*)", "beginCaptures": { "1": { "name": "meta.definition.variable.js variable.other.readwrite.js" } }, "end": "(?=$|^|[;,=}]|(\\s+(of|in)\\s+))", "patterns": [ { "include": "#var-single-variable-type-annotation" } ] } ] }, "var-single-variable-type-annotation": { "patterns": [ { "include": "#type-annotation" }, { "include": "#string" }, { "include": "#comment" } ] }, "destructuring-variable": { "patterns": [ { "name": "meta.object-binding-pattern-variable.js", "begin": "(?<!=|:|of|in)\\s*(?=\\{)", "end": "(?=$|^|[;,=}]|(\\s+(of|in)\\s+))", "patterns": [ { "include": "#object-binding-pattern" }, { "include": "#type-annotation" }, { "include": "#comment" } ] }, { "name": "meta.array-binding-pattern-variable.js", "begin": "(?<!=|:|of|in)\\s*(?=\\[)", "end": "(?=$|^|[;,=}]|(\\s+(of|in)\\s+))", "patterns": [ { "include": "#array-binding-pattern" }, { "include": "#type-annotation" }, { "include": "#comment" } ] } ] }, "object-binding-element": { "patterns": [ { "include": "#comment" }, { "begin": "(?=(([_$[: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-propertyName": { "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))", "end": "(:)", "endCaptures": { "0": { "name": "punctuation.destructuring.js" } }, "patterns": [ { "include": "#string" }, { "include": "#array-literal" }, { "name": "variable.object.property.js", "match": "([_$[:alpha:]][_$[:alnum:]]*)" } ] }, "binding-element": { "patterns": [ { "include": "#comment" }, { "include": "#object-binding-pattern" }, { "include": "#array-binding-pattern" }, { "include": "#destructuring-variable-rest" }, { "include": "#variable-initializer" } ] }, "destructuring-variable-rest": { "match": "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)", "captures": { "1": { "name": "keyword.operator.rest.js" }, "2": { "name": "meta.definition.variable.js variable.other.readwrite.js" } } }, "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" } ] }, "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" } ] }, "ternary-expression": { "begin": "(\\?)", "beginCaptures": { "0": { "name": "keyword.operator.ternary.js" } }, "end": "(:)", "endCaptures": { "0": { "name": "keyword.operator.ternary.js" } }, "patterns": [ { "include": "#expression" } ] }, "expression": { "patterns": [ { "include": "#jsx" }, { "include": "#string" }, { "include": "#regex" }, { "include": "#template" }, { "include": "#comment" }, { "include": "#function-expression" }, { "include": "#class-expression" }, { "include": "#arrow-function" }, { "include": "#cast" }, { "include": "#ternary-expression" }, { "include": "#new-expr" }, { "include": "#object-literal" }, { "include": "#expression-operators" }, { "include": "#function-call" }, { "include": "#literal" }, { "include": "#support-objects" }, { "include": "#identifiers" }, { "include": "#paren-expression" }, { "include": "#punctuation-comma" }, { "include": "#punctuation-accessor" } ] }, "control-statement": { "patterns": [ { "name": "keyword.control.trycatch.js", "match": "(?<!\\.|\\$)\\b(catch|finally|throw|try)\\b(?!\\$|\\.)" }, { "name": "keyword.control.loop.js", "match": "(?<!\\.|\\$)\\b(break|continue|do|goto|while)\\b(?!\\$|\\.)" }, { "name": "keyword.control.flow.js", "match": "(?<!\\.|\\$)\\b(return)\\b(?!\\$|\\.)" }, { "name": "keyword.control.switch.js", "match": "(?<!\\.|\\$)\\b(case|default|switch)\\b(?!\\$|\\.)" }, { "name": "keyword.control.conditional.js", "match": "(?<!\\.|\\$)\\b(else|if)\\b(?!\\$|\\.)" }, { "name": "keyword.control.with.js", "match": "(?<!\\.|\\$)\\b(with)\\b(?!\\$|\\.)" }, { "name": "keyword.other.debugger.js", "match": "(?<!\\.|\\$)\\b(debugger)\\b(?!\\$|\\.)" }, { "name": "storage.modifier.js", "match": "(?<!\\.|\\$)\\b(declare)\\b(?!\\$|\\.)" } ] }, "declaration": { "patterns": [ { "include": "#decorator" }, { "include": "#var-expr" }, { "include": "#function-declaration" }, { "include": "#class-declaration" }, { "include": "#interface-declaration" }, { "include": "#type-declaration" }, { "include": "#enum-declaration" }, { "include": "#namespace-declaration" }, { "include": "#import-equals-declaration" }, { "include": "#import-declaration" }, { "include": "#export-declaration" } ] }, "decorator": { "name": "meta.decorator.js", "begin": "(?<!\\.|\\$)\\@", "beginCaptures": { "0": { "name": "punctuation.decorator.js" } }, "end": "(?=\\s)", "patterns": [ { "include": "#expression" } ] }, "type-declaration": { "name": "meta.type.declaration.js", "begin": "(?<!\\.|\\$)(?:(\\bexport)\\s+)?\\b(type)\\b\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*", "beginCaptures": { "1": { "name": "keyword.control.export.js" }, "2": { "name": "storage.type.type.js" }, "3": { "name": "entity.name.type.alias.js" } }, "end": "(?=[};]|\\babstract\\b|\\basync\\b|\\bclass\\b|\\bconst\\b|\\bdeclare\\b|\\benum\\b|\\bexport\\b|\\bfunction\\b|\\bimport\\b|\\binterface\\b|\\blet\\b|\\bmodule\\b|\\bnamespace\\b|\\btype\\b|\\bvar\\b)", "patterns": [ { "include": "#comment" }, { "include": "#type-parameters" }, { "include": "#type" }, { "match": "(=)\\s*", "captures": { "1": { "name": "keyword.operator.assignment.js" } } } ] }, "enum-declaration": { "name": "meta.enum.declaration.js", "begin": "(?<!\\.|\\$)(?:(\\bexport)\\s+)?(?:\\b(const)\\s+)?\\b(enum)\\s+([_$[:alpha:]][_$[:alnum:]]*)", "beginCaptures": { "1": { "name": "keyword.control.export.js" }, "2": { "name": "storage.modifier.js" }, "3": { "name": "storage.type.enum.js" }, "4": { "name": "entity.name.type.enum.js" } }, "end": "(?<=\\})", "patterns": [ { "include": "#comment" }, { "begin": "\\{", "beginCaptures": { "0": { "name": "punctuation.definition.block.js" } }, "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.block.js" } }, "patterns": [ { "include": "#comment" }, { "begin": "([_$[:alpha:]][_$[:alnum:]]*)", "beginCaptures": { "0": { "name": "variable.other.enummember.js" } }, "end": "(?=,|\\}|$)", "patterns": [ { "include": "#comment" }, { "include": "#variable-initializer" } ] }, { "begin": "(?=((\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\])))", "end": "(?=,|\\}|$)", "patterns": [ { "include": "#string" }, { "include": "#array-literal" }, { "include": "#comment" }, { "include": "#variable-initializer" } ] }, { "include": "#punctuation-comma" } ] } ] }, "namespace-declaration": { "name": "meta.namespace.declaration.js", "begin": "(?<!\\.|\\$)(?:(\\bexport)\\s+)?\\b(namespace|module)\\s+(?=[_$[:alpha:]\"'`])", "beginCaptures": { "1": { "name": "keyword.control.export.js" }, "2": { "name": "storage.type.namespace.js" } }, "end": "(?<=\\})|(?=;|\\babstract\\b|\\basync\\b|\\bclass\\b|\\bconst\\b|\\bdeclare\\b|\\benum\\b|\\bexport\\b|\\bfunction\\b|\\bimport\\b|\\binterface\\b|\\blet\\b|\\bmodule\\b|\\bnamespace\\b|\\btype\\b|\\bvar\\b)", "patterns": [ { "include": "#comment" }, { "include": "#string" }, { "name": "entity.name.type.module.js", "match": "([_$[:alpha:]][_$[:alnum:]]*)" }, { "include": "#punctuation-accessor" }, { "include": "#decl-block" } ] }, "import-equals-declaration": { "patterns": [ { "name": "meta.import-equals.external.js", "begin": "(?<!\\.|\\$)(?:(\\bexport)\\s+)?\\b(import)\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(require)\\s*(\\()", "beginCaptures": { "1": { "name": "keyword.control.export.js" }, "2": { "name": "keyword.control.import.js" }, "3": { "name": "variable.other.readwrite.alias.js" }, "4": { "name": "keyword.operator.assignment.js" }, "5": { "name": "keyword.control.require.js" }, "6": { "name": "meta.brace.round.js" } }, "end": "\\)", "endCaptures": { "0": { "name": "meta.brace.round.js" } }, "patterns": [ { "include": "#comment" }, { "include": "#string" } ] }, { "name": "meta.import-equals.internal.js", "begin": "(?<!\\.|\\$)(?:(\\bexport)\\s+)?\\b(import)\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(?!require\\b)", "beginCaptures": { "1": { "name": "keyword.control.export.js" }, "2": { "name": "keyword.control.import.js" }, "3": { "name": "variable.other.readwrite.alias.js" }, "4": { "name": "keyword.operator.assignment.js" } }, "end": "(?=;|$|^)", "patterns": [ { "include": "#comment" }, { "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\.)", "captures": { "1": { "name": "entity.name.type.module.js" }, "2": { "name": "punctuation.accessor.js" } } }, { "name": "variable.other.readwrite.js", "match": "([_$[:alpha:]][_$[:alnum:]]*)" } ] } ] }, "import-declaration": { "name": "meta.import.js", "begin": "(?<!\\.|\\$)(?:(\\bexport)\\s+)?\\b(import)(?!(\\s*[:\\(])|(\\$|\\.))\\b", "beginCaptures": { "1": { "name": "keyword.control.export.js" }, "2": { "name": "keyword.control.import.js" } }, "end": "(?=;|$|^)", "patterns": [ { "include": "#import-export-declaration" } ] }, "export-declaration": { "patterns": [ { "match": "(?<!\\.|\\$)\\b(export)\\s+(as)\\s+(namespace)\\s+([_$[:alpha:]][_$[:alnum:]]*)", "captures": { "1": { "name": "keyword.control.export.js" }, "2": { "name": "keyword.control.as.js" }, "3": { "name": "storage.type.namespace.js" }, "4": { "name": "entity.name.type.module.js" } } }, { "name": "meta.export.default.js", "begin": "(?<!\\.|\\$)\\b(export)(?:(?:\\s*(=))|(?:\\s+(default)(?=\\s+)))", "beginCaptures": { "1": { "name": "keyword.control.export.js" }, "2": { "name": "keyword.operator.assignment.js" }, "3": { "name": "keyword.control.default.js" } }, "end": "(?=;|$|\\babstract\\b|\\basync\\b|\\bclass\\b|\\bconst\\b|\\bdeclare\\b|\\benum\\b|\\bexport\\b|\\bfunction\\b|\\bimport\\b|\\binterface\\b|\\blet\\b|\\bmodule\\b|\\bnamespace\\b|\\btype\\b|\\bvar\\b)", "patterns": [ { "include": "#expression" } ] }, { "name": "meta.export.js", "begin": "(?<!\\.|\\$)\\b(export)(?!(\\s*:)|(\\$))\\b", "beginCaptures": { "0": { "name": "keyword.control.export.js" } }, "end": "(?=;|$|\\babstract\\b|\\basync\\b|\\bclass\\b|\\bconst\\b|\\bdeclare\\b|\\benum\\b|\\bexport\\b|\\bfunction\\b|\\bimport\\b|\\binterface\\b|\\blet\\b|\\bmodule\\b|\\bnamespace\\b|\\btype\\b|\\bvar\\b)", "patterns": [ { "include": "#import-export-declaration" } ] } ] }, "import-export-declaration": { "patterns": [ { "include": "#comment" }, { "include": "#string" }, { "include": "#import-export-block" }, { "name": "keyword.control.from.js", "match": "\\bfrom\\b" }, { "include": "#import-export-clause" } ] }, "import-export-block": { "name": "meta.block.js", "begin": "\\{", "beginCaptures": { "0": { "name": "punctuation.definition.block.js" } }, "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.block.js" } }, "patterns": [ { "include": "#import-export-clause" } ] }, "import-export-clause": { "patterns": [ { "include": "#comment" }, { "comment": "(default|*|name) as alias", "match": "(?x) (?: \\b(default)\\b | (\\*) | ([_$[:alpha:]][_$[:alnum:]]*)) \\s+ \n (as) \\s+ (?: (\\b default \\b | \\*) | ([_$[:alpha:]][_$[:alnum:]]*))", "captures": { "1": { "name": "keyword.control.default.js" }, "2": { "name": "constant.language.import-export-all.js" }, "3": { "name": "variable.other.readwrite.js" }, "4": { "name": "keyword.control.as.js" }, "5": { "name": "invalid.illegal.js" }, "6": { "name": "variable.other.readwrite.alias.js" } } }, { "include": "#punctuation-comma" }, { "name": "constant.language.import-export-all.js", "match": "\\*" }, { "name": "keyword.control.default.js", "match": "\\b(default)\\b" }, { "name": "variable.other.readwrite.alias.js", "match": "([_$[:alpha:]][_$[:alnum:]]*)" } ] }, "class-declaration": { "name": "meta.class.js", "begin": "(?<!\\.|\\$)\\b(?:(export)\\s+)?\\b(?:(abstract)\\s+)?\\b(class)\\b(?=\\s+|/[/*])", "beginCaptures": { "1": { "name": "keyword.control.export.js" }, "2": { "name": "storage.modifier.js" }, "3": { "name": "storage.type.class.js" } }, "end": "(?<=\\})", "patterns": [ { "include": "#class-declaration-or-expression-patterns" } ] }, "class-declaration-or-expression-patterns": { "patterns": [ { "include": "#comment" }, { "include": "#class-or-interface-heritage" }, { "match": "[_$[:alpha:]][_$[:alnum:]]*", "captures": { "0": { "name": "entity.name.type.class.js" } } }, { "include": "#type-parameters" }, { "include": "#class-or-interface-body" } ] }, "interface-declaration": { "name": "meta.interface.js", "begin": "(?<!\\.|\\$)\\b(?:(export)\\s+)?\\b(?:(abstract)\\s+)?\\b(interface)\\b(?=\\s+|/[/*])", "beginCaptures": { "1": { "name": "keyword.control.export.js" }, "2": { "name": "storage.modifier.js" }, "3": { "name": "storage.type.interface.js" } }, "end": "(?<=\\})", "patterns": [ { "include": "#comment" }, { "include": "#class-or-interface-heritage" }, { "match": "[_$[:alpha:]][_$[:alnum:]]*", "captures": { "0": { "name": "entity.name.type.interface.js" } } }, { "include": "#type-parameters" }, { "include": "#class-or-interface-body" } ] }, "class-expression": { "name": "meta.class.js", "begin": "(?<!\\.|\\$)\\b(class)\\b(?=\\s+|[<{]|/[/*])", "beginCaptures": { "1": { "name": "storage.type.class.js" } }, "end": "(?<=\\})", "patterns": [ { "include": "#class-declaration-or-expression-patterns" } ] }, "class-or-interface-heritage": { "begin": "(?<!\\.|\\$)(?:\\b(extends|implements)\\b)(?!\\$|\\.)", "beginCaptures": { "1": { "name": "storage.modifier.js" } }, "end": "(?=\\{)", "endCaptures": { "1": { "name": "punctuation.definition.block.js" } }, "patterns": [ { "include": "#comment" }, { "include": "#class-or-interface-heritage" }, { "include": "#type-parameters" }, { "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\.)(?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s*\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\s*([,<{]|extends|implements|//|/\\*))", "captures": { "1": { "name": "entity.name.type.module.js" }, "2": { "name": "punctuation.accessor.js" } } }, { "match": "([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*([,<{]|extends|implements|//|/\\*))", "captures": { "1": { "name": "entity.other.inherited-class.js" } } }, { "include": "#expression" } ] }, "class-or-interface-body": { "begin": "\\{", "beginCaptures": { "0": { "name": "punctuation.definition.block.js" } }, "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.block.js" } }, "patterns": [ { "include": "#string" }, { "include": "#comment" }, { "include": "#decorator" }, { "include": "#method-declaration" }, { "include": "#indexer-declaration" }, { "include": "#field-declaration" }, { "include": "#type-annotation" }, { "include": "#variable-initializer" }, { "include": "#access-modifier" }, { "include": "#property-accessor" }, { "include": "#after-operator-block" }, { "include": "#decl-block" }, { "include": "#expression" }, { "include": "#punctuation-comma" }, { "include": "#punctuation-semicolon" } ] }, "type-object": { "name": "meta.object.type.js", "begin": "\\{", "beginCaptures": { "0": { "name": "punctuation.definition.block.js" } }, "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.block.js" } }, "patterns": [ { "include": "#comment" }, { "include": "#method-declaration" }, { "include": "#indexer-declaration" }, { "include": "#indexer-mapped-type-declaration" }, { "include": "#field-declaration" }, { "include": "#type-annotation" }, { "begin": "\\.\\.\\.", "beginCaptures": { "0": { "name": "keyword.operator.spread.js" } }, "end": "(?=\\}|;|,|$)|(?<=\\})", "patterns": [ { "include": "#type" } ] }, { "include": "#punctuation-comma" }, { "include": "#punctuation-semicolon" }, { "include": "#type" } ] }, "field-declaration": { "name": "meta.field.declaration.js", "begin": "(?<!\\()(?:(?<!\\.|\\$)\\b(readonly)\\s+)?(?=(([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\?\\s*)?(=|:))", "beginCaptures": { "1": { "name": "storage.modifier.js" } }, "end": "(?=\\}|;|,|$|(^(?!(([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\?\\s*)?(=|:))))|(?<=\\})", "patterns": [ { "include": "#variable-initializer" }, { "begin": "(?=((?:[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\?\\s*)?(=|:))", "end": "(?=[};,=]|$|(^(?!(([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\?\\s*)?(=|:))))|(?<=\\})", "patterns": [ { "include": "#type-annotation" }, { "include": "#string" }, { "include": "#array-literal" }, { "include": "#comment" }, { "name": "meta.definition.property.js entity.name.function.js", "match": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=(\\?\\s*)?\\s*\n (=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([(]\\s*(([)]\\s*:)|([_$[:alpha:]][_$[:alnum:]]*\\s*:)|(\\.\\.\\.) )) |\n ([<]\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s*[^=>])|(\\s*[,]))) |\n ((<\\s*[_$[:alpha:]\\{\\(]([^<>=]|=[^<]|\\<\\s*[_$[:alpha:]\\{\\(]([^=<>]|=[^<])+\\>)+>\\s*)?\\((\\s*[_$[:alpha:]\\{\\(]([^()]|\\((\\s*[_$[:alpha:]\\{\\(]\\{\\(][^()]*)?\\))*)?\\)(\\s*:\\s*(.)*)?\\s*=>)\n ))\n )) |\n (:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n ))\n)" }, { "name": "meta.definition.property.js variable.object.property.js", "match": "[_$[:alpha:]][_$[:alnum:]]*" }, { "name": "keyword.operator.optional.js", "match": "\\?" } ] } ] }, "method-declaration": { "patterns": [ { "name": "meta.method.declaration.js", "begin": "(?<!\\.|\\$)(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)(?:(\\*)\\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*[\\(\\<])", "beginCaptures": { "1": { "name": "storage.modifier.js" }, "2": { "name": "storage.modifier.js" }, "3": { "name": "storage.modifier.async.js" }, "4": { "name": "storage.type.property.js" }, "5": { "name": "keyword.generator.asterisk.js" } }, "end": "(?=\\}|;|,|$)|(?<=\\})", "patterns": [ { "include": "#method-declaration-name" }, { "include": "#comment" }, { "include": "#type-parameters" }, { "include": "#function-parameters" }, { "include": "#return-type" }, { "include": "#decl-block" } ] }, { "name": "meta.method.declaration.js", "begin": "(?<!\\.|\\$)(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:(?:\\b(?:(new)|(constructor))\\b(?!\\$|\\.|:))|(?:(\\*)\\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))?\\s*[\\(\\<]))", "beginCaptures": { "1": { "name": "storage.modifier.js" }, "2": { "name": "storage.modifier.js" }, "3": { "name": "storage.modifier.async.js" }, "4": { "name": "keyword.operator.new.js" }, "5": { "name": "storage.type.js" }, "6": { "name": "keyword.generator.asterisk.js" } }, "end": "(?=\\}|;|,|$)|(?<=\\})", "patterns": [ { "include": "#method-declaration-name" }, { "include": "#comment" }, { "include": "#type-parameters" }, { "include": "#function-parameters" }, { "include": "#return-type" }, { "include": "#decl-block" } ] } ] }, "method-declaration-name": { "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??)\\s*[\\(\\<])", "end": "(?=\\(|\\<)", "patterns": [ { "include": "#string" }, { "include": "#array-literal" }, { "name": "meta.definition.method.js entity.name.function.js", "match": "[_$[:alpha:]][_$[:alnum:]]*" }, { "name": "keyword.operator.optional.js", "match": "\\?" } ] }, "object-literal-method-declaration": { "name": "meta.method.declaration.js", "begin": "(?<!\\.|\\$)(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*[\\(\\<])", "beginCaptures": { "1": { "name": "storage.modifier.async.js" }, "2": { "name": "storage.type.property.js" }, "3": { "name": "keyword.generator.asterisk.js" } }, "end": "(?=\\}|;|,)|(?<=\\})", "patterns": [ { "include": "#method-declaration-name" }, { "include": "#comment" }, { "include": "#type-parameters" }, { "include": "#function-parameters" }, { "include": "#return-type" }, { "include": "#object-literal-method-overload-declaration" }, { "include": "#decl-block" } ] }, "object-literal-method-overload-declaration": { "begin": "(?<!\\.|\\$)(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\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" } ] }, "indexer-declaration": { "name": "meta.indexer.declaration.js", "begin": "(?:(?<!\\.|\\$)\\b(readonly)\\s*)?(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=:)", "beginCaptures": { "1": { "name": "storage.modifier.js" }, "2": { "name": "meta.brace.square.js" }, "3": { "name": "variable.parameter.js" } }, "end": "(\\])\\s*(\\?\\s*)?|$", "endCaptures": { "1": { "name": "meta.brace.square.js" }, "2": { "name": "keyword.operator.optional.js" } }, "patterns": [ { "include": "#type-annotation" } ] }, "indexer-mapped-type-declaration": { "name": "meta.indexer.mappedtype.declaration.js", "begin": "(?:(?<!\\.|\\$)\\b(readonly)\\s*)?(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s+(in)\\s+", "beginCaptures": { "1": { "name": "storage.modifier.js" }, "2": { "name": "meta.brace.square.js" }, "3": { "name": "entity.name.type.js" }, "4": { "name": "keyword.operator.expression.in.js" } }, "end": "(\\])\\s*(\\?\\s*)?|$", "endCaptures": { "1": { "name": "meta.brace.square.js" }, "2": { "name": "keyword.operator.optional.js" } }, "patterns": [ { "include": "#type" } ] }, "function-declaration": { "name": "meta.function.js", "begin": "(?<!\\.|\\$)\\b(?:(export)\\s+)?(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*", "beginCaptures": { "1": { "name": "keyword.control.export.js" }, "2": { "name": "storage.modifier.async.js" }, "3": { "name": "storage.type.function.js" }, "4": { "name": "keyword.generator.asterisk.js" }, "5": { "name": "meta.definition.function.js entity.name.function.js" } }, "end": "(?=$|^|;)|(?<=\\})", "patterns": [ { "include": "#comment" }, { "include": "#type-parameters" }, { "include": "#function-parameters" }, { "include": "#return-type" }, { "include": "#decl-block" } ] }, "function-expression": { "name": "meta.function.expression.js", "begin": "(?<!\\.|\\$)\\b(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*", "beginCaptures": { "1": { "name": "storage.modifier.async.js" }, "2": { "name": "storage.type.function.js" }, "3": { "name": "keyword.generator.asterisk.js" }, "4": { "name": "meta.definition.function.js entity.name.function.js" } }, "end": "(?<=\\})", "patterns": [ { "include": "#comment" }, { "include": "#type-parameters" }, { "include": "#function-parameters" }, { "include": "#return-type" }, { "include": "#decl-block" } ] }, "object-literal": { "name": "meta.objectliteral.js", "begin": "\\{", "beginCaptures": { "0": { "name": "punctuation.definition.block.js" } }, "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.block.js" } }, "patterns": [ { "include": "#object-member" } ] }, "decl-block": { "name": "meta.block.js", "begin": "\\{", "beginCaptures": { "0": { "name": "punctuation.definition.block.js" } }, "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.block.js" } }, "patterns": [ { "include": "#statements" } ] }, "after-operator-block": { "name": "meta.objectliteral.js", "begin": "(?<=[=(,\\[?+!]|await|return|yield|throw|in|of|typeof|&&|\\|\\||\\*)\\s*(\\{)", "beginCaptures": { "1": { "name": "punctuation.definition.block.js" } }, "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.block.js" } }, "patterns": [ { "include": "#object-member" } ] }, "parameter-name": { "patterns": [ { "match": "\\s*\\b(public|protected|private|readonly)(?=\\s+(public|protected|private|readonly)\\s+)", "captures": { "1": { "name": "storage.modifier.js" } } }, { "match": "(?x)(?:\\s*\\b(public|private|protected|readonly)\\s+)?(\\.\\.\\.)?\\s*(?<!=|:)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*\n (=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ([(]\\s*(([)]\\s*:)|([_$[:alpha:]][_$[:alnum:]]*\\s*:)|(\\.\\.\\.) )) |\n ([<]\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s*[^=>])|(\\s*[,]))) |\n ((<\\s*[_$[:alpha:]\\{\\(]([^<>=]|=[^<]|\\<\\s*[_$[:alpha:]\\{\\(]([^=<>]|=[^<])+\\>)+>\\s*)?\\((\\s*[_$[:alpha:]\\{\\(]([^()]|\\((\\s*[_$[:alpha:]\\{\\(]\\{\\(][^()]*)?\\))*)?\\)(\\s*:\\s*(.)*)?\\s*=>)\n ))\n )) |\n (:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n ))\n)", "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": "(?:\\s*\\b(public|private|protected|readonly)\\s+)?(\\.\\.\\.)?\\s*(?<!=|:)(?:((?<!\\.|\\$)\\bthis\\b(?!\\.|\\$))|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)", "captures": { "1": { "name": "storage.modifier.js" }, "2": { "name": "keyword.operator.rest.js" }, "3": { "name": "variable.parameter.js variable.language.this.js" }, "4": { "name": "variable.parameter.js" }, "5": { "name": "keyword.operator.optional.js" } } } ] }, "destructuring-parameter": { "patterns": [ { "name": "meta.parameter.object-binding-pattern.js", "begin": "(?<!=|:)\\s*(\\{)", "beginCaptures": { "1": { "name": "punctuation.definition.binding-pattern.object.js" } }, "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.binding-pattern.object.js" } }, "patterns": [ { "include": "#parameter-object-binding-element" } ] }, { "name": "meta.paramter.array-binding-pattern.js", "begin": "(?<!=|:)\\s*(\\[)", "beginCaptures": { "1": { "name": "punctuation.definition.binding-pattern.array.js" } }, "end": "\\]", "endCaptures": { "0": { "name": "punctuation.definition.binding-pattern.array.js" } }, "patterns": [ { "include": "#parameter-binding-element" }, { "include": "#punctuation-comma" } ] } ] }, "parameter-object-binding-element": { "patterns": [ { "include": "#comment" }, { "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))", "end": "(?=,|\\})", "patterns": [ { "include": "#object-binding-element-propertyName" }, { "include": "#parameter-binding-element" } ] }, { "include": "#parameter-object-binding-pattern" }, { "include": "#destructuring-parameter-rest" }, { "include": "#variable-initializer" }, { "include": "#punctuation-comma" } ] }, "parameter-binding-element": { "patterns": [ { "include": "#comment" }, { "include": "#parameter-object-binding-pattern" }, { "include": "#parameter-array-binding-pattern" }, { "include": "#destructuring-parameter-rest" }, { "include": "#variable-initializer" } ] }, "destructuring-parameter-rest": { "match": "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)", "captures": { "1": { "name": "keyword.operator.rest.js" }, "2": { "name": "variable.parameter.js" } } }, "parameter-object-binding-pattern": { "begin": "(?:(\\.\\.\\.)\\s*)?(\\{)", "beginCaptures": { "1": { "name": "keyword.operator.rest.js" }, "2": { "name": "punctuation.definition.binding-pattern.object.js" } }, "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.binding-pattern.object.js" } }, "patterns": [ { "include": "#parameter-object-binding-element" } ] }, "parameter-array-binding-pattern": { "begin": "(?:(\\.\\.\\.)\\s*)?(\\[)", "beginCaptures": { "1": { "name": "keyword.operator.rest.js" }, "2": { "name": "punctuation.definition.binding-pattern.array.js" } }, "end": "\\]", "endCaptures": { "0": { "name": "punctuation.definition.binding-pattern.array.js" } }, "patterns": [ { "include": "#parameter-binding-element" }, { "include": "#punctuation-comma" } ] }, "return-type": { "patterns": [ { "name": "meta.return.type.js", "begin": "(?<=\\))\\s*(:)(?=\\s*\\S)", "beginCaptures": { "1": { "name": "keyword.operator.type.annotation.js" } }, "end": "(?<![:|&])(?=$|^|[{};,]|//)", "patterns": [ { "include": "#return-type-core" } ] }, { "name": "meta.return.type.js", "begin": "(?<=\\))\\s*(:)", "beginCaptures": { "1": { "name": "keyword.operator.type.annotation.js" } }, "end": "(?<![:|&])((?=[{};,]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))", "patterns": [ { "include": "#return-type-core" } ] } ] }, "return-type-core": { "patterns": [ { "include": "#comment" }, { "begin": "(?<=[:|&])(?=\\s*\\{)", "end": "(?<=\\})", "patterns": [ { "include": "#type-object" } ] }, { "include": "#type-predicate-operator" }, { "include": "#type" } ] }, "type-predicate-operator": { "name": "keyword.operator.expression.is.js", "match": "(?<!\\.|\\$)\\bis\\b(?!\\$|\\.)" }, "type-annotation": { "patterns": [ { "name": "meta.type.annotation.js", "begin": "(:)(?=\\s*\\S)", "beginCaptures": { "1": { "name": "keyword.operator.type.annotation.js" } }, "end": "(?<![:|&])((?=$|^|[,);\\}\\]]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))", "patterns": [ { "include": "#type" } ] }, { "name": "meta.type.annotation.js", "begin": "(:)", "beginCaptures": { "1": { "name": "keyword.operator.type.annotation.js" } }, "end": "(?<![:|&])((?=[,);\\}\\]]|//)|(?==[^>])|(?=^\\s*$)|((?<=\\S)(?=\\s*$))|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))", "patterns": [ { "include": "#type" } ] } ] }, "type": { "patterns": [ { "include": "#comment" }, { "include": "#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-fn-type-parameters" }, { "include": "#type-paren-or-function-parameters" }, { "include": "#type-function-return-type" }, { "include": "#type-name" } ] }, "function-parameters": { "name": "meta.parameters.js", "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.parameters.begin.js" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.parameters.end.js" } }, "patterns": [ { "include": "#comment" }, { "include": "#decorator" }, { "include": "#destructuring-parameter" }, { "include": "#parameter-name" }, { "include": "#type-annotation" }, { "include": "#variable-initializer" }, { "name": "punctuation.separator.parameter.js", "match": "," } ] }, "type-primitive": { "name": "support.type.primitive.js", "match": "(?<!\\.|\\$)\\b(string|number|boolean|symbol|any|void|never)\\b(?!\\$|\\.)" }, "type-builtin-literals": { "name": "support.type.builtin.js", "match": "(?<!\\.|\\$)\\b(this|true|false|undefined|null|object)\\b(?!\\$|\\.)" }, "type-paren-or-function-parameters": { "name": "meta.type.paren.cover.js", "begin": "\\(", "beginCaptures": { "0": { "name": "meta.brace.round.js" } }, "end": "\\)", "endCaptures": { "0": { "name": "meta.brace.round.js" } }, "patterns": [ { "include": "#type" }, { "include": "#function-parameters" } ] }, "type-fn-type-parameters": { "patterns": [ { "name": "meta.type.constructor.js", "match": "(?<!\\.|\\$)\\b(new)\\b(?=\\s*\\<)", "captures": { "1": { "name": "keyword.control.new.js" } } }, { "name": "meta.type.constructor.js", "begin": "(?<!\\.|\\$)\\b(new)\\b\\s*(?=\\()", "beginCaptures": { "1": { "name": "keyword.control.new.js" } }, "end": "(?<=\\))", "patterns": [ { "include": "#function-parameters" } ] }, { "name": "meta.type.function.js", "begin": "(?x)(\n (?=\n [(]\\s*(\n ([)]) | \n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )\n )\n)", "end": "(?<=\\))", "patterns": [ { "include": "#function-parameters" } ] } ] }, "type-operators": { "patterns": [ { "include": "#typeof-operator" }, { "begin": "([&|])(?=\\s*\\{)", "beginCaptures": { "0": { "name": "keyword.operator.type.js" } }, "end": "(?<=\\})", "patterns": [ { "include": "#type-object" } ] }, { "begin": "[&|]", "beginCaptures": { "0": { "name": "keyword.operator.type.js" } }, "end": "(?=\\S)" }, { "name": "keyword.operator.expression.keyof.js", "match": "(?<!\\.|\\$)\\bkeyof\\b(?!\\$|\\.)" } ] }, "type-function-return-type": { "patterns": [ { "name": "meta.type.function.return.js", "begin": "(=>)(?=\\s*\\S)", "beginCaptures": { "1": { "name": "storage.type.function.arrow.js" } }, "end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>]|//|$)", "patterns": [ { "include": "#type-function-return-type-core" } ] }, { "name": "meta.type.function.return.js", "begin": "=>", "beginCaptures": { "0": { "name": "storage.type.function.arrow.js" } }, "end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))", "patterns": [ { "include": "#type-function-return-type-core" } ] } ] }, "type-function-return-type-core": { "patterns": [ { "include": "#comment" }, { "begin": "(?<==>)(?=\\s*\\{)", "end": "(?<=\\})", "patterns": [ { "include": "#type-object" } ] }, { "include": "#type-predicate-operator" }, { "include": "#type" } ] }, "type-tuple": { "name": "meta.type.tuple.js", "begin": "\\[", "beginCaptures": { "0": { "name": "meta.brace.square.js" } }, "end": "\\]", "endCaptures": { "0": { "name": "meta.brace.square.js" } }, "patterns": [ { "include": "#type" }, { "include": "#punctuation-comma" } ] }, "type-name": { "patterns": [ { "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\.)", "captures": { "1": { "name": "entity.name.type.module.js" }, "2": { "name": "punctuation.accessor.js" } } }, { "name": "entity.name.type.js", "match": "[_$[:alpha:]][_$[:alnum:]]*" } ] }, "type-parameters": { "name": "meta.type.parameters.js", "begin": "(<)", "beginCaptures": { "1": { "name": "punctuation.definition.typeparameters.begin.js" } }, "end": "(>)", "endCaptures": { "1": { "name": "punctuation.definition.typeparameters.end.js" } }, "patterns": [ { "include": "#comment" }, { "name": "storage.modifier.js", "match": "(?<!\\.|\\$)\\b(extends)\\b(?!\\$)" }, { "name": "keyword.operator.assignment.js", "match": "\\=(?!>)" }, { "include": "#type" }, { "include": "#punctuation-comma" } ] }, "variable-initializer": { "patterns": [ { "begin": "(?<!=|!)(=)(?!=)(?=\\s*\\S)", "beginCaptures": { "1": { "name": "keyword.operator.assignment.js" } }, "end": "(?=$|^|[,);}\\]])", "patterns": [ { "include": "#expression" } ] }, { "begin": "(?<!=|!)(=)(?!=)", "beginCaptures": { "1": { "name": "keyword.operator.assignment.js" } }, "end": "(?=[,);}\\]])|(?=^\\s*$)|(?<=\\S)(?<!=)(?=\\s*$)", "patterns": [ { "include": "#expression" } ] } ] }, "for-loop": { "begin": "(?<!\\.|\\$)\\b(for)(?:\\s+(await))?\\s*(\\()", "beginCaptures":