"use strict";
exports.id = 8507;
exports.ids = [8507,123,8182,1858,2681];
exports.modules = {

/***/ 90123:
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ css)
/* harmony export */ });
const lang = Object.freeze({ "information_for_contributors": ["This file has been converted from https://github.com/microsoft/vscode-css/blob/master/grammars/css.cson", "If you want to provide a fix or improvement, please create a pull request against the original repository.", "Once accepted there, we are happy to receive an update request."], "version": "https://github.com/microsoft/vscode-css/commit/c216f777497265700ff336f739328e5197e012cd", "name": "css", "scopeName": "source.css", "patterns": [{ "include": "#comment-block" }, { "include": "#escapes" }, { "include": "#combinators" }, { "include": "#selector" }, { "include": "#at-rules" }, { "include": "#rule-list" }], "repository": { "at-rules": { "patterns": [{ "begin": "\\A(?:\\xEF\\xBB\\xBF)?(?i:(?=\\s*@charset\\b))", "end": ";|(?=$)", "endCaptures": { "0": { "name": "punctuation.terminator.rule.css" } }, "name": "meta.at-rule.charset.css", "patterns": [{ "captures": { "1": { "name": "invalid.illegal.not-lowercase.charset.css" }, "2": { "name": "invalid.illegal.leading-whitespace.charset.css" }, "3": { "name": "invalid.illegal.no-whitespace.charset.css" }, "4": { "name": "invalid.illegal.whitespace.charset.css" }, "5": { "name": "invalid.illegal.not-double-quoted.charset.css" }, "6": { "name": "invalid.illegal.unclosed-string.charset.css" }, "7": { "name": "invalid.illegal.unexpected-characters.charset.css" } }, "match": '(?x)        # Possible errors:\n\\G\n((?!@charset)@\\w+)   # Not lowercase (@charset is case-sensitive)\n|\n\\G(\\s+)             # Preceding whitespace\n|\n(@charset\\S[^;]*)    # No whitespace after @charset\n|\n(?<=@charset)         # Before quoted charset name\n(\\x20{2,}|\\t+)      # More than one space used, or a tab\n|\n(?<=@charset\\x20)    # Beginning of charset name\n([^";]+)              # Not double-quoted\n|\n("[^"]+$)             # Unclosed quote\n|\n(?<=")                # After charset name\n([^;]+)               # Unexpected junk instead of semicolon' }, { "captures": { "1": { "name": "keyword.control.at-rule.charset.css" }, "2": { "name": "punctuation.definition.keyword.css" } }, "match": "((@)charset)(?=\\s)" }, { "begin": '"', "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.css" } }, "end": '"|$', "endCaptures": { "0": { "name": "punctuation.definition.string.end.css" } }, "name": "string.quoted.double.css", "patterns": [{ "begin": '(?:\\G|^)(?=(?:[^"])+$)', "end": "$", "name": "invalid.illegal.unclosed.string.css" }] }] }, { "begin": `(?i)((@)import)(?:\\s+|$|(?=['"]|/\\*))`, "beginCaptures": { "1": { "name": "keyword.control.at-rule.import.css" }, "2": { "name": "punctuation.definition.keyword.css" } }, "end": ";", "endCaptures": { "0": { "name": "punctuation.terminator.rule.css" } }, "name": "meta.at-rule.import.css", "patterns": [{ "begin": "\\G\\s*(?=/\\*)", "end": "(?<=\\*/)\\s*", "patterns": [{ "include": "#comment-block" }] }, { "include": "#string" }, { "include": "#url" }, { "include": "#media-query-list" }] }, { "begin": "(?i)((@)font-face)(?=\\s*|{|/\\*|$)", "beginCaptures": { "1": { "name": "keyword.control.at-rule.font-face.css" }, "2": { "name": "punctuation.definition.keyword.css" } }, "end": "(?!\\G)", "name": "meta.at-rule.font-face.css", "patterns": [{ "include": "#comment-block" }, { "include": "#escapes" }, { "include": "#rule-list" }] }, { "begin": "(?i)(@)page(?=[\\s:{]|/\\*|$)", "captures": { "0": { "name": "keyword.control.at-rule.page.css" }, "1": { "name": "punctuation.definition.keyword.css" } }, "end": "(?=\\s*($|[:{;]))", "name": "meta.at-rule.page.css", "patterns": [{ "include": "#rule-list" }] }, { "begin": "(?i)(?=@media(\\s|\\(|/\\*|$))", "end": "(?<=})(?!\\G)", "patterns": [{ "begin": "(?i)\\G(@)media", "beginCaptures": { "0": { "name": "keyword.control.at-rule.media.css" }, "1": { "name": "punctuation.definition.keyword.css" } }, "end": "(?=\\s*[{;])", "name": "meta.at-rule.media.header.css", "patterns": [{ "include": "#media-query-list" }] }, { "begin": "{", "beginCaptures": { "0": { "name": "punctuation.section.media.begin.bracket.curly.css" } }, "end": "}", "endCaptures": { "0": { "name": "punctuation.section.media.end.bracket.curly.css" } }, "name": "meta.at-rule.media.body.css", "patterns": [{ "include": "$self" }] }] }, { "begin": `(?i)(?=@counter-style([\\s'"{;]|/\\*|$))`, "end": "(?<=})(?!\\G)", "patterns": [{ "begin": "(?i)\\G(@)counter-style", "beginCaptures": { "0": { "name": "keyword.control.at-rule.counter-style.css" }, "1": { "name": "punctuation.definition.keyword.css" } }, "end": "(?=\\s*{)", "name": "meta.at-rule.counter-style.header.css", "patterns": [{ "include": "#comment-block" }, { "include": "#escapes" }, { "captures": { "0": { "patterns": [{ "include": "#escapes" }] } }, "match": "(?x)\n(?:[-a-zA-Z_]    | [^\\x00-\\x7F])     # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F]      # Remainder of identifier\n  |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*", "name": "variable.parameter.style-name.css" }] }, { "begin": "{", "beginCaptures": { "0": { "name": "punctuation.section.property-list.begin.bracket.curly.css" } }, "end": "}", "endCaptures": { "0": { "name": "punctuation.section.property-list.end.bracket.curly.css" } }, "name": "meta.at-rule.counter-style.body.css", "patterns": [{ "include": "#comment-block" }, { "include": "#escapes" }, { "include": "#rule-list-innards" }] }] }, { "begin": `(?i)(?=@document([\\s'"{;]|/\\*|$))`, "end": "(?<=})(?!\\G)", "patterns": [{ "begin": "(?i)\\G(@)document", "beginCaptures": { "0": { "name": "keyword.control.at-rule.document.css" }, "1": { "name": "punctuation.definition.keyword.css" } }, "end": "(?=\\s*[{;])", "name": "meta.at-rule.document.header.css", "patterns": [{ "begin": "(?i)(?<![\\w-])(url-prefix|domain|regexp)(\\()", "beginCaptures": { "1": { "name": "support.function.document-rule.css" }, "2": { "name": "punctuation.section.function.begin.bracket.round.css" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.section.function.end.bracket.round.css" } }, "name": "meta.function.document-rule.css", "patterns": [{ "include": "#string" }, { "include": "#comment-block" }, { "include": "#escapes" }, { "match": `[^'")\\s]+`, "name": "variable.parameter.document-rule.css" }] }, { "include": "#url" }, { "include": "#commas" }, { "include": "#comment-block" }, { "include": "#escapes" }] }, { "begin": "{", "beginCaptures": { "0": { "name": "punctuation.section.document.begin.bracket.curly.css" } }, "end": "}", "endCaptures": { "0": { "name": "punctuation.section.document.end.bracket.curly.css" } }, "name": "meta.at-rule.document.body.css", "patterns": [{ "include": "$self" }] }] }, { "begin": `(?i)(?=@(?:-(?:webkit|moz|o|ms)-)?keyframes([\\s'"{;]|/\\*|$))`, "end": "(?<=})(?!\\G)", "patterns": [{ "begin": "(?i)\\G(@)(?:-(?:webkit|moz|o|ms)-)?keyframes", "beginCaptures": { "0": { "name": "keyword.control.at-rule.keyframes.css" }, "1": { "name": "punctuation.definition.keyword.css" } }, "end": "(?=\\s*{)", "name": "meta.at-rule.keyframes.header.css", "patterns": [{ "include": "#comment-block" }, { "include": "#escapes" }, { "captures": { "0": { "patterns": [{ "include": "#escapes" }] } }, "match": "(?x)\n(?:[-a-zA-Z_]    | [^\\x00-\\x7F])     # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F]      # Remainder of identifier\n  |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*", "name": "variable.parameter.keyframe-list.css" }] }, { "begin": "{", "beginCaptures": { "0": { "name": "punctuation.section.keyframes.begin.bracket.curly.css" } }, "end": "}", "endCaptures": { "0": { "name": "punctuation.section.keyframes.end.bracket.curly.css" } }, "name": "meta.at-rule.keyframes.body.css", "patterns": [{ "include": "#comment-block" }, { "include": "#escapes" }, { "captures": { "1": { "name": "entity.other.keyframe-offset.css" }, "2": { "name": "entity.other.keyframe-offset.percentage.css" } }, "match": "(?xi)\n(?<![\\w-]) (from|to) (?![\\w-])         # Keywords for 0% | 100%\n|\n([-+]?(?:\\d+(?:\\.\\d+)?|\\.\\d+)%)     # Percentile value" }, { "include": "#rule-list" }] }] }, { "begin": "(?i)(?=@supports(\\s|\\(|/\\*|$))", "end": "(?<=})(?!\\G)|(?=;)", "patterns": [{ "begin": "(?i)\\G(@)supports", "beginCaptures": { "0": { "name": "keyword.control.at-rule.supports.css" }, "1": { "name": "punctuation.definition.keyword.css" } }, "end": "(?=\\s*[{;])", "name": "meta.at-rule.supports.header.css", "patterns": [{ "include": "#feature-query-operators" }, { "include": "#feature-query" }, { "include": "#comment-block" }, { "include": "#escapes" }] }, { "begin": "{", "beginCaptures": { "0": { "name": "punctuation.section.supports.begin.bracket.curly.css" } }, "end": "}", "endCaptures": { "0": { "name": "punctuation.section.supports.end.bracket.curly.css" } }, "name": "meta.at-rule.supports.body.css", "patterns": [{ "include": "$self" }] }] }, { "begin": `(?i)((@)(-(ms|o)-)?viewport)(?=[\\s'"{;]|/\\*|$)`, "beginCaptures": { "1": { "name": "keyword.control.at-rule.viewport.css" }, "2": { "name": "punctuation.definition.keyword.css" } }, "end": "(?=\\s*[@{;])", "name": "meta.at-rule.viewport.css", "patterns": [{ "include": "#comment-block" }, { "include": "#escapes" }] }, { "begin": `(?i)((@)font-feature-values)(?=[\\s'"{;]|/\\*|$)\\s*`, "beginCaptures": { "1": { "name": "keyword.control.at-rule.font-feature-values.css" }, "2": { "name": "punctuation.definition.keyword.css" } }, "contentName": "variable.parameter.font-name.css", "end": "(?=\\s*[@{;])", "name": "meta.at-rule.font-features.css", "patterns": [{ "include": "#comment-block" }, { "include": "#escapes" }] }, { "include": "#font-features" }, { "begin": `(?i)((@)namespace)(?=[\\s'";]|/\\*|$)`, "beginCaptures": { "1": { "name": "keyword.control.at-rule.namespace.css" }, "2": { "name": "punctuation.definition.keyword.css" } }, "end": ";|(?=[@{])", "endCaptures": { "0": { "name": "punctuation.terminator.rule.css" } }, "name": "meta.at-rule.namespace.css", "patterns": [{ "include": "#url" }, { "captures": { "1": { "patterns": [{ "include": "#comment-block" }] }, "2": { "name": "entity.name.function.namespace-prefix.css", "patterns": [{ "include": "#escapes" }] } }, "match": "(?xi)\n(?:\\G|^|(?<=\\s))\n(?=\n  (?<=\\s|^)                             # Starts with whitespace\n  (?:[-a-zA-Z_]|[^\\x00-\\x7F])          # Then a valid identifier character\n  |\n  \\s*                                   # Possible adjoining whitespace\n  /\\*(?:[^*]|\\*[^/])*\\*/              # Injected comment\n)\n(.*?)                                    # Grouped to embed #comment-block\n(\n  (?:[-a-zA-Z_]    | [^\\x00-\\x7F])     # First letter\n  (?:[-a-zA-Z0-9_] | [^\\x00-\\x7F]      # Remainder of identifier\n    |\\\\(?:[0-9a-fA-F]{1,6}|.)\n  )*\n)" }, { "include": "#comment-block" }, { "include": "#escapes" }, { "include": "#string" }] }, { "begin": "(?i)(?=@[\\w-]+[^;]+;s*$)", "end": "(?<=;)(?!\\G)", "patterns": [{ "begin": "(?i)\\G(@)[\\w-]+", "beginCaptures": { "0": { "name": "keyword.control.at-rule.css" }, "1": { "name": "punctuation.definition.keyword.css" } }, "end": ";", "endCaptures": { "0": { "name": "punctuation.terminator.rule.css" } }, "name": "meta.at-rule.header.css" }] }, { "begin": "(?i)(?=@[\\w-]+(\\s|\\(|{|/\\*|$))", "end": "(?<=})(?!\\G)", "patterns": [{ "begin": "(?i)\\G(@)[\\w-]+", "beginCaptures": { "0": { "name": "keyword.control.at-rule.css" }, "1": { "name": "punctuation.definition.keyword.css" } }, "end": "(?=\\s*[{;])", "name": "meta.at-rule.header.css" }, { "begin": "{", "beginCaptures": { "0": { "name": "punctuation.section.begin.bracket.curly.css" } }, "end": "}", "endCaptures": { "0": { "name": "punctuation.section.end.bracket.curly.css" } }, "name": "meta.at-rule.body.css", "patterns": [{ "include": "$self" }] }] }] }, "color-keywords": { "patterns": [{ "match": "(?i)(?<![\\w-])(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)(?![\\w-])", "name": "support.constant.color.w3c-standard-color-name.css" }, { "match": "(?xi) (?<![\\w-])\n(aliceblue|antiquewhite|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|brown|burlywood\n|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan\n|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange\n|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise\n|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen\n|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki\n|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow\n|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray\n|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|magenta|mediumaquamarine|mediumblue\n|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise\n|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered\n|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum\n|powderblue|rebeccapurple|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell\n|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato\n|transparent|turquoise|violet|wheat|whitesmoke|yellowgreen)\n(?![\\w-])", "name": "support.constant.color.w3c-extended-color-name.css" }, { "match": "(?i)(?<![\\w-])currentColor(?![\\w-])", "name": "support.constant.color.current.css" }, { "match": "(?xi) (?<![\\w-])\n(ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonFace|ButtonHighlight|ButtonShadow\n|ButtonText|CaptionText|GrayText|Highlight|HighlightText|InactiveBorder|InactiveCaption\n|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow\n|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText)\n(?![\\w-])", "name": "invalid.deprecated.color.system.css" }] }, "combinators": { "patterns": [{ "match": "/deep/|>>>", "name": "invalid.deprecated.combinator.css" }, { "match": ">>|>|\\+|~", "name": "keyword.operator.combinator.css" }] }, "commas": { "match": ",", "name": "punctuation.separator.list.comma.css" }, "comment-block": { "begin": "/\\*", "beginCaptures": { "0": { "name": "punctuation.definition.comment.begin.css" } }, "end": "\\*/", "endCaptures": { "0": { "name": "punctuation.definition.comment.end.css" } }, "name": "comment.block.css" }, "escapes": { "patterns": [{ "match": "\\\\[0-9a-fA-F]{1,6}", "name": "constant.character.escape.codepoint.css" }, { "begin": "\\\\$\\s*", "end": "^(?<!\\G)", "name": "constant.character.escape.newline.css" }, { "match": "\\\\.", "name": "constant.character.escape.css" }] }, "feature-query": { "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.condition.begin.bracket.round.css" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.condition.end.bracket.round.css" } }, "name": "meta.feature-query.css", "patterns": [{ "include": "#feature-query-operators" }, { "include": "#feature-query" }] }, "feature-query-operators": { "patterns": [{ "match": "(?i)(?<=[\\s()]|^|\\*/)(and|not|or)(?=[\\s()]|/\\*|$)", "name": "keyword.operator.logical.feature.$1.css" }, { "include": "#rule-list-innards" }] }, "font-features": { "begin": `(?xi)
((@)(annotation|character-variant|ornaments|styleset|stylistic|swash))
(?=[\\s@'"{;]|/\\*|$)`, "beginCaptures": { "1": { "name": "keyword.control.at-rule.${3:/downcase}.css" }, "2": { "name": "punctuation.definition.keyword.css" } }, "end": "(?<=})", "name": "meta.at-rule.${3:/downcase}.css", "patterns": [{ "begin": "{", "beginCaptures": { "0": { "name": "punctuation.section.property-list.begin.bracket.curly.css" } }, "end": "}", "endCaptures": { "0": { "name": "punctuation.section.property-list.end.bracket.curly.css" } }, "name": "meta.property-list.font-feature.css", "patterns": [{ "captures": { "0": { "patterns": [{ "include": "#escapes" }] } }, "match": "(?x)\n(?: [-a-zA-Z_]    | [^\\x00-\\x7F] )   # First letter\n(?: [-a-zA-Z0-9_] | [^\\x00-\\x7F]     # Remainder of identifier\n  | \\\\(?:[0-9a-fA-F]{1,6}|.)\n)*", "name": "variable.font-feature.css" }, { "include": "#rule-list-innards" }] }] }, "functions": { "patterns": [{ "begin": "(?i)(?<![\\w-])(calc)(\\()", "beginCaptures": { "1": { "name": "support.function.calc.css" }, "2": { "name": "punctuation.section.function.begin.bracket.round.css" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.section.function.end.bracket.round.css" } }, "name": "meta.function.calc.css", "patterns": [{ "match": "[*/]|(?<=\\s|^)[-+](?=\\s|$)", "name": "keyword.operator.arithmetic.css" }, { "include": "#property-values" }] }, { "begin": "(?i)(?<![\\w-])(rgba?|rgb|hsla?|hsl|hwb|lab|oklab|lch|oklch|color)(\\()", "beginCaptures": { "1": { "name": "support.function.misc.css" }, "2": { "name": "punctuation.section.function.begin.bracket.round.css" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.section.function.end.bracket.round.css" } }, "name": "meta.function.color.css", "patterns": [{ "include": "#property-values" }] }, { "begin": '(?xi) (?<![\\w-])\n(\n  (?:-webkit-|-moz-|-o-)?    # Accept prefixed/historical variants\n  (?:repeating-)?            # "Repeating"-type gradient\n  (?:linear|radial|conic)    # Shape\n  -gradient\n)\n(\\()', "beginCaptures": { "1": { "name": "support.function.gradient.css" }, "2": { "name": "punctuation.section.function.begin.bracket.round.css" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.section.function.end.bracket.round.css" } }, "name": "meta.function.gradient.css", "patterns": [{ "match": "(?i)(?<![\\w-])(from|to|at|in|hue)(?![\\w-])", "name": "keyword.operator.gradient.css" }, { "include": "#property-values" }] }, { "begin": "(?i)(?<![\\w-])(-webkit-gradient)(\\()", "beginCaptures": { "1": { "name": "invalid.deprecated.gradient.function.css" }, "2": { "name": "punctuation.section.function.begin.bracket.round.css" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.section.function.end.bracket.round.css" } }, "name": "meta.function.gradient.invalid.deprecated.gradient.css", "patterns": [{ "begin": "(?i)(?<![\\w-])(from|to|color-stop)(\\()", "beginCaptures": { "1": { "name": "invalid.deprecated.function.css" }, "2": { "name": "punctuation.section.function.begin.bracket.round.css" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.section.function.end.bracket.round.css" } }, "patterns": [{ "include": "#property-values" }] }, { "include": "#property-values" }] }, { "begin": "(?xi) (?<![\\w-])\n(annotation|attr|blur|brightness|character-variant|clamp|contrast|counters?\n|cross-fade|drop-shadow|element|fit-content|format|grayscale|hue-rotate|color-mix\n|image-set|invert|local|max|min|minmax|opacity|ornaments|repeat|saturate|sepia\n|styleset|stylistic|swash|symbols\n|cos|sin|tan|acos|asin|atan|atan2|hypot|sqrt|pow|log|exp|abs|sign)\n(\\()", "beginCaptures": { "1": { "name": "support.function.misc.css" }, "2": { "name": "punctuation.section.function.begin.bracket.round.css" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.section.function.end.bracket.round.css" } }, "name": "meta.function.misc.css", "patterns": [{ "match": `(?i)(?<=[,\\s"]|\\*/|^)\\d+x(?=[\\s,"')]|/\\*|$)`, "name": "constant.numeric.other.density.css" }, { "include": "#property-values" }, { "match": `[^'"),\\s]+`, "name": "variable.parameter.misc.css" }] }, { "begin": "(?i)(?<![\\w-])(circle|ellipse|inset|polygon|rect)(\\()", "beginCaptures": { "1": { "name": "support.function.shape.css" }, "2": { "name": "punctuation.section.function.begin.bracket.round.css" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.section.function.end.bracket.round.css" } }, "name": "meta.function.shape.css", "patterns": [{ "match": "(?i)(?<=\\s|^|\\*/)(at|round)(?=\\s|/\\*|$)", "name": "keyword.operator.shape.css" }, { "include": "#property-values" }] }, { "begin": "(?i)(?<![\\w-])(cubic-bezier|steps)(\\()", "beginCaptures": { "1": { "name": "support.function.timing-function.css" }, "2": { "name": "punctuation.section.function.begin.bracket.round.css" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.section.function.end.bracket.round.css" } }, "name": "meta.function.timing-function.css", "patterns": [{ "match": "(?i)(?<![\\w-])(start|end)(?=\\s*\\)|$)", "name": "support.constant.step-direction.css" }, { "include": "#property-values" }] }, { "begin": "(?xi) (?<![\\w-])\n( (?:translate|scale|rotate)(?:[XYZ]|3D)?\n| matrix(?:3D)?\n| skew[XY]?\n| perspective\n)\n(\\()", "beginCaptures": { "1": { "name": "support.function.transform.css" }, "2": { "name": "punctuation.section.function.begin.bracket.round.css" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.section.function.end.bracket.round.css" } }, "patterns": [{ "include": "#property-values" }] }, { "include": "#url" }, { "begin": "(?i)(?<![\\w-])(var)(\\()", "beginCaptures": { "1": { "name": "support.function.misc.css" }, "2": { "name": "punctuation.section.function.begin.bracket.round.css" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.section.function.end.bracket.round.css" } }, "name": "meta.function.variable.css", "patterns": [{ "name": "variable.argument.css", "match": "(?x)\n--\n(?:[-a-zA-Z_]    | [^\\x00-\\x7F])     # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F]      # Remainder of identifier\n  |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*" }, { "include": "#property-values" }] }] }, "functional-pseudo-classes": { "patterns": [{ "begin": "(?i)((:)dir)(\\()", "beginCaptures": { "1": { "name": "entity.other.attribute-name.pseudo-class.css" }, "2": { "name": "punctuation.definition.entity.css" }, "3": { "name": "punctuation.section.function.begin.bracket.round.css" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.section.function.end.bracket.round.css" } }, "patterns": [{ "include": "#comment-block" }, { "include": "#escapes" }, { "match": "(?i)(?<![\\w-])(ltr|rtl)(?![\\w-])", "name": "support.constant.text-direction.css" }, { "include": "#property-values" }] }, { "begin": "(?i)((:)lang)(\\()", "beginCaptures": { "1": { "name": "entity.other.attribute-name.pseudo-class.css" }, "2": { "name": "punctuation.definition.entity.css" }, "3": { "name": "punctuation.section.function.begin.bracket.round.css" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.section.function.end.bracket.round.css" } }, "patterns": [{ "match": "(?<=[(,\\s])[a-zA-Z]+(-[a-zA-Z0-9]*|\\\\(?:[0-9a-fA-F]{1,6}|.))*(?=[),\\s])", "name": "support.constant.language-range.css" }, { "begin": '"', "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.css" } }, "end": '"', "endCaptures": { "0": { "name": "punctuation.definition.string.end.css" } }, "name": "string.quoted.double.css", "patterns": [{ "include": "#escapes" }, { "match": '(?<=["\\s])[a-zA-Z*]+(-[a-zA-Z0-9*]*)*(?=["\\s])', "name": "support.constant.language-range.css" }] }, { "begin": "'", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.css" } }, "end": "'", "endCaptures": { "0": { "name": "punctuation.definition.string.end.css" } }, "name": "string.quoted.single.css", "patterns": [{ "include": "#escapes" }, { "match": "(?<=['\\s])[a-zA-Z*]+(-[a-zA-Z0-9*]*)*(?=['\\s])", "name": "support.constant.language-range.css" }] }, { "include": "#commas" }] }, { "begin": "(?i)((:)(?:not|has|matches|where|is))(\\()", "beginCaptures": { "1": { "name": "entity.other.attribute-name.pseudo-class.css" }, "2": { "name": "punctuation.definition.entity.css" }, "3": { "name": "punctuation.section.function.begin.bracket.round.css" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.section.function.end.bracket.round.css" } }, "patterns": [{ "include": "#selector-innards" }] }, { "begin": "(?i)((:)nth-(?:last-)?(?:child|of-type))(\\()", "beginCaptures": { "1": { "name": "entity.other.attribute-name.pseudo-class.css" }, "2": { "name": "punctuation.definition.entity.css" }, "3": { "name": "punctuation.section.function.begin.bracket.round.css" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.section.function.end.bracket.round.css" } }, "patterns": [{ "match": "(?i)[+-]?(\\d+n?|n)(\\s*[+-]\\s*\\d+)?", "name": "constant.numeric.css" }, { "match": "(?i)even|odd", "name": "support.constant.parity.css" }] }] }, "media-features": { "captures": { "1": { "name": "support.type.property-name.media.css" }, "2": { "name": "support.type.property-name.media.css" }, "3": { "name": "support.type.vendored.property-name.media.css" } }, "match": "(?xi)\n(?<=^|\\s|\\(|\\*/)           # Preceded by whitespace, bracket or comment\n(?:\n  # Standardised features\n  (\n    (?:min-|max-)?            # Range features\n    (?: height\n      | width\n      | aspect-ratio\n      | color\n      | color-index\n      | monochrome\n      | resolution\n    )\n    | grid                    # Discrete features\n    | scan\n    | orientation\n    | display-mode\n    | hover\n  )\n  |\n  # Deprecated features\n  (\n    (?:min-|max-)?            # Deprecated in Media Queries 4\n    device-\n    (?: height\n      | width\n      | aspect-ratio\n    )\n  )\n  |\n  # Vendor extensions\n  (\n    (?:\n      # Spec-compliant syntax\n      [-_]\n      (?: webkit              # Webkit/Blink\n        | apple|khtml         # Webkit aliases\n        | epub                # ePub3\n        | moz                 # Gecko\n        | ms                  # Microsoft\n        | o                   # Presto (pre-Opera 15)\n        | xv|ah|rim|atsc|     # Less common vendors\n          hp|tc|wap|ro\n      )\n      |\n      # Non-standard prefixes\n      (?: mso                 # Microsoft Office\n        | prince              # YesLogic\n      )\n    )\n    -\n    [\\w-]+                   # Feature name\n    (?=                       # Terminates correctly\n      \\s*                    # Possible whitespace\n      (?:                     # Possible injected comment\n        /\\*\n        (?:[^*]|\\*[^/])*\n        \\*/\n      )?\n      \\s*\n      [:)]                    # Ends with a colon or closed bracket\n    )\n  )\n)\n(?=\\s|$|[><:=]|\\)|/\\*)     # Terminates cleanly" }, "media-feature-keywords": { "match": "(?xi)\n(?<=^|\\s|:|\\*/)\n(?: portrait                  # Orientation\n  | landscape\n  | progressive               # Scan types\n  | interlace\n  | fullscreen                # Display modes\n  | standalone\n  | minimal-ui\n  | browser\n  | hover\n)\n(?=\\s|\\)|$)", "name": "support.constant.property-value.css" }, "media-query": { "begin": "\\G", "end": "(?=\\s*[{;])", "patterns": [{ "include": "#comment-block" }, { "include": "#escapes" }, { "include": "#media-types" }, { "match": "(?i)(?<=\\s|^|,|\\*/)(only|not)(?=\\s|{|/\\*|$)", "name": "keyword.operator.logical.$1.media.css" }, { "match": "(?i)(?<=\\s|^|\\*/|\\))and(?=\\s|/\\*|$)", "name": "keyword.operator.logical.and.media.css" }, { "match": ",(?:(?:\\s*,)+|(?=\\s*[;){]))", "name": "invalid.illegal.comma.css" }, { "include": "#commas" }, { "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.parameters.begin.bracket.round.css" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.parameters.end.bracket.round.css" } }, "patterns": [{ "include": "#media-features" }, { "include": "#media-feature-keywords" }, { "match": ":", "name": "punctuation.separator.key-value.css" }, { "match": ">=|<=|=|<|>", "name": "keyword.operator.comparison.css" }, { "captures": { "1": { "name": "constant.numeric.css" }, "2": { "name": "keyword.operator.arithmetic.css" }, "3": { "name": "constant.numeric.css" } }, "match": "(\\d+)\\s*(/)\\s*(\\d+)", "name": "meta.ratio.css" }, { "include": "#numeric-values" }, { "include": "#comment-block" }] }] }, "media-query-list": { "begin": "(?=\\s*[^{;])", "end": "(?=\\s*[{;])", "patterns": [{ "include": "#media-query" }] }, "media-types": { "captures": { "1": { "name": "support.constant.media.css" }, "2": { "name": "invalid.deprecated.constant.media.css" } }, "match": "(?xi)\n(?<=^|\\s|,|\\*/)\n(?:\n  # Valid media types\n  (all|print|screen|speech)\n  |\n  # Deprecated in Media Queries 4: http://dev.w3.org/csswg/mediaqueries/#media-types\n  (aural|braille|embossed|handheld|projection|tty|tv)\n)\n(?=$|[{,\\s;]|/\\*)" }, "numeric-values": { "patterns": [{ "captures": { "1": { "name": "punctuation.definition.constant.css" } }, "match": "(#)(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})\\b", "name": "constant.other.color.rgb-value.hex.css" }, { "captures": { "1": { "name": "keyword.other.unit.percentage.css" }, "2": { "name": "keyword.other.unit.${2:/downcase}.css" } }, "match": "(?xi) (?<![\\w-])\n[-+]?                               # Sign indicator\n\n(?:                                 # Numerals\n    [0-9]+ (?:\\.[0-9]+)?           # Integer/float with leading digits\n  | \\.[0-9]+                       # Float without leading digits\n)\n\n(?:                                 # Scientific notation\n  (?<=[0-9])                        # Exponent must follow a digit\n  E                                 # Exponent indicator\n  [-+]?                             # Possible sign indicator\n  [0-9]+                            # Exponent value\n)?\n\n(?:                                 # Possible unit for data-type:\n  (%)                               # - Percentage\n  | ( deg|grad|rad|turn             # - Angle\n    | Hz|kHz                        # - Frequency\n    | ch|cm|em|ex|fr|in|mm|mozmm|   # - Length\n      pc|pt|px|q|rem|rch|rex|rlh|\n      ic|ric|rcap|vh|vw|vb|vi|svh|\n      svw|svb|svi|dvh|dvw|dvb|dvi|\n      lvh|lvw|lvb|lvi|vmax|vmin|\n      cqw|cqi|cqh|cqb|cqmin|cqmax\n    | dpi|dpcm|dppx                 # - Resolution\n    | s|ms                          # - Time\n    )\n  \\b                               # Boundary checking intentionally lax to\n)?                                  # facilitate embedding in CSS-like grammars", "name": "constant.numeric.css" }] }, "property-keywords": { "patterns": [{ "match": "(?xi) (?<![\\w-])\n(above|absolute|active|add|additive|after-edge|alias|all|all-petite-caps|all-scroll|all-small-caps|alpha|alphabetic|alternate|alternate-reverse\n|always|antialiased|auto|auto-fill|auto-fit|auto-pos|available|avoid|avoid-column|avoid-page|avoid-region|backwards|balance|baseline|before-edge|below|bevel\n|bidi-override|blink|block|block-axis|block-start|block-end|bold|bolder|border|border-box|both|bottom|bottom-outside|break-all|break-word|bullets\n|butt|capitalize|caption|cell|center|central|char|circle|clip|clone|close-quote|closest-corner|closest-side|col-resize|collapse|color|color-burn\n|color-dodge|column|column-reverse|common-ligatures|compact|condensed|contain|content|content-box|contents|context-menu|contextual|copy|cover\n|crisp-edges|crispEdges|crosshair|cyclic|dark|darken|dashed|decimal|default|dense|diagonal-fractions|difference|digits|disabled|disc|discretionary-ligatures\n|distribute|distribute-all-lines|distribute-letter|distribute-space|dot|dotted|double|double-circle|downleft|downright|e-resize|each-line|ease|ease-in\n|ease-in-out|ease-out|economy|ellipse|ellipsis|embed|end|evenodd|ew-resize|exact|exclude|exclusion|expanded|extends|extra-condensed|extra-expanded\n|fallback|farthest-corner|farthest-side|fill|fill-available|fill-box|filled|fit-content|fixed|flat|flex|flex-end|flex-start|flip|flow-root|forwards|freeze\n|from-image|full-width|geometricPrecision|georgian|grab|grabbing|grayscale|grid|groove|hand|hanging|hard-light|help|hidden|hide\n|historical-forms|historical-ligatures|horizontal|horizontal-tb|hue|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space\n|ideographic|inactive|infinite|inherit|initial|inline|inline-axis|inline-block|inline-end|inline-flex|inline-grid|inline-list-item|inline-start\n|inline-table|inset|inside|inter-character|inter-ideograph|inter-word|intersect|invert|isolate|isolate-override|italic|jis04|jis78|jis83\n|jis90|justify|justify-all|kannada|keep-all|landscape|large|larger|left|light|lighten|lighter|line|line-edge|line-through|linear|linearRGB\n|lining-nums|list-item|local|loose|lowercase|lr|lr-tb|ltr|luminance|luminosity|main-size|mandatory|manipulation|manual|margin-box|match-parent\n|match-source|mathematical|max-content|medium|menu|message-box|middle|min-content|miter|mixed|move|multiply|n-resize|narrower|ne-resize\n|nearest-neighbor|nesw-resize|newspaper|no-change|no-clip|no-close-quote|no-common-ligatures|no-contextual|no-discretionary-ligatures\n|no-drop|no-historical-ligatures|no-open-quote|no-repeat|none|nonzero|normal|not-allowed|nowrap|ns-resize|numbers|numeric|nw-resize|nwse-resize\n|oblique|oldstyle-nums|open|open-quote|optimizeLegibility|optimizeQuality|optimizeSpeed|optional|ordinal|outset|outside|over|overlay|overline|padding\n|padding-box|page|painted|pan-down|pan-left|pan-right|pan-up|pan-x|pan-y|paused|petite-caps|pixelated|plaintext|pointer|portrait|pre|pre-line\n|pre-wrap|preserve-3d|progress|progressive|proportional-nums|proportional-width|proximity|radial|recto|region|relative|remove|repeat|repeat-[xy]\n|reset-size|reverse|revert|ridge|right|rl|rl-tb|round|row|row-resize|row-reverse|row-severse|rtl|ruby|ruby-base|ruby-base-container|ruby-text\n|ruby-text-container|run-in|running|s-resize|saturation|scale-down|screen|scroll|scroll-position|se-resize|semi-condensed|semi-expanded|separate\n|sesame|show|sideways|sideways-left|sideways-lr|sideways-right|sideways-rl|simplified|slashed-zero|slice|small|small-caps|small-caption|smaller\n|smooth|soft-light|solid|space|space-around|space-between|space-evenly|spell-out|square|sRGB|stacked-fractions|start|static|status-bar|swap\n|step-end|step-start|sticky|stretch|strict|stroke|stroke-box|style|sub|subgrid|subpixel-antialiased|subtract|super|sw-resize|symbolic|table\n|table-caption|table-cell|table-column|table-column-group|table-footer-group|table-header-group|table-row|table-row-group|tabular-nums|tb|tb-rl\n|text|text-after-edge|text-before-edge|text-bottom|text-top|thick|thin|titling-caps|top|top-outside|touch|traditional|transparent|triangle\n|ultra-condensed|ultra-expanded|under|underline|unicase|unset|upleft|uppercase|upright|use-glyph-orientation|use-script|verso|vertical\n|vertical-ideographic|vertical-lr|vertical-rl|vertical-text|view-box|visible|visibleFill|visiblePainted|visibleStroke|w-resize|wait|wavy\n|weight|whitespace|wider|words|wrap|wrap-reverse|x|x-large|x-small|xx-large|xx-small|y|zero|zoom-in|zoom-out)\n(?![\\w-])", "name": "support.constant.property-value.css" }, { "match": "(?xi) (?<![\\w-])\n(arabic-indic|armenian|bengali|cambodian|circle|cjk-decimal|cjk-earthly-branch|cjk-heavenly-stem|cjk-ideographic\n|decimal|decimal-leading-zero|devanagari|disc|disclosure-closed|disclosure-open|ethiopic-halehame-am\n|ethiopic-halehame-ti-e[rt]|ethiopic-numeric|georgian|gujarati|gurmukhi|hangul|hangul-consonant|hebrew\n|hiragana|hiragana-iroha|japanese-formal|japanese-informal|kannada|katakana|katakana-iroha|khmer\n|korean-hangul-formal|korean-hanja-formal|korean-hanja-informal|lao|lower-alpha|lower-armenian|lower-greek\n|lower-latin|lower-roman|malayalam|mongolian|myanmar|oriya|persian|simp-chinese-formal|simp-chinese-informal\n|square|tamil|telugu|thai|tibetan|trad-chinese-formal|trad-chinese-informal|upper-alpha|upper-armenian\n|upper-latin|upper-roman|urdu)\n(?![\\w-])", "name": "support.constant.property-value.list-style-type.css" }, { "match": "(?<![\\w-])(?i:-(?:ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)|(?:mso|prince))-[a-zA-Z-]+", "name": "support.constant.vendored.property-value.css" }, { "match": "(?<![\\w-])(?i:arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system-ui|system|tahoma|times|trebuchet|ui-monospace|ui-rounded|ui-sans-serif|ui-serif|utopia|verdana|webdings|sans-serif|serif|monospace)(?![\\w-])", "name": "support.constant.font-name.css" }] }, "property-names": { "patterns": [{ "match": "(?xi) (?<![\\w-])\n(?:\n  # Standard CSS\n  accent-color|additive-symbols|align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration\n  | animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backdrop-filter\n  | backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image\n  | background-origin|background-position|background-position-[xy]|background-repeat|background-size|bleed|block-size|border\n  | border-block-end|border-block-end-color|border-block-end-style|border-block-end-width|border-block-start|border-block-start-color\n  | border-block-start-style|border-block-start-width|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius\n  | border-bottom-style|border-bottom-width|border-collapse|border-color|border-end-end-radius|border-end-start-radius|border-image\n  | border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-inline-end\n  | border-inline-end-color|border-inline-end-style|border-inline-end-width|border-inline-start|border-inline-start-color\n  | border-inline-start-style|border-inline-start-width|border-left|border-left-color|border-left-style|border-left-width\n  | border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-start-end-radius\n  | border-start-start-radius|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style\n  | border-top-width|border-width|bottom|box-decoration-break|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side\n  | caret-color|clear|clip|clip-path|clip-rule|color|color-adjust|color-interpolation-filters|color-scheme|column-count|column-fill|column-gap\n  | column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|contain|container|container-name|container-type|content|counter-increment\n  | counter-reset|cursor|direction|display|empty-cells|enable-background|fallback|fill|fill-opacity|fill-rule|filter|flex|flex-basis\n  | flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|flood-color|flood-opacity|font|font-display|font-family\n  | font-feature-settings|font-kerning|font-language-override|font-optical-sizing|font-size|font-size-adjust|font-stretch\n  | font-style|font-synthesis|font-variant|font-variant-alternates|font-variant-caps|font-variant-east-asian|font-variant-ligatures\n  | font-variant-numeric|font-variant-position|font-variation-settings|font-weight|gap|glyph-orientation-horizontal|glyph-orientation-vertical\n  | grid|grid-area|grid-auto-columns|grid-auto-flow|grid-auto-rows|grid-column|grid-column-end|grid-column-gap|grid-column-start\n  | grid-gap|grid-row|grid-row-end|grid-row-gap|grid-row-start|grid-template|grid-template-areas|grid-template-columns|grid-template-rows\n  | hanging-punctuation|height|hyphens|image-orientation|image-rendering|image-resolution|ime-mode|initial-letter|initial-letter-align\n  | inline-size|inset|inset-block|inset-block-end|inset-block-start|inset-inline|inset-inline-end|inset-inline-start|isolation\n  | justify-content|justify-items|justify-self|kerning|left|letter-spacing|lighting-color|line-break|line-clamp|line-height|list-style\n  | list-style-image|list-style-position|list-style-type|margin|margin-block|margin-block-end|margin-block-start|margin-bottom|margin-inline|margin-inline-end|margin-inline-start\n  | margin-left|margin-right|margin-top|marker-end|marker-mid|marker-start|marks|mask|mask-border|mask-border-mode|mask-border-outset\n  | mask-border-repeat|mask-border-slice|mask-border-source|mask-border-width|mask-clip|mask-composite|mask-image|mask-mode\n  | mask-origin|mask-position|mask-repeat|mask-size|mask-type|max-block-size|max-height|max-inline-size|max-lines|max-width\n  | max-zoom|min-block-size|min-height|min-inline-size|min-width|min-zoom|mix-blend-mode|negative|object-fit|object-position\n  | offset|offset-anchor|offset-distance|offset-path|offset-position|offset-rotation|opacity|order|orientation|orphans\n  | outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-anchor|overflow-block|overflow-inline\n  | overflow-wrap|overflow-[xy]|overscroll-behavior|overscroll-behavior-block|overscroll-behavior-inline|overscroll-behavior-[xy]\n  | pad|padding|padding-block|padding-block-end|padding-block-start|padding-bottom|padding-inline|padding-inline-end|padding-inline-start|padding-left\n  | padding-right|padding-top|page-break-after|page-break-before|page-break-inside|paint-order|perspective|perspective-origin\n  | place-content|place-items|place-self|pointer-events|position|prefix|quotes|range|resize|right|rotate|row-gap|ruby-align\n  | ruby-merge|ruby-position|scale|scroll-behavior|scroll-margin|scroll-margin-block|scroll-margin-block-end|scroll-margin-block-start\n  | scroll-margin-bottom|scroll-margin-inline|scroll-margin-inline-end|scroll-margin-inline-start|scroll-margin-left|scroll-margin-right\n  | scroll-margin-top|scroll-padding|scroll-padding-block|scroll-padding-block-end|scroll-padding-block-start|scroll-padding-bottom\n  | scroll-padding-inline|scroll-padding-inline-end|scroll-padding-inline-start|scroll-padding-left|scroll-padding-right\n  | scroll-padding-top|scroll-snap-align|scroll-snap-coordinate|scroll-snap-destination|scroll-snap-stop|scroll-snap-type\n  | scrollbar-color|scrollbar-gutter|scrollbar-width|shape-image-threshold|shape-margin|shape-outside|shape-rendering|size\n  | speak-as|src|stop-color|stop-opacity|stroke|stroke-dasharray|stroke-dashoffset|stroke-linecap|stroke-linejoin|stroke-miterlimit\n  | stroke-opacity|stroke-width|suffix|symbols|system|tab-size|table-layout|text-align|text-align-last|text-anchor|text-combine-upright\n  | text-decoration|text-decoration-color|text-decoration-line|text-decoration-skip|text-decoration-skip-ink|text-decoration-style|text-decoration-thickness\n  | text-emphasis|text-emphasis-color|text-emphasis-position|text-emphasis-style|text-indent|text-justify|text-orientation\n  | text-overflow|text-rendering|text-shadow|text-size-adjust|text-transform|text-underline-offset|text-underline-position|top|touch-action|transform\n  | transform-box|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function\n  | translate|unicode-bidi|unicode-range|user-select|user-zoom|vertical-align|visibility|white-space|widows|width|will-change\n  | word-break|word-spacing|word-wrap|writing-mode|z-index|zoom\n\n  # SVG attributes\n  | alignment-baseline|baseline-shift|clip-rule|color-interpolation|color-interpolation-filters|color-profile\n  | color-rendering|cx|cy|dominant-baseline|enable-background|fill|fill-opacity|fill-rule|flood-color|flood-opacity\n  | glyph-orientation-horizontal|glyph-orientation-vertical|height|kerning|lighting-color|marker-end|marker-mid\n  | marker-start|r|rx|ry|shape-rendering|stop-color|stop-opacity|stroke|stroke-dasharray|stroke-dashoffset|stroke-linecap\n  | stroke-linejoin|stroke-miterlimit|stroke-opacity|stroke-width|text-anchor|width|x|y\n\n  # Not listed on MDN; presumably deprecated\n  | adjust|after|align|align-last|alignment|alignment-adjust|appearance|attachment|azimuth|background-break\n  | balance|baseline|before|bidi|binding|bookmark|bookmark-label|bookmark-level|bookmark-target|border-length\n  | bottom-color|bottom-left-radius|bottom-right-radius|bottom-style|bottom-width|box|box-align|box-direction\n  | box-flex|box-flex-group|box-lines|box-ordinal-group|box-orient|box-pack|break|character|collapse|column\n  | column-break-after|column-break-before|count|counter|crop|cue|cue-after|cue-before|decoration|decoration-break\n  | delay|display-model|display-role|down|drop|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust\n  | drop-initial-before-align|drop-initial-size|drop-initial-value|duration|elevation|emphasis|family|fit|fit-position\n  | flex-group|float-offset|gap|grid-columns|grid-rows|hanging-punctuation|header|hyphenate|hyphenate-after|hyphenate-before\n  | hyphenate-character|hyphenate-lines|hyphenate-resource|icon|image|increment|indent|index|initial-after-adjust\n  | initial-after-align|initial-before-adjust|initial-before-align|initial-size|initial-value|inline-box-align|iteration-count\n  | justify|label|left-color|left-style|left-width|length|level|line|line-stacking|line-stacking-ruby|line-stacking-shift\n  | line-stacking-strategy|lines|list|mark|mark-after|mark-before|marks|marquee|marquee-direction|marquee-play-count|marquee-speed\n  | marquee-style|max|min|model|move-to|name|nav|nav-down|nav-index|nav-left|nav-right|nav-up|new|numeral|offset|ordinal-group\n  | orient|origin|overflow-style|overhang|pack|page|page-policy|pause|pause-after|pause-before|phonemes|pitch|pitch-range\n  | play-count|play-during|play-state|point|presentation|presentation-level|profile|property|punctuation|punctuation-trim\n  | radius|rate|rendering-intent|repeat|replace|reset|resolution|resource|respond-to|rest|rest-after|rest-before|richness\n  | right-color|right-style|right-width|role|rotation|rotation-point|rows|ruby|ruby-overhang|ruby-span|rule|rule-color\n  | rule-style|rule-width|shadow|size|size-adjust|sizing|space|space-collapse|spacing|span|speak|speak-header|speak-numeral\n  | speak-punctuation|speech|speech-rate|speed|stacking|stacking-ruby|stacking-shift|stacking-strategy|stress|stretch\n  | string-set|style|style-image|style-position|style-type|target|target-name|target-new|target-position|text|text-height\n  | text-justify|text-outline|text-replace|text-wrap|timing-function|top-color|top-left-radius|top-right-radius|top-style\n  | top-width|trim|unicode|up|user-select|variant|voice|voice-balance|voice-duration|voice-family|voice-pitch|voice-pitch-range\n  | voice-rate|voice-stress|voice-volume|volume|weight|white|white-space-collapse|word|wrap\n)\n(?![\\w-])", "name": "support.type.property-name.css" }, { "match": "(?<![\\w-])(?i:-(?:ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)|(?:mso|prince))-[a-zA-Z-]+", "name": "support.type.vendored.property-name.css" }] }, "property-values": { "patterns": [{ "include": "#commas" }, { "include": "#comment-block" }, { "include": "#escapes" }, { "include": "#functions" }, { "include": "#property-keywords" }, { "include": "#unicode-range" }, { "include": "#numeric-values" }, { "include": "#color-keywords" }, { "include": "#string" }, { "match": "!\\s*important(?![\\w-])", "name": "keyword.other.important.css" }] }, "pseudo-classes": { "captures": { "1": { "name": "punctuation.definition.entity.css" }, "2": { "name": "invalid.illegal.colon.css" } }, "match": "(?xi)\n(:)(:*)\n(?: active|any-link|checked|default|disabled|empty|enabled|first\n  | (?:first|last|only)-(?:child|of-type)|focus|focus-visible|focus-within|fullscreen|host|hover\n  | in-range|indeterminate|invalid|left|link|optional|out-of-range\n  | read-only|read-write|required|right|root|scope|target|unresolved\n  | valid|visited\n)(?![\\w-]|\\s*[;}])", "name": "entity.other.attribute-name.pseudo-class.css" }, "pseudo-elements": { "captures": { "1": { "name": "punctuation.definition.entity.css" }, "2": { "name": "punctuation.definition.entity.css" } }, "match": "(?xi)\n(?:\n  (::?)                       # Elements using both : and :: notation\n  (?: after\n    | before\n    | first-letter\n    | first-line\n    | (?:-(?:ah|apple|atsc|epub|hp|khtml|moz\n            |ms|o|rim|ro|tc|wap|webkit|xv)\n        | (?:mso|prince))\n      -[a-z-]+\n  )\n  |\n  (::)                        # Double-colon only\n  (?: backdrop\n    | content\n    | grammar-error\n    | marker\n    | placeholder\n    | selection\n    | shadow\n    | spelling-error\n  )\n)\n(?![\\w-]|\\s*[;}])", "name": "entity.other.attribute-name.pseudo-element.css" }, "rule-list": { "begin": "{", "beginCaptures": { "0": { "name": "punctuation.section.property-list.begin.bracket.curly.css" } }, "end": "}", "endCaptures": { "0": { "name": "punctuation.section.property-list.end.bracket.curly.css" } }, "name": "meta.property-list.css", "patterns": [{ "include": "#rule-list-innards" }] }, "rule-list-innards": { "patterns": [{ "include": "#comment-block" }, { "include": "#escapes" }, { "include": "#font-features" }, { "match": "(?x) (?<![\\w-])\n--\n(?:[-a-zA-Z_]    | [^\\x00-\\x7F])     # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F]      # Remainder of identifier\n  |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*", "name": "variable.css" }, { "begin": "(?<![-a-zA-Z])(?=[-a-zA-Z])", "end": "$|(?![-a-zA-Z])", "name": "meta.property-name.css", "patterns": [{ "include": "#property-names" }] }, { "begin": "(:)\\s*", "beginCaptures": { "1": { "name": "punctuation.separator.key-value.css" } }, "end": "\\s*(;)|\\s*(?=}|\\))", "endCaptures": { "1": { "name": "punctuation.terminator.rule.css" } }, "contentName": "meta.property-value.css", "patterns": [{ "include": "#comment-block" }, { "include": "#property-values" }] }, { "match": ";", "name": "punctuation.terminator.rule.css" }] }, "selector": { "begin": "(?x)\n(?=\n  (?:\\|)?                    # Possible anonymous namespace prefix\n  (?:\n    [-\\[:.*\\#a-zA-Z_]       # Valid selector character\n    |\n    [^\\x00-\\x7F]            # Which can include non-ASCII symbols\n    |\n    \\\\                      # Or an escape sequence\n    (?:[0-9a-fA-F]{1,6}|.)\n  )\n)", "end": "(?=\\s*[/@{)])", "name": "meta.selector.css", "patterns": [{ "include": "#selector-innards" }] }, "selector-innards": { "patterns": [{ "include": "#comment-block" }, { "include": "#commas" }, { "include": "#escapes" }, { "include": "#combinators" }, { "captures": { "1": { "name": "entity.other.namespace-prefix.css" }, "2": { "name": "punctuation.separator.css" } }, "match": "(?x)\n(?:^|(?<=[\\s,(};]))         # Follows whitespace, comma, semicolon, or bracket\n(?!\n  [-\\w*]+\n  \\|\n  (?!\n      [-\\[:.*\\#a-zA-Z_]    # Make sure there's a selector to match\n    | [^\\x00-\\x7F]\n  )\n)\n(\n  (?: [-a-zA-Z_]    | [^\\x00-\\x7F] )   # First letter\n  (?: [-a-zA-Z0-9_] | [^\\x00-\\x7F]     # Remainder of identifier\n    | \\\\(?:[0-9a-fA-F]{1,6}|.)\n  )*\n  |\n  \\*     # Universal namespace\n)?\n(\\|)     # Namespace separator" }, { "include": "#tag-names" }, { "match": "\\*", "name": "entity.name.tag.wildcard.css" }, { "captures": { "1": { "name": "punctuation.definition.entity.css" }, "2": { "patterns": [{ "include": "#escapes" }] } }, "match": "(?x) (?<![@\\w-])\n([.\\#])\n# Invalid identifier\n(\n  (?:\n    # Starts with ASCII digits, with possible hyphen preceding it\n    -?[0-9]\n    |\n    # Consists of a hyphen only\n    -                                      # Terminated by either:\n    (?= $                                  # - End-of-line\n      | [\\s,.\\#)\\[:{>+~|]               # - Followed by another selector\n      | /\\*                               # - Followed by a block comment\n    )\n    |\n    # Name contains unescaped ASCII symbol\n    (?:                                    # Check for acceptable preceding characters\n        [-a-zA-Z_0-9]|[^\\x00-\\x7F]       # - Valid selector character\n      | \\\\(?:[0-9a-fA-F]{1,6}|.)         # - Escape sequence\n    )*\n    (?:                                    # Invalid punctuation\n      [!\"'%&(*;<?@^`|\\]}]                 # - NOTE: We exempt `)` from the list of checked\n      |                                    #   symbols to avoid matching `:not(.invalid)`\n      / (?!\\*)                            # - Avoid invalidating the start of a comment\n    )+\n  )\n  # Mark remainder of selector invalid\n  (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F]         # - Otherwise valid identifier characters\n    | \\\\(?:[0-9a-fA-F]{1,6}|.)           # - Escape sequence\n  )*\n)", "name": "invalid.illegal.bad-identifier.css" }, { "captures": { "1": { "name": "punctuation.definition.entity.css" }, "2": { "patterns": [{ "include": "#escapes" }] } }, "match": "(?x)\n(\\.)                                  # Valid class-name\n(\n  (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F]     # Valid identifier characters\n    | \\\\(?:[0-9a-fA-F]{1,6}|.)       # Escape sequence\n  )+\n)                                      # Followed by either:\n(?= $                                  # - End of the line\n  | [\\s,.\\#)\\[:{>+~|]               # - Another selector\n  | /\\*                               # - A block comment\n)", "name": "entity.other.attribute-name.class.css" }, { "captures": { "1": { "name": "punctuation.definition.entity.css" }, "2": { "patterns": [{ "include": "#escapes" }] } }, "match": "(?x)\n(\\#)\n(\n  -?\n  (?![0-9])\n  (?:[-a-zA-Z0-9_]|[^\\x00-\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+\n)\n(?=$|[\\s,.\\#)\\[:{>+~|]|/\\*)", "name": "entity.other.attribute-name.id.css" }, { "begin": "\\[", "beginCaptures": { "0": { "name": "punctuation.definition.entity.begin.bracket.square.css" } }, "end": "\\]", "endCaptures": { "0": { "name": "punctuation.definition.entity.end.bracket.square.css" } }, "name": "meta.attribute-selector.css", "patterns": [{ "include": "#comment-block" }, { "include": "#string" }, { "captures": { "1": { "name": "storage.modifier.ignore-case.css" } }, "match": `(?<=["'\\s]|^|\\*/)\\s*([iI])\\s*(?=[\\s\\]]|/\\*|$)` }, { "captures": { "1": { "name": "string.unquoted.attribute-value.css", "patterns": [{ "include": "#escapes" }] } }, "match": `(?x)(?<==)\\s*((?!/\\*)(?:[^\\\\"'\\s\\]]|\\\\.)+)` }, { "include": "#escapes" }, { "match": "[~|^$*]?=", "name": "keyword.operator.pattern.css" }, { "match": "\\|", "name": "punctuation.separator.css" }, { "captures": { "1": { "name": "entity.other.namespace-prefix.css", "patterns": [{ "include": "#escapes" }] } }, "match": "(?x)\n# Qualified namespace prefix\n( -?(?!\\d)(?:[\\w-]|[^\\x00-\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+\n| \\*\n)\n# Lookahead to ensure there's a valid identifier ahead\n(?=\n  \\| (?!\\s|=|$|\\])\n  (?: -?(?!\\d)\n   |   [\\\\\\w-]\n   |   [^\\x00-\\x7F]\n   )\n)" }, { "captures": { "1": { "name": "entity.other.attribute-name.css", "patterns": [{ "include": "#escapes" }] } }, "match": "(?x)\n(-?(?!\\d)(?>[\\w-]|[^\\x00-\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+)\n\\s*\n(?=[~|^\\]$*=]|/\\*)" }] }, { "include": "#pseudo-classes" }, { "include": "#pseudo-elements" }, { "include": "#functional-pseudo-classes" }, { "match": "(?x) (?<![@\\w-])\n(?=            # Custom element names must:\n  [a-z]        # - start with a lowercase ASCII letter,\n  \\w* -       # - contain at least one dash\n)\n(?:\n  (?![A-Z])    # No uppercase ASCII letters are allowed\n  [\\w-]       # Allow any other word character or dash\n)+\n(?![(\\w-])", "name": "entity.name.tag.custom.css" }] }, "string": { "patterns": [{ "begin": '"', "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.css" } }, "end": '"|(?<!\\\\)(?=$|\\n)', "endCaptures": { "0": { "name": "punctuation.definition.string.end.css" } }, "name": "string.quoted.double.css", "patterns": [{ "begin": '(?:\\G|^)(?=(?:[^\\\\"]|\\\\.)+$)', "end": "$", "name": "invalid.illegal.unclosed.string.css", "patterns": [{ "include": "#escapes" }] }, { "include": "#escapes" }] }, { "begin": "'", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.css" } }, "end": "'|(?<!\\\\)(?=$|\\n)", "endCaptures": { "0": { "name": "punctuation.definition.string.end.css" } }, "name": "string.quoted.single.css", "patterns": [{ "begin": "(?:\\G|^)(?=(?:[^\\\\']|\\\\.)+$)", "end": "$", "name": "invalid.illegal.unclosed.string.css", "patterns": [{ "include": "#escapes" }] }, { "include": "#escapes" }] }] }, "tag-names": { "match": "(?xi) (?<![\\w:-])\n(?:\n    # HTML\n    a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdi|bdo|bgsound\n  | big|blink|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command\n  | content|data|datalist|dd|del|details|dfn|dialog|dir|div|dl|dt|element|em|embed|fieldset\n  | figcaption|figure|font|footer|form|frame|frameset|h[1-6]|head|header|hgroup|hr|html|i\n  | iframe|image|img|input|ins|isindex|kbd|keygen|label|legend|li|link|listing|main|map|mark\n  | marquee|math|menu|menuitem|meta|meter|multicol|nav|nextid|nobr|noembed|noframes|noscript\n  | object|ol|optgroup|option|output|p|param|picture|plaintext|pre|progress|q|rb|rp|rt|rtc\n  | ruby|s|samp|script|section|select|shadow|slot|small|source|spacer|span|strike|strong\n  | style|sub|summary|sup|table|tbody|td|template|textarea|tfoot|th|thead|time|title|tr\n  | track|tt|u|ul|var|video|wbr|xmp\n\n  # SVG\n  | altGlyph|altGlyphDef|altGlyphItem|animate|animateColor|animateMotion|animateTransform\n  | circle|clipPath|color-profile|cursor|defs|desc|discard|ellipse|feBlend|feColorMatrix\n  | feComponentTransfer|feComposite|feConvolveMatrix|feDiffuseLighting|feDisplacementMap\n  | feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur\n  | feImage|feMerge|feMergeNode|feMorphology|feOffset|fePointLight|feSpecularLighting\n  | feSpotLight|feTile|feTurbulence|filter|font-face|font-face-format|font-face-name\n  | font-face-src|font-face-uri|foreignObject|g|glyph|glyphRef|hatch|hatchpath|hkern\n  | line|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|metadata\n  | missing-glyph|mpath|path|pattern|polygon|polyline|radialGradient|rect|set|solidcolor\n  | stop|svg|switch|symbol|text|textPath|tref|tspan|use|view|vkern\n\n  # MathML\n  | annotation|annotation-xml|maction|maligngroup|malignmark|math|menclose|merror|mfenced\n  | mfrac|mglyph|mi|mlabeledtr|mlongdiv|mmultiscripts|mn|mo|mover|mpadded|mphantom|mroot\n  | mrow|ms|mscarries|mscarry|msgroup|msline|mspace|msqrt|msrow|mstack|mstyle|msub|msubsup\n  | msup|mtable|mtd|mtext|mtr|munder|munderover|semantics\n)\n(?=[+~>\\s,.\\#|){:\\[]|/\\*|$)", "name": "entity.name.tag.css" }, "unicode-range": { "captures": { "0": { "name": "constant.other.unicode-range.css" }, "1": { "name": "punctuation.separator.dash.unicode-range.css" } }, "match": "(?<![\\w-])[Uu]\\+[0-9A-Fa-f?]{1,6}(?:(-)[0-9A-Fa-f]{1,6})?(?![\\w-])" }, "url": { "begin": "(?i)(?<![\\w@-])(url)(\\()", "beginCaptures": { "1": { "name": "support.function.url.css" }, "2": { "name": "punctuation.section.function.begin.bracket.round.css" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.section.function.end.bracket.round.css" } }, "name": "meta.function.url.css", "patterns": [{ "match": `[^'")\\s]+`, "name": "variable.parameter.url.css" }, { "include": "#string" }, { "include": "#comment-block" }, { "include": "#escapes" }] } }, "displayName": "CSS" });
var css = [
  lang
];




/***/ }),

/***/ 28182:
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ javascript)
/* harmony export */ });
const lang = Object.freeze({ "information_for_contributors": ["This file has been converted from https://github.com/microsoft/TypeScript-TmLanguage/blob/master/TypeScriptReact.tmLanguage", "If you want to provide a fix or improvement, please create a pull request against the original repository.", "Once accepted there, we are happy to receive an update request."], "version": "https://github.com/microsoft/TypeScript-TmLanguage/commit/8c7482b94b548eab56da64dbfb30b82589b3f747", "name": "javascript", "scopeName": "source.js", "patterns": [{ "include": "#directives" }, { "include": "#statements" }, { "include": "#shebang" }], "repository": { "shebang": { "name": "comment.line.shebang.js", "match": "\\A(#!).*(?=$)", "captures": { "1": { "name": "punctuation.definition.comment.js" } } }, "statements": { "patterns": [{ "include": "#declaration" }, { "include": "#control-statement" }, { "include": "#after-operator-block-as-object-literal" }, { "include": "#decl-block" }, { "include": "#label" }, { "include": "#expression" }, { "include": "#punctuation-semicolon" }, { "include": "#string" }, { "include": "#comment" }] }, "declaration": { "patterns": [{ "include": "#decorator" }, { "include": "#var-expr" }, { "include": "#function-declaration" }, { "include": "#class-declaration" }, { "include": "#interface-declaration" }, { "include": "#enum-declaration" }, { "include": "#namespace-declaration" }, { "include": "#type-alias-declaration" }, { "include": "#import-equals-declaration" }, { "include": "#import-declaration" }, { "include": "#export-declaration" }, { "name": "storage.modifier.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(declare|export)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))" }] }, "control-statement": { "patterns": [{ "include": "#switch-statement" }, { "include": "#for-loop" }, { "name": "keyword.control.trycatch.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))" }, { "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|goto)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", "captures": { "1": { "name": "keyword.control.loop.js" }, "2": { "name": "entity.name.label.js" } } }, { "name": "keyword.control.loop.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))" }, { "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(return)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", "beginCaptures": { "0": { "name": "keyword.control.flow.js" } }, "end": "(?=[;}]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))", "patterns": [{ "include": "#expression" }] }, { "name": "keyword.control.switch.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))" }, { "include": "#if-statement" }, { "name": "keyword.control.conditional.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))" }, { "name": "keyword.control.with.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(with)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))" }, { "name": "keyword.control.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(package)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))" }, { "name": "keyword.other.debugger.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(debugger)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))" }] }, "label": { "patterns": [{ "begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)(?=\\s*\\{)", "beginCaptures": { "1": { "name": "entity.name.label.js" }, "2": { "name": "punctuation.separator.label.js" } }, "end": "(?<=\\})", "patterns": [{ "include": "#decl-block" }] }, { "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)", "captures": { "1": { "name": "entity.name.label.js" }, "2": { "name": "punctuation.separator.label.js" } } }] }, "expression": { "patterns": [{ "include": "#expressionWithoutIdentifiers" }, { "include": "#identifiers" }, { "include": "#expressionPunctuations" }] }, "expressionWithoutIdentifiers": { "patterns": [{ "include": "#jsx" }, { "include": "#string" }, { "include": "#regex" }, { "include": "#comment" }, { "include": "#function-expression" }, { "include": "#class-expression" }, { "include": "#arrow-function" }, { "include": "#paren-expression-possibly-arrow" }, { "include": "#cast" }, { "include": "#ternary-expression" }, { "include": "#new-expr" }, { "include": "#instanceof-expr" }, { "include": "#object-literal" }, { "include": "#expression-operators" }, { "include": "#function-call" }, { "include": "#literal" }, { "include": "#support-objects" }, { "include": "#paren-expression" }] }, "expressionPunctuations": { "patterns": [{ "include": "#punctuation-comma" }, { "include": "#punctuation-accessor" }] }, "decorator": { "name": "meta.decorator.js", "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))\\@", "beginCaptures": { "0": { "name": "punctuation.decorator.js" } }, "end": "(?=\\s)", "patterns": [{ "include": "#expression" }] }, "var-expr": { "patterns": [{ "name": "meta.var.expr.js", "begin": "(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))", "end": "(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=^|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\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*$)))", "patterns": [{ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*", "beginCaptures": { "1": { "name": "keyword.control.export.js" }, "2": { "name": "storage.modifier.js" }, "3": { "name": "storage.type.js" } }, "end": "(?=\\S)" }, { "include": "#destructuring-variable" }, { "include": "#var-single-variable" }, { "include": "#variable-initializer" }, { "include": "#comment" }, { "begin": "(,)\\s*(?=$|\\/\\/)", "beginCaptures": { "1": { "name": "punctuation.separator.comma.js" } }, "end": "(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))", "patterns": [{ "include": "#single-line-comment-consuming-line-ending" }, { "include": "#comment" }, { "include": "#destructuring-variable" }, { "include": "#var-single-variable" }, { "include": "#punctuation-comma" }] }, { "include": "#punctuation-comma" }] }, { "name": "meta.var.expr.js", "begin": "(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))", "beginCaptures": { "1": { "name": "keyword.control.export.js" }, "2": { "name": "storage.modifier.js" }, "3": { "name": "storage.type.js" } }, "end": "(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=^|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\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*$)))", "patterns": [{ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*", "beginCaptures": { "1": { "name": "keyword.control.export.js" }, "2": { "name": "storage.modifier.js" }, "3": { "name": "storage.type.js" } }, "end": "(?=\\S)" }, { "include": "#destructuring-const" }, { "include": "#var-single-const" }, { "include": "#variable-initializer" }, { "include": "#comment" }, { "begin": "(,)\\s*(?=$|\\/\\/)", "beginCaptures": { "1": { "name": "punctuation.separator.comma.js" } }, "end": "(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))", "patterns": [{ "include": "#single-line-comment-consuming-line-ending" }, { "include": "#comment" }, { "include": "#destructuring-const" }, { "include": "#var-single-const" }, { "include": "#punctuation-comma" }] }, { "include": "#punctuation-comma" }] }, { "name": "meta.var.expr.js", "begin": "(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b((?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))", "beginCaptures": { "1": { "name": "keyword.control.export.js" }, "2": { "name": "storage.modifier.js" }, "3": { "name": "storage.type.js" } }, "end": "(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b((?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))|((?<!^using|[^\\._$[:alnum:]]using|^await\\s+using|[^\\._$[:alnum:]]await\\s+using)(?=\\s*$)))", "patterns": [{ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b((?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*", "beginCaptures": { "1": { "name": "keyword.control.export.js" }, "2": { "name": "storage.modifier.js" }, "3": { "name": "storage.type.js" } }, "end": "(?=\\S)" }, { "include": "#var-single-const" }, { "include": "#variable-initializer" }, { "include": "#comment" }, { "begin": "(,)\\s*((?!\\S)|(?=\\/\\/))", "beginCaptures": { "1": { "name": "punctuation.separator.comma.js" } }, "end": "(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))", "patterns": [{ "include": "#single-line-comment-consuming-line-ending" }, { "include": "#comment" }, { "include": "#var-single-const" }, { "include": "#punctuation-comma" }] }, { "include": "#punctuation-comma" }] }] }, "var-single-variable": { "patterns": [{ "name": "meta.var-single-variable.expr.js", "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)))", "beginCaptures": { "1": { "name": "meta.definition.variable.js entity.name.function.js" }, "2": { "name": "keyword.operator.definiteassignment.js" } }, "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))", "patterns": [{ "include": "#var-single-variable-type-annotation" }] }, { "name": "meta.var-single-variable.expr.js", "begin": "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])(\\!)?", "beginCaptures": { "1": { "name": "meta.definition.variable.js variable.other.constant.js" }, "2": { "name": "keyword.operator.definiteassignment.js" } }, "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))", "patterns": [{ "include": "#var-single-variable-type-annotation" }] }, { "name": "meta.var-single-variable.expr.js", "begin": "([_$[:alpha:]][_$[:alnum:]]*)(\\!)?", "beginCaptures": { "1": { "name": "meta.definition.variable.js variable.other.readwrite.js" }, "2": { "name": "keyword.operator.definiteassignment.js" } }, "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))", "patterns": [{ "include": "#var-single-variable-type-annotation" }] }] }, "var-single-const": { "patterns": [{ "name": "meta.var-single-variable.expr.js", "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)))", "beginCaptures": { "1": { "name": "meta.definition.variable.js variable.other.constant.js entity.name.function.js" } }, "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))", "patterns": [{ "include": "#var-single-variable-type-annotation" }] }, { "name": "meta.var-single-variable.expr.js", "begin": "([_$[:alpha:]][_$[:alnum:]]*)", "beginCaptures": { "1": { "name": "meta.definition.variable.js variable.other.constant.js" } }, "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))", "patterns": [{ "include": "#var-single-variable-type-annotation" }] }] }, "var-single-variable-type-annotation": { "patterns": [{ "include": "#type-annotation" }, { "include": "#string" }, { "include": "#comment" }] }, "destructuring-variable": { "patterns": [{ "name": "meta.object-binding-pattern-variable.js", "begin": "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)", "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))", "patterns": [{ "include": "#object-binding-pattern" }, { "include": "#type-annotation" }, { "include": "#comment" }] }, { "name": "meta.array-binding-pattern-variable.js", "begin": "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)", "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))", "patterns": [{ "include": "#array-binding-pattern" }, { "include": "#type-annotation" }, { "include": "#comment" }] }] }, "destructuring-const": { "patterns": [{ "name": "meta.object-binding-pattern-variable.js", "begin": "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)", "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))", "patterns": [{ "include": "#object-binding-pattern-const" }, { "include": "#type-annotation" }, { "include": "#comment" }] }, { "name": "meta.array-binding-pattern-variable.js", "begin": "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)", "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))", "patterns": [{ "include": "#array-binding-pattern-const" }, { "include": "#type-annotation" }, { "include": "#comment" }] }] }, "object-binding-element": { "patterns": [{ "include": "#comment" }, { "begin": "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\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*(:))", "end": "(?=,|\\})", "patterns": [{ "include": "#object-binding-element-propertyName" }, { "include": "#binding-element" }] }, { "include": "#object-binding-pattern" }, { "include": "#destructuring-variable-rest" }, { "include": "#variable-initializer" }, { "include": "#punctuation-comma" }] }, "object-binding-element-const": { "patterns": [{ "include": "#comment" }, { "begin": "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\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*(:))", "end": "(?=,|\\})", "patterns": [{ "include": "#object-binding-element-propertyName" }, { "include": "#binding-element-const" }] }, { "include": "#object-binding-pattern-const" }, { "include": "#destructuring-variable-rest-const" }, { "include": "#variable-initializer" }, { "include": "#punctuation-comma" }] }, "object-binding-element-propertyName": { "begin": "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\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*(:))", "end": "(:)", "endCaptures": { "0": { "name": "punctuation.destructuring.js" } }, "patterns": [{ "include": "#string" }, { "include": "#array-literal" }, { "include": "#numeric-literal" }, { "name": "variable.object.property.js", "match": "([_$[:alpha:]][_$[:alnum:]]*)" }] }, "binding-element": { "patterns": [{ "include": "#comment" }, { "include": "#string" }, { "include": "#numeric-literal" }, { "include": "#regex" }, { "include": "#object-binding-pattern" }, { "include": "#array-binding-pattern" }, { "include": "#destructuring-variable-rest" }, { "include": "#variable-initializer" }] }, "binding-element-const": { "patterns": [{ "include": "#comment" }, { "include": "#string" }, { "include": "#numeric-literal" }, { "include": "#regex" }, { "include": "#object-binding-pattern-const" }, { "include": "#array-binding-pattern-const" }, { "include": "#destructuring-variable-rest-const" }, { "include": "#variable-initializer" }] }, "destructuring-variable-rest": { "match": "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)", "captures": { "1": { "name": "keyword.operator.rest.js" }, "2": { "name": "meta.definition.variable.js variable.other.readwrite.js" } } }, "destructuring-variable-rest-const": { "match": "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)", "captures": { "1": { "name": "keyword.operator.rest.js" }, "2": { "name": "meta.definition.variable.js variable.other.constant.js" } } }, "object-binding-pattern": { "begin": "(?:(\\.\\.\\.)\\s*)?(\\{)", "beginCaptures": { "1": { "name": "keyword.operator.rest.js" }, "2": { "name": "punctuation.definition.binding-pattern.object.js" } }, "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.binding-pattern.object.js" } }, "patterns": [{ "include": "#object-binding-element" }] }, "object-binding-pattern-const": { "begin": "(?:(\\.\\.\\.)\\s*)?(\\{)", "beginCaptures": { "1": { "name": "keyword.operator.rest.js" }, "2": { "name": "punctuation.definition.binding-pattern.object.js" } }, "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.binding-pattern.object.js" } }, "patterns": [{ "include": "#object-binding-element-const" }] }, "array-binding-pattern": { "begin": "(?:(\\.\\.\\.)\\s*)?(\\[)", "beginCaptures": { "1": { "name": "keyword.operator.rest.js" }, "2": { "name": "punctuation.definition.binding-pattern.array.js" } }, "end": "\\]", "endCaptures": { "0": { "name": "punctuation.definition.binding-pattern.array.js" } }, "patterns": [{ "include": "#binding-element" }, { "include": "#punctuation-comma" }] }, "array-binding-pattern-const": { "begin": "(?:(\\.\\.\\.)\\s*)?(\\[)", "beginCaptures": { "1": { "name": "keyword.operator.rest.js" }, "2": { "name": "punctuation.definition.binding-pattern.array.js" } }, "end": "\\]", "endCaptures": { "0": { "name": "punctuation.definition.binding-pattern.array.js" } }, "patterns": [{ "include": "#binding-element-const" }, { "include": "#punctuation-comma" }] }, "parameter-name": { "patterns": [{ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)", "captures": { "1": { "name": "storage.modifier.js" } } }, { "match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*\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)))", "captures": { "1": { "name": "storage.modifier.js" }, "2": { "name": "keyword.operator.rest.js" }, "3": { "name": "entity.name.function.js variable.language.this.js" }, "4": { "name": "entity.name.function.js" }, "5": { "name": "keyword.operator.optional.js" } } }, { "match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)", "captures": { "1": { "name": "storage.modifier.js" }, "2": { "name": "keyword.operator.rest.js" }, "3": { "name": "variable.parameter.js variable.language.this.js" }, "4": { "name": "variable.parameter.js" }, "5": { "name": "keyword.operator.optional.js" } } }] }, "destructuring-parameter": { "patterns": [{ "name": "meta.parameter.object-binding-pattern.js", "begin": "(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\{)", "beginCaptures": { "1": { "name": "keyword.operator.rest.js" }, "2": { "name": "punctuation.definition.binding-pattern.object.js" } }, "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.binding-pattern.object.js" } }, "patterns": [{ "include": "#parameter-object-binding-element" }] }, { "name": "meta.paramter.array-binding-pattern.js", "begin": "(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\[)", "beginCaptures": { "1": { "name": "keyword.operator.rest.js" }, "2": { "name": "punctuation.definition.binding-pattern.array.js" } }, "end": "\\]", "endCaptures": { "0": { "name": "punctuation.definition.binding-pattern.array.js" } }, "patterns": [{ "include": "#parameter-binding-element" }, { "include": "#punctuation-comma" }] }] }, "parameter-object-binding-element": { "patterns": [{ "include": "#comment" }, { "begin": "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\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*(:))", "end": "(?=,|\\})", "patterns": [{ "include": "#object-binding-element-propertyName" }, { "include": "#parameter-binding-element" }, { "include": "#paren-expression" }] }, { "include": "#parameter-object-binding-pattern" }, { "include": "#destructuring-parameter-rest" }, { "include": "#variable-initializer" }, { "include": "#punctuation-comma" }] }, "parameter-binding-element": { "patterns": [{ "include": "#comment" }, { "include": "#string" }, { "include": "#numeric-literal" }, { "include": "#regex" }, { "include": "#parameter-object-binding-pattern" }, { "include": "#parameter-array-binding-pattern" }, { "include": "#destructuring-parameter-rest" }, { "include": "#variable-initializer" }] }, "destructuring-parameter-rest": { "match": "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)", "captures": { "1": { "name": "keyword.operator.rest.js" }, "2": { "name": "variable.parameter.js" } } }, "parameter-object-binding-pattern": { "begin": "(?:(\\.\\.\\.)\\s*)?(\\{)", "beginCaptures": { "1": { "name": "keyword.operator.rest.js" }, "2": { "name": "punctuation.definition.binding-pattern.object.js" } }, "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.binding-pattern.object.js" } }, "patterns": [{ "include": "#parameter-object-binding-element" }] }, "parameter-array-binding-pattern": { "begin": "(?:(\\.\\.\\.)\\s*)?(\\[)", "beginCaptures": { "1": { "name": "keyword.operator.rest.js" }, "2": { "name": "punctuation.definition.binding-pattern.array.js" } }, "end": "\\]", "endCaptures": { "0": { "name": "punctuation.definition.binding-pattern.array.js" } }, "patterns": [{ "include": "#parameter-binding-element" }, { "include": "#punctuation-comma" }] }, "field-declaration": { "name": "meta.field.declaration.js", "begin": "(?x)(?<!\\()(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s+)?(?=\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\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*)?(=|:|;|,|\\}|$))", "beginCaptures": { "1": { "name": "storage.modifier.js" } }, "end": "(?x)(?=\\}|;|,|$|(^(?!\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\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*)?(=|:|;|,|$))))|(?<=\\})", "patterns": [{ "include": "#variable-initializer" }, { "include": "#type-annotation" }, { "include": "#string" }, { "include": "#array-literal" }, { "include": "#numeric-literal" }, { "include": "#comment" }, { "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)))", "captures": { "1": { "name": "meta.definition.property.js entity.name.function.js" }, "2": { "name": "keyword.operator.optional.js" }, "3": { "name": "keyword.operator.definiteassignment.js" } } }, { "name": "meta.definition.property.js variable.object.property.js", "match": "\\#?[_$[:alpha:]][_$[:alnum:]]*" }, { "name": "keyword.operator.optional.js", "match": "\\?" }, { "name": "keyword.operator.definiteassignment.js", "match": "\\!" }] }, "variable-initializer": { "patterns": [{ "begin": "(?<!=|!)(=)(?!=)(?=\\s*\\S)(?!\\s*.*=>\\s*$)", "beginCaptures": { "1": { "name": "keyword.operator.assignment.js" } }, "end": "(?=$|^|[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))", "patterns": [{ "include": "#expression" }] }, { "begin": "(?<!=|!)(=)(?!=)", "beginCaptures": { "1": { "name": "keyword.operator.assignment.js" } }, "end": "(?=[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))|(?=^\\s*$)|(?<![\\|\\&\\+\\-\\*\\/])(?<=\\S)(?<!=)(?=\\s*$)", "patterns": [{ "include": "#expression" }] }] }, "function-declaration": { "name": "meta.function.js", "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*", "beginCaptures": { "1": { "name": "keyword.control.export.js" }, "2": { "name": "storage.modifier.js" }, "3": { "name": "storage.modifier.async.js" }, "4": { "name": "storage.type.function.js" }, "5": { "name": "keyword.generator.asterisk.js" }, "6": { "name": "meta.definition.function.js entity.name.function.js" } }, "end": "(?=;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))|(?<=\\})", "patterns": [{ "include": "#function-name" }, { "include": "#function-body" }] }, "function-expression": { "name": "meta.function.expression.js", "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*", "beginCaptures": { "1": { "name": "storage.modifier.async.js" }, "2": { "name": "storage.type.function.js" }, "3": { "name": "keyword.generator.asterisk.js" }, "4": { "name": "meta.definition.function.js entity.name.function.js" } }, "end": "(?=;)|(?<=\\})", "patterns": [{ "include": "#function-name" }, { "include": "#single-line-comment-consuming-line-ending" }, { "include": "#function-body" }] }, "function-name": { "name": "meta.definition.function.js entity.name.function.js", "match": "[_$[:alpha:]][_$[:alnum:]]*" }, "function-body": { "patterns": [{ "include": "#comment" }, { "include": "#type-parameters" }, { "include": "#function-parameters" }, { "include": "#return-type" }, { "include": "#type-function-return-type" }, { "include": "#decl-block" }, { "name": "keyword.generator.asterisk.js", "match": "\\*" }] }, "method-declaration": { "patterns": [{ "name": "meta.method.declaration.js", "begin": "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?\\s*\\b(constructor)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", "beginCaptures": { "1": { "name": "storage.modifier.js" }, "2": { "name": "storage.modifier.js" }, "3": { "name": "storage.modifier.js" }, "4": { "name": "storage.modifier.async.js" }, "5": { "name": "storage.type.js" } }, "end": "(?=\\}|;|,|$)|(?<=\\})", "patterns": [{ "include": "#method-declaration-name" }, { "include": "#function-body" }] }, { "name": "meta.method.declaration.js", "begin": "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:(?:\\s*\\b(new)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|(?:(\\*)\\s*)?)(?=\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])", "beginCaptures": { "1": { "name": "storage.modifier.js" }, "2": { "name": "storage.modifier.js" }, "3": { "name": "storage.modifier.js" }, "4": { "name": "storage.modifier.async.js" }, "5": { "name": "keyword.operator.new.js" }, "6": { "name": "keyword.generator.asterisk.js" } }, "end": "(?=\\}|;|,|$)|(?<=\\})", "patterns": [{ "include": "#method-declaration-name" }, { "include": "#function-body" }] }, { "name": "meta.method.declaration.js", "begin": "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\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*))?[\\(])", "beginCaptures": { "1": { "name": "storage.modifier.js" }, "2": { "name": "storage.modifier.js" }, "3": { "name": "storage.modifier.js" }, "4": { "name": "storage.modifier.async.js" }, "5": { "name": "storage.type.property.js" }, "6": { "name": "keyword.generator.asterisk.js" } }, "end": "(?=\\}|;|,|$)|(?<=\\})", "patterns": [{ "include": "#method-declaration-name" }, { "include": "#function-body" }] }] }, "object-literal-method-declaration": { "name": "meta.method.declaration.js", "begin": "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\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*))?[\\(])", "beginCaptures": { "1": { "name": "storage.modifier.async.js" }, "2": { "name": "storage.type.property.js" }, "3": { "name": "keyword.generator.asterisk.js" } }, "end": "(?=\\}|;|,)|(?<=\\})", "patterns": [{ "include": "#method-declaration-name" }, { "include": "#function-body" }, { "begin": "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\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*))?[\\(])", "beginCaptures": { "1": { "name": "storage.modifier.async.js" }, "2": { "name": "storage.type.property.js" }, "3": { "name": "keyword.generator.asterisk.js" } }, "end": "(?=\\(|\\<)", "patterns": [{ "include": "#method-declaration-name" }] }] }, "method-declaration-name": { "begin": "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\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*[\\(\\<])", "end": "(?=\\(|\\<)", "patterns": [{ "include": "#string" }, { "include": "#array-literal" }, { "include": "#numeric-literal" }, { "name": "meta.definition.method.js entity.name.function.js", "match": "[_$[:alpha:]][_$[:alnum:]]*" }, { "name": "keyword.operator.optional.js", "match": "\\?" }] }, "arrow-function": { "patterns": [{ "name": "meta.arrow.js", "match": "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(?==>)", "captures": { "1": { "name": "storage.modifier.async.js" }, "2": { "name": "variable.parameter.js" } } }, { "name": "meta.arrow.js", "begin": "(?x) (?:\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)", "beginCaptures": { "1": { "name": "storage.modifier.async.js" } }, "end": "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))", "patterns": [{ "include": "#comment" }, { "include": "#type-parameters" }, { "include": "#function-parameters" }, { "include": "#arrow-return-type" }, { "include": "#possibly-arrow-return-type" }] }, { "name": "meta.arrow.js", "begin": "=>", "beginCaptures": { "0": { "name": "storage.type.function.arrow.js" } }, "end": "((?<=\\}|\\S)(?<!=>)|((?!\\{)(?=\\S)))(?!\\/[\\/\\*])", "patterns": [{ "include": "#single-line-comment-consuming-line-ending" }, { "include": "#decl-block" }, { "include": "#expression" }] }] }, "indexer-declaration": { "name": "meta.indexer.declaration.js", "begin": "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=:)", "beginCaptures": { "1": { "name": "storage.modifier.js" }, "2": { "name": "meta.brace.square.js" }, "3": { "name": "variable.parameter.js" } }, "end": "(\\])\\s*(\\?\\s*)?|$", "endCaptures": { "1": { "name": "meta.brace.square.js" }, "2": { "name": "keyword.operator.optional.js" } }, "patterns": [{ "include": "#type-annotation" }] }, "indexer-mapped-type-declaration": { "name": "meta.indexer.mappedtype.declaration.js", "begin": "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([+-])?(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s+(in)\\s+", "beginCaptures": { "1": { "name": "keyword.operator.type.modifier.js" }, "2": { "name": "storage.modifier.js" }, "3": { "name": "meta.brace.square.js" }, "4": { "name": "entity.name.type.js" }, "5": { "name": "keyword.operator.expression.in.js" } }, "end": "(\\])([+-])?\\s*(\\?\\s*)?|$", "endCaptures": { "1": { "name": "meta.brace.square.js" }, "2": { "name": "keyword.operator.type.modifier.js" }, "3": { "name": "keyword.operator.optional.js" } }, "patterns": [{ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+", "captures": { "1": { "name": "keyword.control.as.js" } } }, { "include": "#type" }] }, "function-parameters": { "name": "meta.parameters.js", "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.parameters.begin.js" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.parameters.end.js" } }, "patterns": [{ "include": "#function-parameters-body" }] }, "function-parameters-body": { "patterns": [{ "include": "#comment" }, { "include": "#string" }, { "include": "#decorator" }, { "include": "#destructuring-parameter" }, { "include": "#parameter-name" }, { "include": "#parameter-type-annotation" }, { "include": "#variable-initializer" }, { "name": "punctuation.separator.parameter.js", "match": "," }] }, "class-declaration": { "name": "meta.class.js", "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(class)\\b(?=\\s+|/[/*])", "beginCaptures": { "1": { "name": "keyword.control.export.js" }, "2": { "name": "storage.modifier.js" }, "3": { "name": "storage.modifier.js" }, "4": { "name": "storage.type.class.js" } }, "end": "(?<=\\})", "patterns": [{ "include": "#class-declaration-or-expression-patterns" }] }, "class-expression": { "name": "meta.class.js", "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(class)\\b(?=\\s+|[<{]|\\/[\\/*])", "beginCaptures": { "1": { "name": "storage.modifier.js" }, "2": { "name": "storage.type.class.js" } }, "end": "(?<=\\})", "patterns": [{ "include": "#class-declaration-or-expression-patterns" }] }, "class-declaration-or-expression-patterns": { "patterns": [{ "include": "#comment" }, { "include": "#class-or-interface-heritage" }, { "match": "[_$[:alpha:]][_$[:alnum:]]*", "captures": { "0": { "name": "entity.name.type.class.js" } } }, { "include": "#type-parameters" }, { "include": "#class-or-interface-body" }] }, "interface-declaration": { "name": "meta.interface.js", "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(interface)\\b(?=\\s+|/[/*])", "beginCaptures": { "1": { "name": "keyword.control.export.js" }, "2": { "name": "storage.modifier.js" }, "3": { "name": "storage.modifier.js" }, "4": { "name": "storage.type.interface.js" } }, "end": "(?<=\\})", "patterns": [{ "include": "#comment" }, { "include": "#class-or-interface-heritage" }, { "match": "[_$[:alpha:]][_$[:alnum:]]*", "captures": { "0": { "name": "entity.name.type.interface.js" } } }, { "include": "#type-parameters" }, { "include": "#class-or-interface-body" }] }, "class-or-interface-heritage": { "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(extends|implements)\\b)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", "beginCaptures": { "1": { "name": "storage.modifier.js" } }, "end": "(?=\\{)", "patterns": [{ "include": "#comment" }, { "include": "#class-or-interface-heritage" }, { "include": "#type-parameters" }, { "include": "#expressionWithoutIdentifiers" }, { "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s*\\??\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\s*)", "captures": { "1": { "name": "entity.name.type.module.js" }, "2": { "name": "punctuation.accessor.js" }, "3": { "name": "punctuation.accessor.optional.js" } } }, { "match": "([_$[:alpha:]][_$[:alnum:]]*)", "captures": { "1": { "name": "entity.other.inherited-class.js" } } }, { "include": "#expressionPunctuations" }] }, "class-or-interface-body": { "begin": "\\{", "beginCaptures": { "0": { "name": "punctuation.definition.block.js" } }, "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.block.js" } }, "patterns": [{ "include": "#comment" }, { "include": "#decorator" }, { "begin": "(?<=:)\\s*", "end": "(?=\\s|[;),}\\]:\\-\\+]|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))", "patterns": [{ "include": "#expression" }] }, { "include": "#method-declaration" }, { "include": "#indexer-declaration" }, { "include": "#field-declaration" }, { "include": "#string" }, { "include": "#type-annotation" }, { "include": "#variable-initializer" }, { "include": "#access-modifier" }, { "include": "#property-accessor" }, { "include": "#async-modifier" }, { "include": "#after-operator-block-as-object-literal" }, { "include": "#decl-block" }, { "include": "#expression" }, { "include": "#punctuation-comma" }, { "include": "#punctuation-semicolon" }] }, "access-modifier": { "name": "storage.modifier.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))" }, "property-accessor": { "name": "storage.type.property.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(accessor|get|set)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))" }, "async-modifier": { "name": "storage.modifier.async.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(async)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))" }, "enum-declaration": { "name": "meta.enum.declaration.js", "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:\\b(const)\\s+)?\\b(enum)\\s+([_$[:alpha:]][_$[:alnum:]]*)", "beginCaptures": { "1": { "name": "keyword.control.export.js" }, "2": { "name": "storage.modifier.js" }, "3": { "name": "storage.modifier.js" }, "4": { "name": "storage.type.enum.js" }, "5": { "name": "entity.name.type.enum.js" } }, "end": "(?<=\\})", "patterns": [{ "include": "#comment" }, { "begin": "\\{", "beginCaptures": { "0": { "name": "punctuation.definition.block.js" } }, "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.block.js" } }, "patterns": [{ "include": "#comment" }, { "begin": "([_$[:alpha:]][_$[:alnum:]]*)", "beginCaptures": { "0": { "name": "variable.other.enummember.js" } }, "end": "(?=,|\\}|$)", "patterns": [{ "include": "#comment" }, { "include": "#variable-initializer" }] }, { "begin": "(?=((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\])))", "end": "(?=,|\\}|$)", "patterns": [{ "include": "#string" }, { "include": "#array-literal" }, { "include": "#comment" }, { "include": "#variable-initializer" }] }, { "include": "#punctuation-comma" }] }] }, "namespace-declaration": { "name": "meta.namespace.declaration.js", "begin": "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(namespace|module)\\s+(?=[_$[:alpha:]\"'`]))", "beginCaptures": { "1": { "name": "keyword.control.export.js" }, "2": { "name": "storage.modifier.js" }, "3": { "name": "storage.type.namespace.js" } }, "end": "(?<=\\})|(?=;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))", "patterns": [{ "include": "#comment" }, { "include": "#string" }, { "name": "entity.name.type.module.js", "match": "([_$[:alpha:]][_$[:alnum:]]*)" }, { "include": "#punctuation-accessor" }, { "include": "#decl-block" }] }, "type-alias-declaration": { "name": "meta.type.declaration.js", "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(type)\\b\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*", "beginCaptures": { "1": { "name": "keyword.control.export.js" }, "2": { "name": "storage.modifier.js" }, "3": { "name": "storage.type.type.js" }, "4": { "name": "entity.name.type.alias.js" } }, "end": "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))", "patterns": [{ "include": "#comment" }, { "include": "#type-parameters" }, { "begin": "(=)\\s*(intrinsic)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", "beginCaptures": { "1": { "name": "keyword.operator.assignment.js" }, "2": { "name": "keyword.control.intrinsic.js" } }, "end": "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))", "patterns": [{ "include": "#type" }] }, { "begin": "(=)\\s*", "beginCaptures": { "1": { "name": "keyword.operator.assignment.js" } }, "end": "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))", "patterns": [{ "include": "#type" }] }] }, "import-equals-declaration": { "patterns": [{ "name": "meta.import-equals.external.js", "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(require)\\s*(\\()", "beginCaptures": { "1": { "name": "keyword.control.export.js" }, "2": { "name": "storage.modifier.js" }, "3": { "name": "keyword.control.import.js" }, "4": { "name": "keyword.control.type.js" }, "5": { "name": "variable.other.readwrite.alias.js" }, "6": { "name": "keyword.operator.assignment.js" }, "7": { "name": "keyword.control.require.js" }, "8": { "name": "meta.brace.round.js" } }, "end": "\\)", "endCaptures": { "0": { "name": "meta.brace.round.js" } }, "patterns": [{ "include": "#comment" }, { "include": "#string" }] }, { "name": "meta.import-equals.internal.js", "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(?!require\\b)", "beginCaptures": { "1": { "name": "keyword.control.export.js" }, "2": { "name": "storage.modifier.js" }, "3": { "name": "keyword.control.import.js" }, "4": { "name": "keyword.control.type.js" }, "5": { "name": "variable.other.readwrite.alias.js" }, "6": { "name": "keyword.operator.assignment.js" } }, "end": "(?=;|$|^)", "patterns": [{ "include": "#single-line-comment-consuming-line-ending" }, { "include": "#comment" }, { "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))", "captures": { "1": { "name": "entity.name.type.module.js" }, "2": { "name": "punctuation.accessor.js" }, "3": { "name": "punctuation.accessor.optional.js" } } }, { "name": "variable.other.readwrite.js", "match": "([_$[:alpha:]][_$[:alnum:]]*)" }] }] }, "import-declaration": { "name": "meta.import.js", "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type)(?!\\s+from))?(?!\\s*[:\\(])(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", "beginCaptures": { "1": { "name": "keyword.control.export.js" }, "2": { "name": "storage.modifier.js" }, "3": { "name": "keyword.control.import.js" }, "4": { "name": "keyword.control.type.js" } }, "end": "(?<!^import|[^\\._$[:alnum:]]import)(?=;|$|^)", "patterns": [{ "include": "#single-line-comment-consuming-line-ending" }, { "include": "#comment" }, { "include": "#string" }, { "begin": `(?<=^import|[^\\._$[:alnum:]]import)(?!\\s*["'])`, "end": "\\bfrom\\b", "endCaptures": { "0": { "name": "keyword.control.from.js" } }, "patterns": [{ "include": "#import-export-declaration" }] }, { "include": "#import-export-declaration" }] }, "export-declaration": { "patterns": [{ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)\\s+(as)\\s+(namespace)\\s+([_$[:alpha:]][_$[:alnum:]]*)", "captures": { "1": { "name": "keyword.control.export.js" }, "2": { "name": "keyword.control.as.js" }, "3": { "name": "storage.type.namespace.js" }, "4": { "name": "entity.name.type.module.js" } } }, { "name": "meta.export.default.js", "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?(?:(?:\\s*(=))|(?:\\s+(default)(?=\\s+)))", "beginCaptures": { "1": { "name": "keyword.control.export.js" }, "2": { "name": "keyword.control.type.js" }, "3": { "name": "keyword.operator.assignment.js" }, "4": { "name": "keyword.control.default.js" } }, "end": "(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))", "patterns": [{ "include": "#interface-declaration" }, { "include": "#expression" }] }, { "name": "meta.export.js", "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?\\b(?!(\\$)|(\\s*:))((?=\\s*[\\{*])|((?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s|,))(?!\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))", "beginCaptures": { "1": { "name": "keyword.control.export.js" }, "2": { "name": "keyword.control.type.js" } }, "end": "(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))", "patterns": [{ "include": "#import-export-declaration" }] }] }, "import-export-declaration": { "patterns": [{ "include": "#comment" }, { "include": "#string" }, { "include": "#import-export-block" }, { "name": "keyword.control.from.js", "match": "\\bfrom\\b" }, { "include": "#import-export-assert-clause" }, { "include": "#import-export-clause" }] }, "import-export-assert-clause": { "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(assert)\\s*(\\{)", "beginCaptures": { "1": { "name": "keyword.control.assert.js" }, "2": { "name": "punctuation.definition.block.js" } }, "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.block.js" } }, "patterns": [{ "include": "#comment" }, { "include": "#string" }, { "name": "meta.object-literal.key.js", "match": "(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)" }, { "name": "punctuation.separator.key-value.js", "match": ":" }] }, "import-export-block": { "name": "meta.block.js", "begin": "\\{", "beginCaptures": { "0": { "name": "punctuation.definition.block.js" } }, "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.block.js" } }, "patterns": [{ "include": "#import-export-clause" }] }, "import-export-clause": { "patterns": [{ "include": "#comment" }, { "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(?:(\\btype)\\s+)?(?:(\\bdefault)|(\\*)|(\\b[_$[:alpha:]][_$[:alnum:]]*)))\\s+(as)\\s+(?:(default(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|([_$[:alpha:]][_$[:alnum:]]*))", "captures": { "1": { "name": "keyword.control.type.js" }, "2": { "name": "keyword.control.default.js" }, "3": { "name": "constant.language.import-export-all.js" }, "4": { "name": "variable.other.readwrite.js" }, "5": { "name": "keyword.control.as.js" }, "6": { "name": "keyword.control.default.js" }, "7": { "name": "variable.other.readwrite.alias.js" } } }, { "include": "#punctuation-comma" }, { "name": "constant.language.import-export-all.js", "match": "\\*" }, { "name": "keyword.control.default.js", "match": "\\b(default)\\b" }, { "match": "(?:(\\btype)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)", "captures": { "1": { "name": "keyword.control.type.js" }, "2": { "name": "variable.other.readwrite.alias.js" } } }] }, "switch-statement": { "name": "switch-statement.expr.js", "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bswitch\\s*\\()", "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.block.js" } }, "patterns": [{ "include": "#comment" }, { "name": "switch-expression.expr.js", "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(switch)\\s*(\\()", "beginCaptures": { "1": { "name": "keyword.control.switch.js" }, "2": { "name": "meta.brace.round.js" } }, "end": "\\)", "endCaptures": { "0": { "name": "meta.brace.round.js" } }, "patterns": [{ "include": "#expression" }] }, { "name": "switch-block.expr.js", "begin": "\\{", "beginCaptures": { "0": { "name": "punctuation.definition.block.js" } }, "end": "(?=\\})", "patterns": [{ "name": "case-clause.expr.js", "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", "beginCaptures": { "1": { "name": "keyword.control.switch.js" } }, "end": "(?=:)", "patterns": [{ "include": "#expression" }] }, { "begin": "(:)\\s*(\\{)", "beginCaptures": { "1": { "name": "case-clause.expr.js punctuation.definition.section.case-statement.js" }, "2": { "name": "meta.block.js punctuation.definition.block.js" } }, "end": "\\}", "endCaptures": { "0": { "name": "meta.block.js punctuation.definition.block.js" } }, "contentName": "meta.block.js", "patterns": [{ "include": "#statements" }] }, { "match": "(:)", "captures": { "0": { "name": "case-clause.expr.js punctuation.definition.section.case-statement.js" } } }, { "include": "#statements" }] }] }, "for-loop": { "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))for(?=((\\s+|(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*))await)?\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)?(\\())", "beginCaptures": { "0": { "name": "keyword.control.loop.js" } }, "end": "(?<=\\))", "patterns": [{ "include": "#comment" }, { "name": "keyword.control.loop.js", "match": "await" }, { "begin": "\\(", "beginCaptures": { "0": { "name": "meta.brace.round.js" } }, "end": "\\)", "endCaptures": { "0": { "name": "meta.brace.round.js" } }, "patterns": [{ "include": "#var-expr" }, { "include": "#expression" }, { "include": "#punctuation-semicolon" }] }] }, "if-statement": { "patterns": [{ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bif\\s*(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))\\s*(?!\\{))", "end": "(?=;|$|\\})", "patterns": [{ "include": "#comment" }, { "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(if)\\s*(\\()", "beginCaptures": { "1": { "name": "keyword.control.conditional.js" }, "2": { "name": "meta.brace.round.js" } }, "end": "\\)", "endCaptures": { "0": { "name": "meta.brace.round.js" } }, "patterns": [{ "include": "#expression" }] }, { "name": "string.regexp.js", "begin": "(?<=\\))\\s*\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.js" } }, "end": "(/)([dgimsuy]*)", "endCaptures": { "1": { "name": "punctuation.definition.string.end.js" }, "2": { "name": "keyword.other.js" } }, "patterns": [{ "include": "#regexp" }] }, { "include": "#statements" }] }] }, "decl-block": { "name": "meta.block.js", "begin": "\\{", "beginCaptures": { "0": { "name": "punctuation.definition.block.js" } }, "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.block.js" } }, "patterns": [{ "include": "#statements" }] }, "after-operator-block-as-object-literal": { "name": "meta.objectliteral.js", "begin": "(?<!\\+\\+|--)(?<=[:=(,\\[?+!>]|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^yield|[^\\._$[:alnum:]]yield|^throw|[^\\._$[:alnum:]]throw|^in|[^\\._$[:alnum:]]in|^of|[^\\._$[:alnum:]]of|^typeof|[^\\._$[:alnum:]]typeof|&&|\\|\\||\\*)\\s*(\\{)", "beginCaptures": { "1": { "name": "punctuation.definition.block.js" } }, "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.block.js" } }, "patterns": [{ "include": "#object-member" }] }, "object-literal": { "name": "meta.objectliteral.js", "begin": "\\{", "beginCaptures": { "0": { "name": "punctuation.definition.block.js" } }, "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.block.js" } }, "patterns": [{ "include": "#object-member" }] }, "object-member": { "patterns": [{ "include": "#comment" }, { "include": "#object-literal-method-declaration" }, { "name": "meta.object.member.js meta.object-literal.key.js", "begin": "(?=\\[)", "end": "(?=:)|((?<=[\\]])(?=\\s*[\\(\\<]))", "patterns": [{ "include": "#comment" }, { "include": "#array-literal" }] }, { "name": "meta.object.member.js meta.object-literal.key.js", "begin": "(?=[\\'\\\"\\`])", "end": "(?=:)|((?<=[\\'\\\"\\`])(?=((\\s*[\\(\\<,}])|(\\s+(as|satisifies)\\s+))))", "patterns": [{ "include": "#comment" }, { "include": "#string" }] }, { "name": "meta.object.member.js meta.object-literal.key.js", "begin": "(?x)(?=(\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\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)(?!\\$)))", "end": "(?=:)|(?=\\s*([\\(\\<,}])|(\\s+as|satisifies\\s+))", "patterns": [{ "include": "#comment" }, { "include": "#numeric-literal" }] }, { "name": "meta.method.declaration.js", "begin": "(?<=[\\]\\'\\\"\\`])(?=\\s*[\\(\\<])", "end": "(?=\\}|;|,)|(?<=\\})", "patterns": [{ "include": "#function-body" }] }, { "name": "meta.object.member.js", "match": "(?![_$[:alpha:]])([[:digit:]]+)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)", "captures": { "0": { "name": "meta.object-literal.key.js" }, "1": { "name": "constant.numeric.decimal.js" } } }, { "name": "meta.object.member.js", "match": "(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/)*\\s*(\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)))", "captures": { "0": { "name": "meta.object-literal.key.js" }, "1": { "name": "entity.name.function.js" } } }, { "name": "meta.object.member.js", "match": "(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)", "captures": { "0": { "name": "meta.object-literal.key.js" } } }, { "name": "meta.object.member.js", "begin": "\\.\\.\\.", "beginCaptures": { "0": { "name": "keyword.operator.spread.js" } }, "end": "(?=,|\\})", "patterns": [{ "include": "#expression" }] }, { "name": "meta.object.member.js", "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$|\\/\\/|\\/\\*)", "captures": { "1": { "name": "variable.other.readwrite.js" } } }, { "name": "meta.object.member.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*([,}]|$))", "captures": { "1": { "name": "keyword.control.as.js" }, "2": { "name": "storage.modifier.js" } } }, { "name": "meta.object.member.js", "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(as)|(satisfies))\\s+", "beginCaptures": { "1": { "name": "keyword.control.as.js" }, "2": { "name": "keyword.control.satisfies.js" } }, "end": "(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|^|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisifies)\\s+))", "patterns": [{ "include": "#type" }] }, { "name": "meta.object.member.js", "begin": "(?=[_$[:alpha:]][_$[:alnum:]]*\\s*=)", "end": "(?=,|\\}|$|\\/\\/|\\/\\*)", "patterns": [{ "include": "#expression" }] }, { "name": "meta.object.member.js", "begin": ":", "beginCaptures": { "0": { "name": "meta.object-literal.key.js punctuation.separator.key-value.js" } }, "end": "(?=,|\\})", "patterns": [{ "begin": "(?<=:)\\s*(async)?(?=\\s*(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))", "beginCaptures": { "1": { "name": "storage.modifier.async.js" } }, "end": "(?<=\\))", "patterns": [{ "include": "#type-parameters" }, { "begin": "\\(", "beginCaptures": { "0": { "name": "meta.brace.round.js" } }, "end": "\\)", "endCaptures": { "0": { "name": "meta.brace.round.js" } }, "patterns": [{ "include": "#expression-inside-possibly-arrow-parens" }] }] }, { "begin": "(?<=:)\\s*(async)?\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))", "beginCaptures": { "1": { "name": "storage.modifier.async.js" }, "2": { "name": "meta.brace.round.js" } }, "end": "\\)", "endCaptures": { "0": { "name": "meta.brace.round.js" } }, "patterns": [{ "include": "#expression-inside-possibly-arrow-parens" }] }, { "begin": "(?<=:)\\s*(async)?\\s*(?=\\<\\s*$)", "beginCaptures": { "1": { "name": "storage.modifier.async.js" } }, "end": "(?<=\\>)", "patterns": [{ "include": "#type-parameters" }] }, { "begin": "(?<=\\>)\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))", "beginCaptures": { "1": { "name": "meta.brace.round.js" } }, "end": "\\)", "endCaptures": { "0": { "name": "meta.brace.round.js" } }, "patterns": [{ "include": "#expression-inside-possibly-arrow-parens" }] }, { "include": "#possibly-arrow-return-type" }, { "include": "#expression" }] }, { "include": "#punctuation-comma" }, { "include": "#decl-block" }] }, "ternary-expression": { "begin": "(?!\\?\\.\\s*[^[:digit:]])(\\?)(?!\\?)", "beginCaptures": { "1": { "name": "keyword.operator.ternary.js" } }, "end": "\\s*(:)", "endCaptures": { "1": { "name": "keyword.operator.ternary.js" } }, "patterns": [{ "include": "#expression" }] }, "function-call": { "patterns": [{ "begin": "(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())", "end": "(?<=\\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())", "patterns": [{ "name": "meta.function-call.js", "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))", "end": "(?=\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())", "patterns": [{ "include": "#function-call-target" }] }, { "include": "#comment" }, { "include": "#function-call-optionals" }, { "include": "#type-arguments" }, { "include": "#paren-expression" }] }, { "begin": "(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))", "end": "(?<=\\>)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))", "patterns": [{ "name": "meta.function-call.js", "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))", "end": "(?=(<\\s*[\\{\\[\\(]\\s*$))", "patterns": [{ "include": "#function-call-target" }] }, { "include": "#comment" }, { "include": "#function-call-optionals" }, { "include": "#type-arguments" }] }] }, "function-call-target": { "patterns": [{ "include": "#support-function-call-identifiers" }, { "name": "entity.name.function.js", "match": "(\\#?[_$[:alpha:]][_$[:alnum:]]*)" }] }, "function-call-optionals": { "patterns": [{ "name": "meta.function-call.js punctuation.accessor.optional.js", "match": "\\?\\." }, { "name": "meta.function-call.js keyword.operator.definiteassignment.js", "match": "\\!" }] }, "support-function-call-identifiers": { "patterns": [{ "include": "#literal" }, { "include": "#support-objects" }, { "include": "#object-identifiers" }, { "include": "#punctuation-accessor" }, { "name": "keyword.operator.expression.import.js", "match": "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*[\\(]\\s*[\\\"\\'\\`]))" }] }, "new-expr": { "name": "new.expr.js", "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", "beginCaptures": { "1": { "name": "keyword.operator.new.js" } }, "end": "(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))", "patterns": [{ "include": "#expression" }] }, "instanceof-expr": { "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(instanceof)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", "beginCaptures": { "1": { "name": "keyword.operator.expression.instanceof.js" } }, "end": "(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|(===|!==|==|!=)|(([\\&\\~\\^\\|]\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s+instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))", "patterns": [{ "include": "#type" }] }, "paren-expression-possibly-arrow": { "patterns": [{ "begin": "(?<=[(=,])\\s*(async)?(?=\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))", "beginCaptures": { "1": { "name": "storage.modifier.async.js" } }, "end": "(?<=\\))", "patterns": [{ "include": "#paren-expression-possibly-arrow-with-typeparameters" }] }, { "begin": "(?<=[(=,]|=>|^return|[^\\._$[:alnum:]]return)\\s*(async)?(?=\\s*((((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\()|(<)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)))\\s*$)", "beginCaptures": { "1": { "name": "storage.modifier.async.js" } }, "end": "(?<=\\))", "patterns": [{ "include": "#paren-expression-possibly-arrow-with-typeparameters" }] }, { "include": "#possibly-arrow-return-type" }] }, "paren-expression-possibly-arrow-with-typeparameters": { "patterns": [{ "include": "#type-parameters" }, { "begin": "\\(", "beginCaptures": { "0": { "name": "meta.brace.round.js" } }, "end": "\\)", "endCaptures": { "0": { "name": "meta.brace.round.js" } }, "patterns": [{ "include": "#expression-inside-possibly-arrow-parens" }] }] }, "expression-inside-possibly-arrow-parens": { "patterns": [{ "include": "#expressionWithoutIdentifiers" }, { "include": "#comment" }, { "include": "#string" }, { "include": "#decorator" }, { "include": "#destructuring-parameter" }, { "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)", "captures": { "1": { "name": "storage.modifier.js" } } }, { "match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*\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)))", "captures": { "1": { "name": "storage.modifier.js" }, "2": { "name": "keyword.operator.rest.js" }, "3": { "name": "entity.name.function.js variable.language.this.js" }, "4": { "name": "entity.name.function.js" }, "5": { "name": "keyword.operator.optional.js" } } }, { "match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*[:,]|$)", "captures": { "1": { "name": "storage.modifier.js" }, "2": { "name": "keyword.operator.rest.js" }, "3": { "name": "variable.parameter.js variable.language.this.js" }, "4": { "name": "variable.parameter.js" }, "5": { "name": "keyword.operator.optional.js" } } }, { "include": "#type-annotation" }, { "include": "#variable-initializer" }, { "name": "punctuation.separator.parameter.js", "match": "," }, { "include": "#identifiers" }, { "include": "#expressionPunctuations" }] }, "paren-expression": { "begin": "\\(", "beginCaptures": { "0": { "name": "meta.brace.round.js" } }, "end": "\\)", "endCaptures": { "0": { "name": "meta.brace.round.js" } }, "patterns": [{ "include": "#expression" }] }, "cast": { "patterns": [{ "include": "#jsx" }] }, "expression-operators": { "patterns": [{ "name": "keyword.control.flow.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(await)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))" }, { "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?=\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*\\*)", "beginCaptures": { "1": { "name": "keyword.control.flow.js" } }, "end": "\\*", "endCaptures": { "0": { "name": "keyword.generator.asterisk.js" } }, "patterns": [{ "include": "#comment" }] }, { "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s*(\\*))?", "captures": { "1": { "name": "keyword.control.flow.js" }, "2": { "name": "keyword.generator.asterisk.js" } } }, { "name": "keyword.operator.expression.delete.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))delete(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))" }, { "name": "keyword.operator.expression.in.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))in(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()" }, { "name": "keyword.operator.expression.of.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))of(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()" }, { "name": "keyword.operator.expression.instanceof.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))" }, { "name": "keyword.operator.new.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))" }, { "include": "#typeof-operator" }, { "name": "keyword.operator.expression.void.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))void(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))" }, { "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*($|[;,:})\\]]))", "captures": { "1": { "name": "keyword.control.as.js" }, "2": { "name": "storage.modifier.js" } } }, { "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(as)|(satisfies))\\s+", "beginCaptures": { "1": { "name": "keyword.control.as.js" }, "2": { "name": "keyword.control.satisfies.js" } }, "end": "(?=^|[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisfies)\\s+)|(\\s+\\<))", "patterns": [{ "include": "#type" }] }, { "name": "keyword.operator.spread.js", "match": "\\.\\.\\." }, { "name": "keyword.operator.assignment.compound.js", "match": "\\*=|(?<!\\()/=|%=|\\+=|\\-=" }, { "name": "keyword.operator.assignment.compound.bitwise.js", "match": "\\&=|\\^=|<<=|>>=|>>>=|\\|=" }, { "name": "keyword.operator.bitwise.shift.js", "match": "<<|>>>|>>" }, { "name": "keyword.operator.comparison.js", "match": "===|!==|==|!=" }, { "name": "keyword.operator.relational.js", "match": "<=|>=|<>|<|>" }, { "match": "(?<=[_$[:alnum:]])(\\!)\\s*(?:(/=)|(?:(/)(?![/*])))", "captures": { "1": { "name": "keyword.operator.logical.js" }, "2": { "name": "keyword.operator.assignment.compound.js" }, "3": { "name": "keyword.operator.arithmetic.js" } } }, { "name": "keyword.operator.logical.js", "match": "\\!|&&|\\|\\||\\?\\?" }, { "name": "keyword.operator.bitwise.js", "match": "\\&|~|\\^|\\|" }, { "name": "keyword.operator.assignment.js", "match": "\\=" }, { "name": "keyword.operator.decrement.js", "match": "--" }, { "name": "keyword.operator.increment.js", "match": "\\+\\+" }, { "name": "keyword.operator.arithmetic.js", "match": "%|\\*|/|-|\\+" }, { "begin": "(?<=[_$[:alnum:])\\]])\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)+(?:(/=)|(?:(/)(?![/*]))))", "end": "(?:(/=)|(?:(/)(?!\\*([^\\*]|(\\*[^\\/]))*\\*\\/)))", "endCaptures": { "1": { "name": "keyword.operator.assignment.compound.js" }, "2": { "name": "keyword.operator.arithmetic.js" } }, "patterns": [{ "include": "#comment" }] }, { "match": "(?<=[_$[:alnum:])\\]])\\s*(?:(/=)|(?:(/)(?![/*])))", "captures": { "1": { "name": "keyword.operator.assignment.compound.js" }, "2": { "name": "keyword.operator.arithmetic.js" } } }] }, "typeof-operator": { "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))typeof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", "beginCaptures": { "0": { "name": "keyword.operator.expression.typeof.js" } }, "end": "(?=[,);}\\]=>:&|{\\?]|(extends\\s+)|$|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))", "patterns": [{ "include": "#type-arguments" }, { "include": "#expression" }] }, "literal": { "patterns": [{ "include": "#numeric-literal" }, { "include": "#boolean-literal" }, { "include": "#null-literal" }, { "include": "#undefined-literal" }, { "include": "#numericConstant-literal" }, { "include": "#array-literal" }, { "include": "#this-literal" }, { "include": "#super-literal" }] }, "array-literal": { "name": "meta.array.literal.js", "begin": "\\s*(\\[)", "beginCaptures": { "1": { "name": "meta.brace.square.js" } }, "end": "\\]", "endCaptures": { "0": { "name": "meta.brace.square.js" } }, "patterns": [{ "include": "#expression" }, { "include": "#punctuation-comma" }] }, "numeric-literal": { "patterns": [{ "name": "constant.numeric.hex.js", "match": "\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$)", "captures": { "1": { "name": "storage.type.numeric.bigint.js" } } }, { "name": "constant.numeric.binary.js", "match": "\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$)", "captures": { "1": { "name": "storage.type.numeric.bigint.js" } } }, { "name": "constant.numeric.octal.js", "match": "\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$)", "captures": { "1": { "name": "storage.type.numeric.bigint.js" } } }, { "match": "(?x)\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)(?!\\$)", "captures": { "0": { "name": "constant.numeric.decimal.js" }, "1": { "name": "meta.delimiter.decimal.period.js" }, "2": { "name": "storage.type.numeric.bigint.js" }, "3": { "name": "meta.delimiter.decimal.period.js" }, "4": { "name": "storage.type.numeric.bigint.js" }, "5": { "name": "meta.delimiter.decimal.period.js" }, "6": { "name": "storage.type.numeric.bigint.js" }, "7": { "name": "storage.type.numeric.bigint.js" }, "8": { "name": "meta.delimiter.decimal.period.js" }, "9": { "name": "storage.type.numeric.bigint.js" }, "10": { "name": "meta.delimiter.decimal.period.js" }, "11": { "name": "storage.type.numeric.bigint.js" }, "12": { "name": "meta.delimiter.decimal.period.js" }, "13": { "name": "storage.type.numeric.bigint.js" }, "14": { "name": "storage.type.numeric.bigint.js" } } }] }, "boolean-literal": { "patterns": [{ "name": "constant.language.boolean.true.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))" }, { "name": "constant.language.boolean.false.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))" }] }, "null-literal": { "name": "constant.language.null.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))null(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))" }, "this-literal": { "name": "variable.language.this.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))this\\b(?!\\$)" }, "super-literal": { "name": "variable.language.super.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))super\\b(?!\\$)" }, "undefined-literal": { "name": "constant.language.undefined.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))undefined(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))" }, "numericConstant-literal": { "patterns": [{ "name": "constant.language.nan.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))NaN(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))" }, { "name": "constant.language.infinity.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Infinity(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))" }] }, "support-objects": { "patterns": [{ "name": "variable.language.arguments.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(arguments)\\b(?!\\$)" }, { "name": "support.class.promise.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Promise)\\b(?!\\$)" }, { "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(import)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(meta)\\b(?!\\$)", "captures": { "1": { "name": "keyword.control.import.js" }, "2": { "name": "punctuation.accessor.js" }, "3": { "name": "punctuation.accessor.optional.js" }, "4": { "name": "support.variable.property.importmeta.js" } } }, { "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(target)\\b(?!\\$)", "captures": { "1": { "name": "keyword.operator.new.js" }, "2": { "name": "punctuation.accessor.js" }, "3": { "name": "punctuation.accessor.optional.js" }, "4": { "name": "support.variable.property.target.js" } } }, { "match": "(?x) (?:(\\.)|(\\?\\.(?!\\s*[[:digit:]]))) \\s* (?:\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(?!\\$)))", "captures": { "1": { "name": "punctuation.accessor.js" }, "2": { "name": "punctuation.accessor.optional.js" }, "3": { "name": "support.variable.property.js" }, "4": { "name": "support.constant.js" } } }, { "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(exports)|(module)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\\b(?!\\$)", "captures": { "1": { "name": "support.type.object.module.js" }, "2": { "name": "support.type.object.module.js" }, "3": { "name": "punctuation.accessor.js" }, "4": { "name": "punctuation.accessor.optional.js" }, "5": { "name": "support.type.object.module.js" } } }] }, "identifiers": { "patterns": [{ "include": "#object-identifiers" }, { "match": "(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(\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))", "captures": { "1": { "name": "punctuation.accessor.js" }, "2": { "name": "punctuation.accessor.optional.js" }, "3": { "name": "entity.name.function.js" } } }, { "match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])", "captures": { "1": { "name": "punctuation.accessor.js" }, "2": { "name": "punctuation.accessor.optional.js" }, "3": { "name": "variable.other.constant.property.js" } } }, { "match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)", "captures": { "1": { "name": "punctuation.accessor.js" }, "2": { "name": "punctuation.accessor.optional.js" }, "3": { "name": "variable.other.property.js" } } }, { "name": "variable.other.constant.js", "match": "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])" }, { "name": "variable.other.readwrite.js", "match": "[_$[:alpha:]][_$[:alnum:]]*" }] }, "object-identifiers": { "patterns": [{ "name": "support.class.js", "match": "([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\\??\\.\\s*prototype\\b(?!\\$))" }, { "match": "(?x)(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?:\n  (\\#?[[:upper:]][_$[:digit:][:upper:]]*) |\n  (\\#?[_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)", "captures": { "1": { "name": "punctuation.accessor.js" }, "2": { "name": "punctuation.accessor.optional.js" }, "3": { "name": "variable.other.constant.object.property.js" }, "4": { "name": "variable.other.object.property.js" } } }, { "match": "(?x)(?:\n  ([[:upper:]][_$[:digit:][:upper:]]*) |\n  ([_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)", "captures": { "1": { "name": "variable.other.constant.object.js" }, "2": { "name": "variable.other.object.js" } } }] }, "type-annotation": { "patterns": [{ "name": "meta.type.annotation.js", "begin": "(:)(?=\\s*\\S)", "beginCaptures": { "1": { "name": "keyword.operator.type.annotation.js" } }, "end": "(?<![:|&])(?!\\s*[|&]\\s+)((?=^|[,);\\}\\]]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))", "patterns": [{ "include": "#type" }] }, { "name": "meta.type.annotation.js", "begin": "(:)", "beginCaptures": { "1": { "name": "keyword.operator.type.annotation.js" } }, "end": "(?<![:|&])((?=[,);\\}\\]]|\\/\\/)|(?==[^>])|(?=^\\s*$)|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))", "patterns": [{ "include": "#type" }] }] }, "parameter-type-annotation": { "patterns": [{ "name": "meta.type.annotation.js", "begin": "(:)", "beginCaptures": { "1": { "name": "keyword.operator.type.annotation.js" } }, "end": "(?=[,)])|(?==[^>])", "patterns": [{ "include": "#type" }] }] }, "return-type": { "patterns": [{ "name": "meta.return.type.js", "begin": "(?<=\\))\\s*(:)(?=\\s*\\S)", "beginCaptures": { "1": { "name": "keyword.operator.type.annotation.js" } }, "end": "(?<![:|&])(?=$|^|[{};,]|//)", "patterns": [{ "include": "#return-type-core" }] }, { "name": "meta.return.type.js", "begin": "(?<=\\))\\s*(:)", "beginCaptures": { "1": { "name": "keyword.operator.type.annotation.js" } }, "end": "(?<![:|&])((?=[{};,]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))", "patterns": [{ "include": "#return-type-core" }] }] }, "return-type-core": { "patterns": [{ "include": "#comment" }, { "begin": "(?<=[:|&])(?=\\s*\\{)", "end": "(?<=\\})", "patterns": [{ "include": "#type-object" }] }, { "include": "#type-predicate-operator" }, { "include": "#type" }] }, "arrow-return-type": { "name": "meta.return.type.arrow.js", "begin": "(?<=\\))\\s*(:)", "beginCaptures": { "1": { "name": "keyword.operator.type.annotation.js" } }, "end": "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))", "patterns": [{ "include": "#arrow-return-type-body" }] }, "possibly-arrow-return-type": { "begin": "(?<=\\)|^)\\s*(:)(?=\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*=>)", "beginCaptures": { "1": { "name": "meta.arrow.js meta.return.type.arrow.js keyword.operator.type.annotation.js" } }, "end": "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\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+))", "contentName": "meta.arrow.js meta.return.type.arrow.js", "patterns": [{ "include": "#arrow-return-type-body" }] }, "arrow-return-type-body": { "patterns": [{ "begin": "(?<=[:])(?=\\s*\\{)", "end": "(?<=\\})", "patterns": [{ "include": "#type-object" }] }, { "include": "#type-predicate-operator" }, { "include": "#type" }] }, "type-parameters": { "name": "meta.type.parameters.js", "begin": "(<)", "beginCaptures": { "1": { "name": "punctuation.definition.typeparameters.begin.js" } }, "end": "(>)", "endCaptures": { "1": { "name": "punctuation.definition.typeparameters.end.js" } }, "patterns": [{ "include": "#comment" }, { "name": "storage.modifier.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends|in|out|const)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))" }, { "include": "#type" }, { "include": "#punctuation-comma" }, { "name": "keyword.operator.assignment.js", "match": "(=)(?!>)" }] }, "type-arguments": { "name": "meta.type.parameters.js", "begin": "\\<", "beginCaptures": { "0": { "name": "punctuation.definition.typeparameters.begin.js" } }, "end": "\\>", "endCaptures": { "0": { "name": "punctuation.definition.typeparameters.end.js" } }, "patterns": [{ "include": "#type-arguments-body" }] }, "type-arguments-body": { "patterns": [{ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(_)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", "captures": { "0": { "name": "keyword.operator.type.js" } } }, { "include": "#type" }, { "include": "#punctuation-comma" }] }, "type": { "patterns": [{ "include": "#comment" }, { "include": "#type-string" }, { "include": "#numeric-literal" }, { "include": "#type-primitive" }, { "include": "#type-builtin-literals" }, { "include": "#type-parameters" }, { "include": "#type-tuple" }, { "include": "#type-object" }, { "include": "#type-operators" }, { "include": "#type-conditional" }, { "include": "#type-fn-type-parameters" }, { "include": "#type-paren-or-function-parameters" }, { "include": "#type-function-return-type" }, { "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*", "captures": { "1": { "name": "storage.modifier.js" } } }, { "include": "#type-name" }] }, "type-primitive": { "name": "support.type.primitive.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))" }, "type-builtin-literals": { "name": "support.type.builtin.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))" }, "type-tuple": { "name": "meta.type.tuple.js", "begin": "\\[", "beginCaptures": { "0": { "name": "meta.brace.square.js" } }, "end": "\\]", "endCaptures": { "0": { "name": "meta.brace.square.js" } }, "patterns": [{ "name": "keyword.operator.rest.js", "match": "\\.\\.\\." }, { "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)", "captures": { "1": { "name": "entity.name.label.js" }, "2": { "name": "keyword.operator.optional.js" }, "3": { "name": "punctuation.separator.label.js" } } }, { "include": "#type" }, { "include": "#punctuation-comma" }] }, "type-object": { "name": "meta.object.type.js", "begin": "\\{", "beginCaptures": { "0": { "name": "punctuation.definition.block.js" } }, "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.block.js" } }, "patterns": [{ "include": "#comment" }, { "include": "#method-declaration" }, { "include": "#indexer-declaration" }, { "include": "#indexer-mapped-type-declaration" }, { "include": "#field-declaration" }, { "include": "#type-annotation" }, { "begin": "\\.\\.\\.", "beginCaptures": { "0": { "name": "keyword.operator.spread.js" } }, "end": "(?=\\}|;|,|$)|(?<=\\})", "patterns": [{ "include": "#type" }] }, { "include": "#punctuation-comma" }, { "include": "#punctuation-semicolon" }, { "include": "#type" }] }, "type-conditional": { "patterns": [{ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+", "beginCaptures": { "1": { "name": "storage.modifier.js" } }, "end": "(?<=:)", "patterns": [{ "begin": "\\?", "beginCaptures": { "0": { "name": "keyword.operator.ternary.js" } }, "end": ":", "endCaptures": { "0": { "name": "keyword.operator.ternary.js" } }, "patterns": [{ "include": "#type" }] }, { "include": "#type" }] }] }, "type-paren-or-function-parameters": { "name": "meta.type.paren.cover.js", "begin": "\\(", "beginCaptures": { "0": { "name": "meta.brace.round.js" } }, "end": "\\)", "endCaptures": { "0": { "name": "meta.brace.round.js" } }, "patterns": [{ "match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\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*))))))))", "captures": { "1": { "name": "storage.modifier.js" }, "2": { "name": "keyword.operator.rest.js" }, "3": { "name": "entity.name.function.js variable.language.this.js" }, "4": { "name": "entity.name.function.js" }, "5": { "name": "keyword.operator.optional.js" } } }, { "match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)", "captures": { "1": { "name": "storage.modifier.js" }, "2": { "name": "keyword.operator.rest.js" }, "3": { "name": "variable.parameter.js variable.language.this.js" }, "4": { "name": "variable.parameter.js" }, "5": { "name": "keyword.operator.optional.js" } } }, { "include": "#type-annotation" }, { "name": "punctuation.separator.parameter.js", "match": "," }, { "include": "#type" }] }, "type-fn-type-parameters": { "patterns": [{ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)", "beginCaptures": { "1": { "name": "meta.type.constructor.js storage.modifier.js" }, "2": { "name": "meta.type.constructor.js keyword.control.new.js" } }, "end": "(?<=>)", "patterns": [{ "include": "#comment" }, { "include": "#type-parameters" }] }, { "name": "meta.type.constructor.js", "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()", "beginCaptures": { "1": { "name": "storage.modifier.js" }, "2": { "name": "keyword.control.new.js" } }, "end": "(?<=\\))", "patterns": [{ "include": "#function-parameters" }] }, { "name": "meta.type.function.js", "begin": "(?x)(\n  (?=\n    [(]\\s*(\n      ([)]) |\n      (\\.\\.\\.) |\n      ([_$[:alnum:]]+\\s*(\n        ([:,?=])|\n        ([)]\\s*=>)\n      ))\n    )\n  )\n)", "end": "(?<=\\))", "patterns": [{ "include": "#function-parameters" }] }] }, "type-function-return-type": { "patterns": [{ "name": "meta.type.function.return.js", "begin": "(=>)(?=\\s*\\S)", "beginCaptures": { "1": { "name": "storage.type.function.arrow.js" } }, "end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)", "patterns": [{ "include": "#type-function-return-type-core" }] }, { "name": "meta.type.function.return.js", "begin": "=>", "beginCaptures": { "0": { "name": "storage.type.function.arrow.js" } }, "end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))", "patterns": [{ "include": "#type-function-return-type-core" }] }] }, "type-function-return-type-core": { "patterns": [{ "include": "#comment" }, { "begin": "(?<==>)(?=\\s*\\{)", "end": "(?<=\\})", "patterns": [{ "include": "#type-object" }] }, { "include": "#type-predicate-operator" }, { "include": "#type" }] }, "type-operators": { "patterns": [{ "include": "#typeof-operator" }, { "include": "#type-infer" }, { "begin": "([&|])(?=\\s*\\{)", "beginCaptures": { "0": { "name": "keyword.operator.type.js" } }, "end": "(?<=\\})", "patterns": [{ "include": "#type-object" }] }, { "begin": "[&|]", "beginCaptures": { "0": { "name": "keyword.operator.type.js" } }, "end": "(?=\\S)" }, { "name": "keyword.operator.expression.keyof.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))keyof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))" }, { "name": "keyword.operator.ternary.js", "match": "(\\?|\\:)" }, { "name": "keyword.operator.expression.import.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*\\()" }] }, "type-infer": { "patterns": [{ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(infer)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s+(extends)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))?", "name": "meta.type.infer.js", "captures": { "1": { "name": "keyword.operator.expression.infer.js" }, "2": { "name": "entity.name.type.js" }, "3": { "name": "keyword.operator.expression.extends.js" } } }] }, "type-predicate-operator": { "patterns": [{ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", "captures": { "1": { "name": "keyword.operator.type.asserts.js" }, "2": { "name": "variable.parameter.js variable.language.this.js" }, "3": { "name": "variable.parameter.js" }, "4": { "name": "keyword.operator.expression.is.js" } } }, { "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))", "captures": { "1": { "name": "keyword.operator.type.asserts.js" }, "2": { "name": "variable.parameter.js variable.language.this.js" }, "3": { "name": "variable.parameter.js" } } }, { "name": "keyword.operator.type.asserts.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))" }, { "name": "keyword.operator.expression.is.js", "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))" }] }, "type-name": { "patterns": [{ "begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)", "captures": { "1": { "name": "entity.name.type.module.js" }, "2": { "name": "punctuation.accessor.js" }, "3": { "name": "punctuation.accessor.optional.js" }, "4": { "name": "meta.type.parameters.js punctuation.definition.typeparameters.begin.js" } }, "end": "(>)", "endCaptures": { "1": { "name": "meta.type.parameters.js punctuation.definition.typeparameters.end.js" } }, "contentName": "meta.type.parameters.js", "patterns": [{ "include": "#type-arguments-body" }] }, { "begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)", "beginCaptures": { "1": { "name": "entity.name.type.js" }, "2": { "name": "meta.type.parameters.js punctuation.definition.typeparameters.begin.js" } }, "end": "(>)", "endCaptures": { "1": { "name": "meta.type.parameters.js punctuation.definition.typeparameters.end.js" } }, "contentName": "meta.type.parameters.js", "patterns": [{ "include": "#type-arguments-body" }] }, { "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))", "captures": { "1": { "name": "entity.name.type.module.js" }, "2": { "name": "punctuation.accessor.js" }, "3": { "name": "punctuation.accessor.optional.js" } } }, { "name": "entity.name.type.js", "match": "[_$[:alpha:]][_$[:alnum:]]*" }] }, "punctuation-comma": { "name": "punctuation.separator.comma.js", "match": "," }, "punctuation-semicolon": { "name": "punctuation.terminator.statement.js", "match": ";" }, "punctuation-accessor": { "match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))", "captures": { "1": { "name": "punctuation.accessor.js" }, "2": { "name": "punctuation.accessor.optional.js" } } }, "string": { "patterns": [{ "include": "#qstring-single" }, { "include": "#qstring-double" }, { "include": "#template" }] }, "qstring-double": { "name": "string.quoted.double.js", "begin": '"', "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.js" } }, "end": '(")|((?:[^\\\\\\n])$)', "endCaptures": { "1": { "name": "punctuation.definition.string.end.js" }, "2": { "name": "invalid.illegal.newline.js" } }, "patterns": [{ "include": "#string-character-escape" }] }, "qstring-single": { "name": "string.quoted.single.js", "begin": "'", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.js" } }, "end": "(\\')|((?:[^\\\\\\n])$)", "endCaptures": { "1": { "name": "punctuation.definition.string.end.js" }, "2": { "name": "invalid.illegal.newline.js" } }, "patterns": [{ "include": "#string-character-escape" }] }, "string-character-escape": { "name": "constant.character.escape.js", "match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)" }, "template": { "patterns": [{ "include": "#template-call" }, { "contentName": "string.template.js", "begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)", "beginCaptures": { "1": { "name": "entity.name.function.tagged-template.js" }, "2": { "name": "string.template.js punctuation.definition.string.template.begin.js" } }, "end": "`", "endCaptures": { "0": { "name": "string.template.js punctuation.definition.string.template.end.js" } }, "patterns": [{ "include": "#template-substitution-element" }, { "include": "#string-character-escape" }] }] }, "template-call": { "patterns": [{ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)", "end": "(?=`)", "patterns": [{ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))", "end": "(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)", "patterns": [{ "include": "#support-function-call-identifiers" }, { "name": "entity.name.function.tagged-template.js", "match": "([_$[:alpha:]][_$[:alnum:]]*)" }] }, { "include": "#type-arguments" }] }, { "begin": "([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)", "beginCaptures": { "1": { "name": "entity.name.function.tagged-template.js" } }, "end": "(?=`)", "patterns": [{ "include": "#type-arguments" }] }] }, "template-substitution-element": { "name": "meta.template.expression.js", "begin": "\\$\\{", "beginCaptures": { "0": { "name": "punctuation.definition.template-expression.begin.js" } }, "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.template-expression.end.js" } }, "patterns": [{ "include": "#expression" }], "contentName": "meta.embedded.line.js" }, "type-string": { "patterns": [{ "include": "#qstring-single" }, { "include": "#qstring-double" }, { "include": "#template-type" }] }, "template-type": { "patterns": [{ "include": "#template-call" }, { "contentName": "string.template.js", "begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)", "beginCaptures": { "1": { "name": "entity.name.function.tagged-template.js" }, "2": { "name": "string.template.js punctuation.definition.string.template.begin.js" } }, "end": "`", "endCaptures": { "0": { "name": "string.template.js punctuation.definition.string.template.end.js" } }, "patterns": [{ "include": "#template-type-substitution-element" }, { "include": "#string-character-escape" }] }] }, "template-type-substitution-element": { "name": "meta.template.expression.js", "begin": "\\$\\{", "beginCaptures": { "0": { "name": "punctuation.definition.template-expression.begin.js" } }, "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.template-expression.end.js" } }, "patterns": [{ "include": "#type" }], "contentName": "meta.embedded.line.js" }, "regex": { "patterns": [{ "name": "string.regexp.js", "begin": "(?<!\\+\\+|--|})(?<=[=(:,\\[?+!]|^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case|=>|&&|\\|\\||\\*\\/)\\s*(\\/)(?![\\/*])(?=(?:[^\\/\\\\\\[\\()]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\]|\\(([^\\)\\\\]|\\\\.)+\\))+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))", "beginCaptures": { "1": { "name": "punctuation.definition.string.begin.js" } }, "end": "(/)([dgimsuy]*)", "endCaptures": { "1": { "name": "punctuation.definition.string.end.js" }, "2": { "name": "keyword.other.js" } }, "patterns": [{ "include": "#regexp" }] }, { "name": "string.regexp.js", "begin": "((?<![_$[:alnum:])\\]]|\\+\\+|--|}|\\*\\/)|((?<=^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case))\\s*)\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.js" } }, "end": "(/)([dgimsuy]*)", "endCaptures": { "1": { "name": "punctuation.definition.string.end.js" }, "2": { "name": "keyword.other.js" } }, "patterns": [{ "include": "#regexp" }] }] }, "regexp": { "patterns": [{ "name": "keyword.control.anchor.regexp", "match": "\\\\[bB]|\\^|\\$" }, { "match": "\\\\[1-9]\\d*|\\\\k<([a-zA-Z_$][\\w$]*)>", "captures": { "0": { "name": "keyword.other.back-reference.regexp" }, "1": { "name": "variable.other.regexp" } } }, { "name": "keyword.operator.quantifier.regexp", "match": "[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??" }, { "name": "keyword.operator.or.regexp", "match": "\\|" }, { "name": "meta.group.assertion.regexp", "begin": "(\\()((\\?=)|(\\?!)|(\\?<=)|(\\?<!))", "beginCaptures": { "1": { "name": "punctuation.definition.group.regexp" }, "2": { "name": "punctuation.definition.group.assertion.regexp" }, "3": { "name": "meta.assertion.look-ahead.regexp" }, "4": { "name": "meta.assertion.negative-look-ahead.regexp" }, "5": { "name": "meta.assertion.look-behind.regexp" }, "6": { "name": "meta.assertion.negative-look-behind.regexp" } }, "end": "(\\))", "endCaptures": { "1": { "name": "punctuation.definition.group.regexp" } }, "patterns": [{ "include": "#regexp" }] }, { "name": "meta.group.regexp", "begin": "\\((?:(\\?:)|(?:\\?<([a-zA-Z_$][\\w$]*)>))?", "beginCaptures": { "0": { "name": "punctuation.definition.group.regexp" }, "1": { "name": "punctuation.definition.group.no-capture.regexp" }, "2": { "name": "variable.other.regexp" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.regexp" } }, "patterns": [{ "include": "#regexp" }] }, { "name": "constant.other.character-class.set.regexp", "begin": "(\\[)(\\^)?", "beginCaptures": { "1": { "name": "punctuation.definition.character-class.regexp" }, "2": { "name": "keyword.operator.negation.regexp" } }, "end": "(\\])", "endCaptures": { "1": { "name": "punctuation.definition.character-class.regexp" } }, "patterns": [{ "name": "constant.other.character-class.range.regexp", "match": "(?:.|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))\\-(?:[^\\]\\\\]|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))", "captures": { "1": { "name": "constant.character.numeric.regexp" }, "2": { "name": "constant.character.control.regexp" }, "3": { "name": "constant.character.escape.backslash.regexp" }, "4": { "name": "constant.character.numeric.regexp" }, "5": { "name": "constant.character.control.regexp" }, "6": { "name": "constant.character.escape.backslash.regexp" } } }, { "include": "#regex-character-class" }] }, { "include": "#regex-character-class" }] }, "regex-character-class": { "patterns": [{ "name": "constant.other.character-class.regexp", "match": "\\\\[wWsSdDtrnvf]|\\." }, { "name": "constant.character.numeric.regexp", "match": "\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})" }, { "name": "constant.character.control.regexp", "match": "\\\\c[A-Z]" }, { "name": "constant.character.escape.backslash.regexp", "match": "\\\\." }] }, "comment": { "patterns": [{ "name": "comment.block.documentation.js", "begin": "/\\*\\*(?!/)", "beginCaptures": { "0": { "name": "punctuation.definition.comment.js" } }, "end": "\\*/", "endCaptures": { "0": { "name": "punctuation.definition.comment.js" } }, "patterns": [{ "include": "#docblock" }] }, { "name": "comment.block.js", "begin": "(/\\*)(?:\\s*((@)internal)(?=\\s|(\\*/)))?", "beginCaptures": { "1": { "name": "punctuation.definition.comment.js" }, "2": { "name": "storage.type.internaldeclaration.js" }, "3": { "name": "punctuation.decorator.internaldeclaration.js" } }, "end": "\\*/", "endCaptures": { "0": { "name": "punctuation.definition.comment.js" } } }, { "begin": "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)", "beginCaptures": { "1": { "name": "punctuation.whitespace.comment.leading.js" }, "2": { "name": "comment.line.double-slash.js" }, "3": { "name": "punctuation.definition.comment.js" }, "4": { "name": "storage.type.internaldeclaration.js" }, "5": { "name": "punctuation.decorator.internaldeclaration.js" } }, "end": "(?=$)", "contentName": "comment.line.double-slash.js" }] }, "single-line-comment-consuming-line-ending": { "begin": "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)", "beginCaptures": { "1": { "name": "punctuation.whitespace.comment.leading.js" }, "2": { "name": "comment.line.double-slash.js" }, "3": { "name": "punctuation.definition.comment.js" }, "4": { "name": "storage.type.internaldeclaration.js" }, "5": { "name": "punctuation.decorator.internaldeclaration.js" } }, "end": "(?=^)", "contentName": "comment.line.double-slash.js" }, "directives": { "name": "comment.line.triple-slash.directive.js", "begin": "^(///)\\s*(?=<(reference|amd-dependency|amd-module)(\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\s*=\\s*((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)))+\\s*/>\\s*$)", "beginCaptures": { "1": { "name": "punctuation.definition.comment.js" } }, "end": "(?=$)", "patterns": [{ "name": "meta.tag.js", "begin": "(<)(reference|amd-dependency|amd-module)", "beginCaptures": { "1": { "name": "punctuation.definition.tag.directive.js" }, "2": { "name": "entity.name.tag.directive.js" } }, "end": "/>", "endCaptures": { "0": { "name": "punctuation.definition.tag.directive.js" } }, "patterns": [{ "name": "entity.other.attribute-name.directive.js", "match": "path|types|no-default-lib|lib|name|resolution-mode" }, { "name": "keyword.operator.assignment.js", "match": "=" }, { "include": "#string" }] }] }, "docblock": { "patterns": [{ "match": "(?x)\n((@)(?:access|api))\n\\s+\n(private|protected|public)\n\\b", "captures": { "1": { "name": "storage.type.class.jsdoc" }, "2": { "name": "punctuation.definition.block.tag.jsdoc" }, "3": { "name": "constant.language.access-type.jsdoc" } } }, { "match": "(?x)\n((@)author)\n\\s+\n(\n  [^@\\s<>*/]\n  (?:[^@<>*/]|\\*[^/])*\n)\n(?:\n  \\s*\n  (<)\n  ([^>\\s]+)\n  (>)\n)?", "captures": { "1": { "name": "storage.type.class.jsdoc" }, "2": { "name": "punctuation.definition.block.tag.jsdoc" }, "3": { "name": "entity.name.type.instance.jsdoc" }, "4": { "name": "punctuation.definition.bracket.angle.begin.jsdoc" }, "5": { "name": "constant.other.email.link.underline.jsdoc" }, "6": { "name": "punctuation.definition.bracket.angle.end.jsdoc" } } }, { "match": "(?x)\n((@)borrows) \\s+\n((?:[^@\\s*/]|\\*[^/])+)    # <that namepath>\n\\s+ (as) \\s+              # as\n((?:[^@\\s*/]|\\*[^/])+)    # <this namepath>", "captures": { "1": { "name": "storage.type.class.jsdoc" }, "2": { "name": "punctuation.definition.block.tag.jsdoc" }, "3": { "name": "entity.name.type.instance.jsdoc" }, "4": { "name": "keyword.operator.control.jsdoc" }, "5": { "name": "entity.name.type.instance.jsdoc" } } }, { "name": "meta.example.jsdoc", "begin": "((@)example)\\s+", "end": "(?=@|\\*/)", "beginCaptures": { "1": { "name": "storage.type.class.jsdoc" }, "2": { "name": "punctuation.definition.block.tag.jsdoc" } }, "patterns": [{ "match": "^\\s\\*\\s+" }, { "contentName": "constant.other.description.jsdoc", "begin": "\\G(<)caption(>)", "beginCaptures": { "0": { "name": "entity.name.tag.inline.jsdoc" }, "1": { "name": "punctuation.definition.bracket.angle.begin.jsdoc" }, "2": { "name": "punctuation.definition.bracket.angle.end.jsdoc" } }, "end": "(</)caption(>)|(?=\\*/)", "endCaptures": { "0": { "name": "entity.name.tag.inline.jsdoc" }, "1": { "name": "punctuation.definition.bracket.angle.begin.jsdoc" }, "2": { "name": "punctuation.definition.bracket.angle.end.jsdoc" } } }, { "match": "[^\\s@*](?:[^*]|\\*[^/])*", "captures": { "0": { "name": "source.embedded.js" } } }] }, { "match": "(?x) ((@)kind) \\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\b", "captures": { "1": { "name": "storage.type.class.jsdoc" }, "2": { "name": "punctuation.definition.block.tag.jsdoc" }, "3": { "name": "constant.language.symbol-type.jsdoc" } } }, { "match": "(?x)\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)", "captures": { "1": { "name": "storage.type.class.jsdoc" }, "2": { "name": "punctuation.definition.block.tag.jsdoc" }, "3": { "name": "variable.other.link.underline.jsdoc" }, "4": { "name": "entity.name.type.instance.jsdoc" } } }, { "match": "(?x)\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)", "captures": { "1": { "name": "storage.type.class.jsdoc" }, "2": { "name": "punctuation.definition.block.tag.jsdoc" }, "3": { "name": "variable.other.jsdoc" } } }, { "begin": "(?x)((@)template)\\s+(?={)", "beginCaptures": { "1": { "name": "storage.type.class.jsdoc" }, "2": { "name": "punctuation.definition.block.tag.jsdoc" } }, "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])", "patterns": [{ "include": "#jsdoctype" }, { "name": "variable.other.jsdoc", "match": "([A-Za-z_$][\\w$.\\[\\]]*)" }] }, { "match": "(?x)\n(\n  (@)\n  (?:arg|argument|const|constant|member|namespace|param|var)\n)\n\\s+\n(\n  [A-Za-z_$]\n  [\\w$.\\[\\]]*\n)", "captures": { "1": { "name": "storage.type.class.jsdoc" }, "2": { "name": "punctuation.definition.block.tag.jsdoc" }, "3": { "name": "variable.other.jsdoc" } } }, { "begin": "((@)typedef)\\s+(?={)", "beginCaptures": { "1": { "name": "storage.type.class.jsdoc" }, "2": { "name": "punctuation.definition.block.tag.jsdoc" } }, "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])", "patterns": [{ "include": "#jsdoctype" }, { "name": "entity.name.type.instance.jsdoc", "match": "(?:[^@\\s*/]|\\*[^/])+" }] }, { "begin": "((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\s+(?={)", "beginCaptures": { "1": { "name": "storage.type.class.jsdoc" }, "2": { "name": "punctuation.definition.block.tag.jsdoc" } }, "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])", "patterns": [{ "include": "#jsdoctype" }, { "name": "variable.other.jsdoc", "match": "([A-Za-z_$][\\w$.\\[\\]]*)" }, { "name": "variable.other.jsdoc", "match": `(?x)
(\\[)\\s*
[\\w$]+
(?:
  (?:\\[\\])?                                        # Foo[ ].bar properties within an array
  \\.                                                # Foo.Bar namespaced parameter
  [\\w$]+
)*
(?:
  \\s*
  (=)                                                # [foo=bar] Default parameter value
  \\s*
  (
    # The inner regexes are to stop the match early at */ and to not stop at escaped quotes
    (?>
      "(?:(?:\\*(?!/))|(?:\\\\(?!"))|[^*\\\\])*?" |                      # [foo="bar"] Double-quoted
      '(?:(?:\\*(?!/))|(?:\\\\(?!'))|[^*\\\\])*?' |                      # [foo='bar'] Single-quoted
      \\[ (?:(?:\\*(?!/))|[^*])*? \\] |                                # [foo=[1,2]] Array literal
      (?:(?:\\*(?!/))|\\s(?!\\s*\\])|\\[.*?(?:\\]|(?=\\*/))|[^*\\s\\[\\]])*   # Everything else
    )*
  )
)?
\\s*(?:(\\])((?:[^*\\s]|\\*[^\\s/])+)?|(?=\\*/))`, "captures": { "1": { "name": "punctuation.definition.optional-value.begin.bracket.square.jsdoc" }, "2": { "name": "keyword.operator.assignment.jsdoc" }, "3": { "name": "source.embedded.js" }, "4": { "name": "punctuation.definition.optional-value.end.bracket.square.jsdoc" }, "5": { "name": "invalid.illegal.syntax.jsdoc" } } }] }, { "begin": "(?x)\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+(?={)", "beginCaptures": { "1": { "name": "storage.type.class.jsdoc" }, "2": { "name": "punctuation.definition.block.tag.jsdoc" } }, "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])", "patterns": [{ "include": "#jsdoctype" }] }, { "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)", "captures": { "1": { "name": "storage.type.class.jsdoc" }, "2": { "name": "punctuation.definition.block.tag.jsdoc" }, "3": { "name": "entity.name.type.instance.jsdoc" } } }, { "contentName": "variable.other.jsdoc", "begin": `((@)(?:default(?:value)?|license|version))\\s+(([''"]))`, "beginCaptures": { "1": { "name": "storage.type.class.jsdoc" }, "2": { "name": "punctuation.definition.block.tag.jsdoc" }, "3": { "name": "variable.other.jsdoc" }, "4": { "name": "punctuation.definition.string.begin.jsdoc" } }, "end": "(\\3)|(?=$|\\*/)", "endCaptures": { "0": { "name": "variable.other.jsdoc" }, "1": { "name": "punctuation.definition.string.end.jsdoc" } } }, { "match": "((@)(?:default(?:value)?|license|tutorial|variation|version))\\s+([^\\s*]+)", "captures": { "1": { "name": "storage.type.class.jsdoc" }, "2": { "name": "punctuation.definition.block.tag.jsdoc" }, "3": { "name": "variable.other.jsdoc" } } }, { "name": "storage.type.class.jsdoc", "match": "(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \\b", "captures": { "1": { "name": "punctuation.definition.block.tag.jsdoc" } } }, { "include": "#inline-tags" }, { "match": "((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\s+)", "captures": { "1": { "name": "storage.type.class.jsdoc" }, "2": { "name": "punctuation.definition.block.tag.jsdoc" } } }] }, "brackets": { "patterns": [{ "begin": "{", "end": "}|(?=\\*/)", "patterns": [{ "include": "#brackets" }] }, { "begin": "\\[", "end": "\\]|(?=\\*/)", "patterns": [{ "include": "#brackets" }] }] }, "inline-tags": { "patterns": [{ "name": "constant.other.description.jsdoc", "match": "(\\[)[^\\]]+(\\])(?={@(?:link|linkcode|linkplain|tutorial))", "captures": { "1": { "name": "punctuation.definition.bracket.square.begin.jsdoc" }, "2": { "name": "punctuation.definition.bracket.square.end.jsdoc" } } }, { "name": "entity.name.type.instance.jsdoc", "begin": "({)((@)(?:link(?:code|plain)?|tutorial))\\s*", "beginCaptures": { "1": { "name": "punctuation.definition.bracket.curly.begin.jsdoc" }, "2": { "name": "storage.type.class.jsdoc" }, "3": { "name": "punctuation.definition.inline.tag.jsdoc" } }, "end": "}|(?=\\*/)", "endCaptures": { "0": { "name": "punctuation.definition.bracket.curly.end.jsdoc" } }, "patterns": [{ "match": "\\G((?=https?://)(?:[^|}\\s*]|\\*[/])+)(\\|)?", "captures": { "1": { "name": "variable.other.link.underline.jsdoc" }, "2": { "name": "punctuation.separator.pipe.jsdoc" } } }, { "match": "\\G((?:[^{}@\\s|*]|\\*[^/])+)(\\|)?", "captures": { "1": { "name": "variable.other.description.jsdoc" }, "2": { "name": "punctuation.separator.pipe.jsdoc" } } }] }] }, "jsdoctype": { "patterns": [{ "contentName": "entity.name.type.instance.jsdoc", "begin": "\\G({)", "beginCaptures": { "0": { "name": "entity.name.type.instance.jsdoc" }, "1": { "name": "punctuation.definition.bracket.curly.begin.jsdoc" } }, "end": "((}))\\s*|(?=\\*/)", "endCaptures": { "1": { "name": "entity.name.type.instance.jsdoc" }, "2": { "name": "punctuation.definition.bracket.curly.end.jsdoc" } }, "patterns": [{ "include": "#brackets" }] }] }, "jsx": { "patterns": [{ "include": "#jsx-tag-without-attributes-in-expression" }, { "include": "#jsx-tag-in-expression" }] }, "jsx-tag-without-attributes-in-expression": { "begin": "(?<!\\+\\+|--)(?<=[({\\[,?=>:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s*(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))", "end": "(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))", "patterns": [{ "include": "#jsx-tag-without-attributes" }] }, "jsx-tag-without-attributes": { "name": "meta.tag.without-attributes.js", "begin": "(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>)", "end": "(</)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>)", "beginCaptures": { "1": { "name": "punctuation.definition.tag.begin.js" }, "2": { "name": "entity.name.tag.namespace.js" }, "3": { "name": "punctuation.separator.namespace.js" }, "4": { "name": "entity.name.tag.js" }, "5": { "name": "support.class.component.js" }, "6": { "name": "punctuation.definition.tag.end.js" } }, "endCaptures": { "1": { "name": "punctuation.definition.tag.begin.js" }, "2": { "name": "entity.name.tag.namespace.js" }, "3": { "name": "punctuation.separator.namespace.js" }, "4": { "name": "entity.name.tag.js" }, "5": { "name": "support.class.component.js" }, "6": { "name": "punctuation.definition.tag.end.js" } }, "contentName": "meta.jsx.children.js", "patterns": [{ "include": "#jsx-children" }] }, "jsx-tag-in-expression": { "begin": "(?x)\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+))(?!\\?)|\\/?>))", "end": "(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))", "patterns": [{ "include": "#jsx-tag" }] }, "jsx-tag": { "name": "meta.tag.js", "begin": "(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))", "end": "(/>)|(?:(</)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))", "endCaptures": { "1": { "name": "punctuation.definition.tag.end.js" }, "2": { "name": "punctuation.definition.tag.begin.js" }, "3": { "name": "entity.name.tag.namespace.js" }, "4": { "name": "punctuation.separator.namespace.js" }, "5": { "name": "entity.name.tag.js" }, "6": { "name": "support.class.component.js" }, "7": { "name": "punctuation.definition.tag.end.js" } }, "patterns": [{ "begin": "(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>)", "beginCaptures": { "1": { "name": "punctuation.definition.tag.begin.js" }, "2": { "name": "entity.name.tag.namespace.js" }, "3": { "name": "punctuation.separator.namespace.js" }, "4": { "name": "entity.name.tag.js" }, "5": { "name": "support.class.component.js" } }, "end": "(?=[/]?>)", "patterns": [{ "include": "#comment" }, { "include": "#type-arguments" }, { "include": "#jsx-tag-attributes" }] }, { "begin": "(>)", "beginCaptures": { "1": { "name": "punctuation.definition.tag.end.js" } }, "end": "(?=</)", "contentName": "meta.jsx.children.js", "patterns": [{ "include": "#jsx-children" }] }] }, "jsx-children": { "patterns": [{ "include": "#jsx-tag-without-attributes" }, { "include": "#jsx-tag" }, { "include": "#jsx-evaluated-code" }, { "include": "#jsx-entities" }] }, "jsx-evaluated-code": { "contentName": "meta.embedded.expression.js", "begin": "\\{", "end": "\\}", "beginCaptures": { "0": { "name": "punctuation.section.embedded.begin.js" } }, "endCaptures": { "0": { "name": "punctuation.section.embedded.end.js" } }, "patterns": [{ "include": "#expression" }] }, "jsx-entities": { "patterns": [{ "name": "constant.character.entity.js", "match": "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)", "captures": { "1": { "name": "punctuation.definition.entity.js" }, "3": { "name": "punctuation.definition.entity.js" } } }] }, "jsx-tag-attributes": { "name": "meta.tag.attributes.js", "begin": "\\s+", "end": "(?=[/]?>)", "patterns": [{ "include": "#comment" }, { "include": "#jsx-tag-attribute-name" }, { "include": "#jsx-tag-attribute-assignment" }, { "include": "#jsx-string-double-quoted" }, { "include": "#jsx-string-single-quoted" }, { "include": "#jsx-evaluated-code" }, { "include": "#jsx-tag-attributes-illegal" }] }, "jsx-tag-attribute-name": { "match": "(?x)\n  \\s*\n  (?:([_$[:alpha:]][-_$[:alnum:].]*)(:))?\n  ([_$[:alpha:]][-_$[:alnum:]]*)\n  (?=\\s|=|/?>|/\\*|//)", "captures": { "1": { "name": "entity.other.attribute-name.namespace.js" }, "2": { "name": "punctuation.separator.namespace.js" }, "3": { "name": "entity.other.attribute-name.js" } } }, "jsx-tag-attribute-assignment": { "name": "keyword.operator.assignment.js", "match": `=(?=\\s*(?:'|"|{|/\\*|//|\\n))` }, "jsx-string-double-quoted": { "name": "string.quoted.double.js", "begin": '"', "end": '"', "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.js" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.js" } }, "patterns": [{ "include": "#jsx-entities" }] }, "jsx-string-single-quoted": { "name": "string.quoted.single.js", "begin": "'", "end": "'", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.js" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.js" } }, "patterns": [{ "include": "#jsx-entities" }] }, "jsx-tag-attributes-illegal": { "name": "invalid.illegal.attribute.js", "match": "\\S+" } }, "displayName": "JavaScript", "aliases": ["js"] });
var javascript = [
  lang
];




/***/ }),

/***/ 71858:
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ less)
/* harmony export */ });
const lang = Object.freeze({ "information_for_contributors": ["This file has been converted from https://github.com/radium-v/Better-Less/blob/master/Syntaxes/Better%20Less.tmLanguage", "If you want to provide a fix or improvement, please create a pull request against the original repository.", "Once accepted there, we are happy to receive an update request."], "version": "https://github.com/radium-v/Better-Less/commit/05de79f600227201e35f07a49f07acce80e49dbf", "name": "less", "scopeName": "source.css.less", "patterns": [{ "include": "#comment-block" }, { "include": "#less-namespace-accessors" }, { "include": "#less-extend" }, { "include": "#at-rules" }, { "include": "#less-variable-assignment" }, { "include": "#property-list" }, { "include": "#selector" }], "repository": { "angle-type": { "captures": { "1": { "name": "keyword.other.unit.less" } }, "match": "(?i:[-+]?(?:(?:\\d*\\.\\d+(?:[eE](?:[-+]?\\d+))*)|(?:[-+]?\\d+))(deg|grad|rad|turn))\\b", "name": "constant.numeric.less" }, "at-charset": { "begin": "\\s*((@)charset\\b)\\s*", "captures": { "1": { "name": "keyword.control.at-rule.charset.less" }, "2": { "name": "punctuation.definition.keyword.less" } }, "end": "\\s*((?=;|$))", "name": "meta.at-rule.charset.less", "patterns": [{ "include": "#literal-string" }] }, "at-counter-style": { "begin": "\\s*((@)counter-style\\b)\\s+(?:(?i:\\b(decimal|none)\\b)|(-?(?:[[_a-zA-Z][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*))\\s*(?=\\{|$)", "captures": { "1": { "name": "keyword.control.at-rule.counter-style.less" }, "2": { "name": "punctuation.definition.keyword.less" }, "3": { "name": "invalid.illegal.counter-style-name.less" }, "4": { "name": "entity.other.counter-style-name.css" } }, "end": "\\s*(\\})", "endCaptures": { "1": { "name": "punctuation.definition.block.begin.less" } }, "name": "meta.at-rule.counter-style.less", "patterns": [{ "include": "#comment-block" }, { "include": "#rule-list" }] }, "at-custom-media": { "begin": "(?=\\s*@custom-media\\b)", "end": "\\s*(?=;)", "name": "meta.at-rule.custom-media.less", "patterns": [{ "captures": { "0": { "name": "punctuation.section.property-list.less" } }, "match": "\\s*;" }, { "captures": { "1": { "name": "keyword.control.at-rule.custom-media.less" }, "2": { "name": "punctuation.definition.keyword.less" }, "3": { "name": "support.constant.custom-media.less" } }, "match": "\\s*((@)custom-media)(?=.*?)" }, { "include": "#media-query-list" }] }, "at-font-face": { "begin": "\\s*((@)font-face)\\s*(?=\\{|$)", "captures": { "1": { "name": "keyword.control.at-rule.font-face.less" }, "2": { "name": "punctuation.definition.keyword.less" } }, "end": "\\s*(\\})", "endCaptures": { "1": { "name": "punctuation.definition.block.end.less" } }, "name": "meta.at-rule.font-face.less", "patterns": [{ "include": "#comment-block" }, { "include": "#rule-list" }] }, "at-import": { "begin": "\\s*((@)import\\b)\\s*", "beginCaptures": { "1": { "name": "keyword.control.at-rule.import.less" }, "2": { "name": "punctuation.definition.keyword.less" } }, "end": "\\;", "endCaptures": { "0": { "name": "punctuation.terminator.rule.less" } }, "name": "meta.at-rule.import.less", "patterns": [{ "include": "#url-function" }, { "include": "#less-variables" }, { "begin": `(?<=(["'])|(["']\\)))\\s*`, "end": "\\s*(?=\\;)", "patterns": [{ "include": "#media-query" }] }, { "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.group.less", "patterns": [{ "match": "reference|inline|less|css|once|multiple|optional", "name": "constant.language.import-directive.less" }, { "include": "#comma-delimiter" }] }, { "include": "#literal-string" }] }, "at-keyframes": { "begin": "\\s*((@)(-webkit-|-moz-|-o-)?keyframes)(?=.*?\\{)", "beginCaptures": { "1": { "name": "keyword.control.at-rule.keyframe.less" }, "2": { "name": "punctuation.definition.keyword.less" }, "3": { "name": "support.type.property-vendor.less" }, "4": { "name": "support.constant.keyframe.less" } }, "end": "\\s*(\\})", "endCaptures": { "1": { "name": "punctuation.definition.block.end.less" } }, "patterns": [{ "begin": "\\s*(\\{)", "beginCaptures": { "1": { "name": "punctuation.definition.block.begin.less" } }, "end": "(?=\\})", "patterns": [{ "captures": { "1": { "name": "keyword.other.keyframe-selector.less" }, "2": { "name": "constant.numeric.less" }, "3": { "name": "keyword.other.unit.less" } }, "match": "\\s*(?:(from|to)|((?:\\.[0-9]+|[0-9]+(?:\\.[0-9]*)?)(%)))\\s*,?\\s*" }, { "include": "$self" }] }, { "begin": "\\s*(?=[^{;])", "end": "\\s*(?=\\{)", "name": "meta.at-rule.keyframe.less", "patterns": [{ "include": "#keyframe-name" }] }] }, "at-media": { "begin": "(?=\\s*@media\\b)", "end": "\\s*(\\})", "endCaptures": { "1": { "name": "punctuation.definition.block.end.less" } }, "patterns": [{ "begin": "\\s*((@)media)", "beginCaptures": { "1": { "name": "keyword.control.at-rule.media.less" }, "2": { "name": "punctuation.definition.keyword.less" }, "3": { "name": "support.constant.media.less" } }, "end": "\\s*(?=\\{)", "name": "meta.at-rule.media.less", "patterns": [{ "include": "#media-query-list" }] }, { "begin": "\\s*(\\{)", "beginCaptures": { "1": { "name": "punctuation.definition.block.begin.less" } }, "end": "(?=\\})", "patterns": [{ "include": "#rule-list-body" }, { "include": "$self" }] }] }, "at-namespace": { "begin": "\\s*((@)namespace)\\s+", "beginCaptures": { "1": { "name": "keyword.control.at-rule.namespace.less" }, "2": { "name": "punctuation.definition.keyword.less" } }, "end": "\\;", "endCaptures": { "0": { "name": "punctuation.terminator.rule.less" } }, "name": "meta.at-rule.namespace.less", "patterns": [{ "include": "#url-function" }, { "include": "#literal-string" }, { "match": "(-?(?:[[_a-zA-Z][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)", "name": "entity.name.constant.namespace-prefix.less" }] }, "at-page": { "captures": { "1": { "name": "keyword.control.at-rule.page.less" }, "2": { "name": "punctuation.definition.keyword.less" }, "3": { "name": "punctuation.definition.entity.less" }, "4": { "name": "entity.other.attribute-name.pseudo-class.less" } }, "match": "\\s*((@)page)\\s*(?:(:)(first|left|right))?\\s*(?=\\{|$)", "name": "meta.at-rule.page.less", "patterns": [{ "include": "#comment-block" }, { "include": "#rule-list" }] }, "at-rules": { "patterns": [{ "include": "#at-charset" }, { "include": "#at-counter-style" }, { "include": "#at-custom-media" }, { "include": "#at-font-face" }, { "include": "#at-media" }, { "include": "#at-import" }, { "include": "#at-keyframes" }, { "include": "#at-namespace" }, { "include": "#at-page" }, { "include": "#at-supports" }, { "include": "#at-viewport" }] }, "at-supports": { "begin": "(?=\\s*@supports\\b)", "end": "(?=\\s*)(\\})", "endCaptures": { "1": { "name": "punctuation.definition.block.end.less" } }, "patterns": [{ "begin": "\\s*((@)supports)", "beginCaptures": { "1": { "name": "keyword.control.at-rule.supports.less" }, "2": { "name": "punctuation.definition.keyword.less" }, "3": { "name": "support.constant.supports.less" } }, "end": "\\s*(?=\\{)", "name": "meta.at-rule.supports.less", "patterns": [{ "include": "#at-supports-operators" }, { "include": "#at-supports-parens" }] }, { "begin": "\\s*(\\{)", "beginCaptures": { "1": { "name": "punctuation.section.property-list.begin.less" } }, "end": "(?=\\})", "patterns": [{ "include": "#rule-list-body" }, { "include": "$self" }] }] }, "at-supports-operators": { "match": "\\b(?:and|or|not)\\b", "name": "keyword.operator.logic.less" }, "at-supports-parens": { "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.group.less", "patterns": [{ "include": "#at-supports-operators" }, { "include": "#at-supports-parens" }, { "include": "#rule-list-body" }] }, "at-viewport": { "begin": "((@(-ms-)?)viewport)", "beginCaptures": { "1": { "name": "keyword.control.at-rule.viewport.less" }, "2": { "name": "punctuation.definition.keyword.less" }, "3": { "name": "support.type.vendor-prefix.less" } }, "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.block.end.less" } }, "name": "meta.at-rule.viewport.less", "patterns": [{ "begin": "\\{", "captures": { "0": { "name": "punctuation.definition.block.begin.less" } }, "end": "(?=\\})", "name": "meta.block.less", "patterns": [{ "include": "#rule-list-body" }] }] }, "attr-function": { "begin": "\\b(attr)(?=\\()", "beginCaptures": { "1": { "name": "support.function.filter.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#qualified-name" }, { "include": "#literal-string" }, { "begin": "(-?(?:[[_a-zA-Z][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)", "end": "(?=\\))", "name": "entity.other.attribute-name.less", "patterns": [{ "match": "(?x)\\b((?i:em|ex|ch|rem)|(?i:vw|vh|vmin|vmax)|(?i:cm|mm|q|in|pt|pc|px|fr)|(?i:deg|grad|rad|turn)|(?i:s|ms)|(?i:Hz|kHz)|(?i:dpi|dpcm|dppx))\\b", "name": "keyword.other.unit.less" }, { "include": "#comma-delimiter" }, { "include": "#property-value-constants" }, { "include": "#numeric-values" }] }, { "include": "#color-values" }] }] }, "builtin-functions": { "patterns": [{ "include": "#attr-function" }, { "include": "#calc-function" }, { "include": "#color-functions" }, { "include": "#counter-functions" }, { "include": "#cross-fade-function" }, { "include": "#cubic-bezier-function" }, { "include": "#filter-function" }, { "include": "#format-function" }, { "include": "#gradient-functions" }, { "include": "#grid-repeat-function" }, { "include": "#image-function" }, { "include": "#less-functions" }, { "include": "#local-function" }, { "include": "#minmax-function" }, { "include": "#regexp-function" }, { "include": "#shape-functions" }, { "include": "#steps-function" }, { "include": "#symbols-function" }, { "include": "#transform-functions" }, { "include": "#url-function" }, { "include": "#var-function" }] }, "calc-function": { "begin": "\\b(calc)(?=\\()", "beginCaptures": { "1": { "name": "support.function.calc.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#less-strings" }, { "include": "#var-function" }, { "include": "#calc-function" }, { "include": "#attr-function" }, { "include": "#less-math" }] }] }, "color-adjuster-operators": { "match": "[\\-\\+*](?=\\s+)", "name": "keyword.operator.less" }, "color-functions": { "patterns": [{ "begin": "\\b(rgba?)(?=\\()", "beginCaptures": { "1": { "name": "support.function.color.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#less-strings" }, { "include": "#less-variables" }, { "include": "#comma-delimiter" }, { "include": "#percentage-type" }, { "include": "#number-type" }] }] }, { "begin": "\\b(hs(l|v)a?|hwb)(?=\\()", "beginCaptures": { "1": { "name": "support.function.color.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#less-strings" }, { "include": "#less-variables" }, { "include": "#comma-delimiter" }, { "include": "#angle-type" }, { "include": "#percentage-type" }, { "include": "#number-type" }] }] }, { "include": "#less-color-functions" }] }, "color-values": { "patterns": [{ "include": "#color-functions" }, { "include": "#less-functions" }, { "include": "#less-variables" }, { "match": "\\b(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)\\b", "name": "support.constant.color.w3c-standard-color-name.less" }, { "match": "\\b(aliceblue|antiquewhite|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|magenta|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|rebeccapurple|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato|turquoise|violet|wheat|whitesmoke|yellowgreen)\\b", "name": "support.constant.color.w3c-extended-color-keywords.less" }, { "match": "\\b((?i)currentColor|transparent)\\b", "name": "support.constant.color.w3c-special-color-keyword.less" }, { "captures": { "1": { "name": "punctuation.definition.constant.less" } }, "match": "(#)(\\h{3}|\\h{4}|\\h{6}|\\h{8})\\b", "name": "constant.other.color.rgb-value.less" }] }, "comma-delimiter": { "captures": { "1": { "name": "punctuation.separator.less" } }, "match": "\\s*(,)\\s*" }, "comment-block": { "patterns": [{ "begin": "/\\*", "captures": { "0": { "name": "punctuation.definition.comment.less" } }, "end": "\\*/", "name": "comment.block.less" }, { "include": "#comment-line" }] }, "comment-line": { "captures": { "1": { "name": "punctuation.definition.comment.less" } }, "match": "(//).*$\\n?", "name": "comment.line.double-slash.less" }, "counter-functions": { "patterns": [{ "begin": "\\b(counter)(?=\\()", "beginCaptures": { "1": { "name": "support.function.filter.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#less-strings" }, { "include": "#less-variables" }, { "match": "(?:--(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))+|-?(?:[[_a-zA-Z][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)", "name": "entity.other.counter-name.less" }, { "begin": "(?=,)", "end": "(?=\\))", "patterns": [{ "include": "#comma-delimiter" }, { "match": "\\b((?xi:arabic-indic|armenian|bengali|cambodian|circle|cjk-decimal|cjk-earthly-branch|cjk-heavenly-stem|decimal-leading-zero|decimal|devanagari|disclosure-closed|disclosure-open|disc|ethiopic-numeric|georgian|gujarati|gurmukhi|hebrew|hiragana-iroha|hiragana|japanese-formal|japanese-informal|kannada|katakana-iroha|katakana|khmer|korean-hangul-formal|korean-hanja-formal|korean-hanja-informal|lao|lower-alpha|lower-armenian|lower-greek|lower-latin|lower-roman|malayalam|mongolian|myanmar|oriya|persian|simp-chinese-formal|simp-chinese-informal|square|tamil|telugu|thai|tibetan|trad-chinese-formal|trad-chinese-informal|upper-alpha|upper-armenian|upper-latin|upper-roman)|none)\\b", "name": "support.constant.property-value.counter-style.less" }] }] }] }, { "begin": "\\b(counters)(?=\\()", "beginCaptures": { "1": { "name": "support.function.filter.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "match": "(-?(?:[[_a-zA-Z][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)", "name": "entity.other.counter-name.less string.unquoted.less" }, { "begin": "(?=,)", "end": "(?=\\))", "patterns": [{ "include": "#less-strings" }, { "include": "#less-variables" }, { "include": "#literal-string" }, { "include": "#comma-delimiter" }, { "match": "\\b((?xi:arabic-indic|armenian|bengali|cambodian|circle|cjk-decimal|cjk-earthly-branch|cjk-heavenly-stem|decimal-leading-zero|decimal|devanagari|disclosure-closed|disclosure-open|disc|ethiopic-numeric|georgian|gujarati|gurmukhi|hebrew|hiragana-iroha|hiragana|japanese-formal|japanese-informal|kannada|katakana-iroha|katakana|khmer|korean-hangul-formal|korean-hanja-formal|korean-hanja-informal|lao|lower-alpha|lower-armenian|lower-greek|lower-latin|lower-roman|malayalam|mongolian|myanmar|oriya|persian|simp-chinese-formal|simp-chinese-informal|square|tamil|telugu|thai|tibetan|trad-chinese-formal|trad-chinese-informal|upper-alpha|upper-armenian|upper-latin|upper-roman)|none)\\b", "name": "support.constant.property-value.counter-style.less" }] }] }] }] }, "cross-fade-function": { "patterns": [{ "begin": "\\b(cross-fade)(?=\\()", "beginCaptures": { "1": { "name": "support.function.image.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#comma-delimiter" }, { "include": "#percentage-type" }, { "include": "#color-values" }, { "include": "#image-type" }, { "include": "#literal-string" }, { "include": "#unquoted-string" }] }] }] }, "cubic-bezier-function": { "begin": "\\b(cubic-bezier)(?=\\()", "beginCaptures": { "0": { "name": "support.function.timing.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#comma-delimiter" }, { "include": "#number-type" }] }] }, "custom-property-name": { "captures": { "1": { "name": "punctuation.definition.custom-property.less" }, "2": { "name": "support.type.custom-property.name.less" } }, "match": "\\s*(--)((?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))+)", "name": "support.type.custom-property.less" }, "dimensions": { "patterns": [{ "include": "#angle-type" }, { "include": "#frequency-type" }, { "include": "#length-type" }, { "include": "#resolution-type" }, { "include": "#time-type" }] }, "filter-function": { "begin": "\\b(filter)(?=\\()", "beginCaptures": { "1": { "name": "support.function.filter.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "name": "meta.group.less", "patterns": [{ "include": "#comma-delimiter" }, { "include": "#image-type" }, { "include": "#literal-string" }, { "include": "#filter-functions" }] }] }, "filter-functions": { "patterns": [{ "include": "#less-functions" }, { "begin": "\\b(blur)(?=\\()", "beginCaptures": { "1": { "name": "support.function.filter.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#length-type" }] }] }, { "begin": "\\b(brightness|contrast|grayscale|invert|opacity|saturate|sepia)(?=\\()", "beginCaptures": { "1": { "name": "support.function.filter.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#percentage-type" }, { "include": "#number-type" }, { "include": "#less-functions" }] }] }, { "begin": "\\b(drop-shadow)(?=\\()", "beginCaptures": { "1": { "name": "support.function.filter.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#length-type" }, { "include": "#color-values" }] }] }, { "begin": "\\b(hue-rotate)(?=\\()", "beginCaptures": { "1": { "name": "support.function.filter.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#angle-type" }] }] }] }, "format-function": { "patterns": [{ "begin": "\\b(format)(?=\\()", "beginCaptures": { "0": { "name": "support.function.format.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#literal-string" }] }] }] }, "frequency-type": { "captures": { "1": { "name": "keyword.other.unit.less" } }, "match": "(?i:[-+]?(?:(?:\\d*\\.\\d+(?:[eE](?:[-+]?\\d+))*)|(?:[-+]?\\d+))(Hz|kHz))\\b", "name": "constant.numeric.less" }, "gradient-functions": { "patterns": [{ "begin": "\\b((?:repeating-)?linear-gradient)(?=\\()", "beginCaptures": { "1": { "name": "support.function.gradient.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#less-variables" }, { "include": "#angle-type" }, { "include": "#color-values" }, { "include": "#percentage-type" }, { "include": "#length-type" }, { "include": "#comma-delimiter" }, { "match": "\\bto\\b", "name": "keyword.other.less" }, { "match": "\\b(top|right|bottom|left)\\b", "name": "support.constant.property-value.less" }] }] }, { "begin": "\\b((?:repeating-)?radial-gradient)(?=\\()", "beginCaptures": { "1": { "name": "support.function.gradient.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#less-variables" }, { "include": "#color-values" }, { "include": "#percentage-type" }, { "include": "#length-type" }, { "include": "#comma-delimiter" }, { "match": "\\b(at|circle|ellipse)\\b", "name": "keyword.other.less" }, { "match": "\\b(top|right|bottom|left|center|(farthest|closest)-(corner|side))\\b", "name": "support.constant.property-value.less" }] }] }] }, "grid-repeat-function": { "begin": "\\b(repeat)(?=\\()", "beginCaptures": { "1": { "name": "support.function.grid.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#comma-delimiter" }, { "include": "#var-function" }, { "include": "#length-type" }, { "include": "#percentage-type" }, { "include": "#minmax-function" }, { "include": "#integer-type" }, { "match": "\\b(auto-(fill|fit))\\b", "name": "support.keyword.repetitions.less" }, { "match": "\\b(((max|min)-content)|auto)\\b", "name": "support.constant.property-value.less" }] }] }, "image-function": { "begin": "\\b(image)(?=\\()", "beginCaptures": { "1": { "name": "support.function.image.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#image-type" }, { "include": "#literal-string" }, { "include": "#color-values" }, { "include": "#comma-delimiter" }, { "include": "#unquoted-string" }] }] }, "image-type": { "patterns": [{ "include": "#cross-fade-function" }, { "include": "#gradient-functions" }, { "include": "#image-function" }, { "include": "#url-function" }] }, "integer-type": { "match": "(?:[-+]?\\d+)", "name": "constant.numeric.less" }, "keyframe-name": { "begin": "\\s*(-?(?:[_a-z]|[^\\x{00}-\\x{7F}]|(?:(:?\\\\[0-9a-f]{1,6}(\\r\\n|[\\s\\t\\r\\n\\f])?)|\\\\[^\\r\\n\\f0-9a-f]))(?:[_a-z0-9-]|[^\\x{00}-\\x{7F}]|(?:(:?\\\\[0-9a-f]{1,6}(\\r\\n|[\\t\\r\\n\\f])?)|\\\\[^\\r\\n\\f0-9a-f]))*)?", "beginCaptures": { "1": { "name": "variable.other.constant.animation-name.less" } }, "end": "\\s*(?:(,)|(?=[{;]))", "endCaptures": { "1": { "name": "punctuation.definition.arbitrary-repetition.less" } } }, "length-type": { "captures": { "1": { "name": "keyword.other.unit.less" } }, "match": "0|(?i:[-+]?(?:(?:\\d*\\.\\d+(?:[eE](?:[-+]?\\d+))*)|(?:[-+]?\\d+))(em|ex|ch|rem|vw|vh|vmin|vmax|(c|m)?m|q|in|pt|pc|px|fr))\\b", "name": "constant.numeric.less" }, "less-boolean-function": { "begin": "\\b(boolean)(?=\\()", "beginCaptures": { "1": { "name": "support.function.boolean.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#less-logical-comparisons" }] }] }, "less-color-blend-functions": { "patterns": [{ "begin": "\\b(multiply|screen|overlay|(soft|hard)light|difference|exclusion|negation|average)(?=\\()", "beginCaptures": { "1": { "name": "support.function.color-blend.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#less-variables" }, { "include": "#comma-delimiter" }, { "include": "#color-values" }] }] }] }, "less-color-channel-functions": { "patterns": [{ "begin": "\\b(hue|saturation|lightness|hsv(hue|saturation|value)|red|green|blue|alpha|luma|luminance)(?=\\()", "beginCaptures": { "1": { "name": "support.function.color-definition.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#color-values" }] }] }] }, "less-color-definition-functions": { "patterns": [{ "begin": "\\b(argb)(?=\\()", "beginCaptures": { "1": { "name": "support.function.color-definition.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#less-variables" }, { "include": "#color-values" }] }] }] }, "less-color-functions": { "patterns": [{ "include": "#less-color-blend-functions" }, { "include": "#less-color-channel-functions" }, { "include": "#less-color-definition-functions" }, { "include": "#less-color-operation-functions" }] }, "less-color-operation-functions": { "patterns": [{ "begin": "\\b(fade|shade|tint)(?=\\()", "beginCaptures": { "1": { "name": "support.function.color-operation.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#color-values" }, { "include": "#comma-delimiter" }, { "include": "#percentage-type" }] }] }, { "begin": "\\b(spin)(?=\\()", "beginCaptures": { "1": { "name": "support.function.color-operation.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#color-values" }, { "include": "#comma-delimiter" }, { "include": "#number-type" }] }] }, { "begin": "\\b(((de)?saturate)|((light|dark)en)|(fade(in|out)))(?=\\()", "beginCaptures": { "1": { "name": "support.function.color-operation.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#color-values" }, { "include": "#comma-delimiter" }, { "include": "#percentage-type" }, { "match": "\\brelative\\b", "name": "constant.language.relative.less" }] }] }, { "begin": "\\b(contrast)(?=\\()", "beginCaptures": { "1": { "name": "support.function.color-operation.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#color-values" }, { "include": "#comma-delimiter" }, { "include": "#percentage-type" }] }] }, { "begin": "\\b(greyscale)(?=\\()", "beginCaptures": { "1": { "name": "support.function.color-operation.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#color-values" }] }] }, { "begin": "\\b(mix)(?=\\()", "beginCaptures": { "1": { "name": "support.function.color-operation.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#color-values" }, { "include": "#comma-delimiter" }, { "include": "#less-math" }, { "include": "#percentage-type" }] }] }] }, "less-extend": { "begin": "(:)(extend)(?=\\()", "beginCaptures": { "1": { "name": "punctuation.definition.entity.less" }, "2": { "name": "entity.other.attribute-name.pseudo-class.extend.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "match": "\\ball\\b", "name": "constant.language.all.less" }, { "include": "#selectors" }] }] }, "less-functions": { "patterns": [{ "include": "#less-boolean-function" }, { "include": "#less-color-functions" }, { "include": "#less-if-function" }, { "include": "#less-list-functions" }, { "include": "#less-math-functions" }, { "include": "#less-misc-functions" }, { "include": "#less-string-functions" }, { "include": "#less-type-functions" }] }, "less-if-function": { "begin": "\\b(if)(?=\\()", "beginCaptures": { "1": { "name": "support.function.if.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#less-mixin-guards" }, { "include": "#comma-delimiter" }, { "include": "#property-values" }] }] }, "less-list-functions": { "patterns": [{ "begin": "\\b(length)(?=\\()\\b", "beginCaptures": { "1": { "name": "support.function.length.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#property-values" }, { "include": "#comma-delimiter" }] }] }, { "begin": "\\b(extract)(?=\\()\\b", "beginCaptures": { "1": { "name": "support.function.extract.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#property-values" }, { "include": "#comma-delimiter" }, { "include": "#integer-type" }] }] }, { "begin": "\\b(range)(?=\\()\\b", "beginCaptures": { "1": { "name": "support.function.range.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#property-values" }, { "include": "#comma-delimiter" }, { "include": "#integer-type" }] }] }] }, "less-logical-comparisons": { "patterns": [{ "captures": { "1": { "name": "keyword.operator.logical.less" } }, "match": "\\s*(=|((<|>)=?))\\s*" }, { "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.group.less", "patterns": [{ "include": "#less-logical-comparisons" }] }, { "match": "\\btrue|false\\b", "name": "constant.language.less" }, { "match": ",", "name": "punctuation.separator.less" }, { "include": "#property-values" }, { "include": "#selectors" }, { "include": "#unquoted-string" }] }, "less-math": { "patterns": [{ "match": "[-\\+\\*\\/]", "name": "keyword.operator.arithmetic.less" }, { "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.group.less", "patterns": [{ "include": "#less-math" }] }, { "include": "#numeric-values" }, { "include": "#less-variables" }] }, "less-math-functions": { "patterns": [{ "begin": "\\b(ceil|floor|percentage|round|sqrt|abs|a?(sin|cos|tan))(?=\\()", "beginCaptures": { "1": { "name": "support.function.math.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#less-variables" }, { "include": "#numeric-values" }] }] }, { "captures": { "2": { "name": "support.function.math.less" }, "3": { "name": "punctuation.definition.group.begin.less" }, "4": { "name": "punctuation.definition.group.end.less" } }, "match": "((pi)(\\()(\\)))", "name": "meta.function-call.less" }, { "begin": "\\b(pow|m(od|in|ax))(?=\\()", "beginCaptures": { "1": { "name": "support.function.math.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#less-variables" }, { "include": "#numeric-values" }, { "include": "#comma-delimiter" }] }] }] }, "less-misc-functions": { "patterns": [{ "begin": "\\b(color)(?=\\()", "beginCaptures": { "1": { "name": "support.function.color.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#literal-string" }] }] }, { "begin": "\\b(image-(size|width|height))(?=\\()", "beginCaptures": { "1": { "name": "support.function.image.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#literal-string" }, { "include": "#unquoted-string" }] }] }, { "begin": "\\b(convert|unit)(?=\\()", "beginCaptures": { "1": { "name": "support.function.convert.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#less-variables" }, { "include": "#dimensions" }, { "include": "#numeric-values" }, { "include": "#literal-string" }, { "include": "#comma-delimiter" }, { "match": "((c|m)?m|in|p(t|c|x)|m?s|g?rad|deg|turn|%|r?em|ex|ch)", "name": "keyword.other.unit.less" }] }] }, { "begin": "\\b(data-uri)(?=\\()", "beginCaptures": { "1": { "name": "support.function.data-uri.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#less-variables" }, { "include": "#literal-string" }, { "captures": { "1": { "name": "punctuation.separator.less" } }, "match": "\\s*(?:(,))" }] }] }, { "captures": { "2": { "name": "punctuation.definition.group.begin.less" }, "3": { "name": "punctuation.definition.group.end.less" } }, "match": "\\b(default(\\()(\\)))\\b", "name": "support.function.default.less" }, { "begin": "\\b(get-unit)(?=\\()", "beginCaptures": { "1": { "name": "support.function.get-unit.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#dimensions" }] }] }, { "begin": "\\b(svg-gradient)(?=\\()", "beginCaptures": { "1": { "name": "support.function.svg-gradient.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#angle-type" }, { "include": "#comma-delimiter" }, { "include": "#color-values" }, { "include": "#percentage-type" }, { "include": "#length-type" }, { "match": "\\bto\\b", "name": "keyword.other.less" }, { "match": "\\b(top|right|bottom|left|center)\\b", "name": "support.constant.property-value.less" }, { "match": "\\b(at|circle|ellipse)\\b", "name": "keyword.other.less" }] }] }] }, "less-mixin-guards": { "patterns": [{ "begin": "\\s*(and|not|or)?\\s*(?=\\()", "beginCaptures": { "1": { "name": "keyword.operator.logical.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "name": "meta.group.less", "patterns": [{ "include": "#less-variable-comparison" }, { "captures": { "1": { "name": "meta.group.less" }, "2": { "name": "punctuation.definition.group.begin.less" }, "3": { "name": "punctuation.definition.group.end.less" } }, "match": "default((\\()(\\)))", "name": "support.function.default.less" }, { "include": "#property-values" }, { "include": "#less-logical-comparisons" }, { "include": "$self" }] }] }] }, "less-namespace-accessors": { "patterns": [{ "begin": "(?=\\s*when\\b)", "end": "\\s*(?:(,)|(?=[{;]))", "endCaptures": { "1": { "name": "punctuation.definition.block.end.less" } }, "name": "meta.conditional.guarded-namespace.less", "patterns": [{ "captures": { "1": { "name": "keyword.control.conditional.less" }, "2": { "name": "punctuation.definition.keyword.less" } }, "match": "\\s*(when)(?=.*?)" }, { "include": "#less-mixin-guards" }, { "include": "#comma-delimiter" }, { "begin": "\\s*(\\{)", "beginCaptures": { "1": { "name": "punctuation.section.property-list.begin.less" } }, "end": "(?=\\})", "name": "meta.block.less", "patterns": [{ "include": "#rule-list-body" }] }, { "include": "#selectors" }] }, { "begin": "(\\()", "beginCaptures": { "1": { "name": "punctuation.definition.group.begin.less" } }, "end": "(\\))", "endCaptures": { "1": { "name": "punctuation.definition.group.end.less" }, "2": { "name": "punctuation.terminator.rule.less" } }, "name": "meta.group.less", "patterns": [{ "include": "#less-variable-assignment" }, { "include": "#comma-delimiter" }, { "captures": { "1": { "name": "punctuation.terminator.rule.less" } }, "match": "\\s*(;)|(?=[})])" }, { "include": "#property-values" }, { "include": "#rule-list-body" }] }] }, "less-number-units": { "patterns": [{ "match": "\\b((c|m)?m|in|p(t|c)|m?s|g?rad|deg|turn)\\b", "name": "keyword.other.unit.less" }, { "match": "\\b(r?em|ex|ch|vw|vh|vmin|vmax|cm|mm|q|in|pt|pc|px|fr|s|ms|Hz|kHz|dpi|dpcm|dppx|deg|grad|rad|turn)\\b" }] }, "less-string-functions": { "patterns": [{ "begin": "\\b(e(scape)?)(?=\\()\\b", "beginCaptures": { "1": { "name": "support.function.escape.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#less-variables" }, { "include": "#comma-delimiter" }, { "include": "#literal-string" }, { "include": "#unquoted-string" }] }] }, { "begin": "\\s*(%)(?=\\()\\s*", "beginCaptures": { "1": { "name": "support.function.format.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#less-variables" }, { "include": "#comma-delimiter" }, { "include": "#literal-string" }, { "include": "#property-values" }] }] }, { "begin": "\\b(replace)(?=\\()\\b", "beginCaptures": { "1": { "name": "support.function.replace.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#less-variables" }, { "include": "#comma-delimiter" }, { "include": "#literal-string" }, { "include": "#property-values" }] }] }] }, "less-strings": { "patterns": [{ "begin": `(~)('|")`, "beginCaptures": { "1": { "name": "constant.character.escape.less" }, "2": { "name": "punctuation.definition.string.begin.less" } }, "contentName": "markup.raw.inline.less", "end": `('|")|(\\n)`, "endCaptures": { "1": { "name": "punctuation.definition.string.end.less" }, "2": { "name": "invalid.illegal.newline.less" } }, "name": "string.quoted.other.less", "patterns": [{ "include": "#string-content" }] }] }, "less-type-functions": { "patterns": [{ "begin": "\\b(is(number|string|color|keyword|url|pixel|em|percentage|ruleset))(?=\\()", "beginCaptures": { "1": { "name": "support.function.type.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#property-values" }] }] }, { "begin": "\\b(isunit)(?=\\()", "beginCaptures": { "1": { "name": "support.function.type.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#property-values" }, { "include": "#comma-delimiter" }, { "match": "(?x)\\b((?i:em|ex|ch|rem)|(?i:vw|vh|vmin|vmax)|(?i:cm|mm|q|in|pt|pc|px|fr)|(?i:deg|grad|rad|turn)|(?i:s|ms)|(?i:Hz|kHz)|(?i:dpi|dpcm|dppx))\\b", "name": "keyword.other.unit.less" }] }] }, { "begin": "\\b(isdefined)(?=\\()", "beginCaptures": { "1": { "name": "support.function.type.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#less-variables" }] }] }] }, "less-variable-assignment": { "patterns": [{ "begin": "(@)(-?(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)", "beginCaptures": { "0": { "name": "variable.other.readwrite.less" }, "1": { "name": "punctuation.definition.variable.less" }, "2": { "name": "support.other.variable.less" } }, "end": "\\s*(;|(\\.{3})|(?=\\)))", "endCaptures": { "1": { "name": "punctuation.terminator.rule.less" }, "2": { "name": "keyword.operator.spread.less" } }, "name": "meta.property-value.less", "patterns": [{ "captures": { "1": { "name": "punctuation.separator.key-value.less" }, "4": { "name": "meta.property-value.less" } }, "match": "(((\\+_?)?):)([\\s\\t]*)" }, { "include": "#property-values" }, { "include": "#comma-delimiter" }, { "include": "#property-list" }, { "include": "#unquoted-string" }] }] }, "less-variable-comparison": { "patterns": [{ "begin": "(@{1,2})([-]?([_a-z]|[^\\x{00}-\\x{7F}]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)", "beginCaptures": { "0": { "name": "variable.other.readwrite.less" }, "1": { "name": "punctuation.definition.variable.less" }, "2": { "name": "support.other.variable.less" } }, "end": "\\s*(?=\\))", "endCaptures": { "1": { "name": "punctuation.terminator.rule.less" } }, "patterns": [{ "captures": { "1": { "name": "keyword.operator.logical.less" } }, "match": "\\s*(=|((<|>)=?))\\s*" }, { "match": "\\btrue\\b", "name": "constant.language.less" }, { "include": "#property-values" }, { "include": "#selectors" }, { "include": "#unquoted-string" }, { "match": ",", "name": "punctuation.separator.less" }] }] }, "less-variable-interpolation": { "captures": { "1": { "name": "punctuation.definition.variable.less" }, "2": { "name": "punctuation.definition.expression.less" }, "3": { "name": "support.other.variable.less" }, "4": { "name": "punctuation.definition.expression.less" } }, "match": "(@)(\\{)([-\\w]+)(\\})", "name": "variable.other.readwrite.less" }, "less-variables": { "captures": { "1": { "name": "punctuation.definition.variable.less" }, "2": { "name": "support.other.variable.less" } }, "match": "\\s*(@@?)([-\\w]+)", "name": "variable.other.readwrite.less" }, "literal-string": { "patterns": [{ "begin": "'", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.less" } }, "end": "(')|(\\n)", "endCaptures": { "1": { "name": "punctuation.definition.string.end.less" }, "2": { "name": "invalid.illegal.newline.less" } }, "name": "string.quoted.single.less", "patterns": [{ "include": "#string-content" }] }, { "begin": '"', "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.less" } }, "end": '(")|(\\n)', "endCaptures": { "1": { "name": "punctuation.definition.string.end.less" }, "2": { "name": "invalid.illegal.newline.less" } }, "name": "string.quoted.double.less", "patterns": [{ "include": "#string-content" }] }, { "include": "#less-strings" }] }, "local-function": { "begin": "\\b(local)(?=\\()", "beginCaptures": { "0": { "name": "support.function.font-face.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#unquoted-string" }] }] }, "media-query": { "begin": "\\s*(only|not)?\\s*(all|aural|braille|embossed|handheld|print|projection|screen|tty|tv)?", "beginCaptures": { "1": { "name": "keyword.operator.logic.media.less" }, "2": { "name": "support.constant.media.less" } }, "end": "\\s*(?:(,)|(?=[{;]))", "endCaptures": { "1": { "name": "punctuation.definition.arbitrary-repetition.less" } }, "patterns": [{ "include": "#less-variables" }, { "include": "#custom-property-name" }, { "begin": "\\s*(and)?\\s*(\\()\\s*", "beginCaptures": { "1": { "name": "keyword.operator.logic.media.less" }, "2": { "name": "punctuation.definition.group.begin.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.group.less", "patterns": [{ "begin": "((-webkit-|-o-)?((min|max)-)?(-moz-)?(((device-)?(height|width|aspect-ratio|pixel-ratio))|(color(-index)?)|monochrome|resolution))|grid|scan|orientation\\s*(?=[:)])", "beginCaptures": { "0": { "name": "support.type.property-name.media.less" }, "2": { "name": "support.type.vendor-prefix.less" }, "5": { "name": "support.type.vendor-prefix.less" } }, "end": "(((\\+_?)?):)|(?=\\))", "endCaptures": { "1": { "name": "punctuation.separator.key-value.less" } } }, { "match": "\\b(portrait|landscape|progressive|interlace)", "name": "support.constant.property-value.less" }, { "captures": { "1": { "name": "constant.numeric.less" }, "2": { "name": "keyword.operator.arithmetic.less" }, "3": { "name": "constant.numeric.less" } }, "match": "\\s*(\\d+)(/)(\\d+)" }, { "include": "#less-math" }] }] }, "media-query-list": { "begin": "\\s*(?=[^{;])", "end": "\\s*(?=[{;])", "patterns": [{ "include": "#media-query" }] }, "minmax-function": { "begin": "\\b(minmax)(?=\\()", "beginCaptures": { "1": { "name": "support.function.grid.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#less-variables" }, { "include": "#length-type" }, { "include": "#comma-delimiter" }, { "match": "\\b(max-content|min-content)\\b", "name": "support.constant.property-value.less" }] }] }, "number-type": { "match": "[-+]?(?:(?:\\d*\\.\\d+(?:[eE](?:[-+]?\\d+))*)|(?:[-+]?\\d+))", "name": "constant.numeric.less" }, "numeric-values": { "patterns": [{ "include": "#dimensions" }, { "include": "#percentage-type" }, { "include": "#number-type" }] }, "percentage-type": { "captures": { "1": { "name": "keyword.other.unit.less" } }, "match": "[-+]?(?:(?:\\d*\\.\\d+(?:[eE](?:[-+]?\\d+))*)|(?:[-+]?\\d+))(%)", "name": "constant.numeric.less" }, "property-list": { "patterns": [{ "begin": "(?=(?=[^;]*)\\{)", "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.block.end.less" } }, "patterns": [{ "include": "#rule-list" }] }] }, "property-value-constants": { "patterns": [{ "match": "(?x)\\b(\n    absolute|active|add\n  |all(-(petite|small)-caps|-scroll)?\n  |alpha(betic)?\n  |alternate(-reverse)?\n  |always|annotation|antialiased|at\n  |auto(hiding-scrollbar)?\n  |avoid(-column|-page|-region)?\n  |background(-color|-image|-position|-size)?\n  |backwards|balance|baseline|below|bevel|bicubic|bidi-override|blink\n  |block(-line-height)?\n  |blur\n  |bold(er)?\n  |border(-bottom|-left|-right|-top)?-(color|radius|width|style)\n  |border-(bottom|top)-(left|right)-radius\n  |border-image(-outset|-repeat|-slice|-source|-width)?\n  |border(-bottom|-left|-right|-top|-collapse|-spacing|-box)?\n  |both|bottom\n  |box(-shadow)?\n  |break-(all|word)\n  |brightness\n  |butt(on)?\n  |capitalize\n  |cent(er|ral)\n  |char(acter-variant)?\n  |cjk-ideographic|clip|clone|close-quote\n  |closest-(corner|side)\n  |col-resize|collapse\n  |color(-stop|-burn|-dodge)?\n  |column((-count|-gap|-reverse|-rule(-color|-width)?|-width)|s)?\n  |common-ligatures|condensed|consider-shifts|contain\n  |content(-box|s)?\n  |contextual|contrast|cover\n  |crisp(-e|E)dges\n  |crop\n  |cross(hair)?\n  |da(rken|shed)\n  |default|dense|diagonal-fractions|difference|disabled\n  |discretionary-ligatures|disregard-shifts\n  |distribute(-all-lines|-letter|-space)?\n  |dotted|double|drop-shadow\n  |(nwse|nesw|ns|ew|sw|se|nw|ne|w|s|e|n)-resize\n  |ease(-in-out|-in|-out)?\n  |element|ellipsis|embed|end|EndColorStr|evenodd\n  |exclu(de(-ruby)?|sion)\n  |expanded\n  |(extra|semi|ultra)-(condensed|expanded)\n  |farthest-(corner|side)?\n  |fill(-box|-opacity)?\n  |filter|fixed|flat\n  |flex((-basis|-end|-grow|-shrink|-start)|box)?\n  |flip|flood-color\n  |font(-size(-adjust)?|-stretch|-weight)?\n  |forwards\n  |from(-image)?\n  |full-width|geometricPrecision|glyphs|gradient|grayscale\n  |grid(-height)?\n  |groove|hand|hanging|hard-light|height|help|hidden|hide\n  |historical-(forms|ligatures)\n  |horizontal(-tb)?\n  |hue\n  |ideograph(-alpha|-numeric|-parenthesis|-space|ic)\n  |inactive|include-ruby|infinite|inherit|initial\n  |inline(-block|-box|-flex(box)?|-line-height|-table)?\n  |inset|inside\n  |inter(-ideograph|-word|sect)\n  |invert|isolat(e|ion)|italic\n  |jis(04|78|83|90)\n  |justify(-all)?\n  |keep-all\n  |large[r]?\n  |last|layout|left|letter-spacing\n  |light(e[nr]|ing-color)\n  |line(-edge|-height|-through)?\n  |linear(-gradient|RGB)?\n  |lining-nums|list-item|local|loose|lowercase|lr-tb|ltr\n  |lumin(osity|ance)|manual\n  |manipulation\n  |margin(-bottom|-box|-left|-right|-top)?\n  |marker(-offset|s)?\n  |mathematical\n  |max-(content|height|lines|size|width)\n  |medium|middle\n  |min-(content|height|width)\n  |miter|mixed|move|multiply|newspaper\n  |no-(change|clip|(close|open)-quote|(common|discretionary|historical)-ligatures|contextual|drop|repeat)\n  |none|nonzero|normal|not-allowed|nowrap|oblique\n  |offset(-after|-before|-end|-start)?\n  |oldstyle-nums|opacity|open-quote\n  |optimize(Legibility|Precision|Quality|Speed)\n  |order|ordinal|ornaments\n  |outline(-color|-offset|-width)?\n  |outset|outside|over(line|-edge|lay)\n  |padding(-bottom|-box|-left|-right|-top|-box)?\n  |page|painted|paused\n  |pan-(x|left|right|y|up|down)\n  |perspective-origin\n  |petite-caps|pixelated|pointer\n  |pinch-zoom\n  |pre(-line|-wrap)?\n  |preserve-3d\n  |progid:DXImageTransform.Microsoft.(Alpha|Blur|dropshadow|gradient|Shadow)\n  |progress\n  |proportional-(nums|width)\n  |radial-gradient|recto|region|relative\n  |repeat(-[xy])?\n  |repeating-(linear|radial)-gradient\n  |replaced|reset-size|reverse|ridge|right\n  |round\n  |row(-resize|-reverse)?\n  |rtl|ruby|running|saturat(e|ion)|screen\n  |scroll(-position|bar)?\n  |separate|sepia\n  |scale-down\n  |shape-(image-threshold|margin|outside)\n  |show\n  |sideways(-lr|-rl)?\n  |simplified\n  |size\n  |slashed-zero|slice\n  |small(-caps|er)?\n  |smooth|snap|solid|soft-light\n  |space(-around|-between)?\n  |span|sRGB\n  |stack(ed-fractions)?\n  |start(ColorStr)?\n  |static\n  |step-(end|start)\n  |sticky\n  |stop-(color|opacity)\n  |stretch|strict\n  |stroke(-box|-dash(array|offset)|-miterlimit|-opacity|-width)?\n  |style(set)?\n  |stylistic\n  |sub(grid|pixel-antialiased|tract)?\n  |super|swash\n  |table(-caption|-cell|(-column|-footer|-header|-row)-group|-column|-row)?\n  |tabular-nums|tb-rl\n  |text((-bottom|-(decoration|emphasis)-color|-indent|-(over|under)-edge|-shadow|-size(-adjust)?|-top)|field)?\n  |thi(ck|n)\n  |titling-ca(ps|se)\n  |to[p]?\n  |touch|traditional\n  |transform(-origin)?\n  |under(-edge|line)?\n  |unicase|unset|uppercase|upright\n  |use-(glyph-orientation|script)\n  |verso\n  |vertical(-align|-ideographic|-lr|-rl|-text)?\n  |view-box\n  |viewport-fill(-opacity)?\n  |visibility\n  |visible(Fill|Painted|Stroke)?\n  |wait|wavy|weight|whitespace|(device-)?width|word-spacing\n  |wrap(-reverse)?\n  |x{1,2}-(large|small)\n  |z-index|zero\n  |zoom(-in|-out)?\n  |((?xi:arabic-indic|armenian|bengali|cambodian|circle|cjk-decimal|cjk-earthly-branch|cjk-heavenly-stem|decimal-leading-zero|decimal|devanagari|disclosure-closed|disclosure-open|disc|ethiopic-numeric|georgian|gujarati|gurmukhi|hebrew|hiragana-iroha|hiragana|japanese-formal|japanese-informal|kannada|katakana-iroha|katakana|khmer|korean-hangul-formal|korean-hanja-formal|korean-hanja-informal|lao|lower-alpha|lower-armenian|lower-greek|lower-latin|lower-roman|malayalam|mongolian|myanmar|oriya|persian|simp-chinese-formal|simp-chinese-informal|square|tamil|telugu|thai|tibetan|trad-chinese-formal|trad-chinese-informal|upper-alpha|upper-armenian|upper-latin|upper-roman)))\\b", "name": "support.constant.property-value.less" }, { "match": "\\b(?i:sans-serif|serif|monospace|fantasy|cursive)\\b(?=\\s*[;,\\n}])", "name": "support.constant.font-name.less" }] }, "property-values": { "patterns": [{ "include": "#comment-block" }, { "include": "#vendor-prefix" }, { "include": "#builtin-functions" }, { "include": "#color-functions" }, { "include": "#less-math" }, { "include": "#less-functions" }, { "include": "#less-variables" }, { "include": "#unicode-range" }, { "include": "#numeric-values" }, { "include": "#color-values" }, { "include": "#property-value-constants" }, { "include": "#literal-string" }, { "captures": { "1": { "name": "punctuation.separator.less" } }, "match": "(\\!)\\s*important", "name": "keyword.other.important.less" }] }, "pseudo-classes": { "patterns": [{ "begin": "(:)(dir|lang)(?=\\()", "captures": { "1": { "name": "punctuation.definition.entity.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "entity.other.attribute-name.pseudo-class.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#unquoted-string" }] }] }, { "begin": "(:)(not)(?=\\()", "captures": { "1": { "name": "punctuation.definition.entity.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "entity.other.attribute-name.pseudo-class.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#selectors" }] }] }, { "begin": "(:)(nth(-last)?-(child|of-type))(?=\\()", "captures": { "1": { "name": "punctuation.definition.entity.less" }, "2": { "name": "entity.other.attribute-name.pseudo-class.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "name": "meta.group.less", "patterns": [{ "match": "\\b(even|odd)\\b", "name": "keyword.other.pseudo-class.less" }, { "captures": { "1": { "name": "keyword.other.unit.less" } }, "match": "(?:[-+]?(?:\\d+)?(n)(\\s*[-+]\\s*\\d+)?|[-+]?\\s*\\d+)", "name": "constant.numeric.less" }, { "include": "#less-math" }, { "include": "#less-strings" }, { "include": "#less-variable-interpolation" }] }] }, { "begin": "(:)(host-context)(?=\\()", "captures": { "1": { "name": "punctuation.definition.entity.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "entity.other.attribute-name.pseudo-class.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#selectors" }] }] }, { "captures": { "1": { "name": "punctuation.definition.entity.less" }, "2": { "name": "entity.other.attribute-name.pseudo-class.less" } }, "match": "(:)(active|any|checked|default|disabled|empty|enabled|first(-(child|of-type))?|fullscreen|focus|host|hover|indeterminate|in-range|invalid|last-(child|of-type)|left|link|only-(child|of-type)|optional|out-of-range|read-(only|write)|required|right|root|scope|target|valid|visited)", "name": "meta.function-call.less" }] }, "pseudo-elements": { "patterns": [{ "begin": "(::)(slotted)(?=\\()", "captures": { "1": { "name": "punctuation.definition.entity.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "entity.other.attribute-name.pseudo-class.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#selectors" }] }] }, { "captures": { "1": { "name": "punctuation.definition.entity.less" }, "2": { "name": "punctuation.definition.entity.less" }, "3": { "name": "support.type.vendor-prefix.less" } }, "match": "(?:(:{1,2})(?:before|after|first-line|first-letter)|(::)(-(?:moz|ms|webkit)-)?(?:(-?(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)))\\b", "name": "entity.other.attribute-name.pseudo-element.less" }] }, "qualified-name": { "captures": { "1": { "name": "entity.name.constant.less" }, "2": { "name": "entity.name.namespace.wildcard.less" }, "3": { "name": "punctuation.separator.namespace.less" } }, "match": "(?:(-?(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[_a-zA-Z][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)|(\\*))?([|])(?!=)" }, "regexp-function": { "begin": "\\b(regexp)(?=\\()", "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "support.function.regexp.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "name": "meta.function-call.less", "patterns": [{ "include": "#literal-string" }] }] }, "resolution-type": { "captures": { "1": { "name": "keyword.other.unit.less" } }, "match": "(?i:[-+]?(?:(?:\\d*\\.\\d+(?:[eE](?:[-+]?\\d+))*)|(?:[-+]?\\d+))(dpi|dpcm|dppx))\\b", "name": "constant.numeric.less" }, "rule-list": { "patterns": [{ "begin": "\\{", "beginCaptures": { "0": { "name": "punctuation.definition.block.begin.less" } }, "end": "(?=\\s*\\})", "name": "meta.property-list.less", "patterns": [{ "captures": { "1": { "name": "punctuation.terminator.rule.less" } }, "match": "\\s*(;)|(?=[})])" }, { "include": "#rule-list-body" }, { "include": "#less-extend" }] }] }, "rule-list-body": { "patterns": [{ "include": "#comment-block" }, { "include": "#comment-line" }, { "include": "#at-rules" }, { "include": "#less-variable-assignment" }, { "include": "#less-variable-interpolation" }, { "begin": "(?=[-a-z])", "end": "$|(?![-a-z])", "patterns": [{ "include": "#vendor-prefix" }, { "include": "#custom-property-name" }, { "include": "#filter-function" }, { "captures": { "1": { "name": "keyword.other.custom-property.prefix.less" }, "2": { "name": "support.type.custom-property.name.less" } }, "match": "\\b(var-)(-?(?:[[-\\w][^\\x{00}-\\x{9f}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[_a-zA-Z][^\\x{00}-\\x{9f}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)(?=\\s)", "name": "invalid.deprecated.custom-property.less" }, { "begin": "\\bfont(-family)?(?!-)\\b", "beginCaptures": { "0": { "name": "support.type.property-name.less" } }, "end": "\\s*(;)|(?=[})])", "endCaptures": { "1": { "name": "punctuation.terminator.rule.less" } }, "name": "meta.property-name.less", "patterns": [{ "captures": { "1": { "name": "punctuation.separator.key-value.less" }, "4": { "name": "meta.property-value.less" } }, "match": "(((\\+_?)?):)([\\s\\t]*)" }, { "include": "#property-values" }, { "match": "-?(?:[[_a-zA-Z][^\\x{00}-\\x{9f}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{9f}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*(\\s+-?(?:[[_a-zA-Z][^\\x{00}-\\x{9f}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{9f}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)*", "name": "string.unquoted.less" }, { "match": ",", "name": "punctuation.separator.less" }] }, { "begin": "\\banimation(-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function))?\\b", "beginCaptures": { "0": { "name": "support.type.property-name.less" } }, "end": "\\s*(;)|(?=[})])", "endCaptures": { "1": { "name": "punctuation.terminator.rule.less" } }, "patterns": [{ "begin": "(((\\+_?)?):)(?=[\\s\\t]*)", "beginCaptures": { "1": { "name": "punctuation.separator.key-value.less" } }, "captures": { "1": { "name": "punctuation.definition.arbitrary-repetition.less" } }, "contentName": "meta.property-value.less", "end": "(?=\\s*(;)|(?=[})]))", "patterns": [{ "match": "\\b(linear|ease(-in)?(-out)?|step-(start|end)|none|forwards|backwards|both|normal|alternate(-reverse)?|reverse|running|paused)\\b", "name": "support.constant.property-value.less" }, { "include": "#cubic-bezier-function" }, { "include": "#steps-function" }, { "include": "#time-type" }, { "include": "#number-type" }, { "match": "-?(?:[_a-zA-Z]|[^\\x{00}-\\x{7F}]|(?:(:?\\\\[0-9a-f]{1,6}(\\r\\n|[\\s\\t\\r\\n\\f])?)|\\\\[^\\r\\n\\f0-9a-f]))(?:[-_a-zA-Z0-9]|[^\\x{00}-\\x{7F}]|(?:(:?\\\\[0-9a-f]{1,6}(\\r\\n|[\\t\\r\\n\\f])?)|\\\\[^\\r\\n\\f0-9a-f]))*", "name": "variable.other.constant.animation-name.less" }, { "include": "#literal-string" }, { "include": "#property-values" }, { "match": "\\s*(?:(,))" }] }] }, { "begin": "\\b(transition(-(property|duration|delay|timing-function))?)\\b", "beginCaptures": { "0": { "name": "meta.property-name.less" }, "1": { "name": "support.type.property-name.less" } }, "end": "\\s*(;)|(?=[})])", "endCaptures": { "1": { "name": "punctuation.terminator.rule.less" } }, "patterns": [{ "captures": { "1": { "name": "punctuation.separator.key-value.less" }, "4": { "name": "meta.property-value.less" } }, "match": "(((\\+_?)?):)([\\s\\t]*)" }, { "include": "#time-type" }, { "include": "#property-values" }, { "include": "#cubic-bezier-function" }, { "include": "#steps-function" }, { "captures": { "1": { "name": "punctuation.definition.arbitrary-repetition.less" } }, "match": "\\s*(?:(,))" }] }, { "begin": "\\bfilter\\b", "beginCaptures": { "0": { "name": "support.type.property-name.less" } }, "end": "\\s*(;)|(?=[})])", "endCaptures": { "1": { "name": "punctuation.terminator.rule.less" } }, "name": "meta.property-name.less", "patterns": [{ "captures": { "1": { "name": "punctuation.separator.key-value.less" }, "4": { "name": "meta.property-value.less" } }, "match": "(((\\+_?)?):)([\\s\\t]*)" }, { "match": "\\b(inherit|initial|unset|none)\\b", "name": "meta.property-value.less" }, { "include": "#filter-functions" }] }, { "begin": "\\bwill-change\\b", "beginCaptures": { "0": { "name": "support.type.property-name.less" } }, "end": "\\s*(;)|(?=[})])", "endCaptures": { "1": { "name": "punctuation.terminator.rule.less" } }, "name": "meta.property-name.less", "patterns": [{ "captures": { "1": { "name": "punctuation.separator.key-value.less" }, "4": { "name": "meta.property-value.less" } }, "match": "(((\\+_?)?):)([\\s\\t]*)" }, { "match": "unset|initial|inherit|will-change|auto|scroll-position|contents", "name": "invalid.illegal.property-value.less" }, { "match": "-?(?:[[-\\w][^\\x{00}-\\x{9f}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[_a-zA-Z][^\\x{00}-\\x{9f}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*", "name": "support.constant.property-value.less" }, { "captures": { "1": { "name": "punctuation.definition.arbitrary-repetition.less" } }, "match": "\\s*(?:(,))" }] }, { "begin": "\\bcounter-(increment|(re)?set)\\b", "beginCaptures": { "0": { "name": "support.type.property-name.less" } }, "end": "\\s*(;)|(?=[})])", "endCaptures": { "1": { "name": "punctuation.terminator.rule.less" } }, "name": "meta.property-name.less", "patterns": [{ "captures": { "1": { "name": "punctuation.separator.key-value.less" }, "4": { "name": "meta.property-value.less" } }, "match": "(((\\+_?)?):)([\\s\\t]*)" }, { "match": "-?(?:[[-\\w][^\\x{00}-\\x{9f}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[_a-zA-Z][^\\x{00}-\\x{9f}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*", "name": "entity.name.constant.counter-name.less" }, { "include": "#integer-type" }, { "match": "unset|initial|inherit|auto", "name": "invalid.illegal.property-value.less" }] }, { "match": "(?x)\\b( accent-height | align-content | align-items | align-self | alignment-baseline | all | animation-timing-function | animation-play-state | animation-name | animation-iteration-count | animation-fill-mode | animation-duration | animation-direction | animation-delay | animation | appearance | ascent | azimuth | backface-visibility | background-size | background-repeat-y | background-repeat-x | background-repeat | background-position-y | background-position-x | background-position | background-origin | background-image | background-color | background-clip | background-blend-mode | background-attachment | background | baseline-shift | begin | bias | blend-mode | border-((top|right|bottom|left)-)?(width|style|color) | border-(top|bottom)-(right|left)-radius | border-image-(width|source|slice|repeat|outset) | border-(top|right|bottom|left|collapse|image|radius|spacing) | border | bottom | box-(align|decoration-break|direction|flex|ordinal-group|orient|pack|shadow|sizing) | break-(after|before|inside) | caption-side | clear | clip-path | clip-rule | clip | color(-(interpolation(-filters)?|profile|rendering))? | columns | column-(break-before|count|fill|gap|(rule(-(color|style|width))?)|span|width) | contain | content | counter-(increment|reset) | cursor | (c|d|f)(x|y) | direction | display | divisor | dominant-baseline | dur | elevation | empty-cells | enable-background | end | fallback | fill(-(opacity|rule))? | filter | flex(-(align|basis|direction|flow|grow|item-align|line-pack|negative|order|pack|positive|preferred-size|shrink|wrap))? | float | flood-(color|opacity) | font-display | font-family | font-feature-settings | font-kerning | font-language-override | font-size(-adjust)? | font-smoothing | font-stretch | font-style | font-synthesis | font-variant(-(alternates|caps|east-asian|ligatures|numeric|position))? | font-weight | font | fr | glyph-orientation-(horizontal|vertical) | grid-(area|gap) | grid-auto-(columns|flow|rows) | grid-(column|row)(-(end|gap|start))? | grid-template(-(areas|columns|rows))? | height | hyphens | image-(orientation|rendering|resolution) | isolation | justify-content | kerning | left | letter-spacing | lighting-color | line-(box-contain|break|clamp|height) | list-style(-(image|position|type))? | margin(-(bottom|left|right|top))? | marker(-(end|mid|start))? | mask(-(clip||composite|image|origin|position|repeat|size|type))? | (max|min)-(height|width) | mix-blend-mode | nbsp-mode | negative | object-(fit|position) | opacity | operator | order | orphans | outline(-(color|offset|style|width))? | overflow(-(scrolling|wrap|x|y))? | pad(ding(-(bottom|left|right|top))?)? | page(-break-(after|before|inside))? | paint-order | pause(-(after|before))? | perspective(-origin(-(x|y))?)? | pitch(-range)? | pointer-events | position | prefix | quotes | range | resize | right | rotate | scale | scroll-behavior | shape-(image-threshold|margin|outside|rendering) | size | speak(-as)? | src | stop-(color|opacity) | stroke(-(dash(array|offset)|line(cap|join)|miterlimit|opacity|width))? | suffix | symbols | system | tab-size | table-layout | tap-highlight-color | text-align(-last)? | text-decoration(-(color|line|style))? | text-emphasis(-(color|position|style))? | text-(anchor|fill-color|height|indent|justify|orientation|overflow|rendering|shadow|transform|underline-position) | top | touch-action | transform(-origin(-(x|y))?) | transform(-style)? | transition(-(delay|duration|property|timing-function))? | translate | unicode-(bidi|range) | user-(drag|select) | vertical-align | visibility | white-space | widows | width | will-change | word-(break|spacing|wrap) | writing-mode | z-index | zoom )\\b", "name": "support.type.property-name.less" }, { "include": "$self" }] }, { "begin": "\\b(((\\+_?)?):)([\\s\\t]*)", "captures": { "1": { "name": "punctuation.separator.key-value.less" }, "4": { "name": "meta.property-value.less" } }, "contentName": "meta.property-value.less", "end": "\\s*(;)|(?=[})])", "endCaptures": { "1": { "name": "punctuation.terminator.rule.less" } }, "patterns": [{ "include": "#property-values" }] }, { "include": "$self" }] }, "selector": { "patterns": [{ "begin": "(?=[>~+/\\.*#a-zA-Z\\[&]|(\\:{1,2}[^\\s])|@\\{)", "contentName": "meta.selector.less", "end": "(?=@(?!\\{)|[{;])", "patterns": [{ "include": "#comment-line" }, { "include": "#selectors" }, { "include": "#less-namespace-accessors" }, { "include": "#less-variable-interpolation" }, { "captures": { "1": { "name": "punctuation.separator.less" } }, "match": "(\\!)\\s*important", "name": "keyword.other.important.less" }] }] }, "selectors": { "patterns": [{ "match": "\\b([a-z](?:(?:[-_a-z0-9\\x{00B7}]|\\\\\\.|[[\\x{00C0}-\\x{00D6}][\\x{00D8}-\\x{00F6}][\\x{00F8}-\\x{02FF}][\\x{0300}-\\x{037D}][\\x{037F}-\\x{1FFF}][\\x{200C}-\\x{200D}][\\x{203F}-\\x{2040}][\\x{2070}-\\x{218F}][\\x{2C00}-\\x{2FEF}][\\x{3001}-\\x{D7FF}][\\x{F900}-\\x{FDCF}][\\x{FDF0}-\\x{FFFD}][\\x{10000}-\\x{EFFFF}]]))*-(?:(?:[-_a-z0-9\\x{00B7}]|\\\\\\.|[[\\x{00C0}-\\x{00D6}][\\x{00D8}-\\x{00F6}][\\x{00F8}-\\x{02FF}][\\x{0300}-\\x{037D}][\\x{037F}-\\x{1FFF}][\\x{200C}-\\x{200D}][\\x{203F}-\\x{2040}][\\x{2070}-\\x{218F}][\\x{2C00}-\\x{2FEF}][\\x{3001}-\\x{D7FF}][\\x{F900}-\\x{FDCF}][\\x{FDF0}-\\x{FFFD}][\\x{10000}-\\x{EFFFF}]]))*)\\b", "name": "entity.name.tag.custom.less" }, { "match": "(?x)\\b( a | abbr | acronym | address | applet | area | article | aside | audio | b | base | basefont | bdi | bdo | big | blockquote | body | br | button | canvas | caption | circle | cite | clipPath | code | col | colgroup | content | data | dataList | dd | defs | del | details | dfn | dialog | dir | div | dl | dt | element | ellipse | em | embed | eventsource | fieldset | figcaption | figure | filter | footer | foreignObject | form | frame | frameset | g | glyph | glyphRef | h1 | h2 | h3 | h4 | h5 | h6 | head | header | hgroup | hr | html | i | iframe | image | img | input | ins | isindex | kbd | keygen | label | legend | li | line | linearGradient | link | main | map | mark | marker | mask | menu | meta | meter | nav | noframes | noscript | object | ol | optgroup | option | output | p | param | path | pattern | picture | polygon | polyline | pre | progress | q | radialGradient | rect | rp | ruby | rt | rtc | s | samp | script | section | select | shadow | small | source | span | stop | strike | strong | style | sub | summary | sup | svg | switch | symbol | table | tbody | td | template | textarea | textPath | tfoot | th | thead | time | title | tr | track | tref | tspan | tt | u | ul | use | var | video | wbr | xmp )\\b", "name": "entity.name.tag.less" }, { "begin": "(\\.)", "beginCaptures": { "1": { "name": "punctuation.definition.entity.less" } }, "end": "(?![-\\w]|[^\\x{00}-\\x{9f}]|\\\\([A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9])|(\\@(?=\\{)))", "name": "entity.other.attribute-name.class.less", "patterns": [{ "include": "#less-variable-interpolation" }] }, { "begin": "(#)", "beginCaptures": { "1": { "name": "punctuation.definition.entity.less" } }, "end": "(?![-\\w]|[^\\x{00}-\\x{9f}]|\\\\([A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9])|(\\@(?=\\{)))", "name": "entity.other.attribute-name.id.less", "patterns": [{ "include": "#less-variable-interpolation" }] }, { "begin": "(&)", "beginCaptures": { "1": { "name": "punctuation.definition.entity.less" } }, "contentName": "entity.other.attribute-name.parent.less", "end": "(?![-\\w]|[^\\x{00}-\\x{9f}]|\\\\([A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9])|(\\@(?=\\{)))", "name": "entity.other.attribute-name.parent.less", "patterns": [{ "include": "#less-variable-interpolation" }, { "include": "#selectors" }] }, { "include": "#pseudo-elements" }, { "include": "#pseudo-classes" }, { "include": "#less-extend" }, { "match": "(?!\\+_?:)(?:>{1,3}|[~+])(?![>~+;}])", "name": "punctuation.separator.combinator.less" }, { "match": "((?:>{1,3}|[~+])){2,}", "name": "invalid.illegal.combinator.less" }, { "match": "\\/deep\\/", "name": "invalid.illegal.combinator.less" }, { "begin": "\\[", "captures": { "0": { "name": "punctuation.definition.entity.less" } }, "end": "\\]", "name": "meta.attribute-selector.less", "patterns": [{ "include": "#less-variable-interpolation" }, { "include": "#qualified-name" }, { "match": "(-?(?:[[_a-zA-Z][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)", "name": "entity.other.attribute-name.less" }, { "begin": "\\s*([~*|^$]?=)\\s*", "captures": { "1": { "name": "keyword.operator.attribute-selector.less" } }, "end": "(?=(\\s|\\]))", "patterns": [{ "include": "#less-variable-interpolation" }, { "match": `[^\\s\\]\\['"]`, "name": "string.unquoted.less" }, { "include": "#literal-string" }, { "captures": { "1": { "name": "keyword.other.less" } }, "match": "(?:\\s+([iI]))?" }, { "match": "\\]", "name": "punctuation.definition.entity.less" }] }] }, { "captures": { "1": { "name": "punctuation.definition.arbitrary-repetition.less" } }, "match": "\\s*(?:(,))" }, { "match": "\\*", "name": "entity.name.tag.wildcard.less" }] }, "shape-functions": { "patterns": [{ "begin": "\\b(rect)(?=\\()", "beginCaptures": { "0": { "name": "support.function.shape.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "match": "\\bauto\\b", "name": "support.constant.property-value.less" }, { "include": "#length-type" }, { "include": "#comma-delimiter" }] }] }, { "begin": "\\b(inset)(?=\\()", "beginCaptures": { "0": { "name": "support.function.shape.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "match": "\\bround\\b", "name": "keyword.other.less" }, { "include": "#length-type" }, { "include": "#percentage-type" }] }] }, { "begin": "\\b(circle|ellipse)(?=\\()", "beginCaptures": { "0": { "name": "support.function.shape.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "match": "\\bat\\b", "name": "keyword.other.less" }, { "match": "\\b(top|right|bottom|left|center|closest-side|farthest-side)\\b", "name": "support.constant.property-value.less" }, { "include": "#length-type" }, { "include": "#percentage-type" }] }] }, { "begin": "\\b(polygon)(?=\\()", "beginCaptures": { "0": { "name": "support.function.shape.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "match": "\\b(nonzero|evenodd)\\b", "name": "support.constant.property-value.less" }, { "include": "#length-type" }, { "include": "#percentage-type" }] }] }] }, "steps-function": { "begin": "\\b(steps)(?=\\()", "beginCaptures": { "0": { "name": "support.function.timing.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#comma-delimiter" }, { "include": "#integer-type" }, { "match": "(end|middle|start)", "name": "support.keyword.timing-direction.less" }] }] }, "string-content": { "patterns": [{ "include": "#less-variable-interpolation" }, { "match": "\\\\\\s*\\n", "name": "constant.character.escape.newline.less" }, { "match": "\\\\(\\h{1,6}|.)", "name": "constant.character.escape.less" }] }, "symbols-function": { "begin": "\\b(symbols)(?=\\()", "beginCaptures": { "1": { "name": "support.function.counter.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "match": "\\b(cyclic|numeric|alphabetic|symbolic|fixed)\\b", "name": "support.constant.symbol-type.less" }, { "include": "#comma-delimiter" }, { "include": "#literal-string" }, { "include": "#image-type" }] }] }, "time-type": { "captures": { "1": { "name": "keyword.other.unit.less" } }, "match": "(?i:[-+]?(?:(?:\\d*\\.\\d+(?:[eE](?:[-+]?\\d+))*)|(?:[-+]?\\d+))(s|ms))\\b", "name": "constant.numeric.less" }, "transform-functions": { "patterns": [{ "begin": "\\b(matrix3d|scale3d|matrix|scale)(?=\\()", "beginCaptures": { "0": { "name": "support.function.transform.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#comma-delimiter" }, { "include": "#number-type" }, { "include": "#less-variables" }, { "include": "#var-function" }] }] }, { "begin": "\\b(translate(3d)?)(?=\\()", "beginCaptures": { "0": { "name": "support.function.transform.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#comma-delimiter" }, { "include": "#percentage-type" }, { "include": "#length-type" }, { "include": "#number-type" }, { "include": "#less-variables" }, { "include": "#var-function" }] }] }, { "begin": "\\b(translate[XY])(?=\\()", "beginCaptures": { "0": { "name": "support.function.transform.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#percentage-type" }, { "include": "#length-type" }, { "include": "#number-type" }, { "include": "#less-variables" }, { "include": "#var-function" }] }] }, { "begin": "\\b(rotate[XYZ]?|skew[XY])(?=\\()", "beginCaptures": { "0": { "name": "support.function.transform.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#angle-type" }, { "include": "#less-variables" }, { "include": "#calc-function" }, { "include": "#var-function" }] }] }, { "begin": "\\b(skew)(?=\\()", "beginCaptures": { "0": { "name": "support.function.transform.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#comma-delimiter" }, { "include": "#angle-type" }, { "include": "#less-variables" }, { "include": "#calc-function" }, { "include": "#var-function" }] }] }, { "begin": "\\b(translateZ|perspective)(?=\\()", "beginCaptures": { "0": { "name": "support.function.transform.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#length-type" }, { "include": "#less-variables" }, { "include": "#calc-function" }, { "include": "#var-function" }] }] }, { "begin": "\\b(rotate3d)(?=\\()", "beginCaptures": { "0": { "name": "support.function.transform.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#comma-delimiter" }, { "include": "#angle-type" }, { "include": "#number-type" }, { "include": "#less-variables" }, { "include": "#calc-function" }, { "include": "#var-function" }] }] }, { "begin": "\\b(scale[XYZ])(?=\\()", "beginCaptures": { "0": { "name": "support.function.transform.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#comma-delimiter" }, { "include": "#number-type" }, { "include": "#less-variables" }, { "include": "#calc-function" }, { "include": "#var-function" }] }] }] }, "unicode-range": { "captures": { "1": { "name": "support.constant.unicode-range.prefix.less" }, "2": { "name": "constant.codepoint-range.less" }, "3": { "name": "punctuation.section.range.less" } }, "match": "(?i)(u\\+)([0-9a-f?]{1,6}(?:(-)[0-9a-f]{1,6})?)", "name": "support.unicode-range.less" }, "unquoted-string": { "match": `[^\\s'"]`, "name": "string.unquoted.less" }, "url-function": { "begin": "\\b(url)(?=\\()", "beginCaptures": { "1": { "name": "support.function.url.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#less-variables" }, { "include": "#literal-string" }, { "include": "#unquoted-string" }, { "include": "#var-function" }] }] }, "var-function": { "patterns": [{ "begin": "\\b(var)(?=\\()", "beginCaptures": { "1": { "name": "support.function.var.less" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.group.end.less" } }, "name": "meta.function-call.less", "patterns": [{ "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.less" } }, "end": "(?=\\))", "patterns": [{ "include": "#comma-delimiter" }, { "include": "#custom-property-name" }, { "include": "#less-variables" }] }] }] }, "vendor-prefix": { "match": "-(?:webkit|moz(-osx)?|ms|o)-", "name": "support.type.vendor-prefix.less" } }, "displayName": "Less" });
var less = [
  lang
];




/***/ }),

/***/ 58507:
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ marko)
/* harmony export */ });
/* harmony import */ var _css_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(90123);
/* harmony import */ var _less_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(71858);
/* harmony import */ var _scss_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2681);
/* harmony import */ var _javascript_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(28182);





const lang = Object.freeze({ "fileTypes": ["marko"], "name": "marko", "patterns": [{ "begin": "^\\s*(style)\\s+(\\{)", "beginCaptures": { "1": { "name": "storage.type.marko.css" }, "2": { "name": "punctuation.section.scope.begin.marko.css" } }, "comment": "CSS style block, eg: style { color: green }", "contentName": "source.css", "end": "\\}", "endCaptures": { "0": { "name": "punctuation.section.scope.end.marko.css" } }, "name": "meta.embedded.css", "patterns": [{ "include": "source.css" }] }, { "begin": "^\\s*(style)\\.(less)\\s+(\\{)", "beginCaptures": { "1": { "name": "storage.type.marko.css" }, "2": { "name": "storage.modifier.marko.css" }, "3": { "name": "punctuation.section.scope.begin.marko.css" } }, "comment": "Less style block, eg: style.less { color: green }", "contentName": "source.less", "end": "\\}", "endCaptures": { "0": { "name": "punctuation.section.scope.end.marko.css" } }, "name": "meta.embedded.less", "patterns": [{ "include": "source.css.less" }] }, { "begin": "^\\s*(style)\\.(scss)\\s+(\\{)", "beginCaptures": { "1": { "name": "storage.type.marko.css" }, "2": { "name": "storage.modifier.marko.css" }, "3": { "name": "punctuation.section.scope.begin.marko.css" } }, "comment": "SCSS style block, eg: style.scss { color: green }", "contentName": "source.scss", "end": "\\}", "endCaptures": { "0": { "name": "punctuation.section.scope.end.marko.css" } }, "name": "meta.embedded.scss", "patterns": [{ "include": "source.css.scss" }] }, { "begin": "^\\s*(?:(static )|(?=(?:class|import|export) ))", "beginCaptures": { "1": { "name": "keyword.control.static.marko" } }, "comment": "Top level blocks parsed as JavaScript", "contentName": "source.js", "end": "(?=\\n|$)", "name": "meta.embedded.js", "patterns": [{ "include": "#javascript-statement" }] }, { "include": "#content-concise-mode" }], "repository": { "attrs": { "patterns": [{ "applyEndPatternLast": 1, "begin": "(?:\\s+|,)(?:(key|on[a-zA-Z0-9_$-]+|[a-zA-Z0-9_$]+Change|no-update(?:-body)?(?:-if)?)|([a-zA-Z0-9_$][a-zA-Z0-9_$-]*))(:[a-zA-Z0-9_$][a-zA-Z0-9_$-]*)?", "beginCaptures": { "1": { "name": "support.type.attribute-name.marko" }, "2": { "name": "entity.other.attribute-name.marko" }, "3": { "name": "support.function.attribute-name.marko" } }, "comment": "Attribute with optional value", "end": "(?=.|$)", "name": "meta.marko-attribute", "patterns": [{ "include": "#html-args-or-method" }, { "applyEndPatternLast": 1, "begin": "\\s*(:?=)\\s*", "beginCaptures": { "1": { "patterns": [{ "include": "source.js" }] } }, "comment": "Attribute value", "contentName": "source.js", "end": "(?=.|$)", "name": "meta.embedded.js", "patterns": [{ "include": "#javascript-expression" }] }] }, { "applyEndPatternLast": 1, "begin": "(?:\\s+|,)\\.\\.\\.", "beginCaptures": { "1": { "name": "keyword.operator.spread.marko" } }, "comment": "A ...spread attribute", "contentName": "source.js", "end": "(?=.|$)", "name": "meta.marko-spread-attribute", "patterns": [{ "include": "#javascript-expression" }] }, { "begin": "\\s*(,(?!,))", "captures": { "1": { "patterns": [{ "include": "source.js" }] } }, "comment": "Consume any whitespace after a comma", "end": "(?!\\S)" }, { "include": "#javascript-comment-multiline" }, { "include": "#invalid" }] }, "concise-html-block": { "begin": "\\s*(--+)\\s*$", "beginCaptures": { "2": { "name": "punctuation.section.scope.begin.marko" } }, "comment": "--- HTML block within concise mode content. ---", "end": "\\1", "endCaptures": { "1": { "name": "punctuation.section.scope.end.marko" } }, "name": "meta.section.marko-html-block", "patterns": [{ "include": "#content-html-mode" }] }, "concise-html-line": { "captures": { "1": { "name": "punctuation.section.scope.begin.marko" }, "2": { "patterns": [{ "include": "#html-comments" }, { "include": "#tag-html" }, { "match": "\\\\.", "name": "string" }, { "include": "#placeholder" }, { "match": ".+?", "name": "string" }] } }, "comment": "-- HTML line within concise mode content. (content-html-mode w/o scriptlet)", "match": "\\s*(--+)(?=\\s+\\S)(.*$)", "name": "meta.section.marko-html-line" }, "concise-open-tag-content": { "patterns": [{ "include": "#tag-before-attrs" }, { "begin": "\\s*\\[", "beginCaptures": { "0": { "name": "punctuation.section.scope.begin.marko" } }, "end": "]", "endCaptures": { "0": { "name": "punctuation.section.scope.end.marko" } }, "patterns": [{ "include": "#attrs" }, { "include": "#invalid" }] }, { "begin": "(?!^)(?= )", "end": "(?=--)|(?<!,)(?=\\n)", "patterns": [{ "include": "#attrs" }, { "include": "#invalid" }] }] }, "concise-script-block": { "begin": "(\\s+)(--+)\\s*$", "beginCaptures": { "2": { "name": "punctuation.section.scope.begin.marko" } }, "comment": "--- Embedded concise script content block. ---", "end": "(\\2)|(?=^(?!\\1)\\s*\\S)", "endCaptures": { "1": { "name": "punctuation.section.scope.end.marko" } }, "name": "meta.section.marko-script-block", "patterns": [{ "include": "#content-embedded-script" }] }, "concise-script-line": { "applyEndPatternLast": 1, "begin": "\\s*(--+)", "beginCaptures": { "1": { "name": "punctuation.section.scope.begin.marko" } }, "comment": "-- Embedded concise script content line.", "end": "$", "name": "meta.section.marko-script-line", "patterns": [{ "include": "#content-embedded-script" }] }, "concise-style-block": { "begin": "(\\s+)(--+)\\s*$", "beginCaptures": { "2": { "name": "punctuation.section.scope.begin.marko" } }, "comment": "--- Embedded concise style content block. ---", "contentName": "source.css", "end": "(\\2)|(?=^(?!\\1)\\s*\\S)", "endCaptures": { "1": { "name": "punctuation.section.scope.end.marko" } }, "name": "meta.section.marko-style-block", "patterns": [{ "include": "#content-embedded-style" }] }, "concise-style-block-less": { "begin": "(\\s+)(--+)\\s*$", "beginCaptures": { "2": { "name": "punctuation.section.scope.begin.marko" } }, "comment": "--- Embedded concise style content block. ---", "contentName": "source.less", "end": "(\\2)|(?=^(?!\\1)\\s*\\S)", "endCaptures": { "1": { "name": "punctuation.section.scope.end.marko" } }, "name": "meta.section.marko-style-block", "patterns": [{ "include": "#content-embedded-style-less" }] }, "concise-style-block-scss": { "begin": "(\\s+)(--+)\\s*$", "beginCaptures": { "2": { "name": "punctuation.section.scope.begin.marko" } }, "comment": "--- Embedded concise style content block. ---", "contentName": "source.scss", "end": "(\\2)|(?=^(?!\\1)\\s*\\S)", "endCaptures": { "1": { "name": "punctuation.section.scope.end.marko" } }, "name": "meta.section.marko-style-block", "patterns": [{ "include": "#content-embedded-style-scss" }] }, "concise-style-line": { "applyEndPatternLast": 1, "begin": "\\s*(--+)", "beginCaptures": { "1": { "name": "punctuation.section.scope.begin.marko" } }, "comment": "-- Embedded concise style content line.", "contentName": "source.css", "end": "$", "name": "meta.section.marko-style-line", "patterns": [{ "include": "#content-embedded-style" }] }, "concise-style-line-less": { "applyEndPatternLast": 1, "begin": "\\s*(--+)", "beginCaptures": { "1": { "name": "punctuation.section.scope.begin.marko" } }, "comment": "-- Embedded concise style content line.", "contentName": "source.less", "end": "$", "name": "meta.section.marko-style-line", "patterns": [{ "include": "#content-embedded-style-less" }] }, "concise-style-line-scss": { "applyEndPatternLast": 1, "begin": "\\s*(--+)", "beginCaptures": { "1": { "name": "punctuation.section.scope.begin.marko" } }, "comment": "-- Embedded concise style content line.", "contentName": "source.scss", "end": "$", "name": "meta.section.marko-style-line", "patterns": [{ "include": "#content-embedded-style-scss" }] }, "content-concise-mode": { "comment": "Concise mode content block.", "name": "meta.marko-concise-content", "patterns": [{ "include": "#scriptlet" }, { "include": "#javascript-comments" }, { "include": "#html-comments" }, { "include": "#concise-html-block" }, { "include": "#concise-html-line" }, { "include": "#tag-html" }, { "comment": "A concise html tag.", "patterns": [{ "begin": "^(\\s*)(?=style\\.less\\b)", "comment": "Concise style tag less", "patterns": [{ "include": "#concise-open-tag-content" }, { "include": "#concise-style-block-less" }, { "include": "#concise-style-line-less" }], "while": "(?=^\\1\\s+(\\S|$))" }, { "begin": "^(\\s*)(?=style\\.scss\\b)", "comment": "Concise style tag scss", "patterns": [{ "include": "#concise-open-tag-content" }, { "include": "#concise-style-block-scss" }, { "include": "#concise-style-line-scss" }], "while": "(?=^\\1\\s+(\\S|$))" }, { "begin": "^(\\s*)(?=style\\b)", "comment": "Concise style tag", "patterns": [{ "include": "#concise-open-tag-content" }, { "include": "#concise-style-block" }, { "include": "#concise-style-line" }], "while": "(?=^\\1\\s+(\\S|$))" }, { "begin": "^(\\s*)(?=script\\b)", "comment": "Concise script tag", "patterns": [{ "include": "#concise-open-tag-content" }, { "include": "#concise-script-block" }, { "include": "#concise-script-line" }], "while": "(?=^\\1\\s+(\\S|$))" }, { "begin": "^(\\s*)(?=[a-zA-Z0-9_$@])", "comment": "Normal concise tag", "patterns": [{ "include": "#concise-open-tag-content" }, { "include": "#content-concise-mode" }], "while": "(?=^\\1\\s+(\\S|$))" }] }, { "include": "#invalid" }] }, "content-embedded-script": { "name": "meta.embedded.js", "patterns": [{ "include": "#placeholder" }, { "include": "source.js" }] }, "content-embedded-style": { "name": "meta.embedded.css", "patterns": [{ "include": "#placeholder" }, { "include": "source.css" }] }, "content-embedded-style-less": { "name": "meta.embedded.css.less", "patterns": [{ "include": "#placeholder" }, { "include": "source.css.less" }] }, "content-embedded-style-scss": { "name": "meta.embedded.css.scss", "patterns": [{ "include": "#placeholder" }, { "include": "source.css.scss" }] }, "content-html-mode": { "comment": "HTML mode content block.", "patterns": [{ "include": "#scriptlet" }, { "include": "#html-comments" }, { "include": "#tag-html" }, { "match": "\\\\.", "name": "string" }, { "include": "#placeholder" }, { "match": ".+?", "name": "string" }] }, "html-args-or-method": { "patterns": [{ "include": "#javascript-args" }, { "begin": "(?<=\\))\\s*(?=\\{)", "comment": "Attribute method shorthand following parens", "contentName": "source.js", "end": "(?<=\\})", "name": "meta.embedded.js", "patterns": [{ "include": "source.js" }] }] }, "html-comments": { "patterns": [{ "begin": "\\s*(<!(--)?)", "beginCaptures": { "1": { "name": "punctuation.definition.comment.marko" } }, "comment": "HTML comments, doctypes & cdata", "end": "\\2>", "endCaptures": { "0": { "name": "punctuation.definition.comment.marko" } }, "name": "comment.block.marko" }, { "begin": "\\s*(<html-comment>)", "beginCaptures": { "1": { "name": "punctuation.definition.comment.marko" } }, "comment": "Preserved HTML comment tag", "end": "</html-comment>", "endCaptures": { "0": { "name": "punctuation.definition.comment.marko" } }, "name": "comment.block.marko" }] }, "invalid": { "match": "[^\\s]", "name": "invalid.illegal.character-not-allowed-here.marko" }, "javascript-args": { "begin": "(?=\\()", "comment": "Javascript style arguments", "contentName": "source.js", "end": "(?<=\\))", "name": "meta.embedded.js", "patterns": [{ "include": "source.js" }] }, "javascript-comment-line": { "captures": { "0": { "patterns": [{ "include": "source.js" }] } }, "comment": "JavaScript // single line comment", "contentName": "source.js", "match": "\\s*//.*$" }, "javascript-comment-multiline": { "begin": "\\s*(?=/\\*)", "comment": "JavaScript /* block comment */", "contentName": "source.js", "end": "(?<=\\*/)", "patterns": [{ "include": "source.js" }] }, "javascript-comments": { "patterns": [{ "include": "#javascript-comment-multiline" }, { "include": "#javascript-comment-line" }] }, "javascript-enclosed": { "comment": "Matches JavaScript content and ensures enclosed blocks are matched.", "patterns": [{ "include": "#javascript-comments" }, { "include": "#javascript-args" }, { "begin": "(?={)", "end": "(?<=})", "patterns": [{ "include": "source.js" }] }, { "begin": "(?=\\[)", "end": "(?<=])", "patterns": [{ "include": "source.js" }] }, { "begin": '(?=")', "end": '(?<=")', "patterns": [{ "include": "source.js" }] }, { "begin": "(?=')", "end": "(?<=')", "patterns": [{ "include": "source.js" }] }, { "begin": "(?=`)", "end": "(?<=`)", "patterns": [{ "include": "source.js" }] }, { "begin": "/(?!<[\\]})A-Z0-9.<%]\\s*/)(?!/?>|$)", "captures": { "0": { "name": "string.regexp.js" } }, "contentName": "source.js", "end": "/[gimsuy]*", "patterns": [{ "include": "source.js#regexp" }, { "include": "source.js" }] }, { "begin": "(?x)\\s*(?:\n								(?:\\b(?:new|typeof|instanceof|in)\\b)| # Keyword operators\n								\\&\\&|\\|\\|| # Logical operators\n								[\\^|&]| # Bitwise operators\n								[!=]=|[!=]==|<|<[=<]|=>| # Comparison operators (Note you cannot use * or ? here)\n								[?:]| # Ternary operators\n								[-+*%](?!-) # Arithmetic operators\n							)", "captures": { "0": { "patterns": [{ "include": "source.js" }] } }, "end": "(?=\\S)" }] }, "javascript-expression": { "patterns": [{ "include": "#javascript-enclosed" }, { "captures": { "0": { "patterns": [{ "include": "source.js" }] } }, "comment": "Match identifiers and member expressions", "match": "[0-9a-zA-Z$_.]+" }] }, "javascript-statement": { "patterns": [{ "include": "#javascript-enclosed" }, { "include": "source.js" }] }, "open-tag-content": { "patterns": [{ "include": "#tag-before-attrs" }, { "begin": "(?= )", "comment": "Attributes begin after the first space within the tag name", "end": "(?=/?>)", "patterns": [{ "include": "#attrs" }] }] }, "placeholder": { "begin": "\\$!?{", "beginCaptures": { "0": { "name": "punctuation.definition.template-expression.begin.js" } }, "comment": "${ } placeholder", "contentName": "source.js", "end": "}", "endCaptures": { "0": { "name": "punctuation.definition.template-expression.end.js" } }, "patterns": [{ "include": "source.js" }] }, "scriptlet": { "begin": "^\\s*(\\$)\\s+", "beginCaptures": { "1": { "name": "keyword.control.scriptlet.marko" } }, "comment": "An inline JavaScript scriptlet.", "contentName": "source.js", "end": "$", "name": "meta.embedded.js", "patterns": [{ "include": "#javascript-statement" }] }, "tag-before-attrs": { "comment": "Everything in a tag before the attributes content", "patterns": [{ "include": "#tag-name" }, { "comment": "Shorthand class or ID attribute", "match": "[#.][a-zA-Z0-9_$][a-zA-Z0-9_$-]*", "name": "entity.other.attribute-name.marko" }, { "begin": "/(?!/)", "beginCaptures": { "0": { "name": "punctuation.separator.key-value.marko" } }, "comment": "Variable for a tag", "contentName": "source.js", "end": "(?=:?\\=|\\s|>|$|\\||\\(|/)", "name": "meta.embedded.js", "patterns": [{ "comment": "Match identifiers", "match": "[a-zA-Z$_][0-9a-zA-Z$_]*", "name": "variable.other.constant.object.js" }, { "include": "source.js#object-binding-pattern" }, { "include": "source.js#array-binding-pattern" }, { "include": "source.js#var-single-variable" }, { "include": "#javascript-expression" }] }, { "applyEndPatternLast": 1, "begin": "\\s*(:?=)\\s*", "beginCaptures": { "1": { "patterns": [{ "include": "source.js" }] } }, "comment": "Default attribute value", "contentName": "source.js", "end": "(?=.|$)", "name": "meta.embedded.js", "patterns": [{ "include": "#javascript-expression" }] }, { "begin": "\\|", "beginCaptures": { "0": { "name": "punctuation.section.scope.begin.marko" } }, "comment": "Parameters for a tag", "end": "\\|", "endCaptures": { "0": { "name": "punctuation.section.scope.end.marko" } }, "patterns": [{ "include": "source.js#function-parameters-body" }, { "include": "source.js" }] }, { "include": "#html-args-or-method" }] }, "tag-html": { "comment": "Matches an HTML tag and its contents", "patterns": [{ "begin": "\\s*(<)(?=(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)\\b)", "beginCaptures": { "1": { "name": "punctuation.definition.tag.end.marko" } }, "comment": "HTML void elements", "end": "/?>", "endCaptures": { "0": { "name": "punctuation.definition.tag.end.marko" } }, "patterns": [{ "include": "#open-tag-content" }] }, { "begin": "\\s*(<)(?=style\\.less\\b)", "beginCaptures": { "1": { "name": "punctuation.definition.tag.begin.marko" } }, "comment": "HTML style tag with less", "end": "/>|(?<=\\>)", "endCaptures": { "0": { "name": "punctuation.definition.tag.end.marko" } }, "patterns": [{ "include": "#open-tag-content" }, { "begin": ">", "beginCaptures": { "0": { "name": "punctuation.definition.tag.end.marko" } }, "comment": "Style body content", "contentName": "source.less", "end": "\\s*(</)(style)?(>)", "endCaptures": { "1": { "name": "punctuation.definition.tag.end.marko" }, "2": { "patterns": [{ "include": "#tag-name" }] }, "3": { "name": "punctuation.definition.tag.end.marko" } }, "patterns": [{ "include": "#content-embedded-style-less" }] }] }, { "begin": "\\s*(<)(?=style\\.scss\\b)", "beginCaptures": { "1": { "name": "punctuation.definition.tag.begin.marko" } }, "comment": "HTML style tag with scss", "end": "/>|(?<=\\>)", "endCaptures": { "0": { "name": "punctuation.definition.tag.end.marko" } }, "patterns": [{ "include": "#open-tag-content" }, { "begin": ">", "beginCaptures": { "0": { "name": "punctuation.definition.tag.end.marko" } }, "comment": "Style body content", "contentName": "source.less", "end": "\\s*(</)(style)?(>)", "endCaptures": { "1": { "name": "punctuation.definition.tag.end.marko" }, "2": { "patterns": [{ "include": "#tag-name" }] }, "3": { "name": "punctuation.definition.tag.end.marko" } }, "patterns": [{ "include": "#content-embedded-style-scss" }] }] }, { "begin": "\\s*(<)(?=style\\b)", "beginCaptures": { "1": { "name": "punctuation.definition.tag.begin.marko" } }, "comment": "HTML style tag", "end": "/>|(?<=\\>)", "endCaptures": { "0": { "name": "punctuation.definition.tag.end.marko" } }, "patterns": [{ "include": "#open-tag-content" }, { "begin": ">", "beginCaptures": { "0": { "name": "punctuation.definition.tag.end.marko" } }, "comment": "Style body content", "contentName": "source.css", "end": "\\s*(</)(style)?(>)", "endCaptures": { "1": { "name": "punctuation.definition.tag.end.marko" }, "2": { "patterns": [{ "include": "#tag-name" }] }, "3": { "name": "punctuation.definition.tag.end.marko" } }, "patterns": [{ "include": "#content-embedded-style" }] }] }, { "begin": "\\s*(<)(?=script\\b)", "beginCaptures": { "1": { "name": "punctuation.definition.tag.begin.marko" } }, "comment": "HTML script tag", "end": "/>|(?<=\\>)", "endCaptures": { "0": { "name": "punctuation.definition.tag.end.marko" } }, "patterns": [{ "include": "#open-tag-content" }, { "begin": ">", "beginCaptures": { "0": { "name": "punctuation.definition.tag.end.marko" } }, "comment": "Script body content", "contentName": "source.js", "end": "\\s*(</)(script)?(>)", "endCaptures": { "1": { "name": "punctuation.definition.tag.end.marko" }, "2": { "patterns": [{ "include": "#tag-name" }] }, "3": { "name": "punctuation.definition.tag.end.marko" } }, "patterns": [{ "include": "#content-embedded-script" }] }] }, { "begin": "\\s*(<)(?=[a-zA-Z0-9_$@])", "beginCaptures": { "1": { "name": "punctuation.definition.tag.begin.marko" } }, "comment": "HTML normal tag", "end": "/>|(?<=\\>)", "endCaptures": { "0": { "name": "punctuation.definition.tag.end.marko" } }, "patterns": [{ "include": "#open-tag-content" }, { "begin": ">", "beginCaptures": { "0": { "name": "punctuation.definition.tag.end.marko" } }, "comment": "Body content", "end": "\\s*(</)([a-zA-Z0-9_$:@-]+)?(.*?)(>)", "endCaptures": { "1": { "name": "punctuation.definition.tag.end.marko" }, "2": { "patterns": [{ "include": "#tag-name" }] }, "3": { "patterns": [{ "include": "#invalid" }] }, "4": { "name": "punctuation.definition.tag.end.marko" } }, "patterns": [{ "include": "#content-html-mode" }] }] }] }, "tag-name": { "patterns": [{ "begin": "\\${", "beginCaptures": { "0": { "name": "punctuation.definition.template-expression.begin.js" } }, "comment": "Dynamic tag.", "end": "}", "endCaptures": { "0": { "name": "punctuation.definition.template-expression.end.js" } }, "patterns": [{ "include": "source.js" }] }, { "captures": { "1": { "name": "entity.name.tag.marko" }, "2": { "name": "storage.type.marko.css" }, "3": { "patterns": [{ "comment": "Core tag.", "match": "(attrs|return|import)(?=\\b)", "name": "support.type.builtin.marko" }, { "comment": "Core tag.", "match": "(for|if|while|else-if|else|macro|tag|await|let|const|effect|set|get|id|lifecycle)(?=\\b)", "name": "support.function.marko" }, { "comment": "Attribute tag.", "match": "@.+", "name": "entity.other.attribute-name.marko" }, { "comment": "Native or userland tag.", "match": ".+", "name": "entity.name.tag.marko" }] } }, "match": "(style)\\.([a-zA-Z0-9$_-]+(?:\\.[a-zA-Z0-9$_-]+)*)|([a-zA-Z0-9_$@][a-zA-Z0-9_$@:-]*)" }] } }, "scopeName": "text.marko", "uuid": "46c8c3f8-cabe-466a-a633-5deafdc51253", "displayName": "Marko", "embeddedLangs": ["css", "less", "scss", "javascript"] });
var marko = [
  ..._css_mjs__WEBPACK_IMPORTED_MODULE_0__["default"],
  ..._less_mjs__WEBPACK_IMPORTED_MODULE_1__["default"],
  ..._scss_mjs__WEBPACK_IMPORTED_MODULE_2__["default"],
  ..._javascript_mjs__WEBPACK_IMPORTED_MODULE_3__["default"],
  lang
];




/***/ }),

/***/ 2681:
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ scss)
/* harmony export */ });
/* harmony import */ var _css_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(90123);


const lang = Object.freeze({ "information_for_contributors": ["This file has been converted from https://github.com/atom/language-sass/blob/master/grammars/scss.cson", "If you want to provide a fix or improvement, please create a pull request against the original repository.", "Once accepted there, we are happy to receive an update request."], "version": "https://github.com/atom/language-sass/commit/f52ab12f7f9346cc2568129d8c4419bd3d506b47", "name": "scss", "scopeName": "source.css.scss", "patterns": [{ "include": "#variable_setting" }, { "include": "#at_rule_forward" }, { "include": "#at_rule_use" }, { "include": "#at_rule_include" }, { "include": "#at_rule_import" }, { "include": "#general" }, { "include": "#flow_control" }, { "include": "#rules" }, { "include": "#property_list" }, { "include": "#at_rule_mixin" }, { "include": "#at_rule_media" }, { "include": "#at_rule_function" }, { "include": "#at_rule_charset" }, { "include": "#at_rule_option" }, { "include": "#at_rule_namespace" }, { "include": "#at_rule_fontface" }, { "include": "#at_rule_page" }, { "include": "#at_rule_keyframes" }, { "include": "#at_rule_at_root" }, { "include": "#at_rule_supports" }, { "match": ";", "name": "punctuation.terminator.rule.css" }], "repository": { "at_rule_charset": { "begin": "\\s*((@)charset\\b)\\s*", "captures": { "1": { "name": "keyword.control.at-rule.charset.scss" }, "2": { "name": "punctuation.definition.keyword.scss" } }, "end": "\\s*((?=;|$))", "name": "meta.at-rule.charset.scss", "patterns": [{ "include": "#variable" }, { "include": "#string_single" }, { "include": "#string_double" }] }, "at_rule_content": { "begin": "\\s*((@)content\\b)\\s*", "captures": { "1": { "name": "keyword.control.content.scss" } }, "end": "\\s*((?=;))", "name": "meta.content.scss", "patterns": [{ "include": "#variable" }, { "include": "#selectors" }, { "include": "#property_values" }] }, "at_rule_each": { "begin": "\\s*((@)each\\b)\\s*", "captures": { "1": { "name": "keyword.control.each.scss" }, "2": { "name": "punctuation.definition.keyword.scss" } }, "end": "\\s*((?=}))", "name": "meta.at-rule.each.scss", "patterns": [{ "match": "\\b(in|,)\\b", "name": "keyword.control.operator" }, { "include": "#variable" }, { "include": "#property_values" }, { "include": "$self" }] }, "at_rule_else": { "begin": "\\s*((@)else(\\s*(if)?))\\s*", "captures": { "1": { "name": "keyword.control.else.scss" }, "2": { "name": "punctuation.definition.keyword.scss" } }, "end": "\\s*(?={)", "name": "meta.at-rule.else.scss", "patterns": [{ "include": "#conditional_operators" }, { "include": "#variable" }, { "include": "#property_values" }] }, "at_rule_extend": { "begin": "\\s*((@)extend\\b)\\s*", "captures": { "1": { "name": "keyword.control.at-rule.extend.scss" }, "2": { "name": "punctuation.definition.keyword.scss" } }, "end": "\\s*(?=;)", "name": "meta.at-rule.extend.scss", "patterns": [{ "include": "#variable" }, { "include": "#selectors" }, { "include": "#property_values" }] }, "at_rule_fontface": { "patterns": [{ "begin": "^\\s*((@)font-face\\b)", "beginCaptures": { "1": { "name": "keyword.control.at-rule.fontface.scss" }, "2": { "name": "punctuation.definition.keyword.scss" } }, "end": "\\s*(?={)", "name": "meta.at-rule.fontface.scss", "patterns": [{ "include": "#function_attributes" }] }] }, "at_rule_for": { "begin": "\\s*((@)for\\b)\\s*", "captures": { "1": { "name": "keyword.control.for.scss" }, "2": { "name": "punctuation.definition.keyword.scss" } }, "end": "\\s*(?={)", "name": "meta.at-rule.for.scss", "patterns": [{ "match": "(==|!=|<=|>=|<|>|from|to|through)", "name": "keyword.control.operator" }, { "include": "#variable" }, { "include": "#property_values" }, { "include": "$self" }] }, "at_rule_forward": { "begin": "\\s*((@)forward\\b)\\s*", "captures": { "1": { "name": "keyword.control.at-rule.forward.scss" }, "2": { "name": "punctuation.definition.keyword.scss" } }, "end": "\\s*(?=;)", "name": "meta.at-rule.forward.scss", "patterns": [{ "match": "\\b(as|hide|show)\\b", "name": "keyword.control.operator" }, { "match": "\\b([\\w-]+)(\\*)", "captures": { "1": { "name": "entity.other.attribute-name.module.scss" }, "2": { "name": "punctuation.definition.wildcard.scss" } } }, { "match": "\\b[\\w-]+\\b", "name": "entity.name.function.scss" }, { "include": "#variable" }, { "include": "#string_single" }, { "include": "#string_double" }, { "include": "#comment_line" }, { "include": "#comment_block" }] }, "at_rule_function": { "patterns": [{ "begin": "\\s*((@)function\\b)\\s*", "captures": { "1": { "name": "keyword.control.at-rule.function.scss" }, "2": { "name": "punctuation.definition.keyword.scss" }, "3": { "name": "entity.name.function.scss" } }, "end": "\\s*(?={)", "name": "meta.at-rule.function.scss", "patterns": [{ "include": "#function_attributes" }] }, { "captures": { "1": { "name": "keyword.control.at-rule.function.scss" }, "2": { "name": "punctuation.definition.keyword.scss" }, "3": { "name": "entity.name.function.scss" } }, "match": "\\s*((@)function\\b)\\s*", "name": "meta.at-rule.function.scss" }] }, "at_rule_if": { "begin": "\\s*((@)if\\b)\\s*", "captures": { "1": { "name": "keyword.control.if.scss" }, "2": { "name": "punctuation.definition.keyword.scss" } }, "end": "\\s*(?={)", "name": "meta.at-rule.if.scss", "patterns": [{ "include": "#conditional_operators" }, { "include": "#variable" }, { "include": "#property_values" }] }, "at_rule_import": { "begin": "\\s*((@)import\\b)\\s*", "captures": { "1": { "name": "keyword.control.at-rule.import.scss" }, "2": { "name": "punctuation.definition.keyword.scss" } }, "end": "\\s*((?=;)|(?=}))", "name": "meta.at-rule.import.scss", "patterns": [{ "include": "#variable" }, { "include": "#string_single" }, { "include": "#string_double" }, { "include": "#functions" }, { "include": "#comment_line" }] }, "at_rule_include": { "patterns": [{ "begin": "(?<=@include)\\s+(?:([\\w-]+)\\s*(\\.))?([\\w-]+)\\s*(\\()", "beginCaptures": { "1": { "name": "variable.scss" }, "2": { "name": "punctuation.access.module.scss" }, "3": { "name": "entity.name.function.scss" }, "4": { "name": "punctuation.definition.parameters.begin.bracket.round.scss" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.parameters.end.bracket.round.scss" } }, "name": "meta.at-rule.include.scss", "patterns": [{ "include": "#function_attributes" }] }, { "match": "(?<=@include)\\s+(?:([\\w-]+)\\s*(\\.))?([\\w-]+)", "captures": { "0": { "name": "meta.at-rule.include.scss" }, "1": { "name": "variable.scss" }, "2": { "name": "punctuation.access.module.scss" }, "3": { "name": "entity.name.function.scss" } } }, { "match": "((@)include)\\b", "captures": { "0": { "name": "meta.at-rule.include.scss" }, "1": { "name": "keyword.control.at-rule.include.scss" }, "2": { "name": "punctuation.definition.keyword.scss" } } }] }, "at_rule_keyframes": { "begin": "(?<=^|\\s)(@)(?:-(?:webkit|moz)-)?keyframes\\b", "beginCaptures": { "0": { "name": "keyword.control.at-rule.keyframes.scss" }, "1": { "name": "punctuation.definition.keyword.scss" } }, "end": "(?<=})", "name": "meta.at-rule.keyframes.scss", "patterns": [{ "match": "(?<=@keyframes)\\s+((?:[_A-Za-z][-\\w]|-[_A-Za-z])[-\\w]*)", "captures": { "1": { "name": "entity.name.function.scss" } } }, { "begin": '(?<=@keyframes)\\s+(")', "beginCaptures": { "1": { "name": "punctuation.definition.string.begin.scss" } }, "end": '"', "endCaptures": { "0": { "name": "punctuation.definition.string.end.scss" } }, "name": "string.quoted.double.scss", "contentName": "entity.name.function.scss", "patterns": [{ "match": "\\\\(\\h{1,6}|.)", "name": "constant.character.escape.scss" }, { "include": "#interpolation" }] }, { "begin": "(?<=@keyframes)\\s+(')", "beginCaptures": { "1": { "name": "punctuation.definition.string.begin.scss" } }, "end": "'", "endCaptures": { "0": { "name": "punctuation.definition.string.end.scss" } }, "name": "string.quoted.single.scss", "contentName": "entity.name.function.scss", "patterns": [{ "match": "\\\\(\\h{1,6}|.)", "name": "constant.character.escape.scss" }, { "include": "#interpolation" }] }, { "begin": "{", "beginCaptures": { "0": { "name": "punctuation.section.keyframes.begin.scss" } }, "end": "}", "endCaptures": { "0": { "name": "punctuation.section.keyframes.end.scss" } }, "patterns": [{ "match": "\\b(?:(?:100|[1-9]\\d|\\d)%|from|to)(?=\\s*{)", "name": "entity.other.attribute-name.scss" }, { "include": "#flow_control" }, { "include": "#interpolation" }, { "include": "#property_list" }, { "include": "#rules" }] }] }, "at_rule_media": { "patterns": [{ "begin": "^\\s*((@)media)\\b", "beginCaptures": { "1": { "name": "keyword.control.at-rule.media.scss" }, "2": { "name": "punctuation.definition.keyword.scss" } }, "end": "\\s*(?={)", "name": "meta.at-rule.media.scss", "patterns": [{ "include": "#comment_docblock" }, { "include": "#comment_block" }, { "include": "#comment_line" }, { "match": "\\b(only)\\b", "name": "keyword.control.operator.css.scss" }, { "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.media-query.begin.bracket.round.scss" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.media-query.end.bracket.round.scss" } }, "name": "meta.property-list.media-query.scss", "patterns": [{ "begin": "(?<![-a-z])(?=[-a-z])", "end": "$|(?![-a-z])", "name": "meta.property-name.media-query.scss", "patterns": [{ "include": "source.css#media-features" }, { "include": "source.css#property-names" }] }, { "begin": "(:)\\s*(?!(\\s*{))", "beginCaptures": { "1": { "name": "punctuation.separator.key-value.scss" } }, "end": "\\s*(;|(?=}|\\)))", "endCaptures": { "1": { "name": "punctuation.terminator.rule.scss" } }, "contentName": "meta.property-value.media-query.scss", "patterns": [{ "include": "#general" }, { "include": "#property_values" }] }] }, { "include": "#variable" }, { "include": "#conditional_operators" }, { "include": "source.css#media-types" }] }] }, "at_rule_mixin": { "patterns": [{ "begin": "(?<=@mixin)\\s+([\\w-]+)\\s*(\\()", "beginCaptures": { "1": { "name": "entity.name.function.scss" }, "2": { "name": "punctuation.definition.parameters.begin.bracket.round.scss" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.parameters.end.bracket.round.scss" } }, "name": "meta.at-rule.mixin.scss", "patterns": [{ "include": "#function_attributes" }] }, { "match": "(?<=@mixin)\\s+([\\w-]+)", "captures": { "1": { "name": "entity.name.function.scss" } }, "name": "meta.at-rule.mixin.scss" }, { "match": "((@)mixin)\\b", "captures": { "1": { "name": "keyword.control.at-rule.mixin.scss" }, "2": { "name": "punctuation.definition.keyword.scss" } }, "name": "meta.at-rule.mixin.scss" }] }, "at_rule_namespace": { "patterns": [{ "begin": "(?<=@namespace)\\s+(?=url)", "end": "(?=;|$)", "name": "meta.at-rule.namespace.scss", "patterns": [{ "include": "#property_values" }, { "include": "#string_single" }, { "include": "#string_double" }] }, { "begin": "(?<=@namespace)\\s+([\\w-]*)", "captures": { "1": { "name": "entity.name.namespace-prefix.scss" } }, "end": "(?=;|$)", "name": "meta.at-rule.namespace.scss", "patterns": [{ "include": "#variables" }, { "include": "#property_values" }, { "include": "#string_single" }, { "include": "#string_double" }] }, { "match": "((@)namespace)\\b", "captures": { "1": { "name": "keyword.control.at-rule.namespace.scss" }, "2": { "name": "punctuation.definition.keyword.scss" } }, "name": "meta.at-rule.namespace.scss" }] }, "at_rule_option": { "captures": { "1": { "name": "keyword.control.at-rule.charset.scss" }, "2": { "name": "punctuation.definition.keyword.scss" } }, "match": "^\\s*((@)option\\b)\\s*", "name": "meta.at-rule.option.scss" }, "at_rule_page": { "patterns": [{ "begin": "^\\s*((@)page)(?=:|\\s)\\s*([-:\\w]*)", "captures": { "1": { "name": "keyword.control.at-rule.page.scss" }, "2": { "name": "punctuation.definition.keyword.scss" }, "3": { "name": "entity.name.function.scss" } }, "end": "\\s*(?={)", "name": "meta.at-rule.page.scss" }] }, "at_rule_return": { "begin": "\\s*((@)(return)\\b)", "captures": { "1": { "name": "keyword.control.return.scss" }, "2": { "name": "punctuation.definition.keyword.scss" } }, "end": "\\s*((?=;))", "name": "meta.at-rule.return.scss", "patterns": [{ "include": "#variable" }, { "include": "#property_values" }] }, "at_rule_at_root": { "begin": "\\s*((@)(at-root))(\\s+|$)", "end": "\\s*(?={)", "beginCaptures": { "1": { "name": "keyword.control.at-rule.at-root.scss" }, "2": { "name": "punctuation.definition.keyword.scss" } }, "name": "meta.at-rule.at-root.scss", "patterns": [{ "include": "#function_attributes" }, { "include": "#functions" }, { "include": "#selectors" }] }, "at_rule_supports": { "begin": "(?<=^|\\s)(@)supports\\b", "captures": { "0": { "name": "keyword.control.at-rule.supports.scss" }, "1": { "name": "punctuation.definition.keyword.scss" } }, "end": "(?={)|$", "name": "meta.at-rule.supports.scss", "patterns": [{ "include": "#logical_operators" }, { "include": "#properties" }, { "match": "\\(", "name": "punctuation.definition.condition.begin.bracket.round.scss" }, { "match": "\\)", "name": "punctuation.definition.condition.end.bracket.round.scss" }] }, "at_rule_use": { "begin": "\\s*((@)use\\b)\\s*", "captures": { "1": { "name": "keyword.control.at-rule.use.scss" }, "2": { "name": "punctuation.definition.keyword.scss" } }, "end": "\\s*(?=;)", "name": "meta.at-rule.use.scss", "patterns": [{ "match": "\\b(as|with)\\b", "name": "keyword.control.operator" }, { "match": "\\b[\\w-]+\\b", "name": "variable.scss" }, { "match": "\\*", "name": "variable.language.expanded-namespace.scss" }, { "include": "#string_single" }, { "include": "#string_double" }, { "include": "#comment_line" }, { "include": "#comment_block" }, { "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.parameters.begin.bracket.round.scss" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.parameters.end.bracket.round.scss" } }, "patterns": [{ "include": "#function_attributes" }] }] }, "at_rule_warn": { "begin": "\\s*((@)(warn|debug|error)\\b)\\s*", "captures": { "1": { "name": "keyword.control.warn.scss" }, "2": { "name": "punctuation.definition.keyword.scss" } }, "end": "\\s*(?=;)", "name": "meta.at-rule.warn.scss", "patterns": [{ "include": "#variable" }, { "include": "#string_double" }, { "include": "#string_single" }] }, "at_rule_while": { "begin": "\\s*((@)while\\b)\\s*", "captures": { "1": { "name": "keyword.control.while.scss" }, "2": { "name": "punctuation.definition.keyword.scss" } }, "end": "\\s*(?=})", "name": "meta.at-rule.while.scss", "patterns": [{ "include": "#conditional_operators" }, { "include": "#variable" }, { "include": "#property_values" }, { "include": "$self" }] }, "comment_docblock": { "name": "comment.block.documentation.scss", "begin": "///", "beginCaptures": { "0": { "name": "punctuation.definition.comment.scss" } }, "end": "(?=$)", "patterns": [{ "include": "source.sassdoc" }] }, "comment_block": { "begin": "/\\*", "beginCaptures": { "0": { "name": "punctuation.definition.comment.scss" } }, "end": "\\*/", "endCaptures": { "0": { "name": "punctuation.definition.comment.scss" } }, "name": "comment.block.scss" }, "comment_line": { "begin": "//", "beginCaptures": { "0": { "name": "punctuation.definition.comment.scss" } }, "end": "\\n", "name": "comment.line.scss" }, "constant_default": { "match": "!default", "name": "keyword.other.default.scss" }, "constant_functions": { "begin": "(?:([\\w-]+)(\\.))?([\\w-]+)(\\()", "beginCaptures": { "1": { "name": "variable.scss" }, "2": { "name": "punctuation.access.module.scss" }, "3": { "name": "support.function.misc.scss" }, "4": { "name": "punctuation.section.function.scss" } }, "end": "(\\))", "endCaptures": { "1": { "name": "punctuation.section.function.scss" } }, "patterns": [{ "include": "#parameters" }] }, "constant_important": { "match": "!important", "name": "keyword.other.important.scss" }, "constant_mathematical_symbols": { "match": "\\b(\\+|-|\\*|/)\\b", "name": "support.constant.mathematical-symbols.scss" }, "constant_optional": { "match": "!optional", "name": "keyword.other.optional.scss" }, "constant_sass_functions": { "begin": "(headings|stylesheet-url|rgba?|hsla?|ie-hex-str|red|green|blue|alpha|opacity|hue|saturation|lightness|prefixed|prefix|-moz|-svg|-css2|-pie|-webkit|-ms|font-(?:files|url)|grid-image|image-(?:width|height|url|color)|sprites?|sprite-(?:map|map-name|file|url|position)|inline-(?:font-files|image)|opposite-position|grad-point|grad-end-position|color-stops|color-stops-in-percentages|grad-color-stops|(?:radial|linear)-(?:gradient|svg-gradient)|opacify|fade-?in|transparentize|fade-?out|lighten|darken|saturate|desaturate|grayscale|adjust-(?:hue|lightness|saturation|color)|scale-(?:lightness|saturation|color)|change-color|spin|complement|invert|mix|-compass-(?:list|space-list|slice|nth|list-size)|blank|compact|nth|first-value-of|join|length|append|nest|append-selector|headers|enumerate|range|percentage|unitless|unit|if|type-of|comparable|elements-of-type|quote|unquote|escape|e|sin|cos|tan|abs|round|ceil|floor|pi|translate(?:X|Y))(\\()", "beginCaptures": { "1": { "name": "support.function.misc.scss" }, "2": { "name": "punctuation.section.function.scss" } }, "end": "(\\))", "endCaptures": { "1": { "name": "punctuation.section.function.scss" } }, "patterns": [{ "include": "#parameters" }] }, "flow_control": { "patterns": [{ "include": "#at_rule_if" }, { "include": "#at_rule_else" }, { "include": "#at_rule_warn" }, { "include": "#at_rule_for" }, { "include": "#at_rule_while" }, { "include": "#at_rule_each" }, { "include": "#at_rule_return" }] }, "function_attributes": { "patterns": [{ "match": ":", "name": "punctuation.separator.key-value.scss" }, { "include": "#general" }, { "include": "#property_values" }, { "match": "[={}\\?;@]", "name": "invalid.illegal.scss" }] }, "functions": { "patterns": [{ "begin": "([\\w-]{1,})(\\()\\s*", "beginCaptures": { "1": { "name": "support.function.misc.scss" }, "2": { "name": "punctuation.section.function.scss" } }, "end": "(\\))", "endCaptures": { "1": { "name": "punctuation.section.function.scss" } }, "patterns": [{ "include": "#parameters" }] }, { "match": "([\\w-]{1,})", "name": "support.function.misc.scss" }] }, "general": { "patterns": [{ "include": "#variable" }, { "include": "#comment_docblock" }, { "include": "#comment_block" }, { "include": "#comment_line" }] }, "interpolation": { "begin": "#{", "beginCaptures": { "0": { "name": "punctuation.definition.interpolation.begin.bracket.curly.scss" } }, "end": "}", "endCaptures": { "0": { "name": "punctuation.definition.interpolation.end.bracket.curly.scss" } }, "name": "variable.interpolation.scss", "patterns": [{ "include": "#variable" }, { "include": "#property_values" }] }, "conditional_operators": { "patterns": [{ "include": "#comparison_operators" }, { "include": "#logical_operators" }] }, "comparison_operators": { "match": "==|!=|<=|>=|<|>", "name": "keyword.operator.comparison.scss" }, "logical_operators": { "match": "\\b(not|or|and)\\b", "name": "keyword.operator.logical.scss" }, "map": { "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.map.begin.bracket.round.scss" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.map.end.bracket.round.scss" } }, "name": "meta.definition.variable.map.scss", "patterns": [{ "include": "#comment_docblock" }, { "include": "#comment_block" }, { "include": "#comment_line" }, { "match": "\\b([\\w-]+)\\s*(:)", "captures": { "1": { "name": "support.type.map.key.scss" }, "2": { "name": "punctuation.separator.key-value.scss" } } }, { "match": ",", "name": "punctuation.separator.delimiter.scss" }, { "include": "#map" }, { "include": "#variable" }, { "include": "#property_values" }] }, "operators": { "match": "[-+*/](?!\\s*[-+*/])", "name": "keyword.operator.css" }, "parameters": { "patterns": [{ "include": "#variable" }, { "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.begin.bracket.round.scss" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.end.bracket.round.scss" } }, "patterns": [{ "include": "#function_attributes" }] }, { "include": "#property_values" }, { "include": "#comment_block" }, { "match": `[^'",) \\t]+`, "name": "variable.parameter.url.scss" }, { "match": ",", "name": "punctuation.separator.delimiter.scss" }] }, "properties": { "patterns": [{ "begin": "(?<![-a-z])(?=[-a-z])", "end": "$|(?![-a-z])", "name": "meta.property-name.scss", "patterns": [{ "include": "source.css#property-names" }, { "include": "#at_rule_include" }] }, { "begin": "(:)\\s*(?!(\\s*{))", "beginCaptures": { "1": { "name": "punctuation.separator.key-value.scss" } }, "end": "\\s*(;|(?=}|\\)))", "endCaptures": { "1": { "name": "punctuation.terminator.rule.scss" } }, "contentName": "meta.property-value.scss", "patterns": [{ "include": "#general" }, { "include": "#property_values" }] }] }, "property_list": { "begin": "{", "beginCaptures": { "0": { "name": "punctuation.section.property-list.begin.bracket.curly.scss" } }, "end": "}", "endCaptures": { "0": { "name": "punctuation.section.property-list.end.bracket.curly.scss" } }, "name": "meta.property-list.scss", "patterns": [{ "include": "#flow_control" }, { "include": "#rules" }, { "include": "#properties" }, { "include": "$self" }] }, "property_values": { "patterns": [{ "include": "#string_single" }, { "include": "#string_double" }, { "include": "#constant_functions" }, { "include": "#constant_sass_functions" }, { "include": "#constant_important" }, { "include": "#constant_default" }, { "include": "#constant_optional" }, { "include": "source.css#numeric-values" }, { "include": "source.css#property-keywords" }, { "include": "source.css#color-keywords" }, { "include": "source.css#property-names" }, { "include": "#constant_mathematical_symbols" }, { "include": "#operators" }, { "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.begin.bracket.round.scss" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.end.bracket.round.scss" } }, "patterns": [{ "include": "#general" }, { "include": "#property_values" }] }] }, "rules": { "patterns": [{ "include": "#general" }, { "include": "#at_rule_extend" }, { "include": "#at_rule_content" }, { "include": "#at_rule_include" }, { "include": "#at_rule_media" }, { "include": "#selectors" }] }, "selector_attribute": { "match": `(?xi)
(\\[)
\\s*
(
  (?:
    [-a-zA-Z_0-9]|[^\\x00-\\x7F]       # Valid identifier characters
    | \\\\(?:[0-9a-fA-F]{1,6}|.)       # Escape sequence
    | \\#\\{                           # Interpolation (escaped to avoid Coffeelint errors)
    | \\.?\\$                          # Possible start of interpolation variable
    | }                                # Possible end of interpolation
  )+?
)
(?:
  \\s*([~|^$*]?=)\\s*
  (?:
    (
      (?:
        [-a-zA-Z_0-9]|[^\\x00-\\x7F]       # Valid identifier characters
        | \\\\(?:[0-9a-fA-F]{1,6}|.)       # Escape sequence
        | \\#\\{                           # Interpolation (escaped to avoid Coffeelint errors)
        | \\.?\\$                          # Possible start of interpolation variable
        | }                                # Possible end of interpolation
      )+
    )
    |
    ((")(.*?)("))
    |
    ((')(.*?)('))
  )
)?
\\s*
(\\])`, "name": "meta.attribute-selector.scss", "captures": { "1": { "name": "punctuation.definition.attribute-selector.begin.bracket.square.scss" }, "2": { "name": "entity.other.attribute-name.attribute.scss", "patterns": [{ "include": "#interpolation" }, { "match": "\\\\([0-9a-fA-F]{1,6}|.)", "name": "constant.character.escape.scss" }, { "match": "\\$|}", "name": "invalid.illegal.scss" }] }, "3": { "name": "keyword.operator.scss" }, "4": { "name": "string.unquoted.attribute-value.scss", "patterns": [{ "include": "#interpolation" }, { "match": "\\\\([0-9a-fA-F]{1,6}|.)", "name": "constant.character.escape.scss" }, { "match": "\\$|}", "name": "invalid.illegal.scss" }] }, "5": { "name": "string.quoted.double.attribute-value.scss" }, "6": { "name": "punctuation.definition.string.begin.scss" }, "7": { "patterns": [{ "include": "#interpolation" }, { "match": "\\\\([0-9a-fA-F]{1,6}|.)", "name": "constant.character.escape.scss" }, { "match": "\\$|}", "name": "invalid.illegal.scss" }] }, "8": { "name": "punctuation.definition.string.end.scss" }, "9": { "name": "string.quoted.single.attribute-value.scss" }, "10": { "name": "punctuation.definition.string.begin.scss" }, "11": { "patterns": [{ "include": "#interpolation" }, { "match": "\\\\([0-9a-fA-F]{1,6}|.)", "name": "constant.character.escape.scss" }, { "match": "\\$|}", "name": "invalid.illegal.scss" }] }, "12": { "name": "punctuation.definition.string.end.scss" }, "13": { "name": "punctuation.definition.attribute-selector.end.bracket.square.scss" } } }, "selector_class": { "match": "(?x)\n(\\.)                                  # Valid class-name\n(\n  (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F]     # Valid identifier characters\n    | \\\\(?:[0-9a-fA-F]{1,6}|.)       # Escape sequence\n    | \\#\\{                           # Interpolation (escaped to avoid Coffeelint errors)\n    | \\.?\\$                          # Possible start of interpolation variable\n    | }                                # Possible end of interpolation\n  )+\n)                                      # Followed by either:\n(?= $                                  # - End of the line\n  | [\\s,\\#)\\[:{>+~|]                # - Another selector\n  | \\.[^$]                            # - Class selector, negating module variable\n  | /\\*                               # - A block comment\n  | ;                                  # - A semicolon\n)", "name": "entity.other.attribute-name.class.css", "captures": { "1": { "name": "punctuation.definition.entity.css" }, "2": { "patterns": [{ "include": "#interpolation" }, { "match": "\\\\([0-9a-fA-F]{1,6}|.)", "name": "constant.character.escape.scss" }, { "match": "\\$|}", "name": "invalid.illegal.scss" }] } } }, "selector_custom": { "match": "\\b([a-zA-Z0-9]+(-[a-zA-Z0-9]+)+)(?=\\.|\\s++[^:]|\\s*[,\\[{]|:(link|visited|hover|active|focus|target|lang|disabled|enabled|checked|indeterminate|root|nth-(child|last-child|of-type|last-of-type)|first-child|last-child|first-of-type|last-of-type|only-child|only-of-type|empty|not|valid|invalid)(\\([0-9A-Za-z]*\\))?)", "name": "entity.name.tag.custom.scss" }, "selector_id": { "match": "(?x)\n(\\#)                                  # Valid id-name\n(\n  (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F]     # Valid identifier characters\n    | \\\\(?:[0-9a-fA-F]{1,6}|.)       # Escape sequence\n    | \\#\\{                           # Interpolation (escaped to avoid Coffeelint errors)\n    | \\.?\\$                          # Possible start of interpolation variable\n    | }                                # Possible end of interpolation\n  )+\n)                                      # Followed by either:\n(?= $                                  # - End of the line\n  | [\\s,\\#)\\[:{>+~|]                # - Another selector\n  | \\.[^$]                            # - Class selector, negating module variable\n  | /\\*                               # - A block comment\n)", "name": "entity.other.attribute-name.id.css", "captures": { "1": { "name": "punctuation.definition.entity.css" }, "2": { "patterns": [{ "include": "#interpolation" }, { "match": "\\\\([0-9a-fA-F]{1,6}|.)", "name": "constant.character.escape.scss" }, { "match": "\\$|}", "name": "invalid.illegal.identifier.scss" }] } } }, "selector_placeholder": { "match": "(?x)\n(%)                                    # Valid placeholder-name\n(\n  (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F]     # Valid identifier characters\n    | \\\\(?:[0-9a-fA-F]{1,6}|.)       # Escape sequence\n    | \\#\\{                           # Interpolation (escaped to avoid Coffeelint errors)\n    | \\.\\$                           # Possible start of interpolation module scope variable\n    | \\$                              # Possible start of interpolation variable\n    | }                                # Possible end of interpolation\n  )+\n)                                      # Followed by either:\n(?= ;                                  # - End of statement\n  | $                                  # - End of the line\n  | [\\s,\\#)\\[:{>+~|]                # - Another selector\n  | \\.[^$]                            # - Class selector, negating module variable\n  | /\\*                               # - A block comment\n)", "name": "entity.other.attribute-name.placeholder.css", "captures": { "1": { "name": "punctuation.definition.entity.css" }, "2": { "patterns": [{ "include": "#interpolation" }, { "match": "\\\\([0-9a-fA-F]{1,6}|.)", "name": "constant.character.escape.scss" }, { "match": "\\$|}", "name": "invalid.illegal.identifier.scss" }] } } }, "parent_selector_suffix": { "match": "(?x)\n(?<=&)\n(\n  (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F]     # Valid identifier characters\n    | \\\\(?:[0-9a-fA-F]{1,6}|.)       # Escape sequence\n    | \\#\\{                           # Interpolation (escaped to avoid Coffeelint errors)\n    | \\$                              # Possible start of interpolation variable\n    | }                                # Possible end of interpolation\n  )+\n)                                      # Followed by either:\n(?= $                                  # - End of the line\n  | [\\s,.\\#)\\[:{>+~|]               # - Another selector\n  | /\\*                               # - A block comment\n)", "name": "entity.other.attribute-name.parent-selector-suffix.css", "captures": { "1": { "name": "punctuation.definition.entity.css" }, "2": { "patterns": [{ "include": "#interpolation" }, { "match": "\\\\([0-9a-fA-F]{1,6}|.)", "name": "constant.character.escape.scss" }, { "match": "\\$|}", "name": "invalid.illegal.identifier.scss" }] } } }, "selector_pseudo_class": { "patterns": [{ "begin": "((:)\\bnth-(?:child|last-child|of-type|last-of-type))(\\()", "beginCaptures": { "1": { "name": "entity.other.attribute-name.pseudo-class.css" }, "2": { "name": "punctuation.definition.entity.css" }, "3": { "name": "punctuation.definition.pseudo-class.begin.bracket.round.css" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.pseudo-class.end.bracket.round.css" } }, "patterns": [{ "include": "#interpolation" }, { "match": "\\d+", "name": "constant.numeric.css" }, { "match": "(?<=\\d)n\\b|\\b(n|even|odd)\\b", "name": "constant.other.scss" }, { "match": "\\w+", "name": "invalid.illegal.scss" }] }, { "include": "source.css#pseudo-classes" }, { "include": "source.css#pseudo-elements" }, { "include": "source.css#functional-pseudo-classes" }] }, "selectors": { "patterns": [{ "include": "source.css#tag-names" }, { "include": "#selector_custom" }, { "include": "#selector_class" }, { "include": "#selector_id" }, { "include": "#selector_pseudo_class" }, { "include": "#tag_wildcard" }, { "include": "#tag_parent_reference" }, { "include": "source.css#pseudo-elements" }, { "include": "#selector_attribute" }, { "include": "#selector_placeholder" }, { "include": "#parent_selector_suffix" }] }, "string_double": { "begin": '"', "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.scss" } }, "end": '"', "endCaptures": { "0": { "name": "punctuation.definition.string.end.scss" } }, "name": "string.quoted.double.scss", "patterns": [{ "match": "\\\\(\\h{1,6}|.)", "name": "constant.character.escape.scss" }, { "include": "#interpolation" }] }, "string_single": { "begin": "'", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.scss" } }, "end": "'", "endCaptures": { "0": { "name": "punctuation.definition.string.end.scss" } }, "name": "string.quoted.single.scss", "patterns": [{ "match": "\\\\(\\h{1,6}|.)", "name": "constant.character.escape.scss" }, { "include": "#interpolation" }] }, "tag_parent_reference": { "match": "&", "name": "entity.name.tag.reference.scss" }, "tag_wildcard": { "match": "\\*", "name": "entity.name.tag.wildcard.scss" }, "variable": { "patterns": [{ "include": "#variables" }, { "include": "#interpolation" }] }, "variable_setting": { "begin": "(?=\\$[\\w-]+\\s*:)", "end": ";", "endCaptures": { "0": { "name": "punctuation.terminator.rule.scss" } }, "contentName": "meta.definition.variable.scss", "patterns": [{ "match": "\\$[\\w-]+(?=\\s*:)", "name": "variable.scss" }, { "begin": ":", "beginCaptures": { "0": { "name": "punctuation.separator.key-value.scss" } }, "end": "(?=;)", "patterns": [{ "include": "#comment_docblock" }, { "include": "#comment_block" }, { "include": "#comment_line" }, { "include": "#map" }, { "include": "#property_values" }, { "include": "#variable" }, { "match": ",", "name": "punctuation.separator.delimiter.scss" }] }] }, "variables": { "patterns": [{ "match": "\\b([\\w-]+)(\\.)(\\$[\\w-]+)\\b", "captures": { "1": { "name": "variable.scss" }, "2": { "name": "punctuation.access.module.scss" }, "3": { "name": "variable.scss" } } }, { "match": "(\\$|\\-\\-)[A-Za-z0-9_-]+\\b", "name": "variable.scss" }] } }, "displayName": "SCSS", "embeddedLangs": ["css"] });
var scss = [
  ..._css_mjs__WEBPACK_IMPORTED_MODULE_0__["default"],
  lang
];




/***/ })

};
;