Path: blob/main/extensions/javascript/syntaxes/JavaScript.tmLanguage.json
3316 views
{1"information_for_contributors": [2"This file has been converted from https://github.com/microsoft/TypeScript-TmLanguage/blob/master/TypeScriptReact.tmLanguage",3"If you want to provide a fix or improvement, please create a pull request against the original repository.",4"Once accepted there, we are happy to receive an update request."5],6"version": "https://github.com/microsoft/TypeScript-TmLanguage/commit/48f608692aa6d6ad7bd65b478187906c798234a8",7"name": "JavaScript (with React support)",8"scopeName": "source.js",9"patterns": [10{11"include": "#directives"12},13{14"include": "#statements"15},16{17"include": "#shebang"18}19],20"repository": {21"shebang": {22"name": "comment.line.shebang.js",23"match": "\\A(#!).*(?=$)",24"captures": {25"1": {26"name": "punctuation.definition.comment.js"27}28}29},30"statements": {31"patterns": [32{33"include": "#declaration"34},35{36"include": "#control-statement"37},38{39"include": "#after-operator-block-as-object-literal"40},41{42"include": "#decl-block"43},44{45"include": "#label"46},47{48"include": "#expression"49},50{51"include": "#punctuation-semicolon"52},53{54"include": "#string"55},56{57"include": "#comment"58}59]60},61"declaration": {62"patterns": [63{64"include": "#decorator"65},66{67"include": "#var-expr"68},69{70"include": "#function-declaration"71},72{73"include": "#class-declaration"74},75{76"include": "#interface-declaration"77},78{79"include": "#enum-declaration"80},81{82"include": "#namespace-declaration"83},84{85"include": "#type-alias-declaration"86},87{88"include": "#import-equals-declaration"89},90{91"include": "#import-declaration"92},93{94"include": "#export-declaration"95},96{97"name": "storage.modifier.js",98"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(declare|export)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"99}100]101},102"control-statement": {103"patterns": [104{105"include": "#switch-statement"106},107{108"include": "#for-loop"109},110{111"name": "keyword.control.trycatch.js",112"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"113},114{115"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|goto)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",116"captures": {117"1": {118"name": "keyword.control.loop.js"119},120"2": {121"name": "entity.name.label.js"122}123}124},125{126"name": "keyword.control.loop.js",127"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"128},129{130"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(return)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",131"beginCaptures": {132"0": {133"name": "keyword.control.flow.js"134}135},136"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))",137"patterns": [138{139"include": "#expression"140}141]142},143{144"name": "keyword.control.switch.js",145"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"146},147{148"include": "#if-statement"149},150{151"name": "keyword.control.conditional.js",152"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"153},154{155"name": "keyword.control.with.js",156"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(with)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"157},158{159"name": "keyword.control.js",160"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(package)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"161},162{163"name": "keyword.other.debugger.js",164"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(debugger)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"165}166]167},168"label": {169"patterns": [170{171"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)(?=\\s*\\{)",172"beginCaptures": {173"1": {174"name": "entity.name.label.js"175},176"2": {177"name": "punctuation.separator.label.js"178}179},180"end": "(?<=\\})",181"patterns": [182{183"include": "#decl-block"184}185]186},187{188"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)",189"captures": {190"1": {191"name": "entity.name.label.js"192},193"2": {194"name": "punctuation.separator.label.js"195}196}197}198]199},200"expression": {201"patterns": [202{203"include": "#expressionWithoutIdentifiers"204},205{206"include": "#identifiers"207},208{209"include": "#expressionPunctuations"210}211]212},213"expressionWithoutIdentifiers": {214"patterns": [215{216"include": "#jsx"217},218{219"include": "#string"220},221{222"include": "#regex"223},224{225"include": "#comment"226},227{228"include": "#function-expression"229},230{231"include": "#class-expression"232},233{234"include": "#arrow-function"235},236{237"include": "#paren-expression-possibly-arrow"238},239{240"include": "#cast"241},242{243"include": "#ternary-expression"244},245{246"include": "#new-expr"247},248{249"include": "#instanceof-expr"250},251{252"include": "#object-literal"253},254{255"include": "#expression-operators"256},257{258"include": "#function-call"259},260{261"include": "#literal"262},263{264"include": "#support-objects"265},266{267"include": "#paren-expression"268}269]270},271"expressionPunctuations": {272"patterns": [273{274"include": "#punctuation-comma"275},276{277"include": "#punctuation-accessor"278}279]280},281"decorator": {282"name": "meta.decorator.js",283"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))\\@",284"beginCaptures": {285"0": {286"name": "punctuation.decorator.js"287}288},289"end": "(?=\\s)",290"patterns": [291{292"include": "#expression"293}294]295},296"var-expr": {297"patterns": [298{299"name": "meta.var.expr.js",300"begin": "(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",301"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*$)))",302"patterns": [303{304"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",305"beginCaptures": {306"1": {307"name": "keyword.control.export.js"308},309"2": {310"name": "storage.modifier.js"311},312"3": {313"name": "storage.type.js"314}315},316"end": "(?=\\S)"317},318{319"include": "#destructuring-variable"320},321{322"include": "#var-single-variable"323},324{325"include": "#variable-initializer"326},327{328"include": "#comment"329},330{331"begin": "(,)\\s*(?=$|\\/\\/)",332"beginCaptures": {333"1": {334"name": "punctuation.separator.comma.js"335}336},337"end": "(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",338"patterns": [339{340"include": "#single-line-comment-consuming-line-ending"341},342{343"include": "#comment"344},345{346"include": "#destructuring-variable"347},348{349"include": "#var-single-variable"350},351{352"include": "#punctuation-comma"353}354]355},356{357"include": "#punctuation-comma"358}359]360},361{362"name": "meta.var.expr.js",363"begin": "(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",364"beginCaptures": {365"1": {366"name": "keyword.control.export.js"367},368"2": {369"name": "storage.modifier.js"370},371"3": {372"name": "storage.type.js"373}374},375"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*$)))",376"patterns": [377{378"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",379"beginCaptures": {380"1": {381"name": "keyword.control.export.js"382},383"2": {384"name": "storage.modifier.js"385},386"3": {387"name": "storage.type.js"388}389},390"end": "(?=\\S)"391},392{393"include": "#destructuring-const"394},395{396"include": "#var-single-const"397},398{399"include": "#variable-initializer"400},401{402"include": "#comment"403},404{405"begin": "(,)\\s*(?=$|\\/\\/)",406"beginCaptures": {407"1": {408"name": "punctuation.separator.comma.js"409}410},411"end": "(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",412"patterns": [413{414"include": "#single-line-comment-consuming-line-ending"415},416{417"include": "#comment"418},419{420"include": "#destructuring-const"421},422{423"include": "#var-single-const"424},425{426"include": "#punctuation-comma"427}428]429},430{431"include": "#punctuation-comma"432}433]434},435{436"name": "meta.var.expr.js",437"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:]])(?:(?=\\.\\.\\.)|(?!\\.)))",438"beginCaptures": {439"1": {440"name": "keyword.control.export.js"441},442"2": {443"name": "storage.modifier.js"444},445"3": {446"name": "storage.type.js"447}448},449"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*$)))",450"patterns": [451{452"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*",453"beginCaptures": {454"1": {455"name": "keyword.control.export.js"456},457"2": {458"name": "storage.modifier.js"459},460"3": {461"name": "storage.type.js"462}463},464"end": "(?=\\S)"465},466{467"include": "#var-single-const"468},469{470"include": "#variable-initializer"471},472{473"include": "#comment"474},475{476"begin": "(,)\\s*((?!\\S)|(?=\\/\\/))",477"beginCaptures": {478"1": {479"name": "punctuation.separator.comma.js"480}481},482"end": "(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",483"patterns": [484{485"include": "#single-line-comment-consuming-line-ending"486},487{488"include": "#comment"489},490{491"include": "#var-single-const"492},493{494"include": "#punctuation-comma"495}496]497},498{499"include": "#punctuation-comma"500}501]502}503]504},505"var-single-variable": {506"patterns": [507{508"name": "meta.var-single-variable.expr.js",509"begin": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\!)?(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))",510"beginCaptures": {511"1": {512"name": "meta.definition.variable.js entity.name.function.js"513},514"2": {515"name": "keyword.operator.definiteassignment.js"516}517},518"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)))",519"patterns": [520{521"include": "#var-single-variable-type-annotation"522}523]524},525{526"name": "meta.var-single-variable.expr.js",527"begin": "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])(\\!)?",528"beginCaptures": {529"1": {530"name": "meta.definition.variable.js variable.other.constant.js"531},532"2": {533"name": "keyword.operator.definiteassignment.js"534}535},536"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)))",537"patterns": [538{539"include": "#var-single-variable-type-annotation"540}541]542},543{544"name": "meta.var-single-variable.expr.js",545"begin": "([_$[:alpha:]][_$[:alnum:]]*)(\\!)?",546"beginCaptures": {547"1": {548"name": "meta.definition.variable.js variable.other.readwrite.js"549},550"2": {551"name": "keyword.operator.definiteassignment.js"552}553},554"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)))",555"patterns": [556{557"include": "#var-single-variable-type-annotation"558}559]560}561]562},563"var-single-const": {564"patterns": [565{566"name": "meta.var-single-variable.expr.js",567"begin": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))",568"beginCaptures": {569"1": {570"name": "meta.definition.variable.js variable.other.constant.js entity.name.function.js"571}572},573"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)))",574"patterns": [575{576"include": "#var-single-variable-type-annotation"577}578]579},580{581"name": "meta.var-single-variable.expr.js",582"begin": "([_$[:alpha:]][_$[:alnum:]]*)",583"beginCaptures": {584"1": {585"name": "meta.definition.variable.js variable.other.constant.js"586}587},588"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)))",589"patterns": [590{591"include": "#var-single-variable-type-annotation"592}593]594}595]596},597"var-single-variable-type-annotation": {598"patterns": [599{600"include": "#type-annotation"601},602{603"include": "#string"604},605{606"include": "#comment"607}608]609},610"destructuring-variable": {611"patterns": [612{613"name": "meta.object-binding-pattern-variable.js",614"begin": "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",615"end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",616"patterns": [617{618"include": "#object-binding-pattern"619},620{621"include": "#type-annotation"622},623{624"include": "#comment"625}626]627},628{629"name": "meta.array-binding-pattern-variable.js",630"begin": "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",631"end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",632"patterns": [633{634"include": "#array-binding-pattern"635},636{637"include": "#type-annotation"638},639{640"include": "#comment"641}642]643}644]645},646"destructuring-const": {647"patterns": [648{649"name": "meta.object-binding-pattern-variable.js",650"begin": "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",651"end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",652"patterns": [653{654"include": "#object-binding-pattern-const"655},656{657"include": "#type-annotation"658},659{660"include": "#comment"661}662]663},664{665"name": "meta.array-binding-pattern-variable.js",666"begin": "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",667"end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",668"patterns": [669{670"include": "#array-binding-pattern-const"671},672{673"include": "#type-annotation"674},675{676"include": "#comment"677}678]679}680]681},682"object-binding-element": {683"patterns": [684{685"include": "#comment"686},687{688"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(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",689"end": "(?=,|\\})",690"patterns": [691{692"include": "#object-binding-element-propertyName"693},694{695"include": "#binding-element"696}697]698},699{700"include": "#object-binding-pattern"701},702{703"include": "#destructuring-variable-rest"704},705{706"include": "#variable-initializer"707},708{709"include": "#punctuation-comma"710}711]712},713"object-binding-element-const": {714"patterns": [715{716"include": "#comment"717},718{719"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(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",720"end": "(?=,|\\})",721"patterns": [722{723"include": "#object-binding-element-propertyName"724},725{726"include": "#binding-element-const"727}728]729},730{731"include": "#object-binding-pattern-const"732},733{734"include": "#destructuring-variable-rest-const"735},736{737"include": "#variable-initializer"738},739{740"include": "#punctuation-comma"741}742]743},744"object-binding-element-propertyName": {745"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(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",746"end": "(:)",747"endCaptures": {748"0": {749"name": "punctuation.destructuring.js"750}751},752"patterns": [753{754"include": "#string"755},756{757"include": "#array-literal"758},759{760"include": "#numeric-literal"761},762{763"name": "variable.object.property.js",764"match": "([_$[:alpha:]][_$[:alnum:]]*)"765}766]767},768"binding-element": {769"patterns": [770{771"include": "#comment"772},773{774"include": "#string"775},776{777"include": "#numeric-literal"778},779{780"include": "#regex"781},782{783"include": "#object-binding-pattern"784},785{786"include": "#array-binding-pattern"787},788{789"include": "#destructuring-variable-rest"790},791{792"include": "#variable-initializer"793}794]795},796"binding-element-const": {797"patterns": [798{799"include": "#comment"800},801{802"include": "#string"803},804{805"include": "#numeric-literal"806},807{808"include": "#regex"809},810{811"include": "#object-binding-pattern-const"812},813{814"include": "#array-binding-pattern-const"815},816{817"include": "#destructuring-variable-rest-const"818},819{820"include": "#variable-initializer"821}822]823},824"destructuring-variable-rest": {825"match": "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",826"captures": {827"1": {828"name": "keyword.operator.rest.js"829},830"2": {831"name": "meta.definition.variable.js variable.other.readwrite.js"832}833}834},835"destructuring-variable-rest-const": {836"match": "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",837"captures": {838"1": {839"name": "keyword.operator.rest.js"840},841"2": {842"name": "meta.definition.variable.js variable.other.constant.js"843}844}845},846"object-binding-pattern": {847"begin": "(?:(\\.\\.\\.)\\s*)?(\\{)",848"beginCaptures": {849"1": {850"name": "keyword.operator.rest.js"851},852"2": {853"name": "punctuation.definition.binding-pattern.object.js"854}855},856"end": "\\}",857"endCaptures": {858"0": {859"name": "punctuation.definition.binding-pattern.object.js"860}861},862"patterns": [863{864"include": "#object-binding-element"865}866]867},868"object-binding-pattern-const": {869"begin": "(?:(\\.\\.\\.)\\s*)?(\\{)",870"beginCaptures": {871"1": {872"name": "keyword.operator.rest.js"873},874"2": {875"name": "punctuation.definition.binding-pattern.object.js"876}877},878"end": "\\}",879"endCaptures": {880"0": {881"name": "punctuation.definition.binding-pattern.object.js"882}883},884"patterns": [885{886"include": "#object-binding-element-const"887}888]889},890"array-binding-pattern": {891"begin": "(?:(\\.\\.\\.)\\s*)?(\\[)",892"beginCaptures": {893"1": {894"name": "keyword.operator.rest.js"895},896"2": {897"name": "punctuation.definition.binding-pattern.array.js"898}899},900"end": "\\]",901"endCaptures": {902"0": {903"name": "punctuation.definition.binding-pattern.array.js"904}905},906"patterns": [907{908"include": "#binding-element"909},910{911"include": "#punctuation-comma"912}913]914},915"array-binding-pattern-const": {916"begin": "(?:(\\.\\.\\.)\\s*)?(\\[)",917"beginCaptures": {918"1": {919"name": "keyword.operator.rest.js"920},921"2": {922"name": "punctuation.definition.binding-pattern.array.js"923}924},925"end": "\\]",926"endCaptures": {927"0": {928"name": "punctuation.definition.binding-pattern.array.js"929}930},931"patterns": [932{933"include": "#binding-element-const"934},935{936"include": "#punctuation-comma"937}938]939},940"parameter-name": {941"patterns": [942{943"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)",944"captures": {945"1": {946"name": "storage.modifier.js"947}948}949},950{951"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))",952"captures": {953"1": {954"name": "storage.modifier.js"955},956"2": {957"name": "keyword.operator.rest.js"958},959"3": {960"name": "entity.name.function.js variable.language.this.js"961},962"4": {963"name": "entity.name.function.js"964},965"5": {966"name": "keyword.operator.optional.js"967}968}969},970{971"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)",972"captures": {973"1": {974"name": "storage.modifier.js"975},976"2": {977"name": "keyword.operator.rest.js"978},979"3": {980"name": "variable.parameter.js variable.language.this.js"981},982"4": {983"name": "variable.parameter.js"984},985"5": {986"name": "keyword.operator.optional.js"987}988}989}990]991},992"destructuring-parameter": {993"patterns": [994{995"name": "meta.parameter.object-binding-pattern.js",996"begin": "(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\{)",997"beginCaptures": {998"1": {999"name": "keyword.operator.rest.js"1000},1001"2": {1002"name": "punctuation.definition.binding-pattern.object.js"1003}1004},1005"end": "\\}",1006"endCaptures": {1007"0": {1008"name": "punctuation.definition.binding-pattern.object.js"1009}1010},1011"patterns": [1012{1013"include": "#parameter-object-binding-element"1014}1015]1016},1017{1018"name": "meta.paramter.array-binding-pattern.js",1019"begin": "(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\[)",1020"beginCaptures": {1021"1": {1022"name": "keyword.operator.rest.js"1023},1024"2": {1025"name": "punctuation.definition.binding-pattern.array.js"1026}1027},1028"end": "\\]",1029"endCaptures": {1030"0": {1031"name": "punctuation.definition.binding-pattern.array.js"1032}1033},1034"patterns": [1035{1036"include": "#parameter-binding-element"1037},1038{1039"include": "#punctuation-comma"1040}1041]1042}1043]1044},1045"parameter-object-binding-element": {1046"patterns": [1047{1048"include": "#comment"1049},1050{1051"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(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",1052"end": "(?=,|\\})",1053"patterns": [1054{1055"include": "#object-binding-element-propertyName"1056},1057{1058"include": "#parameter-binding-element"1059},1060{1061"include": "#paren-expression"1062}1063]1064},1065{1066"include": "#parameter-object-binding-pattern"1067},1068{1069"include": "#destructuring-parameter-rest"1070},1071{1072"include": "#variable-initializer"1073},1074{1075"include": "#punctuation-comma"1076}1077]1078},1079"parameter-binding-element": {1080"patterns": [1081{1082"include": "#comment"1083},1084{1085"include": "#string"1086},1087{1088"include": "#numeric-literal"1089},1090{1091"include": "#regex"1092},1093{1094"include": "#parameter-object-binding-pattern"1095},1096{1097"include": "#parameter-array-binding-pattern"1098},1099{1100"include": "#destructuring-parameter-rest"1101},1102{1103"include": "#variable-initializer"1104}1105]1106},1107"destructuring-parameter-rest": {1108"match": "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",1109"captures": {1110"1": {1111"name": "keyword.operator.rest.js"1112},1113"2": {1114"name": "variable.parameter.js"1115}1116}1117},1118"parameter-object-binding-pattern": {1119"begin": "(?:(\\.\\.\\.)\\s*)?(\\{)",1120"beginCaptures": {1121"1": {1122"name": "keyword.operator.rest.js"1123},1124"2": {1125"name": "punctuation.definition.binding-pattern.object.js"1126}1127},1128"end": "\\}",1129"endCaptures": {1130"0": {1131"name": "punctuation.definition.binding-pattern.object.js"1132}1133},1134"patterns": [1135{1136"include": "#parameter-object-binding-element"1137}1138]1139},1140"parameter-array-binding-pattern": {1141"begin": "(?:(\\.\\.\\.)\\s*)?(\\[)",1142"beginCaptures": {1143"1": {1144"name": "keyword.operator.rest.js"1145},1146"2": {1147"name": "punctuation.definition.binding-pattern.array.js"1148}1149},1150"end": "\\]",1151"endCaptures": {1152"0": {1153"name": "punctuation.definition.binding-pattern.array.js"1154}1155},1156"patterns": [1157{1158"include": "#parameter-binding-element"1159},1160{1161"include": "#punctuation-comma"1162}1163]1164},1165"field-declaration": {1166"name": "meta.field.declaration.js",1167"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(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|\\}|$))",1168"beginCaptures": {1169"1": {1170"name": "storage.modifier.js"1171}1172},1173"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(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|$))))|(?<=\\})",1174"patterns": [1175{1176"include": "#variable-initializer"1177},1178{1179"include": "#type-annotation"1180},1181{1182"include": "#string"1183},1184{1185"include": "#array-literal"1186},1187{1188"include": "#numeric-literal"1189},1190{1191"include": "#comment"1192},1193{1194"match": "(?x)(\\#?[_$[:alpha:]][_$[:alnum:]]*)(?:(\\?)|(\\!))?(?=\\s*\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))",1195"captures": {1196"1": {1197"name": "meta.definition.property.js entity.name.function.js"1198},1199"2": {1200"name": "keyword.operator.optional.js"1201},1202"3": {1203"name": "keyword.operator.definiteassignment.js"1204}1205}1206},1207{1208"name": "meta.definition.property.js variable.object.property.js",1209"match": "\\#?[_$[:alpha:]][_$[:alnum:]]*"1210},1211{1212"name": "keyword.operator.optional.js",1213"match": "\\?"1214},1215{1216"name": "keyword.operator.definiteassignment.js",1217"match": "\\!"1218}1219]1220},1221"variable-initializer": {1222"patterns": [1223{1224"begin": "(?<!=|!)(=)(?!=)(?=\\s*\\S)(?!\\s*.*=>\\s*$)",1225"beginCaptures": {1226"1": {1227"name": "keyword.operator.assignment.js"1228}1229},1230"end": "(?=$|^|[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",1231"patterns": [1232{1233"include": "#expression"1234}1235]1236},1237{1238"begin": "(?<!=|!)(=)(?!=)",1239"beginCaptures": {1240"1": {1241"name": "keyword.operator.assignment.js"1242}1243},1244"end": "(?=[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))|(?=^\\s*$)|(?<![\\|\\&\\+\\-\\*\\/])(?<=\\S)(?<!=)(?=\\s*$)",1245"patterns": [1246{1247"include": "#expression"1248}1249]1250}1251]1252},1253"function-declaration": {1254"name": "meta.function.js",1255"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",1256"beginCaptures": {1257"1": {1258"name": "keyword.control.export.js"1259},1260"2": {1261"name": "storage.modifier.js"1262},1263"3": {1264"name": "storage.modifier.async.js"1265},1266"4": {1267"name": "storage.type.function.js"1268},1269"5": {1270"name": "keyword.generator.asterisk.js"1271},1272"6": {1273"name": "meta.definition.function.js entity.name.function.js"1274}1275},1276"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))|(?<=\\})",1277"patterns": [1278{1279"include": "#function-name"1280},1281{1282"include": "#function-body"1283}1284]1285},1286"function-expression": {1287"name": "meta.function.expression.js",1288"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",1289"beginCaptures": {1290"1": {1291"name": "storage.modifier.async.js"1292},1293"2": {1294"name": "storage.type.function.js"1295},1296"3": {1297"name": "keyword.generator.asterisk.js"1298},1299"4": {1300"name": "meta.definition.function.js entity.name.function.js"1301}1302},1303"end": "(?=;)|(?<=\\})",1304"patterns": [1305{1306"include": "#function-name"1307},1308{1309"include": "#single-line-comment-consuming-line-ending"1310},1311{1312"include": "#function-body"1313}1314]1315},1316"function-name": {1317"name": "meta.definition.function.js entity.name.function.js",1318"match": "[_$[:alpha:]][_$[:alnum:]]*"1319},1320"function-body": {1321"patterns": [1322{1323"include": "#comment"1324},1325{1326"include": "#type-parameters"1327},1328{1329"include": "#function-parameters"1330},1331{1332"include": "#return-type"1333},1334{1335"include": "#type-function-return-type"1336},1337{1338"include": "#decl-block"1339},1340{1341"name": "keyword.generator.asterisk.js",1342"match": "\\*"1343}1344]1345},1346"method-declaration": {1347"patterns": [1348{1349"name": "meta.method.declaration.js",1350"begin": "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?\\s*\\b(constructor)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",1351"beginCaptures": {1352"1": {1353"name": "storage.modifier.js"1354},1355"2": {1356"name": "storage.modifier.js"1357},1358"3": {1359"name": "storage.modifier.js"1360},1361"4": {1362"name": "storage.modifier.async.js"1363},1364"5": {1365"name": "storage.type.js"1366}1367},1368"end": "(?=\\}|;|,|$)|(?<=\\})",1369"patterns": [1370{1371"include": "#method-declaration-name"1372},1373{1374"include": "#function-body"1375}1376]1377},1378{1379"name": "meta.method.declaration.js",1380"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*))?[\\(])",1381"beginCaptures": {1382"1": {1383"name": "storage.modifier.js"1384},1385"2": {1386"name": "storage.modifier.js"1387},1388"3": {1389"name": "storage.modifier.js"1390},1391"4": {1392"name": "storage.modifier.async.js"1393},1394"5": {1395"name": "keyword.operator.new.js"1396},1397"6": {1398"name": "keyword.generator.asterisk.js"1399}1400},1401"end": "(?=\\}|;|,|$)|(?<=\\})",1402"patterns": [1403{1404"include": "#method-declaration-name"1405},1406{1407"include": "#function-body"1408}1409]1410},1411{1412"name": "meta.method.declaration.js",1413"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(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",1414"beginCaptures": {1415"1": {1416"name": "storage.modifier.js"1417},1418"2": {1419"name": "storage.modifier.js"1420},1421"3": {1422"name": "storage.modifier.js"1423},1424"4": {1425"name": "storage.modifier.async.js"1426},1427"5": {1428"name": "storage.type.property.js"1429},1430"6": {1431"name": "keyword.generator.asterisk.js"1432}1433},1434"end": "(?=\\}|;|,|$)|(?<=\\})",1435"patterns": [1436{1437"include": "#method-declaration-name"1438},1439{1440"include": "#function-body"1441}1442]1443}1444]1445},1446"object-literal-method-declaration": {1447"name": "meta.method.declaration.js",1448"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(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",1449"beginCaptures": {1450"1": {1451"name": "storage.modifier.async.js"1452},1453"2": {1454"name": "storage.type.property.js"1455},1456"3": {1457"name": "keyword.generator.asterisk.js"1458}1459},1460"end": "(?=\\}|;|,)|(?<=\\})",1461"patterns": [1462{1463"include": "#method-declaration-name"1464},1465{1466"include": "#function-body"1467},1468{1469"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(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",1470"beginCaptures": {1471"1": {1472"name": "storage.modifier.async.js"1473},1474"2": {1475"name": "storage.type.property.js"1476},1477"3": {1478"name": "keyword.generator.asterisk.js"1479}1480},1481"end": "(?=\\(|\\<)",1482"patterns": [1483{1484"include": "#method-declaration-name"1485}1486]1487}1488]1489},1490"method-declaration-name": {1491"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(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??)\\s*[\\(\\<])",1492"end": "(?=\\(|\\<)",1493"patterns": [1494{1495"include": "#string"1496},1497{1498"include": "#array-literal"1499},1500{1501"include": "#numeric-literal"1502},1503{1504"name": "meta.definition.method.js entity.name.function.js",1505"match": "[_$[:alpha:]][_$[:alnum:]]*"1506},1507{1508"name": "keyword.operator.optional.js",1509"match": "\\?"1510}1511]1512},1513"arrow-function": {1514"patterns": [1515{1516"name": "meta.arrow.js",1517"match": "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(?==>)",1518"captures": {1519"1": {1520"name": "storage.modifier.async.js"1521},1522"2": {1523"name": "variable.parameter.js"1524}1525}1526},1527{1528"name": "meta.arrow.js",1529"begin": "(?x) (?:\n (?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\n)? ((?<![})!\\]])\\s*\n (?=\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n )\n)",1530"beginCaptures": {1531"1": {1532"name": "storage.modifier.async.js"1533}1534},1535"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+))",1536"patterns": [1537{1538"include": "#comment"1539},1540{1541"include": "#type-parameters"1542},1543{1544"include": "#function-parameters"1545},1546{1547"include": "#arrow-return-type"1548},1549{1550"include": "#possibly-arrow-return-type"1551}1552]1553},1554{1555"name": "meta.arrow.js",1556"begin": "=>",1557"beginCaptures": {1558"0": {1559"name": "storage.type.function.arrow.js"1560}1561},1562"end": "((?<=\\}|\\S)(?<!=>)|((?!\\{)(?=\\S)))(?!\\/[\\/\\*])",1563"patterns": [1564{1565"include": "#single-line-comment-consuming-line-ending"1566},1567{1568"include": "#decl-block"1569},1570{1571"include": "#expression"1572}1573]1574}1575]1576},1577"indexer-declaration": {1578"name": "meta.indexer.declaration.js",1579"begin": "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=:)",1580"beginCaptures": {1581"1": {1582"name": "storage.modifier.js"1583},1584"2": {1585"name": "meta.brace.square.js"1586},1587"3": {1588"name": "variable.parameter.js"1589}1590},1591"end": "(\\])\\s*(\\?\\s*)?|$",1592"endCaptures": {1593"1": {1594"name": "meta.brace.square.js"1595},1596"2": {1597"name": "keyword.operator.optional.js"1598}1599},1600"patterns": [1601{1602"include": "#type-annotation"1603}1604]1605},1606"indexer-mapped-type-declaration": {1607"name": "meta.indexer.mappedtype.declaration.js",1608"begin": "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([+-])?(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s+(in)\\s+",1609"beginCaptures": {1610"1": {1611"name": "keyword.operator.type.modifier.js"1612},1613"2": {1614"name": "storage.modifier.js"1615},1616"3": {1617"name": "meta.brace.square.js"1618},1619"4": {1620"name": "entity.name.type.js"1621},1622"5": {1623"name": "keyword.operator.expression.in.js"1624}1625},1626"end": "(\\])([+-])?\\s*(\\?\\s*)?|$",1627"endCaptures": {1628"1": {1629"name": "meta.brace.square.js"1630},1631"2": {1632"name": "keyword.operator.type.modifier.js"1633},1634"3": {1635"name": "keyword.operator.optional.js"1636}1637},1638"patterns": [1639{1640"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+",1641"captures": {1642"1": {1643"name": "keyword.control.as.js"1644}1645}1646},1647{1648"include": "#type"1649}1650]1651},1652"function-parameters": {1653"name": "meta.parameters.js",1654"begin": "\\(",1655"beginCaptures": {1656"0": {1657"name": "punctuation.definition.parameters.begin.js"1658}1659},1660"end": "\\)",1661"endCaptures": {1662"0": {1663"name": "punctuation.definition.parameters.end.js"1664}1665},1666"patterns": [1667{1668"include": "#function-parameters-body"1669}1670]1671},1672"function-parameters-body": {1673"patterns": [1674{1675"include": "#comment"1676},1677{1678"include": "#string"1679},1680{1681"include": "#decorator"1682},1683{1684"include": "#destructuring-parameter"1685},1686{1687"include": "#parameter-name"1688},1689{1690"include": "#parameter-type-annotation"1691},1692{1693"include": "#variable-initializer"1694},1695{1696"name": "punctuation.separator.parameter.js",1697"match": ","1698}1699]1700},1701"class-declaration": {1702"name": "meta.class.js",1703"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(class)\\b(?=\\s+|/[/*])",1704"beginCaptures": {1705"1": {1706"name": "keyword.control.export.js"1707},1708"2": {1709"name": "storage.modifier.js"1710},1711"3": {1712"name": "storage.modifier.js"1713},1714"4": {1715"name": "storage.type.class.js"1716}1717},1718"end": "(?<=\\})",1719"patterns": [1720{1721"include": "#class-declaration-or-expression-patterns"1722}1723]1724},1725"class-expression": {1726"name": "meta.class.js",1727"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(class)\\b(?=\\s+|[<{]|\\/[\\/*])",1728"beginCaptures": {1729"1": {1730"name": "storage.modifier.js"1731},1732"2": {1733"name": "storage.type.class.js"1734}1735},1736"end": "(?<=\\})",1737"patterns": [1738{1739"include": "#class-declaration-or-expression-patterns"1740}1741]1742},1743"class-declaration-or-expression-patterns": {1744"patterns": [1745{1746"include": "#comment"1747},1748{1749"include": "#class-or-interface-heritage"1750},1751{1752"match": "[_$[:alpha:]][_$[:alnum:]]*",1753"captures": {1754"0": {1755"name": "entity.name.type.class.js"1756}1757}1758},1759{1760"include": "#type-parameters"1761},1762{1763"include": "#class-or-interface-body"1764}1765]1766},1767"interface-declaration": {1768"name": "meta.interface.js",1769"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(interface)\\b(?=\\s+|/[/*])",1770"beginCaptures": {1771"1": {1772"name": "keyword.control.export.js"1773},1774"2": {1775"name": "storage.modifier.js"1776},1777"3": {1778"name": "storage.modifier.js"1779},1780"4": {1781"name": "storage.type.interface.js"1782}1783},1784"end": "(?<=\\})",1785"patterns": [1786{1787"include": "#comment"1788},1789{1790"include": "#class-or-interface-heritage"1791},1792{1793"match": "[_$[:alpha:]][_$[:alnum:]]*",1794"captures": {1795"0": {1796"name": "entity.name.type.interface.js"1797}1798}1799},1800{1801"include": "#type-parameters"1802},1803{1804"include": "#class-or-interface-body"1805}1806]1807},1808"class-or-interface-heritage": {1809"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(extends|implements)\\b)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",1810"beginCaptures": {1811"1": {1812"name": "storage.modifier.js"1813}1814},1815"end": "(?=\\{)",1816"patterns": [1817{1818"include": "#comment"1819},1820{1821"include": "#class-or-interface-heritage"1822},1823{1824"include": "#type-parameters"1825},1826{1827"include": "#expressionWithoutIdentifiers"1828},1829{1830"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s*\\??\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\s*)",1831"captures": {1832"1": {1833"name": "entity.name.type.module.js"1834},1835"2": {1836"name": "punctuation.accessor.js"1837},1838"3": {1839"name": "punctuation.accessor.optional.js"1840}1841}1842},1843{1844"match": "([_$[:alpha:]][_$[:alnum:]]*)",1845"captures": {1846"1": {1847"name": "entity.other.inherited-class.js"1848}1849}1850},1851{1852"include": "#expressionPunctuations"1853}1854]1855},1856"class-or-interface-body": {1857"begin": "\\{",1858"beginCaptures": {1859"0": {1860"name": "punctuation.definition.block.js"1861}1862},1863"end": "\\}",1864"endCaptures": {1865"0": {1866"name": "punctuation.definition.block.js"1867}1868},1869"patterns": [1870{1871"include": "#comment"1872},1873{1874"include": "#decorator"1875},1876{1877"begin": "(?<=:)\\s*",1878"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))",1879"patterns": [1880{1881"include": "#expression"1882}1883]1884},1885{1886"include": "#method-declaration"1887},1888{1889"include": "#indexer-declaration"1890},1891{1892"include": "#field-declaration"1893},1894{1895"include": "#string"1896},1897{1898"include": "#type-annotation"1899},1900{1901"include": "#variable-initializer"1902},1903{1904"include": "#access-modifier"1905},1906{1907"include": "#property-accessor"1908},1909{1910"include": "#async-modifier"1911},1912{1913"include": "#after-operator-block-as-object-literal"1914},1915{1916"include": "#decl-block"1917},1918{1919"include": "#expression"1920},1921{1922"include": "#punctuation-comma"1923},1924{1925"include": "#punctuation-semicolon"1926}1927]1928},1929"access-modifier": {1930"name": "storage.modifier.js",1931"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"1932},1933"property-accessor": {1934"name": "storage.type.property.js",1935"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(accessor|get|set)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"1936},1937"async-modifier": {1938"name": "storage.modifier.async.js",1939"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(async)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"1940},1941"enum-declaration": {1942"name": "meta.enum.declaration.js",1943"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:\\b(const)\\s+)?\\b(enum)\\s+([_$[:alpha:]][_$[:alnum:]]*)",1944"beginCaptures": {1945"1": {1946"name": "keyword.control.export.js"1947},1948"2": {1949"name": "storage.modifier.js"1950},1951"3": {1952"name": "storage.modifier.js"1953},1954"4": {1955"name": "storage.type.enum.js"1956},1957"5": {1958"name": "entity.name.type.enum.js"1959}1960},1961"end": "(?<=\\})",1962"patterns": [1963{1964"include": "#comment"1965},1966{1967"begin": "\\{",1968"beginCaptures": {1969"0": {1970"name": "punctuation.definition.block.js"1971}1972},1973"end": "\\}",1974"endCaptures": {1975"0": {1976"name": "punctuation.definition.block.js"1977}1978},1979"patterns": [1980{1981"include": "#comment"1982},1983{1984"begin": "([_$[:alpha:]][_$[:alnum:]]*)",1985"beginCaptures": {1986"0": {1987"name": "variable.other.enummember.js"1988}1989},1990"end": "(?=,|\\}|$)",1991"patterns": [1992{1993"include": "#comment"1994},1995{1996"include": "#variable-initializer"1997}1998]1999},2000{2001"begin": "(?=((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\])))",2002"end": "(?=,|\\}|$)",2003"patterns": [2004{2005"include": "#string"2006},2007{2008"include": "#array-literal"2009},2010{2011"include": "#comment"2012},2013{2014"include": "#variable-initializer"2015}2016]2017},2018{2019"include": "#punctuation-comma"2020}2021]2022}2023]2024},2025"namespace-declaration": {2026"name": "meta.namespace.declaration.js",2027"begin": "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(namespace|module)\\s+(?=[_$[:alpha:]\"'`]))",2028"beginCaptures": {2029"1": {2030"name": "keyword.control.export.js"2031},2032"2": {2033"name": "storage.modifier.js"2034},2035"3": {2036"name": "storage.type.namespace.js"2037}2038},2039"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))",2040"patterns": [2041{2042"include": "#comment"2043},2044{2045"include": "#string"2046},2047{2048"name": "entity.name.type.module.js",2049"match": "([_$[:alpha:]][_$[:alnum:]]*)"2050},2051{2052"include": "#punctuation-accessor"2053},2054{2055"include": "#decl-block"2056}2057]2058},2059"type-alias-declaration": {2060"name": "meta.type.declaration.js",2061"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(type)\\b\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*",2062"beginCaptures": {2063"1": {2064"name": "keyword.control.export.js"2065},2066"2": {2067"name": "storage.modifier.js"2068},2069"3": {2070"name": "storage.type.type.js"2071},2072"4": {2073"name": "entity.name.type.alias.js"2074}2075},2076"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))",2077"patterns": [2078{2079"include": "#comment"2080},2081{2082"include": "#type-parameters"2083},2084{2085"begin": "(=)\\s*(intrinsic)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",2086"beginCaptures": {2087"1": {2088"name": "keyword.operator.assignment.js"2089},2090"2": {2091"name": "keyword.control.intrinsic.js"2092}2093},2094"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))",2095"patterns": [2096{2097"include": "#type"2098}2099]2100},2101{2102"begin": "(=)\\s*",2103"beginCaptures": {2104"1": {2105"name": "keyword.operator.assignment.js"2106}2107},2108"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))",2109"patterns": [2110{2111"include": "#type"2112}2113]2114}2115]2116},2117"import-equals-declaration": {2118"patterns": [2119{2120"name": "meta.import-equals.external.js",2121"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(require)\\s*(\\()",2122"beginCaptures": {2123"1": {2124"name": "keyword.control.export.js"2125},2126"2": {2127"name": "storage.modifier.js"2128},2129"3": {2130"name": "keyword.control.import.js"2131},2132"4": {2133"name": "keyword.control.type.js"2134},2135"5": {2136"name": "variable.other.readwrite.alias.js"2137},2138"6": {2139"name": "keyword.operator.assignment.js"2140},2141"7": {2142"name": "keyword.control.require.js"2143},2144"8": {2145"name": "meta.brace.round.js"2146}2147},2148"end": "\\)",2149"endCaptures": {2150"0": {2151"name": "meta.brace.round.js"2152}2153},2154"patterns": [2155{2156"include": "#comment"2157},2158{2159"include": "#string"2160}2161]2162},2163{2164"name": "meta.import-equals.internal.js",2165"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(?!require\\b)",2166"beginCaptures": {2167"1": {2168"name": "keyword.control.export.js"2169},2170"2": {2171"name": "storage.modifier.js"2172},2173"3": {2174"name": "keyword.control.import.js"2175},2176"4": {2177"name": "keyword.control.type.js"2178},2179"5": {2180"name": "variable.other.readwrite.alias.js"2181},2182"6": {2183"name": "keyword.operator.assignment.js"2184}2185},2186"end": "(?=;|$|^)",2187"patterns": [2188{2189"include": "#single-line-comment-consuming-line-ending"2190},2191{2192"include": "#comment"2193},2194{2195"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",2196"captures": {2197"1": {2198"name": "entity.name.type.module.js"2199},2200"2": {2201"name": "punctuation.accessor.js"2202},2203"3": {2204"name": "punctuation.accessor.optional.js"2205}2206}2207},2208{2209"name": "variable.other.readwrite.js",2210"match": "([_$[:alpha:]][_$[:alnum:]]*)"2211}2212]2213}2214]2215},2216"import-declaration": {2217"name": "meta.import.js",2218"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type)(?!\\s+from))?(?!\\s*[:\\(])(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",2219"beginCaptures": {2220"1": {2221"name": "keyword.control.export.js"2222},2223"2": {2224"name": "storage.modifier.js"2225},2226"3": {2227"name": "keyword.control.import.js"2228},2229"4": {2230"name": "keyword.control.type.js"2231}2232},2233"end": "(?<!^import|[^\\._$[:alnum:]]import)(?=;|$|^)",2234"patterns": [2235{2236"include": "#single-line-comment-consuming-line-ending"2237},2238{2239"include": "#comment"2240},2241{2242"include": "#string"2243},2244{2245"begin": "(?<=^import|[^\\._$[:alnum:]]import)(?!\\s*[\"'])",2246"end": "\\bfrom\\b",2247"endCaptures": {2248"0": {2249"name": "keyword.control.from.js"2250}2251},2252"patterns": [2253{2254"include": "#import-export-declaration"2255}2256]2257},2258{2259"include": "#import-export-declaration"2260}2261]2262},2263"export-declaration": {2264"patterns": [2265{2266"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)\\s+(as)\\s+(namespace)\\s+([_$[:alpha:]][_$[:alnum:]]*)",2267"captures": {2268"1": {2269"name": "keyword.control.export.js"2270},2271"2": {2272"name": "keyword.control.as.js"2273},2274"3": {2275"name": "storage.type.namespace.js"2276},2277"4": {2278"name": "entity.name.type.module.js"2279}2280}2281},2282{2283"name": "meta.export.default.js",2284"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?(?:(?:\\s*(=))|(?:\\s+(default)(?=\\s+)))",2285"beginCaptures": {2286"1": {2287"name": "keyword.control.export.js"2288},2289"2": {2290"name": "keyword.control.type.js"2291},2292"3": {2293"name": "keyword.operator.assignment.js"2294},2295"4": {2296"name": "keyword.control.default.js"2297}2298},2299"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))",2300"patterns": [2301{2302"include": "#interface-declaration"2303},2304{2305"include": "#expression"2306}2307]2308},2309{2310"name": "meta.export.js",2311"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)))",2312"beginCaptures": {2313"1": {2314"name": "keyword.control.export.js"2315},2316"2": {2317"name": "keyword.control.type.js"2318}2319},2320"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))",2321"patterns": [2322{2323"include": "#import-export-declaration"2324}2325]2326}2327]2328},2329"import-export-declaration": {2330"patterns": [2331{2332"include": "#comment"2333},2334{2335"include": "#string"2336},2337{2338"include": "#import-export-block"2339},2340{2341"name": "keyword.control.from.js",2342"match": "\\bfrom\\b"2343},2344{2345"include": "#import-export-assert-clause"2346},2347{2348"include": "#import-export-clause"2349}2350]2351},2352"import-export-assert-clause": {2353"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(with)|(assert))\\s*(\\{)",2354"beginCaptures": {2355"1": {2356"name": "keyword.control.with.js"2357},2358"2": {2359"name": "keyword.control.assert.js"2360},2361"3": {2362"name": "punctuation.definition.block.js"2363}2364},2365"end": "\\}",2366"endCaptures": {2367"0": {2368"name": "punctuation.definition.block.js"2369}2370},2371"patterns": [2372{2373"include": "#comment"2374},2375{2376"include": "#string"2377},2378{2379"name": "meta.object-literal.key.js",2380"match": "(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)"2381},2382{2383"name": "punctuation.separator.key-value.js",2384"match": ":"2385}2386]2387},2388"import-export-block": {2389"name": "meta.block.js",2390"begin": "\\{",2391"beginCaptures": {2392"0": {2393"name": "punctuation.definition.block.js"2394}2395},2396"end": "\\}",2397"endCaptures": {2398"0": {2399"name": "punctuation.definition.block.js"2400}2401},2402"patterns": [2403{2404"include": "#import-export-clause"2405}2406]2407},2408"import-export-clause": {2409"patterns": [2410{2411"include": "#comment"2412},2413{2414"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(?:(\\btype)\\s+)?(?:(\\bdefault)|(\\*)|(\\b[_$[:alpha:]][_$[:alnum:]]*)|((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))))\\s+(as)\\s+(?:(default(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|([_$[:alpha:]][_$[:alnum:]]*)|((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)))",2415"captures": {2416"1": {2417"name": "keyword.control.type.js"2418},2419"2": {2420"name": "keyword.control.default.js"2421},2422"3": {2423"name": "constant.language.import-export-all.js"2424},2425"4": {2426"name": "variable.other.readwrite.js"2427},2428"5": {2429"name": "string.quoted.alias.js"2430},2431"12": {2432"name": "keyword.control.as.js"2433},2434"13": {2435"name": "keyword.control.default.js"2436},2437"14": {2438"name": "variable.other.readwrite.alias.js"2439},2440"15": {2441"name": "string.quoted.alias.js"2442}2443}2444},2445{2446"include": "#punctuation-comma"2447},2448{2449"name": "constant.language.import-export-all.js",2450"match": "\\*"2451},2452{2453"name": "keyword.control.default.js",2454"match": "\\b(default)\\b"2455},2456{2457"match": "(?:(\\btype)\\s+)?(?:([_$[:alpha:]][_$[:alnum:]]*)|((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)))",2458"captures": {2459"1": {2460"name": "keyword.control.type.js"2461},2462"2": {2463"name": "variable.other.readwrite.alias.js"2464},2465"3": {2466"name": "string.quoted.alias.js"2467}2468}2469}2470]2471},2472"switch-statement": {2473"name": "switch-statement.expr.js",2474"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bswitch\\s*\\()",2475"end": "\\}",2476"endCaptures": {2477"0": {2478"name": "punctuation.definition.block.js"2479}2480},2481"patterns": [2482{2483"include": "#comment"2484},2485{2486"name": "switch-expression.expr.js",2487"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(switch)\\s*(\\()",2488"beginCaptures": {2489"1": {2490"name": "keyword.control.switch.js"2491},2492"2": {2493"name": "meta.brace.round.js"2494}2495},2496"end": "\\)",2497"endCaptures": {2498"0": {2499"name": "meta.brace.round.js"2500}2501},2502"patterns": [2503{2504"include": "#expression"2505}2506]2507},2508{2509"name": "switch-block.expr.js",2510"begin": "\\{",2511"beginCaptures": {2512"0": {2513"name": "punctuation.definition.block.js"2514}2515},2516"end": "(?=\\})",2517"patterns": [2518{2519"name": "case-clause.expr.js",2520"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",2521"beginCaptures": {2522"1": {2523"name": "keyword.control.switch.js"2524}2525},2526"end": "(?=:)",2527"patterns": [2528{2529"include": "#expression"2530}2531]2532},2533{2534"begin": "(:)\\s*(\\{)",2535"beginCaptures": {2536"1": {2537"name": "case-clause.expr.js punctuation.definition.section.case-statement.js"2538},2539"2": {2540"name": "meta.block.js punctuation.definition.block.js"2541}2542},2543"end": "\\}",2544"endCaptures": {2545"0": {2546"name": "meta.block.js punctuation.definition.block.js"2547}2548},2549"contentName": "meta.block.js",2550"patterns": [2551{2552"include": "#statements"2553}2554]2555},2556{2557"match": "(:)",2558"captures": {2559"0": {2560"name": "case-clause.expr.js punctuation.definition.section.case-statement.js"2561}2562}2563},2564{2565"include": "#statements"2566}2567]2568}2569]2570},2571"for-loop": {2572"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))for(?=((\\s+|(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*))await)?\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)?(\\())",2573"beginCaptures": {2574"0": {2575"name": "keyword.control.loop.js"2576}2577},2578"end": "(?<=\\))",2579"patterns": [2580{2581"include": "#comment"2582},2583{2584"name": "keyword.control.loop.js",2585"match": "await"2586},2587{2588"begin": "\\(",2589"beginCaptures": {2590"0": {2591"name": "meta.brace.round.js"2592}2593},2594"end": "\\)",2595"endCaptures": {2596"0": {2597"name": "meta.brace.round.js"2598}2599},2600"patterns": [2601{2602"include": "#var-expr"2603},2604{2605"include": "#expression"2606},2607{2608"include": "#punctuation-semicolon"2609}2610]2611}2612]2613},2614"if-statement": {2615"patterns": [2616{2617"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bif\\s*(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))\\s*(?!\\{))",2618"end": "(?=;|$|\\})",2619"patterns": [2620{2621"include": "#comment"2622},2623{2624"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(if)\\s*(\\()",2625"beginCaptures": {2626"1": {2627"name": "keyword.control.conditional.js"2628},2629"2": {2630"name": "meta.brace.round.js"2631}2632},2633"end": "\\)",2634"endCaptures": {2635"0": {2636"name": "meta.brace.round.js"2637}2638},2639"patterns": [2640{2641"include": "#expression"2642}2643]2644},2645{2646"name": "string.regexp.js",2647"begin": "(?<=\\))\\s*\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuvy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",2648"beginCaptures": {2649"0": {2650"name": "punctuation.definition.string.begin.js"2651}2652},2653"end": "(/)([dgimsuvy]*)",2654"endCaptures": {2655"1": {2656"name": "punctuation.definition.string.end.js"2657},2658"2": {2659"name": "keyword.other.js"2660}2661},2662"patterns": [2663{2664"include": "#regexp"2665}2666]2667},2668{2669"include": "#statements"2670}2671]2672}2673]2674},2675"decl-block": {2676"name": "meta.block.js",2677"begin": "\\{",2678"beginCaptures": {2679"0": {2680"name": "punctuation.definition.block.js"2681}2682},2683"end": "\\}",2684"endCaptures": {2685"0": {2686"name": "punctuation.definition.block.js"2687}2688},2689"patterns": [2690{2691"include": "#statements"2692}2693]2694},2695"after-operator-block-as-object-literal": {2696"name": "meta.objectliteral.js",2697"begin": "(?<!\\+\\+|--)(?<=[:=(,\\[?+!>]|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^yield|[^\\._$[:alnum:]]yield|^throw|[^\\._$[:alnum:]]throw|^in|[^\\._$[:alnum:]]in|^of|[^\\._$[:alnum:]]of|^typeof|[^\\._$[:alnum:]]typeof|&&|\\|\\||\\*)\\s*(\\{)",2698"beginCaptures": {2699"1": {2700"name": "punctuation.definition.block.js"2701}2702},2703"end": "\\}",2704"endCaptures": {2705"0": {2706"name": "punctuation.definition.block.js"2707}2708},2709"patterns": [2710{2711"include": "#object-member"2712}2713]2714},2715"object-literal": {2716"name": "meta.objectliteral.js",2717"begin": "\\{",2718"beginCaptures": {2719"0": {2720"name": "punctuation.definition.block.js"2721}2722},2723"end": "\\}",2724"endCaptures": {2725"0": {2726"name": "punctuation.definition.block.js"2727}2728},2729"patterns": [2730{2731"include": "#object-member"2732}2733]2734},2735"object-member": {2736"patterns": [2737{2738"include": "#comment"2739},2740{2741"include": "#object-literal-method-declaration"2742},2743{2744"name": "meta.object.member.js meta.object-literal.key.js",2745"begin": "(?=\\[)",2746"end": "(?=:)|((?<=[\\]])(?=\\s*[\\(\\<]))",2747"patterns": [2748{2749"include": "#comment"2750},2751{2752"include": "#array-literal"2753}2754]2755},2756{2757"name": "meta.object.member.js meta.object-literal.key.js",2758"begin": "(?=[\\'\\\"\\`])",2759"end": "(?=:)|((?<=[\\'\\\"\\`])(?=((\\s*[\\(\\<,}])|(\\s+(as|satisifies)\\s+))))",2760"patterns": [2761{2762"include": "#comment"2763},2764{2765"include": "#string"2766}2767]2768},2769{2770"name": "meta.object.member.js meta.object-literal.key.js",2771"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(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$)))",2772"end": "(?=:)|(?=\\s*([\\(\\<,}])|(\\s+as|satisifies\\s+))",2773"patterns": [2774{2775"include": "#comment"2776},2777{2778"include": "#numeric-literal"2779}2780]2781},2782{2783"name": "meta.method.declaration.js",2784"begin": "(?<=[\\]\\'\\\"\\`])(?=\\s*[\\(\\<])",2785"end": "(?=\\}|;|,)|(?<=\\})",2786"patterns": [2787{2788"include": "#function-body"2789}2790]2791},2792{2793"name": "meta.object.member.js",2794"match": "(?![_$[:alpha:]])([[:digit:]]+)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",2795"captures": {2796"0": {2797"name": "meta.object-literal.key.js"2798},2799"1": {2800"name": "constant.numeric.decimal.js"2801}2802}2803},2804{2805"name": "meta.object.member.js",2806"match": "(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/)*\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))",2807"captures": {2808"0": {2809"name": "meta.object-literal.key.js"2810},2811"1": {2812"name": "entity.name.function.js"2813}2814}2815},2816{2817"name": "meta.object.member.js",2818"match": "(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",2819"captures": {2820"0": {2821"name": "meta.object-literal.key.js"2822}2823}2824},2825{2826"name": "meta.object.member.js",2827"begin": "\\.\\.\\.",2828"beginCaptures": {2829"0": {2830"name": "keyword.operator.spread.js"2831}2832},2833"end": "(?=,|\\})",2834"patterns": [2835{2836"include": "#expression"2837}2838]2839},2840{2841"name": "meta.object.member.js",2842"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$|\\/\\/|\\/\\*)",2843"captures": {2844"1": {2845"name": "variable.other.readwrite.js"2846}2847}2848},2849{2850"name": "meta.object.member.js",2851"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*([,}]|$))",2852"captures": {2853"1": {2854"name": "keyword.control.as.js"2855},2856"2": {2857"name": "storage.modifier.js"2858}2859}2860},2861{2862"name": "meta.object.member.js",2863"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(as)|(satisfies))\\s+",2864"beginCaptures": {2865"1": {2866"name": "keyword.control.as.js"2867},2868"2": {2869"name": "keyword.control.satisfies.js"2870}2871},2872"end": "(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|^|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisifies)\\s+))",2873"patterns": [2874{2875"include": "#type"2876}2877]2878},2879{2880"name": "meta.object.member.js",2881"begin": "(?=[_$[:alpha:]][_$[:alnum:]]*\\s*=)",2882"end": "(?=,|\\}|$|\\/\\/|\\/\\*)",2883"patterns": [2884{2885"include": "#expression"2886}2887]2888},2889{2890"name": "meta.object.member.js",2891"begin": ":",2892"beginCaptures": {2893"0": {2894"name": "meta.object-literal.key.js punctuation.separator.key-value.js"2895}2896},2897"end": "(?=,|\\})",2898"patterns": [2899{2900"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*)))))",2901"beginCaptures": {2902"1": {2903"name": "storage.modifier.async.js"2904}2905},2906"end": "(?<=\\))",2907"patterns": [2908{2909"include": "#type-parameters"2910},2911{2912"begin": "\\(",2913"beginCaptures": {2914"0": {2915"name": "meta.brace.round.js"2916}2917},2918"end": "\\)",2919"endCaptures": {2920"0": {2921"name": "meta.brace.round.js"2922}2923},2924"patterns": [2925{2926"include": "#expression-inside-possibly-arrow-parens"2927}2928]2929}2930]2931},2932{2933"begin": "(?<=:)\\s*(async)?\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",2934"beginCaptures": {2935"1": {2936"name": "storage.modifier.async.js"2937},2938"2": {2939"name": "meta.brace.round.js"2940}2941},2942"end": "\\)",2943"endCaptures": {2944"0": {2945"name": "meta.brace.round.js"2946}2947},2948"patterns": [2949{2950"include": "#expression-inside-possibly-arrow-parens"2951}2952]2953},2954{2955"begin": "(?<=:)\\s*(async)?\\s*(?=\\<\\s*$)",2956"beginCaptures": {2957"1": {2958"name": "storage.modifier.async.js"2959}2960},2961"end": "(?<=\\>)",2962"patterns": [2963{2964"include": "#type-parameters"2965}2966]2967},2968{2969"begin": "(?<=\\>)\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",2970"beginCaptures": {2971"1": {2972"name": "meta.brace.round.js"2973}2974},2975"end": "\\)",2976"endCaptures": {2977"0": {2978"name": "meta.brace.round.js"2979}2980},2981"patterns": [2982{2983"include": "#expression-inside-possibly-arrow-parens"2984}2985]2986},2987{2988"include": "#possibly-arrow-return-type"2989},2990{2991"include": "#expression"2992}2993]2994},2995{2996"include": "#punctuation-comma"2997},2998{2999"include": "#decl-block"3000}3001]3002},3003"ternary-expression": {3004"begin": "(?!\\?\\.\\s*[^[:digit:]])(\\?)(?!\\?)",3005"beginCaptures": {3006"1": {3007"name": "keyword.operator.ternary.js"3008}3009},3010"end": "\\s*(:)",3011"endCaptures": {3012"1": {3013"name": "keyword.operator.ternary.js"3014}3015},3016"patterns": [3017{3018"include": "#expression"3019}3020]3021},3022"function-call": {3023"patterns": [3024{3025"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*)?\\())",3026"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*)?\\())",3027"patterns": [3028{3029"name": "meta.function-call.js",3030"begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",3031"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*)?\\())",3032"patterns": [3033{3034"include": "#function-call-target"3035}3036]3037},3038{3039"include": "#comment"3040},3041{3042"include": "#function-call-optionals"3043},3044{3045"include": "#type-arguments"3046},3047{3048"include": "#paren-expression"3049}3050]3051},3052{3053"begin": "(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",3054"end": "(?<=\\>)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",3055"patterns": [3056{3057"name": "meta.function-call.js",3058"begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",3059"end": "(?=(<\\s*[\\{\\[\\(]\\s*$))",3060"patterns": [3061{3062"include": "#function-call-target"3063}3064]3065},3066{3067"include": "#comment"3068},3069{3070"include": "#function-call-optionals"3071},3072{3073"include": "#type-arguments"3074}3075]3076}3077]3078},3079"function-call-target": {3080"patterns": [3081{3082"include": "#support-function-call-identifiers"3083},3084{3085"name": "entity.name.function.js",3086"match": "(\\#?[_$[:alpha:]][_$[:alnum:]]*)"3087}3088]3089},3090"function-call-optionals": {3091"patterns": [3092{3093"name": "meta.function-call.js punctuation.accessor.optional.js",3094"match": "\\?\\."3095},3096{3097"name": "meta.function-call.js keyword.operator.definiteassignment.js",3098"match": "\\!"3099}3100]3101},3102"support-function-call-identifiers": {3103"patterns": [3104{3105"include": "#literal"3106},3107{3108"include": "#support-objects"3109},3110{3111"include": "#object-identifiers"3112},3113{3114"include": "#punctuation-accessor"3115},3116{3117"name": "keyword.operator.expression.import.js",3118"match": "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*[\\(]\\s*[\\\"\\'\\`]))"3119}3120]3121},3122"new-expr": {3123"name": "new.expr.js",3124"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",3125"beginCaptures": {3126"1": {3127"name": "keyword.operator.new.js"3128}3129},3130"end": "(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",3131"patterns": [3132{3133"include": "#expression"3134}3135]3136},3137"instanceof-expr": {3138"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(instanceof)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",3139"beginCaptures": {3140"1": {3141"name": "keyword.operator.expression.instanceof.js"3142}3143},3144"end": "(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|(===|!==|==|!=)|(([\\&\\~\\^\\|]\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s+instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",3145"patterns": [3146{3147"include": "#type"3148}3149]3150},3151"paren-expression-possibly-arrow": {3152"patterns": [3153{3154"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*)))))",3155"beginCaptures": {3156"1": {3157"name": "storage.modifier.async.js"3158}3159},3160"end": "(?<=\\))",3161"patterns": [3162{3163"include": "#paren-expression-possibly-arrow-with-typeparameters"3164}3165]3166},3167{3168"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*$)",3169"beginCaptures": {3170"1": {3171"name": "storage.modifier.async.js"3172}3173},3174"end": "(?<=\\))",3175"patterns": [3176{3177"include": "#paren-expression-possibly-arrow-with-typeparameters"3178}3179]3180},3181{3182"include": "#possibly-arrow-return-type"3183}3184]3185},3186"paren-expression-possibly-arrow-with-typeparameters": {3187"patterns": [3188{3189"include": "#type-parameters"3190},3191{3192"begin": "\\(",3193"beginCaptures": {3194"0": {3195"name": "meta.brace.round.js"3196}3197},3198"end": "\\)",3199"endCaptures": {3200"0": {3201"name": "meta.brace.round.js"3202}3203},3204"patterns": [3205{3206"include": "#expression-inside-possibly-arrow-parens"3207}3208]3209}3210]3211},3212"expression-inside-possibly-arrow-parens": {3213"patterns": [3214{3215"include": "#expressionWithoutIdentifiers"3216},3217{3218"include": "#comment"3219},3220{3221"include": "#string"3222},3223{3224"include": "#decorator"3225},3226{3227"include": "#destructuring-parameter"3228},3229{3230"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)",3231"captures": {3232"1": {3233"name": "storage.modifier.js"3234}3235}3236},3237{3238"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))",3239"captures": {3240"1": {3241"name": "storage.modifier.js"3242},3243"2": {3244"name": "keyword.operator.rest.js"3245},3246"3": {3247"name": "entity.name.function.js variable.language.this.js"3248},3249"4": {3250"name": "entity.name.function.js"3251},3252"5": {3253"name": "keyword.operator.optional.js"3254}3255}3256},3257{3258"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*[:,]|$)",3259"captures": {3260"1": {3261"name": "storage.modifier.js"3262},3263"2": {3264"name": "keyword.operator.rest.js"3265},3266"3": {3267"name": "variable.parameter.js variable.language.this.js"3268},3269"4": {3270"name": "variable.parameter.js"3271},3272"5": {3273"name": "keyword.operator.optional.js"3274}3275}3276},3277{3278"include": "#type-annotation"3279},3280{3281"include": "#variable-initializer"3282},3283{3284"name": "punctuation.separator.parameter.js",3285"match": ","3286},3287{3288"include": "#identifiers"3289},3290{3291"include": "#expressionPunctuations"3292}3293]3294},3295"paren-expression": {3296"begin": "\\(",3297"beginCaptures": {3298"0": {3299"name": "meta.brace.round.js"3300}3301},3302"end": "\\)",3303"endCaptures": {3304"0": {3305"name": "meta.brace.round.js"3306}3307},3308"patterns": [3309{3310"include": "#expression"3311}3312]3313},3314"cast": {3315"patterns": [3316{3317"include": "#jsx"3318}3319]3320},3321"expression-operators": {3322"patterns": [3323{3324"name": "keyword.control.flow.js",3325"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(await)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"3326},3327{3328"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?=\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*\\*)",3329"beginCaptures": {3330"1": {3331"name": "keyword.control.flow.js"3332}3333},3334"end": "\\*",3335"endCaptures": {3336"0": {3337"name": "keyword.generator.asterisk.js"3338}3339},3340"patterns": [3341{3342"include": "#comment"3343}3344]3345},3346{3347"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s*(\\*))?",3348"captures": {3349"1": {3350"name": "keyword.control.flow.js"3351},3352"2": {3353"name": "keyword.generator.asterisk.js"3354}3355}3356},3357{3358"name": "keyword.operator.expression.delete.js",3359"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))delete(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"3360},3361{3362"name": "keyword.operator.expression.in.js",3363"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))in(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()"3364},3365{3366"name": "keyword.operator.expression.of.js",3367"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))of(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()"3368},3369{3370"name": "keyword.operator.expression.instanceof.js",3371"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"3372},3373{3374"name": "keyword.operator.new.js",3375"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"3376},3377{3378"include": "#typeof-operator"3379},3380{3381"name": "keyword.operator.expression.void.js",3382"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))void(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"3383},3384{3385"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*($|[;,:})\\]]))",3386"captures": {3387"1": {3388"name": "keyword.control.as.js"3389},3390"2": {3391"name": "storage.modifier.js"3392}3393}3394},3395{3396"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(as)|(satisfies))\\s+",3397"beginCaptures": {3398"1": {3399"name": "keyword.control.as.js"3400},3401"2": {3402"name": "keyword.control.satisfies.js"3403}3404},3405"end": "(?=^|[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisfies)\\s+)|(\\s+\\<))",3406"patterns": [3407{3408"include": "#type"3409}3410]3411},3412{3413"name": "keyword.operator.spread.js",3414"match": "\\.\\.\\."3415},3416{3417"name": "keyword.operator.assignment.compound.js",3418"match": "\\*=|(?<!\\()/=|%=|\\+=|\\-="3419},3420{3421"name": "keyword.operator.assignment.compound.bitwise.js",3422"match": "\\&=|\\^=|<<=|>>=|>>>=|\\|="3423},3424{3425"name": "keyword.operator.bitwise.shift.js",3426"match": "<<|>>>|>>"3427},3428{3429"name": "keyword.operator.comparison.js",3430"match": "===|!==|==|!="3431},3432{3433"name": "keyword.operator.relational.js",3434"match": "<=|>=|<>|<|>"3435},3436{3437"match": "(?<=[_$[:alnum:]])(\\!)\\s*(?:(/=)|(?:(/)(?![/*])))",3438"captures": {3439"1": {3440"name": "keyword.operator.logical.js"3441},3442"2": {3443"name": "keyword.operator.assignment.compound.js"3444},3445"3": {3446"name": "keyword.operator.arithmetic.js"3447}3448}3449},3450{3451"name": "keyword.operator.logical.js",3452"match": "\\!|&&|\\|\\||\\?\\?"3453},3454{3455"name": "keyword.operator.bitwise.js",3456"match": "\\&|~|\\^|\\|"3457},3458{3459"name": "keyword.operator.assignment.js",3460"match": "\\="3461},3462{3463"name": "keyword.operator.decrement.js",3464"match": "--"3465},3466{3467"name": "keyword.operator.increment.js",3468"match": "\\+\\+"3469},3470{3471"name": "keyword.operator.arithmetic.js",3472"match": "%|\\*|/|-|\\+"3473},3474{3475"begin": "(?<=[_$[:alnum:])\\]])\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)+(?:(/=)|(?:(/)(?![/*]))))",3476"end": "(?:(/=)|(?:(/)(?!\\*([^\\*]|(\\*[^\\/]))*\\*\\/)))",3477"endCaptures": {3478"1": {3479"name": "keyword.operator.assignment.compound.js"3480},3481"2": {3482"name": "keyword.operator.arithmetic.js"3483}3484},3485"patterns": [3486{3487"include": "#comment"3488}3489]3490},3491{3492"match": "(?<=[_$[:alnum:])\\]])\\s*(?:(/=)|(?:(/)(?![/*])))",3493"captures": {3494"1": {3495"name": "keyword.operator.assignment.compound.js"3496},3497"2": {3498"name": "keyword.operator.arithmetic.js"3499}3500}3501}3502]3503},3504"typeof-operator": {3505"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))typeof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",3506"beginCaptures": {3507"0": {3508"name": "keyword.operator.expression.typeof.js"3509}3510},3511"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))",3512"patterns": [3513{3514"include": "#type-arguments"3515},3516{3517"include": "#expression"3518}3519]3520},3521"literal": {3522"patterns": [3523{3524"include": "#numeric-literal"3525},3526{3527"include": "#boolean-literal"3528},3529{3530"include": "#null-literal"3531},3532{3533"include": "#undefined-literal"3534},3535{3536"include": "#numericConstant-literal"3537},3538{3539"include": "#array-literal"3540},3541{3542"include": "#this-literal"3543},3544{3545"include": "#super-literal"3546}3547]3548},3549"array-literal": {3550"name": "meta.array.literal.js",3551"begin": "\\s*(\\[)",3552"beginCaptures": {3553"1": {3554"name": "meta.brace.square.js"3555}3556},3557"end": "\\]",3558"endCaptures": {3559"0": {3560"name": "meta.brace.square.js"3561}3562},3563"patterns": [3564{3565"include": "#expression"3566},3567{3568"include": "#punctuation-comma"3569}3570]3571},3572"numeric-literal": {3573"patterns": [3574{3575"name": "constant.numeric.hex.js",3576"match": "\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$)",3577"captures": {3578"1": {3579"name": "storage.type.numeric.bigint.js"3580}3581}3582},3583{3584"name": "constant.numeric.binary.js",3585"match": "\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$)",3586"captures": {3587"1": {3588"name": "storage.type.numeric.bigint.js"3589}3590}3591},3592{3593"name": "constant.numeric.octal.js",3594"match": "\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$)",3595"captures": {3596"1": {3597"name": "storage.type.numeric.bigint.js"3598}3599}3600},3601{3602"match": "(?x)\n(?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$)",3603"captures": {3604"0": {3605"name": "constant.numeric.decimal.js"3606},3607"1": {3608"name": "meta.delimiter.decimal.period.js"3609},3610"2": {3611"name": "storage.type.numeric.bigint.js"3612},3613"3": {3614"name": "meta.delimiter.decimal.period.js"3615},3616"4": {3617"name": "storage.type.numeric.bigint.js"3618},3619"5": {3620"name": "meta.delimiter.decimal.period.js"3621},3622"6": {3623"name": "storage.type.numeric.bigint.js"3624},3625"7": {3626"name": "storage.type.numeric.bigint.js"3627},3628"8": {3629"name": "meta.delimiter.decimal.period.js"3630},3631"9": {3632"name": "storage.type.numeric.bigint.js"3633},3634"10": {3635"name": "meta.delimiter.decimal.period.js"3636},3637"11": {3638"name": "storage.type.numeric.bigint.js"3639},3640"12": {3641"name": "meta.delimiter.decimal.period.js"3642},3643"13": {3644"name": "storage.type.numeric.bigint.js"3645},3646"14": {3647"name": "storage.type.numeric.bigint.js"3648}3649}3650}3651]3652},3653"boolean-literal": {3654"patterns": [3655{3656"name": "constant.language.boolean.true.js",3657"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"3658},3659{3660"name": "constant.language.boolean.false.js",3661"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"3662}3663]3664},3665"null-literal": {3666"name": "constant.language.null.js",3667"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))null(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"3668},3669"this-literal": {3670"name": "variable.language.this.js",3671"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))this\\b(?!\\$)"3672},3673"super-literal": {3674"name": "variable.language.super.js",3675"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))super\\b(?!\\$)"3676},3677"undefined-literal": {3678"name": "constant.language.undefined.js",3679"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))undefined(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"3680},3681"numericConstant-literal": {3682"patterns": [3683{3684"name": "constant.language.nan.js",3685"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))NaN(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"3686},3687{3688"name": "constant.language.infinity.js",3689"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Infinity(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"3690}3691]3692},3693"support-objects": {3694"patterns": [3695{3696"name": "variable.language.arguments.js",3697"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(arguments)\\b(?!\\$)"3698},3699{3700"name": "support.class.promise.js",3701"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Promise)\\b(?!\\$)"3702},3703{3704"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(import)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(meta)\\b(?!\\$)",3705"captures": {3706"1": {3707"name": "keyword.control.import.js"3708},3709"2": {3710"name": "punctuation.accessor.js"3711},3712"3": {3713"name": "punctuation.accessor.optional.js"3714},3715"4": {3716"name": "support.variable.property.importmeta.js"3717}3718}3719},3720{3721"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(target)\\b(?!\\$)",3722"captures": {3723"1": {3724"name": "keyword.operator.new.js"3725},3726"2": {3727"name": "punctuation.accessor.js"3728},3729"3": {3730"name": "punctuation.accessor.optional.js"3731},3732"4": {3733"name": "support.variable.property.target.js"3734}3735}3736},3737{3738"match": "(?x) (?:(\\.)|(\\?\\.(?!\\s*[[:digit:]]))) \\s* (?:\n (?:(constructor|length|prototype|__proto__)\\b(?!\\$|\\s*(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\\())\n |\n (?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\b(?!\\$)))",3739"captures": {3740"1": {3741"name": "punctuation.accessor.js"3742},3743"2": {3744"name": "punctuation.accessor.optional.js"3745},3746"3": {3747"name": "support.variable.property.js"3748},3749"4": {3750"name": "support.constant.js"3751}3752}3753},3754{3755"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(exports)|(module)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\\b(?!\\$)",3756"captures": {3757"1": {3758"name": "support.type.object.module.js"3759},3760"2": {3761"name": "support.type.object.module.js"3762},3763"3": {3764"name": "punctuation.accessor.js"3765},3766"4": {3767"name": "punctuation.accessor.optional.js"3768},3769"5": {3770"name": "support.type.object.module.js"3771}3772}3773}3774]3775},3776"identifiers": {3777"patterns": [3778{3779"include": "#object-identifiers"3780},3781{3782"match": "(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n))",3783"captures": {3784"1": {3785"name": "punctuation.accessor.js"3786},3787"2": {3788"name": "punctuation.accessor.optional.js"3789},3790"3": {3791"name": "entity.name.function.js"3792}3793}3794},3795{3796"match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",3797"captures": {3798"1": {3799"name": "punctuation.accessor.js"3800},3801"2": {3802"name": "punctuation.accessor.optional.js"3803},3804"3": {3805"name": "variable.other.constant.property.js"3806}3807}3808},3809{3810"match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)",3811"captures": {3812"1": {3813"name": "punctuation.accessor.js"3814},3815"2": {3816"name": "punctuation.accessor.optional.js"3817},3818"3": {3819"name": "variable.other.property.js"3820}3821}3822},3823{3824"name": "variable.other.constant.js",3825"match": "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])"3826},3827{3828"name": "variable.other.readwrite.js",3829"match": "[_$[:alpha:]][_$[:alnum:]]*"3830}3831]3832},3833"object-identifiers": {3834"patterns": [3835{3836"name": "support.class.js",3837"match": "([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\\??\\.\\s*prototype\\b(?!\\$))"3838},3839{3840"match": "(?x)(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?:\n (\\#?[[:upper:]][_$[:digit:][:upper:]]*) |\n (\\#?[_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)",3841"captures": {3842"1": {3843"name": "punctuation.accessor.js"3844},3845"2": {3846"name": "punctuation.accessor.optional.js"3847},3848"3": {3849"name": "variable.other.constant.object.property.js"3850},3851"4": {3852"name": "variable.other.object.property.js"3853}3854}3855},3856{3857"match": "(?x)(?:\n ([[:upper:]][_$[:digit:][:upper:]]*) |\n ([_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)",3858"captures": {3859"1": {3860"name": "variable.other.constant.object.js"3861},3862"2": {3863"name": "variable.other.object.js"3864}3865}3866}3867]3868},3869"type-annotation": {3870"patterns": [3871{3872"name": "meta.type.annotation.js",3873"begin": "(:)(?=\\s*\\S)",3874"beginCaptures": {3875"1": {3876"name": "keyword.operator.type.annotation.js"3877}3878},3879"end": "(?<![:|&])(?!\\s*[|&]\\s+)((?=^|[,);\\}\\]]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",3880"patterns": [3881{3882"include": "#type"3883}3884]3885},3886{3887"name": "meta.type.annotation.js",3888"begin": "(:)",3889"beginCaptures": {3890"1": {3891"name": "keyword.operator.type.annotation.js"3892}3893},3894"end": "(?<![:|&])((?=[,);\\}\\]]|\\/\\/)|(?==[^>])|(?=^\\s*$)|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",3895"patterns": [3896{3897"include": "#type"3898}3899]3900}3901]3902},3903"parameter-type-annotation": {3904"patterns": [3905{3906"name": "meta.type.annotation.js",3907"begin": "(:)",3908"beginCaptures": {3909"1": {3910"name": "keyword.operator.type.annotation.js"3911}3912},3913"end": "(?=[,)])|(?==[^>])",3914"patterns": [3915{3916"include": "#type"3917}3918]3919}3920]3921},3922"return-type": {3923"patterns": [3924{3925"name": "meta.return.type.js",3926"begin": "(?<=\\))\\s*(:)(?=\\s*\\S)",3927"beginCaptures": {3928"1": {3929"name": "keyword.operator.type.annotation.js"3930}3931},3932"end": "(?<![:|&])(?=$|^|[{};,]|//)",3933"patterns": [3934{3935"include": "#return-type-core"3936}3937]3938},3939{3940"name": "meta.return.type.js",3941"begin": "(?<=\\))\\s*(:)",3942"beginCaptures": {3943"1": {3944"name": "keyword.operator.type.annotation.js"3945}3946},3947"end": "(?<![:|&])((?=[{};,]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",3948"patterns": [3949{3950"include": "#return-type-core"3951}3952]3953}3954]3955},3956"return-type-core": {3957"patterns": [3958{3959"include": "#comment"3960},3961{3962"begin": "(?<=[:|&])(?=\\s*\\{)",3963"end": "(?<=\\})",3964"patterns": [3965{3966"include": "#type-object"3967}3968]3969},3970{3971"include": "#type-predicate-operator"3972},3973{3974"include": "#type"3975}3976]3977},3978"arrow-return-type": {3979"name": "meta.return.type.arrow.js",3980"begin": "(?<=\\))\\s*(:)",3981"beginCaptures": {3982"1": {3983"name": "keyword.operator.type.annotation.js"3984}3985},3986"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+))",3987"patterns": [3988{3989"include": "#arrow-return-type-body"3990}3991]3992},3993"possibly-arrow-return-type": {3994"begin": "(?<=\\)|^)\\s*(:)(?=\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*=>)",3995"beginCaptures": {3996"1": {3997"name": "meta.arrow.js meta.return.type.arrow.js keyword.operator.type.annotation.js"3998}3999},4000"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+))",4001"contentName": "meta.arrow.js meta.return.type.arrow.js",4002"patterns": [4003{4004"include": "#arrow-return-type-body"4005}4006]4007},4008"arrow-return-type-body": {4009"patterns": [4010{4011"begin": "(?<=[:])(?=\\s*\\{)",4012"end": "(?<=\\})",4013"patterns": [4014{4015"include": "#type-object"4016}4017]4018},4019{4020"include": "#type-predicate-operator"4021},4022{4023"include": "#type"4024}4025]4026},4027"type-parameters": {4028"name": "meta.type.parameters.js",4029"begin": "(<)",4030"beginCaptures": {4031"1": {4032"name": "punctuation.definition.typeparameters.begin.js"4033}4034},4035"end": "(>)",4036"endCaptures": {4037"1": {4038"name": "punctuation.definition.typeparameters.end.js"4039}4040},4041"patterns": [4042{4043"include": "#comment"4044},4045{4046"name": "storage.modifier.js",4047"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends|in|out|const)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"4048},4049{4050"include": "#type"4051},4052{4053"include": "#punctuation-comma"4054},4055{4056"name": "keyword.operator.assignment.js",4057"match": "(=)(?!>)"4058}4059]4060},4061"type-arguments": {4062"name": "meta.type.parameters.js",4063"begin": "\\<",4064"beginCaptures": {4065"0": {4066"name": "punctuation.definition.typeparameters.begin.js"4067}4068},4069"end": "\\>",4070"endCaptures": {4071"0": {4072"name": "punctuation.definition.typeparameters.end.js"4073}4074},4075"patterns": [4076{4077"include": "#type-arguments-body"4078}4079]4080},4081"type-arguments-body": {4082"patterns": [4083{4084"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(_)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",4085"captures": {4086"0": {4087"name": "keyword.operator.type.js"4088}4089}4090},4091{4092"include": "#type"4093},4094{4095"include": "#punctuation-comma"4096}4097]4098},4099"type": {4100"patterns": [4101{4102"include": "#comment"4103},4104{4105"include": "#type-string"4106},4107{4108"include": "#numeric-literal"4109},4110{4111"include": "#type-primitive"4112},4113{4114"include": "#type-builtin-literals"4115},4116{4117"include": "#type-parameters"4118},4119{4120"include": "#type-tuple"4121},4122{4123"include": "#type-object"4124},4125{4126"include": "#type-operators"4127},4128{4129"include": "#type-conditional"4130},4131{4132"include": "#type-fn-type-parameters"4133},4134{4135"include": "#type-paren-or-function-parameters"4136},4137{4138"include": "#type-function-return-type"4139},4140{4141"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",4142"captures": {4143"1": {4144"name": "storage.modifier.js"4145}4146}4147},4148{4149"include": "#type-name"4150}4151]4152},4153"type-primitive": {4154"name": "support.type.primitive.js",4155"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"4156},4157"type-builtin-literals": {4158"name": "support.type.builtin.js",4159"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"4160},4161"type-tuple": {4162"name": "meta.type.tuple.js",4163"begin": "\\[",4164"beginCaptures": {4165"0": {4166"name": "meta.brace.square.js"4167}4168},4169"end": "\\]",4170"endCaptures": {4171"0": {4172"name": "meta.brace.square.js"4173}4174},4175"patterns": [4176{4177"name": "keyword.operator.rest.js",4178"match": "\\.\\.\\."4179},4180{4181"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",4182"captures": {4183"1": {4184"name": "entity.name.label.js"4185},4186"2": {4187"name": "keyword.operator.optional.js"4188},4189"3": {4190"name": "punctuation.separator.label.js"4191}4192}4193},4194{4195"include": "#type"4196},4197{4198"include": "#punctuation-comma"4199}4200]4201},4202"type-object": {4203"name": "meta.object.type.js",4204"begin": "\\{",4205"beginCaptures": {4206"0": {4207"name": "punctuation.definition.block.js"4208}4209},4210"end": "\\}",4211"endCaptures": {4212"0": {4213"name": "punctuation.definition.block.js"4214}4215},4216"patterns": [4217{4218"include": "#comment"4219},4220{4221"include": "#method-declaration"4222},4223{4224"include": "#indexer-declaration"4225},4226{4227"include": "#indexer-mapped-type-declaration"4228},4229{4230"include": "#field-declaration"4231},4232{4233"include": "#type-annotation"4234},4235{4236"begin": "\\.\\.\\.",4237"beginCaptures": {4238"0": {4239"name": "keyword.operator.spread.js"4240}4241},4242"end": "(?=\\}|;|,|$)|(?<=\\})",4243"patterns": [4244{4245"include": "#type"4246}4247]4248},4249{4250"include": "#punctuation-comma"4251},4252{4253"include": "#punctuation-semicolon"4254},4255{4256"include": "#type"4257}4258]4259},4260"type-conditional": {4261"patterns": [4262{4263"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",4264"beginCaptures": {4265"1": {4266"name": "storage.modifier.js"4267}4268},4269"end": "(?<=:)",4270"patterns": [4271{4272"begin": "\\?",4273"beginCaptures": {4274"0": {4275"name": "keyword.operator.ternary.js"4276}4277},4278"end": ":",4279"endCaptures": {4280"0": {4281"name": "keyword.operator.ternary.js"4282}4283},4284"patterns": [4285{4286"include": "#type"4287}4288]4289},4290{4291"include": "#type"4292}4293]4294}4295]4296},4297"type-paren-or-function-parameters": {4298"name": "meta.type.paren.cover.js",4299"begin": "\\(",4300"beginCaptures": {4301"0": {4302"name": "meta.brace.round.js"4303}4304},4305"end": "\\)",4306"endCaptures": {4307"0": {4308"name": "meta.brace.round.js"4309}4310},4311"patterns": [4312{4313"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",4314"captures": {4315"1": {4316"name": "storage.modifier.js"4317},4318"2": {4319"name": "keyword.operator.rest.js"4320},4321"3": {4322"name": "entity.name.function.js variable.language.this.js"4323},4324"4": {4325"name": "entity.name.function.js"4326},4327"5": {4328"name": "keyword.operator.optional.js"4329}4330}4331},4332{4333"match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",4334"captures": {4335"1": {4336"name": "storage.modifier.js"4337},4338"2": {4339"name": "keyword.operator.rest.js"4340},4341"3": {4342"name": "variable.parameter.js variable.language.this.js"4343},4344"4": {4345"name": "variable.parameter.js"4346},4347"5": {4348"name": "keyword.operator.optional.js"4349}4350}4351},4352{4353"include": "#type-annotation"4354},4355{4356"name": "punctuation.separator.parameter.js",4357"match": ","4358},4359{4360"include": "#type"4361}4362]4363},4364"type-fn-type-parameters": {4365"patterns": [4366{4367"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",4368"beginCaptures": {4369"1": {4370"name": "meta.type.constructor.js storage.modifier.js"4371},4372"2": {4373"name": "meta.type.constructor.js keyword.control.new.js"4374}4375},4376"end": "(?<=>)",4377"patterns": [4378{4379"include": "#comment"4380},4381{4382"include": "#type-parameters"4383}4384]4385},4386{4387"name": "meta.type.constructor.js",4388"begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",4389"beginCaptures": {4390"1": {4391"name": "storage.modifier.js"4392},4393"2": {4394"name": "keyword.control.new.js"4395}4396},4397"end": "(?<=\\))",4398"patterns": [4399{4400"include": "#function-parameters"4401}4402]4403},4404{4405"name": "meta.type.function.js",4406"begin": "(?x)(\n (?=\n [(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )\n )\n)",4407"end": "(?<=\\))",4408"patterns": [4409{4410"include": "#function-parameters"4411}4412]4413}4414]4415},4416"type-function-return-type": {4417"patterns": [4418{4419"name": "meta.type.function.return.js",4420"begin": "(=>)(?=\\s*\\S)",4421"beginCaptures": {4422"1": {4423"name": "storage.type.function.arrow.js"4424}4425},4426"end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",4427"patterns": [4428{4429"include": "#type-function-return-type-core"4430}4431]4432},4433{4434"name": "meta.type.function.return.js",4435"begin": "=>",4436"beginCaptures": {4437"0": {4438"name": "storage.type.function.arrow.js"4439}4440},4441"end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",4442"patterns": [4443{4444"include": "#type-function-return-type-core"4445}4446]4447}4448]4449},4450"type-function-return-type-core": {4451"patterns": [4452{4453"include": "#comment"4454},4455{4456"begin": "(?<==>)(?=\\s*\\{)",4457"end": "(?<=\\})",4458"patterns": [4459{4460"include": "#type-object"4461}4462]4463},4464{4465"include": "#type-predicate-operator"4466},4467{4468"include": "#type"4469}4470]4471},4472"type-operators": {4473"patterns": [4474{4475"include": "#typeof-operator"4476},4477{4478"include": "#type-infer"4479},4480{4481"begin": "([&|])(?=\\s*\\{)",4482"beginCaptures": {4483"0": {4484"name": "keyword.operator.type.js"4485}4486},4487"end": "(?<=\\})",4488"patterns": [4489{4490"include": "#type-object"4491}4492]4493},4494{4495"begin": "[&|]",4496"beginCaptures": {4497"0": {4498"name": "keyword.operator.type.js"4499}4500},4501"end": "(?=\\S)"4502},4503{4504"name": "keyword.operator.expression.keyof.js",4505"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))keyof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"4506},4507{4508"name": "keyword.operator.ternary.js",4509"match": "(\\?|\\:)"4510},4511{4512"name": "keyword.operator.expression.import.js",4513"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*\\()"4514}4515]4516},4517"type-infer": {4518"patterns": [4519{4520"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(infer)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s+(extends)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))?",4521"name": "meta.type.infer.js",4522"captures": {4523"1": {4524"name": "keyword.operator.expression.infer.js"4525},4526"2": {4527"name": "entity.name.type.js"4528},4529"3": {4530"name": "keyword.operator.expression.extends.js"4531}4532}4533}4534]4535},4536"type-predicate-operator": {4537"patterns": [4538{4539"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",4540"captures": {4541"1": {4542"name": "keyword.operator.type.asserts.js"4543},4544"2": {4545"name": "variable.parameter.js variable.language.this.js"4546},4547"3": {4548"name": "variable.parameter.js"4549},4550"4": {4551"name": "keyword.operator.expression.is.js"4552}4553}4554},4555{4556"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",4557"captures": {4558"1": {4559"name": "keyword.operator.type.asserts.js"4560},4561"2": {4562"name": "variable.parameter.js variable.language.this.js"4563},4564"3": {4565"name": "variable.parameter.js"4566}4567}4568},4569{4570"name": "keyword.operator.type.asserts.js",4571"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"4572},4573{4574"name": "keyword.operator.expression.is.js",4575"match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"4576}4577]4578},4579"type-name": {4580"patterns": [4581{4582"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",4583"captures": {4584"1": {4585"name": "entity.name.type.module.js"4586},4587"2": {4588"name": "punctuation.accessor.js"4589},4590"3": {4591"name": "punctuation.accessor.optional.js"4592},4593"4": {4594"name": "meta.type.parameters.js punctuation.definition.typeparameters.begin.js"4595}4596},4597"end": "(>)",4598"endCaptures": {4599"1": {4600"name": "meta.type.parameters.js punctuation.definition.typeparameters.end.js"4601}4602},4603"contentName": "meta.type.parameters.js",4604"patterns": [4605{4606"include": "#type-arguments-body"4607}4608]4609},4610{4611"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",4612"beginCaptures": {4613"1": {4614"name": "entity.name.type.js"4615},4616"2": {4617"name": "meta.type.parameters.js punctuation.definition.typeparameters.begin.js"4618}4619},4620"end": "(>)",4621"endCaptures": {4622"1": {4623"name": "meta.type.parameters.js punctuation.definition.typeparameters.end.js"4624}4625},4626"contentName": "meta.type.parameters.js",4627"patterns": [4628{4629"include": "#type-arguments-body"4630}4631]4632},4633{4634"match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",4635"captures": {4636"1": {4637"name": "entity.name.type.module.js"4638},4639"2": {4640"name": "punctuation.accessor.js"4641},4642"3": {4643"name": "punctuation.accessor.optional.js"4644}4645}4646},4647{4648"name": "entity.name.type.js",4649"match": "[_$[:alpha:]][_$[:alnum:]]*"4650}4651]4652},4653"punctuation-comma": {4654"name": "punctuation.separator.comma.js",4655"match": ","4656},4657"punctuation-semicolon": {4658"name": "punctuation.terminator.statement.js",4659"match": ";"4660},4661"punctuation-accessor": {4662"match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",4663"captures": {4664"1": {4665"name": "punctuation.accessor.js"4666},4667"2": {4668"name": "punctuation.accessor.optional.js"4669}4670}4671},4672"string": {4673"patterns": [4674{4675"include": "#qstring-single"4676},4677{4678"include": "#qstring-double"4679},4680{4681"include": "#template"4682}4683]4684},4685"qstring-double": {4686"name": "string.quoted.double.js",4687"begin": "\"",4688"beginCaptures": {4689"0": {4690"name": "punctuation.definition.string.begin.js"4691}4692},4693"end": "(\")|((?:[^\\\\\\n])$)",4694"endCaptures": {4695"1": {4696"name": "punctuation.definition.string.end.js"4697},4698"2": {4699"name": "invalid.illegal.newline.js"4700}4701},4702"patterns": [4703{4704"include": "#string-character-escape"4705}4706]4707},4708"qstring-single": {4709"name": "string.quoted.single.js",4710"begin": "'",4711"beginCaptures": {4712"0": {4713"name": "punctuation.definition.string.begin.js"4714}4715},4716"end": "(\\')|((?:[^\\\\\\n])$)",4717"endCaptures": {4718"1": {4719"name": "punctuation.definition.string.end.js"4720},4721"2": {4722"name": "invalid.illegal.newline.js"4723}4724},4725"patterns": [4726{4727"include": "#string-character-escape"4728}4729]4730},4731"string-character-escape": {4732"name": "constant.character.escape.js",4733"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]?|.|$)"4734},4735"template": {4736"patterns": [4737{4738"include": "#template-call"4739},4740{4741"contentName": "string.template.js",4742"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",4743"beginCaptures": {4744"1": {4745"name": "entity.name.function.tagged-template.js"4746},4747"2": {4748"name": "string.template.js punctuation.definition.string.template.begin.js"4749}4750},4751"end": "`",4752"endCaptures": {4753"0": {4754"name": "string.template.js punctuation.definition.string.template.end.js"4755}4756},4757"patterns": [4758{4759"include": "#template-substitution-element"4760},4761{4762"include": "#string-character-escape"4763}4764]4765}4766]4767},4768"template-call": {4769"patterns": [4770{4771"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*)?`)",4772"end": "(?=`)",4773"patterns": [4774{4775"begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",4776"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*)?`)",4777"patterns": [4778{4779"include": "#support-function-call-identifiers"4780},4781{4782"name": "entity.name.function.tagged-template.js",4783"match": "([_$[:alpha:]][_$[:alnum:]]*)"4784}4785]4786},4787{4788"include": "#type-arguments"4789}4790]4791},4792{4793"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*)`)",4794"beginCaptures": {4795"1": {4796"name": "entity.name.function.tagged-template.js"4797}4798},4799"end": "(?=`)",4800"patterns": [4801{4802"include": "#type-arguments"4803}4804]4805}4806]4807},4808"template-substitution-element": {4809"name": "meta.template.expression.js",4810"begin": "\\$\\{",4811"beginCaptures": {4812"0": {4813"name": "punctuation.definition.template-expression.begin.js"4814}4815},4816"end": "\\}",4817"endCaptures": {4818"0": {4819"name": "punctuation.definition.template-expression.end.js"4820}4821},4822"patterns": [4823{4824"include": "#expression"4825}4826],4827"contentName": "meta.embedded.line.js"4828},4829"type-string": {4830"patterns": [4831{4832"include": "#qstring-single"4833},4834{4835"include": "#qstring-double"4836},4837{4838"include": "#template-type"4839}4840]4841},4842"template-type": {4843"patterns": [4844{4845"include": "#template-call"4846},4847{4848"contentName": "string.template.js",4849"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",4850"beginCaptures": {4851"1": {4852"name": "entity.name.function.tagged-template.js"4853},4854"2": {4855"name": "string.template.js punctuation.definition.string.template.begin.js"4856}4857},4858"end": "`",4859"endCaptures": {4860"0": {4861"name": "string.template.js punctuation.definition.string.template.end.js"4862}4863},4864"patterns": [4865{4866"include": "#template-type-substitution-element"4867},4868{4869"include": "#string-character-escape"4870}4871]4872}4873]4874},4875"template-type-substitution-element": {4876"name": "meta.template.expression.js",4877"begin": "\\$\\{",4878"beginCaptures": {4879"0": {4880"name": "punctuation.definition.template-expression.begin.js"4881}4882},4883"end": "\\}",4884"endCaptures": {4885"0": {4886"name": "punctuation.definition.template-expression.end.js"4887}4888},4889"patterns": [4890{4891"include": "#type"4892}4893],4894"contentName": "meta.embedded.line.js"4895},4896"regex": {4897"patterns": [4898{4899"name": "string.regexp.js",4900"begin": "(?<!\\+\\+|--|})(?<=[=(:,\\[?+!]|^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case|=>|&&|\\|\\||\\*\\/)\\s*(\\/)(?![\\/*])(?=(?:[^\\/\\\\\\[\\()]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\]|\\(([^\\)\\\\]|\\\\.)+\\))+\\/([dgimsuvy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",4901"beginCaptures": {4902"1": {4903"name": "punctuation.definition.string.begin.js"4904}4905},4906"end": "(/)([dgimsuvy]*)",4907"endCaptures": {4908"1": {4909"name": "punctuation.definition.string.end.js"4910},4911"2": {4912"name": "keyword.other.js"4913}4914},4915"patterns": [4916{4917"include": "#regexp"4918}4919]4920},4921{4922"name": "string.regexp.js",4923"begin": "((?<![_$[:alnum:])\\]]|\\+\\+|--|}|\\*\\/)|((?<=^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case))\\s*)\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuvy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",4924"beginCaptures": {4925"0": {4926"name": "punctuation.definition.string.begin.js"4927}4928},4929"end": "(/)([dgimsuvy]*)",4930"endCaptures": {4931"1": {4932"name": "punctuation.definition.string.end.js"4933},4934"2": {4935"name": "keyword.other.js"4936}4937},4938"patterns": [4939{4940"include": "#regexp"4941}4942]4943}4944]4945},4946"regexp": {4947"patterns": [4948{4949"name": "keyword.control.anchor.regexp",4950"match": "\\\\[bB]|\\^|\\$"4951},4952{4953"match": "\\\\[1-9]\\d*|\\\\k<([a-zA-Z_$][\\w$]*)>",4954"captures": {4955"0": {4956"name": "keyword.other.back-reference.regexp"4957},4958"1": {4959"name": "variable.other.regexp"4960}4961}4962},4963{4964"name": "keyword.operator.quantifier.regexp",4965"match": "[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??"4966},4967{4968"name": "keyword.operator.or.regexp",4969"match": "\\|"4970},4971{4972"name": "meta.group.assertion.regexp",4973"begin": "(\\()((\\?=)|(\\?!)|(\\?<=)|(\\?<!))",4974"beginCaptures": {4975"1": {4976"name": "punctuation.definition.group.regexp"4977},4978"2": {4979"name": "punctuation.definition.group.assertion.regexp"4980},4981"3": {4982"name": "meta.assertion.look-ahead.regexp"4983},4984"4": {4985"name": "meta.assertion.negative-look-ahead.regexp"4986},4987"5": {4988"name": "meta.assertion.look-behind.regexp"4989},4990"6": {4991"name": "meta.assertion.negative-look-behind.regexp"4992}4993},4994"end": "(\\))",4995"endCaptures": {4996"1": {4997"name": "punctuation.definition.group.regexp"4998}4999},5000"patterns": [5001{5002"include": "#regexp"5003}5004]5005},5006{5007"name": "meta.group.regexp",5008"begin": "\\((?:(\\?:)|(?:\\?<([a-zA-Z_$][\\w$]*)>))?",5009"beginCaptures": {5010"0": {5011"name": "punctuation.definition.group.regexp"5012},5013"1": {5014"name": "punctuation.definition.group.no-capture.regexp"5015},5016"2": {5017"name": "variable.other.regexp"5018}5019},5020"end": "\\)",5021"endCaptures": {5022"0": {5023"name": "punctuation.definition.group.regexp"5024}5025},5026"patterns": [5027{5028"include": "#regexp"5029}5030]5031},5032{5033"name": "constant.other.character-class.set.regexp",5034"begin": "(\\[)(\\^)?",5035"beginCaptures": {5036"1": {5037"name": "punctuation.definition.character-class.regexp"5038},5039"2": {5040"name": "keyword.operator.negation.regexp"5041}5042},5043"end": "(\\])",5044"endCaptures": {5045"1": {5046"name": "punctuation.definition.character-class.regexp"5047}5048},5049"patterns": [5050{5051"name": "constant.other.character-class.range.regexp",5052"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])|(\\\\.))",5053"captures": {5054"1": {5055"name": "constant.character.numeric.regexp"5056},5057"2": {5058"name": "constant.character.control.regexp"5059},5060"3": {5061"name": "constant.character.escape.backslash.regexp"5062},5063"4": {5064"name": "constant.character.numeric.regexp"5065},5066"5": {5067"name": "constant.character.control.regexp"5068},5069"6": {5070"name": "constant.character.escape.backslash.regexp"5071}5072}5073},5074{5075"include": "#regex-character-class"5076}5077]5078},5079{5080"include": "#regex-character-class"5081}5082]5083},5084"regex-character-class": {5085"patterns": [5086{5087"name": "constant.other.character-class.regexp",5088"match": "\\\\[wWsSdDtrnvf]|\\."5089},5090{5091"name": "constant.character.numeric.regexp",5092"match": "\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})"5093},5094{5095"name": "constant.character.control.regexp",5096"match": "\\\\c[A-Z]"5097},5098{5099"name": "constant.character.escape.backslash.regexp",5100"match": "\\\\."5101}5102]5103},5104"comment": {5105"patterns": [5106{5107"name": "comment.block.documentation.js",5108"begin": "/\\*\\*(?!/)",5109"beginCaptures": {5110"0": {5111"name": "punctuation.definition.comment.js"5112}5113},5114"end": "\\*/",5115"endCaptures": {5116"0": {5117"name": "punctuation.definition.comment.js"5118}5119},5120"patterns": [5121{5122"include": "#docblock"5123}5124]5125},5126{5127"name": "comment.block.js",5128"begin": "(/\\*)(?:\\s*((@)internal)(?=\\s|(\\*/)))?",5129"beginCaptures": {5130"1": {5131"name": "punctuation.definition.comment.js"5132},5133"2": {5134"name": "storage.type.internaldeclaration.js"5135},5136"3": {5137"name": "punctuation.decorator.internaldeclaration.js"5138}5139},5140"end": "\\*/",5141"endCaptures": {5142"0": {5143"name": "punctuation.definition.comment.js"5144}5145}5146},5147{5148"begin": "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",5149"beginCaptures": {5150"1": {5151"name": "punctuation.whitespace.comment.leading.js"5152},5153"2": {5154"name": "comment.line.double-slash.js"5155},5156"3": {5157"name": "punctuation.definition.comment.js"5158},5159"4": {5160"name": "storage.type.internaldeclaration.js"5161},5162"5": {5163"name": "punctuation.decorator.internaldeclaration.js"5164}5165},5166"end": "(?=$)",5167"contentName": "comment.line.double-slash.js"5168}5169]5170},5171"single-line-comment-consuming-line-ending": {5172"begin": "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",5173"beginCaptures": {5174"1": {5175"name": "punctuation.whitespace.comment.leading.js"5176},5177"2": {5178"name": "comment.line.double-slash.js"5179},5180"3": {5181"name": "punctuation.definition.comment.js"5182},5183"4": {5184"name": "storage.type.internaldeclaration.js"5185},5186"5": {5187"name": "punctuation.decorator.internaldeclaration.js"5188}5189},5190"end": "(?=^)",5191"contentName": "comment.line.double-slash.js"5192},5193"directives": {5194"name": "comment.line.triple-slash.directive.js",5195"begin": "^(///)\\s*(?=<(reference|amd-dependency|amd-module)(\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\s*=\\s*((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)))+\\s*/>\\s*$)",5196"beginCaptures": {5197"1": {5198"name": "punctuation.definition.comment.js"5199}5200},5201"end": "(?=$)",5202"patterns": [5203{5204"name": "meta.tag.js",5205"begin": "(<)(reference|amd-dependency|amd-module)",5206"beginCaptures": {5207"1": {5208"name": "punctuation.definition.tag.directive.js"5209},5210"2": {5211"name": "entity.name.tag.directive.js"5212}5213},5214"end": "/>",5215"endCaptures": {5216"0": {5217"name": "punctuation.definition.tag.directive.js"5218}5219},5220"patterns": [5221{5222"name": "entity.other.attribute-name.directive.js",5223"match": "path|types|no-default-lib|lib|name|resolution-mode"5224},5225{5226"name": "keyword.operator.assignment.js",5227"match": "="5228},5229{5230"include": "#string"5231}5232]5233}5234]5235},5236"docblock": {5237"patterns": [5238{5239"match": "(?x)\n((@)(?:access|api))\n\\s+\n(private|protected|public)\n\\b",5240"captures": {5241"1": {5242"name": "storage.type.class.jsdoc"5243},5244"2": {5245"name": "punctuation.definition.block.tag.jsdoc"5246},5247"3": {5248"name": "constant.language.access-type.jsdoc"5249}5250}5251},5252{5253"match": "(?x)\n((@)author)\n\\s+\n(\n [^@\\s<>*/]\n (?:[^@<>*/]|\\*[^/])*\n)\n(?:\n \\s*\n (<)\n ([^>\\s]+)\n (>)\n)?",5254"captures": {5255"1": {5256"name": "storage.type.class.jsdoc"5257},5258"2": {5259"name": "punctuation.definition.block.tag.jsdoc"5260},5261"3": {5262"name": "entity.name.type.instance.jsdoc"5263},5264"4": {5265"name": "punctuation.definition.bracket.angle.begin.jsdoc"5266},5267"5": {5268"name": "constant.other.email.link.underline.jsdoc"5269},5270"6": {5271"name": "punctuation.definition.bracket.angle.end.jsdoc"5272}5273}5274},5275{5276"match": "(?x)\n((@)borrows) \\s+\n((?:[^@\\s*/]|\\*[^/])+) # <that namepath>\n\\s+ (as) \\s+ # as\n((?:[^@\\s*/]|\\*[^/])+) # <this namepath>",5277"captures": {5278"1": {5279"name": "storage.type.class.jsdoc"5280},5281"2": {5282"name": "punctuation.definition.block.tag.jsdoc"5283},5284"3": {5285"name": "entity.name.type.instance.jsdoc"5286},5287"4": {5288"name": "keyword.operator.control.jsdoc"5289},5290"5": {5291"name": "entity.name.type.instance.jsdoc"5292}5293}5294},5295{5296"name": "meta.example.jsdoc",5297"begin": "((@)example)\\s+",5298"end": "(?=@|\\*/)",5299"beginCaptures": {5300"1": {5301"name": "storage.type.class.jsdoc"5302},5303"2": {5304"name": "punctuation.definition.block.tag.jsdoc"5305}5306},5307"patterns": [5308{5309"match": "^\\s\\*\\s+"5310},5311{5312"contentName": "constant.other.description.jsdoc",5313"begin": "\\G(<)caption(>)",5314"beginCaptures": {5315"0": {5316"name": "entity.name.tag.inline.jsdoc"5317},5318"1": {5319"name": "punctuation.definition.bracket.angle.begin.jsdoc"5320},5321"2": {5322"name": "punctuation.definition.bracket.angle.end.jsdoc"5323}5324},5325"end": "(</)caption(>)|(?=\\*/)",5326"endCaptures": {5327"0": {5328"name": "entity.name.tag.inline.jsdoc"5329},5330"1": {5331"name": "punctuation.definition.bracket.angle.begin.jsdoc"5332},5333"2": {5334"name": "punctuation.definition.bracket.angle.end.jsdoc"5335}5336}5337},5338{5339"match": "[^\\s@*](?:[^*]|\\*[^/])*",5340"captures": {5341"0": {5342"name": "source.embedded.js"5343}5344}5345}5346]5347},5348{5349"match": "(?x) ((@)kind) \\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\b",5350"captures": {5351"1": {5352"name": "storage.type.class.jsdoc"5353},5354"2": {5355"name": "punctuation.definition.block.tag.jsdoc"5356},5357"3": {5358"name": "constant.language.symbol-type.jsdoc"5359}5360}5361},5362{5363"match": "(?x)\n((@)see)\n\\s+\n(?:\n # URL\n (\n (?=https?://)\n (?:[^\\s*]|\\*[^/])+\n )\n |\n # JSDoc namepath\n (\n (?!\n # Avoid matching bare URIs (also acceptable as links)\n https?://\n |\n # Avoid matching {@inline tags}; we match those below\n (?:\\[[^\\[\\]]*\\])? # Possible description [preceding]{@tag}\n {@(?:link|linkcode|linkplain|tutorial)\\b\n )\n # Matched namepath\n (?:[^@\\s*/]|\\*[^/])+\n )\n)",5364"captures": {5365"1": {5366"name": "storage.type.class.jsdoc"5367},5368"2": {5369"name": "punctuation.definition.block.tag.jsdoc"5370},5371"3": {5372"name": "variable.other.link.underline.jsdoc"5373},5374"4": {5375"name": "entity.name.type.instance.jsdoc"5376}5377}5378},5379{5380"match": "(?x)\n((@)template)\n\\s+\n# One or more valid identifiers\n(\n [A-Za-z_$] # First character: non-numeric word character\n [\\w$.\\[\\]]* # Rest of identifier\n (?: # Possible list of additional identifiers\n \\s* , \\s*\n [A-Za-z_$]\n [\\w$.\\[\\]]*\n )*\n)",5381"captures": {5382"1": {5383"name": "storage.type.class.jsdoc"5384},5385"2": {5386"name": "punctuation.definition.block.tag.jsdoc"5387},5388"3": {5389"name": "variable.other.jsdoc"5390}5391}5392},5393{5394"begin": "(?x)((@)template)\\s+(?={)",5395"beginCaptures": {5396"1": {5397"name": "storage.type.class.jsdoc"5398},5399"2": {5400"name": "punctuation.definition.block.tag.jsdoc"5401}5402},5403"end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",5404"patterns": [5405{5406"include": "#jsdoctype"5407},5408{5409"name": "variable.other.jsdoc",5410"match": "([A-Za-z_$][\\w$.\\[\\]]*)"5411}5412]5413},5414{5415"match": "(?x)\n(\n (@)\n (?:arg|argument|const|constant|member|namespace|param|var)\n)\n\\s+\n(\n [A-Za-z_$]\n [\\w$.\\[\\]]*\n)",5416"captures": {5417"1": {5418"name": "storage.type.class.jsdoc"5419},5420"2": {5421"name": "punctuation.definition.block.tag.jsdoc"5422},5423"3": {5424"name": "variable.other.jsdoc"5425}5426}5427},5428{5429"begin": "((@)typedef)\\s+(?={)",5430"beginCaptures": {5431"1": {5432"name": "storage.type.class.jsdoc"5433},5434"2": {5435"name": "punctuation.definition.block.tag.jsdoc"5436}5437},5438"end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",5439"patterns": [5440{5441"include": "#jsdoctype"5442},5443{5444"name": "entity.name.type.instance.jsdoc",5445"match": "(?:[^@\\s*/]|\\*[^/])+"5446}5447]5448},5449{5450"begin": "((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\s+(?={)",5451"beginCaptures": {5452"1": {5453"name": "storage.type.class.jsdoc"5454},5455"2": {5456"name": "punctuation.definition.block.tag.jsdoc"5457}5458},5459"end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",5460"patterns": [5461{5462"include": "#jsdoctype"5463},5464{5465"name": "variable.other.jsdoc",5466"match": "([A-Za-z_$][\\w$.\\[\\]]*)"5467},5468{5469"name": "variable.other.jsdoc",5470"match": "(?x)\n(\\[)\\s*\n[\\w$]+\n(?:\n (?:\\[\\])? # Foo[ ].bar properties within an array\n \\. # Foo.Bar namespaced parameter\n [\\w$]+\n)*\n(?:\n \\s*\n (=) # [foo=bar] Default parameter value\n \\s*\n (\n # The inner regexes are to stop the match early at */ and to not stop at escaped quotes\n (?>\n \"(?:(?:\\*(?!/))|(?:\\\\(?!\"))|[^*\\\\])*?\" | # [foo=\"bar\"] Double-quoted\n '(?:(?:\\*(?!/))|(?:\\\\(?!'))|[^*\\\\])*?' | # [foo='bar'] Single-quoted\n \\[ (?:(?:\\*(?!/))|[^*])*? \\] | # [foo=[1,2]] Array literal\n (?:(?:\\*(?!/))|\\s(?!\\s*\\])|\\[.*?(?:\\]|(?=\\*/))|[^*\\s\\[\\]])* # Everything else\n )*\n )\n)?\n\\s*(?:(\\])((?:[^*\\s]|\\*[^\\s/])+)?|(?=\\*/))",5471"captures": {5472"1": {5473"name": "punctuation.definition.optional-value.begin.bracket.square.jsdoc"5474},5475"2": {5476"name": "keyword.operator.assignment.jsdoc"5477},5478"3": {5479"name": "source.embedded.js"5480},5481"4": {5482"name": "punctuation.definition.optional-value.end.bracket.square.jsdoc"5483},5484"5": {5485"name": "invalid.illegal.syntax.jsdoc"5486}5487}5488}5489]5490},5491{5492"begin": "(?x)\n(\n (@)\n (?:define|enum|exception|export|extends|lends|implements|modifies\n |namespace|private|protected|returns?|satisfies|suppress|this|throws|type\n |yields?)\n)\n\\s+(?={)",5493"beginCaptures": {5494"1": {5495"name": "storage.type.class.jsdoc"5496},5497"2": {5498"name": "punctuation.definition.block.tag.jsdoc"5499}5500},5501"end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",5502"patterns": [5503{5504"include": "#jsdoctype"5505}5506]5507},5508{5509"match": "(?x)\n(\n (@)\n (?:alias|augments|callback|constructs|emits|event|fires|exports?\n |extends|external|function|func|host|lends|listens|interface|memberof!?\n |method|module|mixes|mixin|name|requires|see|this|typedef|uses)\n)\n\\s+\n(\n (?:\n [^{}@\\s*] | \\*[^/]\n )+\n)",5510"captures": {5511"1": {5512"name": "storage.type.class.jsdoc"5513},5514"2": {5515"name": "punctuation.definition.block.tag.jsdoc"5516},5517"3": {5518"name": "entity.name.type.instance.jsdoc"5519}5520}5521},5522{5523"contentName": "variable.other.jsdoc",5524"begin": "((@)(?:default(?:value)?|license|version))\\s+(([''\"]))",5525"beginCaptures": {5526"1": {5527"name": "storage.type.class.jsdoc"5528},5529"2": {5530"name": "punctuation.definition.block.tag.jsdoc"5531},5532"3": {5533"name": "variable.other.jsdoc"5534},5535"4": {5536"name": "punctuation.definition.string.begin.jsdoc"5537}5538},5539"end": "(\\3)|(?=$|\\*/)",5540"endCaptures": {5541"0": {5542"name": "variable.other.jsdoc"5543},5544"1": {5545"name": "punctuation.definition.string.end.jsdoc"5546}5547}5548},5549{5550"match": "((@)(?:default(?:value)?|license|tutorial|variation|version))\\s+([^\\s*]+)",5551"captures": {5552"1": {5553"name": "storage.type.class.jsdoc"5554},5555"2": {5556"name": "punctuation.definition.block.tag.jsdoc"5557},5558"3": {5559"name": "variable.other.jsdoc"5560}5561}5562},5563{5564"name": "storage.type.class.jsdoc",5565"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",5566"captures": {5567"1": {5568"name": "punctuation.definition.block.tag.jsdoc"5569}5570}5571},5572{5573"include": "#inline-tags"5574},5575{5576"match": "((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\s+)",5577"captures": {5578"1": {5579"name": "storage.type.class.jsdoc"5580},5581"2": {5582"name": "punctuation.definition.block.tag.jsdoc"5583}5584}5585}5586]5587},5588"brackets": {5589"patterns": [5590{5591"begin": "{",5592"end": "}|(?=\\*/)",5593"patterns": [5594{5595"include": "#brackets"5596}5597]5598},5599{5600"begin": "\\[",5601"end": "\\]|(?=\\*/)",5602"patterns": [5603{5604"include": "#brackets"5605}5606]5607}5608]5609},5610"inline-tags": {5611"patterns": [5612{5613"name": "constant.other.description.jsdoc",5614"match": "(\\[)[^\\]]+(\\])(?={@(?:link|linkcode|linkplain|tutorial))",5615"captures": {5616"1": {5617"name": "punctuation.definition.bracket.square.begin.jsdoc"5618},5619"2": {5620"name": "punctuation.definition.bracket.square.end.jsdoc"5621}5622}5623},5624{5625"name": "entity.name.type.instance.jsdoc",5626"begin": "({)((@)(?:link(?:code|plain)?|tutorial))\\s*",5627"beginCaptures": {5628"1": {5629"name": "punctuation.definition.bracket.curly.begin.jsdoc"5630},5631"2": {5632"name": "storage.type.class.jsdoc"5633},5634"3": {5635"name": "punctuation.definition.inline.tag.jsdoc"5636}5637},5638"end": "}|(?=\\*/)",5639"endCaptures": {5640"0": {5641"name": "punctuation.definition.bracket.curly.end.jsdoc"5642}5643},5644"patterns": [5645{5646"match": "\\G((?=https?://)(?:[^|}\\s*]|\\*[/])+)(\\|)?",5647"captures": {5648"1": {5649"name": "variable.other.link.underline.jsdoc"5650},5651"2": {5652"name": "punctuation.separator.pipe.jsdoc"5653}5654}5655},5656{5657"match": "\\G((?:[^{}@\\s|*]|\\*[^/])+)(\\|)?",5658"captures": {5659"1": {5660"name": "variable.other.description.jsdoc"5661},5662"2": {5663"name": "punctuation.separator.pipe.jsdoc"5664}5665}5666}5667]5668}5669]5670},5671"jsdoctype": {5672"patterns": [5673{5674"contentName": "entity.name.type.instance.jsdoc",5675"begin": "\\G({)",5676"beginCaptures": {5677"0": {5678"name": "entity.name.type.instance.jsdoc"5679},5680"1": {5681"name": "punctuation.definition.bracket.curly.begin.jsdoc"5682}5683},5684"end": "((}))\\s*|(?=\\*/)",5685"endCaptures": {5686"1": {5687"name": "entity.name.type.instance.jsdoc"5688},5689"2": {5690"name": "punctuation.definition.bracket.curly.end.jsdoc"5691}5692},5693"patterns": [5694{5695"include": "#brackets"5696}5697]5698}5699]5700},5701"jsx": {5702"patterns": [5703{5704"include": "#jsx-tag-without-attributes-in-expression"5705},5706{5707"include": "#jsx-tag-in-expression"5708}5709]5710},5711"jsx-tag-without-attributes-in-expression": {5712"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*(>))",5713"end": "(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",5714"patterns": [5715{5716"include": "#jsx-tag-without-attributes"5717}5718]5719},5720"jsx-tag-without-attributes": {5721"name": "meta.tag.without-attributes.js",5722"begin": "(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>)",5723"end": "(</)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>)",5724"beginCaptures": {5725"1": {5726"name": "punctuation.definition.tag.begin.js"5727},5728"2": {5729"name": "entity.name.tag.namespace.js"5730},5731"3": {5732"name": "punctuation.separator.namespace.js"5733},5734"4": {5735"name": "entity.name.tag.js"5736},5737"5": {5738"name": "support.class.component.js"5739},5740"6": {5741"name": "punctuation.definition.tag.end.js"5742}5743},5744"endCaptures": {5745"1": {5746"name": "punctuation.definition.tag.begin.js"5747},5748"2": {5749"name": "entity.name.tag.namespace.js"5750},5751"3": {5752"name": "punctuation.separator.namespace.js"5753},5754"4": {5755"name": "entity.name.tag.js"5756},5757"5": {5758"name": "support.class.component.js"5759},5760"6": {5761"name": "punctuation.definition.tag.end.js"5762}5763},5764"contentName": "meta.jsx.children.js",5765"patterns": [5766{5767"include": "#jsx-children"5768}5769]5770},5771"jsx-tag-in-expression": {5772"begin": "(?x)\n (?<!\\+\\+|--)(?<=[({\\[,?=>:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s*\n (?!<\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s+[^=>])|,)) # look ahead is not type parameter of arrow\n (?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",5773"end": "(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",5774"patterns": [5775{5776"include": "#jsx-tag"5777}5778]5779},5780"jsx-tag": {5781"name": "meta.tag.js",5782"begin": "(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",5783"end": "(/>)|(?:(</)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",5784"endCaptures": {5785"1": {5786"name": "punctuation.definition.tag.end.js"5787},5788"2": {5789"name": "punctuation.definition.tag.begin.js"5790},5791"3": {5792"name": "entity.name.tag.namespace.js"5793},5794"4": {5795"name": "punctuation.separator.namespace.js"5796},5797"5": {5798"name": "entity.name.tag.js"5799},5800"6": {5801"name": "support.class.component.js"5802},5803"7": {5804"name": "punctuation.definition.tag.end.js"5805}5806},5807"patterns": [5808{5809"begin": "(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>)",5810"beginCaptures": {5811"1": {5812"name": "punctuation.definition.tag.begin.js"5813},5814"2": {5815"name": "entity.name.tag.namespace.js"5816},5817"3": {5818"name": "punctuation.separator.namespace.js"5819},5820"4": {5821"name": "entity.name.tag.js"5822},5823"5": {5824"name": "support.class.component.js"5825}5826},5827"end": "(?=[/]?>)",5828"patterns": [5829{5830"include": "#comment"5831},5832{5833"include": "#type-arguments"5834},5835{5836"include": "#jsx-tag-attributes"5837}5838]5839},5840{5841"begin": "(>)",5842"beginCaptures": {5843"1": {5844"name": "punctuation.definition.tag.end.js"5845}5846},5847"end": "(?=</)",5848"contentName": "meta.jsx.children.js",5849"patterns": [5850{5851"include": "#jsx-children"5852}5853]5854}5855]5856},5857"jsx-children": {5858"patterns": [5859{5860"include": "#jsx-tag-without-attributes"5861},5862{5863"include": "#jsx-tag"5864},5865{5866"include": "#jsx-evaluated-code"5867},5868{5869"include": "#jsx-entities"5870}5871]5872},5873"jsx-evaluated-code": {5874"contentName": "meta.embedded.expression.js",5875"begin": "\\{",5876"end": "\\}",5877"beginCaptures": {5878"0": {5879"name": "punctuation.section.embedded.begin.js"5880}5881},5882"endCaptures": {5883"0": {5884"name": "punctuation.section.embedded.end.js"5885}5886},5887"patterns": [5888{5889"include": "#expression"5890}5891]5892},5893"jsx-entities": {5894"patterns": [5895{5896"name": "constant.character.entity.js",5897"match": "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",5898"captures": {5899"1": {5900"name": "punctuation.definition.entity.js"5901},5902"3": {5903"name": "punctuation.definition.entity.js"5904}5905}5906}5907]5908},5909"jsx-tag-attributes": {5910"name": "meta.tag.attributes.js",5911"begin": "\\s+",5912"end": "(?=[/]?>)",5913"patterns": [5914{5915"include": "#comment"5916},5917{5918"include": "#jsx-tag-attribute-name"5919},5920{5921"include": "#jsx-tag-attribute-assignment"5922},5923{5924"include": "#jsx-string-double-quoted"5925},5926{5927"include": "#jsx-string-single-quoted"5928},5929{5930"include": "#jsx-evaluated-code"5931},5932{5933"include": "#jsx-tag-attributes-illegal"5934}5935]5936},5937"jsx-tag-attribute-name": {5938"match": "(?x)\n \\s*\n (?:([_$[:alpha:]][-_$[:alnum:].]*)(:))?\n ([_$[:alpha:]][-_$[:alnum:]]*)\n (?=\\s|=|/?>|/\\*|//)",5939"captures": {5940"1": {5941"name": "entity.other.attribute-name.namespace.js"5942},5943"2": {5944"name": "punctuation.separator.namespace.js"5945},5946"3": {5947"name": "entity.other.attribute-name.js"5948}5949}5950},5951"jsx-tag-attribute-assignment": {5952"name": "keyword.operator.assignment.js",5953"match": "=(?=\\s*(?:'|\"|{|/\\*|//|\\n))"5954},5955"jsx-string-double-quoted": {5956"name": "string.quoted.double.js",5957"begin": "\"",5958"end": "\"",5959"beginCaptures": {5960"0": {5961"name": "punctuation.definition.string.begin.js"5962}5963},5964"endCaptures": {5965"0": {5966"name": "punctuation.definition.string.end.js"5967}5968},5969"patterns": [5970{5971"include": "#jsx-entities"5972}5973]5974},5975"jsx-string-single-quoted": {5976"name": "string.quoted.single.js",5977"begin": "'",5978"end": "'",5979"beginCaptures": {5980"0": {5981"name": "punctuation.definition.string.begin.js"5982}5983},5984"endCaptures": {5985"0": {5986"name": "punctuation.definition.string.end.js"5987}5988},5989"patterns": [5990{5991"include": "#jsx-entities"5992}5993]5994},5995"jsx-tag-attributes-illegal": {5996"name": "invalid.illegal.attribute.js",5997"match": "\\S+"5998}5999}6000}60016002