Files
vscode/extensions/javascript/syntaxes/JavaScript.tmLanguage

2255 lines
48 KiB
Plaintext

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>fileTypes</key>
<array>
<string>js</string>
<string>jsx</string>
</array>
<key>name</key>
<string>JavaScript (with React support)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
</array>
<key>repository</key>
<dict>
<key>access-modifier</key>
<dict>
<key>match</key>
<string>\b(public|protected|private)\b</string>
<key>name</key>
<string>storage.modifier.js</string>
</dict>
<key>arithmetic-operator</key>
<dict>
<key>match</key>
<string>\*|/|\-\-|\-|\+\+|\+|%</string>
<key>name</key>
<string>keyword.operator.arithmetic.js</string>
</dict>
<key>array-literal</key>
<dict>
<key>begin</key>
<string>\[</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>meta.brace.square.js</string>
</dict>
</dict>
<key>end</key>
<string>\]</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>meta.brace.square.js</string>
</dict>
</dict>
<key>name</key>
<string>meta.array.literal.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
</array>
</dict>
<key>assignment-operator</key>
<dict>
<key>match</key>
<string>&lt;&lt;=|&gt;&gt;&gt;=|&gt;&gt;=|\*=|(?&lt;!\()/=|%=|\+=|\-=|&amp;=|\^=</string>
<key>name</key>
<string>keyword.operator.assignment.js</string>
</dict>
<key>await-modifier</key>
<dict>
<key>match</key>
<string>\bawait\b</string>
<key>name</key>
<string>storage.modifier.js</string>
</dict>
<key>block</key>
<dict>
<key>begin</key>
<string>\{</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>meta.brace.curly.js</string>
</dict>
</dict>
<key>end</key>
<string>\}</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>meta.brace.curly.js</string>
</dict>
</dict>
<key>name</key>
<string>meta.block.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#object-member</string>
</dict>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
</array>
</dict>
<key>boolean-literal</key>
<dict>
<key>match</key>
<string>\b(false|true)\b</string>
<key>name</key>
<string>constant.language.boolean.js</string>
</dict>
<key>case-clause</key>
<dict>
<key>begin</key>
<string>(?&lt;!\.)\b(case|default)\b</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.js</string>
</dict>
</dict>
<key>end</key>
<string>:</string>
<key>name</key>
<string>case-clause.expr.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
</array>
</dict>
<key>comment</key>
<dict>
<key>name</key>
<string>comment.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comment-block-doc</string>
</dict>
<dict>
<key>include</key>
<string>#comment-block</string>
</dict>
<dict>
<key>include</key>
<string>#comment-line</string>
</dict>
</array>
</dict>
<key>comment-block</key>
<dict>
<key>begin</key>
<string>/\*</string>
<key>end</key>
<string>\*/</string>
<key>name</key>
<string>comment.block.js</string>
</dict>
<key>comment-block-doc</key>
<dict>
<key>begin</key>
<string>/\*\*(?!/)</string>
<key>end</key>
<string>\*/</string>
<key>name</key>
<string>comment.block.documentation.js</string>
</dict>
<key>comment-line</key>
<dict>
<key>match</key>
<string>(//).*$\n?</string>
<key>name</key>
<string>comment.line.js</string>
</dict>
<key>control-statement</key>
<dict>
<key>match</key>
<string>(?&lt;!\.)\b(break|catch|continue|debugger|declare|do|else|finally|for|if|return|switch|throw|try|while|with|super|case|default)\b</string>
<key>name</key>
<string>keyword.control.js</string>
</dict>
<key>decl-block</key>
<dict>
<key>begin</key>
<string>\{</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>meta.brace.curly.js</string>
</dict>
</dict>
<key>end</key>
<string>\}</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>meta.brace.curly.js</string>
</dict>
</dict>
<key>name</key>
<string>meta.decl.block.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
</array>
</dict>
<key>declaration</key>
<dict>
<key>name</key>
<string>meta.declaration.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#function-declaration</string>
</dict>
<dict>
<key>include</key>
<string>#object-declaration</string>
</dict>
<dict>
<key>include</key>
<string>#type-declaration</string>
</dict>
<dict>
<key>include</key>
<string>#enum-declaration</string>
</dict>
</array>
</dict>
<key>enum-declaration</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.modifier.js</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.type.js</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>entity.name.class.js</string>
</dict>
</dict>
<key>match</key>
<string>(?:\b(const)\s+)?\b(enum)\s+([a-zA-Z_$][\w$]*)</string>
<key>name</key>
<string>meta.enum.declaration.js</string>
</dict>
<key>expression</key>
<dict>
<key>name</key>
<string>meta.expression.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#jsx</string>
</dict>
<dict>
<key>include</key>
<string>#for-in-simple</string>
</dict>
<dict>
<key>include</key>
<string>#string</string>
</dict>
<dict>
<key>include</key>
<string>#regex</string>
</dict>
<dict>
<key>include</key>
<string>#template</string>
</dict>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>include</key>
<string>#literal</string>
</dict>
<dict>
<key>include</key>
<string>#paren-expression</string>
</dict>
<dict>
<key>include</key>
<string>#var-expr</string>
</dict>
<dict>
<key>include</key>
<string>#declaration</string>
</dict>
<dict>
<key>include</key>
<string>#new-expr</string>
</dict>
<dict>
<key>include</key>
<string>#switch-statement</string>
</dict>
<dict>
<key>include</key>
<string>#block</string>
</dict>
<dict>
<key>include</key>
<string>#import-operator</string>
</dict>
<dict>
<key>include</key>
<string>#expression-operator</string>
</dict>
<dict>
<key>include</key>
<string>#imply-operator</string>
</dict>
<dict>
<key>include</key>
<string>#relational-operator</string>
</dict>
<dict>
<key>include</key>
<string>#arithmetic-operator</string>
</dict>
<dict>
<key>include</key>
<string>#logic-operator</string>
</dict>
<dict>
<key>include</key>
<string>#assignment-operator</string>
</dict>
<dict>
<key>include</key>
<string>#storage-keyword</string>
</dict>
<dict>
<key>include</key>
<string>#type-primitive</string>
</dict>
<dict>
<key>include</key>
<string>#function-call</string>
</dict>
<dict>
<key>include</key>
<string>#case-clause</string>
</dict>
<dict>
<key>include</key>
<string>#control-statement</string>
</dict>
</array>
</dict>
<key>expression-operator</key>
<dict>
<key>match</key>
<string>\b(delete|in|instanceof|new|typeof|as|is|of)\b</string>
<key>name</key>
<string>keyword.others.js</string>
</dict>
<key>field-declaration</key>
<dict>
<key>begin</key>
<string>(?&lt;!\()\s*((?:\b[a-zA-Z_$][\w$]*)|(?:\'[^']*\')|(?:\"[^"]*\"))\s*(\?\s*)?(?=(=|:))</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>variable.js</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.others.js</string>
</dict>
</dict>
<key>end</key>
<string>(?=\}|;|,|$)|(?&lt;=\})</string>
<key>name</key>
<string>meta.field.declaration.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
</array>
</dict>
<key>for-in-simple</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.js</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>keyword.others.js</string>
</dict>
</dict>
<key>match</key>
<string>(?&lt;=\()\s*\b(var|let|const)\s+([a-zA-Z_$][\w$]*)\s+(in|of)\b</string>
<key>name</key>
<string>forin.expr.js</string>
</dict>
<key>function-call</key>
<dict>
<key>name</key>
<string>functioncall.expr.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#await-modifier</string>
</dict>
<dict>
<key>include</key>
<string>#type-parameters</string>
</dict>
<dict>
<key>include</key>
<string>#paren-expression</string>
</dict>
</array>
</dict>
<key>function-declaration</key>
<dict>
<key>begin</key>
<string>\b(?:(export)\s+)?(?:(async)\s+)?(function\b)(?:\s+([a-zA-Z_$][\w$]*))?\s*</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.js</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.modifier.js</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>storage.type.function.js</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>entity.name.function.js</string>
</dict>
</dict>
<key>end</key>
<string>(?=;|\})|(?&lt;=\})</string>
<key>name</key>
<string>meta.function.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>include</key>
<string>#type-parameters</string>
</dict>
<dict>
<key>include</key>
<string>#function-type-parameters</string>
</dict>
<dict>
<key>include</key>
<string>#return-type</string>
</dict>
<dict>
<key>include</key>
<string>#function-overload-declaration</string>
</dict>
<dict>
<key>include</key>
<string>#decl-block</string>
</dict>
</array>
</dict>
<key>function-overload-declaration</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.js</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.type.function.js</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>entity.name.function.js</string>
</dict>
</dict>
<key>match</key>
<string>\b(?:(export)\s+)?(function\b)(?:\s+([a-zA-Z_$][\w$]*))?\s*</string>
<key>name</key>
<string>meta.function.overload.js</string>
</dict>
<key>function-type-parameters</key>
<dict>
<key>begin</key>
<string>\(</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>meta.brace.round.js</string>
</dict>
</dict>
<key>end</key>
<string>\)</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>meta.brace.round.js</string>
</dict>
</dict>
<key>name</key>
<string>meta.function.type.parameter.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>include</key>
<string>#parameter-name</string>
</dict>
<dict>
<key>include</key>
<string>#type-annotation</string>
</dict>
<dict>
<key>include</key>
<string>#variable-initializer</string>
</dict>
</array>
</dict>
<key>imply-operator</key>
<dict>
<key>match</key>
<string>=&gt;</string>
<key>name</key>
<string>keyword.operator.js</string>
</dict>
<key>import-operator</key>
<dict>
<key>match</key>
<string>\b(import|from)\b</string>
<key>name</key>
<string>keyword.control.import.include.js</string>
</dict>
<key>indexer-declaration</key>
<dict>
<key>begin</key>
<string>\[</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>meta.brace.square.js</string>
</dict>
</dict>
<key>end</key>
<string>(\])\s*(\?\s*)?|$</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>meta.brace.square.js</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.others.js</string>
</dict>
</dict>
<key>name</key>
<string>meta.indexer.declaration.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#type-annotation</string>
</dict>
<dict>
<key>include</key>
<string>#indexer-parameter</string>
</dict>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
</array>
</dict>
<key>indexer-parameter</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>variable.parameter.js</string>
</dict>
</dict>
<key>match</key>
<string>([a-zA-Z_$][\w$]*)(?=\:)</string>
<key>name</key>
<string>meta.indexer.parameter.js</string>
</dict>
<key>jsx</key>
<dict>
<key>name</key>
<string>meta.jsx.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#jsx-tag-without-attributes</string>
</dict>
<dict>
<key>include</key>
<string>#jsx-tag-open</string>
</dict>
<dict>
<key>include</key>
<string>#jsx-tag-close</string>
</dict>
<dict>
<key>include</key>
<string>#jsx-tag-invalid</string>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=(?:'|"|})&gt;)</string>
<key>end</key>
<string>(?=&lt;/)</string>
<key>name</key>
<string>meta.jsx.children.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#jsx-children</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>jsx-children</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#jsx-tag-without-attributes</string>
</dict>
<dict>
<key>include</key>
<string>#jsx-tag-open</string>
</dict>
<dict>
<key>include</key>
<string>#jsx-tag-close</string>
</dict>
<dict>
<key>include</key>
<string>#jsx-tag-invalid</string>
</dict>
<dict>
<key>include</key>
<string>#jsx-evaluated-code</string>
</dict>
<dict>
<key>include</key>
<string>#jsx-entities</string>
</dict>
</array>
</dict>
<key>jsx-entities</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.entity.js</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.definition.entity.js</string>
</dict>
</dict>
<key>match</key>
<string>(&amp;)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)</string>
<key>name</key>
<string>constant.character.entity.js</string>
</dict>
<dict>
<key>match</key>
<string>&amp;</string>
<key>name</key>
<string>invalid.illegal.bad-ampersand.js</string>
</dict>
</array>
</dict>
<key>jsx-evaluated-code</key>
<dict>
<key>begin</key>
<string>{</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.brace.curly.start.js</string>
</dict>
</dict>
<key>end</key>
<string>}</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.brace.curly.end.js</string>
</dict>
</dict>
<key>name</key>
<string>meta.brace.curly.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
</array>
</dict>
<key>jsx-string-double-quoted</key>
<dict>
<key>begin</key>
<string>"</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.js</string>
</dict>
</dict>
<key>end</key>
<string>"</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.js</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#jsx-entities</string>
</dict>
</array>
</dict>
<key>jsx-string-single-quoted</key>
<dict>
<key>begin</key>
<string>'</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.js</string>
</dict>
</dict>
<key>end</key>
<string>'</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.js</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.single.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#jsx-entities</string>
</dict>
</array>
</dict>
<key>jsx-tag-attribute-assignment</key>
<dict>
<key>match</key>
<string>=(?=\s*(?:'|"|{|/\*|//|\n))</string>
<key>name</key>
<string>keyword.operator.assignment.js</string>
</dict>
<key>jsx-tag-attribute-name</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>entity.other.attribute-name.js</string>
</dict>
</dict>
<key>match</key>
<string>(?x)
\s*
([_$a-zA-Z][-$\w]*)
(?=\s|=|/?&gt;|/\*|//)</string>
<key>name</key>
<string>meta.tag.attribute-name.js</string>
</dict>
<key>jsx-tag-attributes</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#jsx-tag-attribute-name</string>
</dict>
<dict>
<key>include</key>
<string>#jsx-tag-attribute-assignment</string>
</dict>
<dict>
<key>include</key>
<string>#jsx-string-double-quoted</string>
</dict>
<dict>
<key>include</key>
<string>#jsx-string-single-quoted</string>
</dict>
<dict>
<key>include</key>
<string>#jsx-evaluated-code</string>
</dict>
</array>
</dict>
<key>jsx-tag-attributes-illegal</key>
<dict>
<key>match</key>
<string>\S+</string>
<key>name</key>
<string>invalid.illegal.attribute.js</string>
</dict>
<key>jsx-tag-close</key>
<dict>
<key>begin</key>
<string>(&lt;/)([_$a-zA-Z][-$\w.]*(?&lt;!\.|-))</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.begin.js</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.js</string>
</dict>
</dict>
<key>end</key>
<string>(&gt;)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.end.js</string>
</dict>
</dict>
<key>name</key>
<string>tag.close.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
</array>
</dict>
<key>jsx-tag-invalid</key>
<dict>
<key>match</key>
<string>&lt;\s*&gt;</string>
<key>name</key>
<string>invalid.illegal.tag.incomplete.js</string>
</dict>
<key>jsx-tag-open</key>
<dict>
<key>begin</key>
<string>(?x)
(&lt;)
([_$a-zA-Z][-$\w.]*(?&lt;!\.|-))
(?=\s+(?!\?)|/?&gt;)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.begin.js</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.js</string>
</dict>
</dict>
<key>end</key>
<string>(/?&gt;)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.end.js</string>
</dict>
</dict>
<key>name</key>
<string>tag.open.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>include</key>
<string>#jsx-tag-attributes</string>
</dict>
<dict>
<key>include</key>
<string>#jsx-tag-attributes-illegal</string>
</dict>
</array>
</dict>
<key>jsx-tag-without-attributes</key>
<dict>
<key>begin</key>
<string>(&lt;)([_$a-zA-Z][-$\w.]*(?&lt;!\.|-))(&gt;)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.begin.js</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.js</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.end.js</string>
</dict>
</dict>
<key>end</key>
<string>(&lt;/)([_$a-zA-Z][-$\w.]*(?&lt;!\.|-))(&gt;)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.begin.js</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.js</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.definition.tag.end.js</string>
</dict>
</dict>
<key>name</key>
<string>tag.without-attributes.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#jsx-children</string>
</dict>
</array>
</dict>
<key>literal</key>
<dict>
<key>name</key>
<string>literal.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#numeric-literal</string>
</dict>
<dict>
<key>include</key>
<string>#boolean-literal</string>
</dict>
<dict>
<key>include</key>
<string>#null-literal</string>
</dict>
<dict>
<key>include</key>
<string>#undefined-literal</string>
</dict>
<dict>
<key>include</key>
<string>#array-literal</string>
</dict>
<dict>
<key>include</key>
<string>#this-literal</string>
</dict>
</array>
</dict>
<key>logic-operator</key>
<dict>
<key>match</key>
<string>\!|&amp;&amp;|&amp;|~|\^|\|\||\|</string>
<key>name</key>
<string>keyword.operator.arithmetic.js</string>
</dict>
<key>method-declaration</key>
<dict>
<key>begin</key>
<string>\b(?:(abstract)\s+)?\b(?:(public|private|protected)\s+)?\b(?:(async)\s+)?(?:(get|set)\s+)?(?:(new)|(?:\b(constructor)\b)|(?:([a-zA-Z_$][\.\w$]*)\s*(\??)))?\s*(?=\(|\&lt;)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.modifier.js</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.modifier.js</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>storage.modifier.js</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>storage.type.property.js</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>keyword.operator.js</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>storage.type.js</string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>entity.name.function.js</string>
</dict>
<key>8</key>
<dict>
<key>name</key>
<string>keyword.operator.js</string>
</dict>
</dict>
<key>end</key>
<string>(?=\}|;|,)|(?&lt;=\})</string>
<key>name</key>
<string>meta.method.declaration.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>include</key>
<string>#type-parameters</string>
</dict>
<dict>
<key>include</key>
<string>#function-type-parameters</string>
</dict>
<dict>
<key>include</key>
<string>#type-annotation</string>
</dict>
<dict>
<key>include</key>
<string>#method-overload-declaration</string>
</dict>
<dict>
<key>include</key>
<string>#decl-block</string>
</dict>
</array>
</dict>
<key>method-overload-declaration</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.modifier.js</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.modifier.js</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>storage.modifier.js</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>storage.type.property.js</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>keyword.operator.js</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>storage.type.js</string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>entity.name.function.js</string>
</dict>
<key>8</key>
<dict>
<key>name</key>
<string>keyword.operator.js</string>
</dict>
</dict>
<key>match</key>
<string>\b(?:(abstract)\s+)?\b(?:(public|private|protected)\s+)?\b(?:(async)\s+)?(?:(get|set)\s+)?(?:(new)|(?:\b(constructor)\b)|(?:([a-zA-Z_$][\.\w$]*)\s*(\??)))?\s*(?=\(|\&lt;)</string>
<key>name</key>
<string>meta.method.overload.declaration.js</string>
</dict>
<key>new-expr</key>
<dict>
<key>begin</key>
<string>\b(new)\b</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.others.js</string>
</dict>
</dict>
<key>end</key>
<string>(?=[(;]|$)</string>
<key>name</key>
<string>new.expr.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#type</string>
</dict>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
</array>
</dict>
<key>null-literal</key>
<dict>
<key>match</key>
<string>\b(null)\b</string>
<key>name</key>
<string>constant.language.null.js</string>
</dict>
<key>numeric-literal</key>
<dict>
<key>match</key>
<string>\b(?&lt;=[^$])((0(x|X)[0-9a-fA-F]+)|(0(o|O)[0-7]+)|(0(b|B)(0|1)+)|(([0-9]+(\.[0-9]+)?))([eE]([+-]?)[0-9]+(\.[0-9]+)?)?)\b</string>
<key>name</key>
<string>constant.numeric.js</string>
</dict>
<key>object-body</key>
<dict>
<key>begin</key>
<string>\{</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>meta.brace.curly.js</string>
</dict>
</dict>
<key>end</key>
<string>\}</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>meta.brace.curly.js</string>
</dict>
</dict>
<key>name</key>
<string>meta.object.body.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string</string>
</dict>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>include</key>
<string>#field-declaration</string>
</dict>
<dict>
<key>include</key>
<string>#method-declaration</string>
</dict>
<dict>
<key>include</key>
<string>#indexer-declaration</string>
</dict>
<dict>
<key>include</key>
<string>#type-annotation</string>
</dict>
<dict>
<key>include</key>
<string>#variable-initializer</string>
</dict>
<dict>
<key>include</key>
<string>#access-modifier</string>
</dict>
<dict>
<key>include</key>
<string>#static-modifier</string>
</dict>
<dict>
<key>include</key>
<string>#property-accessor</string>
</dict>
</array>
</dict>
<key>object-declaration</key>
<dict>
<key>begin</key>
<string>\b(?:(export)\s+)?\b(?:(abstract)\s+)?\b(?&lt;!\.)(class|interface)\b</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.js</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.modifier.js</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>storage.type.js</string>
</dict>
</dict>
<key>end</key>
<string>(?&lt;=\})</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>brace.curly.js</string>
</dict>
</dict>
<key>name</key>
<string>meta.declaration.object.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>include</key>
<string>#object-heritage</string>
</dict>
<dict>
<key>include</key>
<string>#object-name</string>
</dict>
<dict>
<key>include</key>
<string>#type-parameters</string>
</dict>
<dict>
<key>include</key>
<string>#object-body</string>
</dict>
</array>
</dict>
<key>object-heritage</key>
<dict>
<key>begin</key>
<string>(?:\b(extends|implements)\b)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.js</string>
</dict>
</dict>
<key>end</key>
<string>(?=\{)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>brace.curly.js</string>
</dict>
</dict>
<key>name</key>
<string>meta.object.heritage.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>include</key>
<string>#object-heritage</string>
</dict>
<dict>
<key>include</key>
<string>#type-parameters</string>
</dict>
<dict>
<key>include</key>
<string>#object-heritage-type</string>
</dict>
</array>
</dict>
<key>object-heritage-type</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.type.js</string>
</dict>
</dict>
<key>match</key>
<string>(?:\b([a-zA-Z_$][\w$]*)\b)</string>
<key>name</key>
<string>meta.object.heritage.parent.js</string>
</dict>
<key>object-member</key>
<dict>
<key>begin</key>
<string>[a-zA-Z_$][\w$]*\s*:</string>
<key>end</key>
<string>(?=,|\})</string>
<key>name</key>
<string>meta.object.member.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
</array>
</dict>
<key>object-name</key>
<dict>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>entity.name.class.js</string>
</dict>
</dict>
<key>match</key>
<string>[a-zA-Z_$][\w$]*</string>
<key>name</key>
<string>meta.object.name.js</string>
</dict>
<key>parameter-name</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.modifier.js</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.others.js</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>variable.parameter.js</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>keyword.others.js</string>
</dict>
</dict>
<key>match</key>
<string>(?:\s*\b(public|private|protected)\b\s+)?(\.\.\.)?\s*([a-zA-Z_$][\w$]*)\s*(\??)</string>
<key>name</key>
<string>parameter.name.js</string>
</dict>
<key>paren-expression</key>
<dict>
<key>begin</key>
<string>\(</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>meta.brace.paren.js</string>
</dict>
</dict>
<key>end</key>
<string>\)</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>meta.brace.paren.js</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
</array>
</dict>
<key>property-accessor</key>
<dict>
<key>match</key>
<string>\b(get|set)\b</string>
<key>name</key>
<string>storage.type.property.js</string>
</dict>
<key>qstring-double</key>
<dict>
<key>begin</key>
<string>"</string>
<key>end</key>
<string>"|(?:[^\\\n]$)</string>
<key>name</key>
<string>string.double.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string-character-escape</string>
</dict>
</array>
</dict>
<key>qstring-single</key>
<dict>
<key>begin</key>
<string>'</string>
<key>end</key>
<string>\'|(?:[^\\\n]$)</string>
<key>name</key>
<string>string.single.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string-character-escape</string>
</dict>
</array>
</dict>
<key>regex</key>
<dict>
<key>begin</key>
<string>(?&lt;=[=(:,\[]|^|return|&amp;&amp;|\|\||!)\s*(/)(?![/*+{}?])</string>
<key>end</key>
<string>$|(/)[igm]*</string>
<key>name</key>
<string>string.regex.js</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\\.</string>
<key>name</key>
<string>constant.character.escape.js</string>
</dict>
<dict>
<key>match</key>
<string>\[(\\\]|[^\]])*\]</string>
<key>name</key>
<string>constant.character.class.js</string>
</dict>
</array>
</dict>
<key>relational-operator</key>
<dict>
<key>match</key>
<string>===|!==|==|!=|&lt;=|&gt;=|&lt;&gt;|=|&lt;|&gt;</string>
<key>name</key>
<string>keyword.operator.comparison.js</string>
</dict>
<key>return-type</key>
<dict>
<key>begin</key>
<string>(?&lt;=\))\s*:</string>
<key>end</key>
<string>(?=$)|(?=\{|;|//)</string>
<key>name</key>
<string>meta.return.type.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#type</string>
</dict>
</array>
</dict>
<key>static-modifier</key>
<dict>
<key>match</key>
<string>\b(static)\b</string>
<key>name</key>
<string>keyword.other.js</string>
</dict>
<key>storage-keyword</key>
<dict>
<key>match</key>
<string>\b(var|let|function|const|module|namespace|void|export)\b</string>
<key>name</key>
<string>storage.type.js</string>
</dict>
<key>string</key>
<dict>
<key>name</key>
<string>string.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#qstring-single</string>
</dict>
<dict>
<key>include</key>
<string>#qstring-double</string>
</dict>
</array>
</dict>
<key>string-character-escape</key>
<dict>
<key>match</key>
<string>\\(x\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)</string>
<key>name</key>
<string>constant.character.escape</string>
</dict>
<key>switch-block</key>
<dict>
<key>begin</key>
<string>{</string>
<key>end</key>
<string>(?=\})</string>
<key>name</key>
<string>switch-block.expr.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
</array>
</dict>
<key>switch-expression</key>
<dict>
<key>begin</key>
<string>\b(switch)\b\s*\(</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.js</string>
</dict>
</dict>
<key>end</key>
<string>\)</string>
<key>name</key>
<string>switch-expression.expr.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
</array>
</dict>
<key>switch-statement</key>
<dict>
<key>begin</key>
<string>(?=\bswitch\b\s*\()</string>
<key>end</key>
<string>}</string>
<key>name</key>
<string>switch-statement.expr.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#switch-expression</string>
</dict>
<dict>
<key>include</key>
<string>#switch-block</string>
</dict>
</array>
</dict>
<key>template</key>
<dict>
<key>begin</key>
<string>`</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>string.template.js</string>
</dict>
</dict>
<key>end</key>
<string>`</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>string.template.js</string>
</dict>
</dict>
<key>name</key>
<string>meta.template.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#template-substitution-element</string>
</dict>
<dict>
<key>include</key>
<string>#template-string-contents</string>
</dict>
</array>
</dict>
<key>template-string-contents</key>
<dict>
<key>begin</key>
<string>.*?</string>
<key>end</key>
<string>(?=(\$\{|`))</string>
<key>name</key>
<string>string.template.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string-character-escape</string>
</dict>
</array>
</dict>
<key>template-substitution-element</key>
<dict>
<key>begin</key>
<string>\$\{</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.others.js</string>
</dict>
</dict>
<key>end</key>
<string>\}</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.others.js</string>
</dict>
</dict>
<key>name</key>
<string>template.element.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
</array>
</dict>
<key>this-literal</key>
<dict>
<key>match</key>
<string>\b(this)\b</string>
<key>name</key>
<string>constant.language.this.js</string>
</dict>
<key>type</key>
<dict>
<key>name</key>
<string>meta.type.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#type-primitive</string>
</dict>
<dict>
<key>include</key>
<string>#type-parameters</string>
</dict>
<dict>
<key>include</key>
<string>#type-tuple</string>
</dict>
<dict>
<key>include</key>
<string>#type-object</string>
</dict>
<dict>
<key>include</key>
<string>#type-operator</string>
</dict>
<dict>
<key>include</key>
<string>#type-paren-or-function-type-parameters</string>
</dict>
<dict>
<key>include</key>
<string>#type-function-return-type</string>
</dict>
<dict>
<key>include</key>
<string>#type-name</string>
</dict>
</array>
</dict>
<key>type-annotation</key>
<dict>
<key>begin</key>
<string>:</string>
<key>end</key>
<string>(?=$|[,);\}\]]|//)|(?==[^&gt;])|(?&lt;=[\}&gt;\]\)]|[a-zA-Z_$])\s*(?=\{)</string>
<key>name</key>
<string>meta.type.annotation.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#expression-operator</string>
</dict>
<dict>
<key>include</key>
<string>#type</string>
</dict>
<dict>
<key>include</key>
<string>#string</string>
</dict>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
</array>
</dict>
<key>type-declaration</key>
<dict>
<key>begin</key>
<string>\b(type)\b\s+([a-zA-Z_$][\w$]*)\s*</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.js</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.class.js</string>
</dict>
</dict>
<key>end</key>
<string>(?=$|[,);&gt;]|var|type|function|class|interface)</string>
<key>name</key>
<string>meta.type.declaration.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#type-parameters</string>
</dict>
<dict>
<key>include</key>
<string>#type</string>
</dict>
<dict>
<key>match</key>
<string>=\s*</string>
<key>name</key>
<string>keyword.operator.comparison.js</string>
</dict>
</array>
</dict>
<key>type-function-return-type</key>
<dict>
<key>begin</key>
<string>=&gt;</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.js</string>
</dict>
</dict>
<key>end</key>
<string>(?=\s*[,\)\{=;&gt;]|//|$)</string>
<key>name</key>
<string>meta.type.function.return.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#type</string>
</dict>
</array>
</dict>
<key>type-name</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>entity.name.type.js</string>
</dict>
</dict>
<key>match</key>
<string>[a-zA-Z_$][.\w$]*</string>
<key>name</key>
<string>meta.type.name.js</string>
</dict>
<key>type-object</key>
<dict>
<key>begin</key>
<string>\{</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>meta.brace.curly.js</string>
</dict>
</dict>
<key>end</key>
<string>\}</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>meta.brace.curly.js</string>
</dict>
</dict>
<key>name</key>
<string>meta.object.type.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>include</key>
<string>#field-declaration</string>
</dict>
<dict>
<key>include</key>
<string>#method-declaration</string>
</dict>
<dict>
<key>include</key>
<string>#indexer-declaration</string>
</dict>
<dict>
<key>include</key>
<string>#type-annotation</string>
</dict>
</array>
</dict>
<key>type-operator</key>
<dict>
<key>match</key>
<string>[.|]</string>
<key>name</key>
<string>keyword.operator.type.js</string>
</dict>
<key>type-parameters</key>
<dict>
<key>begin</key>
<string>JAVASCRIPT_DOES_NOT_HAVE_TYPE_PARAMETERS_SO_NEVER_MATCH_PLEASE([a-zA-Z_$][\w$]*)?(&lt;)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>entity.name.type.js</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>meta.brace.angle.js</string>
</dict>
</dict>
<key>end</key>
<string>(?=$)|(&gt;)</string>
<key>endCaptures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>meta.brace.angle.js</string>
</dict>
</dict>
<key>name</key>
<string>meta.type.parameters.js</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\b(extends)\b</string>
<key>name</key>
<string>keyword.other.js</string>
</dict>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>include</key>
<string>#type</string>
</dict>
</array>
</dict>
<key>type-paren-or-function-type-parameters</key>
<dict>
<key>begin</key>
<string>(?:\b(new)\b)?\s*\(</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.js</string>
</dict>
</dict>
<key>end</key>
<string>\)</string>
<key>name</key>
<string>meta.type.paren.cover.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>include</key>
<string>#type</string>
</dict>
<dict>
<key>include</key>
<string>#function-type-parameters</string>
</dict>
</array>
</dict>
<key>type-primitive</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.type.js</string>
</dict>
</dict>
<key>match</key>
<string>\b(string|number|boolean|symbol|any|void)\b</string>
<key>name</key>
<string>meta.type.primitive.js</string>
</dict>
<key>type-tuple</key>
<dict>
<key>begin</key>
<string>\[</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>meta.brace.square.js</string>
</dict>
</dict>
<key>end</key>
<string>\]</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>meta.brace.square.js</string>
</dict>
</dict>
<key>name</key>
<string>meta.type.tuple.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#type</string>
</dict>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
</array>
</dict>
<key>undefined-literal</key>
<dict>
<key>match</key>
<string>\b(undefined)\b</string>
<key>name</key>
<string>constant.language.js</string>
</dict>
<key>var-expr</key>
<dict>
<key>begin</key>
<string>(?&lt;!\()\s*\b(var|let|const(?!\s+enum))\b</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.js</string>
</dict>
</dict>
<key>end</key>
<string>(?=$|;)</string>
<key>name</key>
<string>meta.var.expr.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#var-single-variable</string>
</dict>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
</array>
</dict>
<key>var-single-variable</key>
<dict>
<key>begin</key>
<string>\b([a-zA-Z_$][\w$]*)\s*(=?)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>variable.js</string>
</dict>
</dict>
<key>end</key>
<string>(?=$|[;,])</string>
<key>name</key>
<string>meta.var-single-variable.expr.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#type-annotation</string>
</dict>
<dict>
<key>include</key>
<string>#string</string>
</dict>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
</array>
</dict>
<key>variable-initializer</key>
<dict>
<key>begin</key>
<string>(=)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.comparison.js</string>
</dict>
</dict>
<key>end</key>
<string>(?=$|[,);=])</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
</array>
</dict>
</dict>
<key>scopeName</key>
<string>source.js</string>
<key>uuid</key>
<string>805375ec-d614-41f5-8993-5843fe63ea82</string>
</dict>
</plist>