├── .gitignore ├── .vscode └── launch.json ├── .vscodeignore ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── SECURITY.md ├── azure-pipelines.yml ├── build ├── updateGrammar.js ├── updateGrammar.sh └── updatePackageVersion.js ├── documentation ├── logo.png └── logo.svg ├── package-lock.json ├── package.json └── syntaxes ├── JavaScript.tmLanguage.json ├── JavaScriptReact.tmLanguage.json ├── TypeScript.tmLanguage.json └── TypeScriptReact.tmLanguage.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | *.vsix -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | // A launch configuration that compiles the extension and then opens it inside a new window 2 | { 3 | "version": "0.1.0", 4 | "configurations": [ 5 | { 6 | "name": "Launch Extension", 7 | "type": "extensionHost", 8 | "request": "launch", 9 | "runtimeExecutable": "${execPath}", 10 | "args": [ 11 | "--extensionDevelopmentPath=${workspaceRoot}" 12 | ], 13 | "stopOnEntry": false, 14 | "sourceMaps": true, 15 | "outFiles": [ 16 | "${workspaceRoot}/out/src/**/*.js" 17 | ], 18 | } 19 | ] 20 | } -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | .vscode/ 2 | .vscode-test/ 3 | build/ 4 | 5 | **/*.map 6 | **/tsconfig.json 7 | **/tslint.json 8 | azure-pipelines.yml -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) Microsoft Corporation. All rights reserved. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # JavaScript and TypeScript Nightly 2 | 3 | VS Code extension that enables the nightly build of TypeScript (`typescript@next`) as VS Code's built-in TypeScript version used to power JavaScript and TypeScript IntelliSense. 4 | 5 | > ⚠️ **You do not need this extension to work with JavaScript and TypeScript in VS Code**. 6 | > 7 | > This extension is **intended for advanced users** who want to test out the latest TypeScript features before they are released. VS Code includes built-in JavaScript and TypeScript support that uses the latest stable TypeScript release. You do not need this extension — or any other extensions — for editing JavaScript and TypeScript in VS Code. 8 | > 9 | > Please only install this extension if you understand what it does and are ok trading a potentially less stable experience for testing out new TypeScript language and tooling features early. 10 | 11 | ## Enabling 12 | 13 | This extension replaces VS Code's built-in TypeScript version with `typescript@next`. It does not affect workspace versions of TypeScript, or custom user `typescript.tsdk` settings. 14 | 15 | To make sure you are using `typescript@next`: 16 | 17 | 1. Open a JavaScript or TypeScript file in VS Code. 18 | 1. In the VS Code command palette, run the `TypeScript: Select TypeScript version` command. 19 | 1. Make sure you have `Use VS Code's version` selected 20 | 21 | Note that this extension also includes the [latest JavaScript and TypeScript grammar](https://github.com/microsoft/TypeScript-TmLanguage). 22 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Security 4 | 5 | Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/). 6 | 7 | If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/opensource/security/definition), please report it to us as described below. 8 | 9 | ## Reporting Security Issues 10 | 11 | **Please do not report security vulnerabilities through public GitHub issues.** 12 | 13 | Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). 14 | 15 | If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey). 16 | 17 | You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). 18 | 19 | Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue: 20 | 21 | * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) 22 | * Full paths of source file(s) related to the manifestation of the issue 23 | * The location of the affected source code (tag/branch/commit or direct URL) 24 | * Any special configuration required to reproduce the issue 25 | * Step-by-step instructions to reproduce the issue 26 | * Proof-of-concept or exploit code (if possible) 27 | * Impact of the issue, including how an attacker might exploit the issue 28 | 29 | This information will help us triage your report more quickly. 30 | 31 | If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) page for more details about our active programs. 32 | 33 | ## Preferred Languages 34 | 35 | We prefer all communications to be in English. 36 | 37 | ## Policy 38 | 39 | Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd). 40 | 41 | 42 | -------------------------------------------------------------------------------- /azure-pipelines.yml: -------------------------------------------------------------------------------- 1 | # triggered by schedule 2 | trigger: none 3 | pr: none 4 | 5 | schedules: 6 | - cron: '0 0 * * *' 7 | displayName: Daily midnight build 8 | branches: 9 | include: 10 | - main 11 | always: true 12 | 13 | resources: 14 | repositories: 15 | - repository: templates 16 | type: github 17 | name: microsoft/vscode-engineering 18 | ref: main 19 | endpoint: Monaco 20 | 21 | parameters: 22 | - name: publishExtension 23 | displayName: 🚀 Publish Extension 24 | type: boolean 25 | default: false 26 | - name: VERSION_SUFFIX 27 | displayName: Suffix appended to package version. 28 | type: string 29 | default: ' ' 30 | 31 | extends: 32 | template: azure-pipelines/extension/pre-release.yml@templates 33 | parameters: 34 | usePreReleaseChannel: false 35 | useContinuousReleaseSignal: false 36 | l10nShouldProcess: false 37 | buildSteps: 38 | - checkout: self 39 | clean: true 40 | persistCredentials: true 41 | - bash: | 42 | npm install 43 | 44 | chmod +x ./build/updateGrammar.sh 45 | ./build/updateGrammar.sh 46 | grammarResult=$? 47 | if [ $grammarResult -ne 0 ] ; then 48 | echo "Unexpected error while updating grammar" 49 | exit $grammarResult 50 | fi 51 | 52 | npm run bump-version ${{ parameters.VERSION_SUFFIX }} 53 | result=$? 54 | 55 | set -e 56 | if [ $result -eq 0 ]; then 57 | git config --local user.name "Azure Pipelines" 58 | git config --local user.email "azuredevops@microsoft.com" 59 | git add . 60 | git commit -m "Publishing version bump ***NO_CI***" 61 | git push origin HEAD:main 62 | 63 | exit 64 | elif [ $result -eq 1 ]; then 65 | echo "Skipping publish" 66 | exit 1 67 | else 68 | echo "Unexpected error" 69 | exit $result 70 | fi 71 | displayName: 'Update TypeScript and grammar' 72 | 73 | tsa: 74 | config: 75 | areaPath: 'Visual Studio Code Language Extensions' 76 | serviceTreeID: 'c4cd3983-4977-4bcd-931f-a9822d2e950c' 77 | enabled: true 78 | 79 | publishExtension: ${{ parameters.publishExtension }} 80 | -------------------------------------------------------------------------------- /build/updateGrammar.js: -------------------------------------------------------------------------------- 1 | /*--------------------------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * Licensed under the MIT License. See License.txt in the project root for license information. 4 | *--------------------------------------------------------------------------------------------*/ 5 | 6 | 'use strict'; 7 | 8 | var path = require('path'); 9 | var fs = require('fs'); 10 | var plist = require('fast-plist'); 11 | var https = require('https'); 12 | var url = require('url'); 13 | 14 | function removeDom(grammar) { 15 | grammar.repository['support-objects'].patterns = grammar.repository['support-objects'].patterns.filter(pattern => { 16 | if (pattern.match && pattern.match.match(/\b(HTMLElement|ATTRIBUTE_NODE|stopImmediatePropagation)\b/g)) { 17 | return false; 18 | } 19 | return true; 20 | }); 21 | return grammar; 22 | } 23 | 24 | function removeNodeTypes(grammar) { 25 | grammar.repository['support-objects'].patterns = grammar.repository['support-objects'].patterns.filter(pattern => { 26 | if (pattern.name) { 27 | if (pattern.name.startsWith('support.variable.object.node') || pattern.name.startsWith('support.class.node.')) { 28 | return false; 29 | } 30 | } 31 | if (pattern.captures) { 32 | if (Object.values(pattern.captures).some(capture => 33 | capture.name && (capture.name.startsWith('support.variable.object.process') 34 | || capture.name.startsWith('support.class.console')) 35 | )) { 36 | return false; 37 | } 38 | } 39 | return true; 40 | }); 41 | return grammar; 42 | } 43 | 44 | function patchJsdoctype(grammar) { 45 | grammar.repository['jsdoctype'].patterns = grammar.repository['jsdoctype'].patterns.filter(pattern => { 46 | if (pattern.name && pattern.name.includes('illegal')) { 47 | return false; 48 | } 49 | return true; 50 | }); 51 | return grammar; 52 | } 53 | 54 | function patchGrammar(grammar) { 55 | return removeNodeTypes(removeDom(patchJsdoctype(grammar))); 56 | } 57 | 58 | function adaptToJavaScript(grammar, replacementScope) { 59 | grammar.name = 'JavaScript (with React support)'; 60 | grammar.fileTypes = ['.js', '.jsx', '.es6', '.mjs', '.cjs']; 61 | grammar.scopeName = `source${replacementScope}`; 62 | 63 | var fixScopeNames = function (rule) { 64 | if (typeof rule.name === 'string') { 65 | rule.name = rule.name.replace(/\.tsx/g, replacementScope); 66 | } 67 | if (typeof rule.contentName === 'string') { 68 | rule.contentName = rule.contentName.replace(/\.tsx/g, replacementScope); 69 | } 70 | for (var property in rule) { 71 | var value = rule[property]; 72 | if (typeof value === 'object') { 73 | fixScopeNames(value); 74 | } 75 | } 76 | }; 77 | 78 | var repository = grammar.repository; 79 | for (var key in repository) { 80 | fixScopeNames(repository[key]); 81 | } 82 | } 83 | 84 | function getCommitSha(branchId) { 85 | var commitInfo = 'https://api.github.com/repos/Microsoft/TypeScript-TmLanguage/branches/' + branchId; 86 | return download(commitInfo).then(function (content) { 87 | try { 88 | let lastCommit = JSON.parse(content)["commit"]; 89 | return Promise.resolve({ 90 | commitSha: lastCommit.sha, 91 | commitDate: lastCommit.commit.author.date 92 | }); 93 | } catch (e) { 94 | return Promise.resolve(null); 95 | } 96 | }, function () { 97 | console.err('Failed loading ' + commitInfo); 98 | return Promise.resolve(null); 99 | }); 100 | } 101 | 102 | function download(urlString) { 103 | return new Promise((c, e) => { 104 | var _url = url.parse(urlString); 105 | var options = { host: _url.host, port: _url.port, path: _url.path, headers: { 'User-Agent': 'NodeJS' } }; 106 | var content = ''; 107 | var request = https.get(options, function (response) { 108 | response.on('data', function (data) { 109 | content += data.toString(); 110 | }).on('end', function () { 111 | c(content); 112 | }); 113 | }).on('error', function (err) { 114 | e(err.message); 115 | }); 116 | }); 117 | } 118 | 119 | exports.update = function (branchId, repoPath, dest, modifyGrammar) { 120 | var contentPath = 'https://raw.githubusercontent.com/Microsoft/TypeScript-TmLanguage/' + branchId + '/' + repoPath; 121 | console.log('Reading from ' + contentPath); 122 | return download(contentPath).then(function (content) { 123 | var ext = path.extname(repoPath); 124 | var grammar; 125 | if (ext === '.tmLanguage' || ext === '.plist') { 126 | grammar = plist.parse(content); 127 | } else { 128 | console.error('Unknown file extension: ' + ext); 129 | return; 130 | } 131 | if (modifyGrammar) { 132 | modifyGrammar(grammar); 133 | } 134 | return getCommitSha(branchId).then(function (info) { 135 | if (info) { 136 | grammar.version = 'https://github.com/Microsoft/TypeScript-TmLanguage/commit/' + info.commitSha; 137 | } 138 | 139 | try { 140 | fs.writeFileSync(dest, JSON.stringify(grammar, null, '\t')); 141 | if (info) { 142 | console.log('Updated ' + path.basename(dest) + ' to Microsoft/TypeScript-TmLanguage@' + info.commitSha.substr(0, 7) + ' (' + info.commitDate.substr(0, 10) + ')'); 143 | } else { 144 | console.log('Updated ' + path.basename(dest)); 145 | } 146 | } catch (e) { 147 | console.error(e); 148 | } 149 | }); 150 | 151 | }, console.error); 152 | } 153 | 154 | const branch = "master"; 155 | exports.update(branch, 'TypeScript.tmLanguage', './syntaxes/TypeScript.tmLanguage.json', grammar => patchGrammar(grammar)); 156 | exports.update(branch, 'TypeScriptReact.tmLanguage', './syntaxes/TypeScriptReact.tmLanguage.json', grammar => patchGrammar(grammar)); 157 | exports.update(branch, 'TypeScriptReact.tmLanguage', './syntaxes/JavaScript.tmLanguage.json', grammar => adaptToJavaScript(patchGrammar(grammar), '.js')); 158 | exports.update(branch, 'TypeScriptReact.tmLanguage', './syntaxes/JavaScriptReact.tmLanguage.json', grammar => adaptToJavaScript(patchGrammar(grammar), '.js.jsx')); 159 | -------------------------------------------------------------------------------- /build/updateGrammar.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | npm run update-grammar 3 | result=$? 4 | exit $result -------------------------------------------------------------------------------- /build/updatePackageVersion.js: -------------------------------------------------------------------------------- 1 | // @ts-check 2 | const fs = require('fs'); 3 | const path = require('path'); 4 | 5 | const json = JSON.parse(fs.readFileSync(path.join(__dirname, '..', 'package.json')).toString()); 6 | const jsonLock = JSON.parse(fs.readFileSync(path.join(__dirname, '..', 'package-lock.json')).toString()); 7 | 8 | // Set version to TS Version 9 | let versionSuffix = (process.argv[2] || '').trim(); 10 | 11 | const baseVersion = jsonLock['dependencies']['typescript']['version'].replace(/0?\-\w*\./g, ''); 12 | 13 | // Hack to work around bad published version that has a trailing 0 14 | if (baseVersion.startsWith('5.0.')) { 15 | versionSuffix = '0' + versionSuffix; 16 | } 17 | 18 | const version = baseVersion + versionSuffix; 19 | if (version === json['version']) { 20 | console.log(`Already at latest version ${version}`); 21 | process.exit(1); 22 | } 23 | 24 | console.log(`Bumping to version ${version}`); 25 | json['version'] = version; 26 | fs.writeFileSync('./package.json', JSON.stringify(json, null, 2)); 27 | 28 | process.exit(0); -------------------------------------------------------------------------------- /documentation/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/vscode-typescript-next/3266c3448f86a919122d1e268f2899ef73796db7/documentation/logo.png -------------------------------------------------------------------------------- /documentation/logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vscode-typescript-next", 3 | "version": "5.9.20250602", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "vscode-typescript-next", 9 | "version": "5.9.20250602", 10 | "license": "MIT", 11 | "dependencies": { 12 | "typescript": "^5.9.0-dev.20250603" 13 | }, 14 | "devDependencies": { 15 | "@types/node": "^12.0.7", 16 | "fast-plist": "0.1.1" 17 | }, 18 | "engines": { 19 | "vscode": "^1.36.0" 20 | } 21 | }, 22 | "node_modules/@types/node": { 23 | "version": "12.0.7", 24 | "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.7.tgz", 25 | "integrity": "sha512-1YKeT4JitGgE4SOzyB9eMwO0nGVNkNEsm9qlIt1Lqm/tG2QEiSMTD4kS3aO6L+w5SClLVxALmIBESK6Mk5wX0A==", 26 | "dev": true 27 | }, 28 | "node_modules/fast-plist": { 29 | "version": "0.1.1", 30 | "resolved": "https://registry.npmjs.org/fast-plist/-/fast-plist-0.1.1.tgz", 31 | "integrity": "sha1-2xP7swVNv/130ZT2jdNnUGosONI=", 32 | "dev": true 33 | }, 34 | "node_modules/typescript": { 35 | "version": "5.9.0-dev.20250603", 36 | "resolved": "https://pkgs.dev.azure.com/monacotools/Monaco/_packaging/vscode/npm/registry/typescript/-/typescript-5.9.0-dev.20250603.tgz", 37 | "integrity": "sha1-xpuflLCk6u8BrQuCHq4ZVQnve5A=", 38 | "license": "Apache-2.0", 39 | "bin": { 40 | "tsc": "bin/tsc", 41 | "tsserver": "bin/tsserver" 42 | }, 43 | "engines": { 44 | "node": ">=14.17" 45 | } 46 | } 47 | }, 48 | "dependencies": { 49 | "@types/node": { 50 | "version": "12.0.7", 51 | "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.7.tgz", 52 | "integrity": "sha512-1YKeT4JitGgE4SOzyB9eMwO0nGVNkNEsm9qlIt1Lqm/tG2QEiSMTD4kS3aO6L+w5SClLVxALmIBESK6Mk5wX0A==", 53 | "dev": true 54 | }, 55 | "fast-plist": { 56 | "version": "0.1.1", 57 | "resolved": "https://registry.npmjs.org/fast-plist/-/fast-plist-0.1.1.tgz", 58 | "integrity": "sha1-2xP7swVNv/130ZT2jdNnUGosONI=", 59 | "dev": true 60 | }, 61 | "typescript": { 62 | "version": "5.9.0-dev.20250603", 63 | "resolved": "https://pkgs.dev.azure.com/monacotools/Monaco/_packaging/vscode/npm/registry/typescript/-/typescript-5.9.0-dev.20250603.tgz", 64 | "integrity": "sha1-xpuflLCk6u8BrQuCHq4ZVQnve5A=" 65 | } 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vscode-typescript-next", 3 | "displayName": "JavaScript and TypeScript Nightly", 4 | "description": "Enables typescript@next to power VS Code's built-in JavaScript and TypeScript support", 5 | "icon": "documentation/logo.png", 6 | "private": true, 7 | "publisher": "ms-vscode", 8 | "version": "5.9.20250603", 9 | "engines": { 10 | "vscode": "^1.36.0" 11 | }, 12 | "extensionKind": [ 13 | "workspace" 14 | ], 15 | "workspaceTrust": { 16 | "request": "never" 17 | }, 18 | "scripts": { 19 | "bump-version": "npm install typescript@next && node ./build/updatePackageVersion.js", 20 | "update-grammar": "node ./build/updateGrammar.js" 21 | }, 22 | "repository": { 23 | "type": "git", 24 | "url": "https://github.com/microsoft/vscode-typescript-next.git" 25 | }, 26 | "bugs": { 27 | "url": "https://github.com/microsoft/vscode-typescript-next/issues" 28 | }, 29 | "keywords": [ 30 | "JavaScript", 31 | "TypeScript", 32 | "js", 33 | "ts", 34 | "nightly" 35 | ], 36 | "author": "Microsoft", 37 | "license": "MIT", 38 | "dependencies": { 39 | "typescript": "^5.9.0-dev.20250603" 40 | }, 41 | "devDependencies": { 42 | "@types/node": "^12.0.7", 43 | "fast-plist": "0.1.1" 44 | }, 45 | "contributes": { 46 | "grammars": [ 47 | { 48 | "language": "javascriptreact", 49 | "scopeName": "source.js.jsx", 50 | "path": "./syntaxes/JavaScriptReact.tmLanguage.json", 51 | "unbalancedBracketScopes": [ 52 | "keyword.operator.relational", 53 | "storage.type.function.arrow", 54 | "keyword.operator.bitwise.shift", 55 | "punctuation.definition.tag" 56 | ], 57 | "embeddedLanguages": { 58 | "meta.tag.js": "jsx-tags", 59 | "meta.tag.without-attributes.js": "jsx-tags", 60 | "meta.tag.attributes.js.jsx": "javascriptreact", 61 | "meta.embedded.expression.js": "javascriptreact" 62 | }, 63 | "tokenTypes": { 64 | "entity.name.type.instance.jsdoc": "other", 65 | "entity.name.function.tagged-template": "other", 66 | "meta.import string.quoted": "other", 67 | "variable.other.jsdoc": "other" 68 | } 69 | }, 70 | { 71 | "language": "javascript", 72 | "scopeName": "source.js", 73 | "path": "./syntaxes/JavaScript.tmLanguage.json", 74 | "embeddedLanguages": { 75 | "meta.tag.js": "jsx-tags", 76 | "meta.tag.without-attributes.js": "jsx-tags", 77 | "meta.tag.attributes.js": "javascript", 78 | "meta.embedded.expression.js": "javascript" 79 | }, 80 | "tokenTypes": { 81 | "entity.name.type.instance.jsdoc": "other", 82 | "entity.name.function.tagged-template": "other", 83 | "meta.import string.quoted": "other", 84 | "variable.other.jsdoc": "other" 85 | } 86 | }, 87 | { 88 | "language": "typescript", 89 | "scopeName": "source.ts", 90 | "path": "./syntaxes/TypeScript.tmLanguage.json", 91 | "unbalancedBracketScopes": [ 92 | "keyword.operator.relational", 93 | "storage.type.function.arrow", 94 | "keyword.operator.bitwise.shift", 95 | "punctuation.definition.tag" 96 | ], 97 | "tokenTypes": { 98 | "entity.name.type.instance.jsdoc": "other", 99 | "entity.name.function.tagged-template": "other", 100 | "meta.import string.quoted": "other", 101 | "variable.other.jsdoc": "other" 102 | } 103 | }, 104 | { 105 | "language": "typescriptreact", 106 | "scopeName": "source.tsx", 107 | "path": "./syntaxes/TypeScriptReact.tmLanguage.json", 108 | "unbalancedBracketScopes": [ 109 | "keyword.operator.relational", 110 | "storage.type.function.arrow", 111 | "keyword.operator.bitwise.shift", 112 | "punctuation.definition.tag" 113 | ], 114 | "embeddedLanguages": { 115 | "meta.tag.tsx": "jsx-tags", 116 | "meta.tag.without-attributes.tsx": "jsx-tags", 117 | "meta.tag.attributes.tsx": "typescriptreact", 118 | "meta.embedded.expression.tsx": "typescriptreact" 119 | }, 120 | "tokenTypes": { 121 | "entity.name.type.instance.jsdoc": "other", 122 | "entity.name.function.tagged-template": "other", 123 | "meta.import string.quoted": "other", 124 | "variable.other.jsdoc": "other" 125 | } 126 | } 127 | ] 128 | } 129 | } --------------------------------------------------------------------------------