Copy disabled (too large)
Download .txt
Showing preview only (17,761K chars total). Download the full file to get everything.
Repository: voideditor/void
Branch: main
Commit: 17e7a5b15243
Files: 8041
Total size: 103.7 MB
Directory structure:
gitextract_zxyiywqm/
├── .config/
│ ├── 1espt/
│ │ └── PipelineAutobaseliningConfig.yml
│ └── guardian/
│ ├── .gdnbaselines
│ └── .gdnsuppress
├── .configurations/
│ └── configuration.dsc.yaml
├── .devcontainer/
│ ├── Dockerfile
│ ├── README.md
│ ├── devcontainer-lock.json
│ ├── devcontainer.json
│ ├── install-vscode.sh
│ └── post-create.sh
├── .editorconfig
├── .eslint-ignore
├── .eslint-plugin-local/
│ ├── code-amd-node-module.ts
│ ├── code-declare-service-brand.ts
│ ├── code-ensure-no-disposables-leak-in-test.ts
│ ├── code-import-patterns.ts
│ ├── code-layering.ts
│ ├── code-limited-top-functions.ts
│ ├── code-must-use-result.ts
│ ├── code-must-use-super-dispose.ts
│ ├── code-no-dangerous-type-assertions.ts
│ ├── code-no-global-document-listener.ts
│ ├── code-no-native-private.ts
│ ├── code-no-nls-in-standalone-editor.ts
│ ├── code-no-potentially-unsafe-disposables.ts
│ ├── code-no-runtime-import.ts
│ ├── code-no-standalone-editor.ts
│ ├── code-no-static-self-ref.ts
│ ├── code-no-test-async-suite.ts
│ ├── code-no-test-only.ts
│ ├── code-no-unexternalized-strings.ts
│ ├── code-no-unused-expressions.ts
│ ├── code-parameter-properties-must-have-explicit-accessibility.ts
│ ├── code-translation-remind.ts
│ ├── index.js
│ ├── package.json
│ ├── tsconfig.json
│ ├── utils.ts
│ ├── vscode-dts-cancellation.ts
│ ├── vscode-dts-create-func.ts
│ ├── vscode-dts-event-naming.ts
│ ├── vscode-dts-interface-naming.ts
│ ├── vscode-dts-literal-or-types.ts
│ ├── vscode-dts-provider-naming.ts
│ ├── vscode-dts-string-type-literals.ts
│ ├── vscode-dts-use-export.ts
│ ├── vscode-dts-use-thenable.ts
│ └── vscode-dts-vscode-in-comments.ts
├── .git-blame-ignore-revs
├── .gitattributes
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── config.yml
│ │ └── issue_template.md
│ ├── scripts/
│ │ └── issue_triage.py
│ └── workflows/
│ └── triage.yml
├── .gitignore
├── .idx/
│ └── dev.nix
├── .lsifrc.json
├── .mailmap
├── .mention-bot
├── .npmrc
├── .nvmrc
├── .voidrules
├── .vscode/
│ ├── cglicenses.schema.json
│ ├── extensions/
│ │ ├── vscode-selfhost-import-aid/
│ │ │ ├── .vscode/
│ │ │ │ ├── launch.json
│ │ │ │ └── settings.json
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ └── extension.ts
│ │ │ └── tsconfig.json
│ │ └── vscode-selfhost-test-provider/
│ │ ├── .vscode/
│ │ │ ├── launch.json
│ │ │ └── settings.json
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── coverageProvider.ts
│ │ │ ├── debounce.ts
│ │ │ ├── extension.ts
│ │ │ ├── failingDeepStrictEqualAssertFixer.ts
│ │ │ ├── failureTracker.ts
│ │ │ ├── importGraph.ts
│ │ │ ├── memoize.ts
│ │ │ ├── metadata.ts
│ │ │ ├── snapshot.ts
│ │ │ ├── sourceUtils.ts
│ │ │ ├── stackTraceParser.ts
│ │ │ ├── streamSplitter.ts
│ │ │ ├── testOutputScanner.ts
│ │ │ ├── testTree.ts
│ │ │ ├── v8CoverageWrangling.test.ts
│ │ │ ├── v8CoverageWrangling.ts
│ │ │ └── vscodeTestRunner.ts
│ │ └── tsconfig.json
│ ├── extensions.json
│ ├── launch.json
│ ├── notebooks/
│ │ ├── api.github-issues
│ │ ├── endgame.github-issues
│ │ ├── grooming-delta.github-issues
│ │ ├── grooming.github-issues
│ │ ├── inbox.github-issues
│ │ ├── my-endgame.github-issues
│ │ ├── my-work.github-issues
│ │ ├── papercuts.github-issues
│ │ ├── verification.github-issues
│ │ └── vscode-dev.github-issues
│ ├── searches/
│ │ └── ts36031.code-search
│ ├── settings.json
│ ├── shared.code-snippets
│ └── tasks.json
├── .vscode-test.js
├── CodeQL.yml
├── HOW_TO_CONTRIBUTE.md
├── LICENSE-VS-Code.txt
├── LICENSE.txt
├── README.md
├── ThirdPartyNotices.txt
├── VOID_CODEBASE_GUIDE.md
├── build/
│ ├── .cachesalt
│ ├── .gitattributes
│ ├── .gitignore
│ ├── .moduleignore
│ ├── .moduleignore.darwin
│ ├── .moduleignore.linux
│ ├── .moduleignore.win32
│ ├── .npmrc
│ ├── .webignore
│ ├── azure-pipelines/
│ │ ├── alpine/
│ │ │ ├── cli-build-alpine.yml
│ │ │ └── product-build-alpine.yml
│ │ ├── cli/
│ │ │ ├── cli-apply-patches.yml
│ │ │ ├── cli-compile.yml
│ │ │ ├── cli-darwin-sign.yml
│ │ │ ├── cli-win32-sign.yml
│ │ │ ├── install-rust-posix.yml
│ │ │ ├── install-rust-win32.yml
│ │ │ └── test.yml
│ │ ├── common/
│ │ │ ├── computeBuiltInDepsCacheKey.js
│ │ │ ├── computeBuiltInDepsCacheKey.ts
│ │ │ ├── computeNodeModulesCacheKey.js
│ │ │ ├── computeNodeModulesCacheKey.ts
│ │ │ ├── createBuild.js
│ │ │ ├── createBuild.ts
│ │ │ ├── extract-telemetry.sh
│ │ │ ├── getPublishAuthTokens.js
│ │ │ ├── getPublishAuthTokens.ts
│ │ │ ├── install-builtin-extensions.yml
│ │ │ ├── installPlaywright.js
│ │ │ ├── listNodeModules.js
│ │ │ ├── listNodeModules.ts
│ │ │ ├── publish.js
│ │ │ ├── publish.ts
│ │ │ ├── releaseBuild.js
│ │ │ ├── releaseBuild.ts
│ │ │ ├── retry.js
│ │ │ ├── retry.ts
│ │ │ ├── sign-win32.js
│ │ │ ├── sign-win32.ts
│ │ │ ├── sign.js
│ │ │ ├── sign.ts
│ │ │ └── telemetry-config.json
│ │ ├── config/
│ │ │ ├── CredScanSuppressions.json
│ │ │ └── tsaoptions.json
│ │ ├── darwin/
│ │ │ ├── app-entitlements.plist
│ │ │ ├── cli-build-darwin.yml
│ │ │ ├── helper-gpu-entitlements.plist
│ │ │ ├── helper-plugin-entitlements.plist
│ │ │ ├── helper-renderer-entitlements.plist
│ │ │ ├── product-build-darwin-cli-sign.yml
│ │ │ ├── product-build-darwin-sign.yml
│ │ │ ├── product-build-darwin-test.yml
│ │ │ ├── product-build-darwin-universal.yml
│ │ │ └── product-build-darwin.yml
│ │ ├── distro/
│ │ │ ├── download-distro.yml
│ │ │ ├── mixin-npm.js
│ │ │ ├── mixin-npm.ts
│ │ │ ├── mixin-quality.js
│ │ │ └── mixin-quality.ts
│ │ ├── distro-build.yml
│ │ ├── linux/
│ │ │ ├── .gitignore
│ │ │ ├── apt-retry.sh
│ │ │ ├── cli-build-linux.yml
│ │ │ ├── product-build-linux-test.yml
│ │ │ ├── product-build-linux.yml
│ │ │ ├── setup-env.sh
│ │ │ ├── snap-build-linux.yml
│ │ │ ├── verify-glibc-requirements.sh
│ │ │ └── xvfb.init
│ │ ├── oss/
│ │ │ ├── product-build-pr-cache-linux.yml
│ │ │ └── product-build-pr-cache-win32.yml
│ │ ├── product-build-pr.yml
│ │ ├── product-build.yml
│ │ ├── product-compile.yml
│ │ ├── product-npm-package-validate.yml
│ │ ├── product-publish.yml
│ │ ├── product-release.yml
│ │ ├── publish-types/
│ │ │ ├── check-version.js
│ │ │ ├── check-version.ts
│ │ │ ├── publish-types.yml
│ │ │ ├── update-types.js
│ │ │ └── update-types.ts
│ │ ├── upload-cdn.js
│ │ ├── upload-cdn.ts
│ │ ├── upload-nlsmetadata.js
│ │ ├── upload-nlsmetadata.ts
│ │ ├── upload-sourcemaps.js
│ │ ├── upload-sourcemaps.ts
│ │ ├── web/
│ │ │ └── product-build-web.yml
│ │ └── win32/
│ │ ├── cli-build-win32.yml
│ │ ├── exec.ps1
│ │ ├── import-esrp-auth-cert.ps1
│ │ ├── listprocesses.bat
│ │ ├── product-build-win32-cli-sign.yml
│ │ ├── product-build-win32-test.yml
│ │ ├── product-build-win32.yml
│ │ ├── retry.ps1
│ │ └── sdl-scan-win32.yml
│ ├── buildfile.js
│ ├── builtin/
│ │ ├── .eslintrc
│ │ ├── browser-main.js
│ │ ├── index.html
│ │ ├── main.js
│ │ └── package.json
│ ├── checksums/
│ │ ├── electron.txt
│ │ ├── nodejs.txt
│ │ └── vscode-sysroot.txt
│ ├── darwin/
│ │ ├── create-universal-app.js
│ │ ├── create-universal-app.ts
│ │ ├── sign.js
│ │ ├── sign.ts
│ │ ├── verify-macho.js
│ │ └── verify-macho.ts
│ ├── eslint.js
│ ├── filters.js
│ ├── gulp-eslint.js
│ ├── gulpfile.cli.js
│ ├── gulpfile.compile.js
│ ├── gulpfile.editor.js
│ ├── gulpfile.extensions.js
│ ├── gulpfile.hygiene.js
│ ├── gulpfile.js
│ ├── gulpfile.reh.js
│ ├── gulpfile.scan.js
│ ├── gulpfile.vscode.js
│ ├── gulpfile.vscode.linux.js
│ ├── gulpfile.vscode.web.js
│ ├── gulpfile.vscode.win32.js
│ ├── hygiene.js
│ ├── lib/
│ │ ├── asar.js
│ │ ├── asar.ts
│ │ ├── builtInExtensions.js
│ │ ├── builtInExtensions.ts
│ │ ├── builtInExtensionsCG.js
│ │ ├── builtInExtensionsCG.ts
│ │ ├── bundle.js
│ │ ├── bundle.ts
│ │ ├── compilation.js
│ │ ├── compilation.ts
│ │ ├── date.js
│ │ ├── date.ts
│ │ ├── dependencies.js
│ │ ├── dependencies.ts
│ │ ├── electron.js
│ │ ├── electron.ts
│ │ ├── extensions.js
│ │ ├── extensions.ts
│ │ ├── fetch.js
│ │ ├── fetch.ts
│ │ ├── formatter.js
│ │ ├── formatter.ts
│ │ ├── getVersion.js
│ │ ├── getVersion.ts
│ │ ├── git.js
│ │ ├── git.ts
│ │ ├── i18n.js
│ │ ├── i18n.resources.json
│ │ ├── i18n.ts
│ │ ├── inlineMeta.js
│ │ ├── inlineMeta.ts
│ │ ├── layersChecker.js
│ │ ├── layersChecker.ts
│ │ ├── mangle/
│ │ │ ├── index.js
│ │ │ ├── index.ts
│ │ │ ├── renameWorker.js
│ │ │ ├── renameWorker.ts
│ │ │ ├── staticLanguageServiceHost.js
│ │ │ └── staticLanguageServiceHost.ts
│ │ ├── monaco-api.js
│ │ ├── monaco-api.ts
│ │ ├── nls.js
│ │ ├── nls.ts
│ │ ├── node.js
│ │ ├── node.ts
│ │ ├── optimize.js
│ │ ├── optimize.ts
│ │ ├── policies.js
│ │ ├── policies.ts
│ │ ├── postcss.js
│ │ ├── postcss.ts
│ │ ├── preLaunch.js
│ │ ├── preLaunch.ts
│ │ ├── propertyInitOrderChecker.js
│ │ ├── propertyInitOrderChecker.ts
│ │ ├── reporter.js
│ │ ├── reporter.ts
│ │ ├── snapshotLoader.js
│ │ ├── snapshotLoader.ts
│ │ ├── standalone.js
│ │ ├── standalone.ts
│ │ ├── stats.js
│ │ ├── stats.ts
│ │ ├── stylelint/
│ │ │ ├── validateVariableNames.js
│ │ │ ├── validateVariableNames.ts
│ │ │ └── vscode-known-variables.json
│ │ ├── task.js
│ │ ├── task.ts
│ │ ├── test/
│ │ │ ├── i18n.test.js
│ │ │ └── i18n.test.ts
│ │ ├── treeshaking.js
│ │ ├── treeshaking.ts
│ │ ├── tsb/
│ │ │ ├── builder.js
│ │ │ ├── builder.ts
│ │ │ ├── index.js
│ │ │ ├── index.ts
│ │ │ ├── transpiler.js
│ │ │ ├── transpiler.ts
│ │ │ ├── utils.js
│ │ │ └── utils.ts
│ │ ├── typings/
│ │ │ ├── cgmanifest.json
│ │ │ ├── event-stream.d.ts
│ │ │ ├── github-releases.d.ts
│ │ │ ├── gulp-bom.d.ts
│ │ │ ├── gulp-buffer.d.ts
│ │ │ ├── gulp-flatmap.d.ts
│ │ │ ├── lazy.js.d.ts
│ │ │ ├── stream.d.ts
│ │ │ ├── ternary-stream.d.ts
│ │ │ └── vinyl.d.ts
│ │ ├── util.js
│ │ ├── util.ts
│ │ └── watch/
│ │ ├── index.js
│ │ ├── index.ts
│ │ ├── watch-win32.js
│ │ └── watch-win32.ts
│ ├── linux/
│ │ ├── debian/
│ │ │ ├── calculate-deps.js
│ │ │ ├── calculate-deps.ts
│ │ │ ├── dep-lists.js
│ │ │ ├── dep-lists.ts
│ │ │ ├── install-sysroot.js
│ │ │ ├── install-sysroot.ts
│ │ │ ├── types.js
│ │ │ └── types.ts
│ │ ├── dependencies-generator.js
│ │ ├── dependencies-generator.ts
│ │ ├── libcxx-fetcher.js
│ │ ├── libcxx-fetcher.ts
│ │ └── rpm/
│ │ ├── calculate-deps.js
│ │ ├── calculate-deps.ts
│ │ ├── dep-lists.js
│ │ ├── dep-lists.ts
│ │ ├── types.js
│ │ └── types.ts
│ ├── loader.min
│ ├── monaco/
│ │ ├── LICENSE
│ │ ├── README-npm.md
│ │ ├── README.md
│ │ ├── ThirdPartyNotices.txt
│ │ ├── monaco.d.ts.recipe
│ │ ├── monaco.usage.recipe
│ │ ├── package.json
│ │ └── version.txt
│ ├── npm/
│ │ ├── dirs.js
│ │ ├── gyp/
│ │ │ └── package.json
│ │ ├── jsconfig.json
│ │ ├── postinstall.js
│ │ ├── preinstall.js
│ │ ├── update-all-grammars.mjs
│ │ ├── update-distro.mjs
│ │ └── update-localization-extension.js
│ ├── package.json
│ ├── setup-npm-registry.js
│ ├── stylelint.js
│ ├── tsconfig.build.json
│ ├── tsconfig.json
│ └── win32/
│ ├── .gitignore
│ ├── Cargo.toml
│ ├── code.iss
│ ├── explorer-appx-fetcher.js
│ ├── explorer-appx-fetcher.ts
│ └── i18n/
│ ├── Default.hu.isl
│ ├── Default.ko.isl
│ ├── Default.zh-cn.isl
│ ├── Default.zh-tw.isl
│ ├── messages.de.isl
│ ├── messages.en.isl
│ ├── messages.es.isl
│ ├── messages.fr.isl
│ ├── messages.hu.isl
│ ├── messages.it.isl
│ ├── messages.ja.isl
│ ├── messages.ko.isl
│ ├── messages.pt-br.isl
│ ├── messages.ru.isl
│ ├── messages.tr.isl
│ ├── messages.zh-cn.isl
│ └── messages.zh-tw.isl
├── cglicenses.json
├── cgmanifest.json
├── cli/
│ ├── .cargo/
│ │ └── config.toml
│ ├── CONTRIBUTING.md
│ ├── Cargo.toml
│ ├── ThirdPartyNotices.txt
│ ├── build.rs
│ ├── rustfmt.toml
│ └── src/
│ ├── async_pipe.rs
│ ├── auth.rs
│ ├── bin/
│ │ └── code/
│ │ ├── legacy_args.rs
│ │ └── main.rs
│ ├── commands/
│ │ ├── args.rs
│ │ ├── context.rs
│ │ ├── output.rs
│ │ ├── serve_web.rs
│ │ ├── tunnels.rs
│ │ ├── update.rs
│ │ └── version.rs
│ ├── commands.rs
│ ├── constants.rs
│ ├── desktop/
│ │ └── version_manager.rs
│ ├── desktop.rs
│ ├── download_cache.rs
│ ├── json_rpc.rs
│ ├── lib.rs
│ ├── log.rs
│ ├── msgpack_rpc.rs
│ ├── options.rs
│ ├── rpc.rs
│ ├── self_update.rs
│ ├── singleton.rs
│ ├── state.rs
│ ├── tunnels/
│ │ ├── challenge.rs
│ │ ├── code_server.rs
│ │ ├── control_server.rs
│ │ ├── dev_tunnels.rs
│ │ ├── legal.rs
│ │ ├── local_forwarding.rs
│ │ ├── nosleep.rs
│ │ ├── nosleep_linux.rs
│ │ ├── nosleep_macos.rs
│ │ ├── nosleep_windows.rs
│ │ ├── paths.rs
│ │ ├── port_forwarder.rs
│ │ ├── protocol.rs
│ │ ├── server_bridge.rs
│ │ ├── server_multiplexer.rs
│ │ ├── service.rs
│ │ ├── service_linux.rs
│ │ ├── service_macos.rs
│ │ ├── service_windows.rs
│ │ ├── shutdown_signal.rs
│ │ ├── singleton_client.rs
│ │ ├── singleton_server.rs
│ │ ├── socket_signal.rs
│ │ └── wsl_detect.rs
│ ├── tunnels.rs
│ ├── update_service.rs
│ ├── util/
│ │ ├── app_lock.rs
│ │ ├── command.rs
│ │ ├── errors.rs
│ │ ├── file_lock.rs
│ │ ├── http.rs
│ │ ├── input.rs
│ │ ├── io.rs
│ │ ├── is_integrated.rs
│ │ ├── machine.rs
│ │ ├── os.rs
│ │ ├── prereqs.rs
│ │ ├── ring_buffer.rs
│ │ ├── sync.rs
│ │ ├── tar.rs
│ │ └── zipper.rs
│ └── util.rs
├── eslint.config.js
├── extensions/
│ ├── .npmrc
│ ├── bat/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── snippets/
│ │ │ └── batchfile.code-snippets
│ │ └── syntaxes/
│ │ └── batchfile.tmLanguage.json
│ ├── cgmanifest.json
│ ├── clojure/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── syntaxes/
│ │ └── clojure.tmLanguage.json
│ ├── coffeescript/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── snippets/
│ │ │ └── coffeescript.code-snippets
│ │ └── syntaxes/
│ │ └── coffeescript.tmLanguage.json
│ ├── configuration-editing/
│ │ ├── .npmrc
│ │ ├── .vscodeignore
│ │ ├── extension-browser.webpack.config.js
│ │ ├── extension.webpack.config.js
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── schemas/
│ │ │ ├── attachContainer.schema.json
│ │ │ ├── devContainer.codespaces.schema.json
│ │ │ └── devContainer.vscode.schema.json
│ │ ├── src/
│ │ │ ├── browser/
│ │ │ │ └── net.ts
│ │ │ ├── configurationEditingMain.ts
│ │ │ ├── extensionsProposals.ts
│ │ │ ├── importExportProfiles.ts
│ │ │ ├── node/
│ │ │ │ └── net.ts
│ │ │ ├── settingsDocumentHelper.ts
│ │ │ ├── test/
│ │ │ │ ├── completion.test.ts
│ │ │ │ └── index.ts
│ │ │ └── typings/
│ │ │ └── ref.d.ts
│ │ └── tsconfig.json
│ ├── cpp/
│ │ ├── .vscodeignore
│ │ ├── build/
│ │ │ └── update-grammars.js
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── snippets/
│ │ │ ├── c.code-snippets
│ │ │ └── cpp.code-snippets
│ │ └── syntaxes/
│ │ ├── c.tmLanguage.json
│ │ ├── cpp.embedded.macro.tmLanguage.json
│ │ ├── cpp.tmLanguage.json
│ │ ├── cuda-cpp.tmLanguage.json
│ │ └── platform.tmLanguage.json
│ ├── csharp/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── snippets/
│ │ │ └── csharp.code-snippets
│ │ └── syntaxes/
│ │ └── csharp.tmLanguage.json
│ ├── css/
│ │ ├── .vscode/
│ │ │ └── launch.json
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── syntaxes/
│ │ └── css.tmLanguage.json
│ ├── css-language-features/
│ │ ├── .npmrc
│ │ ├── .vscode/
│ │ │ ├── launch.json
│ │ │ ├── settings.json
│ │ │ └── tasks.json
│ │ ├── .vscodeignore
│ │ ├── CONTRIBUTING.md
│ │ ├── README.md
│ │ ├── client/
│ │ │ ├── src/
│ │ │ │ ├── browser/
│ │ │ │ │ └── cssClientMain.ts
│ │ │ │ ├── cssClient.ts
│ │ │ │ ├── customData.ts
│ │ │ │ ├── dropOrPaste/
│ │ │ │ │ ├── dropOrPasteResource.ts
│ │ │ │ │ ├── shared.ts
│ │ │ │ │ └── uriList.ts
│ │ │ │ ├── node/
│ │ │ │ │ ├── cssClientMain.ts
│ │ │ │ │ └── nodeFs.ts
│ │ │ │ └── requests.ts
│ │ │ └── tsconfig.json
│ │ ├── extension-browser.webpack.config.js
│ │ ├── extension.webpack.config.js
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── schemas/
│ │ │ └── package.schema.json
│ │ ├── server/
│ │ │ ├── .npmrc
│ │ │ ├── .vscode/
│ │ │ │ ├── launch.json
│ │ │ │ └── tasks.json
│ │ │ ├── extension-browser.webpack.config.js
│ │ │ ├── extension.webpack.config.js
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── browser/
│ │ │ │ │ ├── cssServerMain.ts
│ │ │ │ │ └── cssServerWorkerMain.ts
│ │ │ │ ├── cssServer.ts
│ │ │ │ ├── customData.ts
│ │ │ │ ├── languageModelCache.ts
│ │ │ │ ├── node/
│ │ │ │ │ ├── cssServerMain.ts
│ │ │ │ │ ├── cssServerNodeMain.ts
│ │ │ │ │ └── nodeFs.ts
│ │ │ │ ├── requests.ts
│ │ │ │ ├── test/
│ │ │ │ │ ├── completion.test.ts
│ │ │ │ │ └── links.test.ts
│ │ │ │ └── utils/
│ │ │ │ ├── documentContext.ts
│ │ │ │ ├── runner.ts
│ │ │ │ ├── strings.ts
│ │ │ │ └── validation.ts
│ │ │ ├── test/
│ │ │ │ ├── index.js
│ │ │ │ ├── linksTestFixtures/
│ │ │ │ │ └── .gitignore
│ │ │ │ └── pathCompletionFixtures/
│ │ │ │ ├── .foo.js
│ │ │ │ ├── about/
│ │ │ │ │ ├── about.css
│ │ │ │ │ └── about.html
│ │ │ │ ├── index.html
│ │ │ │ ├── scss/
│ │ │ │ │ ├── _foo.scss
│ │ │ │ │ └── main.scss
│ │ │ │ └── src/
│ │ │ │ ├── data/
│ │ │ │ │ └── foo.asar
│ │ │ │ ├── feature.js
│ │ │ │ └── test.js
│ │ │ └── tsconfig.json
│ │ └── test/
│ │ └── mocha.opts
│ ├── dart/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── syntaxes/
│ │ └── dart.tmLanguage.json
│ ├── debug-auto-launch/
│ │ ├── .npmrc
│ │ ├── .vscode/
│ │ │ └── launch.json
│ │ ├── .vscodeignore
│ │ ├── extension.webpack.config.js
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── src/
│ │ │ └── extension.ts
│ │ └── tsconfig.json
│ ├── debug-server-ready/
│ │ ├── .npmrc
│ │ ├── .vscode/
│ │ │ └── launch.json
│ │ ├── .vscodeignore
│ │ ├── extension.webpack.config.js
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── src/
│ │ │ └── extension.ts
│ │ └── tsconfig.json
│ ├── diff/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── syntaxes/
│ │ └── diff.tmLanguage.json
│ ├── docker/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── syntaxes/
│ │ └── docker.tmLanguage.json
│ ├── emmet/
│ │ ├── .npmrc
│ │ ├── .vscode/
│ │ │ ├── launch.json
│ │ │ └── settings.json
│ │ ├── .vscodeignore
│ │ ├── CONTRIBUTING.md
│ │ ├── README.md
│ │ ├── cgmanifest.json
│ │ ├── extension-browser.webpack.config.js
│ │ ├── extension.webpack.config.js
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── src/
│ │ │ ├── abbreviationActions.ts
│ │ │ ├── balance.ts
│ │ │ ├── browser/
│ │ │ │ └── emmetBrowserMain.ts
│ │ │ ├── bufferStream.ts
│ │ │ ├── defaultCompletionProvider.ts
│ │ │ ├── editPoint.ts
│ │ │ ├── emmetCommon.ts
│ │ │ ├── evaluateMathExpression.ts
│ │ │ ├── imageSizeHelper.ts
│ │ │ ├── incrementDecrement.ts
│ │ │ ├── locateFile.ts
│ │ │ ├── matchTag.ts
│ │ │ ├── mergeLines.ts
│ │ │ ├── node/
│ │ │ │ └── emmetNodeMain.ts
│ │ │ ├── parseDocument.ts
│ │ │ ├── reflectCssValue.ts
│ │ │ ├── removeTag.ts
│ │ │ ├── selectItem.ts
│ │ │ ├── selectItemHTML.ts
│ │ │ ├── selectItemStylesheet.ts
│ │ │ ├── splitJoinTag.ts
│ │ │ ├── test/
│ │ │ │ ├── abbreviationAction.test.ts
│ │ │ │ ├── completion.test.ts
│ │ │ │ ├── cssAbbreviationAction.test.ts
│ │ │ │ ├── editPointSelectItemBalance.test.ts
│ │ │ │ ├── evaluateMathExpression.test.ts
│ │ │ │ ├── incrementDecrement.test.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── partialParsingStylesheet.test.ts
│ │ │ │ ├── reflectCssValue.test.ts
│ │ │ │ ├── tagActions.test.ts
│ │ │ │ ├── testUtils.ts
│ │ │ │ ├── toggleComment.test.ts
│ │ │ │ ├── updateImageSize.test.ts
│ │ │ │ └── wrapWithAbbreviation.test.ts
│ │ │ ├── toggleComment.ts
│ │ │ ├── typings/
│ │ │ │ ├── EmmetFlatNode.d.ts
│ │ │ │ ├── EmmetNode.d.ts
│ │ │ │ ├── emmetio__css-parser.d.ts
│ │ │ │ ├── emmetio__html-matcher.d.ts
│ │ │ │ └── refs.d.ts
│ │ │ ├── updateImageSize.ts
│ │ │ ├── updateTag.ts
│ │ │ └── util.ts
│ │ ├── test-workspace/
│ │ │ └── .vscode/
│ │ │ └── settings.json
│ │ └── tsconfig.json
│ ├── esbuild-webview-common.js
│ ├── extension-editing/
│ │ ├── .npmrc
│ │ ├── .vscodeignore
│ │ ├── extension-browser.webpack.config.js
│ │ ├── extension.webpack.config.js
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── src/
│ │ │ ├── constants.ts
│ │ │ ├── extensionEditingBrowserMain.ts
│ │ │ ├── extensionEditingMain.ts
│ │ │ ├── extensionEngineValidation.ts
│ │ │ ├── extensionLinter.ts
│ │ │ ├── jsonReconstruct.ts
│ │ │ └── packageDocumentHelper.ts
│ │ └── tsconfig.json
│ ├── fsharp/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── snippets/
│ │ │ └── fsharp.code-snippets
│ │ └── syntaxes/
│ │ └── fsharp.tmLanguage.json
│ ├── git/
│ │ ├── .npmrc
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── build/
│ │ │ └── update-emoji.js
│ │ ├── extension.webpack.config.js
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── resources/
│ │ │ └── emojis.json
│ │ ├── src/
│ │ │ ├── actionButton.ts
│ │ │ ├── api/
│ │ │ │ ├── api1.ts
│ │ │ │ ├── extension.ts
│ │ │ │ └── git.d.ts
│ │ │ ├── askpass-empty.sh
│ │ │ ├── askpass-main.ts
│ │ │ ├── askpass.sh
│ │ │ ├── askpass.ts
│ │ │ ├── autofetch.ts
│ │ │ ├── blame.ts
│ │ │ ├── branchProtection.ts
│ │ │ ├── cache.ts
│ │ │ ├── commands.ts
│ │ │ ├── decorationProvider.ts
│ │ │ ├── decorators.ts
│ │ │ ├── diagnostics.ts
│ │ │ ├── editSessionIdentityProvider.ts
│ │ │ ├── emoji.ts
│ │ │ ├── fileSystemProvider.ts
│ │ │ ├── git-base.ts
│ │ │ ├── git-editor-empty.sh
│ │ │ ├── git-editor-main.ts
│ │ │ ├── git-editor.sh
│ │ │ ├── git.ts
│ │ │ ├── gitEditor.ts
│ │ │ ├── historyItemDetailsProvider.ts
│ │ │ ├── historyProvider.ts
│ │ │ ├── ipc/
│ │ │ │ ├── ipcClient.ts
│ │ │ │ └── ipcServer.ts
│ │ │ ├── main.ts
│ │ │ ├── model.ts
│ │ │ ├── operation.ts
│ │ │ ├── postCommitCommands.ts
│ │ │ ├── protocolHandler.ts
│ │ │ ├── pushError.ts
│ │ │ ├── remotePublisher.ts
│ │ │ ├── remoteSource.ts
│ │ │ ├── repository.ts
│ │ │ ├── ssh-askpass-empty.sh
│ │ │ ├── ssh-askpass.sh
│ │ │ ├── staging.ts
│ │ │ ├── statusbar.ts
│ │ │ ├── terminal.ts
│ │ │ ├── test/
│ │ │ │ ├── git.test.ts
│ │ │ │ ├── index.ts
│ │ │ │ └── smoke.test.ts
│ │ │ ├── timelineProvider.ts
│ │ │ ├── typings/
│ │ │ │ └── git-base.d.ts
│ │ │ ├── uri.ts
│ │ │ ├── util.ts
│ │ │ └── watch.ts
│ │ └── tsconfig.json
│ ├── git-base/
│ │ ├── .npmrc
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── build/
│ │ │ └── update-grammars.js
│ │ ├── cgmanifest.json
│ │ ├── extension-browser.webpack.config.js
│ │ ├── extension.webpack.config.js
│ │ ├── languages/
│ │ │ ├── git-commit.language-configuration.json
│ │ │ ├── git-rebase.language-configuration.json
│ │ │ └── ignore.language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── src/
│ │ │ ├── api/
│ │ │ │ ├── api1.ts
│ │ │ │ ├── extension.ts
│ │ │ │ └── git-base.d.ts
│ │ │ ├── decorators.ts
│ │ │ ├── extension.ts
│ │ │ ├── model.ts
│ │ │ ├── remoteProvider.ts
│ │ │ ├── remoteSource.ts
│ │ │ └── util.ts
│ │ ├── syntaxes/
│ │ │ ├── git-commit.tmLanguage.json
│ │ │ ├── git-rebase.tmLanguage.json
│ │ │ └── ignore.tmLanguage.json
│ │ └── tsconfig.json
│ ├── github/
│ │ ├── .npmrc
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── extension.webpack.config.js
│ │ ├── markdown.css
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── src/
│ │ │ ├── auth.ts
│ │ │ ├── branchProtection.ts
│ │ │ ├── canonicalUriProvider.ts
│ │ │ ├── commands.ts
│ │ │ ├── credentialProvider.ts
│ │ │ ├── extension.ts
│ │ │ ├── historyItemDetailsProvider.ts
│ │ │ ├── links.ts
│ │ │ ├── publish.ts
│ │ │ ├── pushErrorHandler.ts
│ │ │ ├── remoteSourceProvider.ts
│ │ │ ├── remoteSourcePublisher.ts
│ │ │ ├── shareProviders.ts
│ │ │ ├── test/
│ │ │ │ ├── github.test.ts
│ │ │ │ └── index.ts
│ │ │ ├── typings/
│ │ │ │ ├── git-base.d.ts
│ │ │ │ ├── git.d.ts
│ │ │ │ └── ref.d.ts
│ │ │ └── util.ts
│ │ ├── testWorkspace/
│ │ │ ├── .github/
│ │ │ │ ├── PULL_REQUEST_TEMPLATE/
│ │ │ │ │ ├── a.md
│ │ │ │ │ ├── b.md
│ │ │ │ │ └── x.txt
│ │ │ │ └── PULL_REQUEST_TEMPLATE.md
│ │ │ ├── PULL_REQUEST_TEMPLATE/
│ │ │ │ ├── a.md
│ │ │ │ ├── b.md
│ │ │ │ └── x.txt
│ │ │ ├── PULL_REQUEST_TEMPLATE.md
│ │ │ ├── docs/
│ │ │ │ ├── PULL_REQUEST_TEMPLATE/
│ │ │ │ │ ├── a.md
│ │ │ │ │ ├── b.md
│ │ │ │ │ └── x.txt
│ │ │ │ └── PULL_REQUEST_TEMPLATE.md
│ │ │ ├── some-markdown.md
│ │ │ └── x.txt
│ │ └── tsconfig.json
│ ├── github-authentication/
│ │ ├── .gitignore
│ │ ├── .npmrc
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── extension-browser.webpack.config.js
│ │ ├── extension.webpack.config.js
│ │ ├── media/
│ │ │ ├── auth.css
│ │ │ └── index.html
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── src/
│ │ │ ├── browser/
│ │ │ │ ├── authServer.ts
│ │ │ │ ├── buffer.ts
│ │ │ │ ├── crypto.ts
│ │ │ │ └── fetch.ts
│ │ │ ├── common/
│ │ │ │ ├── env.ts
│ │ │ │ ├── errors.ts
│ │ │ │ ├── experimentationService.ts
│ │ │ │ ├── keychain.ts
│ │ │ │ ├── logger.ts
│ │ │ │ └── utils.ts
│ │ │ ├── config.ts
│ │ │ ├── extension.ts
│ │ │ ├── flows.ts
│ │ │ ├── github.ts
│ │ │ ├── githubServer.ts
│ │ │ ├── node/
│ │ │ │ ├── authServer.ts
│ │ │ │ ├── buffer.ts
│ │ │ │ ├── crypto.ts
│ │ │ │ └── fetch.ts
│ │ │ └── test/
│ │ │ ├── flows.test.ts
│ │ │ └── node/
│ │ │ └── authServer.test.ts
│ │ └── tsconfig.json
│ ├── go/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── syntaxes/
│ │ └── go.tmLanguage.json
│ ├── groovy/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── snippets/
│ │ │ └── groovy.code-snippets
│ │ └── syntaxes/
│ │ └── groovy.tmLanguage.json
│ ├── grunt/
│ │ ├── .npmrc
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── extension.webpack.config.js
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── src/
│ │ │ └── main.ts
│ │ └── tsconfig.json
│ ├── gulp/
│ │ ├── .npmrc
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── extension.webpack.config.js
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── src/
│ │ │ └── main.ts
│ │ └── tsconfig.json
│ ├── handlebars/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── syntaxes/
│ │ └── Handlebars.tmLanguage.json
│ ├── hlsl/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── syntaxes/
│ │ └── hlsl.tmLanguage.json
│ ├── html/
│ │ ├── .vscodeignore
│ │ ├── build/
│ │ │ └── update-grammar.mjs
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── snippets/
│ │ │ └── html.code-snippets
│ │ └── syntaxes/
│ │ ├── html-derivative.tmLanguage.json
│ │ └── html.tmLanguage.json
│ ├── html-language-features/
│ │ ├── .npmrc
│ │ ├── .vscode/
│ │ │ ├── launch.json
│ │ │ ├── settings.json
│ │ │ └── tasks.json
│ │ ├── .vscodeignore
│ │ ├── CONTRIBUTING.md
│ │ ├── README.md
│ │ ├── build/
│ │ │ └── bundleTypeScriptLibraries.js
│ │ ├── cgmanifest.json
│ │ ├── client/
│ │ │ ├── src/
│ │ │ │ ├── autoInsertion.ts
│ │ │ │ ├── browser/
│ │ │ │ │ └── htmlClientMain.ts
│ │ │ │ ├── customData.ts
│ │ │ │ ├── htmlClient.ts
│ │ │ │ ├── languageParticipants.ts
│ │ │ │ ├── node/
│ │ │ │ │ ├── htmlClientMain.ts
│ │ │ │ │ └── nodeFs.ts
│ │ │ │ └── requests.ts
│ │ │ └── tsconfig.json
│ │ ├── extension-browser.webpack.config.js
│ │ ├── extension.webpack.config.js
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── schemas/
│ │ │ └── package.schema.json
│ │ └── server/
│ │ ├── .npmrc
│ │ ├── .vscode/
│ │ │ ├── launch.json
│ │ │ └── tasks.json
│ │ ├── build/
│ │ │ └── javaScriptLibraryLoader.js
│ │ ├── extension-browser.webpack.config.js
│ │ ├── extension.webpack.config.js
│ │ ├── lib/
│ │ │ ├── cgmanifest.json
│ │ │ └── jquery.d.ts
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── browser/
│ │ │ │ ├── htmlServerMain.ts
│ │ │ │ └── htmlServerWorkerMain.ts
│ │ │ ├── customData.ts
│ │ │ ├── htmlServer.ts
│ │ │ ├── languageModelCache.ts
│ │ │ ├── modes/
│ │ │ │ ├── cssMode.ts
│ │ │ │ ├── embeddedSupport.ts
│ │ │ │ ├── formatting.ts
│ │ │ │ ├── htmlFolding.ts
│ │ │ │ ├── htmlMode.ts
│ │ │ │ ├── javascriptLibs.ts
│ │ │ │ ├── javascriptMode.ts
│ │ │ │ ├── javascriptSemanticTokens.ts
│ │ │ │ ├── languageModes.ts
│ │ │ │ ├── selectionRanges.ts
│ │ │ │ └── semanticTokens.ts
│ │ │ ├── node/
│ │ │ │ ├── htmlServerMain.ts
│ │ │ │ ├── htmlServerNodeMain.ts
│ │ │ │ └── nodeFs.ts
│ │ │ ├── requests.ts
│ │ │ ├── test/
│ │ │ │ ├── completions.test.ts
│ │ │ │ ├── documentContext.test.ts
│ │ │ │ ├── embedded.test.ts
│ │ │ │ ├── fixtures/
│ │ │ │ │ ├── expected/
│ │ │ │ │ │ ├── 19813-4spaces.html
│ │ │ │ │ │ ├── 19813-tab.html
│ │ │ │ │ │ ├── 19813.html
│ │ │ │ │ │ └── 21634.html
│ │ │ │ │ └── inputs/
│ │ │ │ │ ├── 19813.html
│ │ │ │ │ └── 21634.html
│ │ │ │ ├── folding.test.ts
│ │ │ │ ├── formatting.test.ts
│ │ │ │ ├── pathCompletionFixtures/
│ │ │ │ │ ├── .foo.js
│ │ │ │ │ ├── about/
│ │ │ │ │ │ ├── about.css
│ │ │ │ │ │ ├── about.html
│ │ │ │ │ │ └── media/
│ │ │ │ │ │ └── icon.pic
│ │ │ │ │ ├── index.html
│ │ │ │ │ └── src/
│ │ │ │ │ ├── feature.js
│ │ │ │ │ └── test.js
│ │ │ │ ├── rename.test.ts
│ │ │ │ ├── selectionRanges.test.ts
│ │ │ │ ├── semanticTokens.test.ts
│ │ │ │ └── words.test.ts
│ │ │ └── utils/
│ │ │ ├── arrays.ts
│ │ │ ├── documentContext.ts
│ │ │ ├── positions.ts
│ │ │ ├── runner.ts
│ │ │ ├── strings.ts
│ │ │ └── validation.ts
│ │ ├── test/
│ │ │ └── index.js
│ │ └── tsconfig.json
│ ├── ini/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── ini.language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── properties.language-configuration.json
│ │ └── syntaxes/
│ │ └── ini.tmLanguage.json
│ ├── ipynb/
│ │ ├── .gitignore
│ │ ├── .npmrc
│ │ ├── .vscode/
│ │ │ └── launch.json
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── esbuild.js
│ │ ├── extension-browser.webpack.config.js
│ │ ├── extension.webpack.config.js
│ │ ├── notebook-src/
│ │ │ └── cellAttachmentRenderer.ts
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── src/
│ │ │ ├── common.ts
│ │ │ ├── constants.ts
│ │ │ ├── deserializers.ts
│ │ │ ├── helper.ts
│ │ │ ├── ipynbMain.browser.ts
│ │ │ ├── ipynbMain.node.ts
│ │ │ ├── ipynbMain.ts
│ │ │ ├── notebookAttachmentCleaner.ts
│ │ │ ├── notebookImagePaste.ts
│ │ │ ├── notebookModelStoreSync.ts
│ │ │ ├── notebookSerializer.node.ts
│ │ │ ├── notebookSerializer.ts
│ │ │ ├── notebookSerializer.web.ts
│ │ │ ├── notebookSerializerWorker.ts
│ │ │ ├── notebookSerializerWorker.web.ts
│ │ │ ├── serializers.ts
│ │ │ ├── test/
│ │ │ │ ├── clearOutputs.test.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── notebookModelStoreSync.test.ts
│ │ │ │ └── serializers.test.ts
│ │ │ └── types.d.ts
│ │ └── tsconfig.json
│ ├── jake/
│ │ ├── .npmrc
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── extension.webpack.config.js
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── src/
│ │ │ └── main.ts
│ │ └── tsconfig.json
│ ├── java/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── snippets/
│ │ │ └── java.code-snippets
│ │ └── syntaxes/
│ │ └── java.tmLanguage.json
│ ├── javascript/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── javascript-language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── snippets/
│ │ │ └── javascript.code-snippets
│ │ ├── syntaxes/
│ │ │ ├── JavaScript.tmLanguage.json
│ │ │ ├── JavaScriptReact.tmLanguage.json
│ │ │ ├── Readme.md
│ │ │ └── Regular Expressions (JavaScript).tmLanguage
│ │ └── tags-language-configuration.json
│ ├── json/
│ │ ├── .vscodeignore
│ │ ├── build/
│ │ │ └── update-grammars.js
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── syntaxes/
│ │ ├── JSON.tmLanguage.json
│ │ ├── JSONC.tmLanguage.json
│ │ ├── JSONL.tmLanguage.json
│ │ └── snippets.tmLanguage.json
│ ├── json-language-features/
│ │ ├── .npmrc
│ │ ├── .vscode/
│ │ │ ├── launch.json
│ │ │ └── tasks.json
│ │ ├── .vscodeignore
│ │ ├── CONTRIBUTING.md
│ │ ├── README.md
│ │ ├── client/
│ │ │ ├── src/
│ │ │ │ ├── browser/
│ │ │ │ │ └── jsonClientMain.ts
│ │ │ │ ├── jsonClient.ts
│ │ │ │ ├── languageParticipants.ts
│ │ │ │ ├── languageStatus.ts
│ │ │ │ ├── node/
│ │ │ │ │ ├── jsonClientMain.ts
│ │ │ │ │ └── schemaCache.ts
│ │ │ │ └── utils/
│ │ │ │ └── hash.ts
│ │ │ └── tsconfig.json
│ │ ├── extension-browser.webpack.config.js
│ │ ├── extension.webpack.config.js
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── server/
│ │ ├── .npmignore
│ │ ├── .npmrc
│ │ ├── .vscode/
│ │ │ ├── launch.json
│ │ │ └── tasks.json
│ │ ├── README.md
│ │ ├── bin/
│ │ │ └── vscode-json-languageserver
│ │ ├── extension-browser.webpack.config.js
│ │ ├── extension.webpack.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── browser/
│ │ │ │ ├── jsonServerMain.ts
│ │ │ │ └── jsonServerWorkerMain.ts
│ │ │ ├── jsonServer.ts
│ │ │ ├── languageModelCache.ts
│ │ │ ├── node/
│ │ │ │ ├── jsonServerMain.ts
│ │ │ │ └── jsonServerNodeMain.ts
│ │ │ └── utils/
│ │ │ ├── runner.ts
│ │ │ ├── strings.ts
│ │ │ └── validation.ts
│ │ ├── test/
│ │ │ └── mocha.opts
│ │ └── tsconfig.json
│ ├── julia/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── syntaxes/
│ │ └── julia.tmLanguage.json
│ ├── latex/
│ │ ├── .vscodeignore
│ │ ├── build/
│ │ │ └── update-grammars.js
│ │ ├── cgmanifest.json
│ │ ├── cpp-bailout-license.txt
│ │ ├── latex-cpp-embedded-language-configuration.json
│ │ ├── latex-language-configuration.json
│ │ ├── markdown-latex-combined-language-configuration.json
│ │ ├── markdown-latex-combined-license.txt
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── syntaxes/
│ │ ├── Bibtex.tmLanguage.json
│ │ ├── LaTeX.tmLanguage.json
│ │ ├── TeX.tmLanguage.json
│ │ ├── cpp-grammar-bailout.tmLanguage.json
│ │ └── markdown-latex-combined.tmLanguage.json
│ ├── less/
│ │ ├── .vscodeignore
│ │ ├── build/
│ │ │ └── update-grammar.js
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── syntaxes/
│ │ └── less.tmLanguage.json
│ ├── log/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── syntaxes/
│ │ └── log.tmLanguage.json
│ ├── lua/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── syntaxes/
│ │ └── lua.tmLanguage.json
│ ├── make/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── syntaxes/
│ │ └── make.tmLanguage.json
│ ├── mangle-loader.js
│ ├── markdown-basics/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── snippets/
│ │ │ └── markdown.code-snippets
│ │ └── syntaxes/
│ │ └── markdown.tmLanguage.json
│ ├── markdown-language-features/
│ │ ├── .gitignore
│ │ ├── .npmrc
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── esbuild-notebook.js
│ │ ├── esbuild-preview.js
│ │ ├── extension-browser.webpack.config.js
│ │ ├── extension.webpack.config.js
│ │ ├── media/
│ │ │ ├── highlight.css
│ │ │ └── markdown.css
│ │ ├── notebook/
│ │ │ ├── index.ts
│ │ │ └── tsconfig.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── preview-src/
│ │ │ ├── activeLineMarker.ts
│ │ │ ├── csp.ts
│ │ │ ├── events.ts
│ │ │ ├── index.ts
│ │ │ ├── loading.ts
│ │ │ ├── messaging.ts
│ │ │ ├── pre.ts
│ │ │ ├── scroll-sync.ts
│ │ │ ├── settings.ts
│ │ │ ├── strings.ts
│ │ │ └── tsconfig.json
│ │ ├── schemas/
│ │ │ └── package.schema.json
│ │ ├── src/
│ │ │ ├── client/
│ │ │ │ ├── client.ts
│ │ │ │ ├── fileWatchingManager.ts
│ │ │ │ ├── inMemoryDocument.ts
│ │ │ │ ├── protocol.ts
│ │ │ │ └── workspace.ts
│ │ │ ├── commandManager.ts
│ │ │ ├── commands/
│ │ │ │ ├── copyImage.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── insertResource.ts
│ │ │ │ ├── openImage.ts
│ │ │ │ ├── refreshPreview.ts
│ │ │ │ ├── reloadPlugins.ts
│ │ │ │ ├── renderDocument.ts
│ │ │ │ ├── showPreview.ts
│ │ │ │ ├── showPreviewSecuritySelector.ts
│ │ │ │ ├── showSource.ts
│ │ │ │ └── toggleLock.ts
│ │ │ ├── extension.browser.ts
│ │ │ ├── extension.shared.ts
│ │ │ ├── extension.ts
│ │ │ ├── languageFeatures/
│ │ │ │ ├── copyFiles/
│ │ │ │ │ ├── copyFiles.ts
│ │ │ │ │ ├── dropOrPasteResource.ts
│ │ │ │ │ ├── newFilePathGenerator.ts
│ │ │ │ │ ├── pasteUrlProvider.ts
│ │ │ │ │ ├── shared.ts
│ │ │ │ │ ├── smartDropOrPaste.ts
│ │ │ │ │ └── snippets.ts
│ │ │ │ ├── diagnostics.ts
│ │ │ │ ├── fileReferences.ts
│ │ │ │ ├── linkUpdater.ts
│ │ │ │ └── updateLinksOnPaste.ts
│ │ │ ├── logging.ts
│ │ │ ├── markdownEngine.ts
│ │ │ ├── markdownExtensions.ts
│ │ │ ├── preview/
│ │ │ │ ├── documentRenderer.ts
│ │ │ │ ├── preview.ts
│ │ │ │ ├── previewConfig.ts
│ │ │ │ ├── previewManager.ts
│ │ │ │ ├── scrolling.ts
│ │ │ │ ├── security.ts
│ │ │ │ └── topmostLineMonitor.ts
│ │ │ ├── slugify.ts
│ │ │ ├── telemetryReporter.ts
│ │ │ ├── test/
│ │ │ │ ├── copyFile.test.ts
│ │ │ │ ├── documentLink.test.ts
│ │ │ │ ├── engine.test.ts
│ │ │ │ ├── engine.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── nulLogging.ts
│ │ │ │ ├── pasteUrl.test.ts
│ │ │ │ ├── urlToUri.test.ts
│ │ │ │ └── util.ts
│ │ │ ├── types/
│ │ │ │ └── textDocument.ts
│ │ │ ├── typings/
│ │ │ │ └── ref.d.ts
│ │ │ └── util/
│ │ │ ├── arrays.ts
│ │ │ ├── async.ts
│ │ │ ├── cancellation.ts
│ │ │ ├── dispose.ts
│ │ │ ├── document.ts
│ │ │ ├── dom.ts
│ │ │ ├── file.ts
│ │ │ ├── mimes.ts
│ │ │ ├── openDocumentLink.ts
│ │ │ ├── resourceMap.ts
│ │ │ ├── resources.ts
│ │ │ ├── schemes.ts
│ │ │ ├── uriList.ts
│ │ │ └── url.ts
│ │ ├── test-workspace/
│ │ │ ├── a.md
│ │ │ ├── b.md
│ │ │ ├── sub/
│ │ │ │ ├── c.md
│ │ │ │ ├── d.md
│ │ │ │ ├── file with space.md
│ │ │ │ └── foo.txt
│ │ │ └── sub with space/
│ │ │ └── file.md
│ │ ├── tsconfig.browser.json
│ │ ├── tsconfig.json
│ │ └── types/
│ │ └── previewMessaging.d.ts
│ ├── markdown-math/
│ │ ├── .gitignore
│ │ ├── .npmrc
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── cgmanifest.json
│ │ ├── esbuild.js
│ │ ├── extension-browser.webpack.config.js
│ │ ├── extension.webpack.config.js
│ │ ├── notebook/
│ │ │ ├── katex.ts
│ │ │ └── tsconfig.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── preview-styles/
│ │ │ └── index.css
│ │ ├── src/
│ │ │ └── extension.ts
│ │ ├── syntaxes/
│ │ │ ├── md-math-block.tmLanguage.json
│ │ │ ├── md-math-fence.tmLanguage.json
│ │ │ ├── md-math-inline.tmLanguage.json
│ │ │ └── md-math.tmLanguage.json
│ │ └── tsconfig.json
│ ├── media-preview/
│ │ ├── .npmrc
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── extension-browser.webpack.config.js
│ │ ├── extension.webpack.config.js
│ │ ├── media/
│ │ │ ├── audioPreview.css
│ │ │ ├── audioPreview.js
│ │ │ ├── imagePreview.css
│ │ │ ├── imagePreview.js
│ │ │ ├── videoPreview.css
│ │ │ └── videoPreview.js
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── src/
│ │ │ ├── audioPreview.ts
│ │ │ ├── binarySizeStatusBarEntry.ts
│ │ │ ├── extension.ts
│ │ │ ├── imagePreview/
│ │ │ │ ├── index.ts
│ │ │ │ ├── sizeStatusBarEntry.ts
│ │ │ │ └── zoomStatusBarEntry.ts
│ │ │ ├── mediaPreview.ts
│ │ │ ├── ownedStatusBarEntry.ts
│ │ │ ├── util/
│ │ │ │ ├── dispose.ts
│ │ │ │ └── dom.ts
│ │ │ └── videoPreview.ts
│ │ └── tsconfig.json
│ ├── merge-conflict/
│ │ ├── .npmrc
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── extension-browser.webpack.config.js
│ │ ├── extension.webpack.config.js
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── src/
│ │ │ ├── codelensProvider.ts
│ │ │ ├── commandHandler.ts
│ │ │ ├── contentProvider.ts
│ │ │ ├── delayer.ts
│ │ │ ├── documentMergeConflict.ts
│ │ │ ├── documentTracker.ts
│ │ │ ├── interfaces.ts
│ │ │ ├── mergeConflictMain.ts
│ │ │ ├── mergeConflictParser.ts
│ │ │ ├── mergeDecorator.ts
│ │ │ └── services.ts
│ │ └── tsconfig.json
│ ├── microsoft-authentication/
│ │ ├── .npmrc
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── extension-browser.webpack.config.js
│ │ ├── extension.webpack.config.js
│ │ ├── media/
│ │ │ ├── auth.css
│ │ │ └── index.html
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── packageMocks/
│ │ │ ├── dpapi/
│ │ │ │ └── dpapi.js
│ │ │ └── keytar/
│ │ │ ├── index.js
│ │ │ └── package.json
│ │ ├── src/
│ │ │ ├── AADHelper.ts
│ │ │ ├── UriEventHandler.ts
│ │ │ ├── betterSecretStorage.ts
│ │ │ ├── browser/
│ │ │ │ ├── authProvider.ts
│ │ │ │ ├── authServer.ts
│ │ │ │ ├── buffer.ts
│ │ │ │ └── fetch.ts
│ │ │ ├── common/
│ │ │ │ ├── accountAccess.ts
│ │ │ │ ├── async.ts
│ │ │ │ ├── cachePlugin.ts
│ │ │ │ ├── env.ts
│ │ │ │ ├── event.ts
│ │ │ │ ├── experimentation.ts
│ │ │ │ ├── loggerOptions.ts
│ │ │ │ ├── loopbackClientAndOpener.ts
│ │ │ │ ├── publicClientCache.ts
│ │ │ │ ├── scopeData.ts
│ │ │ │ ├── telemetryReporter.ts
│ │ │ │ ├── test/
│ │ │ │ │ ├── loopbackClientAndOpener.test.ts
│ │ │ │ │ └── scopeData.test.ts
│ │ │ │ └── uri.ts
│ │ │ ├── cryptoUtils.ts
│ │ │ ├── extension.ts
│ │ │ ├── extensionV1.ts
│ │ │ ├── extensionV2.ts
│ │ │ ├── logger.ts
│ │ │ └── node/
│ │ │ ├── authProvider.ts
│ │ │ ├── authServer.ts
│ │ │ ├── buffer.ts
│ │ │ ├── cachedPublicClientApplication.ts
│ │ │ ├── fetch.ts
│ │ │ ├── flows.ts
│ │ │ ├── loopbackTemplate.ts
│ │ │ └── publicClientCache.ts
│ │ └── tsconfig.json
│ ├── notebook-renderers/
│ │ ├── .gitignore
│ │ ├── .npmrc
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── esbuild.js
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── src/
│ │ │ ├── ansi.ts
│ │ │ ├── color.ts
│ │ │ ├── colorMap.ts
│ │ │ ├── htmlHelper.ts
│ │ │ ├── index.ts
│ │ │ ├── linkify.ts
│ │ │ ├── rendererTypes.ts
│ │ │ ├── stackTraceHelper.ts
│ │ │ ├── test/
│ │ │ │ ├── index.ts
│ │ │ │ ├── linkify.test.ts
│ │ │ │ ├── notebookRenderer.test.ts
│ │ │ │ └── stackTraceHelper.test.ts
│ │ │ └── textHelper.ts
│ │ └── tsconfig.json
│ ├── npm/
│ │ ├── .npmrc
│ │ ├── .vscode/
│ │ │ ├── launch.json
│ │ │ └── tasks.json
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── extension-browser.webpack.config.js
│ │ ├── extension.webpack.config.js
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── src/
│ │ │ ├── commands.ts
│ │ │ ├── features/
│ │ │ │ ├── bowerJSONContribution.ts
│ │ │ │ ├── date.ts
│ │ │ │ ├── jsonContributions.ts
│ │ │ │ └── packageJSONContribution.ts
│ │ │ ├── npmBrowserMain.ts
│ │ │ ├── npmMain.ts
│ │ │ ├── npmScriptLens.ts
│ │ │ ├── npmView.ts
│ │ │ ├── preferred-pm.ts
│ │ │ ├── readScripts.ts
│ │ │ ├── scriptHover.ts
│ │ │ └── tasks.ts
│ │ └── tsconfig.json
│ ├── objective-c/
│ │ ├── .vscodeignore
│ │ ├── build/
│ │ │ └── update-grammars.js
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── syntaxes/
│ │ ├── objective-c++.tmLanguage.json
│ │ └── objective-c.tmLanguage.json
│ ├── open-remote-ssh/
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── extension-browser.webpack.config.js
│ │ ├── extension.webpack.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── authResolver.ts
│ │ │ ├── commands.ts
│ │ │ ├── common/
│ │ │ │ ├── disposable.ts
│ │ │ │ ├── files.ts
│ │ │ │ ├── logger.ts
│ │ │ │ ├── platform.ts
│ │ │ │ └── ports.ts
│ │ │ ├── extension.ts
│ │ │ ├── hostTreeView.ts
│ │ │ ├── remoteLocationHistory.ts
│ │ │ ├── serverConfig.ts
│ │ │ ├── serverSetup.ts
│ │ │ └── ssh/
│ │ │ ├── hostfile.ts
│ │ │ ├── identityFiles.ts
│ │ │ ├── sshConfig.ts
│ │ │ ├── sshConnection.ts
│ │ │ └── sshDestination.ts
│ │ └── tsconfig.json
│ ├── open-remote-wsl/
│ │ ├── README.md
│ │ ├── extension-browser.webpack.config.js
│ │ ├── extension.webpack.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── authResolver.ts
│ │ │ ├── commands.ts
│ │ │ ├── common/
│ │ │ │ ├── async.ts
│ │ │ │ ├── disposable.ts
│ │ │ │ ├── event.ts
│ │ │ │ ├── files.ts
│ │ │ │ ├── logger.ts
│ │ │ │ ├── platform.ts
│ │ │ │ └── ports.ts
│ │ │ ├── distroTreeView.ts
│ │ │ ├── extension.ts
│ │ │ ├── remoteLocationHistory.ts
│ │ │ ├── serverConfig.ts
│ │ │ ├── serverSetup.ts
│ │ │ └── wsl/
│ │ │ ├── wslManager.ts
│ │ │ └── wslTerminal.ts
│ │ └── tsconfig.json
│ ├── package.json
│ ├── perl/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── perl.language-configuration.json
│ │ ├── perl6.language-configuration.json
│ │ └── syntaxes/
│ │ ├── perl.tmLanguage.json
│ │ └── perl6.tmLanguage.json
│ ├── php/
│ │ ├── .vscode/
│ │ │ ├── launch.json
│ │ │ └── tasks.json
│ │ ├── .vscodeignore
│ │ ├── build/
│ │ │ └── update-grammar.mjs
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── snippets/
│ │ │ └── php.code-snippets
│ │ └── syntaxes/
│ │ ├── html.tmLanguage.json
│ │ └── php.tmLanguage.json
│ ├── php-language-features/
│ │ ├── .npmrc
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── extension.webpack.config.js
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── src/
│ │ │ ├── features/
│ │ │ │ ├── completionItemProvider.ts
│ │ │ │ ├── hoverProvider.ts
│ │ │ │ ├── phpGlobalFunctions.ts
│ │ │ │ ├── phpGlobals.ts
│ │ │ │ ├── signatureHelpProvider.ts
│ │ │ │ ├── utils/
│ │ │ │ │ ├── async.ts
│ │ │ │ │ └── markedTextUtil.ts
│ │ │ │ └── validationProvider.ts
│ │ │ ├── phpMain.ts
│ │ │ └── typings/
│ │ │ └── node.additions.d.ts
│ │ └── tsconfig.json
│ ├── postinstall.mjs
│ ├── powershell/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── syntaxes/
│ │ └── powershell.tmLanguage.json
│ ├── pug/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── syntaxes/
│ │ └── pug.tmLanguage.json
│ ├── python/
│ │ ├── .vscode/
│ │ │ ├── launch.json
│ │ │ └── tasks.json
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── syntaxes/
│ │ ├── MagicPython.tmLanguage.json
│ │ └── MagicRegExp.tmLanguage.json
│ ├── r/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── syntaxes/
│ │ └── r.tmLanguage.json
│ ├── razor/
│ │ ├── .vscodeignore
│ │ ├── build/
│ │ │ └── update-grammar.mjs
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── syntaxes/
│ │ └── cshtml.tmLanguage.json
│ ├── references-view/
│ │ ├── .npmrc
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── extension-browser.webpack.config.js
│ │ ├── extension.webpack.config.js
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── src/
│ │ │ ├── calls/
│ │ │ │ ├── index.ts
│ │ │ │ └── model.ts
│ │ │ ├── extension.ts
│ │ │ ├── highlights.ts
│ │ │ ├── navigation.ts
│ │ │ ├── references/
│ │ │ │ ├── index.ts
│ │ │ │ └── model.ts
│ │ │ ├── references-view.d.ts
│ │ │ ├── tree.ts
│ │ │ ├── types/
│ │ │ │ ├── index.ts
│ │ │ │ └── model.ts
│ │ │ └── utils.ts
│ │ └── tsconfig.json
│ ├── restructuredtext/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── syntaxes/
│ │ └── rst.tmLanguage.json
│ ├── ruby/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── syntaxes/
│ │ └── ruby.tmLanguage.json
│ ├── rust/
│ │ ├── .vscodeignore
│ │ ├── build/
│ │ │ └── update-grammar.mjs
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── syntaxes/
│ │ └── rust.tmLanguage.json
│ ├── scss/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── syntaxes/
│ │ ├── sassdoc.tmLanguage.json
│ │ └── scss.tmLanguage.json
│ ├── search-result/
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── extension-browser.webpack.config.js
│ │ ├── extension.webpack.config.js
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── src/
│ │ │ └── extension.ts
│ │ ├── syntaxes/
│ │ │ ├── generateTMLanguage.js
│ │ │ └── searchResult.tmLanguage.json
│ │ └── tsconfig.json
│ ├── shaderlab/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── syntaxes/
│ │ └── shaderlab.tmLanguage.json
│ ├── shared.webpack.config.js
│ ├── shellscript/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── syntaxes/
│ │ └── shell-unix-bash.tmLanguage.json
│ ├── simple-browser/
│ │ ├── .gitignore
│ │ ├── .npmrc
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── esbuild-preview.js
│ │ ├── extension-browser.webpack.config.js
│ │ ├── extension.webpack.config.js
│ │ ├── media/
│ │ │ └── main.css
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── preview-src/
│ │ │ ├── events.ts
│ │ │ ├── index.ts
│ │ │ └── tsconfig.json
│ │ ├── src/
│ │ │ ├── dispose.ts
│ │ │ ├── extension.ts
│ │ │ ├── simpleBrowserManager.ts
│ │ │ └── simpleBrowserView.ts
│ │ └── tsconfig.json
│ ├── sql/
│ │ ├── .vscodeignore
│ │ ├── build/
│ │ │ └── update-grammar.mjs
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── syntaxes/
│ │ └── sql.tmLanguage.json
│ ├── swift/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── snippets/
│ │ │ └── swift.code-snippets
│ │ └── syntaxes/
│ │ └── swift.tmLanguage.json
│ ├── terminal-suggest/
│ │ ├── .gitignore
│ │ ├── .vscode/
│ │ │ ├── launch.json
│ │ │ └── tasks.json
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── ThirdPartyNotices.txt
│ │ ├── cgmanifest.json
│ │ ├── extension.webpack.config.js
│ │ ├── fixtures/
│ │ │ └── shell-parser/
│ │ │ ├── basic/
│ │ │ │ ├── input.sh
│ │ │ │ └── output.txt
│ │ │ ├── multipleStatements/
│ │ │ │ ├── input.sh
│ │ │ │ └── output.txt
│ │ │ ├── primaryExpressions/
│ │ │ │ ├── input.sh
│ │ │ │ └── output.txt
│ │ │ └── variables/
│ │ │ ├── input.sh
│ │ │ └── output.txt
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── scripts/
│ │ │ ├── clone-fig.ps1
│ │ │ ├── clone-fig.sh
│ │ │ ├── pullFishBuiltins.ts
│ │ │ ├── pullZshBuiltins.ts
│ │ │ ├── terminalScriptHelpers.ts
│ │ │ ├── update-specs.js
│ │ │ ├── update-specs.ps1
│ │ │ └── update-specs.sh
│ │ ├── src/
│ │ │ ├── completions/
│ │ │ │ ├── cd.ts
│ │ │ │ ├── code-insiders.ts
│ │ │ │ ├── code-tunnel-insiders.ts
│ │ │ │ ├── code-tunnel.ts
│ │ │ │ ├── code.ts
│ │ │ │ ├── index.d.ts
│ │ │ │ ├── npx.ts
│ │ │ │ ├── set-location.ts
│ │ │ │ └── upstream/
│ │ │ │ ├── apt.ts
│ │ │ │ ├── brew.ts
│ │ │ │ ├── cat.ts
│ │ │ │ ├── chmod.ts
│ │ │ │ ├── chown.ts
│ │ │ │ ├── cp.ts
│ │ │ │ ├── curl.ts
│ │ │ │ ├── df.ts
│ │ │ │ ├── du.ts
│ │ │ │ ├── echo.ts
│ │ │ │ ├── find.ts
│ │ │ │ ├── git.ts
│ │ │ │ ├── grep.ts
│ │ │ │ ├── head.ts
│ │ │ │ ├── kill.ts
│ │ │ │ ├── killall.ts
│ │ │ │ ├── less.ts
│ │ │ │ ├── ls.ts
│ │ │ │ ├── mkdir.ts
│ │ │ │ ├── more.ts
│ │ │ │ ├── mv.ts
│ │ │ │ ├── nano.ts
│ │ │ │ ├── node.ts
│ │ │ │ ├── npm.ts
│ │ │ │ ├── nvm.ts
│ │ │ │ ├── pnpm.ts
│ │ │ │ ├── ps.ts
│ │ │ │ ├── pwd.ts
│ │ │ │ ├── python.ts
│ │ │ │ ├── python3.ts
│ │ │ │ ├── rm.ts
│ │ │ │ ├── rmdir.ts
│ │ │ │ ├── scp.ts
│ │ │ │ ├── ssh.ts
│ │ │ │ ├── tail.ts
│ │ │ │ ├── top.ts
│ │ │ │ ├── touch.ts
│ │ │ │ ├── uname.ts
│ │ │ │ ├── vim.ts
│ │ │ │ ├── wget.ts
│ │ │ │ └── yarn.ts
│ │ │ ├── constants.ts
│ │ │ ├── env/
│ │ │ │ └── pathExecutableCache.ts
│ │ │ ├── fig/
│ │ │ │ ├── README.md
│ │ │ │ ├── api-bindings/
│ │ │ │ │ └── types.ts
│ │ │ │ ├── autocomplete/
│ │ │ │ │ ├── fig/
│ │ │ │ │ │ └── hooks.ts
│ │ │ │ │ ├── generators/
│ │ │ │ │ │ ├── cache.ts
│ │ │ │ │ │ ├── customSuggestionsGenerator.ts
│ │ │ │ │ │ ├── helpers.ts
│ │ │ │ │ │ └── scriptSuggestionsGenerator.ts
│ │ │ │ │ └── state/
│ │ │ │ │ ├── generators.ts
│ │ │ │ │ └── types.ts
│ │ │ │ ├── autocomplete-parser/
│ │ │ │ │ ├── caches.ts
│ │ │ │ │ ├── errors.ts
│ │ │ │ │ └── parseArguments.ts
│ │ │ │ ├── execute.ts
│ │ │ │ ├── fig-autocomplete-shared/
│ │ │ │ │ ├── convert.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── mixins.ts
│ │ │ │ │ ├── revert.ts
│ │ │ │ │ ├── specMetadata.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── figInterface.ts
│ │ │ │ ├── shared/
│ │ │ │ │ ├── errors.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── internal.ts
│ │ │ │ │ ├── test/
│ │ │ │ │ │ └── utils.test.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ └── shell-parser/
│ │ │ │ ├── command.ts
│ │ │ │ ├── errors.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── parser.ts
│ │ │ │ └── test/
│ │ │ │ ├── command.test.ts
│ │ │ │ └── parser.test.ts
│ │ │ ├── helpers/
│ │ │ │ ├── completionItem.ts
│ │ │ │ ├── executable.ts
│ │ │ │ ├── file.ts
│ │ │ │ ├── filepaths.ts
│ │ │ │ ├── os.ts
│ │ │ │ ├── promise.ts
│ │ │ │ └── uri.ts
│ │ │ ├── shell/
│ │ │ │ ├── bash.ts
│ │ │ │ ├── common.ts
│ │ │ │ ├── fish.ts
│ │ │ │ ├── fishBuiltinsCache.ts
│ │ │ │ ├── pwsh.ts
│ │ │ │ ├── zsh.ts
│ │ │ │ └── zshBuiltinsCache.ts
│ │ │ ├── terminalSuggestMain.ts
│ │ │ ├── test/
│ │ │ │ ├── completions/
│ │ │ │ │ ├── cd.test.ts
│ │ │ │ │ ├── code-insiders.test.ts
│ │ │ │ │ ├── code.test.ts
│ │ │ │ │ └── upstream/
│ │ │ │ │ ├── echo.test.ts
│ │ │ │ │ ├── git.test.ts
│ │ │ │ │ ├── ls.test.ts
│ │ │ │ │ ├── mkdir.test.ts
│ │ │ │ │ ├── rm.test.ts
│ │ │ │ │ ├── rmdir.test.ts
│ │ │ │ │ └── touch.test.ts
│ │ │ │ ├── env/
│ │ │ │ │ └── pathExecutableCache.test.ts
│ │ │ │ ├── fig.test.ts
│ │ │ │ ├── helpers.ts
│ │ │ │ ├── terminalSuggestMain.test.ts
│ │ │ │ └── tokens.test.ts
│ │ │ ├── tokens.ts
│ │ │ └── types.ts
│ │ ├── testWorkspace/
│ │ │ └── parent/
│ │ │ └── home/
│ │ │ └── child/
│ │ │ └── .keep
│ │ └── tsconfig.json
│ ├── theme-abyss/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── themes/
│ │ └── abyss-color-theme.json
│ ├── theme-defaults/
│ │ ├── fileicons/
│ │ │ └── vs_minimal-icon-theme.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── themes/
│ │ ├── dark_modern.json
│ │ ├── dark_plus.json
│ │ ├── dark_vs.json
│ │ ├── hc_black.json
│ │ ├── hc_light.json
│ │ ├── light_modern.json
│ │ ├── light_plus.json
│ │ └── light_vs.json
│ ├── theme-kimbie-dark/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── themes/
│ │ └── kimbie-dark-color-theme.json
│ ├── theme-monokai/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── themes/
│ │ └── monokai-color-theme.json
│ ├── theme-monokai-dimmed/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── themes/
│ │ └── dimmed-monokai-color-theme.json
│ ├── theme-quietlight/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── themes/
│ │ └── quietlight-color-theme.json
│ ├── theme-red/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── themes/
│ │ └── Red-color-theme.json
│ ├── theme-seti/
│ │ ├── .vscodeignore
│ │ ├── CONTRIBUTING.md
│ │ ├── README.md
│ │ ├── ThirdPartyNotices.txt
│ │ ├── build/
│ │ │ └── update-icon-theme.js
│ │ ├── cgmanifest.json
│ │ ├── icons/
│ │ │ ├── preview.html
│ │ │ └── vs-seti-icon-theme.json
│ │ ├── package.json
│ │ └── package.nls.json
│ ├── theme-solarized-dark/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── themes/
│ │ └── solarized-dark-color-theme.json
│ ├── theme-solarized-light/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── themes/
│ │ └── solarized-light-color-theme.json
│ ├── theme-tomorrow-night-blue/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── themes/
│ │ └── tomorrow-night-blue-color-theme.json
│ ├── tsconfig.base.json
│ ├── tunnel-forwarding/
│ │ ├── .npmrc
│ │ ├── .vscode/
│ │ │ └── launch.json
│ │ ├── .vscodeignore
│ │ ├── extension.webpack.config.js
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── src/
│ │ │ ├── deferredPromise.ts
│ │ │ ├── extension.ts
│ │ │ └── split.ts
│ │ └── tsconfig.json
│ ├── types/
│ │ ├── lib.textEncoder.d.ts
│ │ └── lib.url.d.ts
│ ├── typescript-basics/
│ │ ├── .vscodeignore
│ │ ├── build/
│ │ │ └── update-grammars.mjs
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── snippets/
│ │ │ └── typescript.code-snippets
│ │ └── syntaxes/
│ │ ├── Readme.md
│ │ ├── TypeScript.tmLanguage.json
│ │ ├── TypeScriptReact.tmLanguage.json
│ │ ├── jsdoc.js.injection.tmLanguage.json
│ │ └── jsdoc.ts.injection.tmLanguage.json
│ ├── typescript-language-features/
│ │ ├── .npmrc
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── cgmanifest.json
│ │ ├── extension-browser.webpack.config.js
│ │ ├── extension.webpack.config.js
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── schemas/
│ │ │ ├── jsconfig.schema.json
│ │ │ ├── package.schema.json
│ │ │ └── tsconfig.schema.json
│ │ ├── src/
│ │ │ ├── api.ts
│ │ │ ├── commands/
│ │ │ │ ├── commandManager.ts
│ │ │ │ ├── configurePlugin.ts
│ │ │ │ ├── goToProjectConfiguration.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── learnMoreAboutRefactorings.ts
│ │ │ │ ├── openJsDocLink.ts
│ │ │ │ ├── openTsServerLog.ts
│ │ │ │ ├── reloadProject.ts
│ │ │ │ ├── restartTsServer.ts
│ │ │ │ ├── selectTypeScriptVersion.ts
│ │ │ │ └── tsserverRequests.ts
│ │ │ ├── configuration/
│ │ │ │ ├── configuration.browser.ts
│ │ │ │ ├── configuration.electron.ts
│ │ │ │ ├── configuration.ts
│ │ │ │ ├── documentSelector.ts
│ │ │ │ ├── fileSchemes.ts
│ │ │ │ ├── languageDescription.ts
│ │ │ │ ├── languageIds.ts
│ │ │ │ └── schemes.ts
│ │ │ ├── experimentTelemetryReporter.ts
│ │ │ ├── experimentationService.ts
│ │ │ ├── extension.browser.ts
│ │ │ ├── extension.ts
│ │ │ ├── filesystems/
│ │ │ │ ├── ata.ts
│ │ │ │ ├── autoInstallerFs.ts
│ │ │ │ └── memFs.ts
│ │ │ ├── languageFeatures/
│ │ │ │ ├── callHierarchy.ts
│ │ │ │ ├── codeLens/
│ │ │ │ │ ├── baseCodeLensProvider.ts
│ │ │ │ │ ├── implementationsCodeLens.ts
│ │ │ │ │ └── referencesCodeLens.ts
│ │ │ │ ├── completions.ts
│ │ │ │ ├── copyPaste.ts
│ │ │ │ ├── definitionProviderBase.ts
│ │ │ │ ├── definitions.ts
│ │ │ │ ├── diagnostics.ts
│ │ │ │ ├── directiveCommentCompletions.ts
│ │ │ │ ├── documentHighlight.ts
│ │ │ │ ├── documentSymbol.ts
│ │ │ │ ├── fileConfigurationManager.ts
│ │ │ │ ├── fileReferences.ts
│ │ │ │ ├── fixAll.ts
│ │ │ │ ├── folding.ts
│ │ │ │ ├── formatting.ts
│ │ │ │ ├── hover.ts
│ │ │ │ ├── implementations.ts
│ │ │ │ ├── inlayHints.ts
│ │ │ │ ├── jsDocCompletions.ts
│ │ │ │ ├── linkedEditing.ts
│ │ │ │ ├── organizeImports.ts
│ │ │ │ ├── quickFix.ts
│ │ │ │ ├── refactor.ts
│ │ │ │ ├── references.ts
│ │ │ │ ├── rename.ts
│ │ │ │ ├── semanticTokens.ts
│ │ │ │ ├── signatureHelp.ts
│ │ │ │ ├── smartSelect.ts
│ │ │ │ ├── sourceDefinition.ts
│ │ │ │ ├── tagClosing.ts
│ │ │ │ ├── tsconfig.ts
│ │ │ │ ├── typeDefinitions.ts
│ │ │ │ ├── updatePathsOnRename.ts
│ │ │ │ ├── util/
│ │ │ │ │ ├── codeAction.ts
│ │ │ │ │ ├── copilot.ts
│ │ │ │ │ ├── dependentRegistration.ts
│ │ │ │ │ ├── snippetForFunctionCall.ts
│ │ │ │ │ └── textRendering.ts
│ │ │ │ └── workspaceSymbols.ts
│ │ │ ├── languageProvider.ts
│ │ │ ├── lazyClientHost.ts
│ │ │ ├── logging/
│ │ │ │ ├── logLevelMonitor.ts
│ │ │ │ ├── logger.ts
│ │ │ │ ├── telemetry.ts
│ │ │ │ └── tracer.ts
│ │ │ ├── remoteRepositories.browser.ts
│ │ │ ├── task/
│ │ │ │ ├── taskProvider.ts
│ │ │ │ └── tsconfigProvider.ts
│ │ │ ├── test/
│ │ │ │ ├── index.ts
│ │ │ │ ├── smoke/
│ │ │ │ │ ├── completions.test.ts
│ │ │ │ │ ├── fixAll.test.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── jsDocCompletions.test.ts
│ │ │ │ │ ├── quickFix.test.ts
│ │ │ │ │ └── referencesCodeLens.test.ts
│ │ │ │ ├── suggestTestHelpers.ts
│ │ │ │ ├── testUtils.ts
│ │ │ │ └── unit/
│ │ │ │ ├── cachedResponse.test.ts
│ │ │ │ ├── functionCallSnippet.test.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── jsdocSnippet.test.ts
│ │ │ │ ├── onEnter.test.ts
│ │ │ │ ├── requestQueue.test.ts
│ │ │ │ ├── server.test.ts
│ │ │ │ └── textRendering.test.ts
│ │ │ ├── test-all.ts
│ │ │ ├── tsServer/
│ │ │ │ ├── api.ts
│ │ │ │ ├── bufferSyncSupport.ts
│ │ │ │ ├── cachedResponse.ts
│ │ │ │ ├── callbackMap.ts
│ │ │ │ ├── cancellation.electron.ts
│ │ │ │ ├── cancellation.ts
│ │ │ │ ├── fileWatchingManager.ts
│ │ │ │ ├── logDirectoryProvider.electron.ts
│ │ │ │ ├── logDirectoryProvider.ts
│ │ │ │ ├── nodeManager.ts
│ │ │ │ ├── pluginPathsProvider.ts
│ │ │ │ ├── plugins.ts
│ │ │ │ ├── protocol/
│ │ │ │ │ ├── errorCodes.ts
│ │ │ │ │ ├── fixNames.ts
│ │ │ │ │ ├── modifiers.ts
│ │ │ │ │ ├── protocol.const.ts
│ │ │ │ │ └── protocol.d.ts
│ │ │ │ ├── requestQueue.ts
│ │ │ │ ├── server.ts
│ │ │ │ ├── serverError.ts
│ │ │ │ ├── serverProcess.browser.ts
│ │ │ │ ├── serverProcess.electron.ts
│ │ │ │ ├── spawner.ts
│ │ │ │ ├── versionManager.ts
│ │ │ │ ├── versionProvider.electron.ts
│ │ │ │ └── versionProvider.ts
│ │ │ ├── tsconfig.ts
│ │ │ ├── typeConverters.ts
│ │ │ ├── typeScriptServiceClientHost.ts
│ │ │ ├── typescriptService.ts
│ │ │ ├── typescriptServiceClient.ts
│ │ │ ├── ui/
│ │ │ │ ├── activeJsTsEditorTracker.ts
│ │ │ │ ├── intellisenseStatus.ts
│ │ │ │ ├── largeProjectStatus.ts
│ │ │ │ ├── managedFileContext.ts
│ │ │ │ ├── typingsStatus.ts
│ │ │ │ └── versionStatus.ts
│ │ │ └── utils/
│ │ │ ├── arrays.ts
│ │ │ ├── async.ts
│ │ │ ├── cancellation.ts
│ │ │ ├── dispose.ts
│ │ │ ├── fs.electron.ts
│ │ │ ├── fs.ts
│ │ │ ├── hash.ts
│ │ │ ├── lazy.ts
│ │ │ ├── memoize.ts
│ │ │ ├── objects.ts
│ │ │ ├── packageInfo.ts
│ │ │ ├── platform.ts
│ │ │ ├── regexp.ts
│ │ │ ├── relativePathResolver.ts
│ │ │ ├── resourceMap.ts
│ │ │ └── temp.electron.ts
│ │ ├── test-workspace/
│ │ │ ├── bar.ts
│ │ │ ├── foo.ts
│ │ │ ├── foojs.js
│ │ │ ├── index.ts
│ │ │ └── tsconfig.json
│ │ ├── tsconfig.json
│ │ └── web/
│ │ ├── README.md
│ │ ├── src/
│ │ │ ├── fileWatcherManager.ts
│ │ │ ├── logging.ts
│ │ │ ├── pathMapper.ts
│ │ │ ├── serverHost.ts
│ │ │ ├── typingsInstaller/
│ │ │ │ ├── jsTyping.ts
│ │ │ │ └── typingsInstaller.ts
│ │ │ ├── util/
│ │ │ │ ├── args.ts
│ │ │ │ └── hrtime.ts
│ │ │ ├── wasmCancellationToken.ts
│ │ │ ├── webServer.ts
│ │ │ └── workerSession.ts
│ │ └── tsconfig.json
│ ├── vb/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── snippets/
│ │ │ └── vb.code-snippets
│ │ └── syntaxes/
│ │ └── asp-vb-net.tmLanguage.json
│ ├── vscode-api-tests/
│ │ ├── .gitignore
│ │ ├── .npmrc
│ │ ├── .vscode/
│ │ │ ├── launch.json
│ │ │ └── tasks.json
│ │ ├── .vscodeignore
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── extension.ts
│ │ │ ├── memfs.ts
│ │ │ ├── singlefolder-tests/
│ │ │ │ ├── chat.test.ts
│ │ │ │ ├── commands.test.ts
│ │ │ │ ├── configuration.test.ts
│ │ │ │ ├── debug.test.ts
│ │ │ │ ├── documentPaste.test.ts
│ │ │ │ ├── editor.test.ts
│ │ │ │ ├── env.test.ts
│ │ │ │ ├── extensions.test.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── interactiveWindow.test.ts
│ │ │ │ ├── ipynb.test.ts
│ │ │ │ ├── languagedetection.test.ts
│ │ │ │ ├── languages.test.ts
│ │ │ │ ├── lm.test.ts
│ │ │ │ ├── notebook.api.test.ts
│ │ │ │ ├── notebook.document.test.ts
│ │ │ │ ├── notebook.editor.test.ts
│ │ │ │ ├── notebook.kernel.test.ts
│ │ │ │ ├── proxy.test.ts
│ │ │ │ ├── quickInput.test.ts
│ │ │ │ ├── readonlyFileSystem.test.ts
│ │ │ │ ├── rpc.test.ts
│ │ │ │ ├── state.test.ts
│ │ │ │ ├── terminal.shellIntegration.test.ts
│ │ │ │ ├── terminal.test.ts
│ │ │ │ ├── types.test.ts
│ │ │ │ ├── window.test.ts
│ │ │ │ ├── workspace.event.test.ts
│ │ │ │ ├── workspace.fs.test.ts
│ │ │ │ ├── workspace.tasks.test.ts
│ │ │ │ ├── workspace.test.ts
│ │ │ │ └── workspace.watcher.test.ts
│ │ │ ├── utils.ts
│ │ │ └── workspace-tests/
│ │ │ ├── index.ts
│ │ │ └── workspace.test.ts
│ │ ├── testWorkspace/
│ │ │ ├── .vscode/
│ │ │ │ ├── launch.json
│ │ │ │ └── settings.json
│ │ │ ├── 10linefile.ts
│ │ │ ├── 30linefile.ts
│ │ │ ├── bower.json
│ │ │ ├── debug.js
│ │ │ ├── far.js
│ │ │ ├── files-exclude/
│ │ │ │ └── file.txt
│ │ │ ├── lorem.txt
│ │ │ ├── myFile.ts
│ │ │ ├── search-exclude/
│ │ │ │ └── file.txt
│ │ │ ├── simple.txt
│ │ │ └── test.ipynb
│ │ ├── testWorkspace2/
│ │ │ ├── .vscode/
│ │ │ │ └── settings.json
│ │ │ └── simple.txt
│ │ ├── testworkspace.code-workspace
│ │ └── tsconfig.json
│ ├── vscode-colorize-perf-tests/
│ │ ├── .gitignore
│ │ ├── .npmrc
│ │ ├── .vscode/
│ │ │ ├── launch.json
│ │ │ └── tasks.json
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── colorizer.test.ts
│ │ │ ├── colorizerTestMain.ts
│ │ │ └── index.ts
│ │ ├── test/
│ │ │ └── colorize-fixtures/
│ │ │ ├── test-checker.ts
│ │ │ ├── test-treeView.ts
│ │ │ └── test.ts
│ │ └── tsconfig.json
│ ├── vscode-colorize-tests/
│ │ ├── .gitignore
│ │ ├── .npmrc
│ │ ├── .vscode/
│ │ │ ├── launch.json
│ │ │ └── tasks.json
│ │ ├── package.json
│ │ ├── producticons/
│ │ │ ├── index.html
│ │ │ ├── mit_license.txt
│ │ │ └── test-product-icon-theme.json
│ │ ├── src/
│ │ │ ├── colorizer.test.ts
│ │ │ ├── colorizerTestMain.ts
│ │ │ └── index.ts
│ │ ├── test/
│ │ │ ├── colorize-fixtures/
│ │ │ │ ├── 12750.html
│ │ │ │ ├── 13448.html
│ │ │ │ ├── 14119.less
│ │ │ │ ├── 25920.html
│ │ │ │ ├── COMMIT_EDITMSG
│ │ │ │ ├── Dockerfile
│ │ │ │ ├── basic.java
│ │ │ │ ├── git-rebase-todo
│ │ │ │ ├── issue-1550.yaml
│ │ │ │ ├── issue-224862.yaml
│ │ │ │ ├── issue-28354.php
│ │ │ │ ├── issue-4008.yaml
│ │ │ │ ├── issue-6303.yaml
│ │ │ │ ├── issue-76997.php
│ │ │ │ ├── makefile
│ │ │ │ ├── md-math.md
│ │ │ │ ├── test-13777.go
│ │ │ │ ├── test-166781.rs
│ │ │ │ ├── test-173216.sh
│ │ │ │ ├── test-173224.sh
│ │ │ │ ├── test-173336.sh
│ │ │ │ ├── test-23630.cpp
│ │ │ │ ├── test-23850.cpp
│ │ │ │ ├── test-241001.ts
│ │ │ │ ├── test-33886.md
│ │ │ │ ├── test-4287.pug
│ │ │ │ ├── test-6611.rs
│ │ │ │ ├── test-7115.xml
│ │ │ │ ├── test-78769.cpp
│ │ │ │ ├── test-80644.cpp
│ │ │ │ ├── test-brackets.tsx
│ │ │ │ ├── test-cssvariables.less
│ │ │ │ ├── test-cssvariables.scss
│ │ │ │ ├── test-embedding.html
│ │ │ │ ├── test-freeze-56377.py
│ │ │ │ ├── test-freeze-56476.ps1
│ │ │ │ ├── test-function-inv.ts
│ │ │ │ ├── test-issue11.ts
│ │ │ │ ├── test-issue241715.ts
│ │ │ │ ├── test-issue5431.ts
│ │ │ │ ├── test-issue5465.ts
│ │ │ │ ├── test-issue5566.ts
│ │ │ │ ├── test-jsdoc-multiline-type.ts
│ │ │ │ ├── test-keywords.ts
│ │ │ │ ├── test-members.ts
│ │ │ │ ├── test-object-literals.ts
│ │ │ │ ├── test-regex.coffee
│ │ │ │ ├── test-strings.ts
│ │ │ │ ├── test-this.ts
│ │ │ │ ├── test-variables.css
│ │ │ │ ├── test.bat
│ │ │ │ ├── test.bib
│ │ │ │ ├── test.c
│ │ │ │ ├── test.cc
│ │ │ │ ├── test.clj
│ │ │ │ ├── test.code-snippets
│ │ │ │ ├── test.coffee
│ │ │ │ ├── test.cpp
│ │ │ │ ├── test.cs
│ │ │ │ ├── test.cshtml
│ │ │ │ ├── test.css
│ │ │ │ ├── test.cu
│ │ │ │ ├── test.dart
│ │ │ │ ├── test.diff
│ │ │ │ ├── test.fs
│ │ │ │ ├── test.go
│ │ │ │ ├── test.groovy
│ │ │ │ ├── test.handlebars
│ │ │ │ ├── test.hbs
│ │ │ │ ├── test.hlsl
│ │ │ │ ├── test.html
│ │ │ │ ├── test.ini
│ │ │ │ ├── test.jl
│ │ │ │ ├── test.js
│ │ │ │ ├── test.json
│ │ │ │ ├── test.jsx
│ │ │ │ ├── test.less
│ │ │ │ ├── test.log
│ │ │ │ ├── test.lua
│ │ │ │ ├── test.m
│ │ │ │ ├── test.md
│ │ │ │ ├── test.mm
│ │ │ │ ├── test.p6
│ │ │ │ ├── test.php
│ │ │ │ ├── test.pl
│ │ │ │ ├── test.ps1
│ │ │ │ ├── test.pug
│ │ │ │ ├── test.py
│ │ │ │ ├── test.r
│ │ │ │ ├── test.rb
│ │ │ │ ├── test.regexp.ts
│ │ │ │ ├── test.rs
│ │ │ │ ├── test.rst
│ │ │ │ ├── test.scss
│ │ │ │ ├── test.sh
│ │ │ │ ├── test.shader
│ │ │ │ ├── test.sql
│ │ │ │ ├── test.sty
│ │ │ │ ├── test.swift
│ │ │ │ ├── test.tex
│ │ │ │ ├── test.ts
│ │ │ │ ├── test.vb
│ │ │ │ ├── test.xml
│ │ │ │ ├── test.yaml
│ │ │ │ ├── test2.pl
│ │ │ │ ├── test6916.js
│ │ │ │ └── tsconfig_off.json
│ │ │ ├── colorize-results/
│ │ │ │ ├── 12750_html.json
│ │ │ │ ├── 13448_html.json
│ │ │ │ ├── 14119_less.json
│ │ │ │ ├── 25920_html.json
│ │ │ │ ├── COMMIT_EDITMSG.json
│ │ │ │ ├── Dockerfile.json
│ │ │ │ ├── basic_java.json
│ │ │ │ ├── git-rebase-todo.json
│ │ │ │ ├── issue-1550_yaml.json
│ │ │ │ ├── issue-224862_yaml.json
│ │ │ │ ├── issue-28354_php.json
│ │ │ │ ├── issue-4008_yaml.json
│ │ │ │ ├── issue-6303_yaml.json
│ │ │ │ ├── issue-76997_php.json
│ │ │ │ ├── makefile.json
│ │ │ │ ├── md-math_md.json
│ │ │ │ ├── test-13777_go.json
│ │ │ │ ├── test-166781_rs.json
│ │ │ │ ├── test-173216_sh.json
│ │ │ │ ├── test-173224_sh.json
│ │ │ │ ├── test-173336_sh.json
│ │ │ │ ├── test-23630_cpp.json
│ │ │ │ ├── test-23850_cpp.json
│ │ │ │ ├── test-241001_ts.json
│ │ │ │ ├── test-33886_md.json
│ │ │ │ ├── test-4287_pug.json
│ │ │ │ ├── test-6611_rs.json
│ │ │ │ ├── test-7115_xml.json
│ │ │ │ ├── test-78769_cpp.json
│ │ │ │ ├── test-80644_cpp.json
│ │ │ │ ├── test-brackets_tsx.json
│ │ │ │ ├── test-cssvariables_less.json
│ │ │ │ ├── test-cssvariables_scss.json
│ │ │ │ ├── test-embedding_html.json
│ │ │ │ ├── test-freeze-56377_py.json
│ │ │ │ ├── test-freeze-56476_ps1.json
│ │ │ │ ├── test-function-inv_ts.json
│ │ │ │ ├── test-issue11_ts.json
│ │ │ │ ├── test-issue241715_ts.json
│ │ │ │ ├── test-issue5431_ts.json
│ │ │ │ ├── test-issue5465_ts.json
│ │ │ │ ├── test-issue5566_ts.json
│ │ │ │ ├── test-jsdoc-multiline-type_ts.json
│ │ │ │ ├── test-keywords_ts.json
│ │ │ │ ├── test-members_ts.json
│ │ │ │ ├── test-object-literals_ts.json
│ │ │ │ ├── test-regex_coffee.json
│ │ │ │ ├── test-strings_ts.json
│ │ │ │ ├── test-this_ts.json
│ │ │ │ ├── test-variables_css.json
│ │ │ │ ├── test2_pl.json
│ │ │ │ ├── test6916_js.json
│ │ │ │ ├── test_bat.json
│ │ │ │ ├── test_bib.json
│ │ │ │ ├── test_c.json
│ │ │ │ ├── test_cc.json
│ │ │ │ ├── test_clj.json
│ │ │ │ ├── test_code-snippets.json
│ │ │ │ ├── test_coffee.json
│ │ │ │ ├── test_cpp.json
│ │ │ │ ├── test_cs.json
│ │ │ │ ├── test_cshtml.json
│ │ │ │ ├── test_css.json
│ │ │ │ ├── test_cu.json
│ │ │ │ ├── test_dart.json
│ │ │ │ ├── test_diff.json
│ │ │ │ ├── test_fs.json
│ │ │ │ ├── test_go.json
│ │ │ │ ├── test_groovy.json
│ │ │ │ ├── test_handlebars.json
│ │ │ │ ├── test_hbs.json
│ │ │ │ ├── test_hlsl.json
│ │ │ │ ├── test_html.json
│ │ │ │ ├── test_ini.json
│ │ │ │ ├── test_jl.json
│ │ │ │ ├── test_js.json
│ │ │ │ ├── test_json.json
│ │ │ │ ├── test_jsx.json
│ │ │ │ ├── test_less.json
│ │ │ │ ├── test_log.json
│ │ │ │ ├── test_lua.json
│ │ │ │ ├── test_m.json
│ │ │ │ ├── test_md.json
│ │ │ │ ├── test_mm.json
│ │ │ │ ├── test_p6.json
│ │ │ │ ├── test_php.json
│ │ │ │ ├── test_pl.json
│ │ │ │ ├── test_ps1.json
│ │ │ │ ├── test_pug.json
│ │ │ │ ├── test_py.json
│ │ │ │ ├── test_r.json
│ │ │ │ ├── test_rb.json
│ │ │ │ ├── test_regexp.ts.json
│ │ │ │ ├── test_rs.json
│ │ │ │ ├── test_rst.json
│ │ │ │ ├── test_scss.json
│ │ │ │ ├── test_sh.json
│ │ │ │ ├── test_shader.json
│ │ │ │ ├── test_sql.json
│ │ │ │ ├── test_sty.json
│ │ │ │ ├── test_swift.json
│ │ │ │ ├── test_tex.json
│ │ │ │ ├── test_ts.json
│ │ │ │ ├── test_vb.json
│ │ │ │ ├── test_xml.json
│ │ │ │ ├── test_yaml.json
│ │ │ │ └── tsconfig_off_json.json
│ │ │ ├── colorize-tree-sitter-results/
│ │ │ │ ├── 12750_html.json
│ │ │ │ ├── 13448_html.json
│ │ │ │ ├── 14119_less.json
│ │ │ │ ├── 25920_html.json
│ │ │ │ ├── COMMIT_EDITMSG.json
│ │ │ │ ├── Dockerfile.json
│ │ │ │ ├── basic_java.json
│ │ │ │ ├── git-rebase-todo.json
│ │ │ │ ├── issue-1550_yaml.json
│ │ │ │ ├── issue-224862_yaml.json
│ │ │ │ ├── issue-28354_php.json
│ │ │ │ ├── issue-4008_yaml.json
│ │ │ │ ├── issue-6303_yaml.json
│ │ │ │ ├── issue-76997_php.json
│ │ │ │ ├── makefile.json
│ │ │ │ ├── md-math_md.json
│ │ │ │ ├── test-13777_go.json
│ │ │ │ ├── test-166781_rs.json
│ │ │ │ ├── test-173216_sh.json
│ │ │ │ ├── test-173224_sh.json
│ │ │ │ ├── test-173336_sh.json
│ │ │ │ ├── test-23630_cpp.json
│ │ │ │ ├── test-23850_cpp.json
│ │ │ │ ├── test-241001_ts.json
│ │ │ │ ├── test-33886_md.json
│ │ │ │ ├── test-4287_pug.json
│ │ │ │ ├── test-6611_rs.json
│ │ │ │ ├── test-7115_xml.json
│ │ │ │ ├── test-78769_cpp.json
│ │ │ │ ├── test-80644_cpp.json
│ │ │ │ ├── test-brackets_tsx.json
│ │ │ │ ├── test-cssvariables_less.json
│ │ │ │ ├── test-cssvariables_scss.json
│ │ │ │ ├── test-embedding_html.json
│ │ │ │ ├── test-freeze-56377_py.json
│ │ │ │ ├── test-freeze-56476_ps1.json
│ │ │ │ ├── test-function-inv_ts.json
│ │ │ │ ├── test-issue11_ts.json
│ │ │ │ ├── test-issue241715_ts.json
│ │ │ │ ├── test-issue5431_ts.json
│ │ │ │ ├── test-issue5465_ts.json
│ │ │ │ ├── test-issue5566_ts.json
│ │ │ │ ├── test-jsdoc-multiline-type_ts.json
│ │ │ │ ├── test-keywords_ts.json
│ │ │ │ ├── test-members_ts.json
│ │ │ │ ├── test-object-literals_ts.json
│ │ │ │ ├── test-regex_coffee.json
│ │ │ │ ├── test-strings_ts.json
│ │ │ │ ├── test-this_ts.json
│ │ │ │ ├── test-variables_css.json
│ │ │ │ ├── test2_pl.json
│ │ │ │ ├── test6916_js.json
│ │ │ │ ├── test_bat.json
│ │ │ │ ├── test_bib.json
│ │ │ │ ├── test_c.json
│ │ │ │ ├── test_cc.json
│ │ │ │ ├── test_clj.json
│ │ │ │ ├── test_code-snippets.json
│ │ │ │ ├── test_coffee.json
│ │ │ │ ├── test_cpp.json
│ │ │ │ ├── test_cs.json
│ │ │ │ ├── test_cshtml.json
│ │ │ │ ├── test_css.json
│ │ │ │ ├── test_cu.json
│ │ │ │ ├── test_dart.json
│ │ │ │ ├── test_diff.json
│ │ │ │ ├── test_fs.json
│ │ │ │ ├── test_go.json
│ │ │ │ ├── test_groovy.json
│ │ │ │ ├── test_handlebars.json
│ │ │ │ ├── test_hbs.json
│ │ │ │ ├── test_hlsl.json
│ │ │ │ ├── test_html.json
│ │ │ │ ├── test_ini.json
│ │ │ │ ├── test_jl.json
│ │ │ │ ├── test_js.json
│ │ │ │ ├── test_json.json
│ │ │ │ ├── test_jsx.json
│ │ │ │ ├── test_less.json
│ │ │ │ ├── test_log.json
│ │ │ │ ├── test_lua.json
│ │ │ │ ├── test_m.json
│ │ │ │ ├── test_md.json
│ │ │ │ ├── test_mm.json
│ │ │ │ ├── test_p6.json
│ │ │ │ ├── test_php.json
│ │ │ │ ├── test_pl.json
│ │ │ │ ├── test_ps1.json
│ │ │ │ ├── test_pug.json
│ │ │ │ ├── test_py.json
│ │ │ │ ├── test_r.json
│ │ │ │ ├── test_rb.json
│ │ │ │ ├── test_regexp.ts.json
│ │ │ │ ├── test_rs.json
│ │ │ │ ├── test_rst.json
│ │ │ │ ├── test_scss.json
│ │ │ │ ├── test_sh.json
│ │ │ │ ├── test_shader.json
│ │ │ │ ├── test_sql.json
│ │ │ │ ├── test_sty.json
│ │ │ │ ├── test_swift.json
│ │ │ │ ├── test_tex.json
│ │ │ │ ├── test_ts.json
│ │ │ │ ├── test_vb.json
│ │ │ │ ├── test_xml.json
│ │ │ │ ├── test_yaml.json
│ │ │ │ └── tsconfig_off_json.json
│ │ │ └── semantic-test/
│ │ │ ├── .vscode/
│ │ │ │ └── settings.json
│ │ │ └── semantic-test.json
│ │ └── tsconfig.json
│ ├── vscode-test-resolver/
│ │ ├── .gitignore
│ │ ├── .npmrc
│ │ ├── .vscode/
│ │ │ └── launch.json
│ │ ├── .vscodeignore
│ │ ├── extension-browser.webpack.config.js
│ │ ├── package.json
│ │ ├── scripts/
│ │ │ └── terminateProcess.sh
│ │ ├── src/
│ │ │ ├── download.ts
│ │ │ ├── extension.browser.ts
│ │ │ ├── extension.ts
│ │ │ └── util/
│ │ │ └── processes.ts
│ │ └── tsconfig.json
│ ├── xml/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── syntaxes/
│ │ │ ├── xml.tmLanguage.json
│ │ │ └── xsl.tmLanguage.json
│ │ ├── xml.language-configuration.json
│ │ └── xsl.language-configuration.json
│ └── yaml/
│ ├── .vscodeignore
│ ├── build/
│ │ └── update-grammar.js
│ ├── cgmanifest.json
│ ├── language-configuration.json
│ ├── package.json
│ ├── package.nls.json
│ └── syntaxes/
│ ├── yaml-1.0.tmLanguage.json
│ ├── yaml-1.1.tmLanguage.json
│ ├── yaml-1.2.tmLanguage.json
│ ├── yaml-1.3.tmLanguage.json
│ ├── yaml-embedded.tmLanguage.json
│ └── yaml.tmLanguage.json
├── gulpfile.js
├── package.json
├── product.json
├── remote/
│ ├── .npmrc
│ ├── package.json
│ └── web/
│ ├── .npmrc
│ └── package.json
├── resources/
│ ├── completions/
│ │ ├── bash/
│ │ │ └── code
│ │ └── zsh/
│ │ └── _code
│ ├── darwin/
│ │ ├── bat.icns
│ │ ├── bin/
│ │ │ └── code.sh
│ │ ├── bower.icns
│ │ ├── c.icns
│ │ ├── code.icns
│ │ ├── config.icns
│ │ ├── cpp.icns
│ │ ├── csharp.icns
│ │ ├── css.icns
│ │ ├── default.icns
│ │ ├── go.icns
│ │ ├── html.icns
│ │ ├── jade.icns
│ │ ├── java.icns
│ │ ├── javascript.icns
│ │ ├── json.icns
│ │ ├── less.icns
│ │ ├── markdown.icns
│ │ ├── php.icns
│ │ ├── powershell.icns
│ │ ├── python.icns
│ │ ├── react.icns
│ │ ├── ruby.icns
│ │ ├── sass.icns
│ │ ├── shell.icns
│ │ ├── sql.icns
│ │ ├── typescript.icns
│ │ ├── vue.icns
│ │ ├── xml.icns
│ │ └── yaml.icns
│ ├── linux/
│ │ ├── bin/
│ │ │ └── code.sh
│ │ ├── code-url-handler.desktop
│ │ ├── code-workspace.xml
│ │ ├── code.appdata.xml
│ │ ├── code.desktop
│ │ ├── debian/
│ │ │ ├── control.template
│ │ │ ├── postinst.template
│ │ │ ├── postrm.template
│ │ │ ├── prerm.template
│ │ │ └── templates.template
│ │ ├── rpm/
│ │ │ ├── code.spec.template
│ │ │ └── code.xpm
│ │ └── snap/
│ │ ├── electron-launch
│ │ └── snapcraft.yaml
│ ├── server/
│ │ ├── bin/
│ │ │ ├── code-server-darwin.sh
│ │ │ ├── code-server-linux.sh
│ │ │ ├── code-server.cmd
│ │ │ ├── helpers/
│ │ │ │ ├── browser-darwin.sh
│ │ │ │ ├── browser-linux.sh
│ │ │ │ ├── browser.cmd
│ │ │ │ └── check-requirements-linux.sh
│ │ │ └── remote-cli/
│ │ │ ├── code-darwin.sh
│ │ │ ├── code-linux.sh
│ │ │ └── code.cmd
│ │ ├── bin-dev/
│ │ │ ├── helpers/
│ │ │ │ ├── browser.cmd
│ │ │ │ └── browser.sh
│ │ │ └── remote-cli/
│ │ │ ├── code.cmd
│ │ │ └── code.sh
│ │ └── manifest.json
│ └── win32/
│ ├── VisualElementsManifest.xml
│ └── bin/
│ ├── code.cmd
│ └── code.sh
├── scripts/
│ ├── appimage/
│ │ ├── create-appimage-old.sh
│ │ ├── create_appimage.sh
│ │ ├── readme.md
│ │ ├── void-url-handler.desktop
│ │ └── void.desktop
│ ├── code-cli.bat
│ ├── code-cli.sh
│ ├── code-perf.js
│ ├── code-server.bat
│ ├── code-server.js
│ ├── code-server.sh
│ ├── code-web.bat
│ ├── code-web.js
│ ├── code-web.sh
│ ├── code.bat
│ ├── code.sh
│ ├── generate-definitelytyped.sh
│ ├── node-electron.bat
│ ├── node-electron.sh
│ ├── package.json
│ ├── playground-server.ts
│ ├── test-documentation.bat
│ ├── test-documentation.sh
│ ├── test-integration.bat
│ ├── test-integration.sh
│ ├── test-remote-integration.bat
│ ├── test-remote-integration.sh
│ ├── test-web-integration.bat
│ ├── test-web-integration.sh
│ ├── test.bat
│ ├── test.sh
│ ├── xterm-symlink.ps1
│ ├── xterm-update.js
│ └── xterm-update.ps1
├── src/
│ ├── bootstrap-cli.ts
│ ├── bootstrap-esm.ts
│ ├── bootstrap-fork.ts
│ ├── bootstrap-import.ts
│ ├── bootstrap-meta.ts
│ ├── bootstrap-node.ts
│ ├── bootstrap-server.ts
│ ├── bootstrap-window.ts
│ ├── cli.ts
│ ├── main.ts
│ ├── server-cli.ts
│ ├── server-main.ts
│ ├── tsconfig.base.json
│ ├── tsconfig.json
│ ├── tsconfig.monaco.json
│ ├── tsconfig.tsec.json
│ ├── tsconfig.vscode-dts.json
│ ├── tsconfig.vscode-proposed-dts.json
│ ├── tsec.exemptions.json
│ ├── typings/
│ │ ├── base-common.d.ts
│ │ ├── crypto.d.ts
│ │ ├── editContext.d.ts
│ │ ├── thenable.d.ts
│ │ ├── vscode-globals-nls.d.ts
│ │ ├── vscode-globals-product.d.ts
│ │ └── vscode-globals-ttp.d.ts
│ ├── vs/
│ │ ├── amdX.ts
│ │ ├── base/
│ │ │ ├── browser/
│ │ │ │ ├── broadcast.ts
│ │ │ │ ├── browser.ts
│ │ │ │ ├── canIUse.ts
│ │ │ │ ├── contextmenu.ts
│ │ │ │ ├── cssValue.ts
│ │ │ │ ├── deviceAccess.ts
│ │ │ │ ├── dnd.ts
│ │ │ │ ├── dom.ts
│ │ │ │ ├── domImpl/
│ │ │ │ │ ├── domObservable.ts
│ │ │ │ │ └── n.ts
│ │ │ │ ├── domStylesheets.ts
│ │ │ │ ├── dompurify/
│ │ │ │ │ ├── cgmanifest.json
│ │ │ │ │ ├── dompurify.d.ts
│ │ │ │ │ ├── dompurify.js
│ │ │ │ │ └── dompurify.license.txt
│ │ │ │ ├── event.ts
│ │ │ │ ├── fastDomNode.ts
│ │ │ │ ├── fonts.ts
│ │ │ │ ├── formattedTextRenderer.ts
│ │ │ │ ├── globalPointerMoveMonitor.ts
│ │ │ │ ├── history.ts
│ │ │ │ ├── iframe.ts
│ │ │ │ ├── indexedDB.ts
│ │ │ │ ├── keyboardEvent.ts
│ │ │ │ ├── markdownRenderer.ts
│ │ │ │ ├── mouseEvent.ts
│ │ │ │ ├── performance.ts
│ │ │ │ ├── pixelRatio.ts
│ │ │ │ ├── touch.ts
│ │ │ │ ├── trustedTypes.ts
│ │ │ │ ├── ui/
│ │ │ │ │ ├── actionbar/
│ │ │ │ │ │ ├── actionViewItems.ts
│ │ │ │ │ │ ├── actionbar.css
│ │ │ │ │ │ └── actionbar.ts
│ │ │ │ │ ├── aria/
│ │ │ │ │ │ ├── aria.css
│ │ │ │ │ │ └── aria.ts
│ │ │ │ │ ├── breadcrumbs/
│ │ │ │ │ │ ├── breadcrumbsWidget.css
│ │ │ │ │ │ └── breadcrumbsWidget.ts
│ │ │ │ │ ├── button/
│ │ │ │ │ │ ├── button.css
│ │ │ │ │ │ └── button.ts
│ │ │ │ │ ├── centered/
│ │ │ │ │ │ └── centeredViewLayout.ts
│ │ │ │ │ ├── codicons/
│ │ │ │ │ │ ├── codicon/
│ │ │ │ │ │ │ ├── codicon-modifiers.css
│ │ │ │ │ │ │ └── codicon.css
│ │ │ │ │ │ └── codiconStyles.ts
│ │ │ │ │ ├── contextview/
│ │ │ │ │ │ ├── contextview.css
│ │ │ │ │ │ └── contextview.ts
│ │ │ │ │ ├── countBadge/
│ │ │ │ │ │ ├── countBadge.css
│ │ │ │ │ │ └── countBadge.ts
│ │ │ │ │ ├── dialog/
│ │ │ │ │ │ ├── dialog.css
│ │ │ │ │ │ └── dialog.ts
│ │ │ │ │ ├── dnd/
│ │ │ │ │ │ ├── dnd.css
│ │ │ │ │ │ └── dnd.ts
│ │ │ │ │ ├── dropdown/
│ │ │ │ │ │ ├── dropdown.css
│ │ │ │ │ │ ├── dropdown.ts
│ │ │ │ │ │ └── dropdownActionViewItem.ts
│ │ │ │ │ ├── findinput/
│ │ │ │ │ │ ├── findInput.css
│ │ │ │ │ │ ├── findInput.ts
│ │ │ │ │ │ ├── findInputToggles.ts
│ │ │ │ │ │ └── replaceInput.ts
│ │ │ │ │ ├── grid/
│ │ │ │ │ │ ├── grid.ts
│ │ │ │ │ │ ├── gridview.css
│ │ │ │ │ │ └── gridview.ts
│ │ │ │ │ ├── highlightedlabel/
│ │ │ │ │ │ └── highlightedLabel.ts
│ │ │ │ │ ├── hover/
│ │ │ │ │ │ ├── hover.ts
│ │ │ │ │ │ ├── hoverDelegate.ts
│ │ │ │ │ │ ├── hoverDelegate2.ts
│ │ │ │ │ │ ├── hoverDelegateFactory.ts
│ │ │ │ │ │ ├── hoverWidget.css
│ │ │ │ │ │ └── hoverWidget.ts
│ │ │ │ │ ├── iconLabel/
│ │ │ │ │ │ ├── iconLabel.ts
│ │ │ │ │ │ ├── iconLabels.ts
│ │ │ │ │ │ ├── iconlabel.css
│ │ │ │ │ │ └── simpleIconLabel.ts
│ │ │ │ │ ├── icons/
│ │ │ │ │ │ ├── iconSelectBox.css
│ │ │ │ │ │ └── iconSelectBox.ts
│ │ │ │ │ ├── inputbox/
│ │ │ │ │ │ ├── inputBox.css
│ │ │ │ │ │ └── inputBox.ts
│ │ │ │ │ ├── keybindingLabel/
│ │ │ │ │ │ ├── keybindingLabel.css
│ │ │ │ │ │ └── keybindingLabel.ts
│ │ │ │ │ ├── list/
│ │ │ │ │ │ ├── list.css
│ │ │ │ │ │ ├── list.ts
│ │ │ │ │ │ ├── listPaging.ts
│ │ │ │ │ │ ├── listView.ts
│ │ │ │ │ │ ├── listWidget.ts
│ │ │ │ │ │ ├── rangeMap.ts
│ │ │ │ │ │ ├── rowCache.ts
│ │ │ │ │ │ └── splice.ts
│ │ │ │ │ ├── menu/
│ │ │ │ │ │ ├── menu.ts
│ │ │ │ │ │ ├── menubar.css
│ │ │ │ │ │ └── menubar.ts
│ │ │ │ │ ├── mouseCursor/
│ │ │ │ │ │ ├── mouseCursor.css
│ │ │ │ │ │ └── mouseCursor.ts
│ │ │ │ │ ├── progressbar/
│ │ │ │ │ │ ├── progressAccessibilitySignal.ts
│ │ │ │ │ │ ├── progressbar.css
│ │ │ │ │ │ └── progressbar.ts
│ │ │ │ │ ├── radio/
│ │ │ │ │ │ ├── radio.css
│ │ │ │ │ │ └── radio.ts
│ │ │ │ │ ├── resizable/
│ │ │ │ │ │ └── resizable.ts
│ │ │ │ │ ├── sash/
│ │ │ │ │ │ ├── sash.css
│ │ │ │ │ │ └── sash.ts
│ │ │ │ │ ├── scrollbar/
│ │ │ │ │ │ ├── abstractScrollbar.ts
│ │ │ │ │ │ ├── horizontalScrollbar.ts
│ │ │ │ │ │ ├── media/
│ │ │ │ │ │ │ └── scrollbars.css
│ │ │ │ │ │ ├── scrollableElement.ts
│ │ │ │ │ │ ├── scrollableElementOptions.ts
│ │ │ │ │ │ ├── scrollbarArrow.ts
│ │ │ │ │ │ ├── scrollbarState.ts
│ │ │ │ │ │ ├── scrollbarVisibilityController.ts
│ │ │ │ │ │ └── verticalScrollbar.ts
│ │ │ │ │ ├── selectBox/
│ │ │ │ │ │ ├── selectBox.css
│ │ │ │ │ │ ├── selectBox.ts
│ │ │ │ │ │ ├── selectBoxCustom.css
│ │ │ │ │ │ ├── selectBoxCustom.ts
│ │ │ │ │ │ └── selectBoxNative.ts
│ │ │ │ │ ├── severityIcon/
│ │ │ │ │ │ ├── media/
│ │ │ │ │ │ │ └── severityIcon.css
│ │ │ │ │ │ └── severityIcon.ts
│ │ │ │ │ ├── splitview/
│ │ │ │ │ │ ├── paneview.css
│ │ │ │ │ │ ├── paneview.ts
│ │ │ │ │ │ ├── splitview.css
│ │ │ │ │ │ └── splitview.ts
│ │ │ │ │ ├── table/
│ │ │ │ │ │ ├── table.css
│ │ │ │ │ │ ├── table.ts
│ │ │ │ │ │ └── tableWidget.ts
│ │ │ │ │ ├── toggle/
│ │ │ │ │ │ ├── toggle.css
│ │ │ │ │ │ └── toggle.ts
│ │ │ │ │ ├── toolbar/
│ │ │ │ │ │ ├── toolbar.css
│ │ │ │ │ │ └── toolbar.ts
│ │ │ │ │ ├── tree/
│ │ │ │ │ │ ├── abstractTree.ts
│ │ │ │ │ │ ├── asyncDataTree.ts
│ │ │ │ │ │ ├── compressedObjectTreeModel.ts
│ │ │ │ │ │ ├── dataTree.ts
│ │ │ │ │ │ ├── indexTree.ts
│ │ │ │ │ │ ├── indexTreeModel.ts
│ │ │ │ │ │ ├── media/
│ │ │ │ │ │ │ ├── paneviewlet.css
│ │ │ │ │ │ │ └── tree.css
│ │ │ │ │ │ ├── objectTree.ts
│ │ │ │ │ │ ├── objectTreeModel.ts
│ │ │ │ │ │ ├── tree.ts
│ │ │ │ │ │ └── treeDefaults.ts
│ │ │ │ │ └── widget.ts
│ │ │ │ ├── webWorkerFactory.ts
│ │ │ │ └── window.ts
│ │ │ ├── common/
│ │ │ │ ├── actions.ts
│ │ │ │ ├── arrays.ts
│ │ │ │ ├── arraysFind.ts
│ │ │ │ ├── assert.ts
│ │ │ │ ├── async.ts
│ │ │ │ ├── buffer.ts
│ │ │ │ ├── cache.ts
│ │ │ │ ├── cancellation.ts
│ │ │ │ ├── charCode.ts
│ │ │ │ ├── codecs/
│ │ │ │ │ ├── asyncDecoder.ts
│ │ │ │ │ ├── baseDecoder.ts
│ │ │ │ │ └── types/
│ │ │ │ │ └── ICodec.d.ts
│ │ │ │ ├── codicons.ts
│ │ │ │ ├── codiconsLibrary.ts
│ │ │ │ ├── codiconsUtil.ts
│ │ │ │ ├── collections.ts
│ │ │ │ ├── color.ts
│ │ │ │ ├── comparers.ts
│ │ │ │ ├── console.ts
│ │ │ │ ├── controlFlow.ts
│ │ │ │ ├── dataTransfer.ts
│ │ │ │ ├── date.ts
│ │ │ │ ├── decorators/
│ │ │ │ │ └── cancelPreviousCalls.ts
│ │ │ │ ├── decorators.ts
│ │ │ │ ├── desktopEnvironmentInfo.ts
│ │ │ │ ├── diff/
│ │ │ │ │ ├── diff.ts
│ │ │ │ │ └── diffChange.ts
│ │ │ │ ├── envfile.ts
│ │ │ │ ├── equals.ts
│ │ │ │ ├── errorMessage.ts
│ │ │ │ ├── errors.ts
│ │ │ │ ├── event.ts
│ │ │ │ ├── extpath.ts
│ │ │ │ ├── filters.ts
│ │ │ │ ├── functional.ts
│ │ │ │ ├── fuzzyScorer.ts
│ │ │ │ ├── glob.ts
│ │ │ │ ├── hash.ts
│ │ │ │ ├── hierarchicalKind.ts
│ │ │ │ ├── history.ts
│ │ │ │ ├── hotReload.ts
│ │ │ │ ├── hotReloadHelpers.ts
│ │ │ │ ├── htmlContent.ts
│ │ │ │ ├── iconLabels.ts
│ │ │ │ ├── idGenerator.ts
│ │ │ │ ├── ime.ts
│ │ │ │ ├── iterator.ts
│ │ │ │ ├── json.ts
│ │ │ │ ├── jsonEdit.ts
│ │ │ │ ├── jsonErrorMessages.ts
│ │ │ │ ├── jsonFormatter.ts
│ │ │ │ ├── jsonSchema.ts
│ │ │ │ ├── jsonc.ts
│ │ │ │ ├── keyCodes.ts
│ │ │ │ ├── keybindingLabels.ts
│ │ │ │ ├── keybindingParser.ts
│ │ │ │ ├── keybindings.ts
│ │ │ │ ├── labels.ts
│ │ │ │ ├── lazy.ts
│ │ │ │ ├── lifecycle.ts
│ │ │ │ ├── linkedList.ts
│ │ │ │ ├── linkedText.ts
│ │ │ │ ├── map.ts
│ │ │ │ ├── marked/
│ │ │ │ │ ├── cgmanifest.json
│ │ │ │ │ ├── marked.d.ts
│ │ │ │ │ ├── marked.js
│ │ │ │ │ └── marked.license.txt
│ │ │ │ ├── marshalling.ts
│ │ │ │ ├── marshallingIds.ts
│ │ │ │ ├── mime.ts
│ │ │ │ ├── naturalLanguage/
│ │ │ │ │ └── korean.ts
│ │ │ │ ├── navigator.ts
│ │ │ │ ├── network.ts
│ │ │ │ ├── normalization.ts
│ │ │ │ ├── numbers.ts
│ │ │ │ ├── objectCache.ts
│ │ │ │ ├── objects.ts
│ │ │ │ ├── observable.ts
│ │ │ │ ├── observableDisposable.ts
│ │ │ │ ├── observableInternal/
│ │ │ │ │ ├── api.ts
│ │ │ │ │ ├── autorun.ts
│ │ │ │ │ ├── base.ts
│ │ │ │ │ ├── commonFacade/
│ │ │ │ │ │ ├── cancellation.ts
│ │ │ │ │ │ └── deps.ts
│ │ │ │ │ ├── debugName.ts
│ │ │ │ │ ├── derived.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── lazyObservableValue.ts
│ │ │ │ │ ├── logging/
│ │ │ │ │ │ ├── consoleObservableLogger.ts
│ │ │ │ │ │ ├── debugger/
│ │ │ │ │ │ │ ├── debuggerApi.d.ts
│ │ │ │ │ │ │ ├── debuggerRpc.ts
│ │ │ │ │ │ │ ├── devToolsLogger.ts
│ │ │ │ │ │ │ ├── rpc.ts
│ │ │ │ │ │ │ └── utils.ts
│ │ │ │ │ │ └── logging.ts
│ │ │ │ │ ├── promise.ts
│ │ │ │ │ ├── utils.ts
│ │ │ │ │ └── utilsCancellation.ts
│ │ │ │ ├── paging.ts
│ │ │ │ ├── parsers.ts
│ │ │ │ ├── path.ts
│ │ │ │ ├── performance.ts
│ │ │ │ ├── platform.ts
│ │ │ │ ├── policy.ts
│ │ │ │ ├── ports.ts
│ │ │ │ ├── prefixTree.ts
│ │ │ │ ├── process.ts
│ │ │ │ ├── processes.ts
│ │ │ │ ├── product.ts
│ │ │ │ ├── range.ts
│ │ │ │ ├── resourceTree.ts
│ │ │ │ ├── resources.ts
│ │ │ │ ├── scrollable.ts
│ │ │ │ ├── search.ts
│ │ │ │ ├── semver/
│ │ │ │ │ ├── cgmanifest.json
│ │ │ │ │ ├── semver.d.ts
│ │ │ │ │ └── semver.js
│ │ │ │ ├── sequence.ts
│ │ │ │ ├── severity.ts
│ │ │ │ ├── skipList.ts
│ │ │ │ ├── stopwatch.ts
│ │ │ │ ├── stream.ts
│ │ │ │ ├── strings.ts
│ │ │ │ ├── symbols.ts
│ │ │ │ ├── ternarySearchTree.ts
│ │ │ │ ├── tfIdf.ts
│ │ │ │ ├── themables.ts
│ │ │ │ ├── types.ts
│ │ │ │ ├── uint.ts
│ │ │ │ ├── uri.ts
│ │ │ │ ├── uriIpc.ts
│ │ │ │ ├── uuid.ts
│ │ │ │ ├── verifier.ts
│ │ │ │ └── worker/
│ │ │ │ ├── webWorker.ts
│ │ │ │ └── webWorkerBootstrap.ts
│ │ │ ├── node/
│ │ │ │ ├── cpuUsage.sh
│ │ │ │ ├── crypto.ts
│ │ │ │ ├── extpath.ts
│ │ │ │ ├── id.ts
│ │ │ │ ├── macAddress.ts
│ │ │ │ ├── nls.ts
│ │ │ │ ├── nodeStreams.ts
│ │ │ │ ├── osDisplayProtocolInfo.ts
│ │ │ │ ├── osReleaseInfo.ts
│ │ │ │ ├── pfs.ts
│ │ │ │ ├── ports.ts
│ │ │ │ ├── powershell.ts
│ │ │ │ ├── processes.ts
│ │ │ │ ├── ps.sh
│ │ │ │ ├── ps.ts
│ │ │ │ ├── shell.ts
│ │ │ │ ├── terminalEncoding.ts
│ │ │ │ ├── terminateProcess.sh
│ │ │ │ ├── unc.ts
│ │ │ │ └── zip.ts
│ │ │ ├── parts/
│ │ │ │ ├── contextmenu/
│ │ │ │ │ ├── common/
│ │ │ │ │ │ └── contextmenu.ts
│ │ │ │ │ ├── electron-main/
│ │ │ │ │ │ └── contextmenu.ts
│ │ │ │ │ └── electron-sandbox/
│ │ │ │ │ └── contextmenu.ts
│ │ │ │ ├── ipc/
│ │ │ │ │ ├── browser/
│ │ │ │ │ │ └── ipc.mp.ts
│ │ │ │ │ ├── common/
│ │ │ │ │ │ ├── ipc.electron.ts
│ │ │ │ │ │ ├── ipc.mp.ts
│ │ │ │ │ │ ├── ipc.net.ts
│ │ │ │ │ │ └── ipc.ts
│ │ │ │ │ ├── electron-main/
│ │ │ │ │ │ ├── ipc.electron.ts
│ │ │ │ │ │ ├── ipc.mp.ts
│ │ │ │ │ │ └── ipcMain.ts
│ │ │ │ │ ├── electron-sandbox/
│ │ │ │ │ │ ├── ipc.electron.ts
│ │ │ │ │ │ └── ipc.mp.ts
│ │ │ │ │ ├── node/
│ │ │ │ │ │ ├── ipc.cp.ts
│ │ │ │ │ │ ├── ipc.mp.ts
│ │ │ │ │ │ └── ipc.net.ts
│ │ │ │ │ └── test/
│ │ │ │ │ ├── browser/
│ │ │ │ │ │ └── ipc.mp.test.ts
│ │ │ │ │ ├── common/
│ │ │ │ │ │ └── ipc.test.ts
│ │ │ │ │ ├── electron-sandbox/
│ │ │ │ │ │ └── ipc.mp.test.ts
│ │ │ │ │ └── node/
│ │ │ │ │ ├── ipc.cp.integrationTest.ts
│ │ │ │ │ ├── ipc.net.test.ts
│ │ │ │ │ ├── testApp.ts
│ │ │ │ │ └── testService.ts
│ │ │ │ ├── request/
│ │ │ │ │ ├── common/
│ │ │ │ │ │ ├── request.ts
│ │ │ │ │ │ └── requestImpl.ts
│ │ │ │ │ └── test/
│ │ │ │ │ └── electron-main/
│ │ │ │ │ └── request.test.ts
│ │ │ │ ├── sandbox/
│ │ │ │ │ ├── common/
│ │ │ │ │ │ ├── electronTypes.ts
│ │ │ │ │ │ └── sandboxTypes.ts
│ │ │ │ │ ├── electron-sandbox/
│ │ │ │ │ │ ├── electronTypes.ts
│ │ │ │ │ │ ├── globals.ts
│ │ │ │ │ │ ├── preload-aux.ts
│ │ │ │ │ │ └── preload.ts
│ │ │ │ │ ├── node/
│ │ │ │ │ │ └── electronTypes.ts
│ │ │ │ │ └── test/
│ │ │ │ │ └── electron-sandbox/
│ │ │ │ │ └── globals.test.ts
│ │ │ │ └── storage/
│ │ │ │ ├── common/
│ │ │ │ │ └── storage.ts
│ │ │ │ ├── node/
│ │ │ │ │ └── storage.ts
│ │ │ │ └── test/
│ │ │ │ └── node/
│ │ │ │ └── storage.integrationTest.ts
│ │ │ └── test/
│ │ │ ├── browser/
│ │ │ │ ├── actionbar.test.ts
│ │ │ │ ├── browser.test.ts
│ │ │ │ ├── comparers.test.ts
│ │ │ │ ├── dom.test.ts
│ │ │ │ ├── formattedTextRenderer.test.ts
│ │ │ │ ├── hash.test.ts
│ │ │ │ ├── highlightedLabel.test.ts
│ │ │ │ ├── iconLabels.test.ts
│ │ │ │ ├── indexedDB.test.ts
│ │ │ │ ├── markdownRenderer.test.ts
│ │ │ │ ├── progressBar.test.ts
│ │ │ │ └── ui/
│ │ │ │ ├── contextview/
│ │ │ │ │ └── contextview.test.ts
│ │ │ │ ├── grid/
│ │ │ │ │ ├── grid.test.ts
│ │ │ │ │ ├── gridview.test.ts
│ │ │ │ │ └── util.ts
│ │ │ │ ├── list/
│ │ │ │ │ ├── listView.test.ts
│ │ │ │ │ ├── listWidget.test.ts
│ │ │ │ │ └── rangeMap.test.ts
│ │ │ │ ├── menu/
│ │ │ │ │ └── menubar.test.ts
│ │ │ │ ├── scrollbar/
│ │ │ │ │ ├── scrollableElement.test.ts
│ │ │ │ │ └── scrollbarState.test.ts
│ │ │ │ ├── splitview/
│ │ │ │ │ └── splitview.test.ts
│ │ │ │ └── tree/
│ │ │ │ ├── asyncDataTree.test.ts
│ │ │ │ ├── compressedObjectTreeModel.test.ts
│ │ │ │ ├── dataTree.test.ts
│ │ │ │ ├── indexTreeModel.test.ts
│ │ │ │ ├── objectTree.test.ts
│ │ │ │ └── objectTreeModel.test.ts
│ │ │ ├── common/
│ │ │ │ ├── arrays.test.ts
│ │ │ │ ├── arraysFind.test.ts
│ │ │ │ ├── assert.test.ts
│ │ │ │ ├── assertHeap.ts
│ │ │ │ ├── async.test.ts
│ │ │ │ ├── buffer.test.ts
│ │ │ │ ├── cache.test.ts
│ │ │ │ ├── cancelPreviousCalls.test.ts
│ │ │ │ ├── cancellation.test.ts
│ │ │ │ ├── charCode.test.ts
│ │ │ │ ├── collections.test.ts
│ │ │ │ ├── color.test.ts
│ │ │ │ ├── console.test.ts
│ │ │ │ ├── date.test.ts
│ │ │ │ ├── decorators.test.ts
│ │ │ │ ├── diff/
│ │ │ │ │ └── diff.test.ts
│ │ │ │ ├── envfile.test.ts
│ │ │ │ ├── errors.test.ts
│ │ │ │ ├── event.test.ts
│ │ │ │ ├── extpath.test.ts
│ │ │ │ ├── filters.perf.data.d.ts
│ │ │ │ ├── filters.perf.data.js
│ │ │ │ ├── filters.perf.test.ts
│ │ │ │ ├── filters.test.ts
│ │ │ │ ├── fuzzyScorer.test.ts
│ │ │ │ ├── glob.test.ts
│ │ │ │ ├── history.test.ts
│ │ │ │ ├── iconLabels.test.ts
│ │ │ │ ├── iterator.test.ts
│ │ │ │ ├── json.test.ts
│ │ │ │ ├── jsonEdit.test.ts
│ │ │ │ ├── jsonFormatter.test.ts
│ │ │ │ ├── jsonParse.test.ts
│ │ │ │ ├── jsonSchema.test.ts
│ │ │ │ ├── keyCodes.test.ts
│ │ │ │ ├── keybindings.test.ts
│ │ │ │ ├── labels.test.ts
│ │ │ │ ├── lazy.test.ts
│ │ │ │ ├── lifecycle.test.ts
│ │ │ │ ├── linkedList.test.ts
│ │ │ │ ├── linkedText.test.ts
│ │ │ │ ├── map.test.ts
│ │ │ │ ├── markdownString.test.ts
│ │ │ │ ├── marshalling.test.ts
│ │ │ │ ├── mime.test.ts
│ │ │ │ ├── mock.ts
│ │ │ │ ├── naturalLanguage/
│ │ │ │ │ └── korean.test.ts
│ │ │ │ ├── network.test.ts
│ │ │ │ ├── normalization.test.ts
│ │ │ │ ├── numbers.test.ts
│ │ │ │ ├── objectCache.test.ts
│ │ │ │ ├── objects.test.ts
│ │ │ │ ├── observable.test.ts
│ │ │ │ ├── observableDisposable.test.ts
│ │ │ │ ├── paging.test.ts
│ │ │ │ ├── path.test.ts
│ │ │ │ ├── prefixTree.test.ts
│ │ │ │ ├── processes.test.ts
│ │ │ │ ├── resourceTree.test.ts
│ │ │ │ ├── resources.test.ts
│ │ │ │ ├── scrollable.test.ts
│ │ │ │ ├── skipList.test.ts
│ │ │ │ ├── snapshot.ts
│ │ │ │ ├── stream.test.ts
│ │ │ │ ├── strings.test.ts
│ │ │ │ ├── ternarySearchtree.test.ts
│ │ │ │ ├── testUtils.ts
│ │ │ │ ├── tfIdf.test.ts
│ │ │ │ ├── timeTravelScheduler.ts
│ │ │ │ ├── troubleshooting.ts
│ │ │ │ ├── types.test.ts
│ │ │ │ ├── uri.test.ts
│ │ │ │ ├── utils.ts
│ │ │ │ └── uuid.test.ts
│ │ │ └── node/
│ │ │ ├── __snapshots__/
│ │ │ │ ├── snapshot_cleans_up_old_snapshots.0.snap
│ │ │ │ ├── snapshot_cleans_up_old_snapshots.1.snap
│ │ │ │ ├── snapshot_creates_a_snapshot.0.snap
│ │ │ │ └── snapshot_formats_object_nicely.0.snap
│ │ │ ├── crypto.test.ts
│ │ │ ├── extpath.test.ts
│ │ │ ├── id.test.ts
│ │ │ ├── nodeStreams.test.ts
│ │ │ ├── pfs/
│ │ │ │ ├── fixtures/
│ │ │ │ │ ├── examples/
│ │ │ │ │ │ ├── company.jxs
│ │ │ │ │ │ ├── conway.jxs
│ │ │ │ │ │ ├── employee.jxs
│ │ │ │ │ │ └── small.jxs
│ │ │ │ │ ├── index.html
│ │ │ │ │ └── site.css
│ │ │ │ └── pfs.test.ts
│ │ │ ├── port.test.ts
│ │ │ ├── powershell.test.ts
│ │ │ ├── processes/
│ │ │ │ ├── fixtures/
│ │ │ │ │ ├── fork.ts
│ │ │ │ │ └── fork_large.ts
│ │ │ │ └── processes.integrationTest.ts
│ │ │ ├── snapshot.test.ts
│ │ │ ├── testUtils.ts
│ │ │ ├── unc.test.ts
│ │ │ ├── uri.perf.data.txt
│ │ │ ├── uri.perf.test.ts
│ │ │ ├── uri.test.data.txt
│ │ │ └── zip/
│ │ │ └── zip.test.ts
│ │ ├── code/
│ │ │ ├── browser/
│ │ │ │ └── workbench/
│ │ │ │ ├── callback.html
│ │ │ │ ├── workbench-dev.html
│ │ │ │ ├── workbench.html
│ │ │ │ └── workbench.ts
│ │ │ ├── electron-main/
│ │ │ │ ├── app.ts
│ │ │ │ └── main.ts
│ │ │ ├── electron-sandbox/
│ │ │ │ ├── processExplorer/
│ │ │ │ │ ├── media/
│ │ │ │ │ │ └── processExplorer.css
│ │ │ │ │ ├── processExplorer-dev.html
│ │ │ │ │ ├── processExplorer.html
│ │ │ │ │ ├── processExplorer.ts
│ │ │ │ │ └── processExplorerMain.ts
│ │ │ │ └── workbench/
│ │ │ │ ├── workbench-dev.html
│ │ │ │ ├── workbench.html
│ │ │ │ └── workbench.ts
│ │ │ ├── electron-utility/
│ │ │ │ └── sharedProcess/
│ │ │ │ ├── contrib/
│ │ │ │ │ ├── codeCacheCleaner.ts
│ │ │ │ │ ├── defaultExtensionsInitializer.ts
│ │ │ │ │ ├── extensions.ts
│ │ │ │ │ ├── languagePackCachedDataCleaner.ts
│ │ │ │ │ ├── localizationsUpdater.ts
│ │ │ │ │ ├── logsDataCleaner.ts
│ │ │ │ │ ├── storageDataCleaner.ts
│ │ │ │ │ └── userDataProfilesCleaner.ts
│ │ │ │ └── sharedProcessMain.ts
│ │ │ └── node/
│ │ │ ├── cli.ts
│ │ │ └── cliProcessMain.ts
│ │ ├── editor/
│ │ │ ├── browser/
│ │ │ │ ├── config/
│ │ │ │ │ ├── charWidthReader.ts
│ │ │ │ │ ├── domFontInfo.ts
│ │ │ │ │ ├── editorConfiguration.ts
│ │ │ │ │ ├── elementSizeObserver.ts
│ │ │ │ │ ├── fontMeasurements.ts
│ │ │ │ │ ├── migrateOptions.ts
│ │ │ │ │ └── tabFocus.ts
│ │ │ │ ├── controller/
│ │ │ │ │ ├── editContext/
│ │ │ │ │ │ ├── clipboardUtils.ts
│ │ │ │ │ │ ├── editContext.ts
│ │ │ │ │ │ ├── native/
│ │ │ │ │ │ │ ├── debugEditContext.ts
│ │ │ │ │ │ │ ├── editContextFactory.ts
│ │ │ │ │ │ │ ├── nativeEditContext.css
│ │ │ │ │ │ │ ├── nativeEditContext.ts
│ │ │ │ │ │ │ ├── nativeEditContextRegistry.ts
│ │ │ │ │ │ │ ├── nativeEditContextUtils.ts
│ │ │ │ │ │ │ └── screenReaderSupport.ts
│ │ │ │ │ │ ├── screenReaderUtils.ts
│ │ │ │ │ │ └── textArea/
│ │ │ │ │ │ ├── textAreaEditContext.css
│ │ │ │ │ │ ├── textAreaEditContext.ts
│ │ │ │ │ │ ├── textAreaEditContextInput.ts
│ │ │ │ │ │ └── textAreaEditContextState.ts
│ │ │ │ │ ├── mouseHandler.ts
│ │ │ │ │ ├── mouseTarget.ts
│ │ │ │ │ └── pointerHandler.ts
│ │ │ │ ├── coreCommands.ts
│ │ │ │ ├── dnd.ts
│ │ │ │ ├── editorBrowser.ts
│ │ │ │ ├── editorDom.ts
│ │ │ │ ├── editorExtensions.ts
│ │ │ │ ├── gpu/
│ │ │ │ │ ├── atlas/
│ │ │ │ │ │ ├── atlas.ts
│ │ │ │ │ │ ├── textureAtlas.ts
│ │ │ │ │ │ ├── textureAtlasPage.ts
│ │ │ │ │ │ ├── textureAtlasShelfAllocator.ts
│ │ │ │ │ │ └── textureAtlasSlabAllocator.ts
│ │ │ │ │ ├── bufferDirtyTracker.ts
│ │ │ │ │ ├── contentSegmenter.ts
│ │ │ │ │ ├── css/
│ │ │ │ │ │ ├── decorationCssRuleExtractor.ts
│ │ │ │ │ │ ├── decorationStyleCache.ts
│ │ │ │ │ │ └── media/
│ │ │ │ │ │ └── decorationCssRuleExtractor.css
│ │ │ │ │ ├── gpu.ts
│ │ │ │ │ ├── gpuDisposable.ts
│ │ │ │ │ ├── gpuUtils.ts
│ │ │ │ │ ├── objectCollectionBuffer.ts
│ │ │ │ │ ├── raster/
│ │ │ │ │ │ ├── glyphRasterizer.ts
│ │ │ │ │ │ └── raster.ts
│ │ │ │ │ ├── rectangleRenderer.ts
│ │ │ │ │ ├── rectangleRenderer.wgsl.ts
│ │ │ │ │ ├── renderStrategy/
│ │ │ │ │ │ ├── baseRenderStrategy.ts
│ │ │ │ │ │ ├── fullFileRenderStrategy.ts
│ │ │ │ │ │ ├── fullFileRenderStrategy.wgsl.ts
│ │ │ │ │ │ └── viewportRenderStrategy.ts
│ │ │ │ │ ├── taskQueue.ts
│ │ │ │ │ └── viewGpuContext.ts
│ │ │ │ ├── observableCodeEditor.ts
│ │ │ │ ├── point.ts
│ │ │ │ ├── rect.ts
│ │ │ │ ├── services/
│ │ │ │ │ ├── abstractCodeEditorService.ts
│ │ │ │ │ ├── bulkEditService.ts
│ │ │ │ │ ├── codeEditorService.ts
│ │ │ │ │ ├── editorWorkerService.ts
│ │ │ │ │ ├── hoverService/
│ │ │ │ │ │ ├── hover.css
│ │ │ │ │ │ ├── hoverService.ts
│ │ │ │ │ │ ├── hoverWidget.ts
│ │ │ │ │ │ └── updatableHoverWidget.ts
│ │ │ │ │ ├── markerDecorations.ts
│ │ │ │ │ └── openerService.ts
│ │ │ │ ├── stableEditorScroll.ts
│ │ │ │ ├── view/
│ │ │ │ │ ├── domLineBreaksComputer.ts
│ │ │ │ │ ├── dynamicViewOverlay.ts
│ │ │ │ │ ├── renderingContext.ts
│ │ │ │ │ ├── viewController.ts
│ │ │ │ │ ├── viewLayer.ts
│ │ │ │ │ ├── viewOverlays.ts
│ │ │ │ │ ├── viewPart.ts
│ │ │ │ │ └── viewUserInputEvents.ts
│ │ │ │ ├── view.ts
│ │ │ │ ├── viewParts/
│ │ │ │ │ ├── blockDecorations/
│ │ │ │ │ │ ├── blockDecorations.css
│ │ │ │ │ │ └── blockDecorations.ts
│ │ │ │ │ ├── contentWidgets/
│ │ │ │ │ │ └── contentWidgets.ts
│ │ │ │ │ ├── currentLineHighlight/
│ │ │ │ │ │ ├── currentLineHighlight.css
│ │ │ │ │ │ └── currentLineHighlight.ts
│ │ │ │ │ ├── decorations/
│ │ │ │ │ │ ├── decorations.css
│ │ │ │ │ │ └── decorations.ts
│ │ │ │ │ ├── editorScrollbar/
│ │ │ │ │ │ └── editorScrollbar.ts
│ │ │ │ │ ├── glyphMargin/
│ │ │ │ │ │ ├── glyphMargin.css
│ │ │ │ │ │ └── glyphMargin.ts
│ │ │ │ │ ├── gpuMark/
│ │ │ │ │ │ ├── gpuMark.css
│ │ │ │ │ │ └── gpuMark.ts
│ │ │ │ │ ├── indentGuides/
│ │ │ │ │ │ ├── indentGuides.css
│ │ │ │ │ │ └── indentGuides.ts
│ │ │ │ │ ├── lineNumbers/
│ │ │ │ │ │ ├── lineNumbers.css
│ │ │ │ │ │ └── lineNumbers.ts
│ │ │ │ │ ├── linesDecorations/
│ │ │ │ │ │ ├── linesDecorations.css
│ │ │ │ │ │ └── linesDecorations.ts
│ │ │ │ │ ├── margin/
│ │ │ │ │ │ ├── margin.css
│ │ │ │ │ │ └── margin.ts
│ │ │ │ │ ├── marginDecorations/
│ │ │ │ │ │ ├── marginDecorations.css
│ │ │ │ │ │ └── marginDecorations.ts
│ │ │ │ │ ├── minimap/
│ │ │ │ │ │ ├── minimap.css
│ │ │ │ │ │ ├── minimap.ts
│ │ │ │ │ │ ├── minimapCharRenderer.ts
│ │ │ │ │ │ ├── minimapCharRendererFactory.ts
│ │ │ │ │ │ ├── minimapCharSheet.ts
│ │ │ │ │ │ └── minimapPreBaked.ts
│ │ │ │ │ ├── overlayWidgets/
│ │ │ │ │ │ ├── overlayWidgets.css
│ │ │ │ │ │ └── overlayWidgets.ts
│ │ │ │ │ ├── overviewRuler/
│ │ │ │ │ │ ├── decorationsOverviewRuler.ts
│ │ │ │ │ │ └── overviewRuler.ts
│ │ │ │ │ ├── rulers/
│ │ │ │ │ │ ├── rulers.css
│ │ │ │ │ │ └── rulers.ts
│ │ │ │ │ ├── rulersGpu/
│ │ │ │ │ │ └── rulersGpu.ts
│ │ │ │ │ ├── scrollDecoration/
│ │ │ │ │ │ ├── scrollDecoration.css
│ │ │ │ │ │ └── scrollDecoration.ts
│ │ │ │ │ ├── selections/
│ │ │ │ │ │ ├── selections.css
│ │ │ │ │ │ └── selections.ts
│ │ │ │ │ ├── viewCursors/
│ │ │ │ │ │ ├── viewCursor.ts
│ │ │ │ │ │ ├── viewCursors.css
│ │ │ │ │ │ └── viewCursors.ts
│ │ │ │ │ ├── viewLines/
│ │ │ │ │ │ ├── domReadingContext.ts
│ │ │ │ │ │ ├── rangeUtil.ts
│ │ │ │ │ │ ├── viewLine.ts
│ │ │ │ │ │ ├── viewLineOptions.ts
│ │ │ │ │ │ ├── viewLines.css
│ │ │ │ │ │ └── viewLines.ts
│ │ │ │ │ ├── viewLinesGpu/
│ │ │ │ │ │ └── viewLinesGpu.ts
│ │ │ │ │ ├── viewZones/
│ │ │ │ │ │ └── viewZones.ts
│ │ │ │ │ └── whitespace/
│ │ │ │ │ ├── whitespace.css
│ │ │ │ │ └── whitespace.ts
│ │ │ │ └── widget/
│ │ │ │ ├── codeEditor/
│ │ │ │ │ ├── codeEditorContributions.ts
│ │ │ │ │ ├── codeEditorWidget.ts
│ │ │ │ │ ├── editor.css
│ │ │ │ │ └── embeddedCodeEditorWidget.ts
│ │ │ │ ├── diffEditor/
│ │ │ │ │ ├── commands.ts
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── accessibleDiffViewer.css
│ │ │ │ │ │ ├── accessibleDiffViewer.ts
│ │ │ │ │ │ ├── diffEditorDecorations.ts
│ │ │ │ │ │ ├── diffEditorEditors.ts
│ │ │ │ │ │ ├── diffEditorSash.ts
│ │ │ │ │ │ └── diffEditorViewZones/
│ │ │ │ │ │ ├── diffEditorViewZones.ts
│ │ │ │ │ │ ├── inlineDiffDeletedCodeMargin.ts
│ │ │ │ │ │ └── renderLines.ts
│ │ │ │ │ ├── delegatingEditorImpl.ts
│ │ │ │ │ ├── diffEditor.contribution.ts
│ │ │ │ │ ├── diffEditorOptions.ts
│ │ │ │ │ ├── diffEditorViewModel.ts
│ │ │ │ │ ├── diffEditorWidget.ts
│ │ │ │ │ ├── diffProviderFactoryService.ts
│ │ │ │ │ ├── embeddedDiffEditorWidget.ts
│ │ │ │ │ ├── features/
│ │ │ │ │ │ ├── gutterFeature.ts
│ │ │ │ │ │ ├── hideUnchangedRegionsFeature.ts
│ │ │ │ │ │ ├── movedBlocksLinesFeature.ts
│ │ │ │ │ │ ├── overviewRulerFeature.ts
│ │ │ │ │ │ └── revertButtonsFeature.ts
│ │ │ │ │ ├── registrations.contribution.ts
│ │ │ │ │ ├── style.css
│ │ │ │ │ ├── utils/
│ │ │ │ │ │ └── editorGutter.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── markdownRenderer/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── markdownRenderer.ts
│ │ │ │ │ └── renderedMarkdown.css
│ │ │ │ └── multiDiffEditor/
│ │ │ │ ├── colors.ts
│ │ │ │ ├── diffEditorItemTemplate.ts
│ │ │ │ ├── model.ts
│ │ │ │ ├── multiDiffEditorViewModel.ts
│ │ │ │ ├── multiDiffEditorWidget.ts
│ │ │ │ ├── multiDiffEditorWidgetImpl.ts
│ │ │ │ ├── objectPool.ts
│ │ │ │ ├── style.css
│ │ │ │ ├── utils.ts
│ │ │ │ └── workbenchUIElementFactory.ts
│ │ │ ├── common/
│ │ │ │ ├── codecs/
│ │ │ │ │ ├── baseToken.ts
│ │ │ │ │ ├── linesCodec/
│ │ │ │ │ │ ├── linesDecoder.ts
│ │ │ │ │ │ └── tokens/
│ │ │ │ │ │ ├── carriageReturn.ts
│ │ │ │ │ │ ├── line.ts
│ │ │ │ │ │ └── newLine.ts
│ │ │ │ │ ├── markdownCodec/
│ │ │ │ │ │ ├── markdownDecoder.ts
│ │ │ │ │ │ ├── parsers/
│ │ │ │ │ │ │ ├── markdownComment.ts
│ │ │ │ │ │ │ ├── markdownImage.ts
│ │ │ │ │ │ │ └── markdownLink.ts
│ │ │ │ │ │ └── tokens/
│ │ │ │ │ │ ├── markdownComment.ts
│ │ │ │ │ │ ├── markdownImage.ts
│ │ │ │ │ │ ├── markdownLink.ts
│ │ │ │ │ │ └── markdownToken.ts
│ │ │ │ │ └── simpleCodec/
│ │ │ │ │ ├── parserBase.ts
│ │ │ │ │ ├── simpleDecoder.ts
│ │ │ │ │ └── tokens/
│ │ │ │ │ ├── angleBrackets.ts
│ │ │ │ │ ├── brackets.ts
│ │ │ │ │ ├── colon.ts
│ │ │ │ │ ├── dash.ts
│ │ │ │ │ ├── exclamationMark.ts
│ │ │ │ │ ├── formFeed.ts
│ │ │ │ │ ├── hash.ts
│ │ │ │ │ ├── parentheses.ts
│ │ │ │ │ ├── space.ts
│ │ │ │ │ ├── tab.ts
│ │ │ │ │ ├── verticalTab.ts
│ │ │ │ │ └── word.ts
│ │ │ │ ├── commands/
│ │ │ │ │ ├── replaceCommand.ts
│ │ │ │ │ ├── shiftCommand.ts
│ │ │ │ │ ├── surroundSelectionCommand.ts
│ │ │ │ │ └── trimTrailingWhitespaceCommand.ts
│ │ │ │ ├── config/
│ │ │ │ │ ├── diffEditor.ts
│ │ │ │ │ ├── editorConfiguration.ts
│ │ │ │ │ ├── editorConfigurationSchema.ts
│ │ │ │ │ ├── editorOptions.ts
│ │ │ │ │ ├── editorZoom.ts
│ │ │ │ │ └── fontInfo.ts
│ │ │ │ ├── core/
│ │ │ │ │ ├── characterClassifier.ts
│ │ │ │ │ ├── cursorColumns.ts
│ │ │ │ │ ├── dimension.ts
│ │ │ │ │ ├── editOperation.ts
│ │ │ │ │ ├── editorColorRegistry.ts
│ │ │ │ │ ├── eolCounter.ts
│ │ │ │ │ ├── indentation.ts
│ │ │ │ │ ├── lineEdit.ts
│ │ │ │ │ ├── lineRange.ts
│ │ │ │ │ ├── offsetEdit.ts
│ │ │ │ │ ├── offsetRange.ts
│ │ │ │ │ ├── position.ts
│ │ │ │ │ ├── positionToOffset.ts
│ │ │ │ │ ├── range.ts
│ │ │ │ │ ├── rangeMapping.ts
│ │ │ │ │ ├── rgba.ts
│ │ │ │ │ ├── selection.ts
│ │ │ │ │ ├── stringBuilder.ts
│ │ │ │ │ ├── textChange.ts
│ │ │ │ │ ├── textEdit.ts
│ │ │ │ │ ├── textLength.ts
│ │ │ │ │ ├── textModelDefaults.ts
│ │ │ │ │ ├── wordCharacterClassifier.ts
│ │ │ │ │ └── wordHelper.ts
│ │ │ │ ├── cursor/
│ │ │ │ │ ├── cursor.ts
│ │ │ │ │ ├── cursorAtomicMoveOperations.ts
│ │ │ │ │ ├── cursorCollection.ts
│ │ │ │ │ ├── cursorColumnSelection.ts
│ │ │ │ │ ├── cursorContext.ts
│ │ │ │ │ ├── cursorDeleteOperations.ts
│ │ │ │ │ ├── cursorMoveCommands.ts
│ │ │ │ │ ├── cursorMoveOperations.ts
│ │ │ │ │ ├── cursorTypeEditOperations.ts
│ │ │ │ │ ├── cursorTypeOperations.ts
│ │ │ │ │ ├── cursorWordOperations.ts
│ │ │ │ │ └── oneCursor.ts
│ │ │ │ ├── cursorCommon.ts
│ │ │ │ ├── cursorEvents.ts
│ │ │ │ ├── diff/
│ │ │ │ │ ├── defaultLinesDiffComputer/
│ │ │ │ │ │ ├── algorithms/
│ │ │ │ │ │ │ ├── diffAlgorithm.ts
│ │ │ │ │ │ │ ├── dynamicProgrammingDiffing.ts
│ │ │ │ │ │ │ └── myersDiffAlgorithm.ts
│ │ │ │ │ │ ├── computeMovedLines.ts
│ │ │ │ │ │ ├── defaultLinesDiffComputer.ts
│ │ │ │ │ │ ├── heuristicSequenceOptimizations.ts
│ │ │ │ │ │ ├── lineSequence.ts
│ │ │ │ │ │ ├── linesSliceCharSequence.ts
│ │ │ │ │ │ └── utils.ts
│ │ │ │ │ ├── documentDiffProvider.ts
│ │ │ │ │ ├── legacyLinesDiffComputer.ts
│ │ │ │ │ ├── linesDiffComputer.ts
│ │ │ │ │ ├── linesDiffComputers.ts
│ │ │ │ │ └── rangeMapping.ts
│ │ │ │ ├── editorAction.ts
│ │ │ │ ├── editorCommon.ts
│ │ │ │ ├── editorContextKeys.ts
│ │ │ │ ├── editorFeatures.ts
│ │ │ │ ├── editorTheme.ts
│ │ │ │ ├── encodedTokenAttributes.ts
│ │ │ │ ├── inputMode.ts
│ │ │ │ ├── languageFeatureRegistry.ts
│ │ │ │ ├── languageSelector.ts
│ │ │ │ ├── languages/
│ │ │ │ │ ├── autoIndent.ts
│ │ │ │ │ ├── defaultDocumentColorsComputer.ts
│ │ │ │ │ ├── enterAction.ts
│ │ │ │ │ ├── highlights/
│ │ │ │ │ │ ├── css.scm
│ │ │ │ │ │ ├── ini.scm
│ │ │ │ │ │ ├── regex.scm
│ │ │ │ │ │ └── typescript.scm
│ │ │ │ │ ├── injections/
│ │ │ │ │ │ └── typescript.scm
│ │ │ │ │ ├── language.ts
│ │ │ │ │ ├── languageConfiguration.ts
│ │ │ │ │ ├── languageConfigurationRegistry.ts
│ │ │ │ │ ├── linkComputer.ts
│ │ │ │ │ ├── modesRegistry.ts
│ │ │ │ │ ├── nullTokenize.ts
│ │ │ │ │ ├── supports/
│ │ │ │ │ │ ├── characterPair.ts
│ │ │ │ │ │ ├── electricCharacter.ts
│ │ │ │ │ │ ├── indentRules.ts
│ │ │ │ │ │ ├── indentationLineProcessor.ts
│ │ │ │ │ │ ├── inplaceReplaceSupport.ts
│ │ │ │ │ │ ├── languageBracketsConfiguration.ts
│ │ │ │ │ │ ├── onEnter.ts
│ │ │ │ │ │ ├── richEditBrackets.ts
│ │ │ │ │ │ └── tokenization.ts
│ │ │ │ │ ├── supports.ts
│ │ │ │ │ └── textToHtmlTokenizer.ts
│ │ │ │ ├── languages.ts
│ │ │ │ ├── model/
│ │ │ │ │ ├── bracketPairsTextModelPart/
│ │ │ │ │ │ ├── bracketPairsImpl.ts
│ │ │ │ │ │ ├── bracketPairsTree/
│ │ │ │ │ │ │ ├── ast.ts
│ │ │ │ │ │ │ ├── beforeEditPositionMapper.ts
│ │ │ │ │ │ │ ├── bracketPairsTree.ts
│ │ │ │ │ │ │ ├── brackets.ts
│ │ │ │ │ │ │ ├── combineTextEditInfos.ts
│ │ │ │ │ │ │ ├── concat23Trees.ts
│ │ │ │ │ │ │ ├── length.ts
│ │ │ │ │ │ │ ├── nodeReader.ts
│ │ │ │ │ │ │ ├── parser.ts
│ │ │ │ │ │ │ ├── smallImmutableSet.ts
│ │ │ │ │ │ │ └── tokenizer.ts
│ │ │ │ │ │ ├── colorizedBracketPairsDecorationProvider.ts
│ │ │ │ │ │ └── fixBrackets.ts
│ │ │ │ │ ├── decorationProvider.ts
│ │ │ │ │ ├── editStack.ts
│ │ │ │ │ ├── fixedArray.ts
│ │ │ │ │ ├── guidesTextModelPart.ts
│ │ │ │ │ ├── indentationGuesser.ts
│ │ │ │ │ ├── intervalTree.ts
│ │ │ │ │ ├── mirrorTextModel.ts
│ │ │ │ │ ├── pieceTreeTextBuffer/
│ │ │ │ │ │ ├── pieceTreeBase.ts
│ │ │ │ │ │ ├── pieceTreeTextBuffer.ts
│ │ │ │ │ │ ├── pieceTreeTextBufferBuilder.ts
│ │ │ │ │ │ └── rbTreeBase.ts
│ │ │ │ │ ├── prefixSumComputer.ts
│ │ │ │ │ ├── textModel.ts
│ │ │ │ │ ├── textModelOffsetEdit.ts
│ │ │ │ │ ├── textModelPart.ts
│ │ │ │ │ ├── textModelSearch.ts
│ │ │ │ │ ├── textModelText.ts
│ │ │ │ │ ├── textModelTokens.ts
│ │ │ │ │ ├── tokenStore.ts
│ │ │ │ │ ├── tokenizationTextModelPart.ts
│ │ │ │ │ ├── tokens.ts
│ │ │ │ │ ├── treeSitterTokenStoreService.ts
│ │ │ │ │ ├── treeSitterTokens.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── model.ts
│ │ │ │ ├── modelLineProjectionData.ts
│ │ │ │ ├── services/
│ │ │ │ │ ├── editorBaseApi.ts
│ │ │ │ │ ├── editorWebWorker.ts
│ │ │ │ │ ├── editorWebWorkerMain.ts
│ │ │ │ │ ├── editorWorker.ts
│ │ │ │ │ ├── editorWorkerHost.ts
│ │ │ │ │ ├── findSectionHeaders.ts
│ │ │ │ │ ├── getIconClasses.ts
│ │ │ │ │ ├── languageFeatureDebounce.ts
│ │ │ │ │ ├── languageFeatures.ts
│ │ │ │ │ ├── languageFeaturesService.ts
│ │ │ │ │ ├── languageService.ts
│ │ │ │ │ ├── languagesAssociations.ts
│ │ │ │ │ ├── languagesRegistry.ts
│ │ │ │ │ ├── markerDecorations.ts
│ │ │ │ │ ├── markerDecorationsService.ts
│ │ │ │ │ ├── model.ts
│ │ │ │ │ ├── modelService.ts
│ │ │ │ │ ├── modelUndoRedoParticipant.ts
│ │ │ │ │ ├── resolverService.ts
│ │ │ │ │ ├── semanticTokensDto.ts
│ │ │ │ │ ├── semanticTokensProviderStyling.ts
│ │ │ │ │ ├── semanticTokensStyling.ts
│ │ │ │ │ ├── semanticTokensStylingService.ts
│ │ │ │ │ ├── textModelSync/
│ │ │ │ │ │ ├── textModelSync.impl.ts
│ │ │ │ │ │ └── textModelSync.protocol.ts
│ │ │ │ │ ├── textResourceConfiguration.ts
│ │ │ │ │ ├── textResourceConfigurationService.ts
│ │ │ │ │ ├── treeSitter/
│ │ │ │ │ │ ├── cursorUtils.ts
│ │ │ │ │ │ ├── textModelTreeSitter.ts
│ │ │ │ │ │ ├── treeSitterLanguages.ts
│ │ │ │ │ │ └── treeSitterParserService.ts
│ │ │ │ │ ├── treeSitterParserService.ts
│ │ │ │ │ ├── treeViewsDnd.ts
│ │ │ │ │ ├── treeViewsDndService.ts
│ │ │ │ │ └── unicodeTextModelHighlighter.ts
│ │ │ │ ├── standalone/
│ │ │ │ │ └── standaloneEnums.ts
│ │ │ │ ├── standaloneStrings.ts
│ │ │ │ ├── textModelBracketPairs.ts
│ │ │ │ ├── textModelEvents.ts
│ │ │ │ ├── textModelGuides.ts
│ │ │ │ ├── tokenizationRegistry.ts
│ │ │ │ ├── tokenizationTextModelPart.ts
│ │ │ │ ├── tokens/
│ │ │ │ │ ├── contiguousMultilineTokens.ts
│ │ │ │ │ ├── contiguousMultilineTokensBuilder.ts
│ │ │ │ │ ├── contiguousTokensEditing.ts
│ │ │ │ │ ├── contiguousTokensStore.ts
│ │ │ │ │ ├── lineTokens.ts
│ │ │ │ │ ├── sparseMultilineTokens.ts
│ │ │ │ │ ├── sparseTokensStore.ts
│ │ │ │ │ └── tokenArray.ts
│ │ │ │ ├── viewEventHandler.ts
│ │ │ │ ├── viewEvents.ts
│ │ │ │ ├── viewLayout/
│ │ │ │ │ ├── lineDecorations.ts
│ │ │ │ │ ├── linePart.ts
│ │ │ │ │ ├── linesLayout.ts
│ │ │ │ │ ├── viewLayout.ts
│ │ │ │ │ ├── viewLineRenderer.ts
│ │ │ │ │ └── viewLinesViewportData.ts
│ │ │ │ ├── viewModel/
│ │ │ │ │ ├── glyphLanesModel.ts
│ │ │ │ │ ├── minimapTokensColorTracker.ts
│ │ │ │ │ ├── modelLineProjection.ts
│ │ │ │ │ ├── monospaceLineBreaksComputer.ts
│ │ │ │ │ ├── overviewZoneManager.ts
│ │ │ │ │ ├── viewContext.ts
│ │ │ │ │ ├── viewModelDecorations.ts
│ │ │ │ │ ├── viewModelImpl.ts
│ │ │ │ │ └── viewModelLines.ts
│ │ │ │ ├── viewModel.ts
│ │ │ │ └── viewModelEventDispatcher.ts
│ │ │ ├── contrib/
│ │ │ │ ├── anchorSelect/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── anchorSelect.css
│ │ │ │ │ └── anchorSelect.ts
│ │ │ │ ├── bracketMatching/
│ │ │ │ │ ├── browser/
│ │ │ │ │ │ ├── bracketMatching.css
│ │ │ │ │ │ └── bracketMatching.ts
│ │ │ │ │ └── test/
│ │ │ │ │ └── browser/
│ │ │ │ │ └── bracketMatching.test.ts
│ │ │ │ ├── caretOperations/
│ │ │ │ │ ├── browser/
│ │ │ │ │ │ ├── caretOperations.ts
│ │ │ │ │ │ ├── moveCaretCommand.ts
│ │ │ │ │ │ └── transpose.ts
│ │ │ │ │ └── test/
│ │ │ │ │ └── browser/
│ │ │ │ │ └── moveCarretCommand.test.ts
│ │ │ │ ├── clipboard/
│ │ │ │ │ └── browser/
│ │ │ │ │ └── clipboard.ts
│ │ │ │ ├── codeAction/
│ │ │ │ │ ├── browser/
│ │ │ │ │ │ ├── codeAction.ts
│ │ │ │ │ │ ├── codeActionCommands.ts
│ │ │ │ │ │ ├── codeActionContributions.ts
│ │ │ │ │ │ ├── codeActionController.ts
│ │ │ │ │ │ ├── codeActionKeybindingResolver.ts
│ │ │ │ │ │ ├── codeActionMenu.ts
│ │ │ │ │ │ ├── codeActionModel.ts
│ │ │ │ │ │ ├── lightBulbWidget.css
│ │ │ │ │ │ └── lightBulbWidget.ts
│ │ │ │ │ ├── common/
│ │ │ │ │ │ └── types.ts
│ │ │ │ │ └── test/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── codeAction.test.ts
│ │ │ │ │ ├── codeActionKeybindingResolver.test.ts
│ │ │ │ │ └── codeActionModel.test.ts
│ │ │ │ ├── codelens/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── codeLensCache.ts
│ │ │ │ │ ├── codelens.ts
│ │ │ │ │ ├── codelensController.ts
│ │ │ │ │ ├── codelensWidget.css
│ │ │ │ │ └── codelensWidget.ts
│ │ │ │ ├── colorPicker/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── color.ts
│ │ │ │ │ ├── colorDetector.ts
│ │ │ │ │ ├── colorPicker.css
│ │ │ │ │ ├── colorPickerContribution.ts
│ │ │ │ │ ├── colorPickerModel.ts
│ │ │ │ │ ├── colorPickerParticipantUtils.ts
│ │ │ │ │ ├── colorPickerParts/
│ │ │ │ │ │ ├── colorPickerBody.ts
│ │ │ │ │ │ ├── colorPickerCloseButton.ts
│ │ │ │ │ │ ├── colorPickerHeader.ts
│ │ │ │ │ │ ├── colorPickerInsertButton.ts
│ │ │ │ │ │ ├── colorPickerSaturationBox.ts
│ │ │ │ │ │ └── colorPickerStrip.ts
│ │ │ │ │ ├── colorPickerWidget.ts
│ │ │ │ │ ├── defaultDocumentColorProvider.ts
│ │ │ │ │ ├── hoverColorPicker/
│ │ │ │ │ │ ├── hoverColorPicker.ts
│ │ │ │ │ │ ├── hoverColorPickerContribution.ts
│ │ │ │ │ │ └── hoverColorPickerParticipant.ts
│ │ │ │ │ └── standaloneColorPicker/
│ │ │ │ │ ├── standaloneColorPickerActions.ts
│ │ │ │ │ ├── standaloneColorPickerController.ts
│ │ │ │ │ ├── standaloneColorPickerParticipant.ts
│ │ │ │ │ └── standaloneColorPickerWidget.ts
│ │ │ │ ├── comment/
│ │ │ │ │ ├── browser/
│ │ │ │ │ │ ├── blockCommentCommand.ts
│ │ │ │ │ │ ├── comment.ts
│ │ │ │ │ │ └── lineCommentCommand.ts
│ │ │ │ │ └── test/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── blockCommentCommand.test.ts
│ │ │ │ │ └── lineCommentCommand.test.ts
│ │ │ │ ├── contextmenu/
│ │ │ │ │ └── browser/
│ │ │ │ │ └── contextmenu.ts
│ │ │ │ ├── cursorUndo/
│ │ │ │ │ ├── browser/
│ │ │ │ │ │ └── cursorUndo.ts
│ │ │ │ │ └── test/
│ │ │ │ │ └── browser/
│ │ │ │ │ └── cursorUndo.test.ts
│ │ │ │ ├── diffEditorBreadcrumbs/
│ │ │ │ │ └── browser/
│ │ │ │ │ └── contribution.ts
│ │ │ │ ├── dnd/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── dnd.css
│ │ │ │ │ ├── dnd.ts
│ │ │ │ │ └── dragAndDropCommand.ts
│ │ │ │ ├── documentSymbols/
│ │ │ │ │ ├── browser/
│ │ │ │ │ │ ├── documentSymbols.ts
│ │ │ │ │ │ └── outlineModel.ts
│ │ │ │ │ └── test/
│ │ │ │ │ └── browser/
│ │ │ │ │ └── outlineModel.test.ts
│ │ │ │ ├── dropOrPasteInto/
│ │ │ │ │ ├── browser/
│ │ │ │ │ │ ├── copyPasteContribution.ts
│ │ │ │ │ │ ├── copyPasteController.ts
│ │ │ │ │ │ ├── defaultProviders.ts
│ │ │ │ │ │ ├── dropIntoEditorContribution.ts
│ │ │ │ │ │ ├── dropIntoEditorController.ts
│ │ │ │ │ │ ├── edit.ts
│ │ │ │ │ │ ├── postEditWidget.css
│ │ │ │ │ │ └── postEditWidget.ts
│ │ │ │ │ └── test/
│ │ │ │ │ └── browser/
│ │ │ │ │ └── editSort.test.ts
│ │ │ │ ├── editorState/
│ │ │ │ │ ├── browser/
│ │ │ │ │ │ ├── editorState.ts
│ │ │ │ │ │ └── keybindingCancellation.ts
│ │ │ │ │ └── test/
│ │ │ │ │ └── browser/
│ │ │ │ │ └── editorState.test.ts
│ │ │ │ ├── find/
│ │ │ │ │ ├── browser/
│ │ │ │ │ │ ├── findController.ts
│ │ │ │ │ │ ├── findDecorations.ts
│ │ │ │ │ │ ├── findModel.ts
│ │ │ │ │ │ ├── findOptionsWidget.css
│ │ │ │ │ │ ├── findOptionsWidget.ts
│ │ │ │ │ │ ├── findState.ts
│ │ │ │ │ │ ├── findWidget.css
│ │ │ │ │ │ ├── findWidget.ts
│ │ │ │ │ │ ├── findWidgetSearchHistory.ts
│ │ │ │ │ │ ├── replaceAllCommand.ts
│ │ │ │ │ │ ├── replacePattern.ts
│ │ │ │ │ │ └── replaceWidgetHistory.ts
│ │ │ │ │ └── test/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── find.test.ts
│ │ │ │ │ ├── findController.test.ts
│ │ │ │ │ ├── findModel.test.ts
│ │ │ │ │ └── replacePattern.test.ts
│ │ │ │ ├── folding/
│ │ │ │ │ ├── browser/
│ │ │ │ │ │ ├── folding.css
│ │ │ │ │ │ ├── folding.ts
│ │ │ │ │ │ ├── foldingDecorations.ts
│ │ │ │ │ │ ├── foldingModel.ts
│ │ │ │ │ │ ├── foldingRanges.ts
│ │ │ │ │ │ ├── hiddenRangeModel.ts
│ │ │ │ │ │ ├── indentRangeProvider.ts
│ │ │ │ │ │ └── syntaxRangeProvider.ts
│ │ │ │ │ └── test/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── foldingModel.test.ts
│ │ │ │ │ ├── foldingRanges.test.ts
│ │ │ │ │ ├── hiddenRangeModel.test.ts
│ │ │ │ │ ├── indentFold.test.ts
│ │ │ │ │ ├── indentRangeProvider.test.ts
│ │ │ │ │ └── syntaxFold.test.ts
│ │ │ │ ├── fontZoom/
│ │ │ │ │ └── browser/
│ │ │ │ │ └── fontZoom.ts
│ │ │ │ ├── format/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── format.ts
│ │ │ │ │ ├── formatActions.ts
│ │ │ │ │ └── formattingEdit.ts
│ │ │ │ ├── gotoError/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── gotoError.ts
│ │ │ │ │ ├── gotoErrorWidget.ts
│ │ │ │ │ ├── markerNavigationService.ts
│ │ │ │ │ └── media/
│ │ │ │ │ └── gotoErrorWidget.css
│ │ │ │ ├── gotoSymbol/
│ │ │ │ │ ├── browser/
│ │ │ │ │ │ ├── goToCommands.ts
│ │ │ │ │ │ ├── goToSymbol.ts
│ │ │ │ │ │ ├── link/
│ │ │ │ │ │ │ ├── clickLinkGesture.ts
│ │ │ │ │ │ │ ├── goToDefinitionAtPosition.css
│ │ │ │ │ │ │ └── goToDefinitionAtPosition.ts
│ │ │ │ │ │ ├── peek/
│ │ │ │ │ │ │ ├── referencesController.ts
│ │ │ │ │ │ │ ├── referencesTree.ts
│ │ │ │ │ │ │ ├── referencesWidget.css
│ │ │ │ │ │ │ └── referencesWidget.ts
│ │ │ │ │ │ ├── referencesModel.ts
│ │ │ │ │ │ └── symbolNavigation.ts
│ │ │ │ │ └── test/
│ │ │ │ │ └── browser/
│ │ │ │ │ └── referencesModel.test.ts
│ │ │ │ ├── gpu/
│ │ │ │ │ └── browser/
│ │ │ │ │ └── gpuActions.ts
│ │ │ │ ├── hover/
│ │ │ │ │ ├── browser/
│ │ │ │ │ │ ├── contentHoverComputer.ts
│ │ │ │ │ │ ├── contentHoverController.ts
│ │ │ │ │ │ ├── contentHoverRendered.ts
│ │ │ │ │ │ ├── contentHoverStatusBar.ts
│ │ │ │ │ │ ├── contentHoverTypes.ts
│ │ │ │ │ │ ├── contentHoverWidget.ts
│ │ │ │ │ │ ├── contentHoverWidgetWrapper.ts
│ │ │ │ │ │ ├── getHover.ts
│ │ │ │ │ │ ├── glyphHoverComputer.ts
│ │ │ │ │ │ ├── glyphHoverController.ts
│ │ │ │ │ │ ├── glyphHoverWidget.ts
│ │ │ │ │ │ ├── hover.css
│ │ │ │ │ │ ├── hoverAccessibleViews.ts
│ │ │ │ │ │ ├── hoverActionIds.ts
│ │ │ │ │ │ ├── hoverActions.ts
│ │ │ │ │ │ ├── hoverContribution.ts
│ │ │ │ │ │ ├── hoverOperation.ts
│ │ │ │ │ │ ├── hoverTypes.ts
│ │ │ │ │ │ ├── hoverUtils.ts
│ │ │ │ │ │ ├── markdownHoverParticipant.ts
│ │ │ │ │ │ ├── markerHoverParticipant.ts
│ │ │ │ │ │ └── resizableContentWidget.ts
│ │ │ │ │ └── test/
│ │ │ │ │ └── browser/
│ │ │ │ │ └── contentHover.test.ts
│ │ │ │ ├── inPlaceReplace/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── inPlaceReplace.css
│ │ │ │ │ ├── inPlaceReplace.ts
│ │ │ │ │ └── inPlaceReplaceCommand.ts
│ │ │ │ ├── indentation/
│ │ │ │ │ ├── browser/
│ │ │ │ │ │ └── indentation.ts
│ │ │ │ │ ├── common/
│ │ │ │ │ │ ├── indentUtils.ts
│ │ │ │ │ │ └── indentation.ts
│ │ │ │ │ └── test/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── indentation.test.ts
│ │ │ │ │ └── indentationLineProcessor.test.ts
│ │ │ │ ├── inlayHints/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── inlayHints.ts
│ │ │ │ │ ├── inlayHintsContribution.ts
│ │ │ │ │ ├── inlayHintsController.ts
│ │ │ │ │ ├── inlayHintsHover.ts
│ │ │ │ │ └── inlayHintsLocations.ts
│ │ │ │ ├── inlineCompletions/
│ │ │ │ │ ├── browser/
│ │ │ │ │ │ ├── controller/
│ │ │ │ │ │ │ ├── commandIds.ts
│ │ │ │ │ │ │ ├── commands.ts
│ │ │ │ │ │ │ ├── inlineCompletionContextKeys.ts
│ │ │ │ │ │ │ └── inlineCompletionsController.ts
│ │ │ │ │ │ ├── hintsWidget/
│ │ │ │ │ │ │ ├── hoverParticipant.ts
│ │ │ │ │ │ │ ├── inlineCompletionsHintsWidget.css
│ │ │ │ │ │ │ └── inlineCompletionsHintsWidget.ts
│ │ │ │ │ │ ├── inlineCompletions.contribution.ts
│ │ │ │ │ │ ├── inlineCompletionsAccessibleView.ts
│ │ │ │ │ │ ├── model/
│ │ │ │ │ │ │ ├── animation.ts
│ │ │ │ │ │ │ ├── changeRecorder.ts
│ │ │ │ │ │ │ ├── computeGhostText.ts
│ │ │ │ │ │ │ ├── ghostText.ts
│ │ │ │ │ │ │ ├── inlineCompletionsModel.ts
│ │ │ │ │ │ │ ├── inlineCompletionsSource.ts
│ │ │ │ │ │ │ ├── inlineEdit.ts
│ │ │ │ │ │ │ ├── inlineEditsAdapter.ts
│ │ │ │ │ │ │ ├── provideInlineCompletions.ts
│ │ │ │ │ │ │ ├── singleTextEditHelpers.ts
│ │ │ │ │ │ │ └── suggestWidgetAdapter.ts
│ │ │ │ │ │ ├── structuredLogger.ts
│ │ │ │ │ │ ├── utils.ts
│ │ │ │ │ │ └── view/
│ │ │ │ │ │ ├── ghostText/
│ │ │ │ │ │ │ ├── ghostTextView.css
│ │ │ │ │ │ │ └── ghostTextView.ts
│ │ │ │ │ │ ├── inlineCompletionsView.ts
│ │ │ │ │ │ └── inlineEdits/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── gutterIndicatorMenu.ts
│ │ │ │ │ │ │ ├── gutterIndicatorView.ts
│ │ │ │ │ │ │ └── indicatorView.ts
│ │ │ │ │ │ ├── inlineEditWithChanges.ts
│ │ │ │ │ │ ├── inlineEditsModel.ts
│ │ │ │ │ │ ├── inlineEditsView.ts
│ │ │ │ │ │ ├── inlineEditsViewInterface.ts
│ │ │ │ │ │ ├── inlineEditsViewProducer.ts
│ │ │ │ │ │ ├── inlineEditsViews/
│ │ │ │ │ │ │ ├── debugVisualization.ts
│ │ │ │ │ │ │ ├── inlineEditsCollapsedView.ts
│ │ │ │ │ │ │ ├── inlineEditsDeletionView.ts
│ │ │ │ │ │ │ ├── inlineEditsInsertionView.ts
│ │ │ │ │ │ │ ├── inlineEditsLineReplacementView.ts
│ │ │ │ │ │ │ ├── inlineEditsSideBySideView.ts
│ │ │ │ │ │ │ ├── inlineEditsWordInsertView.ts
│ │ │ │ │ │ │ ├── inlineEditsWordReplacementView.ts
│ │ │ │ │ │ │ └── originalEditorInlineDiffView.ts
│ │ │ │ │ │ ├── theme.ts
│ │ │ │ │ │ ├── utils/
│ │ │ │ │ │ │ └── utils.ts
│ │ │ │ │ │ └── view.css
│ │ │ │ │ └── test/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── inlineCompletionsModel.test.ts
│ │ │ │ │ ├── inlineCompletionsProvider.test.ts
│ │ │ │ │ ├── suggestWidgetModel.test.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── inlineProgress/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── inlineProgress.ts
│ │ │ │ │ └── inlineProgressWidget.css
│ │ │ │ ├── insertFinalNewLine/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── insertFinalNewLine.ts
│ │ │ │ │ └── insertFinalNewLineCommand.ts
│ │ │ │ ├── lineSelection/
│ │ │ │ │ ├── browser/
│ │ │ │ │ │ └── lineSelection.ts
│ │ │ │ │ └── test/
│ │ │ │ │ └── browser/
│ │ │ │ │ └── lineSelection.test.ts
│ │ │ │ ├── linesOperations/
│ │ │ │ │ ├── browser/
│ │ │ │ │ │ ├── copyLinesCommand.ts
│ │ │ │ │ │ ├── linesOperations.ts
│ │ │ │ │ │ ├── moveLinesCommand.ts
│ │ │ │ │ │ └── sortLinesCommand.ts
│ │ │ │ │ └── test/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── copyLinesCommand.test.ts
│ │ │ │ │ ├── linesOperations.test.ts
│ │ │ │ │ ├── moveLinesCommand.test.ts
│ │ │ │ │ └── sortLinesCommand.test.ts
│ │ │ │ ├── linkedEditing/
│ │ │ │ │ ├── browser/
│ │ │ │ │ │ ├── linkedEditing.css
│ │ │ │ │ │ └── linkedEditing.ts
│ │ │ │ │ └── test/
│ │ │ │ │ └── browser/
│ │ │ │ │ └── linkedEditing.test.ts
│ │ │ │ ├── links/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── getLinks.ts
│ │ │ │ │ ├── links.css
│ │ │ │ │ └── links.ts
│ │ │ │ ├── longLinesHelper/
│ │ │ │ │ └── browser/
│ │ │ │ │ └── longLinesHelper.ts
│ │ │ │ ├── message/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── messageController.css
│ │ │ │ │ └── messageController.ts
│ │ │ │ ├── multicursor/
│ │ │ │ │ ├── browser/
│ │ │ │ │ │ └── multicursor.ts
│ │ │ │ │ └── test/
│ │ │ │ │ └── browser/
│ │ │ │ │ └── multicursor.test.ts
│ │ │ │ ├── parameterHints/
│ │ │ │ │ ├── browser/
│ │ │ │ │ │ ├── parameterHints.css
│ │ │ │ │ │ ├── parameterHints.ts
│ │ │ │ │ │ ├── parameterHintsModel.ts
│ │ │ │ │ │ ├── parameterHintsWidget.ts
│ │ │ │ │ │ └── provideSignatureHelp.ts
│ │ │ │ │ └── test/
│ │ │ │ │ └── browser/
│ │ │ │ │ └── parameterHintsModel.test.ts
│ │ │ │ ├── peekView/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── media/
│ │ │ │ │ │ └── peekViewWidget.css
│ │ │ │ │ └── peekView.ts
│ │ │ │ ├── placeholderText/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── placeholderText.contribution.ts
│ │ │ │ │ ├── placeholderText.css
│ │ │ │ │ └── placeholderTextContribution.ts
│ │ │ │ ├── quickAccess/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── commandsQuickAccess.ts
│ │ │ │ │ ├── editorNavigationQuickAccess.ts
│ │ │ │ │ ├── gotoLineQuickAccess.ts
│ │ │ │ │ └── gotoSymbolQuickAccess.ts
│ │ │ │ ├── readOnlyMessage/
│ │ │ │ │ └── browser/
│ │ │ │ │ └── contribution.ts
│ │ │ │ ├── rename/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── rename.ts
│ │ │ │ │ ├── renameWidget.css
│ │ │ │ │ └── renameWidget.ts
│ │ │ │ ├── sectionHeaders/
│ │ │ │ │ └── browser/
│ │ │ │ │ └── sectionHeaders.ts
│ │ │ │ ├── semanticTokens/
│ │ │ │ │ ├── browser/
│ │ │ │ │ │ ├── documentSemanticTokens.ts
│ │ │ │ │ │ └── viewportSemanticTokens.ts
│ │ │ │ │ ├── common/
│ │ │ │ │ │ ├── getSemanticTokens.ts
│ │ │ │ │ │ └── semanticTokensConfig.ts
│ │ │ │ │ └── test/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── documentSemanticTokens.test.ts
│ │ │ │ │ └── getSemanticTokens.test.ts
│ │ │ │ ├── smartSelect/
│ │ │ │ │ ├── browser/
│ │ │ │ │ │ ├── bracketSelections.ts
│ │ │ │ │ │ ├── smartSelect.ts
│ │ │ │ │ │ └── wordSelections.ts
│ │ │ │ │ └── test/
│ │ │ │ │ └── browser/
│ │ │ │ │ └── smartSelect.test.ts
│ │ │ │ ├── snippet/
│ │ │ │ │ ├── browser/
│ │ │ │ │ │ ├── snippet.md
│ │ │ │ │ │ ├── snippetController2.ts
│ │ │ │ │ │ ├── snippetParser.ts
│ │ │ │ │ │ ├── snippetSession.css
│ │ │ │ │ │ ├── snippetSession.ts
│ │ │ │ │ │ └── snippetVariables.ts
│ │ │ │ │ └── test/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── snippetController2.old.test.ts
│ │ │ │ │ ├── snippetController2.test.ts
│ │ │ │ │ ├── snippetParser.test.ts
│ │ │ │ │ ├── snippetSession.test.ts
│ │ │ │ │ └── snippetVariables.test.ts
│ │ │ │ ├── stickyScroll/
│ │ │ │ │ ├── browser/
│ │ │ │ │ │ ├── stickyScroll.css
│ │ │ │ │ │ ├── stickyScrollActions.ts
│ │ │ │ │ │ ├── stickyScrollContribution.ts
│ │ │ │ │ │ ├── stickyScrollController.ts
│ │ │ │ │ │ ├── stickyScrollElement.ts
│ │ │ │ │ │ ├── stickyScrollModelProvider.ts
│ │ │ │ │ │ ├── stickyScrollProvider.ts
│ │ │ │ │ │ └── stickyScrollWidget.ts
│ │ │ │ │ └── test/
│ │ │ │ │ └── browser/
│ │ │ │ │ └── stickyScroll.test.ts
│ │ │ │ ├── suggest/
│ │ │ │ │ ├── browser/
│ │ │ │ │ │ ├── completionModel.ts
│ │ │ │ │ │ ├── media/
│ │ │ │ │ │ │ └── suggest.css
│ │ │ │ │ │ ├── suggest.ts
│ │ │ │ │ │ ├── suggestAlternatives.ts
│ │ │ │ │ │ ├── suggestCommitCharacters.ts
│ │ │ │ │ │ ├── suggestController.ts
│ │ │ │ │ │ ├── suggestInlineCompletions.ts
│ │ │ │ │ │ ├── suggestMemory.ts
│ │ │ │ │ │ ├── suggestModel.ts
│ │ │ │ │ │ ├── suggestOvertypingCapturer.ts
│ │ │ │ │ │ ├── suggestWidget.ts
│ │ │ │ │ │ ├── suggestWidgetDetails.ts
│ │ │ │ │ │ ├── suggestWidgetRenderer.ts
│ │ │ │ │ │ ├── suggestWidgetStatus.ts
│ │ │ │ │ │ ├── wordContextKey.ts
│ │ │ │ │ │ └── wordDistance.ts
│ │ │ │ │ └── test/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── completionModel.test.ts
│ │ │ │ │ ├── suggest.test.ts
│ │ │ │ │ ├── suggestController.test.ts
│ │ │ │ │ ├── suggestInlineCompletions.test.ts
│ │ │ │ │ ├── suggestMemory.test.ts
│ │ │ │ │ ├── suggestModel.test.ts
│ │ │ │ │ └── wordDistance.test.ts
│ │ │ │ ├── symbolIcons/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── symbolIcons.css
│ │ │ │ │ └── symbolIcons.ts
│ │ │ │ ├── toggleTabFocusMode/
│ │ │ │ │ └── browser/
│ │ │ │ │ └── toggleTabFocusMode.ts
│ │ │ │ ├── tokenization/
│ │ │ │ │ └── browser/
│ │ │ │ │ └── tokenization.ts
│ │ │ │ ├── unicodeHighlighter/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── bannerController.css
│ │ │ │ │ ├── bannerController.ts
│ │ │ │ │ ├── unicodeHighlighter.css
│ │ │ │ │ └── unicodeHighlighter.ts
│ │ │ │ ├── unusualLineTerminators/
│ │ │ │ │ └── browser/
│ │ │ │ │ └── unusualLineTerminators.ts
│ │ │ │ ├── wordHighlighter/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── highlightDecorations.css
│ │ │ │ │ ├── highlightDecorations.ts
│ │ │ │ │ ├── textualHighlightProvider.ts
│ │ │ │ │ └── wordHighlighter.ts
│ │ │ │ ├── wordOperations/
│ │ │ │ │ ├── browser/
│ │ │ │ │ │ └── wordOperations.ts
│ │ │ │ │ └── test/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── wordOperations.test.ts
│ │ │ │ │ └── wordTestUtils.ts
│ │ │ │ ├── wordPartOperations/
│ │ │ │ │ ├── browser/
│ │ │ │ │ │ └── wordPartOperations.ts
│ │ │ │ │ └── test/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── utils.ts
│ │ │ │ │ └── wordPartOperations.test.ts
│ │ │ │ └── zoneWidget/
│ │ │ │ └── browser/
│ │ │ │ ├── zoneWidget.css
│ │ │ │ └── zoneWidget.ts
│ │ │ ├── editor.all.ts
│ │ │ ├── editor.api.ts
│ │ │ ├── editor.main.ts
│ │ │ ├── editor.worker.start.ts
│ │ │ ├── standalone/
│ │ │ │ ├── browser/
│ │ │ │ │ ├── colorizer.ts
│ │ │ │ │ ├── iPadShowKeyboard/
│ │ │ │ │ │ ├── iPadShowKeyboard.css
│ │ │ │ │ │ └── iPadShowKeyboard.ts
│ │ │ │ │ ├── inspectTokens/
│ │ │ │ │ │ ├── inspectTokens.css
│ │ │ │ │ │ └── inspectTokens.ts
│ │ │ │ │ ├── quickAccess/
│ │ │ │ │ │ ├── standaloneCommandsQuickAccess.ts
│ │ │ │ │ │ ├── standaloneGotoLineQuickAccess.ts
│ │ │ │ │ │ ├── standaloneGotoSymbolQuickAccess.ts
│ │ │ │ │ │ └── standaloneHelpQuickAccess.ts
│ │ │ │ │ ├── quickInput/
│ │ │ │ │ │ ├── standaloneQuickInput.css
│ │ │ │ │ │ └── standaloneQuickInputService.ts
│ │ │ │ │ ├── referenceSearch/
│ │ │ │ │ │ └── standaloneReferenceSearch.ts
│ │ │ │ │ ├── standalone-tokens.css
│ │ │ │ │ ├── standaloneCodeEditor.ts
│ │ │ │ │ ├── standaloneCodeEditorService.ts
│ │ │ │ │ ├── standaloneEditor.ts
│ │ │ │ │ ├── standaloneLanguages.ts
│ │ │ │ │ ├── standaloneLayoutService.ts
│ │ │ │ │ ├── standaloneServices.ts
│ │ │ │ │ ├── standaloneThemeService.ts
│ │ │ │ │ ├── standaloneTreeSitterService.ts
│ │ │ │ │ ├── standaloneWebWorker.ts
│ │ │ │ │ └── toggleHighContrast/
│ │ │ │ │ └── toggleHighContrast.ts
│ │ │ │ ├── common/
│ │ │ │ │ ├── monarch/
│ │ │ │ │ │ ├── monarchCommon.ts
│ │ │ │ │ │ ├── monarchCompile.ts
│ │ │ │ │ │ ├── monarchLexer.ts
│ │ │ │ │ │ └── monarchTypes.ts
│ │ │ │ │ ├── standaloneTheme.ts
│ │ │ │ │ └── themes.ts
│ │ │ │ └── test/
│ │ │ │ └── browser/
│ │ │ │ ├── monarch.test.ts
│ │ │ │ ├── standaloneLanguages.test.ts
│ │ │ │ └── standaloneServices.test.ts
│ │ │ └── test/
│ │ │ ├── browser/
│ │ │ │ ├── commands/
│ │ │ │ │ ├── shiftCommand.test.ts
│ │ │ │ │ ├── sideEditing.test.ts
│ │ │ │ │ └── trimTrailingWhitespaceCommand.test.ts
│ │ │ │ ├── config/
│ │ │ │ │ ├── editorConfiguration.test.ts
│ │ │ │ │ ├── editorLayoutProvider.test.ts
│ │ │ │ │ └── testConfiguration.ts
│ │ │ │ ├── controller/
│ │ │ │ │ ├── cursor.integrationTest.ts
│ │ │ │ │ ├── cursor.test.ts
│ │ │ │ │ ├── cursorMoveCommand.test.ts
│ │ │ │ │ ├── imeRecordedTypes.ts
│ │ │ │ │ ├── imeRecorder.html
│ │ │ │ │ ├── imeRecorder.ts
│ │ │ │ │ ├── imeTester.html
│ │ │ │ │ ├── imeTester.ts
│ │ │ │ │ ├── textAreaInput.test.ts
│ │ │ │ │ └── textAreaState.test.ts
│ │ │ │ ├── diff/
│ │ │ │ │ └── testDiffProviderFactoryService.ts
│ │ │ │ ├── editorTestServices.ts
│ │ │ │ ├── gpu/
│ │ │ │ │ ├── atlas/
│ │ │ │ │ │ ├── testUtil.ts
│ │ │ │ │ │ ├── textureAtlas.test.ts
│ │ │ │ │ │ └── textureAtlasAllocator.test.ts
│ │ │ │ │ ├── bufferDirtyTracker.test.ts
│ │ │ │ │ ├── decorationCssRulerExtractor.test.ts
│ │ │ │ │ └── objectCollectionBuffer.test.ts
│ │ │ │ ├── services/
│ │ │ │ │ ├── decorationRenderOptions.test.ts
│ │ │ │ │ ├── openerService.test.ts
│ │ │ │ │ └── treeSitterParserService.test.ts
│ │ │ │ ├── testCodeEditor.ts
│ │ │ │ ├── testCommand.ts
│ │ │ │ ├── view/
│ │ │ │ │ ├── minimapCharRenderer.test.ts
│ │ │ │ │ └── viewLayer.test.ts
│ │ │ │ ├── viewModel/
│ │ │ │ │ ├── modelLineProjection.test.ts
│ │ │ │ │ ├── testViewModel.ts
│ │ │ │ │ ├── viewModelDecorations.test.ts
│ │ │ │ │ └── viewModelImpl.test.ts
│ │ │ │ └── widget/
│ │ │ │ ├── codeEditorWidget.test.ts
│ │ │ │ ├── diffEditorWidget.test.ts
│ │ │ │ └── observableCodeEditor.test.ts
│ │ │ ├── common/
│ │ │ │ ├── codecs/
│ │ │ │ │ ├── linesDecoder.test.ts
│ │ │ │ │ ├── markdownDecoder.test.ts
│ │ │ │ │ └── simpleDecoder.test.ts
│ │ │ │ ├── controller/
│ │ │ │ │ └── cursorAtomicMoveOperations.test.ts
│ │ │ │ ├── core/
│ │ │ │ │ ├── characterClassifier.test.ts
│ │ │ │ │ ├── cursorColumns.test.ts
│ │ │ │ │ ├── lineRange.test.ts
│ │ │ │ │ ├── lineTokens.test.ts
│ │ │ │ │ ├── positionOffsetTransformer.test.ts
│ │ │ │ │ ├── random.ts
│ │ │ │ │ ├── range.test.ts
│ │ │ │ │ ├── stringBuilder.test.ts
│ │ │ │ │ ├── testLineToken.ts
│ │ │ │ │ └── textEdit.test.ts
│ │ │ │ ├── diff/
│ │ │ │ │ └── diffComputer.test.ts
│ │ │ │ ├── model/
│ │ │ │ │ ├── bracketPairColorizer/
│ │ │ │ │ │ ├── beforeEditPositionMapper.test.ts
│ │ │ │ │ │ ├── brackets.test.ts
│ │ │ │ │ │ ├── combineTextEditInfos.test.ts
│ │ │ │ │ │ ├── concat23Trees.test.ts
│ │ │ │ │ │ ├── getBracketPairsInRange.test.ts
│ │ │ │ │ │ ├── length.test.ts
│ │ │ │ │ │ ├── smallImmutableSet.test.ts
│ │ │ │ │ │ └── tokenizer.test.ts
│ │ │ │ │ ├── editStack.test.ts
│ │ │ │ │ ├── editableTextModel.test.ts
│ │ │ │ │ ├── editableTextModelAuto.test.ts
│ │ │ │ │ ├── editableTextModelTestUtils.ts
│ │ │ │ │ ├── intervalTree.test.ts
│ │ │ │ │ ├── linesTextBuffer/
│ │ │ │ │ │ ├── linesTextBuffer.test.ts
│ │ │ │ │ │ └── linesTextBufferBuilder.test.ts
│ │ │ │ │ ├── model.line.test.ts
│ │ │ │ │ ├── model.modes.test.ts
│ │ │ │ │ ├── model.test.ts
│ │ │ │ │ ├── modelDecorations.test.ts
│ │ │ │ │ ├── modelEditOperation.test.ts
│ │ │ │ │ ├── modelInjectedText.test.ts
│ │ │ │ │ ├── pieceTreeTextBuffer/
│ │ │ │ │ │ └── pieceTreeTextBuffer.test.ts
│ │ │ │ │ ├── textChange.test.ts
│ │ │ │ │ ├── textModel.test.ts
│ │ │ │ │ ├── textModelSearch.test.ts
│ │ │ │ │ ├── textModelTokens.test.ts
│ │ │ │ │ ├── textModelWithTokens.test.ts
│ │ │ │ │ ├── tokenStore.test.ts
│ │ │ │ │ └── tokensStore.test.ts
│ │ │ │ ├── modes/
│ │ │ │ │ ├── languageConfiguration.test.ts
│ │ │ │ │ ├── languageSelector.test.ts
│ │ │ │ │ ├── linkComputer.test.ts
│ │ │ │ │ ├── supports/
│ │ │ │ │ │ ├── autoClosingPairsRules.ts
│ │ │ │ │ │ ├── bracketRules.ts
│ │ │ │ │ │ ├── characterPair.test.ts
│ │ │ │ │ │ ├── electricCharacter.test.ts
│ │ │ │ │ │ ├── indentationRules.ts
│ │ │ │ │ │ ├── onEnter.test.ts
│ │ │ │ │ │ ├── onEnterRules.ts
│ │ │ │ │ │ ├── richEditBrackets.test.ts
│ │ │ │ │ │ └── tokenization.test.ts
│ │ │ │ │ ├── testLanguageConfigurationService.ts
│ │ │ │ │ └── textToHtmlTokenizer.test.ts
│ │ │ │ ├── modesTestUtils.ts
│ │ │ │ ├── services/
│ │ │ │ │ ├── editorWebWorker.test.ts
│ │ │ │ │ ├── findSectionHeaders.test.ts
│ │ │ │ │ ├── languageService.test.ts
│ │ │ │ │ ├── languagesAssociations.test.ts
│ │ │ │ │ ├── languagesRegistry.test.ts
│ │ │ │ │ ├── modelService.test.ts
│ │ │ │ │ ├── semanticTokensDto.test.ts
│ │ │ │ │ ├── semanticTokensProviderStyling.test.ts
│ │ │ │ │ ├── testEditorWorkerService.ts
│ │ │ │ │ ├── testTextResourcePropertiesService.ts
│ │ │ │ │ ├── testTreeSitterService.ts
│ │ │ │ │ ├── textResourceConfigurationService.test.ts
│ │ │ │ │ └── unicodeTextModelHighlighter.test.ts
│ │ │ │ ├── testTextModel.ts
│ │ │ │ ├── utils/
│ │ │ │ │ └── testDecoder.ts
│ │ │ │ ├── view/
│ │ │ │ │ └── overviewZoneManager.test.ts
│ │ │ │ ├── viewLayout/
│ │ │ │ │ ├── lineDecorations.test.ts
│ │ │ │ │ ├── linesLayout.test.ts
│ │ │ │ │ └── viewLineRenderer.test.ts
│ │ │ │ └── viewModel/
│ │ │ │ ├── glyphLanesModel.test.ts
│ │ │ │ ├── lineBreakData.test.ts
│ │ │ │ ├── monospaceLineBreaksComputer.test.ts
│ │ │ │ └── prefixSumComputer.test.ts
│ │ │ └── node/
│ │ │ └── diffing/
│ │ │ ├── README.md
│ │ │ ├── defaultLinesDiffComputer.test.ts
│ │ │ ├── fixtures/
│ │ │ │ ├── bracket-aligning/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── class-replacement/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ ├── advanced.human.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── deletion/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── difficult-move/
│ │ │ │ │ ├── 1.js
│ │ │ │ │ ├── 2.js
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── equals/
│ │ │ │ │ ├── 1.txt
│ │ │ │ │ ├── 2.txt
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── false-positive-move/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── fuzzy-matching/
│ │ │ │ │ ├── 1.txt
│ │ │ │ │ ├── 2.txt
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── import-shifting/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── indentation/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── intra-block-align/
│ │ │ │ │ ├── 1.txt
│ │ │ │ │ ├── 2.txt
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── invalid-diff-bug/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── invalid-diff-trimws/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── invalid-ranges/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── issue-131091/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── issue-185779/
│ │ │ │ │ ├── 1.txt
│ │ │ │ │ ├── 2.txt
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── issue-201713/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── issue-202147-trimws/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── issue-204948/
│ │ │ │ │ ├── 1.txt
│ │ │ │ │ ├── 2.txt
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── issue-214049/
│ │ │ │ │ ├── 1.txt
│ │ │ │ │ ├── 2.txt
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── json-brackets/
│ │ │ │ │ ├── 1.json
│ │ │ │ │ ├── 2.json
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── just-whitespace/
│ │ │ │ │ ├── 1.js
│ │ │ │ │ ├── 2.js
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── method-splitting/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── minimal-diff-character/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── move-1/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── noise-1/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── noise-2/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── noisy-move1/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── penalize-fragmentation/
│ │ │ │ │ ├── 1.txt
│ │ │ │ │ ├── 2.txt
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ ├── advanced.human.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── random-match-1/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── random-match-2/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── random-match-3/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── shifting-parameters/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── shifting-twice/
│ │ │ │ │ ├── 1.txt
│ │ │ │ │ ├── 2.txt
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── sorted-offsets/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── subword/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── trivial/
│ │ │ │ │ ├── 1.txt
│ │ │ │ │ ├── 2.txt
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── ts-advanced-bug/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── ts-class/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ ├── advanced.human.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── ts-comments/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── ts-confusing/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── ts-confusing-2/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── ts-diff-word-split/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── ts-example1/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── ts-example2-ts/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── ts-fragmented-eager-diffing/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── ts-fragmented-eager-diffing2/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── ts-fragmented-eager-diffing3/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── ts-import-ws-affinity/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── ts-insert/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── ts-methods/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── ts-shift-to-ws/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── ts-shifting/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── ts-strings/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── ts-too-much-minimization/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── ts-unfragmented-diffing/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── ts-unit-test/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ ├── word-shared-letters/
│ │ │ │ │ ├── 1.tst
│ │ │ │ │ ├── 2.tst
│ │ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ │ └── legacy.expected.diff.json
│ │ │ │ └── ws-alignment/
│ │ │ │ ├── 1.tsx
│ │ │ │ ├── 2.tsx
│ │ │ │ ├── advanced.expected.diff.json
│ │ │ │ └── legacy.expected.diff.json
│ │ │ └── fixtures.test.ts
│ │ ├── loader.js
│ │ ├── monaco.d.ts
│ │ ├── nls.messages.ts
│ │ ├── nls.ts
│ │ ├── platform/
│ │ │ ├── accessibility/
│ │ │ │ ├── browser/
│ │ │ │ │ ├── accessibilityService.ts
│ │ │ │ │ ├── accessibleView.ts
│ │ │ │ │ └── accessibleViewRegistry.ts
│ │ │ │ ├── common/
│ │ │ │ │ └── accessibility.ts
│ │ │ │ └── test/
│ │ │ │ └── common/
│ │ │ │ └── testAccessibilityService.ts
│ │ │ ├── accessibilitySignal/
│ │ │ │ └── browser/
│ │ │ │ ├── accessibilitySignalService.ts
│ │ │ │ └── progressAccessibilitySignalScheduler.ts
│ │ │ ├── action/
│ │ │ │ └── common/
│ │ │ │ ├── action.ts
│ │ │ │ └── actionCommonCategories.ts
│ │ │ ├── actionWidget/
│ │ │ │ ├── browser/
│ │ │ │ │ ├── actionList.ts
│ │ │ │ │ ├── actionWidget.css
│ │ │ │ │ └── actionWidget.ts
│ │ │ │ └── common/
│ │ │ │ └── actionWidget.ts
│ │ │ ├── actions/
│ │ │ │ ├── browser/
│ │ │ │ │ ├── actionViewItemService.ts
│ │ │ │ │ ├── buttonbar.ts
│ │ │ │ │ ├── dropdownActionViewItemWithKeybinding.ts
│ │ │ │ │ ├── dropdownWithPrimaryActionViewItem.ts
│ │ │ │ │ ├── floatingMenu.ts
│ │ │ │ │ ├── menuEntryActionViewItem.css
│ │ │ │ │ ├── menuEntryActionViewItem.ts
│ │ │ │ │ └── toolbar.ts
│ │ │ │ ├── common/
│ │ │ │ │ ├── actions.contribution.ts
│ │ │ │ │ ├── actions.ts
│ │ │ │ │ ├── menuResetAction.ts
│ │ │ │ │ └── menuService.ts
│ │ │ │ └── test/
│ │ │ │ └── common/
│ │ │ │ └── menuService.test.ts
│ │ │ ├── assignment/
│ │ │ │ └── common/
│ │ │ │ ├── assignment.ts
│ │ │ │ └── assignmentService.ts
│ │ │ ├── auxiliaryWindow/
│ │ │ │ └── electron-main/
│ │ │ │ ├── auxiliaryWindow.ts
│ │ │ │ ├── auxiliaryWindows.ts
│ │ │ │ └── auxiliaryWindowsMainService.ts
│ │ │ ├── backup/
│ │ │ │ ├── common/
│ │ │ │ │ └── backup.ts
│ │ │ │ ├── electron-main/
│ │ │ │ │ ├── backup.ts
│ │ │ │ │ └── backupMainService.ts
│ │ │ │ ├── node/
│ │ │ │ │ └── backup.ts
│ │ │ │ └── test/
│ │ │ │ └── electron-main/
│ │ │ │ └── backupMainService.test.ts
│ │ │ ├── checksum/
│ │ │ │ ├── common/
│ │ │ │ │ └── checksumService.ts
│ │ │ │ ├── node/
│ │ │ │ │ └── checksumService.ts
│ │ │ │ └── test/
│ │ │ │ └── node/
│ │ │ │ ├── checksumService.test.ts
│ │ │ │ └── fixtures/
│ │ │ │ └── lorem.txt
│ │ │ ├── clipboard/
│ │ │ │ ├── browser/
│ │ │ │ │ └── clipboardService.ts
│ │ │ │ ├── common/
│ │ │ │ │ └── clipboardService.ts
│ │ │ │ └── test/
│ │ │ │ └── common/
│ │ │ │ └── testClipboardService.ts
│ │ │ ├── commands/
│ │ │ │ ├── common/
│ │ │ │ │ └── commands.ts
│ │ │ │ └── test/
│ │ │ │ └── common/
│ │ │ │ ├── commands.test.ts
│ │ │ │ └── nullCommandService.ts
│ │ │ ├── configuration/
│ │ │ │ ├── common/
│ │ │ │ │ ├── configuration.ts
│ │ │ │ │ ├── configurationModels.ts
│ │ │ │ │ ├── configurationRegistry.ts
│ │ │ │ │ ├── configurationService.ts
│ │ │ │ │ └── configurations.ts
│ │ │ │ └── test/
│ │ │ │ └── common/
│ │ │ │ ├── configuration.test.ts
│ │ │ │ ├── configurationModels.test.ts
│ │ │ │ ├── configurationRegistry.test.ts
│ │ │ │ ├── configurationService.test.ts
│ │ │ │ ├── configurations.test.ts
│ │ │ │ ├── policyConfiguration.test.ts
│ │ │ │ └── testConfigurationService.ts
│ │ │ ├── contextkey/
│ │ │ │ ├── browser/
│ │ │ │ │ └── contextKeyService.ts
│ │ │ │ ├── common/
│ │ │ │ │ ├── contextkey.ts
│ │ │ │ │ ├── contextkeys.ts
│ │ │ │ │ └── scanner.ts
│ │ │ │ └── test/
│ │ │ │ ├── browser/
│ │ │ │ │ └── contextkey.test.ts
│ │ │ │ └── common/
│ │ │ │ ├── contextkey.test.ts
│ │ │ │ ├── parser.test.ts
│ │ │ │ └── scanner.test.ts
│ │ │ ├── contextview/
│ │ │ │ └── browser/
│ │ │ │ ├── contextMenuHandler.ts
│ │ │ │ ├── contextMenuService.ts
│ │ │ │ ├── contextView.ts
│ │ │ │ └── contextViewService.ts
│ │ │ ├── cssDev/
│ │ │ │ └── node/
│ │ │ │ └── cssDevService.ts
│ │ │ ├── debug/
│ │ │ │ ├── common/
│ │ │ │ │ ├── extensionHostDebug.ts
│ │ │ │ │ └── extensionHostDebugIpc.ts
│ │ │ │ └── electron-main/
│ │ │ │ └── extensionHostDebugIpc.ts
│ │ │ ├── diagnostics/
│ │ │ │ ├── common/
│ │ │ │ │ └── diagnostics.ts
│ │ │ │ ├── electron-main/
│ │ │ │ │ └── diagnosticsMainService.ts
│ │ │ │ ├── electron-sandbox/
│ │ │ │ │ └── diagnosticsService.ts
│ │ │ │ └── node/
│ │ │ │ └── diagnosticsService.ts
│ │ │ ├── dialogs/
│ │ │ │ ├── browser/
│ │ │ │ │ └── dialog.ts
│ │ │ │ ├── common/
│ │ │ │ │ └── dialogs.ts
│ │ │ │ ├── electron-main/
│ │ │ │ │ └── dialogMainService.ts
│ │ │ │ └── test/
│ │ │ │ └── common/
│ │ │ │ ├── dialog.test.ts
│ │ │ │ └── testDialogService.ts
│ │ │ ├── dnd/
│ │ │ │ └── browser/
│ │ │ │ └── dnd.ts
│ │ │ ├── download/
│ │ │ │ └── common/
│ │ │ │ ├── download.ts
│ │ │ │ ├── downloadIpc.ts
│ │ │ │ └── downloadService.ts
│ │ │ ├── editor/
│ │ │ │ └── common/
│ │ │ │ └── editor.ts
│ │ │ ├── encryption/
│ │ │ │ ├── common/
│ │ │ │ │ └── encryptionService.ts
│ │ │ │ └── electron-main/
│ │ │ │ └── encryptionMainService.ts
│ │ │ ├── environment/
│ │ │ │ ├── common/
│ │ │ │ │ ├── argv.ts
│ │ │ │ │ ├── environment.ts
│ │ │ │ │ └── environmentService.ts
│ │ │ │ ├── electron-main/
│ │ │ │ │ └── environmentMainService.ts
│ │ │ │ ├── node/
│ │ │ │ │ ├── argv.ts
│ │ │ │ │ ├── argvHelper.ts
│ │ │ │ │ ├── environmentService.ts
│ │ │ │ │ ├── stdin.ts
│ │ │ │ │ ├── userDataPath.ts
│ │ │ │ │ └── wait.ts
│ │ │ │ └── test/
│ │ │ │ ├── electron-main/
│ │ │ │ │ └── environmentMainService.test.ts
│ │ │ │ └── node/
│ │ │ │ ├── argv.test.ts
│ │ │ │ ├── environmentService.test.ts
│ │ │ │ ├── nativeModules.integrationTest.ts
│ │ │ │ └── userDataPath.test.ts
│ │ │ ├── extensionManagement/
│ │ │ │ ├── common/
│ │ │ │ │ ├── abstractExtensionManagementService.ts
│ │ │ │ │ ├── allowedExtensionsService.ts
│ │ │ │ │ ├── configRemotes.ts
│ │ │ │ │ ├── extensionEnablementService.ts
│ │ │ │ │ ├── extensionGalleryManifest.ts
│ │ │ │ │ ├── extensionGalleryManifestService.ts
│ │ │ │ │ ├── extensionGalleryManifestServiceIpc.ts
│ │ │ │ │ ├── extensionGalleryService.ts
│ │ │ │ │ ├── extensionManagement.ts
│ │ │ │ │ ├── extensionManagementCLI.ts
│ │ │ │ │ ├── extensionManagementIpc.ts
│ │ │ │ │ ├── extensionManagementUtil.ts
│ │ │ │ │ ├── extensionNls.ts
│ │ │ │ │ ├── extensionStorage.ts
│ │ │ │ │ ├── extensionTipsService.ts
│ │ │ │ │ ├── extensionsProfileScannerService.ts
│ │ │ │ │ ├── extensionsScannerService.ts
│ │ │ │ │ ├── implicitActivationEvents.ts
│ │ │ │ │ └── unsupportedExtensionsMigration.ts
│ │ │ │ ├── electron-sandbox/
│ │ │ │ │ └── extensionsProfileScannerService.ts
│ │ │ │ ├── node/
│ │ │ │ │ ├── extensionDownloader.ts
│ │ │ │ │ ├── extensionLifecycle.ts
│ │ │ │ │ ├── extensionManagementService.ts
│ │ │ │ │ ├── extensionManagementUtil.ts
│ │ │ │ │ ├── extensionSignatureVerificationService.ts
│ │ │ │ │ ├── extensionTipsService.ts
│ │ │ │ │ ├── extensionsManifestCache.ts
│ │ │ │ │ ├── extensionsProfileScannerService.ts
│ │ │ │ │ ├── extensionsScannerService.ts
│ │ │ │ │ └── extensionsWatcher.ts
│ │ │ │ └── test/
│ │ │ │ ├── common/
================================================
FILE CONTENTS
================================================
================================================
FILE: .config/1espt/PipelineAutobaseliningConfig.yml
================================================
## DO NOT MODIFY THIS FILE MANUALLY. This is part of auto-baselining from 1ES Pipeline Templates. Go to [https://aka.ms/1espt-autobaselining] for more details.
pipelines:
111:
retail:
source:
credscan:
lastModifiedDate: 2024-09-10
eslint:
lastModifiedDate: 2024-09-10
psscriptanalyzer:
lastModifiedDate: 2024-09-10
armory:
lastModifiedDate: 2024-09-10
binary:
credscan:
lastModifiedDate: 2025-02-04
binskim:
lastModifiedDate: 2025-02-04
spotbugs:
lastModifiedDate: 2025-02-04
================================================
FILE: .config/guardian/.gdnbaselines
================================================
{
"properties": {
"helpUri": "https://eng.ms/docs/microsoft-security/security/azure-security/cloudai-security-fundamentals-engineering/security-integration/guardian-wiki/microsoft-guardian/general/baselines"
},
"version": "1.0.0",
"baselines": {
"default": {
"name": "default",
"createdDate": "2025-01-28 06:29:05Z",
"lastUpdatedDate": "2025-01-28 06:29:05Z"
}
},
"results": {
"ea3b2bf4f5b3d0bd8a6ad35cc61e49f2a1596660fd66d17d740e4806e7ed7dcc": {
"signature": "ea3b2bf4f5b3d0bd8a6ad35cc61e49f2a1596660fd66d17d740e4806e7ed7dcc",
"alternativeSignatures": [
"ff528c0b5a010ae7b5e9178b004a8b816a429a28ba98ce8336466b490a09dcef"
],
"target": ".build/win32-arm64/system-setup/VSCodeSetup-arm64-1.97.0-insider.exe",
"memberOf": [
"default"
],
"tool": "binskim",
"ruleId": "BA2009",
"createdDate": "2025-01-30 19:19:49Z",
"expirationDate": "2025-07-19 21:12:48Z",
"justification": "This error is baselined with an expiration date of 180 days from 2025-01-30 21:12:48Z"
},
"12babbc85192ed1c8d927693da788537c1eef199bbecbe226f940a2d0e97637c": {
"signature": "12babbc85192ed1c8d927693da788537c1eef199bbecbe226f940a2d0e97637c",
"alternativeSignatures": [
"35b0519e201e56fb87fc6fb085e6fb1df5b89715142bb9086a5b2006e0fd4ced"
],
"target": ".build/win32-arm64/system-setup/VSCodeSetup-arm64-1.97.0-insider.exe",
"memberOf": [
"default"
],
"tool": "binskim",
"ruleId": "BA2018",
"createdDate": "2025-01-30 19:19:49Z",
"expirationDate": "2025-07-19 21:12:48Z",
"justification": "This error is baselined with an expiration date of 180 days from 2025-01-30 21:12:48Z"
},
"49163bd1dc9d965d3baced1694dc8c43305b8bf96e884f478d8e4bd124454ba0": {
"signature": "49163bd1dc9d965d3baced1694dc8c43305b8bf96e884f478d8e4bd124454ba0",
"alternativeSignatures": [
"aa80bcf44aa8ddd20fb9802e9032c1257048b973896a944ded70bb195f060b2a"
],
"target": ".build/win32-arm64/user-setup/VSCodeUserSetup-arm64-1.97.0-insider.exe",
"memberOf": [
"default"
],
"tool": "binskim",
"ruleId": "BA2009",
"createdDate": "2025-01-30 19:21:17Z",
"expirationDate": "2025-07-19 21:12:48Z",
"justification": "This error is baselined with an expiration date of 180 days from 2025-01-30 21:12:48Z"
},
"c405af02e021c3a473d4e45ec4daa658db1527ea7430c6be968d182e7b50fbd1": {
"signature": "c405af02e021c3a473d4e45ec4daa658db1527ea7430c6be968d182e7b50fbd1",
"alternativeSignatures": [
"619d2a1a77f55b4181493b8cfdf09be5261e539115752af2e4938f5ac04af132"
],
"target": ".build/win32-arm64/user-setup/VSCodeUserSetup-arm64-1.97.0-insider.exe",
"memberOf": [
"default"
],
"tool": "binskim",
"ruleId": "BA2018",
"createdDate": "2025-01-30 19:21:17Z",
"expirationDate": "2025-07-19 21:12:48Z",
"justification": "This error is baselined with an expiration date of 180 days from 2025-01-30 21:12:48Z"
},
"71b8515b2eb51cfd5eace11cedb15189d51ce9e479095a5938334416088cbc03": {
"signature": "71b8515b2eb51cfd5eace11cedb15189d51ce9e479095a5938334416088cbc03",
"alternativeSignatures": [
"b34279fc5fec828b8dcd9ca873804e85d7d9cd78554ec109d2dd493351a7a244"
],
"target": ".build/win32-x64/system-setup/VSCodeSetup-x64-1.97.0-insider.exe",
"memberOf": [
"default"
],
"tool": "binskim",
"ruleId": "BA2009",
"createdDate": "2025-01-30 19:51:51Z",
"expirationDate": "2025-07-19 21:12:48Z",
"justification": "This error is baselined with an expiration date of 180 days from 2025-01-30 21:12:48Z"
},
"9238de77a5320039def14694d1b6f501cc2288f13c9c688d2e0501fc5a56ee61": {
"signature": "9238de77a5320039def14694d1b6f501cc2288f13c9c688d2e0501fc5a56ee61",
"alternativeSignatures": [
"1d17616a549e9f36d814c4e802d651b1af453ce0a23d4478eef39be81adcc16b"
],
"target": ".build/win32-x64/system-setup/VSCodeSetup-x64-1.97.0-insider.exe",
"memberOf": [
"default"
],
"tool": "binskim",
"ruleId": "BA2018",
"createdDate": "2025-01-30 19:51:51Z",
"expirationDate": "2025-07-19 21:12:48Z",
"justification": "This error is baselined with an expiration date of 180 days from 2025-01-30 21:12:48Z"
},
"bad8b698b48c1da9ece953903581c66bf98bc829ae1a6adcd3b5c2056a6fcd01": {
"signature": "bad8b698b48c1da9ece953903581c66bf98bc829ae1a6adcd3b5c2056a6fcd01",
"alternativeSignatures": [
"057376d31b97e8ce3ecf6a180a553b932d7e5be6e2b07a08027d5dfabe35e82c"
],
"target": ".build/win32-x64/user-setup/VSCodeUserSetup-x64-1.97.0-insider.exe",
"memberOf": [
"default"
],
"tool": "binskim",
"ruleId": "BA2009",
"createdDate": "2025-01-30 19:53:13Z",
"expirationDate": "2025-07-19 21:12:48Z",
"justification": "This error is baselined with an expiration date of 180 days from 2025-01-30 21:12:48Z"
},
"cc7c248b0fd4c105e9a393ae232bf0d314ec50e65357a5e7e7d68f6f10c77077": {
"signature": "cc7c248b0fd4c105e9a393ae232bf0d314ec50e65357a5e7e7d68f6f10c77077",
"alternativeSignatures": [
"f3867098aff3368682df9926e85a35ec05cf905f27d0c157430021c3169f899d"
],
"target": ".build/win32-x64/user-setup/VSCodeUserSetup-x64-1.97.0-insider.exe",
"memberOf": [
"default"
],
"tool": "binskim",
"ruleId": "BA2018",
"createdDate": "2025-01-30 19:53:13Z",
"expirationDate": "2025-07-19 21:12:48Z",
"justification": "This error is baselined with an expiration date of 180 days from 2025-01-30 21:12:48Z"
},
"8c53250a171412b84dedcbb22cdab9ec365d9b52d74b09c070097fff45372de0": {
"signature": "8c53250a171412b84dedcbb22cdab9ec365d9b52d74b09c070097fff45372de0",
"alternativeSignatures": [
"314267784b0ea867006e00b809a93498fae3264e42d1a3a7745ab13180a5b6ef"
],
"target": ".build/win32-arm64/system-setup/VSCodeSetup-arm64-1.98.0-insider.exe",
"memberOf": [
"default"
],
"tool": "binskim",
"ruleId": "BA2009",
"createdDate": "2025-02-04 06:16:33Z",
"expirationDate": "2025-07-24 07:25:17Z",
"justification": "This error is baselined with an expiration date of 180 days from 2025-02-04 07:25:17Z"
},
"a6a58d971da858f4af219672cef73ffd0aacc47f1e2c12b8b44a428e1330d3de": {
"signature": "a6a58d971da858f4af219672cef73ffd0aacc47f1e2c12b8b44a428e1330d3de",
"alternativeSignatures": [
"4e40f2f1683f0bf2245f35d0ebbcf2f446274d84b1db09d8e76ddfdcad5d4479"
],
"target": ".build/win32-arm64/system-setup/VSCodeSetup-arm64-1.98.0-insider.exe",
"memberOf": [
"default"
],
"tool": "binskim",
"ruleId": "BA2018",
"createdDate": "2025-02-04 06:16:33Z",
"expirationDate": "2025-07-24 07:25:17Z",
"justification": "This error is baselined with an expiration date of 180 days from 2025-02-04 07:25:17Z"
},
"90e0f060e01e4a55620f609ac3241b62e8f54a059e9f4d292e93a4305fd3c39e": {
"signature": "90e0f060e01e4a55620f609ac3241b62e8f54a059e9f4d292e93a4305fd3c39e",
"alternativeSignatures": [
"377fe43ff8404d07f4a6ca763175004f360397ded6cf5d55b655646ada90e39c"
],
"target": ".build/win32-arm64/user-setup/VSCodeUserSetup-arm64-1.98.0-insider.exe",
"memberOf": [
"default"
],
"tool": "binskim",
"ruleId": "BA2009",
"createdDate": "2025-02-04 06:17:54Z",
"expirationDate": "2025-07-24 07:25:17Z",
"justification": "This error is baselined with an expiration date of 180 days from 2025-02-04 07:25:17Z"
},
"f36c3dc19566098a923877d16d6ebfcbd971f8fcd8210afb8f5558fb5ba1f203": {
"signature": "f36c3dc19566098a923877d16d6ebfcbd971f8fcd8210afb8f5558fb5ba1f203",
"alternativeSignatures": [
"1af1f475c1617701e3d7a8fd465916bcc60c3125b8807af5d47d49137d9d468c"
],
"target": ".build/win32-arm64/user-setup/VSCodeUserSetup-arm64-1.98.0-insider.exe",
"memberOf": [
"default"
],
"tool": "binskim",
"ruleId": "BA2018",
"createdDate": "2025-02-04 06:17:54Z",
"expirationDate": "2025-07-24 07:25:17Z",
"justification": "This error is baselined with an expiration date of 180 days from 2025-02-04 07:25:17Z"
},
"71193d108c53bb802f5c491276365bcff0645fb380be57288f3fbd6896166d3a": {
"signature": "71193d108c53bb802f5c491276365bcff0645fb380be57288f3fbd6896166d3a",
"alternativeSignatures": [
"420cae2e6e34b93d7b74fc1ffddfdf23b57650ae989d838bb2d67f28e4e1db0e"
],
"target": ".build/win32-x64/system-setup/VSCodeSetup-x64-1.98.0-insider.exe",
"memberOf": [
"default"
],
"tool": "binskim",
"ruleId": "BA2009",
"createdDate": "2025-02-04 07:11:19Z",
"expirationDate": "2025-07-24 07:25:17Z",
"justification": "This error is baselined with an expiration date of 180 days from 2025-02-04 07:25:17Z"
},
"444c302f49bdedcafe772322a09727b2279e3265d99deb2e307defeae3ef200b": {
"signature": "444c302f49bdedcafe772322a09727b2279e3265d99deb2e307defeae3ef200b",
"alternativeSignatures": [
"4ff6ccbdb0745d43d3b61f82fb2f4d8a64fe9787525df81a6d7b825e79282085"
],
"target": ".build/win32-x64/system-setup/VSCodeSetup-x64-1.98.0-insider.exe",
"memberOf": [
"default"
],
"tool": "binskim",
"ruleId": "BA2018",
"createdDate": "2025-02-04 07:11:19Z",
"expirationDate": "2025-07-24 07:25:17Z",
"justification": "This error is baselined with an expiration date of 180 days from 2025-02-04 07:25:17Z"
},
"4670c7c096a69ca428429ffa1f5250aac9f2e07beac0ffe587ffb37bdb1da4d4": {
"signature": "4670c7c096a69ca428429ffa1f5250aac9f2e07beac0ffe587ffb37bdb1da4d4",
"alternativeSignatures": [
"7cead96cb508ab6e37e27bcc0f8b7ed8d0761b77f4793958c46c5ff3892ab1b6"
],
"target": ".build/win32-x64/user-setup/VSCodeUserSetup-x64-1.98.0-insider.exe",
"memberOf": [
"default"
],
"tool": "binskim",
"ruleId": "BA2009",
"createdDate": "2025-02-04 07:13:22Z",
"expirationDate": "2025-07-24 07:25:17Z",
"justification": "This error is baselined with an expiration date of 180 days from 2025-02-04 07:25:17Z"
},
"a359b4a5ed2378a73f3bba93e3fb1c595db7423c3082635d12d101bbeb0a51b8": {
"signature": "a359b4a5ed2378a73f3bba93e3fb1c595db7423c3082635d12d101bbeb0a51b8",
"alternativeSignatures": [
"125b52a21ef619a95e695085deb9492280bcf2c1decdd5e87e6416af5982d02d"
],
"target": ".build/win32-x64/user-setup/VSCodeUserSetup-x64-1.98.0-insider.exe",
"memberOf": [
"default"
],
"tool": "binskim",
"ruleId": "BA2018",
"createdDate": "2025-02-04 07:13:22Z",
"expirationDate": "2025-07-24 07:25:17Z",
"justification": "This error is baselined with an expiration date of 180 days from 2025-02-04 07:25:17Z"
}
}
}
================================================
FILE: .config/guardian/.gdnsuppress
================================================
{
"hydrated": false,
"properties": {
"helpUri": "https://eng.ms/docs/microsoft-security/security/azure-security/cloudai-security-fundamentals-engineering/security-integration/guardian-wiki/microsoft-guardian/general/suppressions"
},
"version": "1.0.0",
"suppressionSets": {
"default": {
"name": "default",
"createdDate": "2025-03-17 11:52:32Z",
"lastUpdatedDate": "2025-03-17 11:52:32Z"
}
},
"results": {
"216e2ac9cb596796224b47799f656570a01fa0d9b5f935608b47d15ab613c8e8": {
"signature": "216e2ac9cb596796224b47799f656570a01fa0d9b5f935608b47d15ab613c8e8",
"alternativeSignatures": [
"07746898f43afab7cc50931b33154c2d9e1a35f82a649dbe8aecf785b3d5a813"
],
"memberOf": [
"default"
],
"createdDate": "2025-03-17 11:52:32Z"
},
"77797a3e44634bb2994bd13ccc95ff4575bba474585dbd2cf3068a1c16bc0624": {
"signature": "77797a3e44634bb2994bd13ccc95ff4575bba474585dbd2cf3068a1c16bc0624",
"alternativeSignatures": [
"4a6cb67bd4b401e9669c13a2162660aaefc0a94a4122e5b50c198414db545672"
],
"memberOf": [
"default"
],
"createdDate": "2025-03-17 11:52:32Z"
},
"30418bcc5269eaeb2832a2404465784431d4e72a2af332320c2b1db4768902ad": {
"signature": "30418bcc5269eaeb2832a2404465784431d4e72a2af332320c2b1db4768902ad",
"alternativeSignatures": [
"b7b9eb974d7d3a4ae14df8695ca5a62592c8c9d20b7eda70a6535d50cbda3e7f"
],
"memberOf": [
"default"
],
"createdDate": "2025-03-17 11:52:32Z"
}
}
}
================================================
FILE: .configurations/configuration.dsc.yaml
================================================
# yaml-language-server: $schema=https://aka.ms/configuration-dsc-schema/0.2
# Reference: https://github.com/microsoft/vscode/wiki/How-to-Contribute
properties:
resources:
- resource: Microsoft.WinGet.DSC/WinGetPackage
directives:
description: Install Git
allowPrerelease: true
settings:
id: Git.Git
source: winget
- resource: Microsoft.WinGet.DSC/WinGetPackage
id: npm
directives:
description: Install NodeJS version 20
allowPrerelease: true
settings:
id: OpenJS.NodeJS.LTS
version: "20.14.0"
source: winget
- resource: Microsoft.WinGet.DSC/WinGetPackage
directives:
description: Install Python 3.10
allowPrerelease: true
settings:
id: Python.Python.3.10
source: winget
- resource: Microsoft.WinGet.DSC/WinGetPackage
id: vsPackage
directives:
description: Install Visual Studio 2022 (any edition is OK)
allowPrerelease: true
settings:
id: Microsoft.VisualStudio.2022.BuildTools
source: winget
- resource: Microsoft.VisualStudio.DSC/VSComponents
dependsOn:
- vsPackage
directives:
description: Install required VS workloads
allowPrerelease: true
settings:
productId: Microsoft.VisualStudio.Product.BuildTools
channelId: VisualStudio.17.Release
includeRecommended: true
components:
- Microsoft.VisualStudio.Workload.VCTools
- resource: NpmDsc/NpmInstall
dependsOn:
- npm
directives:
description: Install dependencies
allowPrerelease: true
settings:
PackageDirectory: '${WinGetConfigRoot}\..\'
configurationVersion: 0.2.0
================================================
FILE: .devcontainer/Dockerfile
================================================
FROM mcr.microsoft.com/devcontainers/typescript-node:20-bookworm
ADD install-vscode.sh /root/
RUN /root/install-vscode.sh
RUN git config --system codespaces-theme.hide-status 1
USER node
RUN npm install -g node-gyp
RUN NPM_CACHE="$(npm config get cache)" && rm -rf "$NPM_CACHE" && ln -s /vscode-dev/npm-cache "$NPM_CACHE"
RUN echo 'export DISPLAY="${DISPLAY:-:1}"' | tee -a ~/.bashrc >> ~/.zshrc
USER root
CMD chown node:node /vscode-dev && sudo -u node mkdir -p /vscode-dev/npm-cache && sleep inf
================================================
FILE: .devcontainer/README.md
================================================
# Code - OSS Development Container
[](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/microsoft/vscode)
This repository includes configuration for a development container for working with Code - OSS in a local container or using [GitHub Codespaces](https://github.com/features/codespaces).
> **Tip:** The default VNC password is `vscode`. The VNC server runs on port `5901` and a web client is available on port `6080`.
## Quick start - local
If you already have VS Code and Docker installed, you can click the badge above or [here](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/microsoft/vscode) to get started. Clicking these links will cause VS Code to automatically install the Dev Containers extension if needed, clone the source code into a container volume, and spin up a dev container for use.
1. Install Docker Desktop or Docker for Linux on your local machine. (See [docs](https://aka.ms/vscode-remote/containers/getting-started) for additional details.)
2. **Important**: Docker needs at least **4 Cores and 8 GB of RAM** to run a full build with **9 GB of RAM** being recommended. If you are on macOS, or are using the old Hyper-V engine for Windows, update these values for Docker Desktop by right-clicking on the Docker status bar item and going to **Preferences/Settings > Resources > Advanced**.
> **Note:** The [Resource Monitor](https://marketplace.visualstudio.com/items?itemName=mutantdino.resourcemonitor) extension is included in the container so you can keep an eye on CPU/Memory in the status bar.
3. Install [Visual Studio Code Stable](https://code.visualstudio.com/) or [Insiders](https://code.visualstudio.com/insiders/) and the [Dev Containers](https://aka.ms/vscode-remote/download/containers) extension.

> **Note:** The Dev Containers extension requires the Visual Studio Code distribution of Code - OSS. See the [FAQ](https://aka.ms/vscode-remote/faq/license) for details.
4. Press <kbd>Ctrl/Cmd</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd> or <kbd>F1</kbd> and select **Dev Containers: Clone Repository in Container Volume...**.
> **Tip:** While you can use your local source tree instead, operations like `npm i` can be slow on macOS or when using the Hyper-V engine on Windows. We recommend using the WSL filesystem on Windows or the "clone repository in container" approach on Windows and macOS instead since it uses "named volume" rather than the local filesystem.
5. Type `https://github.com/microsoft/vscode` (or a branch or PR URL) in the input box and press <kbd>Enter</kbd>.
6. After the container is running:
1. If you have the `DISPLAY` or `WAYLAND_DISPLAY` environment variables set locally (or in WSL on Windows), desktop apps in the container will be shown in local windows.
2. If these are not set, open a web browser and go to [http://localhost:6080](http://localhost:6080), or use a [VNC Viewer][def] to connect to `localhost:5901` and enter `vscode` as the password. Anything you start in VS Code, or the integrated terminal, will appear here.
Next: **[Try it out!](#try-it)**
## Quick start - GitHub Codespaces
1. From the [microsoft/vscode GitHub repository](https://github.com/microsoft/vscode), click on the **Code** dropdown, select **Open with Codespaces**, and then click on **New codespace**. If prompted, select the **Standard** machine size (which is also the default).
> **Note:** You will not see these options within GitHub if you are not in the Codespaces beta.
2. After the codespace is up and running in your browser, press <kbd>Ctrl/Cmd</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd> or <kbd>F1</kbd> and select **Ports: Focus on Ports View**.
3. You should see **VNC web client (6080)** under in the list of ports. Select the line and click on the globe icon to open it in a browser tab.
> **Tip:** If you do not see the port, <kbd>Ctrl/Cmd</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd> or <kbd>F1</kbd>, select **Forward a Port** and enter port `6080`.
4. In the new tab, you should see noVNC. Click **Connect** and enter `vscode` as the password.
Anything you start in VS Code, or the integrated terminal, will appear here.
Next: **[Try it out!](#try-it)**
### Using VS Code with GitHub Codespaces
You may see improved VNC responsiveness when accessing a codespace from VS Code client since you can use a [VNC Viewer][def]. Here's how to do it.
1. Install [Visual Studio Code Stable](https://code.visualstudio.com/) or [Insiders](https://code.visualstudio.com/insiders/) and the [GitHub Codespaces extension](https://marketplace.visualstudio.com/items?itemName=GitHub.codespaces).
> **Note:** The GitHub Codespaces extension requires the Visual Studio Code distribution of Code - OSS.
2. After the VS Code is up and running, press <kbd>Ctrl/Cmd</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd> or <kbd>F1</kbd>, choose **Codespaces: Create New Codespace**, and use the following settings:
- `microsoft/vscode` for the repository.
- Select any branch (e.g. **main**) - you can select a different one later.
- Choose **Standard** (4-core, 8GB) as the size.
3. After you have connected to the codespace, you can use a [VNC Viewer][def] to connect to `localhost:5901` and enter `vscode` as the password.
> **Tip:** You may also need change your VNC client's **Picture Quality** setting to **High** to get a full color desktop.
4. Anything you start in VS Code, or the integrated terminal, will appear here.
Next: **[Try it out!](#try-it)**
## Try it
This container uses the [Fluxbox](http://fluxbox.org/) window manager to keep things lean. **Right-click on the desktop** to see menu options. It works with GNOME and GTK applications, so other tools can be installed if needed.
> **Note:** You can also set the resolution from the command line by typing `set-resolution`.
To start working with Code - OSS, follow these steps:
1. In your local VS Code client, open a terminal (<kbd>Ctrl/Cmd</kbd> + <kbd>Shift</kbd> + <kbd>\`</kbd>) and type the following commands:
```bash
npm i
bash scripts/code.sh
```
2. After the build is complete, open a web browser or a [VNC Viewer][def] to connect to the desktop environment as described in the quick start and enter `vscode` as the password.
3. You should now see Code - OSS!
Next, let's try debugging.
1. Shut down Code - OSS by clicking the box in the upper right corner of the Code - OSS window through your browser or VNC viewer.
2. Go to your local VS Code client, and use the **Run / Debug** view to launch the **VS Code** configuration. (Typically the default, so you can likely just press <kbd>F5</kbd>).
> **Note:** If launching times out, you can increase the value of `timeout` in the "VS Code", "Attach Main Process", "Attach Extension Host", and "Attach to Shared Process" configurations in [launch.json](../../.vscode/launch.json). However, running `./scripts/code.sh` first will set up Electron which will usually solve timeout issues.
3. After a bit, Code - OSS will appear with the debugger attached!
Enjoy!
### Notes
The container comes with VS Code Insiders installed. To run it from an Integrated Terminal use `VSCODE_IPC_HOOK_CLI= /usr/bin/code-insiders .`.
[def]: https://www.realvnc.com/en/connect/download/viewer/
================================================
FILE: .devcontainer/devcontainer-lock.json
================================================
{
"features": {
"ghcr.io/devcontainers/features/desktop-lite:1": {
"version": "1.0.8",
"resolved": "ghcr.io/devcontainers/features/desktop-lite@sha256:e7dc4d37ab9e3d6e7ebb221bac741f5bfe07dae47025399d038b17af2ed8ddb7",
"integrity": "sha256:e7dc4d37ab9e3d6e7ebb221bac741f5bfe07dae47025399d038b17af2ed8ddb7"
},
"ghcr.io/devcontainers/features/rust:1": {
"version": "1.1.3",
"resolved": "ghcr.io/devcontainers/features/rust@sha256:aba6f47303b197976902bf544c786b5efecc03c238ff593583e5e74dfa9c7ccb",
"integrity": "sha256:aba6f47303b197976902bf544c786b5efecc03c238ff593583e5e74dfa9c7ccb"
}
}
}
================================================
FILE: .devcontainer/devcontainer.json
================================================
{
"name": "Code - OSS",
"build": {
"dockerfile": "Dockerfile"
},
"features": {
"ghcr.io/devcontainers/features/desktop-lite:1": {},
"ghcr.io/devcontainers/features/rust:1": {}
},
"containerEnv": {
"DISPLAY": "" // Allow the Dev Containers extension to set DISPLAY, post-create.sh will add it back in ~/.bashrc and ~/.zshrc if not set.
},
"overrideCommand": false,
"privileged": true,
"mounts": [
{
"source": "vscode-dev",
"target": "/vscode-dev",
"type": "volume"
}
],
"postCreateCommand": "./.devcontainer/post-create.sh",
"customizations": {
"vscode": {
"settings": {
"resmon.show.battery": false,
"resmon.show.cpufreq": false
},
"extensions": [
"dbaeumer.vscode-eslint",
"EditorConfig.EditorConfig",
"GitHub.vscode-pull-request-github",
"ms-vscode.vscode-github-issue-notebooks",
"ms-vscode.vscode-selfhost-test-provider",
"mutantdino.resourcemonitor"
]
}
},
"forwardPorts": [6080, 5901],
"portsAttributes": {
"6080": {
"label": "VNC web client (noVNC)",
"onAutoForward": "silent"
},
"5901": {
"label": "VNC TCP port",
"onAutoForward": "silent"
}
},
"hostRequirements": {
"memory": "9gb"
}
}
================================================
FILE: .devcontainer/install-vscode.sh
================================================
#!/bin/sh
apt update
apt install -y wget gpg
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
install -D -o root -g root -m 644 packages.microsoft.gpg /etc/apt/keyrings/packages.microsoft.gpg
sh -c 'echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list'
rm -f packages.microsoft.gpg
apt update
apt install -y code-insiders libsecret-1-dev libxkbfile-dev libkrb5-dev
================================================
FILE: .devcontainer/post-create.sh
================================================
#!/bin/sh
npm i
npm run electron
================================================
FILE: .editorconfig
================================================
# EditorConfig is awesome: https://EditorConfig.org
# top-most EditorConfig file
root = true
# Tab indentation
[*]
indent_style = tab
trim_trailing_whitespace = true
# The indent size used in the `package.json` file cannot be changed
# https://github.com/npm/npm/pull/3180#issuecomment-16336516
[{*.yml,*.yaml,package.json}]
indent_style = space
indent_size = 2
================================================
FILE: .eslint-ignore
================================================
**/build/*/**/*.js
**/dist/**/*.js
**/extensions/**/*.d.ts
**/extensions/**/build/**
**/extensions/**/colorize-fixtures/**
**/extensions/css-language-features/server/test/pathCompletionFixtures/**
**/extensions/html-language-features/server/lib/jquery.d.ts
**/extensions/html-language-features/server/src/test/pathCompletionFixtures/**
**/extensions/ipynb/notebook-out/**
**/extensions/markdown-language-features/media/**
**/extensions/markdown-language-features/notebook-out/**
**/extensions/markdown-math/notebook-out/**
**/extensions/notebook-renderers/renderer-out/index.js
**/extensions/simple-browser/media/index.js
**/extensions/terminal-suggest/src/completions/upstream/**
**/extensions/terminal-suggest/src/shell/zshBuiltinsCache.ts
**/extensions/terminal-suggest/src/shell/fishBuiltinsCache.ts
**/extensions/terminal-suggest/third_party/**
**/extensions/typescript-language-features/test-workspace/**
**/extensions/typescript-language-features/extension.webpack.config.js
**/extensions/typescript-language-features/extension-browser.webpack.config.js
**/extensions/typescript-language-features/package-manager/node-maintainer/**
**/extensions/vscode-api-tests/testWorkspace/**
**/extensions/vscode-api-tests/testWorkspace2/**
**/fixtures/**
**/node_modules/**
**/out-*/**/*.js
**/out-editor-*/**
**/out/**/*.js
**/src/**/dompurify.js
**/src/**/marked.js
**/src/**/semver.js
**/src/typings/**/*.d.ts
**/src/vs/*/**/*.d.ts
**/src/vs/base/test/common/filters.perf.data.js
**/src/vs/loader.js
**/test/unit/assert.js
**/test/automation/out/**
**/typings/**
**/.build/**
!.vscode
================================================
FILE: .eslint-plugin-local/code-amd-node-module.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
import { join } from 'path';
export = new class ApiProviderNaming implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
amdX: 'Use `import type` for import declarations, use `amdX#importAMDNodeModule` for import expressions'
},
schema: false,
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
const modules = new Set<string>();
try {
const { dependencies, optionalDependencies } = require(join(__dirname, '../package.json'));
const all = Object.keys(dependencies).concat(Object.keys(optionalDependencies));
for (const key of all) {
modules.add(key);
}
} catch (e) {
console.error(e);
throw e;
}
const checkImport = (node: any) => {
if (node.type !== 'Literal' || typeof node.value !== 'string') {
return;
}
if (node.parent.importKind === 'type') {
return;
}
if (!modules.has(node.value)) {
return;
}
context.report({
node,
messageId: 'amdX'
});
};
return {
['ImportExpression Literal']: checkImport,
['ImportDeclaration Literal']: checkImport
};
}
};
================================================
FILE: .eslint-plugin-local/code-declare-service-brand.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
export = new class DeclareServiceBrand implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
fixable: 'code',
schema: false,
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
return {
['PropertyDefinition[key.name="_serviceBrand"][value]']: (node: any) => {
return context.report({
node,
message: `The '_serviceBrand'-property should not have a value`,
fix: (fixer) => {
return fixer.replaceText(node, 'declare _serviceBrand: undefined;');
}
});
}
};
}
};
================================================
FILE: .eslint-plugin-local/code-ensure-no-disposables-leak-in-test.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
import { Node } from 'estree';
export = new class EnsureNoDisposablesAreLeakedInTestSuite implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
type: 'problem',
messages: {
ensure: 'Suites should include a call to `ensureNoDisposablesAreLeakedInTestSuite()` to ensure no disposables are leaked in tests.'
},
fixable: 'code',
schema: false,
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
const config = <{ exclude: string[] }>context.options[0];
const needle = context.getFilename().replace(/\\/g, '/');
if (config.exclude.some((e) => needle.endsWith(e))) {
return {};
}
return {
[`Program > ExpressionStatement > CallExpression[callee.name='suite']`]: (node: Node) => {
const src = context.getSourceCode().getText(node);
if (!src.includes('ensureNoDisposablesAreLeakedInTestSuite(')) {
context.report({
node,
messageId: 'ensure',
fix: (fixer) => {
const updatedSrc = src.replace(/(suite\(.*\n)/, '$1\n\tensureNoDisposablesAreLeakedInTestSuite();\n');
return fixer.replaceText(node, updatedSrc);
}
});
}
},
};
}
};
================================================
FILE: .eslint-plugin-local/code-import-patterns.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
import { TSESTree } from '@typescript-eslint/utils';
import * as path from 'path';
import minimatch from 'minimatch';
import { createImportRuleListener } from './utils';
const REPO_ROOT = path.normalize(path.join(__dirname, '../'));
interface ConditionalPattern {
when?: 'hasBrowser' | 'hasNode' | 'hasElectron' | 'test';
pattern: string;
}
interface RawImportPatternsConfig {
target: string;
layer?: 'common' | 'worker' | 'browser' | 'electron-sandbox' | 'node' | 'electron-utility' | 'electron-main';
test?: boolean;
restrictions: string | (string | ConditionalPattern)[];
}
interface LayerAllowRule {
when: 'hasBrowser' | 'hasNode' | 'hasElectron' | 'test';
allow: string[];
}
type RawOption = RawImportPatternsConfig | LayerAllowRule;
function isLayerAllowRule(option: RawOption): option is LayerAllowRule {
return !!((<LayerAllowRule>option).when && (<LayerAllowRule>option).allow);
}
interface ImportPatternsConfig {
target: string;
restrictions: string[];
}
export = new class implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
badImport: 'Imports violates \'{{restrictions}}\' restrictions. See https://github.com/microsoft/vscode/wiki/Source-Code-Organization',
badFilename: 'Missing definition in `code-import-patterns` for this file. Define rules at https://github.com/microsoft/vscode/blob/main/eslint.config.js',
badAbsolute: 'Imports have to be relative to support ESM',
badExtension: 'Imports have to end with `.js` or `.css` to support ESM',
},
docs: {
url: 'https://github.com/microsoft/vscode/wiki/Source-Code-Organization'
},
schema: false,
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
const options = <RawOption[]>context.options;
const configs = this._processOptions(options);
const relativeFilename = getRelativeFilename(context);
for (const config of configs) {
if (minimatch(relativeFilename, config.target)) {
return createImportRuleListener((node, value) => this._checkImport(context, config, node, value));
}
}
context.report({
loc: { line: 1, column: 0 },
messageId: 'badFilename'
});
return {};
}
private _optionsCache = new WeakMap<RawOption[], ImportPatternsConfig[]>();
private _processOptions(options: RawOption[]): ImportPatternsConfig[] {
if (this._optionsCache.has(options)) {
return this._optionsCache.get(options)!;
}
type Layer = 'common' | 'worker' | 'browser' | 'electron-sandbox' | 'node' | 'electron-utility' | 'electron-main';
interface ILayerRule {
layer: Layer;
deps: string;
isBrowser?: boolean;
isNode?: boolean;
isElectron?: boolean;
}
function orSegment(variants: Layer[]): string {
return (variants.length === 1 ? variants[0] : `{${variants.join(',')}}`);
}
const layerRules: ILayerRule[] = [
{ layer: 'common', deps: orSegment(['common']) },
{ layer: 'worker', deps: orSegment(['common', 'worker']) },
{ layer: 'browser', deps: orSegment(['common', 'browser']), isBrowser: true },
{ layer: 'electron-sandbox', deps: orSegment(['common', 'browser', 'electron-sandbox']), isBrowser: true },
{ layer: 'node', deps: orSegment(['common', 'node']), isNode: true },
{ layer: 'electron-utility', deps: orSegment(['common', 'node', 'electron-utility']), isNode: true, isElectron: true },
{ layer: 'electron-main', deps: orSegment(['common', 'node', 'electron-utility', 'electron-main']), isNode: true, isElectron: true },
];
let browserAllow: string[] = [];
let nodeAllow: string[] = [];
let electronAllow: string[] = [];
let testAllow: string[] = [];
for (const option of options) {
if (isLayerAllowRule(option)) {
if (option.when === 'hasBrowser') {
browserAllow = option.allow.slice(0);
} else if (option.when === 'hasNode') {
nodeAllow = option.allow.slice(0);
} else if (option.when === 'hasElectron') {
electronAllow = option.allow.slice(0);
} else if (option.when === 'test') {
testAllow = option.allow.slice(0);
}
}
}
function findLayer(layer: Layer): ILayerRule | null {
for (const layerRule of layerRules) {
if (layerRule.layer === layer) {
return layerRule;
}
}
return null;
}
function generateConfig(layerRule: ILayerRule, target: string, rawRestrictions: (string | ConditionalPattern)[]): [ImportPatternsConfig, ImportPatternsConfig] {
const restrictions: string[] = [];
const testRestrictions: string[] = [...testAllow];
if (layerRule.isBrowser) {
restrictions.push(...browserAllow);
}
if (layerRule.isNode) {
restrictions.push(...nodeAllow);
}
if (layerRule.isElectron) {
restrictions.push(...electronAllow);
}
for (const rawRestriction of rawRestrictions) {
let importPattern: string;
let when: 'hasBrowser' | 'hasNode' | 'hasElectron' | 'test' | undefined = undefined;
if (typeof rawRestriction === 'string') {
importPattern = rawRestriction;
} else {
importPattern = rawRestriction.pattern;
when = rawRestriction.when;
}
if (typeof when === 'undefined'
|| (when === 'hasBrowser' && layerRule.isBrowser)
|| (when === 'hasNode' && layerRule.isNode)
|| (when === 'hasElectron' && layerRule.isElectron)
) {
restrictions.push(importPattern.replace(/\/\~$/, `/${layerRule.deps}/**`));
testRestrictions.push(importPattern.replace(/\/\~$/, `/test/${layerRule.deps}/**`));
} else if (when === 'test') {
testRestrictions.push(importPattern.replace(/\/\~$/, `/${layerRule.deps}/**`));
testRestrictions.push(importPattern.replace(/\/\~$/, `/test/${layerRule.deps}/**`));
}
}
testRestrictions.push(...restrictions);
return [
{
target: target.replace(/\/\~$/, `/${layerRule.layer}/**`),
restrictions: restrictions
},
{
target: target.replace(/\/\~$/, `/test/${layerRule.layer}/**`),
restrictions: testRestrictions
}
];
}
const configs: ImportPatternsConfig[] = [];
for (const option of options) {
if (isLayerAllowRule(option)) {
continue;
}
const target = option.target;
const targetIsVS = /^src\/vs\//.test(target);
const restrictions = (typeof option.restrictions === 'string' ? [option.restrictions] : option.restrictions).slice(0);
if (targetIsVS) {
// Always add "vs/nls" and "vs/amdX"
restrictions.push('vs/nls.js');
restrictions.push('vs/amdX.js'); // TODO@jrieken remove after ESM is real
}
if (targetIsVS && option.layer) {
// single layer => simple substitution for /~
const layerRule = findLayer(option.layer);
if (layerRule) {
const [config, testConfig] = generateConfig(layerRule, target, restrictions);
if (option.test) {
configs.push(testConfig);
} else {
configs.push(config);
}
}
} else if (targetIsVS && /\/\~$/.test(target)) {
// generate all layers
for (const layerRule of layerRules) {
const [config, testConfig] = generateConfig(layerRule, target, restrictions);
configs.push(config);
configs.push(testConfig);
}
} else {
configs.push({ target, restrictions: <string[]>restrictions.filter(r => typeof r === 'string') });
}
}
this._optionsCache.set(options, configs);
return configs;
}
private _checkImport(context: eslint.Rule.RuleContext, config: ImportPatternsConfig, node: TSESTree.Node, importPath: string) {
const targetIsVS = /^src\/vs\//.test(getRelativeFilename(context));
if (targetIsVS) {
// ESM: check for import ending with ".js" or ".css"
if (importPath[0] === '.' && !importPath.endsWith('.js') && !importPath.endsWith('.css')) {
context.report({
loc: node.loc,
messageId: 'badExtension',
});
}
// check for import being relative
if (importPath.startsWith('vs/')) {
context.report({
loc: node.loc,
messageId: 'badAbsolute',
});
}
}
// resolve relative paths
if (importPath[0] === '.') {
const relativeFilename = getRelativeFilename(context);
importPath = path.posix.join(path.posix.dirname(relativeFilename), importPath);
if (/^src\/vs\//.test(importPath)) {
// resolve using base url
importPath = importPath.substring('src/'.length);
}
}
const restrictions = config.restrictions;
let matched = false;
for (const pattern of restrictions) {
if (minimatch(importPath, pattern)) {
matched = true;
break;
}
}
if (!matched) {
// None of the restrictions matched
context.report({
loc: node.loc,
messageId: 'badImport',
data: {
restrictions: restrictions.join(' or ')
}
});
}
}
};
/**
* Returns the filename relative to the project root and using `/` as separators
*/
function getRelativeFilename(context: eslint.Rule.RuleContext): string {
const filename = path.normalize(context.getFilename());
return filename.substring(REPO_ROOT.length).replace(/\\/g, '/');
}
================================================
FILE: .eslint-plugin-local/code-layering.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
import { join, dirname } from 'path';
import { createImportRuleListener } from './utils';
type Config = {
allowed: Set<string>;
disallowed: Set<string>;
};
export = new class implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
layerbreaker: 'Bad layering. You are not allowed to access {{from}} from here, allowed layers are: [{{allowed}}]'
},
docs: {
url: 'https://github.com/microsoft/vscode/wiki/Source-Code-Organization'
},
schema: [
{
type: 'object',
additionalProperties: {
type: 'array',
items: {
type: 'string'
}
}
}
]
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
const fileDirname = dirname(context.getFilename());
const parts = fileDirname.split(/\\|\//);
const ruleArgs = <Record<string, string[]>>context.options[0];
let config: Config | undefined;
for (let i = parts.length - 1; i >= 0; i--) {
if (ruleArgs[parts[i]]) {
config = {
allowed: new Set(ruleArgs[parts[i]]).add(parts[i]),
disallowed: new Set()
};
Object.keys(ruleArgs).forEach(key => {
if (!config!.allowed.has(key)) {
config!.disallowed.add(key);
}
});
break;
}
}
if (!config) {
// nothing
return {};
}
return createImportRuleListener((node, path) => {
if (path[0] === '.') {
path = join(dirname(context.getFilename()), path);
}
const parts = dirname(path).split(/\\|\//);
for (let i = parts.length - 1; i >= 0; i--) {
const part = parts[i];
if (config!.allowed.has(part)) {
// GOOD - same layer
break;
}
if (config!.disallowed.has(part)) {
// BAD - wrong layer
context.report({
loc: node.loc,
messageId: 'layerbreaker',
data: {
from: part,
allowed: [...config!.allowed.keys()].join(', ')
}
});
break;
}
}
});
}
};
================================================
FILE: .eslint-plugin-local/code-limited-top-functions.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
import { dirname, relative } from 'path';
import minimatch from 'minimatch';
export = new class implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
layerbreaker: 'You are only allowed to define limited top level functions.'
},
schema: {
type: 'array',
items: {
type: 'object',
additionalProperties: {
type: 'array',
items: {
type: 'string'
}
}
}
}
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
let fileRelativePath = relative(dirname(__dirname), context.getFilename());
if (!fileRelativePath.endsWith('/')) {
fileRelativePath += '/';
}
const ruleArgs = <Record<string, string[]>>context.options[0];
const matchingKey = Object.keys(ruleArgs).find(key => fileRelativePath.startsWith(key) || minimatch(fileRelativePath, key));
if (!matchingKey) {
// nothing
return {};
}
const restrictedFunctions = ruleArgs[matchingKey];
return {
FunctionDeclaration: (node: any) => {
const isTopLevel = node.parent.type === 'Program';
const functionName = node.id.name;
if (isTopLevel && !restrictedFunctions.includes(node.id.name)) {
context.report({
node,
message: `Top-level function '${functionName}' is restricted in this file. Allowed functions are: ${restrictedFunctions.join(', ')}.`
});
}
},
ExportNamedDeclaration(node: any) {
if (node.declaration && node.declaration.type === 'FunctionDeclaration') {
const functionName = node.declaration.id.name;
const isTopLevel = node.parent.type === 'Program';
if (isTopLevel && !restrictedFunctions.includes(node.declaration.id.name)) {
context.report({
node,
message: `Top-level function '${functionName}' is restricted in this file. Allowed functions are: ${restrictedFunctions.join(', ')}.`
});
}
}
}
};
}
};
================================================
FILE: .eslint-plugin-local/code-must-use-result.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
import { TSESTree } from '@typescript-eslint/utils';
const VALID_USES = new Set<TSESTree.AST_NODE_TYPES | undefined>([
TSESTree.AST_NODE_TYPES.AwaitExpression,
TSESTree.AST_NODE_TYPES.VariableDeclarator,
]);
export = new class MustUseResults implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
schema: false
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
const config = <{ message: string; functions: string[] }[]>context.options[0];
const listener: eslint.Rule.RuleListener = {};
for (const { message, functions } of config) {
for (const fn of functions) {
const query = `CallExpression[callee.property.name='${fn}'], CallExpression[callee.name='${fn}']`;
listener[query] = (node: any) => {
const cast: TSESTree.CallExpression = node;
if (!VALID_USES.has(cast.parent?.type)) {
context.report({ node, message });
}
};
}
}
return listener;
}
};
================================================
FILE: .eslint-plugin-local/code-must-use-super-dispose.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
export = new class NoAsyncSuite implements eslint.Rule.RuleModule {
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
function doesCallSuperDispose(node: any) {
if (!node.override) {
return;
}
const body = context.getSourceCode().getText(node);
if (body.includes('super.dispose')) {
return;
}
context.report({
node,
message: 'dispose() should call super.dispose()'
});
}
return {
['MethodDefinition[override][key.name="dispose"]']: doesCallSuperDispose,
};
}
};
================================================
FILE: .eslint-plugin-local/code-no-dangerous-type-assertions.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
import { TSESTree } from '@typescript-eslint/utils';
export = new class NoDangerousTypeAssertions implements eslint.Rule.RuleModule {
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
// Disable in tests for now
if (context.getFilename().includes('.test')) {
return {};
}
return {
// Disallow type assertions on object literals: <T>{ ... } or {} as T
['TSTypeAssertion > ObjectExpression, TSAsExpression > ObjectExpression']: (node: any) => {
const objectNode = node as TSESTree.Node;
const parent = objectNode.parent as TSESTree.TSTypeAssertion | TSESTree.TSAsExpression;
if (
// Allow `as const` assertions
(parent.typeAnnotation.type === 'TSTypeReference' && parent.typeAnnotation.typeName.type === 'Identifier' && parent.typeAnnotation.typeName.name === 'const')
// For also now still allow `any` casts
|| (parent.typeAnnotation.type === 'TSAnyKeyword')
) {
return;
}
context.report({
node,
message: `Don't use type assertions for creating objects as this can hide type errors.`
});
},
};
}
};
================================================
FILE: .eslint-plugin-local/code-no-global-document-listener.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
export = new class NoGlobalDocumentListener implements eslint.Rule.RuleModule {
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
return {
CallExpression(node: any) {
if (
(
node.callee.name === 'addDisposableListener' ||
node.callee.property?.name === 'addDisposableListener'
) &&
node.arguments.length > 0 &&
node.arguments[0].type === 'Identifier' &&
node.arguments[0].name === 'document'
) {
context.report({
node,
message: 'Use <targetWindow>.document to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.',
});
}
},
};
}
};
================================================
FILE: .eslint-plugin-local/code-no-native-private.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
export = new class ApiProviderNaming implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
slow: 'Native private fields are much slower and should only be used when needed. Ignore this warning if you know what you are doing, use compile-time private otherwise. See https://github.com/microsoft/vscode/issues/185991#issuecomment-1614468158 for details',
},
schema: false,
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
return {
['PropertyDefinition PrivateIdentifier']: (node: any) => {
context.report({
node,
messageId: 'slow'
});
},
['MethodDefinition PrivateIdentifier']: (node: any) => {
context.report({
node,
messageId: 'slow'
});
}
};
}
};
================================================
FILE: .eslint-plugin-local/code-no-nls-in-standalone-editor.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
import { join } from 'path';
import { createImportRuleListener } from './utils';
export = new class NoNlsInStandaloneEditorRule implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
noNls: 'Not allowed to import vs/nls in standalone editor modules. Use standaloneStrings.ts'
},
schema: false,
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
const fileName = context.getFilename();
if (
/vs(\/|\\)editor(\/|\\)standalone(\/|\\)/.test(fileName)
|| /vs(\/|\\)editor(\/|\\)common(\/|\\)standalone(\/|\\)/.test(fileName)
|| /vs(\/|\\)editor(\/|\\)editor.api/.test(fileName)
|| /vs(\/|\\)editor(\/|\\)editor.main/.test(fileName)
|| /vs(\/|\\)editor(\/|\\)editor.worker.start/.test(fileName)
) {
return createImportRuleListener((node, path) => {
// resolve relative paths
if (path[0] === '.') {
path = join(context.getFilename(), path);
}
if (
/vs(\/|\\)nls/.test(path)
) {
context.report({
loc: node.loc,
messageId: 'noNls'
});
}
});
}
return {};
}
};
================================================
FILE: .eslint-plugin-local/code-no-potentially-unsafe-disposables.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
/**
* Checks for potentially unsafe usage of `DisposableStore` / `MutableDisposable`.
*
* These have been the source of leaks in the past.
*/
export = new class implements eslint.Rule.RuleModule {
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
function checkVariableDeclaration(inNode: any) {
context.report({
node: inNode,
message: `Use const for 'DisposableStore' to avoid leaks by accidental reassignment.`
});
}
function checkProperty(inNode: any) {
context.report({
node: inNode,
message: `Use readonly for DisposableStore/MutableDisposable to avoid leaks through accidental reassignment.`
});
}
return {
'VariableDeclaration[kind!="const"] NewExpression[callee.name="DisposableStore"]': checkVariableDeclaration,
'PropertyDefinition[readonly!=true][typeAnnotation.typeAnnotation.typeName.name=/DisposableStore|MutableDisposable/]': checkProperty,
'PropertyDefinition[readonly!=true] NewExpression[callee.name=/DisposableStore|MutableDisposable/]': checkProperty,
};
}
};
================================================
FILE: .eslint-plugin-local/code-no-runtime-import.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { TSESTree } from '@typescript-eslint/typescript-estree';
import * as eslint from 'eslint';
import { dirname, join, relative } from 'path';
import minimatch from 'minimatch';
import { createImportRuleListener } from './utils';
export = new class implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
layerbreaker: 'You are only allowed to import {{import}} from here using `import type ...`.'
},
schema: {
type: 'array',
items: {
type: 'object',
additionalProperties: {
type: 'array',
items: {
type: 'string'
}
}
}
}
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
let fileRelativePath = relative(dirname(__dirname), context.getFilename());
if (!fileRelativePath.endsWith('/')) {
fileRelativePath += '/';
}
const ruleArgs = <Record<string, string[]>>context.options[0];
const matchingKey = Object.keys(ruleArgs).find(key => fileRelativePath.startsWith(key) || minimatch(fileRelativePath, key));
if (!matchingKey) {
// nothing
return {};
}
const restrictedImports = ruleArgs[matchingKey];
return createImportRuleListener((node, path) => {
if (path[0] === '.') {
path = join(dirname(context.getFilename()), path);
}
if ((
restrictedImports.includes(path) || restrictedImports.some(restriction => minimatch(path, restriction))
) && !(
(node.parent?.type === TSESTree.AST_NODE_TYPES.ImportDeclaration && node.parent.importKind === 'type') ||
(node.parent && 'exportKind' in node.parent && node.parent.exportKind === 'type'))) { // the export could be multiple types
context.report({
loc: node.parent!.loc,
messageId: 'layerbreaker',
data: {
import: path
}
});
}
});
}
};
================================================
FILE: .eslint-plugin-local/code-no-standalone-editor.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
import { join } from 'path';
import { createImportRuleListener } from './utils';
export = new class NoNlsInStandaloneEditorRule implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
badImport: 'Not allowed to import standalone editor modules.'
},
docs: {
url: 'https://github.com/microsoft/vscode/wiki/Source-Code-Organization'
},
schema: false,
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
if (/vs(\/|\\)editor/.test(context.getFilename())) {
// the vs/editor folder is allowed to use the standalone editor
return {};
}
return createImportRuleListener((node, path) => {
// resolve relative paths
if (path[0] === '.') {
path = join(context.getFilename(), path);
}
if (
/vs(\/|\\)editor(\/|\\)standalone(\/|\\)/.test(path)
|| /vs(\/|\\)editor(\/|\\)common(\/|\\)standalone(\/|\\)/.test(path)
|| /vs(\/|\\)editor(\/|\\)editor.api/.test(path)
|| /vs(\/|\\)editor(\/|\\)editor.main/.test(path)
|| /vs(\/|\\)editor(\/|\\)editor.worker.start/.test(path)
) {
context.report({
loc: node.loc,
messageId: 'badImport'
});
}
});
}
};
================================================
FILE: .eslint-plugin-local/code-no-static-self-ref.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
import { TSESTree } from '@typescript-eslint/utils';
/**
* WORKAROUND for https://github.com/evanw/esbuild/issues/3823
*/
export = new class implements eslint.Rule.RuleModule {
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
function checkProperty(inNode: any) {
const classDeclaration = context.sourceCode.getAncestors(inNode).find(node => node.type === 'ClassDeclaration');
const propertyDefinition = <TSESTree.PropertyDefinition>inNode;
if (!classDeclaration || !classDeclaration.id?.name) {
return;
}
if (!propertyDefinition.value) {
return;
}
const classCtor = classDeclaration.body.body.find(node => node.type === 'MethodDefinition' && node.kind === 'constructor');
if (!classCtor) {
return;
}
const name = classDeclaration.id.name;
const valueText = context.sourceCode.getText(<any>propertyDefinition.value);
if (valueText.includes(name + '.')) {
if (classCtor.value?.type === 'FunctionExpression' && !classCtor.value.params.find((param: any) => param.type === 'TSParameterProperty' && param.decorators?.length > 0)) {
return;
}
context.report({
loc: propertyDefinition.value.loc,
message: `Static properties in decorated classes should not reference the class they are defined in. Use 'this' instead. This is a workaround for https://github.com/evanw/esbuild/issues/3823.`
});
}
}
return {
'PropertyDefinition[static=true]': checkProperty,
};
}
};
================================================
FILE: .eslint-plugin-local/code-no-test-async-suite.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { TSESTree } from '@typescript-eslint/utils';
import * as eslint from 'eslint';
function isCallExpression(node: TSESTree.Node): node is TSESTree.CallExpression {
return node.type === 'CallExpression';
}
function isFunctionExpression(node: TSESTree.Node): node is TSESTree.FunctionExpression {
return node.type.includes('FunctionExpression');
}
export = new class NoAsyncSuite implements eslint.Rule.RuleModule {
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
function hasAsyncSuite(node: any) {
if (isCallExpression(node) && node.arguments.length >= 2 && isFunctionExpression(node.arguments[1]) && node.arguments[1].async) {
return context.report({
node: node as any,
message: 'suite factory function should never be async'
});
}
}
return {
['CallExpression[callee.name=/suite$/][arguments]']: hasAsyncSuite,
};
}
};
================================================
FILE: .eslint-plugin-local/code-no-test-only.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
export = new class NoTestOnly implements eslint.Rule.RuleModule {
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
return {
['MemberExpression[object.name=/^(test|suite)$/][property.name="only"]']: (node: any) => {
return context.report({
node,
message: 'only is a dev-time tool and CANNOT be pushed'
});
}
};
}
};
================================================
FILE: .eslint-plugin-local/code-no-unexternalized-strings.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
import { TSESTree, AST_NODE_TYPES } from '@typescript-eslint/utils';
function isStringLiteral(node: TSESTree.Node | null | undefined): node is TSESTree.StringLiteral {
return !!node && node.type === AST_NODE_TYPES.Literal && typeof node.value === 'string';
}
function isDoubleQuoted(node: TSESTree.StringLiteral): boolean {
return node.raw[0] === '"' && node.raw[node.raw.length - 1] === '"';
}
export = new class NoUnexternalizedStrings implements eslint.Rule.RuleModule {
private static _rNlsKeys = /^[_a-zA-Z0-9][ .\-_a-zA-Z0-9]*$/;
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
doubleQuoted: 'Only use double-quoted strings for externalized strings.',
badKey: 'The key \'{{key}}\' doesn\'t conform to a valid localize identifier.',
duplicateKey: 'Duplicate key \'{{key}}\' with different message value.',
badMessage: 'Message argument to \'{{message}}\' must be a string literal.'
},
schema: false,
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
const externalizedStringLiterals = new Map<string, { call: TSESTree.CallExpression; message: TSESTree.Node }[]>();
const doubleQuotedStringLiterals = new Set<TSESTree.Node>();
function collectDoubleQuotedStrings(node: TSESTree.Literal) {
if (isStringLiteral(node) && isDoubleQuoted(node)) {
doubleQuotedStringLiterals.add(node);
}
}
function visitLocalizeCall(node: TSESTree.CallExpression) {
// localize(key, message)
const [keyNode, messageNode] = (<TSESTree.CallExpression>node).arguments;
// (1)
// extract key so that it can be checked later
let key: string | undefined;
if (isStringLiteral(keyNode)) {
doubleQuotedStringLiterals.delete(keyNode);
key = keyNode.value;
} else if (keyNode.type === AST_NODE_TYPES.ObjectExpression) {
for (const property of keyNode.properties) {
if (property.type === AST_NODE_TYPES.Property && !property.computed) {
if (property.key.type === AST_NODE_TYPES.Identifier && property.key.name === 'key') {
if (isStringLiteral(property.value)) {
doubleQuotedStringLiterals.delete(property.value);
key = property.value.value;
break;
}
}
}
}
}
if (typeof key === 'string') {
let array = externalizedStringLiterals.get(key);
if (!array) {
array = [];
externalizedStringLiterals.set(key, array);
}
array.push({ call: node, message: messageNode });
}
// (2)
// remove message-argument from doubleQuoted list and make
// sure it is a string-literal
doubleQuotedStringLiterals.delete(messageNode);
if (!isStringLiteral(messageNode)) {
context.report({
loc: messageNode.loc,
messageId: 'badMessage',
data: { message: context.getSourceCode().getText(<any>node) }
});
}
}
function visitL10NCall(node: TSESTree.CallExpression) {
// localize(key, message)
const [messageNode] = (<TSESTree.CallExpression>node).arguments;
// remove message-argument from doubleQuoted list and make
// sure it is a string-literal
if (isStringLiteral(messageNode)) {
doubleQuotedStringLiterals.delete(messageNode);
} else if (messageNode.type === AST_NODE_TYPES.ObjectExpression) {
for (const prop of messageNode.properties) {
if (prop.type === AST_NODE_TYPES.Property) {
if (prop.key.type === AST_NODE_TYPES.Identifier && prop.key.name === 'message') {
doubleQuotedStringLiterals.delete(prop.value);
break;
}
}
}
}
}
function reportBadStringsAndBadKeys() {
// (1)
// report all strings that are in double quotes
for (const node of doubleQuotedStringLiterals) {
context.report({ loc: node.loc, messageId: 'doubleQuoted' });
}
for (const [key, values] of externalizedStringLiterals) {
// (2)
// report all invalid NLS keys
if (!key.match(NoUnexternalizedStrings._rNlsKeys)) {
for (const value of values) {
context.report({ loc: value.call.loc, messageId: 'badKey', data: { key } });
}
}
// (2)
// report all invalid duplicates (same key, different message)
if (values.length > 1) {
for (let i = 1; i < values.length; i++) {
if (context.getSourceCode().getText(<any>values[i - 1].message) !== context.getSourceCode().getText(<any>values[i].message)) {
context.report({ loc: values[i].call.loc, messageId: 'duplicateKey', data: { key } });
}
}
}
}
}
return {
['Literal']: (node: any) => collectDoubleQuotedStrings(node),
['ExpressionStatement[directive] Literal:exit']: (node: any) => doubleQuotedStringLiterals.delete(node),
// localize(...)
['CallExpression[callee.type="MemberExpression"][callee.object.name="nls"][callee.property.name="localize"]:exit']: (node: any) => visitLocalizeCall(node),
// localize2(...)
['CallExpression[callee.type="MemberExpression"][callee.object.name="nls"][callee.property.name="localize2"]:exit']: (node: any) => visitLocalizeCall(node),
// vscode.l10n.t(...)
['CallExpression[callee.type="MemberExpression"][callee.object.property.name="l10n"][callee.property.name="t"]:exit']: (node: any) => visitL10NCall(node),
// l10n.t(...)
['CallExpression[callee.object.name="l10n"][callee.property.name="t"]:exit']: (node: any) => visitL10NCall(node),
['CallExpression[callee.name="localize"][arguments.length>=2]:exit']: (node: any) => visitLocalizeCall(node),
['CallExpression[callee.name="localize2"][arguments.length>=2]:exit']: (node: any) => visitLocalizeCall(node),
['Program:exit']: reportBadStringsAndBadKeys,
};
}
};
================================================
FILE: .eslint-plugin-local/code-no-unused-expressions.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
// FORKED FROM https://github.com/eslint/eslint/blob/b23ad0d789a909baf8d7c41a35bc53df932eaf30/lib/rules/no-unused-expressions.js
// and added support for `OptionalCallExpression`, see https://github.com/facebook/create-react-app/issues/8107 and https://github.com/eslint/eslint/issues/12642
/**
* @fileoverview Flag expressions in statement position that do not side effect
* @author Michael Ficarra
*/
import * as eslint from 'eslint';
import { TSESTree } from '@typescript-eslint/utils';
import * as ESTree from 'estree';
//------------------------------------------------------------------------------
// Rule Definition
//------------------------------------------------------------------------------
module.exports = {
meta: {
type: 'suggestion',
docs: {
description: 'disallow unused expressions',
category: 'Best Practices',
recommended: false,
url: 'https://eslint.org/docs/rules/no-unused-expressions'
},
schema: [
{
type: 'object',
properties: {
allowShortCircuit: {
type: 'boolean',
default: false
},
allowTernary: {
type: 'boolean',
default: false
},
allowTaggedTemplates: {
type: 'boolean',
default: false
}
},
additionalProperties: false
}
]
},
create(context: eslint.Rule.RuleContext) {
const config = context.options[0] || {},
allowShortCircuit = config.allowShortCircuit || false,
allowTernary = config.allowTernary || false,
allowTaggedTemplates = config.allowTaggedTemplates || false;
/**
* @param node any node
* @returns whether the given node structurally represents a directive
*/
function looksLikeDirective(node: TSESTree.Node): boolean {
return node.type === 'ExpressionStatement' &&
node.expression.type === 'Literal' && typeof node.expression.value === 'string';
}
/**
* @param predicate ([a] -> Boolean) the function used to make the determination
* @param list the input list
* @returns the leading sequence of members in the given list that pass the given predicate
*/
function takeWhile<T>(predicate: (item: T) => boolean, list: T[]): T[] {
for (let i = 0; i < list.length; ++i) {
if (!predicate(list[i])) {
return list.slice(0, i);
}
}
return list.slice();
}
/**
* @param node a Program or BlockStatement node
* @returns the leading sequence of directive nodes in the given node's body
*/
function directives(node: TSESTree.Program | TSESTree.BlockStatement): TSESTree.Node[] {
return takeWhile(looksLikeDirective, node.body);
}
/**
* @param node any node
* @param ancestors the given node's ancestors
* @returns whether the given node is considered a directive in its current position
*/
function isDirective(node: TSESTree.Node, ancestors: TSESTree.Node[]): boolean {
const parent = ancestors[ancestors.length - 1],
grandparent = ancestors[ancestors.length - 2];
return (parent.type === 'Program' || parent.type === 'BlockStatement' &&
(/Function/u.test(grandparent.type))) &&
directives(parent).indexOf(node) >= 0;
}
/**
* Determines whether or not a given node is a valid expression. Recurses on short circuit eval and ternary nodes if enabled by flags.
* @param node any node
* @returns whether the given node is a valid expression
*/
function isValidExpression(node: TSESTree.Node): boolean {
if (allowTernary) {
// Recursive check for ternary and logical expressions
if (node.type === 'ConditionalExpression') {
return isValidExpression(node.consequent) && isValidExpression(node.alternate);
}
}
if (allowShortCircuit) {
if (node.type === 'LogicalExpression') {
return isValidExpression(node.right);
}
}
if (allowTaggedTemplates && node.type === 'TaggedTemplateExpression') {
return true;
}
if (node.type === 'ExpressionStatement') {
return isValidExpression(node.expression);
}
return /^(?:Assignment|OptionalCall|Call|New|Update|Yield|Await|Chain)Expression$/u.test(node.type) ||
(node.type === 'UnaryExpression' && ['delete', 'void'].indexOf(node.operator) >= 0);
}
return {
ExpressionStatement(node: TSESTree.ExpressionStatement) {
if (!isValidExpression(node.expression) && !isDirective(node, <TSESTree.Node[]>context.sourceCode.getAncestors(node))) {
context.report({ node: <ESTree.Node>node, message: `Expected an assignment or function call and instead saw an expression. ${node.expression}` });
}
}
};
}
};
================================================
FILE: .eslint-plugin-local/code-parameter-properties-must-have-explicit-accessibility.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
import { TSESTree } from '@typescript-eslint/utils';
/**
* Enforces that all parameter properties have an explicit access modifier (public, protected, private).
*
* This catches a common bug where a service is accidentally made public by simply writing: `readonly prop: Foo`
*/
export = new class implements eslint.Rule.RuleModule {
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
function check(inNode: any) {
const node: TSESTree.TSParameterProperty = inNode;
// For now, only apply to injected services
const firstDecorator = node.decorators?.at(0);
if (
firstDecorator?.expression.type !== 'Identifier'
|| !firstDecorator.expression.name.endsWith('Service')
) {
return;
}
if (!node.accessibility) {
context.report({
node: inNode,
message: 'Parameter properties must have an explicit access modifier.'
});
}
}
return {
['TSParameterProperty']: check,
};
}
};
================================================
FILE: .eslint-plugin-local/code-translation-remind.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
import { TSESTree } from '@typescript-eslint/utils';
import { readFileSync } from 'fs';
import { createImportRuleListener } from './utils';
export = new class TranslationRemind implements eslint.Rule.RuleModule {
private static NLS_MODULE = 'vs/nls';
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
missing: 'Please add \'{{resource}}\' to ./build/lib/i18n.resources.json file to use translations here.'
},
schema: false,
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
return createImportRuleListener((node, path) => this._checkImport(context, node, path));
}
private _checkImport(context: eslint.Rule.RuleContext, node: TSESTree.Node, path: string) {
if (path !== TranslationRemind.NLS_MODULE) {
return;
}
const currentFile = context.getFilename();
const matchService = currentFile.match(/vs\/workbench\/services\/\w+/);
const matchPart = currentFile.match(/vs\/workbench\/contrib\/\w+/);
if (!matchService && !matchPart) {
return;
}
const resource = matchService ? matchService[0] : matchPart![0];
let resourceDefined = false;
let json;
try {
json = readFileSync('./build/lib/i18n.resources.json', 'utf8');
} catch (e) {
console.error('[translation-remind rule]: File with resources to pull from Transifex was not found. Aborting translation resource check for newly defined workbench part/service.');
return;
}
const workbenchResources = JSON.parse(json).workbench;
workbenchResources.forEach((existingResource: any) => {
if (existingResource.name === resource) {
resourceDefined = true;
return;
}
});
if (!resourceDefined) {
context.report({
loc: node.loc,
messageId: 'missing',
data: { resource }
});
}
}
};
================================================
FILE: .eslint-plugin-local/index.js
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
const glob = require('glob');
const path = require('path');
require('ts-node').register({ experimentalResolver: true, transpileOnly: true });
// Re-export all .ts files as rules
const rules = {};
glob.sync(`${__dirname}/*.ts`).forEach((file) => {
rules[path.basename(file, '.ts')] = require(file);
});
exports.rules = rules;
================================================
FILE: .eslint-plugin-local/package.json
================================================
{
"type": "commonjs"
}
================================================
FILE: .eslint-plugin-local/tsconfig.json
================================================
{
"compilerOptions": {
"target": "es2020",
"lib": [
"ES2020"
],
"module": "commonjs",
"esModuleInterop": true,
"alwaysStrict": true,
"allowJs": true,
"strict": true,
"exactOptionalPropertyTypes": false,
"useUnknownInCatchVariables": false,
"noUnusedLocals": true,
"noUnusedParameters": true,
"newLine": "lf",
"noEmit": true
},
"include": [
"**/*.ts",
"**/*.js"
],
"exclude": [
"node_modules/**"
]
}
================================================
FILE: .eslint-plugin-local/utils.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
import { TSESTree } from '@typescript-eslint/utils';
export function createImportRuleListener(validateImport: (node: TSESTree.Literal, value: string) => any): eslint.Rule.RuleListener {
function _checkImport(node: TSESTree.Node | null) {
if (node && node.type === 'Literal' && typeof node.value === 'string') {
validateImport(node, node.value);
}
}
return {
// import ??? from 'module'
ImportDeclaration: (node: any) => {
_checkImport((<TSESTree.ImportDeclaration>node).source);
},
// import('module').then(...) OR await import('module')
['CallExpression[callee.type="Import"][arguments.length=1] > Literal']: (node: any) => {
_checkImport(node);
},
// import foo = ...
['TSImportEqualsDeclaration > TSExternalModuleReference > Literal']: (node: any) => {
_checkImport(node);
},
// export ?? from 'module'
ExportAllDeclaration: (node: any) => {
_checkImport((<TSESTree.ExportAllDeclaration>node).source);
},
// export {foo} from 'module'
ExportNamedDeclaration: (node: any) => {
_checkImport((<TSESTree.ExportNamedDeclaration>node).source);
},
};
}
================================================
FILE: .eslint-plugin-local/vscode-dts-cancellation.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
import { AST_NODE_TYPES, TSESTree } from '@typescript-eslint/utils';
export = new class ApiProviderNaming implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
noToken: 'Function lacks a cancellation token, preferable as last argument',
},
schema: false,
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
return {
['TSInterfaceDeclaration[id.name=/.+Provider/] TSMethodSignature[key.name=/^(provide|resolve).+/]']: (node: any) => {
let found = false;
for (const param of (<TSESTree.TSMethodSignature>node).params) {
if (param.type === AST_NODE_TYPES.Identifier) {
found = found || param.name === 'token';
}
}
if (!found) {
context.report({
node,
messageId: 'noToken'
});
}
}
};
}
};
================================================
FILE: .eslint-plugin-local/vscode-dts-create-func.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
import { TSESTree, AST_NODE_TYPES } from '@typescript-eslint/utils';
export = new class ApiLiteralOrTypes implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
docs: { url: 'https://github.com/microsoft/vscode/wiki/Extension-API-guidelines#creating-objects' },
messages: { sync: '`createXYZ`-functions are constructor-replacements and therefore must return sync', },
schema: false,
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
return {
['TSDeclareFunction Identifier[name=/create.*/]']: (node: any) => {
const decl = <TSESTree.FunctionDeclaration>(<TSESTree.Identifier>node).parent;
if (decl.returnType?.typeAnnotation.type !== AST_NODE_TYPES.TSTypeReference) {
return;
}
if (decl.returnType.typeAnnotation.typeName.type !== AST_NODE_TYPES.Identifier) {
return;
}
const ident = decl.returnType.typeAnnotation.typeName.name;
if (ident === 'Promise' || ident === 'Thenable') {
context.report({
node,
messageId: 'sync'
});
}
}
};
}
};
================================================
FILE: .eslint-plugin-local/vscode-dts-event-naming.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
import { TSESTree, AST_NODE_TYPES } from '@typescript-eslint/utils';
export = new class ApiEventNaming implements eslint.Rule.RuleModule {
private static _nameRegExp = /on(Did|Will)([A-Z][a-z]+)([A-Z][a-z]+)?/;
readonly meta: eslint.Rule.RuleMetaData = {
docs: {
url: 'https://github.com/microsoft/vscode/wiki/Extension-API-guidelines#event-naming'
},
messages: {
naming: 'Event names must follow this patten: `on[Did|Will]<Verb><Subject>`',
verb: 'Unknown verb \'{{verb}}\' - is this really a verb? Iff so, then add this verb to the configuration',
subject: 'Unknown subject \'{{subject}}\' - This subject has not been used before but it should refer to something in the API',
unknown: 'UNKNOWN event declaration, lint-rule needs tweaking'
},
schema: false,
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
const config = <{ allowed: string[]; verbs: string[] }>context.options[0];
const allowed = new Set(config.allowed);
const verbs = new Set(config.verbs);
return {
['TSTypeAnnotation TSTypeReference Identifier[name="Event"]']: (node: any) => {
const def = (<TSESTree.Identifier>node).parent?.parent?.parent;
const ident = this.getIdent(def);
if (!ident) {
// event on unknown structure...
return context.report({
node,
message: 'unknown'
});
}
if (allowed.has(ident.name)) {
// configured exception
return;
}
const match = ApiEventNaming._nameRegExp.exec(ident.name);
if (!match) {
context.report({
node: ident,
messageId: 'naming'
});
return;
}
// check that <verb> is spelled out (configured) as verb
if (!verbs.has(match[2].toLowerCase())) {
context.report({
node: ident,
messageId: 'verb',
data: { verb: match[2] }
});
}
// check that a subject (if present) has occurred
if (match[3]) {
const regex = new RegExp(match[3], 'ig');
const parts = context.getSourceCode().getText().split(regex);
if (parts.length < 3) {
context.report({
node: ident,
messageId: 'subject',
data: { subject: match[3] }
});
}
}
}
};
}
private getIdent(def: TSESTree.Node | undefined): TSESTree.Identifier | undefined {
if (!def) {
return;
}
if (def.type === AST_NODE_TYPES.Identifier) {
return def;
} else if ((def.type === AST_NODE_TYPES.TSPropertySignature || def.type === AST_NODE_TYPES.PropertyDefinition) && def.key.type === AST_NODE_TYPES.Identifier) {
return def.key;
}
return this.getIdent(def.parent);
}
};
================================================
FILE: .eslint-plugin-local/vscode-dts-interface-naming.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
import { TSESTree } from '@typescript-eslint/utils';
export = new class ApiInterfaceNaming implements eslint.Rule.RuleModule {
private static _nameRegExp = /^I[A-Z]/;
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
naming: 'Interfaces must not be prefixed with uppercase `I`',
},
schema: false,
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
return {
['TSInterfaceDeclaration Identifier']: (node: any) => {
const name = (<TSESTree.Identifier>node).name;
if (ApiInterfaceNaming._nameRegExp.test(name)) {
context.report({
node,
messageId: 'naming'
});
}
}
};
}
};
================================================
FILE: .eslint-plugin-local/vscode-dts-literal-or-types.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
import { TSESTree } from '@typescript-eslint/utils';
export = new class ApiLiteralOrTypes implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
docs: { url: 'https://github.com/microsoft/vscode/wiki/Extension-API-guidelines#enums' },
messages: { useEnum: 'Use enums, not literal-or-types', },
schema: false,
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
return {
['TSTypeAnnotation TSUnionType']: (node: any) => {
if ((<TSESTree.TSUnionType>node).types.every(value => value.type === 'TSLiteralType')) {
context.report({
node: node,
messageId: 'useEnum'
});
}
}
};
}
};
================================================
FILE: .eslint-plugin-local/vscode-dts-provider-naming.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
import { TSESTree } from '@typescript-eslint/utils';
export = new class ApiProviderNaming implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
naming: 'A provider should only have functions like provideXYZ or resolveXYZ',
},
schema: false,
};
private static _providerFunctionNames = /^(provide|resolve|prepare).+/;
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
const config = <{ allowed: string[] }>context.options[0];
const allowed = new Set(config.allowed);
return {
['TSInterfaceDeclaration[id.name=/.+Provider/] TSMethodSignature']: (node: any) => {
const interfaceName = (<TSESTree.TSInterfaceDeclaration>(<TSESTree.Identifier>node).parent?.parent).id.name;
if (allowed.has(interfaceName)) {
// allowed
return;
}
const methodName = (<any>(<TSESTree.TSMethodSignatureNonComputedName>node).key).name;
if (!ApiProviderNaming._providerFunctionNames.test(methodName)) {
context.report({
node,
messageId: 'naming'
});
}
}
};
}
};
================================================
FILE: .eslint-plugin-local/vscode-dts-string-type-literals.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
import { TSESTree } from '@typescript-eslint/utils';
export = new class ApiTypeDiscrimination implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
docs: { url: 'https://github.com/microsoft/vscode/wiki/Extension-API-guidelines' },
messages: {
noTypeDiscrimination: 'Do not use type discrimination properties'
},
schema: false,
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
return {
['TSPropertySignature[optional=false] TSTypeAnnotation TSLiteralType Literal']: (node: any) => {
const raw = String((<TSESTree.Literal>node).raw);
if (/^('|").*\1$/.test(raw)) {
context.report({
node: node,
messageId: 'noTypeDiscrimination'
});
}
}
};
}
};
================================================
FILE: .eslint-plugin-local/vscode-dts-use-export.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { TSESTree } from '@typescript-eslint/utils';
import * as eslint from 'eslint';
export = new class VscodeDtsUseExport implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
useExport: `Public api types must use 'export'`,
},
schema: false,
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
return {
['TSModuleDeclaration :matches(TSInterfaceDeclaration, ClassDeclaration, VariableDeclaration, TSEnumDeclaration, TSTypeAliasDeclaration)']: (node: any) => {
const parent = (<TSESTree.Node>node).parent;
if (parent && parent.type !== TSESTree.AST_NODE_TYPES.ExportNamedDeclaration) {
context.report({
node,
messageId: 'useExport'
});
}
}
};
}
};
================================================
FILE: .eslint-plugin-local/vscode-dts-use-thenable.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
export = new class ApiEventNaming implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
usage: 'Use the Thenable-type instead of the Promise type',
},
schema: false,
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
return {
['TSTypeAnnotation TSTypeReference Identifier[name="Promise"]']: (node: any) => {
context.report({
node,
messageId: 'usage',
});
}
};
}
};
================================================
FILE: .eslint-plugin-local/vscode-dts-vscode-in-comments.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
import type * as estree from 'estree';
export = new class ApiVsCodeInComments implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
comment: `Don't use the term 'vs code' in comments`
},
schema: false,
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
const sourceCode = context.getSourceCode();
return {
['Program']: (_node: any) => {
for (const comment of sourceCode.getAllComments()) {
if (comment.type !== 'Block') {
continue;
}
if (!comment.range) {
continue;
}
const startIndex = comment.range[0] + '/*'.length;
const re = /vs code/ig;
let match: RegExpExecArray | null;
while ((match = re.exec(comment.value))) {
// Allow using 'VS Code' in quotes
if (comment.value[match.index - 1] === `'` && comment.value[match.index + match[0].length] === `'`) {
continue;
}
// Types for eslint seem incorrect
const start = sourceCode.getLocFromIndex(startIndex + match.index) as any as estree.Position;
const end = sourceCode.getLocFromIndex(startIndex + match.index + match[0].length) as any as estree.Position;
context.report({
messageId: 'comment',
loc: { start, end }
});
}
}
}
};
}
};
================================================
FILE: .git-blame-ignore-revs
================================================
# https://git-scm.com/docs/git-blame#Documentation/git-blame.txt---ignore-revs-fileltfilegt
# https://docs.github.com/en/repositories/working-with-files/using-files/viewing-a-file#ignore-commits-in-the-blame-view
# mjbvz: Fix spacing
13f4f052582bcec3d6c6c6a70d995c9dee2cac13
# mjbvz: Add script to run build with noImplicitOverride
ae1452eea678f5266ef513f22dacebb90955d6c9
# alexdima: Revert "bump version"
537ba0ef1791c090bb18bc68d727816c0451c117
# alexdima: bump version
387a0dcb82df729e316ca2518a9ed81a75482b18
# joaomoreno: add ghooks dev dependency
0dfc06e0f9de5925de792cdf9f0e6597bb25908f
# joaomoreno: line endings
12ab70d329a13dd5b18d892cd40edd7138259bc3
# mjbvz: organize imports
494cbbd02d67e87727ec885f98d19551aa33aad1
a3cb14be7f2cceadb17adf843675b1a59537dbbd
ee1655a82ebdfd38bf8792088a6602c69f7bbd94
# jrieken: new eslint-rule
4a130c40ed876644ed8af2943809d08221375408
# bpasero: ESM migration
6b924c51528e663dda5091a1493229a361676aca
================================================
FILE: .gitattributes
================================================
* text=auto
LICENSE.txt eol=crlf
ThirdPartyNotices.txt eol=crlf
*.bat eol=crlf
*.cmd eol=crlf
*.ps1 eol=lf
*.sh eol=lf
*.rtf -text
**/*.json linguist-language=jsonc
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
================================================
FILE: .github/ISSUE_TEMPLATE/issue_template.md
================================================
---
name: Issue
about: Submit an Issue to Void
title: For VSCode-related issues (eg builds), please start the title with `[App]`. Otherwise, start it with `[Bug]` or `[Feature]`.
---
1. Press `Cmd+Shift+P` in Void, and type `Help: About`. Please paste the information here. Also let us know any other relevant details, like the model and provider you're using if applicable.
2. Describe the issue/feature here!
================================================
FILE: .github/scripts/issue_triage.py
================================================
#!/usr/bin/env python
from __future__ import annotations
import os, sys, json, datetime, pathlib, textwrap, requests
from openai import OpenAI
REPO = "voideditor/void"
CACHE_FILE = pathlib.Path(".github/triage_cache.json")
STAMP_FILE = pathlib.Path(".github/last_triage.txt")
THEMES_MD = textwrap.dedent("""\
1. 🔗 LLM Integration & Provider Support
2. 🖥 App Build & Platform Compatibility
3. 🎯 Prompt, Token, and Cost Management
4. 🧩 Editor UX & Interaction Design
5. 🤖 Agent & Automation Features
6. ⚙️ System Config & Environment Setup
7. 🗃 Meta: Feature Comparison, Structure, and Naming
""").strip()
client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
headers = {"Authorization": f"Bearer {os.environ['GITHUB_TOKEN']}"}
# ───────── helpers ────────────────────────────────────────────────────────
def utc_iso_now() -> str:
return datetime.datetime.utcnow().replace(microsecond=0, tzinfo=datetime.timezone.utc).isoformat()
def read_stamp() -> str:
return STAMP_FILE.read_text().strip() if STAMP_FILE.exists() else "1970-01-01T00:00:00Z"
def save_stamp():
STAMP_FILE.parent.mkdir(parents=True, exist_ok=True)
STAMP_FILE.write_text(utc_iso_now())
def load_cache() -> dict[int, str]:
return json.loads(CACHE_FILE.read_text()) if CACHE_FILE.exists() else {}
def save_cache(d: dict[int, str]):
CACHE_FILE.parent.mkdir(parents=True, exist_ok=True)
CACHE_FILE.write_text(json.dumps(d, indent=2))
def fetch_open_issues(since_iso: str | None = None) -> list[dict]:
issues, page = [], 1
while True:
url = (
f"https://api.github.com/repos/{REPO}/issues"
f"?state=open&per_page=100&page={page}"
+ (f"&since={since_iso}" if since_iso else "")
)
chunk = requests.get(url, headers=headers).json()
if not chunk or (isinstance(chunk, dict) and chunk.get("message")):
break
issues.extend(i for i in chunk if "pull_request" not in i)
page += 1
return issues
# ───────── main ───────────────────────────────────────────────────────────
last_stamp = read_stamp()
changed = fetch_open_issues(since_iso=last_stamp)
# Fallback if **nothing** changed AND we have *no* existing output
if not changed:
cache_exists = CACHE_FILE.exists()
wiki_exists = pathlib.Path("wiki/Issue-Categories.md").exists()
if not cache_exists or not wiki_exists:
# first run or someone wiped the wiki → build from scratch
print("⏩ First run or empty wiki — fetching ALL open issues.", file=sys.stderr)
changed = fetch_open_issues() # full list
else:
print(f"✅ No issues updated since {last_stamp}. Nothing to classify.", file=sys.stderr)
save_stamp()
sys.exit(0)
# ---------------------------------------------------------------- prompt
issue_lines = "\n".join(f"- {i['title']} ({i['html_url']})" for i in changed)
prompt = textwrap.dedent(f"""\
You are an AI assistant helping triage GitHub issues into exactly 7 predefined themes.
Each issue must go into exactly one of the themes below:
{THEMES_MD}
Format your output in Markdown like:
## 🎯 Prompt, Token, and Cost Management
- [#123](https://github.com/org/repo/issues/123) – Title here
Classify these issues:
{issue_lines}
""")
resp = client.chat.completions.create(
model="gpt-4.1",
messages=[{"role": "user", "content": prompt}],
temperature=0.2,
)
md = resp.choices[0].message.content
# ---------------------------------------------------------------- parse GPT
new_map: dict[int, str] = {}
current = None
for ln in md.splitlines():
if ln.startswith("##"):
current = ln.lstrip("# ").strip()
elif ln.lstrip().startswith("- [#"):
try:
num = int(ln.split("[#")[1].split("]")[0])
new_map[num] = current
except Exception:
pass # ignore malformed lines
cache = load_cache()
cache.update(new_map)
save_cache(cache)
save_stamp()
# ---------------------------------------------------------------- rebuild wiki
order = [
"🔗 LLM Integration & Provider Support",
"🖥 App Build & Platform Compatibility",
"🎯 Prompt, Token, and Cost Management",
"🧩 Editor UX & Interaction Design",
"🤖 Agent & Automation Features",
"⚙️ System Config & Environment Setup",
"🗃 Meta: Feature Comparison, Structure, and Naming",
]
sections: dict[str, list[int]] = {t: [] for t in order}
# ── fetch ALL current open issues once (PRs filtered out) ────────────────
title_map: dict[int, tuple[str, str]] = {}
open_now: set[int] = set()
page = 1
while True:
batch = fetch_open_issues(since_iso=None) if page == 1 else []
if not batch:
break
for it in batch:
num = it["number"]
title_map[num] = (it["title"], it["html_url"])
open_now.add(num)
page += 1
# 🧹 drop any cached IDs that are no longer open issues (e.g., became a PR or were closed)
for stale in set(cache) - open_now:
del cache[stale]
save_cache(cache) # persist cleaned cache
# build sections from cleaned cache
for num, theme in cache.items():
if theme in sections: # extra safety
sections[theme].append(num)
# ---------------------------------------------------------------- print roadmap
for theme in order:
issues = sections[theme]
if issues:
print(f"## {theme}")
for n in sorted(issues):
title, url = title_map.get(n, ("(missing)", f"https://github.com/{REPO}/issues/{n}"))
print(f"- [#{n}]({url}) – {title}")
print()
================================================
FILE: .github/workflows/triage.yml
================================================
name: Issue Triage to Wiki
on:
workflow_dispatch:
schedule:
- cron: '0 */6 * * *' # every 6 hrs (UTC)
jobs:
roadmap:
runs-on: ubuntu-latest
steps:
# 1️⃣ Check out code (so the script and cache files are present)
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 1 # shallow clone
# 2️⃣ Set up Python
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
# 3️⃣ Install dependencies
- name: Install Python dependencies
run: |
pip install openai requests
# 4️⃣ Clone your fork’s Wiki
- name: Clone your fork's Wiki
run: |
git clone https://x-access-token:${{ secrets.WIKI_TOKEN }}@github.com/${{ github.repository }}.wiki.git wiki
# 5️⃣ (Optional) Show repo tree for debugging
- name: Show repo tree (debug)
run: |
echo "PWD: $(pwd)"
ls -al
ls -al .github/scripts || true
ls -al void/.github/scripts || true
# 6️⃣ Generate roadmap and push only if it changed
- name: Generate roadmap directly into wiki
run: |
python .github/scripts/issue_triage.py > wiki/_new.md
if ! cmp -s wiki/_new.md wiki/Issue-Categories.md ; then
mv wiki/_new.md wiki/Issue-Categories.md
cd wiki
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git add Issue-Categories.md
git commit -m "Auto-update Issue-Categories.md from GPT triage"
git push
else
echo "No content change – skipping wiki update"
fi
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
GITHUB_TOKEN: ${{ secrets.WIKI_TOKEN }}
================================================
FILE: .gitignore
================================================
.DS_Store
.cache
npm-debug.log
Thumbs.db
node_modules/
.build/
.vscode/extensions/**/out/
extensions/**/dist/
/out*/
/extensions/**/out/
build/node_modules
coverage/
test_data/
test-results/
test-results.xml
vscode.lsif
vscode.db
/.profile-oss
/cli/target
/cli/openssl
product.overrides.json
*.snap.actual
.vscode-test
# Void added these:
.tmp/
.tmp2/
.tool-versions
src/vs/workbench/contrib/void/browser/react/out/**
src/vs/workbench/contrib/void/browser/react/src2/**
================================================
FILE: .idx/dev.nix
================================================
# Created for Void
# To learn more about how to use Nix to configure your environment
# see: https://developers.google.com/idx/guides/customize-idx-env
{pkgs}: {
# Which nixpkgs channel to use.
channel = "stable-23.11"; # or "unstable"
# Use https://search.nixos.org/packages to find packages
packages = [
pkgs.nodejs_20
pkgs.yarn
pkgs.nodePackages.pnpm
pkgs.bun
pkgs.gh
];
# Sets environment variables in the workspace
env = {};
idx = {
# Search for the extensions you want on https://open-vsx.org/ and use "publisher.id"
extensions = [
# "vscodevim.vim"
];
workspace = {
# Runs when a workspace is first created with this `dev.nix` file
onCreate = {
npm-install = "npm ci --no-audit --prefer-offline --no-progress --timing";
# Open editors for the following files by default, if they exist:
default.openFiles = [
# Cover all the variations of language, src-dir, router (app/pages)
"pages/index.tsx" "pages/index.jsx"
"src/pages/index.tsx" "src/pages/index.jsx"
"app/page.tsx" "app/page.jsx"
"src/app/page.tsx" "src/app/page.jsx"
];
};
# To run something each time the workspace is (re)started, use the `onStart` hook
};
# Enable previews and customize configuration
previews = {
enable = true;
previews = {
web = {
command = ["npm" "run" "dev" "--" "--port" "$PORT" "--hostname" "0.0.0.0"];
manager = "web";
};
};
};
};
}
================================================
FILE: .lsifrc.json
================================================
{
"project": "src/tsconfig.json",
"source": "./package.json",
"package": "package.json",
"out": "vscode.lsif"
}
================================================
FILE: .mailmap
================================================
Daniel Imms <daimms@microsoft.com> Daniel Imms <tyriar@tyriar.com>
Raymond Zhao <raymondzhao@microsoft.com>
Tyler Leonhardt <tyleonha@microsoft.com> Tyler Leonhardt <me@tylerleonhardt.com>
João Moreno <joao.moreno@microsoft.com> João Moreno <mail@joaomoreno.com>
================================================
FILE: .mention-bot
================================================
{
"maxReviewers": 2,
"requiredOrgs": ["Microsoft"],
"skipAlreadyAssignedPR": true,
"skipAlreadyMentionedPR": true,
"skipCollaboratorPR": true
}
================================================
FILE: .npmrc
================================================
disturl="https://electronjs.org/headers"
target="34.3.2"
ms_build_id="11161073"
runtime="electron"
build_from_source="true"
legacy-peer-deps="true"
timeout=180000
================================================
FILE: .nvmrc
================================================
20.18.2
================================================
FILE: .voidrules
================================================
This is a fork of the VSCode repo called Void.
Most code we care about lives in src/vs/workbench/contrib/void.
You may often need to explore the full repo to find relevant parts of code.
Look for services and built-in functions that you might need to use to solve the problem.
In typescript, do NOT cast to types if not neccessary. NEVER lazily cast to 'any'. Find the correct type to apply and use it.
Do not add or remove semicolons to any of my files. Just go with convention and make the least number of changes.
Never modify files outside src/vs/workbench/contrib/void without consulting with the user first.
All types that map from a value A to B should be called bOfA. For example, if you create a hashmap that goes from toolId to toolName, it should be called toolNameOfToolId, etc.
Do not run anything to validate your changes; tell the user what to do instead.
================================================
FILE: .vscode/cglicenses.schema.json
================================================
{
"type": "array",
"items": {
"oneOf": [
{
"type": "object",
"required": [
"name",
"prependLicenseText"
],
"properties": {
"name": {
"type": "string",
"description": "The name of the dependency"
},
"fullLicenseText": {
"type": "array",
"description": "The complete license text of the dependency",
"items": {
"type": "string"
}
},
"prependLicenseText": {
"type": "array",
"description": "A piece of text to prepend to the auto-detected license text of the dependency",
"items": {
"type": "string"
}
}
}
},
{
"type": "object",
"required": [
"name",
"fullLicenseText"
],
"properties": {
"name": {
"type": "string",
"description": "The name of the dependency"
},
"fullLicenseText": {
"type": "array",
"description": "The complete license text of the dependency",
"items": {
"type": "string"
}
},
"prependLicenseText": {
"type": "array",
"description": "A piece of text to prepend to the auto-detected license text of the dependency",
"items": {
"type": "string"
}
}
}
},
{
"type": "object",
"required": [
"name",
"fullLicenseTextUri"
],
"properties": {
"name": {
"type": "string",
"description": "The name of the dependency"
},
"fullLicenseTextUri": {
"type": "string",
"description": "The URI to the license text of this repository",
"format": "uri"
},
"prependLicenseText": {
"type": "array",
"description": "A piece of text to prepend to the auto-detected license text of the dependency",
"items": {
"type": "string"
}
}
}
}
]
}
}
================================================
FILE: .vscode/extensions/vscode-selfhost-import-aid/.vscode/launch.json
================================================
{
"configurations": [
{
"args": [
"--extensionDevelopmentPath=${workspaceFolder}",
"--enable-proposed-api=ms-vscode.vscode-selfhost-import-aid"
],
"name": "Launch Extension",
"outFiles": [
"${workspaceFolder}/out/**/*.js"
],
"request": "launch",
"type": "extensionHost"
}
]
}
================================================
FILE: .vscode/extensions/vscode-selfhost-import-aid/.vscode/settings.json
================================================
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "vscode.typescript-language-features",
"editor.codeActionsOnSave": {
"source.organizeImports": "always"
}
}
================================================
FILE: .vscode/extensions/vscode-selfhost-import-aid/package.json
================================================
{
"name": "vscode-selfhost-import-aid",
"displayName": "VS Code Selfhost Import Aid",
"description": "Util to improve dealing with imports",
"engines": {
"vscode": "^1.88.0"
},
"version": "0.0.1",
"publisher": "ms-vscode",
"categories": [
"Other"
],
"activationEvents": [
"onLanguage:typescript"
],
"main": "./out/extension.js",
"repository": {
"type": "git",
"url": "https://github.com/microsoft/vscode.git"
},
"license": "MIT",
"scripts": {
"compile": "gulp compile-extension:vscode-selfhost-import-aid",
"watch": "gulp watch-extension:vscode-selfhost-import-aid"
},
"dependencies": {
"typescript": "5.5.4"
}
}
================================================
FILE: .vscode/extensions/vscode-selfhost-import-aid/src/extension.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as vscode from 'vscode';
import * as ts from 'typescript';
import * as path from 'path';
export async function activate(context: vscode.ExtensionContext) {
const fileIndex = new class {
private _currentRun?: Thenable<void>;
private _disposables: vscode.Disposable[] = [];
private readonly _index = new Map<string, vscode.Uri>();
constructor() {
const watcher = vscode.workspace.createFileSystemWatcher('**/*.ts', false, true, false);
this._disposables.push(watcher.onDidChange(e => { this._index.set(e.toString(), e); }));
this._disposables.push(watcher.onDidDelete(e => { this._index.delete(e.toString()); }));
this._disposables.push(watcher);
this._refresh(false);
}
dispose(): void {
for (const disposable of this._disposables) {
disposable.dispose();
}
this._disposables = [];
this._index.clear();
}
async all(token: vscode.CancellationToken) {
await Promise.race([this._currentRun, new Promise<void>(resolve => token.onCancellationRequested(resolve))]);
if (token.isCancellationRequested) {
return undefined;
}
return Array.from(this._index.values());
}
private _refresh(clear: boolean) {
// TODO@jrieken LATEST API! findFiles2New
this._currentRun = vscode.workspace.findFiles('src/vs/**/*.ts', '{**/node_modules/**,**/extensions/**}').then(all => {
if (clear) {
this._index.clear();
}
for (const item of all) {
this._index.set(item.toString(), item);
}
});
}
};
const selector: vscode.DocumentSelector = 'typescript';
function findNodeAtPosition(document: vscode.TextDocument, node: ts.Node, position: vscode.Position): ts.Node | undefined {
if (node.getStart() <= document.offsetAt(position) && node.getEnd() >= document.offsetAt(position)) {
return ts.forEachChild(node, child => findNodeAtPosition(document, child, position)) || node;
}
return undefined;
}
function findImportAt(document: vscode.TextDocument, position: vscode.Position): ts.ImportDeclaration | undefined {
const sourceFile = ts.createSourceFile(document.fileName, document.getText(), ts.ScriptTarget.Latest, true);
const node = findNodeAtPosition(document, sourceFile, position);
if (node && ts.isStringLiteral(node) && ts.isImportDeclaration(node.parent)) {
return node.parent;
}
return undefined;
}
const completionProvider = new class implements vscode.CompletionItemProvider {
async provideCompletionItems(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken): Promise<vscode.CompletionList | undefined> {
const index = document.getText().lastIndexOf(' from \'');
if (index < 0 || document.positionAt(index).line < position.line) {
// line after last import is before position
// -> no completion, safe a parse call
return undefined;
}
const node = findImportAt(document, position);
if (!node) {
return undefined;
}
const range = new vscode.Range(document.positionAt(node.moduleSpecifier.pos), document.positionAt(node.moduleSpecifier.end));
const uris = await fileIndex.all(token);
if (!uris) {
return undefined;
}
const result = new vscode.CompletionList();
result.isIncomplete = true;
for (const item of uris) {
if (!item.path.endsWith('.ts')) {
continue;
}
let relativePath = path.relative(path.dirname(document.uri.path), item.path);
relativePath = relativePath.startsWith('.') ? relativePath : `./${relativePath}`;
const label = path.basename(item.path, path.extname(item.path));
const insertText = ` '${relativePath.replace(/\.ts$/, '.js')}'`;
const filterText = ` '${label}'`;
const completion = new vscode.CompletionItem({
label: label,
description: vscode.workspace.asRelativePath(item),
});
completion.kind = vscode.CompletionItemKind.File;
completion.insertText = insertText;
completion.filterText = filterText;
completion.range = range;
result.items.push(completion);
}
return result;
}
};
class ImportCodeActions implements vscode.CodeActionProvider {
static FixKind = vscode.CodeActionKind.QuickFix.append('esmImport');
static SourceKind = vscode.CodeActionKind.SourceFixAll.append('esmImport');
async provideCodeActions(document: vscode.TextDocument, range: vscode.Range | vscode.Selection, context: vscode.CodeActionContext, token: vscode.CancellationToken): Promise<vscode.CodeAction[] | undefined> {
if (context.only && ImportCodeActions.SourceKind.intersects(context.only)) {
return this._provideFixAll(document, context, token);
}
return this._provideFix(document, range, context, token);
}
private async _provideFixAll(document: vscode.TextDocument, context: vscode.CodeActionContext, token: vscode.CancellationToken): Promise<vscode.CodeAction[] | undefined> {
const diagnostics = context.diagnostics
.filter(d => d.code === 2307)
.sort((a, b) => b.range.start.compareTo(a.range.start));
if (diagnostics.length === 0) {
return undefined;
}
const uris = await fileIndex.all(token);
if (!uris) {
return undefined;
}
const result = new vscode.CodeAction(`Fix All ESM Imports`, ImportCodeActions.SourceKind);
result.edit = new vscode.WorkspaceEdit();
result.diagnostics = [];
for (const diag of diagnostics) {
const actions = this._provideFixesForDiag(document, diag, uris);
if (actions.length === 0) {
console.log(`ESM: no fixes for "${diag.message}"`);
continue;
}
if (actions.length > 1) {
console.log(`ESM: more than one fix for "${diag.message}", taking first`);
console.log(actions);
}
const [first] = actions;
result.diagnostics.push(diag);
for (const [uri, edits] of first.edit!.entries()) {
result.edit.set(uri, edits);
}
}
// console.log(result.edit.get(document.uri));
return [result];
}
private async _provideFix(document: vscode.TextDocument, range: vscode.Range | vscode.Selection, context: vscode.CodeActionContext, token: vscode.CancellationToken): Promise<vscode.CodeAction[] | undefined> {
const uris = await fileIndex.all(token);
if (!uris) {
return [];
}
const diag = context.diagnostics.find(d => d.code === 2307 && d.range.intersection(range));
return diag && this._provideFixesForDiag(document, diag, uris);
}
private _provideFixesForDiag(document: vscode.TextDocument, diag: vscode.Diagnostic, uris: Iterable<vscode.Uri>): vscode.CodeAction[] {
const node = findImportAt(document, diag.range.start)?.moduleSpecifier;
if (!node || !ts.isStringLiteral(node)) {
return [];
}
const nodeRange = new vscode.Range(document.positionAt(node.pos), document.positionAt(node.end));
const name = path.basename(node.text, path.extname(node.text));
const result: vscode.CodeAction[] = [];
for (const item of uris) {
if (path.basename(item.path, path.extname(item.path)) === name) {
let relativePath = path.relative(path.dirname(document.uri.path), item.path).replace(/\.ts$/, '.js');
relativePath = relativePath.startsWith('.') ? relativePath : `./${relativePath}`;
const action = new vscode.CodeAction(`Fix to '${relativePath}'`, ImportCodeActions.FixKind);
action.edit = new vscode.WorkspaceEdit();
action.edit.replace(document.uri, nodeRange, ` '${relativePath}'`);
action.diagnostics = [diag];
result.push(action);
}
}
return result;
}
}
context.subscriptions.push(fileIndex);
context.subscriptions.push(vscode.languages.registerCompletionItemProvider(selector, completionProvider));
context.subscriptions.push(vscode.languages.registerCodeActionsProvider(selector, new ImportCodeActions(), { providedCodeActionKinds: [ImportCodeActions.FixKind, ImportCodeActions.SourceKind] }));
}
================================================
FILE: .vscode/extensions/vscode-selfhost-import-aid/tsconfig.json
================================================
{
"extends": "../../../extensions/tsconfig.base.json",
"compilerOptions": {
"outDir": "./out",
"types": [
"node",
"mocha",
]
},
"include": [
"src/**/*",
"../../../src/vscode-dts/vscode.d.ts"
]
}
================================================
FILE: .vscode/extensions/vscode-selfhost-test-provider/.vscode/launch.json
================================================
{
"configurations": [
{
"args": ["--extensionDevelopmentPath=${workspaceFolder}", "--enable-proposed-api=ms-vscode.vscode-selfhost-test-provider"],
"name": "Launch Extension",
"outFiles": ["${workspaceFolder}/out/**/*.js"],
"request": "launch",
"type": "extensionHost"
}
]
}
================================================
FILE: .vscode/extensions/vscode-selfhost-test-provider/.vscode/settings.json
================================================
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "vscode.typescript-language-features",
"editor.codeActionsOnSave": {
"source.organizeImports": "always"
}
}
================================================
FILE: .vscode/extensions/vscode-selfhost-test-provider/package.json
================================================
{
"name": "vscode-selfhost-test-provider",
"displayName": "VS Code Selfhost Test Provider",
"description": "Test provider for the VS Code project",
"enabledApiProposals": [
"testObserver",
"testRelatedCode"
],
"engines": {
"vscode": "^1.88.0"
},
"contributes": {
"commands": [
{
"command": "selfhost-test-provider.updateSnapshot",
"title": "Update Snapshot",
"category": "Testing",
"icon": "$(merge)"
},
{
"command": "selfhost-test-provider.openFailureLog",
"title": "Open Selfhost Failure Logs",
"category": "Testing",
"icon": "$(merge)"
}
],
"menus": {
"commandPalette": [
{
"command": "selfhost-test-provider.updateSnapshot",
"when": "false"
}
],
"testing/message/context": [
{
"command": "selfhost-test-provider.updateSnapshot",
"group": "inline@1",
"when": "testMessage == isSelfhostSnapshotMessage && !testResultOutdated"
}
],
"testing/message/content": [
{
"command": "selfhost-test-provider.updateSnapshot",
"when": "testMessage == isSelfhostSnapshotMessage && !testResultOutdated"
}
]
}
},
"icon": "icon.png",
"version": "0.4.0",
"publisher": "ms-vscode",
"categories": [
"Other"
],
"activationEvents": [
"workspaceContains:src/vs/loader.js"
],
"workspaceTrust": {
"request": "onDemand",
"description": "Trust is required to execute tests in the workspace."
},
"main": "./out/extension.js",
"prettier": {
"printWidth": 100,
"singleQuote": true,
"tabWidth": 2,
"arrowParens": "avoid"
},
"repository": {
"type": "git",
"url": "https://github.com/microsoft/vscode.git"
},
"license": "MIT",
"scripts": {
"compile": "gulp compile-extension:vscode-selfhost-test-provider",
"watch": "gulp watch-extension:vscode-selfhost-test-provider",
"test": "npx mocha --ui tdd 'out/*.test.js'"
},
"devDependencies": {
"@types/mocha": "^10.0.6",
"@types/node": "20.x"
},
"dependencies": {
"@jridgewell/trace-mapping": "^0.3.25",
"ansi-styles": "^5.2.0",
"cockatiel": "^3.1.3",
"istanbul-to-vscode": "^2.0.1"
}
}
================================================
FILE: .vscode/extensions/vscode-selfhost-test-provider/src/coverageProvider.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { IstanbulCoverageContext } from 'istanbul-to-vscode';
import * as vscode from 'vscode';
import { SearchStrategy, SourceLocationMapper, SourceMapStore } from './testOutputScanner';
import { IScriptCoverage, OffsetToPosition, RangeCoverageTracker } from './v8CoverageWrangling';
export const istanbulCoverageContext = new IstanbulCoverageContext();
/**
* Tracks coverage in per-script coverage mode. There are two modes of coverage
* in this extension: generic istanbul reports, and reports from the runtime
* sent before and after each test case executes. This handles the latter.
*/
export class PerTestCoverageTracker {
private readonly scripts = new Map</* script ID */ string, Script>();
constructor(private readonly maps: SourceMapStore) { }
public add(coverage: IScriptCoverage, test?: vscode.TestItem) {
const script = this.scripts.get(coverage.scriptId);
if (script) {
return script.add(coverage, test);
}
// ignore internals and node_modules
if (!coverage.url.startsWith('file://') || coverage.url.includes('node_modules')) {
return;
}
if (!coverage.source) {
throw new Error('expected to have source the first time a script is seen');
}
const src = new Script(vscode.Uri.parse(coverage.url), coverage.source, this.maps);
this.scripts.set(coverage.scriptId, src);
src.add(coverage, test);
}
public async report(run: vscode.TestRun) {
await Promise.all(Array.from(this.scripts.values()).map(s => s.report(run)));
}
}
class Script {
private converter: OffsetToPosition;
/** Tracking the overall coverage for the file */
private overall = new ScriptCoverageTracker();
/** Range tracking per-test item */
private readonly perItem = new Map<vscode.TestItem, ScriptCoverageTracker>();
constructor(
public readonly uri: vscode.Uri,
source: string,
private readonly maps: SourceMapStore
) {
this.converter = new OffsetToPosition(source);
}
public add(coverage: IScriptCoverage, test?: vscode.TestItem) {
this.overall.add(coverage);
if (test) {
const p = new ScriptCoverageTracker();
p.add(coverage);
this.perItem.set(test, p);
}
}
public async report(run: vscode.TestRun) {
const mapper = await this.maps.getSourceLocationMapper(this.uri.toString());
const originalUri = (await this.maps.getSourceFile(this.uri.toString())) || this.uri;
run.addCoverage(this.overall.report(originalUri, this.converter, mapper, this.perItem));
}
}
class ScriptCoverageTracker {
private coverage = new RangeCoverageTracker();
public add(coverage: IScriptCoverage) {
for (const range of RangeCoverageTracker.initializeBlocks(coverage.functions)) {
this.coverage.setCovered(range.start, range.end, range.covered);
}
}
public *toDetails(
uri: vscode.Uri,
convert: OffsetToPosition,
mapper: SourceLocationMapper | undefined,
) {
for (const range of this.coverage) {
if (range.start === range.end) {
continue;
}
const startCov = convert.toLineColumn(range.start);
let start = new vscode.Position(startCov.line, startCov.column);
const endCov = convert.toLineColumn(range.end);
let end = new vscode.Position(endCov.line, endCov.column);
if (mapper) {
const startMap = mapper(start.line, start.character, SearchStrategy.FirstAfter);
const endMap = startMap && mapper(end.line, end.character, SearchStrategy.FirstBefore);
if (!endMap || uri.toString().toLowerCase() !== endMap.uri.toString().toLowerCase()) {
continue;
}
start = startMap.range.start;
end = endMap.range.end;
}
for (let i = start.line; i <= end.line; i++) {
yield new vscode.StatementCoverage(
range.covered,
new vscode.Range(
new vscode.Position(i, i === start.line ? start.character : 0),
new vscode.Position(i, i === end.line ? end.character : Number.MAX_SAFE_INTEGER)
)
);
}
}
}
/**
* Generates the script's coverage for the test run.
*
* If a source location mapper is given, it assumes the `uri` is the mapped
* URI, and that any unmapped locations/outside the URI should be ignored.
*/
public report(
uri: vscode.Uri,
convert: OffsetToPosition,
mapper: SourceLocationMapper | undefined,
items: Map<vscode.TestItem, ScriptCoverageTracker>,
): V8CoverageFile {
const file = new V8CoverageFile(uri, items, convert, mapper);
for (const detail of this.toDetails(uri, convert, mapper)) {
file.add(detail);
}
return file;
}
}
export class V8CoverageFile extends vscode.FileCoverage {
public details: vscode.StatementCoverage[] = [];
constructor(
uri: vscode.Uri,
private readonly perTest: Map<vscode.TestItem, ScriptCoverageTracker>,
private readonly convert: OffsetToPosition,
private readonly mapper: SourceLocationMapper | undefined,
) {
super(uri, { covered: 0, total: 0 }, undefined, undefined, [...perTest.keys()]);
}
public add(detail: vscode.StatementCoverage) {
this.details.push(detail);
this.statementCoverage.total++;
if (detail.executed) {
this.statementCoverage.covered++;
}
}
public testDetails(test: vscode.TestItem): vscode.FileCoverageDetail[] {
const t = this.perTest.get(test);
return t ? [...t.toDetails(this.uri, this.convert, this.mapper)] : [];
}
}
================================================
FILE: .vscode/extensions/vscode-selfhost-test-provider/src/debounce.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
/**
* Debounces the function call for an interval.
*/
export function debounce(duration: number, fn: () => void): (() => void) & { clear: () => void } {
let timeout: NodeJS.Timeout | void;
const debounced = () => {
if (timeout !== undefined) {
clearTimeout(timeout);
}
timeout = setTimeout(() => {
timeout = undefined;
fn();
}, duration);
};
debounced.clear = () => {
if (timeout) {
clearTimeout(timeout);
timeout = undefined;
}
};
return debounced;
}
================================================
FILE: .vscode/extensions/vscode-selfhost-test-provider/src/extension.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { randomBytes } from 'crypto';
import { tmpdir } from 'os';
import * as path from 'path';
import * as vscode from 'vscode';
import { V8CoverageFile } from './coverageProvider';
import { FailingDeepStrictEqualAssertFixer } from './failingDeepStrictEqualAssertFixer';
import { FailureTracker } from './failureTracker';
import { registerSnapshotUpdate } from './snapshot';
import { scanTestOutput } from './testOutputScanner';
import {
TestCase,
TestFile,
clearFileDiagnostics,
guessWorkspaceFolder,
itemData,
} from './testTree';
import { BrowserTestRunner, PlatformTestRunner, VSCodeTestRunner } from './vscodeTestRunner';
import { ImportGraph } from './importGraph';
const TEST_FILE_PATTERN = 'src/vs/**/*.{test,integrationTest}.ts';
const getWorkspaceFolderForTestFile = (uri: vscode.Uri) =>
(uri.path.endsWith('.test.ts') || uri.path.endsWith('.integrationTest.ts')) &&
uri.path.includes('/src/vs/')
? vscode.workspace.getWorkspaceFolder(uri)
: undefined;
const browserArgs: [name: string, arg: string][] = [
['Chrome', 'chromium'],
['Firefox', 'firefox'],
['Webkit', 'webkit'],
];
type FileChangeEvent = { uri: vscode.Uri; removed: boolean };
export async function activate(context: vscode.ExtensionContext) {
const ctrl = vscode.tests.createTestController('selfhost-test-controller', 'VS Code Tests');
const fileChangedEmitter = new vscode.EventEmitter<FileChangeEvent>();
context.subscriptions.push(vscode.tests.registerTestFollowupProvider({
async provideFollowup(_result, test, taskIndex, messageIndex, _token) {
return [{
title: '$(sparkle) Fix with Copilot',
command: 'github.copilot.tests.fixTestFailure',
arguments: [{ source: 'peekFollowup', test, message: test.taskStates[taskIndex].messages[messageIndex] }]
}];
},
}));
let initialWatchPromise: Promise<vscode.Disposable> | undefined;
const resolveHandler = async (test?: vscode.TestItem) => {
if (!test) {
if (!initialWatchPromise) {
initialWatchPromise = startWatchingWorkspace(ctrl, fileChangedEmitter);
context.subscriptions.push(await initialWatchPromise);
} else {
await initialWatchPromise;
}
return;
}
const data = itemData.get(test);
if (data instanceof TestFile) {
// No need to watch this, updates will be triggered on file changes
// either by the text document or file watcher.
await data.updateFromDisk(ctrl, test);
}
};
ctrl.resolveHandler = resolveHandler;
guessWorkspaceFolder().then(folder => {
if (!folder) {
return;
}
const graph = new ImportGraph(
folder.uri, async () => {
await resolveHandler();
return [...ctrl.items].map(([, item]) => item);
}, uri => ctrl.items.get(uri.toString().toLowerCase()));
ctrl.relatedCodeProvider = graph;
if (context.storageUri) {
context.subscriptions.push(new FailureTracker(context.storageUri.fsPath, folder.uri.fsPath));
}
context.subscriptions.push(fileChangedEmitter.event(e => graph.didChange(e.uri, e.removed)));
});
const createRunHandler = (
runnerCtor: { new(folder: vscode.WorkspaceFolder): VSCodeTestRunner },
kind: vscode.TestRunProfileKind,
args: string[] = []
) => {
const doTestRun = async (
req: vscode.TestRunRequest,
cancellationToken: vscode.CancellationToken
) => {
const folder = await guessWorkspaceFolder();
if (!folder) {
return;
}
const runner = new runnerCtor(folder);
const map = await getPendingTestMap(ctrl, req.include ?? gatherTestItems(ctrl.items));
const task = ctrl.createTestRun(req);
for (const test of map.values()) {
task.enqueued(test);
}
let coverageDir: string | undefined;
let currentArgs = args;
if (kind === vscode.TestRunProfileKind.Coverage) {
// todo: browser runs currently don't support per-test coverage
if (args.includes('--browser')) {
coverageDir = path.join(
tmpdir(),
`vscode-test-coverage-${randomBytes(8).toString('hex')}`
);
currentArgs = [
...currentArgs,
'--coverage',
'--coveragePath',
coverageDir,
'--coverageFormats',
'json',
];
} else {
currentArgs = [...currentArgs, '--per-test-coverage'];
}
}
return await scanTestOutput(
map,
task,
kind === vscode.TestRunProfileKind.Debug
? await runner.debug(task, currentArgs, req.include)
: await runner.run(currentArgs, req.include),
coverageDir,
cancellationToken
);
};
return async (req: vscode.TestRunRequest, cancellationToken: vscode.CancellationToken) => {
if (!req.continuous) {
return doTestRun(req, cancellationToken);
}
const queuedFiles = new Set<string>();
let debounced: NodeJS.Timeout | undefined;
const listener = fileChangedEmitter.event(({ uri, removed }) => {
clearTimeout(debounced);
if (req.include && !req.include.some(i => i.uri?.toString() === uri.toString())) {
return;
}
if (removed) {
queuedFiles.delete(uri.toString());
} else {
queuedFiles.add(uri.toString());
}
debounced = setTimeout(() => {
const include =
req.include?.filter(t => t.uri && queuedFiles.has(t.uri?.toString())) ??
[...queuedFiles]
.map(f => getOrCreateFile(ctrl, vscode.Uri.parse(f)))
.filter((f): f is vscode.TestItem => !!f);
queuedFiles.clear();
doTestRun(
new vscode.TestRunRequest(include, req.exclude, req.profile, true),
cancellationToken
);
}, 1000);
});
cancellationToken.onCancellationRequested(() => {
clearTimeout(debounced);
listener.dispose();
});
};
};
ctrl.createRunProfile(
'Run in Electron',
vscode.TestRunProfileKind.Run,
createRunHandler(PlatformTestRunner, vscode.TestRunProfileKind.Run),
true,
undefined,
true
);
ctrl.createRunProfile(
'Debug in Electron',
vscode.TestRunProfileKind.Debug,
createRunHandler(PlatformTestRunner, vscode.TestRunProfileKind.Debug),
true,
undefined,
true
);
const coverage = ctrl.createRunProfile(
'Coverage in Electron',
vscode.TestRunProfileKind.Coverage,
createRunHandler(PlatformTestRunner, vscode.TestRunProfileKind.Coverage),
true,
undefined,
true
);
coverage.loadDetailedCoverage = async (_run, coverage) => coverage instanceof V8CoverageFile ? coverage.details : [];
coverage.loadDetailedCoverageForTest = async (_run, coverage, test) => coverage instanceof V8CoverageFile ? coverage.testDetails(test) : [];
for (const [name, arg] of browserArgs) {
const cfg = ctrl.createRunProfile(
`Run in ${name}`,
vscode.TestRunProfileKind.Run,
createRunHandler(BrowserTestRunner, vscode.TestRunProfileKind.Run, [' --browser', arg]),
undefined,
undefined,
true
);
cfg.configureHandler = () => vscode.window.showInformationMessage(`Configuring ${name}`);
ctrl.createRunProfile(
`Debug in ${name}`,
vscode.TestRunProfileKind.Debug,
createRunHandler(BrowserTestRunner, vscode.TestRunProfileKind.Debug, [
'--browser',
arg,
'--debug-browser',
]),
undefined,
undefined,
true
);
}
function updateNodeForDocument(e: vscode.TextDocument) {
const node = getOrCreateFile(ctrl, e.uri);
const data = node && itemData.get(node);
if (data instanceof TestFile) {
data.updateFromContents(ctrl, e.getText(), node!);
}
}
for (const document of vscode.workspace.textDocuments) {
updateNodeForDocument(document);
}
context.subscriptions.push(
ctrl,
fileChangedEmitter.event(({ uri, removed }) => {
if (!removed) {
const node = getOrCreateFile(ctrl, uri);
if (node) {
ctrl.invalidateTestResults();
}
}
}),
vscode.workspace.onDidOpenTextDocument(updateNodeForDocument),
vscode.workspace.onDidChangeTextDocument(e => updateNodeForDocument(e.document)),
registerSnapshotUpdate(ctrl),
new FailingDeepStrictEqualAssertFixer()
);
}
export function deactivate() {
// no-op
}
function getOrCreateFile(
controller: vscode.TestController,
uri: vscode.Uri
): vscode.TestItem | undefined {
const folder = getWorkspaceFolderForTestFile(uri);
if (!folder) {
return undefined;
}
const data = new TestFile(uri, folder);
const existing = controller.items.get(data.getId());
if (existing) {
return existing;
}
const file = controller.createTestItem(data.getId(), data.getLabel(), uri);
controller.items.add(file);
file.canResolveChildren = true;
itemData.set(file, data);
return file;
}
function gatherTestItems(collection: vscode.TestItemCollection) {
const items: vscode.TestItem[] = [];
collection.forEach(item => items.push(item));
return items;
}
async function startWatchingWorkspace(
controller: vscode.TestController,
fileChangedEmitter: vscode.EventEmitter<FileChangeEvent>
) {
const workspaceFolder = await guessWorkspaceFolder();
if (!workspaceFolder) {
return new vscode.Disposable(() => undefined);
}
const pattern = new vscode.RelativePattern(workspaceFolder, TEST_FILE_PATTERN);
const watcher = vscode.workspace.createFileSystemWatcher(pattern);
watcher.onDidCreate(uri => {
getOrCreateFile(controller, uri);
fileChangedEmitter.fire({ removed: false, uri });
});
watcher.onDidChange(uri => fileChangedEmitter.fire({ removed: false, uri }));
watcher.onDidDelete(uri => {
fileChangedEmitter.fire({ removed: true, uri });
clearFileDiagnostics(uri);
controller.items.delete(uri.toString());
});
for (const file of await vscode.workspace.findFiles(pattern)) {
getOrCreateFile(controller, file);
}
return watcher;
}
async function getPendingTestMap(ctrl: vscode.TestController, tests: Iterable<vscode.TestItem>) {
const queue = [tests];
const titleMap = new Map<string, vscode.TestItem>();
while (queue.length) {
for (const item of queue.pop()!) {
const data = itemData.get(item);
if (data instanceof TestFile) {
if (!data.hasBeenRead) {
await data.updateFromDisk(ctrl, item);
}
queue.push(gatherTestItems(item.children));
} else if (data instanceof TestCase) {
titleMap.set(data.fullName, item);
} else {
queue.push(gatherTestItems(item.children));
}
}
}
return titleMap;
}
================================================
FILE: .vscode/extensions/vscode-selfhost-test-provider/src/failingDeepStrictEqualAssertFixer.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as ts from 'typescript';
import {
commands,
Disposable,
languages,
Position,
Range,
TestMessage,
TestResultSnapshot,
TestRunResult,
tests,
TextDocument,
Uri,
workspace,
WorkspaceEdit,
} from 'vscode';
import { memoizeLast } from './memoize';
import { getTestMessageMetadata } from './metadata';
const enum Constants {
FixCommandId = 'selfhost-test.fix-test',
}
export class FailingDeepStrictEqualAssertFixer {
private disposables: Disposable[] = [];
constructor() {
this.disposables.push(
commands.registerCommand(Constants.FixCommandId, async (uri: Uri, position: Position) => {
const document = await workspace.openTextDocument(uri);
const failingAssertion = detectFailingDeepStrictEqualAssertion(document, position);
if (!failingAssertion) {
return;
}
const expectedValueNode = failingAssertion.assertion.expectedValue;
if (!expectedValueNode) {
return;
}
const start = document.positionAt(expectedValueNode.getStart());
const end = document.positionAt(expectedValueNode.getEnd());
const edit = new WorkspaceEdit();
edit.replace(uri, new Range(start, end), formatJsonValue(failingAssertion.actualJSONValue));
await workspace.applyEdit(edit);
})
);
this.disposables.push(
languages.registerCodeActionsProvider('typescript', {
provideCodeActions: (document, range) => {
const failingAssertion = detectFailingDeepStrictEqualAssertion(document, range.start);
if (!failingAssertion) {
return undefined;
}
return [
{
title: 'Fix Expected Value',
command: Constants.FixCommandId,
arguments: [document.uri, range.start],
},
];
},
})
);
}
dispose() {
for (const d of this.disposables) {
d.dispose();
}
}
}
const identifierLikeRe = /^[$a-z_][a-z0-9_$]*$/i;
const tsPrinter = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed });
const formatJsonValue = (value: unknown) => {
if (typeof value !== 'object') {
return JSON.stringify(value);
}
const src = ts.createSourceFile('', `(${JSON.stringify(value)})`, ts.ScriptTarget.ES5, true);
const outerExpression = src.statements[0] as ts.ExpressionStatement;
const parenExpression = outerExpression.expression as ts.ParenthesizedExpression;
const unquoted = ts.transform(parenExpression, [
context => (node: ts.Node) => {
const visitor = (node: ts.Node): ts.Node =>
ts.isPropertyAssignment(node) &&
ts.isStringLiteralLike(node.name) &&
identifierLikeRe.test(node.name.text)
? ts.factory.createPropertyAssignment(
ts.factory.createIdentifier(node.name.text),
ts.visitNode(node.initializer, visitor) as ts.Expression
)
: ts.isStringLiteralLike(node) && node.text === '[undefined]'
? ts.factory.createIdentifier('undefined')
: ts.visitEachChild(node, visitor, context);
return ts.visitNode(node, visitor);
},
]);
return tsPrinter.printNode(ts.EmitHint.Expression, unquoted.transformed[0], src);
};
/** Parses the source file, memoizing the last document so cursor moves are efficient */
const parseSourceFile = memoizeLast((text: string) =>
ts.createSourceFile('', text, ts.ScriptTarget.ES5, true)
);
const assertionFailureMessageRe = /^Expected values to be strictly (deep-)?equal:/;
/** Gets information about the failing assertion at the poisition, if any. */
function detectFailingDeepStrictEqualAssertion(
document: TextDocument,
position: Position
): { assertion: StrictEqualAssertion; actualJSONValue: unknown } | undefined {
const sf = parseSourceFile(document.getText());
const offset = document.offsetAt(position);
const assertion = StrictEqualAssertion.atPosition(sf, offset);
if (!assertion) {
return undefined;
}
const startLine = document.positionAt(assertion.offsetStart).line;
const messages = getAllTestStatusMessagesAt(document.uri, startLine);
const strictDeepEqualMessage = messages.find(m =>
assertionFailureMessageRe.test(typeof m.message === 'string' ? m.message : m.message.value)
);
if (!strictDeepEqualMessage) {
return undefined;
}
const metadata = getTestMessageMetadata(strictDeepEqualMessage);
if (!metadata) {
return undefined;
}
return {
assertion: assertion,
actualJSONValue: metadata.actualValue,
};
}
class StrictEqualAssertion {
/**
* Extracts the assertion at the current node, if it is one.
*/
public static fromNode(node: ts.Node): StrictEqualAssertion | undefined {
if (!ts.isCallExpression(node)) {
return undefined;
}
const expr = node.expression.getText();
if (expr !== 'assert.deepStrictEqual' && expr !== 'assert.strictEqual') {
return undefined;
}
return new StrictEqualAssertion(node);
}
/**
* Gets the equals assertion at the given offset in the file.
*/
public static atPosition(sf: ts.SourceFile, offset: number): StrictEqualAssertion | undefined {
let node = findNodeAt(sf, offset);
while (node.parent) {
const obj = StrictEqualAssertion.fromNode(node);
if (obj) {
return obj;
}
node = node.parent;
}
return undefined;
}
constructor(private readonly expression: ts.CallExpression) { }
/** Gets the expected value */
public get expectedValue(): ts.Expression | undefined {
return this.expression.arguments[1];
}
/** Gets the position of the assertion expression. */
public get offsetStart(): number {
return this.expression.getStart();
}
}
function findNodeAt(parent: ts.Node, offset: number): ts.Node {
for (const child of parent.getChildren()) {
if (child.getStart() <= offset && offset <= child.getEnd()) {
return findNodeAt(child, offset);
}
}
return parent;
}
function getAllTestStatusMessagesAt(uri: Uri, lineNumber: number): TestMessage[] {
if (tests.testResults.length === 0) {
return [];
}
const run = tests.testResults[0];
const snapshots = getTestResultsWithUri(run, uri);
const result: TestMessage[] = [];
for (const snapshot of snapshots) {
for (const m of snapshot.taskStates[0].messages) {
if (
m.location &&
m.location.range.start.line <= lineNumber &&
lineNumber <= m.location.range.end.line
) {
result.push(m);
}
}
}
return result;
}
function getTestResultsWithUri(testRun: TestRunResult, uri: Uri): TestResultSnapshot[] {
const results: TestResultSnapshot[] = [];
const walk = (r: TestResultSnapshot) => {
for (const c of r.children) {
walk(c);
}
if (r.uri?.toString() === uri.toString()) {
results.push(r);
}
};
for (const r of testRun.results) {
walk(r);
}
return results;
}
================================================
FILE: .vscode/extensions/vscode-selfhost-test-provider/src/failureTracker.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { spawn } from 'child_process';
import { existsSync, mkdirSync, renameSync } from 'fs';
import { readFile, writeFile } from 'fs/promises';
import { dirname, join } from 'path';
import * as vscode from 'vscode';
interface IGitState {
commitId: string;
tracked: string;
untracked: Record<string, string>;
}
interface ITrackedRemediation {
snapshot: vscode.TestResultSnapshot;
failing: IGitState;
passing: IGitState;
}
const MAX_FAILURES = 10;
export class FailureTracker {
private readonly disposables: vscode.Disposable[] = [];
private readonly lastFailed = new Map<
string,
{ snapshot: vscode.TestResultSnapshot; failing: IGitState }
>();
private readonly logFile: string;
private logs?: ITrackedRemediation[];
constructor(storageLocation: string, private readonly rootDir: string) {
this.logFile = join(storageLocation, '.build/vscode-test-failures.json');
mkdirSync(dirname(this.logFile), { recursive: true });
const oldLogFile = join(rootDir, '.build/vscode-test-failures.json');
if (existsSync(oldLogFile)) {
try {
renameSync(oldLogFile, this.logFile);
} catch {
// ignore
}
}
this.disposables.push(
vscode.commands.registerCommand('selfhost-test-provider.openFailureLog', async () => {
const doc = await vscode.workspace.openTextDocument(this.logFile);
await vscode.window.showTextDocument(doc);
})
);
this.disposables.push(
vscode.tests.onDidChangeTestResults(() => {
const last = vscode.tests.testResults[0];
if (!last) {
return;
}
let gitState: Promise<IGitState> | undefined;
const getGitState = () => gitState ?? (gitState = this.captureGitState());
const queue = [last.results];
for (let i = 0; i < queue.length; i++) {
for (const snapshot of queue[i]) {
// only interested in states of leaf tests
if (snapshot.children.length) {
queue.push(snapshot.children);
continue;
}
const key = `${snapshot.uri}/${snapshot.id}`;
const prev = this.lastFailed.get(key);
if (snapshot.taskStates.some(s => s.state === vscode.TestResultState.Failed)) {
// unset the parent to avoid a circular JSON structure:
getGitState().then(s =>
this.lastFailed.set(key, {
snapshot: { ...snapshot, parent: undefined },
failing: s,
})
);
} else if (prev) {
this.lastFailed.delete(key);
getGitState().then(s => this.append({ ...prev, passing: s }));
}
}
}
})
);
}
private async append(log: ITrackedRemediation) {
if (!this.logs) {
try {
this.logs = JSON.parse(await readFile(this.logFile, 'utf-8'));
} catch {
this.logs = [];
}
}
const logs = this.logs!;
logs.push(log);
if (logs.length > MAX_FAILURES) {
logs.splice(0, logs.length - MAX_FAILURES);
}
await writeFile(this.logFile, JSON.stringify(logs, undefined, 2));
}
private async captureGitState() {
const [commitId, tracked, untracked] = await Promise.all([
this.exec('git', ['rev-parse', 'HEAD']),
this.exec('git', ['diff', 'HEAD']),
this.exec('git', ['ls-files', '--others', '--exclude-standard']).then(async output => {
const mapping: Record<string, string> = {};
await Promise.all(
output
.trim()
.split('\n')
.map(async f => {
mapping[f] = await readFile(join(this.rootDir, f), 'utf-8');
})
);
return mapping;
}),
]);
return { commitId, tracked, untracked };
}
public dispose() {
this.disposables.forEach(d => d.dispose());
}
private exec(command: string, args: string[]): Promise<string> {
return new Promise((resolve, reject) => {
const child = spawn(command, args, { stdio: 'pipe', cwd: this.rootDir });
let output = '';
child.stdout.setEncoding('utf-8').on('data', b => (output += b));
child.stderr.setEncoding('utf-8').on('data', b => (output += b));
child.on('error', reject);
child.on('exit', code =>
code === 0
? resolve(output)
: reject(new Error(`Failed with error code ${code}\n${output}`))
);
});
}
}
================================================
FILE: .vscode/extensions/vscode-selfhost-test-provider/src/importGraph.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { join } from 'path';
import * as vscode from 'vscode';
import { bulkhead } from 'cockatiel';
import { promises as fs } from 'fs';
const maxInt32 = 2 ** 31 - 1;
// limit concurrency to avoid overwhelming the filesystem during discovery
const discoverLimiter = bulkhead(8, Infinity);
// Max import distance when listing related code to improve relevancy.
const defaultMaxDistance = 3;
/**
* Maintains a graph of imports in the codebase. This works lazily resolving
* imports and re-parsing files only on request.
*
* This is a rough, file-level graph derived from simple regex matching on
* source files to avoid having to parse the AST of every file in the codebase,
* which is possible but more intensive. (See: all the years of work from the
* TS language server.)
*
* A more advanced implementation could use references from the language server.
*/
export class ImportGraph implements vscode.TestRelatedCodeProvider {
private graph = new Map<string, FileNode>();
constructor(
private readonly root: vscode.Uri,
private readonly discoverWorkspaceTests: () => Thenable<vscode.TestItem[]>,
private readonly getTestNodeForDoc: (uri: vscode.Uri) => vscode.TestItem | undefined,
) { }
/** @inheritdoc */
public async provideRelatedCode(test: vscode.TestItem, token: vscode.CancellationToken): Promise<vscode.Location[]> {
// this is kind of a stub for this implementation. Naive following imports
// isn't that useful for finding a test's related code.
const node = await this.discoverOutwards(test.uri, new Set(), defaultMaxDistance, token);
if (!node) {
return [];
}
const imports = new Set<string>();
const queue = [{ distance: 0, next: node.imports }];
while (queue.length) {
const { distance, next } = queue.shift()!;
for (const imp of next) {
if (imports.has(imp.path)) {
continue;
}
imports.add(imp.path);
if (distance < defaultMaxDistance) {
queue.push({ next: imp.imports, distance: distance + 1 });
}
}
}
return [...imports].map(importPath =>
new vscode.Location(
vscode.Uri.file(join(this.root.fsPath, 'src', `${importPath}.ts`)),
new vscode.Range(0, 0, maxInt32, 0),
),
);
}
/** @inheritdoc */
public async provideRelatedTests(document: vscode.TextDocument, _position: vscode.Position, token: vscode.CancellationToken): Promise<vscode.TestItem[]> {
// Expand all known tests to ensure imports of this file are realized.
const rootTests = await this.discoverWorkspaceTests();
const seen = new Set<string>();
await Promise.all(rootTests.map(v => v.uri && this.discoverOutwards(v.uri, seen, defaultMaxDistance, token)));
const node = this.getNode(document.uri);
if (!node) {
return [];
}
const tests: vscode.TestItem[] = [];
const queue: { next: FileNode; distance: number }[] = [{ next: node, distance: 0 }];
const visited = new Set<FileNode>();
let maxDistance = Infinity;
while (queue.length) {
const { next, distance } = queue.shift()!;
if (visited.has(next)) {
continue;
}
visited.add(next);
const testForDoc = this.getTestNodeForDoc(next.uri);
if (testForDoc) {
tests.push(testForDoc);
// only look for tests half again as far away as the closest test to keep things relevant
if (!Number.isFinite(maxDistance)) {
maxDistance = distance * 3 / 2;
}
}
if (distance < maxDistance) {
for (const importedByNode of next.importedBy) {
queue.push({ next: importedByNode, distance: distance + 1 });
}
}
}
return tests;
}
public didChange(uri: vscode.Uri, deleted: boolean) {
const rel = this.uriToImportPath(uri);
const node = rel && this.graph.get(rel);
if (!node) {
return;
}
if (deleted) {
this.graph.delete(rel);
for (const imp of node.imports) {
imp.importedBy.delete(node);
}
} else {
node.isSynced = false;
}
}
private getNode(uri: vscode.Uri | undefined): FileNode | undefined {
const rel = this.uriToImportPath(uri);
return rel ? this.graph.get(rel) : undefined;
}
/** Discover all nodes that import the file */
private async discoverOutwards(uri: vscode.Uri | undefined, seen: Set<string>, maxDistance: number, token: vscode.CancellationToken): Promise<FileNode | undefined> {
const rel = this.uriToImportPath(uri);
if (!rel) {
return undefined;
}
let node = this.graph.get(rel);
if (!node) {
node = new FileNode(uri!, rel);
this.graph.set(rel, node);
}
await this.discoverOutwardsInner(node, seen, maxDistance, token);
return node;
}
private async discoverOutwardsInner(node: FileNode, seen: Set<string>, maxDistance: number, token: vscode.CancellationToken) {
if (seen.has(node.path) || maxDistance === 0) {
return;
}
seen.add(node.path);
if (node.isSynced === false) {
await this.syncNode(node);
} else if (node.isSynced instanceof Promise) {
await node.isSynced;
}
if (token.isCancellationRequested) {
return;
}
await Promise.all([...node.imports].map(i => this.discoverOutwardsInner(i, seen, maxDistance - 1, token)));
}
private async syncNode(node: FileNode) {
node.isSynced = discoverLimiter.execute(async () => {
const doc = vscode.workspace.textDocuments.find(d => d.uri.toString() === node.uri.toString());
let text: string;
if (doc) {
text = doc.getText();
} else {
try {
text = await fs.readFile(node.uri.fsPath, 'utf8');
} catch {
text = '';
}
}
for (const imp of node.imports) {
imp.importedBy.delete(node);
}
node.imports.clear();
for (const [, importPath] of text.matchAll(IMPORT_RE)) {
let imp = this.graph.get(importPath);
if (!imp) {
imp = new FileNode(this.importPathToUri(importPath), importPath);
this.graph.set(importPath, imp);
}
imp.importedBy.add(node);
node.imports.add(imp);
}
node.isSynced = true;
});
await node.isSynced;
}
private uriToImportPath(uri: vscode.Uri | undefined) {
if (!uri) {
return undefined;
}
const relativePath = vscode.workspace.asRelativePath(uri).replaceAll('\\', '/');
if (!relativePath.startsWith('src/vs/') || !relativePath.endsWith('.ts')) {
return undefined;
}
return relativePath.slice('src/'.length, -'.ts'.length);
}
private importPathToUri(importPath: string) {
return vscode.Uri.file(join(this.root.fsPath, 'src', `${importPath}.ts`));
}
}
const IMPORT_RE = /import .*? from ["'](vs\/[^"']+)/g;
class FileNode {
public imports = new Set<FileNode>();
public importedBy = new Set<FileNode>();
public isSynced: boolean | Promise<void> = false;
// Path is the *import path* starting with `vs/`
constructor(
public readonly uri: vscode.Uri,
public readonly path: string,
) { }
}
================================================
FILE: .vscode/extensions/vscode-selfhost-test-provider/src/memoize.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
export const memoizeLast = <A, T>(fn: (args: A) => T): ((args: A) => T) => {
let last: { arg: A; result: T } | undefined;
return arg => {
if (last && last.arg === arg) {
return last.result;
}
const result = fn(arg);
last = { arg, result };
return result;
};
};
================================================
FILE: .vscode/extensions/vscode-selfhost-test-provider/src/metadata.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { TestMessage } from 'vscode';
export interface TestMessageMetadata {
expectedValue: unknown;
actualValue: unknown;
}
const cache = new Array<{ id: string; metadata: TestMessageMetadata }>();
let id = 0;
function getId(): string {
return `msg:${id++}:`;
}
const regexp = /msg:\d+:/;
export function attachTestMessageMetadata(
message: TestMessage,
metadata: TestMessageMetadata
): void {
const existingMetadata = getTestMessageMetadata(message);
if (existingMetadata) {
Object.assign(existingMetadata, metadata);
return;
}
const id = getId();
if (typeof message.message === 'string') {
message.message = `${message.message}\n${id}`;
} else {
message.message.appendText(`\n${id}`);
}
cache.push({ id, metadata });
while (cache.length > 100) {
cache.shift();
}
}
export function getTestMessageMetadata(message: TestMessage): TestMessageMetadata | undefined {
let value: string;
if (typeof message.message === 'string') {
value = message.message;
} else {
value = message.message.value;
}
const result = regexp.exec(value);
if (!result) {
return undefined;
}
const id = result[0];
return cache.find(c => c.id === id)?.metadata;
}
================================================
FILE: .vscode/extensions/vscode-selfhost-test-provider/src/snapshot.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { promises as fs } from 'fs';
import * as vscode from 'vscode';
export const snapshotComment = '\n\n// Snapshot file: ';
export const registerSnapshotUpdate = (ctrl: vscode.TestController) =>
vscode.commands.registerCommand('selfhost-test-provider.updateSnapshot', async args => {
const message: vscode.TestMessage = args.message;
const index = message.expectedOutput?.indexOf(snapshotComment);
if (!message.expectedOutput || !message.actualOutput || !index || index === -1) {
vscode.window.showErrorMessage('Could not find snapshot comment in message');
return;
}
const file = message.expectedOutput.slice(index + snapshotComment.length);
await fs.writeFile(file, message.actualOutput);
ctrl.invalidateTestResults(args.test);
});
================================================
FILE: .vscode/extensions/vscode-selfhost-test-provider/src/sourceUtils.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as ts from 'typescript';
import * as vscode from 'vscode';
import { TestCase, TestConstruct, TestSuite, VSCodeTest } from './testTree';
const suiteNames = new Set(['suite', 'flakySuite']);
const testNames = new Set(['test']);
export const enum Action {
Skip,
Recurse,
}
export const extractTestFromNode = (src: ts.SourceFile, node: ts.Node, parent: VSCodeTest) => {
if (!ts.isCallExpression(node)) {
return Action.Recurse;
}
const asSuite = identifyCall(node.expression, suiteNames);
const asTest = identifyCall(node.expression, testNames);
const either = asSuite || asTest;
if (either === IdentifiedCall.Skipped) {
return Action.Skip;
}
if (either === IdentifiedCall.Nothing) {
return Action.Recurse;
}
const name = node.arguments[0];
const func = node.arguments[1];
if (!name || !ts.isStringLiteralLike(name) || !func) {
return Action.Recurse;
}
const start = src.getLineAndCharacterOfPosition(name.pos);
const end = src.getLineAndCharacterOfPosition(func.end);
const range = new vscode.Range(
new vscode.Position(start.line, start.character),
new vscode.Position(end.line, end.character)
);
const cparent = parent instanceof TestConstruct ? parent : undefined;
// we know this is either a suite or a test because we checked for skipped/nothing above
if (asTest) {
return new TestCase(name.text, range, cparent);
}
if (asSuite) {
return new TestSuite(name.text, range, cparent);
}
throw new Error('unreachable');
};
const enum IdentifiedCall {
Nothing,
Skipped,
IsThing,
}
const identifyCall = (lhs: ts.Node, needles: ReadonlySet<string>): IdentifiedCall => {
if (ts.isIdentifier(lhs)) {
return needles.has(lhs.escapedText || lhs.text) ? IdentifiedCall.IsThing : IdentifiedCall.Nothing;
}
if (isPropertyCall(lhs) && lhs.name.text === 'skip') {
return needles.has(lhs.expression.text) ? IdentifiedCall.Skipped : IdentifiedCall.Nothing;
}
if (ts.isParenthesizedExpression(lhs) && ts.isConditionalExpression(lhs.expression)) {
return Math.max(identifyCall(lhs.expression.whenTrue, needles), identifyCall(lhs.expression.whenFalse, needles));
}
return IdentifiedCall.Nothing;
};
const isPropertyCall = (
lhs: ts.Node
): lhs is ts.PropertyAccessExpression & { expression: ts.Identifier; name: ts.Identifier } =>
ts.isPropertyAccessExpression(lhs) &&
ts.isIdentifier(lhs.expression) &&
ts.isIdentifier(lhs.name);
================================================
FILE: .vscode/extensions/vscode-selfhost-test-provider/src/stackTraceParser.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
// Copied from https://github.com/microsoft/vscode-js-debug/blob/1d104b5184736677ab5cc280c70bbd227403850c/src/common/stackTraceParser.ts#L18
// Either match lines like
// " at fulfilled (/Users/roblou/code/testapp-node2/out/app.js:5:58)"
// or
// " at /Users/roblou/code/testapp-node2/out/app.js:60:23"
// and replace the path in them
const re1 = /^(\W*at .*\()(.*):(\d+):(\d+)(\))$/;
const re2 = /^(\W*at )(.*):(\d+):(\d+)$/;
const getLabelRe = /^\W*at (.*) \($/;
/**
* Parses a textual stack trace.
*/
export class StackTraceParser {
/** Gets whether the stacktrace has any locations in it. */
public static isStackLike(str: string) {
return re1.test(str) || re2.test(str);
}
constructor(private readonly stack: string) { }
/** Iterates over segments of text and locations in the stack. */
*[Symbol.iterator]() {
for (const line of this.stack.split('\n')) {
const match = re1.exec(line) || re2.exec(line);
if (!match) {
yield line + '\n';
continue;
}
const [, prefix, url, lineNo, columnNo, suffix] = match;
if (prefix) {
yield prefix;
}
yield new StackTraceLocation(getLabelRe.exec(prefix)?.[1], url, Number(lineNo), Number(columnNo));
if (suffix) {
yield suffix;
}
yield '\n';
}
}
}
export class StackTraceLocation {
constructor(
public readonly label: string | undefined,
public readonly path: string,
public readonly lineBase1: number,
public readonly columnBase1: number,
) { }
}
================================================
FILE: .vscode/extensions/vscode-selfhost-test-provider/src/streamSplitter.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
// DO NOT EDIT DIRECTLY: copied from src/vs/base/node/nodeStreams.ts
import { Transform } from 'stream';
/**
* A Transform stream that splits the input on the "splitter" substring.
* The resulting chunks will contain (and trail with) the splitter match.
* The last chunk when the stream ends will be emitted even if a splitter
* is not encountered.
*/
export class StreamSplitter extends Transform {
private buffer: Buffer | undefined;
private readonly splitter: number;
private readonly spitterLen: number;
constructor(splitter: string | number | Buffer) {
super();
if (typeof splitter === 'number') {
this.splitter = splitter;
this.spitterLen = 1;
} else {
throw new Error('not implemented here');
}
}
override _transform(
chunk: Buffer,
_encoding: string,
callback: (error?: Error | null, data?: any) => void
): void {
if (!this.buffer) {
this.buffer = chunk;
} else {
this.buffer = Buffer.concat([this.buffer, chunk]);
}
let offset = 0;
while (offset < this.buffer.length) {
const index = this.buffer.indexOf(this.splitter, offset);
if (index === -1) {
break;
}
this.push(this.buffer.slice(offset, index + this.spitterLen));
offset = index + this.spitterLen;
}
this.buffer = offset === this.buffer.length ? undefined : this.buffer.slice(offset);
callback();
}
override _flush(callback: (error?: Error | null, data?: any) => void): void {
if (this.buffer) {
this.push(this.buffer);
}
callback();
}
}
================================================
FILE: .vscode/extensions/vscode-selfhost-test-provider/src/testOutputScanner.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import {
decodedMappings,
GREATEST_LOWER_BOUND,
LEAST_UPPER_BOUND,
originalPositionFor,
TraceMap,
} from '@jridgewell/trace-mapping';
import * as styles from 'ansi-styles';
import { ChildProcessWithoutNullStreams } from 'child_process';
import * as vscode from 'vscode';
import { istanbulCoverageContext, PerTestCoverageTracker } from './coverageProvider';
import { attachTestMessageMetadata } from './metadata';
import { snapshotComment } from './snapshot';
import { StackTraceLocation, StackTraceParser } from './stackTraceParser';
import { StreamSplitter } from './streamSplitter';
import { getContentFromFilesystem } from './testTree';
import { IScriptCoverage } from './v8CoverageWrangling';
export const enum MochaEvent {
Start = 'start',
TestStart = 'testStart',
Pass = 'pass',
Fail = 'fail',
End = 'end',
// custom events:
CoverageInit = 'coverageInit',
CoverageIncrement = 'coverageIncrement',
}
export interface IStartEvent {
total: number;
}
export interface ITestStartEvent {
title: string;
fullTitle: string;
file: string;
currentRetry: number;
speed: string;
}
export interface IPassEvent extends ITestStartEvent {
duration: number;
}
export interface IFailEvent extends IPassEvent {
err: string;
stack: string | null;
expected?: string;
actual?: string;
expectedJSON?: unknown;
actualJSON?: unknown;
snapshotPath?: string;
}
export interface IEndEvent {
suites: number;
tests: number;
passes: number;
pending: number;
failures: number;
start: string /* ISO date */;
end: string /* ISO date */;
}
export interface ITestCoverageCoverage {
file: string;
fullTitle: string;
coverage: { result: IScriptCoverage[] };
}
export type MochaEventTuple =
| [MochaEvent.Start, IStartEvent]
| [MochaEvent.TestStart, ITestStartEvent]
| [MochaEvent.Pass, IPassEvent]
| [MochaEvent.Fail, IFailEvent]
| [MochaEvent.End, IEndEvent]
| [MochaEvent.CoverageInit, { result: IScriptCoverage[] }]
| [MochaEvent.CoverageIncrement, ITestCoverageCoverage];
const LF = '\n'.charCodeAt(0);
export class TestOutputScanner implements vscode.Disposable {
protected mochaEventEmitter = new vscode.EventEmitter<MochaEventTuple>();
protected outputEventEmitter = new vscode.EventEmitter<string>();
protected onExitEmitter = new vscode.EventEmitter<string | undefined>();
/**
* Fired when a mocha event comes in.
*/
public readonly onMochaEvent = this.mochaEventEmitter.event;
/**
* Fired when other output from the process comes in.
*/
public readonly onOtherOutput = this.outputEventEmitter.event;
/**
* Fired when the process encounters an error, or exits.
*/
public readonly onRunnerExit = this.onExitEmitter.event;
constructor(private readonly process: ChildProcessWithoutNullStreams, private args?: string[]) {
process.stdout.pipe(new StreamSplitter(LF)).on('data', this.processData);
process.stderr.pipe(new StreamSplitter(LF)).on('data', this.processData);
process.on('error', e => this.onExitEmitter.fire(e.message));
process.on('exit', code =>
this.onExitEmitter.fire(code ? `Test process exited with code ${code}` : undefined)
);
}
/**
* @override
*/
public dispose() {
try {
this.process.kill();
} catch {
// ignored
}
}
protected readonly processData = (data: string | Buffer) => {
if (this.args) {
this.outputEventEmitter.fire(`./scripts/test ${this.args.join(' ')}`);
this.args = undefined;
}
data = data.toString();
try {
const parsed = JSON.parse(data.trim()) as unknown;
if (parsed instanceof Array && parsed.length === 2 && typeof parsed[0] === 'string') {
this.mochaEventEmitter.fire(parsed as MochaEventTuple);
} else {
this.outputEventEmitter.fire(data);
}
} catch {
this.outputEventEmitter.fire(data);
}
};
}
type QueuedOutput = string | [string, vscode.Location | undefined, vscode.TestItem | undefined];
export async function scanTestOutput(
tests: Map<string, vscode.TestItem>,
task: vscode.TestRun,
scanner: TestOutputScanner,
coverageDir: string | undefined,
cancellation: vscode.CancellationToken
): Promise<void> {
const exitBlockers: Set<Promise<unknown>> = new Set();
const skippedTests = new Set(tests.values());
const store = new SourceMapStore();
let outputQueue = Promise.resolve();
const enqueueOutput = (fn: QueuedOutput | (() => Promise<QueuedOutput>)) => {
exitBlockers.delete(outputQueue);
outputQueue = outputQueue.finally(async () => {
const r = typeof fn === 'function' ? await fn() : fn;
typeof r === 'string' ? task.appendOutput(r) : task.appendOutput(...r);
});
exitBlockers.add(outputQueue);
return outputQueue;
};
const enqueueExitBlocker = <T>(prom: Promise<T>): Promise<T> => {
exitBlockers.add(prom);
prom.finally(() => exitBlockers.delete(prom));
return prom;
};
let perTestCoverage: PerTestCoverageTracker | undefined;
let lastTest: vscode.TestItem | undefined;
let ranAnyTest = false;
try {
if (cancellation.isCancellationRequested) {
return;
}
await new Promise<void>(resolve => {
cancellation.onCancellationRequested(() => {
resolve();
});
let currentTest: vscode.TestItem | undefined;
scanner.onRunnerExit(err => {
if (err) {
enqueueOutput(err + crlf);
}
resolve();
});
scanner.onOtherOutput(str => {
const match = spdlogRe.exec(str);
if (!match) {
enqueueOutput(str + crlf);
return;
}
const logLocation = store.getSourceLocation(match[2], Number(match[3]) - 1);
const logContents = replaceAllLocations(store, match[1]);
const test = currentTest;
enqueueOutput(() =>
Promise.all([logLocation, logContents]).then(([location, contents]) => [
contents + crlf,
location,
test,
])
);
});
scanner.onMochaEvent(evt => {
switch (evt[0]) {
case MochaEvent.Start:
break; // no-op
case MochaEvent.TestStart:
currentTest = tests.get(evt[1].fullTitle);
if (!currentTest) {
console.warn(`Could not find test ${evt[1].fullTitle}`);
return;
}
skippedTests.delete(currentTest);
task.started(currentTest);
ranAnyTest = true;
break;
case MochaEvent.Pass:
{
const title = evt[1].fullTitle;
const tcase = tests.get(title);
enqueueOutput(` ${styles.green.open}√${styles.green.close} ${title}\r\n`);
if (tcase) {
lastTest = tcase;
task.passed(tcase, evt[1].duration);
}
}
break;
case MochaEvent.Fail:
{
const {
err,
stack,
duration,
expected,
expectedJSON,
actual,
actualJSON,
snapshotPath,
fullTitle: id,
} = evt[1];
let tcase = tests.get(id);
// report failures on hook to the last-seen test, or first test if none run yet
if (!tcase && (id.includes('hook for') || id.includes('hook in'))) {
tcase = lastTest ?? tests.values().next().value;
}
enqueueOutput(`${styles.red.open} x ${id}${styles.red.close}\r\n`);
const rawErr = stack || err;
const locationsReplaced = replaceAllLocations(store, forceCRLF(rawErr));
if (rawErr) {
enqueueOutput(async () => [await locationsReplaced, undefined, tcase]);
}
if (!tcase) {
return;
}
const hasDiff =
actual !== undefined &&
expected !== undefined &&
(expected !== '[undefined]' || actual !== '[undefined]');
const testFirstLine =
tcase.range &&
new vscode.Location(
tcase.uri!,
new vscode.Range(
tcase.range.start,
new vscode.Position(tcase.range.start.line, 100)
)
);
enqueueExitBlocker(
(async () => {
const stackInfo = await deriveStackLocations(store, rawErr, tcase!);
let message: vscode.TestMessage;
if (hasDiff) {
message = new vscode.TestMessage(tryMakeMarkdown(err));
message.actualOutput = outputToString(actual);
message.expectedOutput = outputToString(expected);
if (snapshotPath) {
message.contextValue = 'isSelfhostSnapshotMessage';
message.expectedOutput += snapshotComment + snapshotPath;
}
attachTestMessageMetadata(message, {
expectedValue: expectedJSON,
actualValue: actualJSON,
});
} else {
message = new vscode.TestMessage(
stack ? await sourcemapStack(store, stack) : await locationsReplaced
);
}
message.location = stackInfo.primary ?? testFirstLine;
message.stackTrace = stackInfo.stack;
task.failed(tcase!, message, duration);
})()
);
}
break;
case MochaEvent.End:
// no-op, we wait until the process exits to ensure coverage is written out
break;
case MochaEvent.CoverageInit:
perTestCoverage ??= new PerTestCoverageTracker(store);
for (const result of evt[1].result) {
perTestCoverage.add(result);
}
break;
case MochaEvent.CoverageIncrement: {
const { fullTitle, coverage } = evt[1];
const tcase = tests.get(fullTitle);
if (tcase) {
perTestCoverage ??= new PerTestCoverageTracker(store);
for (const result of coverage.result) {
perTestCoverage.add(result, tcase);
}
}
break;
}
}
});
});
if (perTestCoverage) {
enqueueExitBlocker(perTestCoverage.report(task));
}
await Promise.all([...exitBlockers]);
if (coverageDir) {
try {
await istanbulCoverageContext.apply(task, coverageDir, {
mapFileUri: uri => store.getSourceFile(uri.toString()),
mapLocation: (uri, position) =>
store.getSourceLocation(uri.toString(), position.line, position.character),
});
} catch (e) {
const msg = `Error loading coverage:\n\n${e}\n`;
task.appendOutput(msg.replace(/\n/g, crlf));
}
}
// no tests? Possible crash, show output:
if (!ranAnyTest) {
await vscode.commands.executeCommand('testing.showMostRecentOutput');
}
} catch (e) {
task.appendOutput((e as Error).stack || (e as Error).message);
} finally {
scanner.dispose();
for (const test of skippedTests) {
task.skipped(test);
}
task.end();
}
}
const spdlogRe = /"(.+)", source: (file:\/\/\/.*?)+ \(([0-9]+)\)/;
const crlf = '\r\n';
const forceCRLF = (str: string) => str.replace(/(?<!\r)\n/gm, '\r\n');
const sourcemapStack = async (store: SourceMapStore, str: string) => {
locationRe.lastIndex = 0;
const replacements = await Promise.all(
[...str.matchAll(locationRe)].map(async match => {
const location = await deriveSourceLocation(store, match);
if (!location) {
return;
}
return {
from: match[0],
to: location?.uri.with({
fragment: `L${location.range.start.line + 1}:${location.range.start.character + 1}`,
}),
};
})
);
for (const replacement of replacements) {
if (replacement) {
str = str.replace(replacement.from, replacement.to.toString(true));
}
}
return str;
};
const outputToString = (output: unknown) =>
typeof output === 'object' ? JSON.stringify(output, null, 2) : String(output);
const tryMakeMarkdown = (message: string) => {
const lines = message.split('\n');
const start = lines.findIndex(l => l.includes('+ actual'));
if (start === -1) {
return message;
}
lines.splice(start, 1, '```diff');
lines.push('```');
return new vscode.MarkdownString(lines.join('\n'));
};
const inlineSourcemapRe = /^\/\/# sourceMappingURL=data:application\/json;base64,(.+)/m;
const sourceMapBiases = [GREATEST_LOWER_BOUND, LEAST_UPPER_BOUND] as const;
export const enum SearchStrategy {
FirstBefore = -1,
FirstAfter = 1,
}
export type SourceLocationMapper = (line: number, col: number, strategy: SearchStrategy) => vscode.Location | undefined;
export class SourceMapStore {
private readonly cache = new Map</* file uri */ string, Promise<TraceMap | undefined>>();
async getSourceLocationMapper(fileUri: string): Promise<SourceLocationMapper> {
const sourceMap = await this.loadSourceMap(fileUri);
return (line, col, strategy) => {
if (!sourceMap) {
return undefined;
}
// 1. Look for the ideal position on this line if it exists
const idealPosition = originalPositionFor(sourceMap, { column: col, line: line + 1, bias: SearchStrategy.FirstAfter ? GREATEST_LOWER_BOUND : LEAST_UPPER_BOUND });
if (idealPosition.line !== null && idealPosition.column !== null && idealPosition.source !== null) {
return new vscode.Location(
this.completeSourceMapUrl(sourceMap, idealPosition.source),
new vscode.Position(idealPosition.line - 1, idealPosition.column)
);
}
// Otherwise get the first/last valid mapping on another line.
const decoded = decodedMappings(sourceMap);
const enum MapField {
COLUMN = 0,
SOURCES_INDEX = 1,
SOURCE_LINE = 2,
SOURCE_COLUMN = 3,
}
do {
line += strategy;
const segments = decoded[line];
if (!segments?.length) {
continue;
}
const index = strategy === SearchStrategy.FirstBefore
? findLastIndex(segments, s => s.length !== 1)
: segments.findIndex(s => s.length !== 1);
const segment = segments[index];
if (!segment || segment.length === 1) {
continue;
}
return new vscode.Location(
this.completeSourceMapUrl(sourceMap, sourceMap.sources[segment[MapField.SOURCES_INDEX]]!),
new vscode.Position(segment[MapField.SOURCE_LINE] - 1, segment[MapField.SOURCE_COLUMN])
);
} while (strategy === SearchStrategy.FirstBefore ? line > 0 : line < decoded.length);
return undefined;
};
}
/** Gets an original location from a base 0 line and column */
async getSourceLocation(fileUri: string, line: number, col = 0) {
const sourceMap = await this.loadSourceMap(fileUri);
if (!sourceMap) {
return undefined;
}
let smLine = line + 1;
// if the range is after the end of mappings, adjust it to the last mapped line
const decoded = decodedMappings(sourceMap);
if (decoded.length <= line) {
smLine = decoded.length; // base 1, no -1 needed
col = Number.MAX_SAFE_INTEGER;
}
for (const bias of sourceMapBiases) {
const position = originalPositionFor(sourceMap, { column: col, line: smLine, bias });
if (position.line !== null && position.column !== null && position.source !== null) {
return new vscode.Location(
this.completeSourceMapUrl(sourceMap, position.source),
new vscode.Position(position.line - 1, position.column)
);
}
}
return undefined;
}
async getSourceFile(compiledUri: string) {
const sourceMap = await this.loadSourceMap(compiledUri);
if (!sourceMap) {
return undefined;
}
if (sourceMap.sources[0]) {
return this.completeSourceMapUrl(sourceMap, sourceMap.sources[0]);
}
for (const bias of sourceMapBiases) {
const position = originalPositionFor(sourceMap, { column: 0, line: 1, bias });
if (position.source !== null) {
return this.completeSourceMapUrl(sourceMap, position.source);
}
}
return undefined;
}
private completeSourceMapUrl(sm: TraceMap, source: string) {
if (sm.sourceRoot) {
try {
return vscode.Uri.parse(new URL(source, sm.sourceRoot).toString());
} catch {
// ignored
}
}
return vscode.Uri.parse(source);
}
private loadSourceMap(fileUri: string) {
const existing = this.cache.get(fileUri);
if (existing) {
return existing;
}
const promise = (async () => {
try {
const contents = await getContentFromFilesystem(vscode.Uri.parse(fileUri));
const sourcemapMatch = inlineSourcemapRe.exec(contents);
if (!sourcemapMatch) {
return;
}
const decoded = Buffer.from(sourcemapMatch[1], 'base64').toString();
return new TraceMap(decoded, fileUri);
} catch (e) {
console.warn(`Error parsing sourcemap for ${fileUri}: ${(e as Error).stack}`);
return;
}
})();
this.cache.set(fileUri, promise);
return promise;
}
}
const locationRe = /(file:\/{3}.+):([0-9]+):([0-9]+)/g;
async function replaceAllLocations(store: SourceMapStore, str: string) {
const output: (string | Promise<string>)[] = [];
let lastIndex = 0;
for (const match of str.matchAll(locationRe)) {
const locationPromise = deriveSourceLocation(store, match);
const startIndex = match.index || 0;
const endIndex = startIndex + match[0].length;
if (startIndex > lastIndex) {
output.push(str.substring(lastIndex, startIndex));
}
output.push(
locationPromise.then(location =>
location
? `${location.uri}:${location.range.start.line + 1}:${location.range.start.character + 1}`
: match[0]
)
);
lastIndex = endIndex;
}
// Preserve the remaining string after the last match
if (lastIndex < str.length) {
output.push(str.substring(lastIndex));
}
const values = await Promise.all(output);
return values.join('');
}
async function deriveStackLocations(
store: SourceMapStore,
stack: string,
tcase: vscode.TestItem
) {
locationRe.lastIndex = 0;
const locationsRaw = [...new StackTraceParser(stack)].filter(t => t instanceof StackTraceLocation);
const locationsMapped = await Promise.all(locationsRaw.map(async location => {
const mapped = location.path.startsWith('file:') ? await store.getSourceLocation(location.path, location.lineBase1 - 1, location.columnBase1 - 1) : undefined;
const stack = new vscode.TestMessageStackFrame(location.label || '<anonymous>', mapped?.uri, mapped?.range.start || new vscode.Position(location.lineBase1 - 1, location.columnBase1 - 1));
return { location: mapped, stack };
}));
let best: undefined | { location: vscode.Location; score: number };
for (const { location } of locationsMapped) {
if (!location) {
continue;
}
let score = 0;
if (tcase.uri && tcase.uri.toString() === location.uri.toString()) {
score = 1;
if (tcase.range && tcase.range.contains(location?.range)) {
score = 2;
}
}
if (!best || score > best.score) {
best = { location, score };
}
}
return { stack: locationsMapped.map(s => s.stack), primary: best?.location };
}
async function deriveSourceLocation(store: SourceMapStore, parts: RegExpMatchArray) {
const [, fileUri, line, col] = parts;
return store.getSourceLocation(fileUri, Number(line) - 1, Number(col));
}
function findLastIndex<T>(arr: T[], predicate: (value: T) => boolean) {
for (let i = arr.length - 1; i >= 0; i--) {
if (predicate(arr[i])) {
return i;
}
}
return -1;
}
================================================
FILE: .vscode/extensions/vscode-selfhost-test-provider/src/testTree.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { join, relative } from 'path';
import * as ts from 'typescript';
import { TextDecoder } from 'util';
import * as vscode from 'vscode';
import { Action, extractTestFromNode } from './sourceUtils';
const textDecoder = new TextDecoder('utf-8');
const diagnosticCollection = vscode.languages.createDiagnosticCollection('selfhostTestProvider');
type ContentGetter = (uri: vscode.Uri) => Promise<string>;
export const itemData = new WeakMap<vscode.TestItem, VSCodeTest>();
export const clearFileDiagnostics = (uri: vscode.Uri) => diagnosticCollection.delete(uri);
/**
* Tries to guess which workspace folder VS Code is in.
*/
export const guessWorkspaceFolder = async () => {
if (!vscode.workspace.workspaceFolders) {
return undefined;
}
if (vscode.workspace.workspaceFolders.length < 2) {
return vscode.workspace.workspaceFolders[0];
}
for (const folder of vscode.workspace.workspaceFolders) {
try {
await vscode.workspace.fs.stat(vscode.Uri.joinPath(folder.uri, 'src/vs/loader.js'));
return folder;
} catch {
// ignored
}
}
return undefined;
};
export const getContentFromFilesystem: ContentGetter = async uri => {
try {
const rawContent = await vscode.workspace.fs.readFile(uri);
return textDecoder.decode(rawContent);
} catch (e) {
console.warn(`Error providing tests for ${uri.fsPath}`, e);
return '';
}
};
export class TestFile {
public hasBeenRead = false;
constructor(
public readonly uri: vscode.Uri,
public readonly workspaceFolder: vscode.WorkspaceFolder
) {}
public getId() {
return this.uri.toString().toLowerCase();
}
public getLabel() {
return relative(join(this.workspaceFolder.uri.fsPath, 'src'), this.uri.fsPath);
}
public async updateFromDisk(controller: vscode.TestController, item: vscode.TestItem) {
try {
const content = await getContentFromFilesystem(item.uri!);
item.error = undefined;
this.updateFromContents(controller, content, item);
} catch (e) {
item.error = (e as Error).stack;
}
}
/**
* Refreshes all tests in this file, `sourceReader` provided by the root.
*/
public updateFromContents(
controller: vscode.TestController,
content: string,
file: vscode.TestItem
) {
try {
const diagnostics: vscode.Diagnostic[] = [];
const ast = ts.createSourceFile(
this.uri.path.split('/').pop()!,
content,
ts.ScriptTarget.ESNext,
false,
ts.ScriptKind.TS
);
const parents: { item: vscode.TestItem; children: vscode.TestItem[] }[] = [
{ item: file, children: [] },
];
const traverse = (n
Showing preview only (430K chars total). Download the full file or copy to clipboard to get everything.
gitextract_zxyiywqm/ ├── .config/ │ ├── 1espt/ │ │ └── PipelineAutobaseliningConfig.yml │ └── guardian/ │ ├── .gdnbaselines │ └── .gdnsuppress ├── .configurations/ │ └── configuration.dsc.yaml ├── .devcontainer/ │ ├── Dockerfile │ ├── README.md │ ├── devcontainer-lock.json │ ├── devcontainer.json │ ├── install-vscode.sh │ └── post-create.sh ├── .editorconfig ├── .eslint-ignore ├── .eslint-plugin-local/ │ ├── code-amd-node-module.ts │ ├── code-declare-service-brand.ts │ ├── code-ensure-no-disposables-leak-in-test.ts │ ├── code-import-patterns.ts │ ├── code-layering.ts │ ├── code-limited-top-functions.ts │ ├── code-must-use-result.ts │ ├── code-must-use-super-dispose.ts │ ├── code-no-dangerous-type-assertions.ts │ ├── code-no-global-document-listener.ts │ ├── code-no-native-private.ts │ ├── code-no-nls-in-standalone-editor.ts │ ├── code-no-potentially-unsafe-disposables.ts │ ├── code-no-runtime-import.ts │ ├── code-no-standalone-editor.ts │ ├── code-no-static-self-ref.ts │ ├── code-no-test-async-suite.ts │ ├── code-no-test-only.ts │ ├── code-no-unexternalized-strings.ts │ ├── code-no-unused-expressions.ts │ ├── code-parameter-properties-must-have-explicit-accessibility.ts │ ├── code-translation-remind.ts │ ├── index.js │ ├── package.json │ ├── tsconfig.json │ ├── utils.ts │ ├── vscode-dts-cancellation.ts │ ├── vscode-dts-create-func.ts │ ├── vscode-dts-event-naming.ts │ ├── vscode-dts-interface-naming.ts │ ├── vscode-dts-literal-or-types.ts │ ├── vscode-dts-provider-naming.ts │ ├── vscode-dts-string-type-literals.ts │ ├── vscode-dts-use-export.ts │ ├── vscode-dts-use-thenable.ts │ └── vscode-dts-vscode-in-comments.ts ├── .git-blame-ignore-revs ├── .gitattributes ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── config.yml │ │ └── issue_template.md │ ├── scripts/ │ │ └── issue_triage.py │ └── workflows/ │ └── triage.yml ├── .gitignore ├── .idx/ │ └── dev.nix ├── .lsifrc.json ├── .mailmap ├── .mention-bot ├── .npmrc ├── .nvmrc ├── .voidrules ├── .vscode/ │ ├── cglicenses.schema.json │ ├── extensions/ │ │ ├── vscode-selfhost-import-aid/ │ │ │ ├── .vscode/ │ │ │ │ ├── launch.json │ │ │ │ └── settings.json │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── extension.ts │ │ │ └── tsconfig.json │ │ └── vscode-selfhost-test-provider/ │ │ ├── .vscode/ │ │ │ ├── launch.json │ │ │ └── settings.json │ │ ├── package.json │ │ ├── src/ │ │ │ ├── coverageProvider.ts │ │ │ ├── debounce.ts │ │ │ ├── extension.ts │ │ │ ├── failingDeepStrictEqualAssertFixer.ts │ │ │ ├── failureTracker.ts │ │ │ ├── importGraph.ts │ │ │ ├── memoize.ts │ │ │ ├── metadata.ts │ │ │ ├── snapshot.ts │ │ │ ├── sourceUtils.ts │ │ │ ├── stackTraceParser.ts │ │ │ ├── streamSplitter.ts │ │ │ ├── testOutputScanner.ts │ │ │ ├── testTree.ts │ │ │ ├── v8CoverageWrangling.test.ts │ │ │ ├── v8CoverageWrangling.ts │ │ │ └── vscodeTestRunner.ts │ │ └── tsconfig.json │ ├── extensions.json │ ├── launch.json │ ├── notebooks/ │ │ ├── api.github-issues │ │ ├── endgame.github-issues │ │ ├── grooming-delta.github-issues │ │ ├── grooming.github-issues │ │ ├── inbox.github-issues │ │ ├── my-endgame.github-issues │ │ ├── my-work.github-issues │ │ ├── papercuts.github-issues │ │ ├── verification.github-issues │ │ └── vscode-dev.github-issues │ ├── searches/ │ │ └── ts36031.code-search │ ├── settings.json │ ├── shared.code-snippets │ └── tasks.json ├── .vscode-test.js ├── CodeQL.yml ├── HOW_TO_CONTRIBUTE.md ├── LICENSE-VS-Code.txt ├── LICENSE.txt ├── README.md ├── ThirdPartyNotices.txt ├── VOID_CODEBASE_GUIDE.md ├── build/ │ ├── .cachesalt │ ├── .gitattributes │ ├── .gitignore │ ├── .moduleignore │ ├── .moduleignore.darwin │ ├── .moduleignore.linux │ ├── .moduleignore.win32 │ ├── .npmrc │ ├── .webignore │ ├── azure-pipelines/ │ │ ├── alpine/ │ │ │ ├── cli-build-alpine.yml │ │ │ └── product-build-alpine.yml │ │ ├── cli/ │ │ │ ├── cli-apply-patches.yml │ │ │ ├── cli-compile.yml │ │ │ ├── cli-darwin-sign.yml │ │ │ ├── cli-win32-sign.yml │ │ │ ├── install-rust-posix.yml │ │ │ ├── install-rust-win32.yml │ │ │ └── test.yml │ │ ├── common/ │ │ │ ├── computeBuiltInDepsCacheKey.js │ │ │ ├── computeBuiltInDepsCacheKey.ts │ │ │ ├── computeNodeModulesCacheKey.js │ │ │ ├── computeNodeModulesCacheKey.ts │ │ │ ├── createBuild.js │ │ │ ├── createBuild.ts │ │ │ ├── extract-telemetry.sh │ │ │ ├── getPublishAuthTokens.js │ │ │ ├── getPublishAuthTokens.ts │ │ │ ├── install-builtin-extensions.yml │ │ │ ├── installPlaywright.js │ │ │ ├── listNodeModules.js │ │ │ ├── listNodeModules.ts │ │ │ ├── publish.js │ │ │ ├── publish.ts │ │ │ ├── releaseBuild.js │ │ │ ├── releaseBuild.ts │ │ │ ├── retry.js │ │ │ ├── retry.ts │ │ │ ├── sign-win32.js │ │ │ ├── sign-win32.ts │ │ │ ├── sign.js │ │ │ ├── sign.ts │ │ │ └── telemetry-config.json │ │ ├── config/ │ │ │ ├── CredScanSuppressions.json │ │ │ └── tsaoptions.json │ │ ├── darwin/ │ │ │ ├── app-entitlements.plist │ │ │ ├── cli-build-darwin.yml │ │ │ ├── helper-gpu-entitlements.plist │ │ │ ├── helper-plugin-entitlements.plist │ │ │ ├── helper-renderer-entitlements.plist │ │ │ ├── product-build-darwin-cli-sign.yml │ │ │ ├── product-build-darwin-sign.yml │ │ │ ├── product-build-darwin-test.yml │ │ │ ├── product-build-darwin-universal.yml │ │ │ └── product-build-darwin.yml │ │ ├── distro/ │ │ │ ├── download-distro.yml │ │ │ ├── mixin-npm.js │ │ │ ├── mixin-npm.ts │ │ │ ├── mixin-quality.js │ │ │ └── mixin-quality.ts │ │ ├── distro-build.yml │ │ ├── linux/ │ │ │ ├── .gitignore │ │ │ ├── apt-retry.sh │ │ │ ├── cli-build-linux.yml │ │ │ ├── product-build-linux-test.yml │ │ │ ├── product-build-linux.yml │ │ │ ├── setup-env.sh │ │ │ ├── snap-build-linux.yml │ │ │ ├── verify-glibc-requirements.sh │ │ │ └── xvfb.init │ │ ├── oss/ │ │ │ ├── product-build-pr-cache-linux.yml │ │ │ └── product-build-pr-cache-win32.yml │ │ ├── product-build-pr.yml │ │ ├── product-build.yml │ │ ├── product-compile.yml │ │ ├── product-npm-package-validate.yml │ │ ├── product-publish.yml │ │ ├── product-release.yml │ │ ├── publish-types/ │ │ │ ├── check-version.js │ │ │ ├── check-version.ts │ │ │ ├── publish-types.yml │ │ │ ├── update-types.js │ │ │ └── update-types.ts │ │ ├── upload-cdn.js │ │ ├── upload-cdn.ts │ │ ├── upload-nlsmetadata.js │ │ ├── upload-nlsmetadata.ts │ │ ├── upload-sourcemaps.js │ │ ├── upload-sourcemaps.ts │ │ ├── web/ │ │ │ └── product-build-web.yml │ │ └── win32/ │ │ ├── cli-build-win32.yml │ │ ├── exec.ps1 │ │ ├── import-esrp-auth-cert.ps1 │ │ ├── listprocesses.bat │ │ ├── product-build-win32-cli-sign.yml │ │ ├── product-build-win32-test.yml │ │ ├── product-build-win32.yml │ │ ├── retry.ps1 │ │ └── sdl-scan-win32.yml │ ├── buildfile.js │ ├── builtin/ │ │ ├── .eslintrc │ │ ├── browser-main.js │ │ ├── index.html │ │ ├── main.js │ │ └── package.json │ ├── checksums/ │ │ ├── electron.txt │ │ ├── nodejs.txt │ │ └── vscode-sysroot.txt │ ├── darwin/ │ │ ├── create-universal-app.js │ │ ├── create-universal-app.ts │ │ ├── sign.js │ │ ├── sign.ts │ │ ├── verify-macho.js │ │ └── verify-macho.ts │ ├── eslint.js │ ├── filters.js │ ├── gulp-eslint.js │ ├── gulpfile.cli.js │ ├── gulpfile.compile.js │ ├── gulpfile.editor.js │ ├── gulpfile.extensions.js │ ├── gulpfile.hygiene.js │ ├── gulpfile.js │ ├── gulpfile.reh.js │ ├── gulpfile.scan.js │ ├── gulpfile.vscode.js │ ├── gulpfile.vscode.linux.js │ ├── gulpfile.vscode.web.js │ ├── gulpfile.vscode.win32.js │ ├── hygiene.js │ ├── lib/ │ │ ├── asar.js │ │ ├── asar.ts │ │ ├── builtInExtensions.js │ │ ├── builtInExtensions.ts │ │ ├── builtInExtensionsCG.js │ │ ├── builtInExtensionsCG.ts │ │ ├── bundle.js │ │ ├── bundle.ts │ │ ├── compilation.js │ │ ├── compilation.ts │ │ ├── date.js │ │ ├── date.ts │ │ ├── dependencies.js │ │ ├── dependencies.ts │ │ ├── electron.js │ │ ├── electron.ts │ │ ├── extensions.js │ │ ├── extensions.ts │ │ ├── fetch.js │ │ ├── fetch.ts │ │ ├── formatter.js │ │ ├── formatter.ts │ │ ├── getVersion.js │ │ ├── getVersion.ts │ │ ├── git.js │ │ ├── git.ts │ │ ├── i18n.js │ │ ├── i18n.resources.json │ │ ├── i18n.ts │ │ ├── inlineMeta.js │ │ ├── inlineMeta.ts │ │ ├── layersChecker.js │ │ ├── layersChecker.ts │ │ ├── mangle/ │ │ │ ├── index.js │ │ │ ├── index.ts │ │ │ ├── renameWorker.js │ │ │ ├── renameWorker.ts │ │ │ ├── staticLanguageServiceHost.js │ │ │ └── staticLanguageServiceHost.ts │ │ ├── monaco-api.js │ │ ├── monaco-api.ts │ │ ├── nls.js │ │ ├── nls.ts │ │ ├── node.js │ │ ├── node.ts │ │ ├── optimize.js │ │ ├── optimize.ts │ │ ├── policies.js │ │ ├── policies.ts │ │ ├── postcss.js │ │ ├── postcss.ts │ │ ├── preLaunch.js │ │ ├── preLaunch.ts │ │ ├── propertyInitOrderChecker.js │ │ ├── propertyInitOrderChecker.ts │ │ ├── reporter.js │ │ ├── reporter.ts │ │ ├── snapshotLoader.js │ │ ├── snapshotLoader.ts │ │ ├── standalone.js │ │ ├── standalone.ts │ │ ├── stats.js │ │ ├── stats.ts │ │ ├── stylelint/ │ │ │ ├── validateVariableNames.js │ │ │ ├── validateVariableNames.ts │ │ │ └── vscode-known-variables.json │ │ ├── task.js │ │ ├── task.ts │ │ ├── test/ │ │ │ ├── i18n.test.js │ │ │ └── i18n.test.ts │ │ ├── treeshaking.js │ │ ├── treeshaking.ts │ │ ├── tsb/ │ │ │ ├── builder.js │ │ │ ├── builder.ts │ │ │ ├── index.js │ │ │ ├── index.ts │ │ │ ├── transpiler.js │ │ │ ├── transpiler.ts │ │ │ ├── utils.js │ │ │ └── utils.ts │ │ ├── typings/ │ │ │ ├── cgmanifest.json │ │ │ ├── event-stream.d.ts │ │ │ ├── github-releases.d.ts │ │ │ ├── gulp-bom.d.ts │ │ │ ├── gulp-buffer.d.ts │ │ │ ├── gulp-flatmap.d.ts │ │ │ ├── lazy.js.d.ts │ │ │ ├── stream.d.ts │ │ │ ├── ternary-stream.d.ts │ │ │ └── vinyl.d.ts │ │ ├── util.js │ │ ├── util.ts │ │ └── watch/ │ │ ├── index.js │ │ ├── index.ts │ │ ├── watch-win32.js │ │ └── watch-win32.ts │ ├── linux/ │ │ ├── debian/ │ │ │ ├── calculate-deps.js │ │ │ ├── calculate-deps.ts │ │ │ ├── dep-lists.js │ │ │ ├── dep-lists.ts │ │ │ ├── install-sysroot.js │ │ │ ├── install-sysroot.ts │ │ │ ├── types.js │ │ │ └── types.ts │ │ ├── dependencies-generator.js │ │ ├── dependencies-generator.ts │ │ ├── libcxx-fetcher.js │ │ ├── libcxx-fetcher.ts │ │ └── rpm/ │ │ ├── calculate-deps.js │ │ ├── calculate-deps.ts │ │ ├── dep-lists.js │ │ ├── dep-lists.ts │ │ ├── types.js │ │ └── types.ts │ ├── loader.min │ ├── monaco/ │ │ ├── LICENSE │ │ ├── README-npm.md │ │ ├── README.md │ │ ├── ThirdPartyNotices.txt │ │ ├── monaco.d.ts.recipe │ │ ├── monaco.usage.recipe │ │ ├── package.json │ │ └── version.txt │ ├── npm/ │ │ ├── dirs.js │ │ ├── gyp/ │ │ │ └── package.json │ │ ├── jsconfig.json │ │ ├── postinstall.js │ │ ├── preinstall.js │ │ ├── update-all-grammars.mjs │ │ ├── update-distro.mjs │ │ └── update-localization-extension.js │ ├── package.json │ ├── setup-npm-registry.js │ ├── stylelint.js │ ├── tsconfig.build.json │ ├── tsconfig.json │ └── win32/ │ ├── .gitignore │ ├── Cargo.toml │ ├── code.iss │ ├── explorer-appx-fetcher.js │ ├── explorer-appx-fetcher.ts │ └── i18n/ │ ├── Default.hu.isl │ ├── Default.ko.isl │ ├── Default.zh-cn.isl │ ├── Default.zh-tw.isl │ ├── messages.de.isl │ ├── messages.en.isl │ ├── messages.es.isl │ ├── messages.fr.isl │ ├── messages.hu.isl │ ├── messages.it.isl │ ├── messages.ja.isl │ ├── messages.ko.isl │ ├── messages.pt-br.isl │ ├── messages.ru.isl │ ├── messages.tr.isl │ ├── messages.zh-cn.isl │ └── messages.zh-tw.isl ├── cglicenses.json ├── cgmanifest.json ├── cli/ │ ├── .cargo/ │ │ └── config.toml │ ├── CONTRIBUTING.md │ ├── Cargo.toml │ ├── ThirdPartyNotices.txt │ ├── build.rs │ ├── rustfmt.toml │ └── src/ │ ├── async_pipe.rs │ ├── auth.rs │ ├── bin/ │ │ └── code/ │ │ ├── legacy_args.rs │ │ └── main.rs │ ├── commands/ │ │ ├── args.rs │ │ ├── context.rs │ │ ├── output.rs │ │ ├── serve_web.rs │ │ ├── tunnels.rs │ │ ├── update.rs │ │ └── version.rs │ ├── commands.rs │ ├── constants.rs │ ├── desktop/ │ │ └── version_manager.rs │ ├── desktop.rs │ ├── download_cache.rs │ ├── json_rpc.rs │ ├── lib.rs │ ├── log.rs │ ├── msgpack_rpc.rs │ ├── options.rs │ ├── rpc.rs │ ├── self_update.rs │ ├── singleton.rs │ ├── state.rs │ ├── tunnels/ │ │ ├── challenge.rs │ │ ├── code_server.rs │ │ ├── control_server.rs │ │ ├── dev_tunnels.rs │ │ ├── legal.rs │ │ ├── local_forwarding.rs │ │ ├── nosleep.rs │ │ ├── nosleep_linux.rs │ │ ├── nosleep_macos.rs │ │ ├── nosleep_windows.rs │ │ ├── paths.rs │ │ ├── port_forwarder.rs │ │ ├── protocol.rs │ │ ├── server_bridge.rs │ │ ├── server_multiplexer.rs │ │ ├── service.rs │ │ ├── service_linux.rs │ │ ├── service_macos.rs │ │ ├── service_windows.rs │ │ ├── shutdown_signal.rs │ │ ├── singleton_client.rs │ │ ├── singleton_server.rs │ │ ├── socket_signal.rs │ │ └── wsl_detect.rs │ ├── tunnels.rs │ ├── update_service.rs │ ├── util/ │ │ ├── app_lock.rs │ │ ├── command.rs │ │ ├── errors.rs │ │ ├── file_lock.rs │ │ ├── http.rs │ │ ├── input.rs │ │ ├── io.rs │ │ ├── is_integrated.rs │ │ ├── machine.rs │ │ ├── os.rs │ │ ├── prereqs.rs │ │ ├── ring_buffer.rs │ │ ├── sync.rs │ │ ├── tar.rs │ │ └── zipper.rs │ └── util.rs ├── eslint.config.js ├── extensions/ │ ├── .npmrc │ ├── bat/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── snippets/ │ │ │ └── batchfile.code-snippets │ │ └── syntaxes/ │ │ └── batchfile.tmLanguage.json │ ├── cgmanifest.json │ ├── clojure/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── syntaxes/ │ │ └── clojure.tmLanguage.json │ ├── coffeescript/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── snippets/ │ │ │ └── coffeescript.code-snippets │ │ └── syntaxes/ │ │ └── coffeescript.tmLanguage.json │ ├── configuration-editing/ │ │ ├── .npmrc │ │ ├── .vscodeignore │ │ ├── extension-browser.webpack.config.js │ │ ├── extension.webpack.config.js │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── schemas/ │ │ │ ├── attachContainer.schema.json │ │ │ ├── devContainer.codespaces.schema.json │ │ │ └── devContainer.vscode.schema.json │ │ ├── src/ │ │ │ ├── browser/ │ │ │ │ └── net.ts │ │ │ ├── configurationEditingMain.ts │ │ │ ├── extensionsProposals.ts │ │ │ ├── importExportProfiles.ts │ │ │ ├── node/ │ │ │ │ └── net.ts │ │ │ ├── settingsDocumentHelper.ts │ │ │ ├── test/ │ │ │ │ ├── completion.test.ts │ │ │ │ └── index.ts │ │ │ └── typings/ │ │ │ └── ref.d.ts │ │ └── tsconfig.json │ ├── cpp/ │ │ ├── .vscodeignore │ │ ├── build/ │ │ │ └── update-grammars.js │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── snippets/ │ │ │ ├── c.code-snippets │ │ │ └── cpp.code-snippets │ │ └── syntaxes/ │ │ ├── c.tmLanguage.json │ │ ├── cpp.embedded.macro.tmLanguage.json │ │ ├── cpp.tmLanguage.json │ │ ├── cuda-cpp.tmLanguage.json │ │ └── platform.tmLanguage.json │ ├── csharp/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── snippets/ │ │ │ └── csharp.code-snippets │ │ └── syntaxes/ │ │ └── csharp.tmLanguage.json │ ├── css/ │ │ ├── .vscode/ │ │ │ └── launch.json │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── syntaxes/ │ │ └── css.tmLanguage.json │ ├── css-language-features/ │ │ ├── .npmrc │ │ ├── .vscode/ │ │ │ ├── launch.json │ │ │ ├── settings.json │ │ │ └── tasks.json │ │ ├── .vscodeignore │ │ ├── CONTRIBUTING.md │ │ ├── README.md │ │ ├── client/ │ │ │ ├── src/ │ │ │ │ ├── browser/ │ │ │ │ │ └── cssClientMain.ts │ │ │ │ ├── cssClient.ts │ │ │ │ ├── customData.ts │ │ │ │ ├── dropOrPaste/ │ │ │ │ │ ├── dropOrPasteResource.ts │ │ │ │ │ ├── shared.ts │ │ │ │ │ └── uriList.ts │ │ │ │ ├── node/ │ │ │ │ │ ├── cssClientMain.ts │ │ │ │ │ └── nodeFs.ts │ │ │ │ └── requests.ts │ │ │ └── tsconfig.json │ │ ├── extension-browser.webpack.config.js │ │ ├── extension.webpack.config.js │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── schemas/ │ │ │ └── package.schema.json │ │ ├── server/ │ │ │ ├── .npmrc │ │ │ ├── .vscode/ │ │ │ │ ├── launch.json │ │ │ │ └── tasks.json │ │ │ ├── extension-browser.webpack.config.js │ │ │ ├── extension.webpack.config.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── browser/ │ │ │ │ │ ├── cssServerMain.ts │ │ │ │ │ └── cssServerWorkerMain.ts │ │ │ │ ├── cssServer.ts │ │ │ │ ├── customData.ts │ │ │ │ ├── languageModelCache.ts │ │ │ │ ├── node/ │ │ │ │ │ ├── cssServerMain.ts │ │ │ │ │ ├── cssServerNodeMain.ts │ │ │ │ │ └── nodeFs.ts │ │ │ │ ├── requests.ts │ │ │ │ ├── test/ │ │ │ │ │ ├── completion.test.ts │ │ │ │ │ └── links.test.ts │ │ │ │ └── utils/ │ │ │ │ ├── documentContext.ts │ │ │ │ ├── runner.ts │ │ │ │ ├── strings.ts │ │ │ │ └── validation.ts │ │ │ ├── test/ │ │ │ │ ├── index.js │ │ │ │ ├── linksTestFixtures/ │ │ │ │ │ └── .gitignore │ │ │ │ └── pathCompletionFixtures/ │ │ │ │ ├── .foo.js │ │ │ │ ├── about/ │ │ │ │ │ ├── about.css │ │ │ │ │ └── about.html │ │ │ │ ├── index.html │ │ │ │ ├── scss/ │ │ │ │ │ ├── _foo.scss │ │ │ │ │ └── main.scss │ │ │ │ └── src/ │ │ │ │ ├── data/ │ │ │ │ │ └── foo.asar │ │ │ │ ├── feature.js │ │ │ │ └── test.js │ │ │ └── tsconfig.json │ │ └── test/ │ │ └── mocha.opts │ ├── dart/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── syntaxes/ │ │ └── dart.tmLanguage.json │ ├── debug-auto-launch/ │ │ ├── .npmrc │ │ ├── .vscode/ │ │ │ └── launch.json │ │ ├── .vscodeignore │ │ ├── extension.webpack.config.js │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── src/ │ │ │ └── extension.ts │ │ └── tsconfig.json │ ├── debug-server-ready/ │ │ ├── .npmrc │ │ ├── .vscode/ │ │ │ └── launch.json │ │ ├── .vscodeignore │ │ ├── extension.webpack.config.js │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── src/ │ │ │ └── extension.ts │ │ └── tsconfig.json │ ├── diff/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── syntaxes/ │ │ └── diff.tmLanguage.json │ ├── docker/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── syntaxes/ │ │ └── docker.tmLanguage.json │ ├── emmet/ │ │ ├── .npmrc │ │ ├── .vscode/ │ │ │ ├── launch.json │ │ │ └── settings.json │ │ ├── .vscodeignore │ │ ├── CONTRIBUTING.md │ │ ├── README.md │ │ ├── cgmanifest.json │ │ ├── extension-browser.webpack.config.js │ │ ├── extension.webpack.config.js │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── src/ │ │ │ ├── abbreviationActions.ts │ │ │ ├── balance.ts │ │ │ ├── browser/ │ │ │ │ └── emmetBrowserMain.ts │ │ │ ├── bufferStream.ts │ │ │ ├── defaultCompletionProvider.ts │ │ │ ├── editPoint.ts │ │ │ ├── emmetCommon.ts │ │ │ ├── evaluateMathExpression.ts │ │ │ ├── imageSizeHelper.ts │ │ │ ├── incrementDecrement.ts │ │ │ ├── locateFile.ts │ │ │ ├── matchTag.ts │ │ │ ├── mergeLines.ts │ │ │ ├── node/ │ │ │ │ └── emmetNodeMain.ts │ │ │ ├── parseDocument.ts │ │ │ ├── reflectCssValue.ts │ │ │ ├── removeTag.ts │ │ │ ├── selectItem.ts │ │ │ ├── selectItemHTML.ts │ │ │ ├── selectItemStylesheet.ts │ │ │ ├── splitJoinTag.ts │ │ │ ├── test/ │ │ │ │ ├── abbreviationAction.test.ts │ │ │ │ ├── completion.test.ts │ │ │ │ ├── cssAbbreviationAction.test.ts │ │ │ │ ├── editPointSelectItemBalance.test.ts │ │ │ │ ├── evaluateMathExpression.test.ts │ │ │ │ ├── incrementDecrement.test.ts │ │ │ │ ├── index.ts │ │ │ │ ├── partialParsingStylesheet.test.ts │ │ │ │ ├── reflectCssValue.test.ts │ │ │ │ ├── tagActions.test.ts │ │ │ │ ├── testUtils.ts │ │ │ │ ├── toggleComment.test.ts │ │ │ │ ├── updateImageSize.test.ts │ │ │ │ └── wrapWithAbbreviation.test.ts │ │ │ ├── toggleComment.ts │ │ │ ├── typings/ │ │ │ │ ├── EmmetFlatNode.d.ts │ │ │ │ ├── EmmetNode.d.ts │ │ │ │ ├── emmetio__css-parser.d.ts │ │ │ │ ├── emmetio__html-matcher.d.ts │ │ │ │ └── refs.d.ts │ │ │ ├── updateImageSize.ts │ │ │ ├── updateTag.ts │ │ │ └── util.ts │ │ ├── test-workspace/ │ │ │ └── .vscode/ │ │ │ └── settings.json │ │ └── tsconfig.json │ ├── esbuild-webview-common.js │ ├── extension-editing/ │ │ ├── .npmrc │ │ ├── .vscodeignore │ │ ├── extension-browser.webpack.config.js │ │ ├── extension.webpack.config.js │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── src/ │ │ │ ├── constants.ts │ │ │ ├── extensionEditingBrowserMain.ts │ │ │ ├── extensionEditingMain.ts │ │ │ ├── extensionEngineValidation.ts │ │ │ ├── extensionLinter.ts │ │ │ ├── jsonReconstruct.ts │ │ │ └── packageDocumentHelper.ts │ │ └── tsconfig.json │ ├── fsharp/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── snippets/ │ │ │ └── fsharp.code-snippets │ │ └── syntaxes/ │ │ └── fsharp.tmLanguage.json │ ├── git/ │ │ ├── .npmrc │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── build/ │ │ │ └── update-emoji.js │ │ ├── extension.webpack.config.js │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── resources/ │ │ │ └── emojis.json │ │ ├── src/ │ │ │ ├── actionButton.ts │ │ │ ├── api/ │ │ │ │ ├── api1.ts │ │ │ │ ├── extension.ts │ │ │ │ └── git.d.ts │ │ │ ├── askpass-empty.sh │ │ │ ├── askpass-main.ts │ │ │ ├── askpass.sh │ │ │ ├── askpass.ts │ │ │ ├── autofetch.ts │ │ │ ├── blame.ts │ │ │ ├── branchProtection.ts │ │ │ ├── cache.ts │ │ │ ├── commands.ts │ │ │ ├── decorationProvider.ts │ │ │ ├── decorators.ts │ │ │ ├── diagnostics.ts │ │ │ ├── editSessionIdentityProvider.ts │ │ │ ├── emoji.ts │ │ │ ├── fileSystemProvider.ts │ │ │ ├── git-base.ts │ │ │ ├── git-editor-empty.sh │ │ │ ├── git-editor-main.ts │ │ │ ├── git-editor.sh │ │ │ ├── git.ts │ │ │ ├── gitEditor.ts │ │ │ ├── historyItemDetailsProvider.ts │ │ │ ├── historyProvider.ts │ │ │ ├── ipc/ │ │ │ │ ├── ipcClient.ts │ │ │ │ └── ipcServer.ts │ │ │ ├── main.ts │ │ │ ├── model.ts │ │ │ ├── operation.ts │ │ │ ├── postCommitCommands.ts │ │ │ ├── protocolHandler.ts │ │ │ ├── pushError.ts │ │ │ ├── remotePublisher.ts │ │ │ ├── remoteSource.ts │ │ │ ├── repository.ts │ │ │ ├── ssh-askpass-empty.sh │ │ │ ├── ssh-askpass.sh │ │ │ ├── staging.ts │ │ │ ├── statusbar.ts │ │ │ ├── terminal.ts │ │ │ ├── test/ │ │ │ │ ├── git.test.ts │ │ │ │ ├── index.ts │ │ │ │ └── smoke.test.ts │ │ │ ├── timelineProvider.ts │ │ │ ├── typings/ │ │ │ │ └── git-base.d.ts │ │ │ ├── uri.ts │ │ │ ├── util.ts │ │ │ └── watch.ts │ │ └── tsconfig.json │ ├── git-base/ │ │ ├── .npmrc │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── build/ │ │ │ └── update-grammars.js │ │ ├── cgmanifest.json │ │ ├── extension-browser.webpack.config.js │ │ ├── extension.webpack.config.js │ │ ├── languages/ │ │ │ ├── git-commit.language-configuration.json │ │ │ ├── git-rebase.language-configuration.json │ │ │ └── ignore.language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── src/ │ │ │ ├── api/ │ │ │ │ ├── api1.ts │ │ │ │ ├── extension.ts │ │ │ │ └── git-base.d.ts │ │ │ ├── decorators.ts │ │ │ ├── extension.ts │ │ │ ├── model.ts │ │ │ ├── remoteProvider.ts │ │ │ ├── remoteSource.ts │ │ │ └── util.ts │ │ ├── syntaxes/ │ │ │ ├── git-commit.tmLanguage.json │ │ │ ├── git-rebase.tmLanguage.json │ │ │ └── ignore.tmLanguage.json │ │ └── tsconfig.json │ ├── github/ │ │ ├── .npmrc │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── extension.webpack.config.js │ │ ├── markdown.css │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── src/ │ │ │ ├── auth.ts │ │ │ ├── branchProtection.ts │ │ │ ├── canonicalUriProvider.ts │ │ │ ├── commands.ts │ │ │ ├── credentialProvider.ts │ │ │ ├── extension.ts │ │ │ ├── historyItemDetailsProvider.ts │ │ │ ├── links.ts │ │ │ ├── publish.ts │ │ │ ├── pushErrorHandler.ts │ │ │ ├── remoteSourceProvider.ts │ │ │ ├── remoteSourcePublisher.ts │ │ │ ├── shareProviders.ts │ │ │ ├── test/ │ │ │ │ ├── github.test.ts │ │ │ │ └── index.ts │ │ │ ├── typings/ │ │ │ │ ├── git-base.d.ts │ │ │ │ ├── git.d.ts │ │ │ │ └── ref.d.ts │ │ │ └── util.ts │ │ ├── testWorkspace/ │ │ │ ├── .github/ │ │ │ │ ├── PULL_REQUEST_TEMPLATE/ │ │ │ │ │ ├── a.md │ │ │ │ │ ├── b.md │ │ │ │ │ └── x.txt │ │ │ │ └── PULL_REQUEST_TEMPLATE.md │ │ │ ├── PULL_REQUEST_TEMPLATE/ │ │ │ │ ├── a.md │ │ │ │ ├── b.md │ │ │ │ └── x.txt │ │ │ ├── PULL_REQUEST_TEMPLATE.md │ │ │ ├── docs/ │ │ │ │ ├── PULL_REQUEST_TEMPLATE/ │ │ │ │ │ ├── a.md │ │ │ │ │ ├── b.md │ │ │ │ │ └── x.txt │ │ │ │ └── PULL_REQUEST_TEMPLATE.md │ │ │ ├── some-markdown.md │ │ │ └── x.txt │ │ └── tsconfig.json │ ├── github-authentication/ │ │ ├── .gitignore │ │ ├── .npmrc │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── extension-browser.webpack.config.js │ │ ├── extension.webpack.config.js │ │ ├── media/ │ │ │ ├── auth.css │ │ │ └── index.html │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── src/ │ │ │ ├── browser/ │ │ │ │ ├── authServer.ts │ │ │ │ ├── buffer.ts │ │ │ │ ├── crypto.ts │ │ │ │ └── fetch.ts │ │ │ ├── common/ │ │ │ │ ├── env.ts │ │ │ │ ├── errors.ts │ │ │ │ ├── experimentationService.ts │ │ │ │ ├── keychain.ts │ │ │ │ ├── logger.ts │ │ │ │ └── utils.ts │ │ │ ├── config.ts │ │ │ ├── extension.ts │ │ │ ├── flows.ts │ │ │ ├── github.ts │ │ │ ├── githubServer.ts │ │ │ ├── node/ │ │ │ │ ├── authServer.ts │ │ │ │ ├── buffer.ts │ │ │ │ ├── crypto.ts │ │ │ │ └── fetch.ts │ │ │ └── test/ │ │ │ ├── flows.test.ts │ │ │ └── node/ │ │ │ └── authServer.test.ts │ │ └── tsconfig.json │ ├── go/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── syntaxes/ │ │ └── go.tmLanguage.json │ ├── groovy/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── snippets/ │ │ │ └── groovy.code-snippets │ │ └── syntaxes/ │ │ └── groovy.tmLanguage.json │ ├── grunt/ │ │ ├── .npmrc │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── extension.webpack.config.js │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── src/ │ │ │ └── main.ts │ │ └── tsconfig.json │ ├── gulp/ │ │ ├── .npmrc │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── extension.webpack.config.js │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── src/ │ │ │ └── main.ts │ │ └── tsconfig.json │ ├── handlebars/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── syntaxes/ │ │ └── Handlebars.tmLanguage.json │ ├── hlsl/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── syntaxes/ │ │ └── hlsl.tmLanguage.json │ ├── html/ │ │ ├── .vscodeignore │ │ ├── build/ │ │ │ └── update-grammar.mjs │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── snippets/ │ │ │ └── html.code-snippets │ │ └── syntaxes/ │ │ ├── html-derivative.tmLanguage.json │ │ └── html.tmLanguage.json │ ├── html-language-features/ │ │ ├── .npmrc │ │ ├── .vscode/ │ │ │ ├── launch.json │ │ │ ├── settings.json │ │ │ └── tasks.json │ │ ├── .vscodeignore │ │ ├── CONTRIBUTING.md │ │ ├── README.md │ │ ├── build/ │ │ │ └── bundleTypeScriptLibraries.js │ │ ├── cgmanifest.json │ │ ├── client/ │ │ │ ├── src/ │ │ │ │ ├── autoInsertion.ts │ │ │ │ ├── browser/ │ │ │ │ │ └── htmlClientMain.ts │ │ │ │ ├── customData.ts │ │ │ │ ├── htmlClient.ts │ │ │ │ ├── languageParticipants.ts │ │ │ │ ├── node/ │ │ │ │ │ ├── htmlClientMain.ts │ │ │ │ │ └── nodeFs.ts │ │ │ │ └── requests.ts │ │ │ └── tsconfig.json │ │ ├── extension-browser.webpack.config.js │ │ ├── extension.webpack.config.js │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── schemas/ │ │ │ └── package.schema.json │ │ └── server/ │ │ ├── .npmrc │ │ ├── .vscode/ │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ ├── build/ │ │ │ └── javaScriptLibraryLoader.js │ │ ├── extension-browser.webpack.config.js │ │ ├── extension.webpack.config.js │ │ ├── lib/ │ │ │ ├── cgmanifest.json │ │ │ └── jquery.d.ts │ │ ├── package.json │ │ ├── src/ │ │ │ ├── browser/ │ │ │ │ ├── htmlServerMain.ts │ │ │ │ └── htmlServerWorkerMain.ts │ │ │ ├── customData.ts │ │ │ ├── htmlServer.ts │ │ │ ├── languageModelCache.ts │ │ │ ├── modes/ │ │ │ │ ├── cssMode.ts │ │ │ │ ├── embeddedSupport.ts │ │ │ │ ├── formatting.ts │ │ │ │ ├── htmlFolding.ts │ │ │ │ ├── htmlMode.ts │ │ │ │ ├── javascriptLibs.ts │ │ │ │ ├── javascriptMode.ts │ │ │ │ ├── javascriptSemanticTokens.ts │ │ │ │ ├── languageModes.ts │ │ │ │ ├── selectionRanges.ts │ │ │ │ └── semanticTokens.ts │ │ │ ├── node/ │ │ │ │ ├── htmlServerMain.ts │ │ │ │ ├── htmlServerNodeMain.ts │ │ │ │ └── nodeFs.ts │ │ │ ├── requests.ts │ │ │ ├── test/ │ │ │ │ ├── completions.test.ts │ │ │ │ ├── documentContext.test.ts │ │ │ │ ├── embedded.test.ts │ │ │ │ ├── fixtures/ │ │ │ │ │ ├── expected/ │ │ │ │ │ │ ├── 19813-4spaces.html │ │ │ │ │ │ ├── 19813-tab.html │ │ │ │ │ │ ├── 19813.html │ │ │ │ │ │ └── 21634.html │ │ │ │ │ └── inputs/ │ │ │ │ │ ├── 19813.html │ │ │ │ │ └── 21634.html │ │ │ │ ├── folding.test.ts │ │ │ │ ├── formatting.test.ts │ │ │ │ ├── pathCompletionFixtures/ │ │ │ │ │ ├── .foo.js │ │ │ │ │ ├── about/ │ │ │ │ │ │ ├── about.css │ │ │ │ │ │ ├── about.html │ │ │ │ │ │ └── media/ │ │ │ │ │ │ └── icon.pic │ │ │ │ │ ├── index.html │ │ │ │ │ └── src/ │ │ │ │ │ ├── feature.js │ │ │ │ │ └── test.js │ │ │ │ ├── rename.test.ts │ │ │ │ ├── selectionRanges.test.ts │ │ │ │ ├── semanticTokens.test.ts │ │ │ │ └── words.test.ts │ │ │ └── utils/ │ │ │ ├── arrays.ts │ │ │ ├── documentContext.ts │ │ │ ├── positions.ts │ │ │ ├── runner.ts │ │ │ ├── strings.ts │ │ │ └── validation.ts │ │ ├── test/ │ │ │ └── index.js │ │ └── tsconfig.json │ ├── ini/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── ini.language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── properties.language-configuration.json │ │ └── syntaxes/ │ │ └── ini.tmLanguage.json │ ├── ipynb/ │ │ ├── .gitignore │ │ ├── .npmrc │ │ ├── .vscode/ │ │ │ └── launch.json │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── esbuild.js │ │ ├── extension-browser.webpack.config.js │ │ ├── extension.webpack.config.js │ │ ├── notebook-src/ │ │ │ └── cellAttachmentRenderer.ts │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── src/ │ │ │ ├── common.ts │ │ │ ├── constants.ts │ │ │ ├── deserializers.ts │ │ │ ├── helper.ts │ │ │ ├── ipynbMain.browser.ts │ │ │ ├── ipynbMain.node.ts │ │ │ ├── ipynbMain.ts │ │ │ ├── notebookAttachmentCleaner.ts │ │ │ ├── notebookImagePaste.ts │ │ │ ├── notebookModelStoreSync.ts │ │ │ ├── notebookSerializer.node.ts │ │ │ ├── notebookSerializer.ts │ │ │ ├── notebookSerializer.web.ts │ │ │ ├── notebookSerializerWorker.ts │ │ │ ├── notebookSerializerWorker.web.ts │ │ │ ├── serializers.ts │ │ │ ├── test/ │ │ │ │ ├── clearOutputs.test.ts │ │ │ │ ├── index.ts │ │ │ │ ├── notebookModelStoreSync.test.ts │ │ │ │ └── serializers.test.ts │ │ │ └── types.d.ts │ │ └── tsconfig.json │ ├── jake/ │ │ ├── .npmrc │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── extension.webpack.config.js │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── src/ │ │ │ └── main.ts │ │ └── tsconfig.json │ ├── java/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── snippets/ │ │ │ └── java.code-snippets │ │ └── syntaxes/ │ │ └── java.tmLanguage.json │ ├── javascript/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── javascript-language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── snippets/ │ │ │ └── javascript.code-snippets │ │ ├── syntaxes/ │ │ │ ├── JavaScript.tmLanguage.json │ │ │ ├── JavaScriptReact.tmLanguage.json │ │ │ ├── Readme.md │ │ │ └── Regular Expressions (JavaScript).tmLanguage │ │ └── tags-language-configuration.json │ ├── json/ │ │ ├── .vscodeignore │ │ ├── build/ │ │ │ └── update-grammars.js │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── syntaxes/ │ │ ├── JSON.tmLanguage.json │ │ ├── JSONC.tmLanguage.json │ │ ├── JSONL.tmLanguage.json │ │ └── snippets.tmLanguage.json │ ├── json-language-features/ │ │ ├── .npmrc │ │ ├── .vscode/ │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ ├── .vscodeignore │ │ ├── CONTRIBUTING.md │ │ ├── README.md │ │ ├── client/ │ │ │ ├── src/ │ │ │ │ ├── browser/ │ │ │ │ │ └── jsonClientMain.ts │ │ │ │ ├── jsonClient.ts │ │ │ │ ├── languageParticipants.ts │ │ │ │ ├── languageStatus.ts │ │ │ │ ├── node/ │ │ │ │ │ ├── jsonClientMain.ts │ │ │ │ │ └── schemaCache.ts │ │ │ │ └── utils/ │ │ │ │ └── hash.ts │ │ │ └── tsconfig.json │ │ ├── extension-browser.webpack.config.js │ │ ├── extension.webpack.config.js │ │ ├── package.json │ │ ├── package.nls.json │ │ └── server/ │ │ ├── .npmignore │ │ ├── .npmrc │ │ ├── .vscode/ │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ ├── README.md │ │ ├── bin/ │ │ │ └── vscode-json-languageserver │ │ ├── extension-browser.webpack.config.js │ │ ├── extension.webpack.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── browser/ │ │ │ │ ├── jsonServerMain.ts │ │ │ │ └── jsonServerWorkerMain.ts │ │ │ ├── jsonServer.ts │ │ │ ├── languageModelCache.ts │ │ │ ├── node/ │ │ │ │ ├── jsonServerMain.ts │ │ │ │ └── jsonServerNodeMain.ts │ │ │ └── utils/ │ │ │ ├── runner.ts │ │ │ ├── strings.ts │ │ │ └── validation.ts │ │ ├── test/ │ │ │ └── mocha.opts │ │ └── tsconfig.json │ ├── julia/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── syntaxes/ │ │ └── julia.tmLanguage.json │ ├── latex/ │ │ ├── .vscodeignore │ │ ├── build/ │ │ │ └── update-grammars.js │ │ ├── cgmanifest.json │ │ ├── cpp-bailout-license.txt │ │ ├── latex-cpp-embedded-language-configuration.json │ │ ├── latex-language-configuration.json │ │ ├── markdown-latex-combined-language-configuration.json │ │ ├── markdown-latex-combined-license.txt │ │ ├── package.json │ │ ├── package.nls.json │ │ └── syntaxes/ │ │ ├── Bibtex.tmLanguage.json │ │ ├── LaTeX.tmLanguage.json │ │ ├── TeX.tmLanguage.json │ │ ├── cpp-grammar-bailout.tmLanguage.json │ │ └── markdown-latex-combined.tmLanguage.json │ ├── less/ │ │ ├── .vscodeignore │ │ ├── build/ │ │ │ └── update-grammar.js │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── syntaxes/ │ │ └── less.tmLanguage.json │ ├── log/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── syntaxes/ │ │ └── log.tmLanguage.json │ ├── lua/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── syntaxes/ │ │ └── lua.tmLanguage.json │ ├── make/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── syntaxes/ │ │ └── make.tmLanguage.json │ ├── mangle-loader.js │ ├── markdown-basics/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── snippets/ │ │ │ └── markdown.code-snippets │ │ └── syntaxes/ │ │ └── markdown.tmLanguage.json │ ├── markdown-language-features/ │ │ ├── .gitignore │ │ ├── .npmrc │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── esbuild-notebook.js │ │ ├── esbuild-preview.js │ │ ├── extension-browser.webpack.config.js │ │ ├── extension.webpack.config.js │ │ ├── media/ │ │ │ ├── highlight.css │ │ │ └── markdown.css │ │ ├── notebook/ │ │ │ ├── index.ts │ │ │ └── tsconfig.json │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── preview-src/ │ │ │ ├── activeLineMarker.ts │ │ │ ├── csp.ts │ │ │ ├── events.ts │ │ │ ├── index.ts │ │ │ ├── loading.ts │ │ │ ├── messaging.ts │ │ │ ├── pre.ts │ │ │ ├── scroll-sync.ts │ │ │ ├── settings.ts │ │ │ ├── strings.ts │ │ │ └── tsconfig.json │ │ ├── schemas/ │ │ │ └── package.schema.json │ │ ├── src/ │ │ │ ├── client/ │ │ │ │ ├── client.ts │ │ │ │ ├── fileWatchingManager.ts │ │ │ │ ├── inMemoryDocument.ts │ │ │ │ ├── protocol.ts │ │ │ │ └── workspace.ts │ │ │ ├── commandManager.ts │ │ │ ├── commands/ │ │ │ │ ├── copyImage.ts │ │ │ │ ├── index.ts │ │ │ │ ├── insertResource.ts │ │ │ │ ├── openImage.ts │ │ │ │ ├── refreshPreview.ts │ │ │ │ ├── reloadPlugins.ts │ │ │ │ ├── renderDocument.ts │ │ │ │ ├── showPreview.ts │ │ │ │ ├── showPreviewSecuritySelector.ts │ │ │ │ ├── showSource.ts │ │ │ │ └── toggleLock.ts │ │ │ ├── extension.browser.ts │ │ │ ├── extension.shared.ts │ │ │ ├── extension.ts │ │ │ ├── languageFeatures/ │ │ │ │ ├── copyFiles/ │ │ │ │ │ ├── copyFiles.ts │ │ │ │ │ ├── dropOrPasteResource.ts │ │ │ │ │ ├── newFilePathGenerator.ts │ │ │ │ │ ├── pasteUrlProvider.ts │ │ │ │ │ ├── shared.ts │ │ │ │ │ ├── smartDropOrPaste.ts │ │ │ │ │ └── snippets.ts │ │ │ │ ├── diagnostics.ts │ │ │ │ ├── fileReferences.ts │ │ │ │ ├── linkUpdater.ts │ │ │ │ └── updateLinksOnPaste.ts │ │ │ ├── logging.ts │ │ │ ├── markdownEngine.ts │ │ │ ├── markdownExtensions.ts │ │ │ ├── preview/ │ │ │ │ ├── documentRenderer.ts │ │ │ │ ├── preview.ts │ │ │ │ ├── previewConfig.ts │ │ │ │ ├── previewManager.ts │ │ │ │ ├── scrolling.ts │ │ │ │ ├── security.ts │ │ │ │ └── topmostLineMonitor.ts │ │ │ ├── slugify.ts │ │ │ ├── telemetryReporter.ts │ │ │ ├── test/ │ │ │ │ ├── copyFile.test.ts │ │ │ │ ├── documentLink.test.ts │ │ │ │ ├── engine.test.ts │ │ │ │ ├── engine.ts │ │ │ │ ├── index.ts │ │ │ │ ├── nulLogging.ts │ │ │ │ ├── pasteUrl.test.ts │ │ │ │ ├── urlToUri.test.ts │ │ │ │ └── util.ts │ │ │ ├── types/ │ │ │ │ └── textDocument.ts │ │ │ ├── typings/ │ │ │ │ └── ref.d.ts │ │ │ └── util/ │ │ │ ├── arrays.ts │ │ │ ├── async.ts │ │ │ ├── cancellation.ts │ │ │ ├── dispose.ts │ │ │ ├── document.ts │ │ │ ├── dom.ts │ │ │ ├── file.ts │ │ │ ├── mimes.ts │ │ │ ├── openDocumentLink.ts │ │ │ ├── resourceMap.ts │ │ │ ├── resources.ts │ │ │ ├── schemes.ts │ │ │ ├── uriList.ts │ │ │ └── url.ts │ │ ├── test-workspace/ │ │ │ ├── a.md │ │ │ ├── b.md │ │ │ ├── sub/ │ │ │ │ ├── c.md │ │ │ │ ├── d.md │ │ │ │ ├── file with space.md │ │ │ │ └── foo.txt │ │ │ └── sub with space/ │ │ │ └── file.md │ │ ├── tsconfig.browser.json │ │ ├── tsconfig.json │ │ └── types/ │ │ └── previewMessaging.d.ts │ ├── markdown-math/ │ │ ├── .gitignore │ │ ├── .npmrc │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── cgmanifest.json │ │ ├── esbuild.js │ │ ├── extension-browser.webpack.config.js │ │ ├── extension.webpack.config.js │ │ ├── notebook/ │ │ │ ├── katex.ts │ │ │ └── tsconfig.json │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── preview-styles/ │ │ │ └── index.css │ │ ├── src/ │ │ │ └── extension.ts │ │ ├── syntaxes/ │ │ │ ├── md-math-block.tmLanguage.json │ │ │ ├── md-math-fence.tmLanguage.json │ │ │ ├── md-math-inline.tmLanguage.json │ │ │ └── md-math.tmLanguage.json │ │ └── tsconfig.json │ ├── media-preview/ │ │ ├── .npmrc │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── extension-browser.webpack.config.js │ │ ├── extension.webpack.config.js │ │ ├── media/ │ │ │ ├── audioPreview.css │ │ │ ├── audioPreview.js │ │ │ ├── imagePreview.css │ │ │ ├── imagePreview.js │ │ │ ├── videoPreview.css │ │ │ └── videoPreview.js │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── src/ │ │ │ ├── audioPreview.ts │ │ │ ├── binarySizeStatusBarEntry.ts │ │ │ ├── extension.ts │ │ │ ├── imagePreview/ │ │ │ │ ├── index.ts │ │ │ │ ├── sizeStatusBarEntry.ts │ │ │ │ └── zoomStatusBarEntry.ts │ │ │ ├── mediaPreview.ts │ │ │ ├── ownedStatusBarEntry.ts │ │ │ ├── util/ │ │ │ │ ├── dispose.ts │ │ │ │ └── dom.ts │ │ │ └── videoPreview.ts │ │ └── tsconfig.json │ ├── merge-conflict/ │ │ ├── .npmrc │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── extension-browser.webpack.config.js │ │ ├── extension.webpack.config.js │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── src/ │ │ │ ├── codelensProvider.ts │ │ │ ├── commandHandler.ts │ │ │ ├── contentProvider.ts │ │ │ ├── delayer.ts │ │ │ ├── documentMergeConflict.ts │ │ │ ├── documentTracker.ts │ │ │ ├── interfaces.ts │ │ │ ├── mergeConflictMain.ts │ │ │ ├── mergeConflictParser.ts │ │ │ ├── mergeDecorator.ts │ │ │ └── services.ts │ │ └── tsconfig.json │ ├── microsoft-authentication/ │ │ ├── .npmrc │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── extension-browser.webpack.config.js │ │ ├── extension.webpack.config.js │ │ ├── media/ │ │ │ ├── auth.css │ │ │ └── index.html │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── packageMocks/ │ │ │ ├── dpapi/ │ │ │ │ └── dpapi.js │ │ │ └── keytar/ │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── src/ │ │ │ ├── AADHelper.ts │ │ │ ├── UriEventHandler.ts │ │ │ ├── betterSecretStorage.ts │ │ │ ├── browser/ │ │ │ │ ├── authProvider.ts │ │ │ │ ├── authServer.ts │ │ │ │ ├── buffer.ts │ │ │ │ └── fetch.ts │ │ │ ├── common/ │ │ │ │ ├── accountAccess.ts │ │ │ │ ├── async.ts │ │ │ │ ├── cachePlugin.ts │ │ │ │ ├── env.ts │ │ │ │ ├── event.ts │ │ │ │ ├── experimentation.ts │ │ │ │ ├── loggerOptions.ts │ │ │ │ ├── loopbackClientAndOpener.ts │ │ │ │ ├── publicClientCache.ts │ │ │ │ ├── scopeData.ts │ │ │ │ ├── telemetryReporter.ts │ │ │ │ ├── test/ │ │ │ │ │ ├── loopbackClientAndOpener.test.ts │ │ │ │ │ └── scopeData.test.ts │ │ │ │ └── uri.ts │ │ │ ├── cryptoUtils.ts │ │ │ ├── extension.ts │ │ │ ├── extensionV1.ts │ │ │ ├── extensionV2.ts │ │ │ ├── logger.ts │ │ │ └── node/ │ │ │ ├── authProvider.ts │ │ │ ├── authServer.ts │ │ │ ├── buffer.ts │ │ │ ├── cachedPublicClientApplication.ts │ │ │ ├── fetch.ts │ │ │ ├── flows.ts │ │ │ ├── loopbackTemplate.ts │ │ │ └── publicClientCache.ts │ │ └── tsconfig.json │ ├── notebook-renderers/ │ │ ├── .gitignore │ │ ├── .npmrc │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── esbuild.js │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── src/ │ │ │ ├── ansi.ts │ │ │ ├── color.ts │ │ │ ├── colorMap.ts │ │ │ ├── htmlHelper.ts │ │ │ ├── index.ts │ │ │ ├── linkify.ts │ │ │ ├── rendererTypes.ts │ │ │ ├── stackTraceHelper.ts │ │ │ ├── test/ │ │ │ │ ├── index.ts │ │ │ │ ├── linkify.test.ts │ │ │ │ ├── notebookRenderer.test.ts │ │ │ │ └── stackTraceHelper.test.ts │ │ │ └── textHelper.ts │ │ └── tsconfig.json │ ├── npm/ │ │ ├── .npmrc │ │ ├── .vscode/ │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── extension-browser.webpack.config.js │ │ ├── extension.webpack.config.js │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── src/ │ │ │ ├── commands.ts │ │ │ ├── features/ │ │ │ │ ├── bowerJSONContribution.ts │ │ │ │ ├── date.ts │ │ │ │ ├── jsonContributions.ts │ │ │ │ └── packageJSONContribution.ts │ │ │ ├── npmBrowserMain.ts │ │ │ ├── npmMain.ts │ │ │ ├── npmScriptLens.ts │ │ │ ├── npmView.ts │ │ │ ├── preferred-pm.ts │ │ │ ├── readScripts.ts │ │ │ ├── scriptHover.ts │ │ │ └── tasks.ts │ │ └── tsconfig.json │ ├── objective-c/ │ │ ├── .vscodeignore │ │ ├── build/ │ │ │ └── update-grammars.js │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── syntaxes/ │ │ ├── objective-c++.tmLanguage.json │ │ └── objective-c.tmLanguage.json │ ├── open-remote-ssh/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── extension-browser.webpack.config.js │ │ ├── extension.webpack.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── authResolver.ts │ │ │ ├── commands.ts │ │ │ ├── common/ │ │ │ │ ├── disposable.ts │ │ │ │ ├── files.ts │ │ │ │ ├── logger.ts │ │ │ │ ├── platform.ts │ │ │ │ └── ports.ts │ │ │ ├── extension.ts │ │ │ ├── hostTreeView.ts │ │ │ ├── remoteLocationHistory.ts │ │ │ ├── serverConfig.ts │ │ │ ├── serverSetup.ts │ │ │ └── ssh/ │ │ │ ├── hostfile.ts │ │ │ ├── identityFiles.ts │ │ │ ├── sshConfig.ts │ │ │ ├── sshConnection.ts │ │ │ └── sshDestination.ts │ │ └── tsconfig.json │ ├── open-remote-wsl/ │ │ ├── README.md │ │ ├── extension-browser.webpack.config.js │ │ ├── extension.webpack.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── authResolver.ts │ │ │ ├── commands.ts │ │ │ ├── common/ │ │ │ │ ├── async.ts │ │ │ │ ├── disposable.ts │ │ │ │ ├── event.ts │ │ │ │ ├── files.ts │ │ │ │ ├── logger.ts │ │ │ │ ├── platform.ts │ │ │ │ └── ports.ts │ │ │ ├── distroTreeView.ts │ │ │ ├── extension.ts │ │ │ ├── remoteLocationHistory.ts │ │ │ ├── serverConfig.ts │ │ │ ├── serverSetup.ts │ │ │ └── wsl/ │ │ │ ├── wslManager.ts │ │ │ └── wslTerminal.ts │ │ └── tsconfig.json │ ├── package.json │ ├── perl/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── perl.language-configuration.json │ │ ├── perl6.language-configuration.json │ │ └── syntaxes/ │ │ ├── perl.tmLanguage.json │ │ └── perl6.tmLanguage.json │ ├── php/ │ │ ├── .vscode/ │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ ├── .vscodeignore │ │ ├── build/ │ │ │ └── update-grammar.mjs │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── snippets/ │ │ │ └── php.code-snippets │ │ └── syntaxes/ │ │ ├── html.tmLanguage.json │ │ └── php.tmLanguage.json │ ├── php-language-features/ │ │ ├── .npmrc │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── extension.webpack.config.js │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── src/ │ │ │ ├── features/ │ │ │ │ ├── completionItemProvider.ts │ │ │ │ ├── hoverProvider.ts │ │ │ │ ├── phpGlobalFunctions.ts │ │ │ │ ├── phpGlobals.ts │ │ │ │ ├── signatureHelpProvider.ts │ │ │ │ ├── utils/ │ │ │ │ │ ├── async.ts │ │ │ │ │ └── markedTextUtil.ts │ │ │ │ └── validationProvider.ts │ │ │ ├── phpMain.ts │ │ │ └── typings/ │ │ │ └── node.additions.d.ts │ │ └── tsconfig.json │ ├── postinstall.mjs │ ├── powershell/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── syntaxes/ │ │ └── powershell.tmLanguage.json │ ├── pug/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── syntaxes/ │ │ └── pug.tmLanguage.json │ ├── python/ │ │ ├── .vscode/ │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── syntaxes/ │ │ ├── MagicPython.tmLanguage.json │ │ └── MagicRegExp.tmLanguage.json │ ├── r/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── syntaxes/ │ │ └── r.tmLanguage.json │ ├── razor/ │ │ ├── .vscodeignore │ │ ├── build/ │ │ │ └── update-grammar.mjs │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── syntaxes/ │ │ └── cshtml.tmLanguage.json │ ├── references-view/ │ │ ├── .npmrc │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── extension-browser.webpack.config.js │ │ ├── extension.webpack.config.js │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── src/ │ │ │ ├── calls/ │ │ │ │ ├── index.ts │ │ │ │ └── model.ts │ │ │ ├── extension.ts │ │ │ ├── highlights.ts │ │ │ ├── navigation.ts │ │ │ ├── references/ │ │ │ │ ├── index.ts │ │ │ │ └── model.ts │ │ │ ├── references-view.d.ts │ │ │ ├── tree.ts │ │ │ ├── types/ │ │ │ │ ├── index.ts │ │ │ │ └── model.ts │ │ │ └── utils.ts │ │ └── tsconfig.json │ ├── restructuredtext/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── syntaxes/ │ │ └── rst.tmLanguage.json │ ├── ruby/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── syntaxes/ │ │ └── ruby.tmLanguage.json │ ├── rust/ │ │ ├── .vscodeignore │ │ ├── build/ │ │ │ └── update-grammar.mjs │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── syntaxes/ │ │ └── rust.tmLanguage.json │ ├── scss/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── syntaxes/ │ │ ├── sassdoc.tmLanguage.json │ │ └── scss.tmLanguage.json │ ├── search-result/ │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── extension-browser.webpack.config.js │ │ ├── extension.webpack.config.js │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── src/ │ │ │ └── extension.ts │ │ ├── syntaxes/ │ │ │ ├── generateTMLanguage.js │ │ │ └── searchResult.tmLanguage.json │ │ └── tsconfig.json │ ├── shaderlab/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── syntaxes/ │ │ └── shaderlab.tmLanguage.json │ ├── shared.webpack.config.js │ ├── shellscript/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── syntaxes/ │ │ └── shell-unix-bash.tmLanguage.json │ ├── simple-browser/ │ │ ├── .gitignore │ │ ├── .npmrc │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── esbuild-preview.js │ │ ├── extension-browser.webpack.config.js │ │ ├── extension.webpack.config.js │ │ ├── media/ │ │ │ └── main.css │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── preview-src/ │ │ │ ├── events.ts │ │ │ ├── index.ts │ │ │ └── tsconfig.json │ │ ├── src/ │ │ │ ├── dispose.ts │ │ │ ├── extension.ts │ │ │ ├── simpleBrowserManager.ts │ │ │ └── simpleBrowserView.ts │ │ └── tsconfig.json │ ├── sql/ │ │ ├── .vscodeignore │ │ ├── build/ │ │ │ └── update-grammar.mjs │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── syntaxes/ │ │ └── sql.tmLanguage.json │ ├── swift/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── snippets/ │ │ │ └── swift.code-snippets │ │ └── syntaxes/ │ │ └── swift.tmLanguage.json │ ├── terminal-suggest/ │ │ ├── .gitignore │ │ ├── .vscode/ │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── ThirdPartyNotices.txt │ │ ├── cgmanifest.json │ │ ├── extension.webpack.config.js │ │ ├── fixtures/ │ │ │ └── shell-parser/ │ │ │ ├── basic/ │ │ │ │ ├── input.sh │ │ │ │ └── output.txt │ │ │ ├── multipleStatements/ │ │ │ │ ├── input.sh │ │ │ │ └── output.txt │ │ │ ├── primaryExpressions/ │ │ │ │ ├── input.sh │ │ │ │ └── output.txt │ │ │ └── variables/ │ │ │ ├── input.sh │ │ │ └── output.txt │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── scripts/ │ │ │ ├── clone-fig.ps1 │ │ │ ├── clone-fig.sh │ │ │ ├── pullFishBuiltins.ts │ │ │ ├── pullZshBuiltins.ts │ │ │ ├── terminalScriptHelpers.ts │ │ │ ├── update-specs.js │ │ │ ├── update-specs.ps1 │ │ │ └── update-specs.sh │ │ ├── src/ │ │ │ ├── completions/ │ │ │ │ ├── cd.ts │ │ │ │ ├── code-insiders.ts │ │ │ │ ├── code-tunnel-insiders.ts │ │ │ │ ├── code-tunnel.ts │ │ │ │ ├── code.ts │ │ │ │ ├── index.d.ts │ │ │ │ ├── npx.ts │ │ │ │ ├── set-location.ts │ │ │ │ └── upstream/ │ │ │ │ ├── apt.ts │ │ │ │ ├── brew.ts │ │ │ │ ├── cat.ts │ │ │ │ ├── chmod.ts │ │ │ │ ├── chown.ts │ │ │ │ ├── cp.ts │ │ │ │ ├── curl.ts │ │ │ │ ├── df.ts │ │ │ │ ├── du.ts │ │ │ │ ├── echo.ts │ │ │ │ ├── find.ts │ │ │ │ ├── git.ts │ │ │ │ ├── grep.ts │ │ │ │ ├── head.ts │ │ │ │ ├── kill.ts │ │ │ │ ├── killall.ts │ │ │ │ ├── less.ts │ │ │ │ ├── ls.ts │ │ │ │ ├── mkdir.ts │ │ │ │ ├── more.ts │ │ │ │ ├── mv.ts │ │ │ │ ├── nano.ts │ │ │ │ ├── node.ts │ │ │ │ ├── npm.ts │ │ │ │ ├── nvm.ts │ │ │ │ ├── pnpm.ts │ │ │ │ ├── ps.ts │ │ │ │ ├── pwd.ts │ │ │ │ ├── python.ts │ │ │ │ ├── python3.ts │ │ │ │ ├── rm.ts │ │ │ │ ├── rmdir.ts │ │ │ │ ├── scp.ts │ │ │ │ ├── ssh.ts │ │ │ │ ├── tail.ts │ │ │ │ ├── top.ts │ │ │ │ ├── touch.ts │ │ │ │ ├── uname.ts │ │ │ │ ├── vim.ts │ │ │ │ ├── wget.ts │ │ │ │ └── yarn.ts │ │ │ ├── constants.ts │ │ │ ├── env/ │ │ │ │ └── pathExecutableCache.ts │ │ │ ├── fig/ │ │ │ │ ├── README.md │ │ │ │ ├── api-bindings/ │ │ │ │ │ └── types.ts │ │ │ │ ├── autocomplete/ │ │ │ │ │ ├── fig/ │ │ │ │ │ │ └── hooks.ts │ │ │ │ │ ├── generators/ │ │ │ │ │ │ ├── cache.ts │ │ │ │ │ │ ├── customSuggestionsGenerator.ts │ │ │ │ │ │ ├── helpers.ts │ │ │ │ │ │ └── scriptSuggestionsGenerator.ts │ │ │ │ │ └── state/ │ │ │ │ │ ├── generators.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── autocomplete-parser/ │ │ │ │ │ ├── caches.ts │ │ │ │ │ ├── errors.ts │ │ │ │ │ └── parseArguments.ts │ │ │ │ ├── execute.ts │ │ │ │ ├── fig-autocomplete-shared/ │ │ │ │ │ ├── convert.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── mixins.ts │ │ │ │ │ ├── revert.ts │ │ │ │ │ ├── specMetadata.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── figInterface.ts │ │ │ │ ├── shared/ │ │ │ │ │ ├── errors.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── internal.ts │ │ │ │ │ ├── test/ │ │ │ │ │ │ └── utils.test.ts │ │ │ │ │ └── utils.ts │ │ │ │ └── shell-parser/ │ │ │ │ ├── command.ts │ │ │ │ ├── errors.ts │ │ │ │ ├── index.ts │ │ │ │ ├── parser.ts │ │ │ │ └── test/ │ │ │ │ ├── command.test.ts │ │ │ │ └── parser.test.ts │ │ │ ├── helpers/ │ │ │ │ ├── completionItem.ts │ │ │ │ ├── executable.ts │ │ │ │ ├── file.ts │ │ │ │ ├── filepaths.ts │ │ │ │ ├── os.ts │ │ │ │ ├── promise.ts │ │ │ │ └── uri.ts │ │ │ ├── shell/ │ │ │ │ ├── bash.ts │ │ │ │ ├── common.ts │ │ │ │ ├── fish.ts │ │ │ │ ├── fishBuiltinsCache.ts │ │ │ │ ├── pwsh.ts │ │ │ │ ├── zsh.ts │ │ │ │ └── zshBuiltinsCache.ts │ │ │ ├── terminalSuggestMain.ts │ │ │ ├── test/ │ │ │ │ ├── completions/ │ │ │ │ │ ├── cd.test.ts │ │ │ │ │ ├── code-insiders.test.ts │ │ │ │ │ ├── code.test.ts │ │ │ │ │ └── upstream/ │ │ │ │ │ ├── echo.test.ts │ │ │ │ │ ├── git.test.ts │ │ │ │ │ ├── ls.test.ts │ │ │ │ │ ├── mkdir.test.ts │ │ │ │ │ ├── rm.test.ts │ │ │ │ │ ├── rmdir.test.ts │ │ │ │ │ └── touch.test.ts │ │ │ │ ├── env/ │ │ │ │ │ └── pathExecutableCache.test.ts │ │ │ │ ├── fig.test.ts │ │ │ │ ├── helpers.ts │ │ │ │ ├── terminalSuggestMain.test.ts │ │ │ │ └── tokens.test.ts │ │ │ ├── tokens.ts │ │ │ └── types.ts │ │ ├── testWorkspace/ │ │ │ └── parent/ │ │ │ └── home/ │ │ │ └── child/ │ │ │ └── .keep │ │ └── tsconfig.json │ ├── theme-abyss/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── themes/ │ │ └── abyss-color-theme.json │ ├── theme-defaults/ │ │ ├── fileicons/ │ │ │ └── vs_minimal-icon-theme.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── themes/ │ │ ├── dark_modern.json │ │ ├── dark_plus.json │ │ ├── dark_vs.json │ │ ├── hc_black.json │ │ ├── hc_light.json │ │ ├── light_modern.json │ │ ├── light_plus.json │ │ └── light_vs.json │ ├── theme-kimbie-dark/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── themes/ │ │ └── kimbie-dark-color-theme.json │ ├── theme-monokai/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── themes/ │ │ └── monokai-color-theme.json │ ├── theme-monokai-dimmed/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── themes/ │ │ └── dimmed-monokai-color-theme.json │ ├── theme-quietlight/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── themes/ │ │ └── quietlight-color-theme.json │ ├── theme-red/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── themes/ │ │ └── Red-color-theme.json │ ├── theme-seti/ │ │ ├── .vscodeignore │ │ ├── CONTRIBUTING.md │ │ ├── README.md │ │ ├── ThirdPartyNotices.txt │ │ ├── build/ │ │ │ └── update-icon-theme.js │ │ ├── cgmanifest.json │ │ ├── icons/ │ │ │ ├── preview.html │ │ │ └── vs-seti-icon-theme.json │ │ ├── package.json │ │ └── package.nls.json │ ├── theme-solarized-dark/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── themes/ │ │ └── solarized-dark-color-theme.json │ ├── theme-solarized-light/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── themes/ │ │ └── solarized-light-color-theme.json │ ├── theme-tomorrow-night-blue/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── themes/ │ │ └── tomorrow-night-blue-color-theme.json │ ├── tsconfig.base.json │ ├── tunnel-forwarding/ │ │ ├── .npmrc │ │ ├── .vscode/ │ │ │ └── launch.json │ │ ├── .vscodeignore │ │ ├── extension.webpack.config.js │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── src/ │ │ │ ├── deferredPromise.ts │ │ │ ├── extension.ts │ │ │ └── split.ts │ │ └── tsconfig.json │ ├── types/ │ │ ├── lib.textEncoder.d.ts │ │ └── lib.url.d.ts │ ├── typescript-basics/ │ │ ├── .vscodeignore │ │ ├── build/ │ │ │ └── update-grammars.mjs │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── snippets/ │ │ │ └── typescript.code-snippets │ │ └── syntaxes/ │ │ ├── Readme.md │ │ ├── TypeScript.tmLanguage.json │ │ ├── TypeScriptReact.tmLanguage.json │ │ ├── jsdoc.js.injection.tmLanguage.json │ │ └── jsdoc.ts.injection.tmLanguage.json │ ├── typescript-language-features/ │ │ ├── .npmrc │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── cgmanifest.json │ │ ├── extension-browser.webpack.config.js │ │ ├── extension.webpack.config.js │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── schemas/ │ │ │ ├── jsconfig.schema.json │ │ │ ├── package.schema.json │ │ │ └── tsconfig.schema.json │ │ ├── src/ │ │ │ ├── api.ts │ │ │ ├── commands/ │ │ │ │ ├── commandManager.ts │ │ │ │ ├── configurePlugin.ts │ │ │ │ ├── goToProjectConfiguration.ts │ │ │ │ ├── index.ts │ │ │ │ ├── learnMoreAboutRefactorings.ts │ │ │ │ ├── openJsDocLink.ts │ │ │ │ ├── openTsServerLog.ts │ │ │ │ ├── reloadProject.ts │ │ │ │ ├── restartTsServer.ts │ │ │ │ ├── selectTypeScriptVersion.ts │ │ │ │ └── tsserverRequests.ts │ │ │ ├── configuration/ │ │ │ │ ├── configuration.browser.ts │ │ │ │ ├── configuration.electron.ts │ │ │ │ ├── configuration.ts │ │ │ │ ├── documentSelector.ts │ │ │ │ ├── fileSchemes.ts │ │ │ │ ├── languageDescription.ts │ │ │ │ ├── languageIds.ts │ │ │ │ └── schemes.ts │ │ │ ├── experimentTelemetryReporter.ts │ │ │ ├── experimentationService.ts │ │ │ ├── extension.browser.ts │ │ │ ├── extension.ts │ │ │ ├── filesystems/ │ │ │ │ ├── ata.ts │ │ │ │ ├── autoInstallerFs.ts │ │ │ │ └── memFs.ts │ │ │ ├── languageFeatures/ │ │ │ │ ├── callHierarchy.ts │ │ │ │ ├── codeLens/ │ │ │ │ │ ├── baseCodeLensProvider.ts │ │ │ │ │ ├── implementationsCodeLens.ts │ │ │ │ │ └── referencesCodeLens.ts │ │ │ │ ├── completions.ts │ │ │ │ ├── copyPaste.ts │ │ │ │ ├── definitionProviderBase.ts │ │ │ │ ├── definitions.ts │ │ │ │ ├── diagnostics.ts │ │ │ │ ├── directiveCommentCompletions.ts │ │ │ │ ├── documentHighlight.ts │ │ │ │ ├── documentSymbol.ts │ │ │ │ ├── fileConfigurationManager.ts │ │ │ │ ├── fileReferences.ts │ │ │ │ ├── fixAll.ts │ │ │ │ ├── folding.ts │ │ │ │ ├── formatting.ts │ │ │ │ ├── hover.ts │ │ │ │ ├── implementations.ts │ │ │ │ ├── inlayHints.ts │ │ │ │ ├── jsDocCompletions.ts │ │ │ │ ├── linkedEditing.ts │ │ │ │ ├── organizeImports.ts │ │ │ │ ├── quickFix.ts │ │ │ │ ├── refactor.ts │ │ │ │ ├── references.ts │ │ │ │ ├── rename.ts │ │ │ │ ├── semanticTokens.ts │ │ │ │ ├── signatureHelp.ts │ │ │ │ ├── smartSelect.ts │ │ │ │ ├── sourceDefinition.ts │ │ │ │ ├── tagClosing.ts │ │ │ │ ├── tsconfig.ts │ │ │ │ ├── typeDefinitions.ts │ │ │ │ ├── updatePathsOnRename.ts │ │ │ │ ├── util/ │ │ │ │ │ ├── codeAction.ts │ │ │ │ │ ├── copilot.ts │ │ │ │ │ ├── dependentRegistration.ts │ │ │ │ │ ├── snippetForFunctionCall.ts │ │ │ │ │ └── textRendering.ts │ │ │ │ └── workspaceSymbols.ts │ │ │ ├── languageProvider.ts │ │ │ ├── lazyClientHost.ts │ │ │ ├── logging/ │ │ │ │ ├── logLevelMonitor.ts │ │ │ │ ├── logger.ts │ │ │ │ ├── telemetry.ts │ │ │ │ └── tracer.ts │ │ │ ├── remoteRepositories.browser.ts │ │ │ ├── task/ │ │ │ │ ├── taskProvider.ts │ │ │ │ └── tsconfigProvider.ts │ │ │ ├── test/ │ │ │ │ ├── index.ts │ │ │ │ ├── smoke/ │ │ │ │ │ ├── completions.test.ts │ │ │ │ │ ├── fixAll.test.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── jsDocCompletions.test.ts │ │ │ │ │ ├── quickFix.test.ts │ │ │ │ │ └── referencesCodeLens.test.ts │ │ │ │ ├── suggestTestHelpers.ts │ │ │ │ ├── testUtils.ts │ │ │ │ └── unit/ │ │ │ │ ├── cachedResponse.test.ts │ │ │ │ ├── functionCallSnippet.test.ts │ │ │ │ ├── index.ts │ │ │ │ ├── jsdocSnippet.test.ts │ │ │ │ ├── onEnter.test.ts │ │ │ │ ├── requestQueue.test.ts │ │ │ │ ├── server.test.ts │ │ │ │ └── textRendering.test.ts │ │ │ ├── test-all.ts │ │ │ ├── tsServer/ │ │ │ │ ├── api.ts │ │ │ │ ├── bufferSyncSupport.ts │ │ │ │ ├── cachedResponse.ts │ │ │ │ ├── callbackMap.ts │ │ │ │ ├── cancellation.electron.ts │ │ │ │ ├── cancellation.ts │ │ │ │ ├── fileWatchingManager.ts │ │ │ │ ├── logDirectoryProvider.electron.ts │ │ │ │ ├── logDirectoryProvider.ts │ │ │ │ ├── nodeManager.ts │ │ │ │ ├── pluginPathsProvider.ts │ │ │ │ ├── plugins.ts │ │ │ │ ├── protocol/ │ │ │ │ │ ├── errorCodes.ts │ │ │ │ │ ├── fixNames.ts │ │ │ │ │ ├── modifiers.ts │ │ │ │ │ ├── protocol.const.ts │ │ │ │ │ └── protocol.d.ts │ │ │ │ ├── requestQueue.ts │ │ │ │ ├── server.ts │ │ │ │ ├── serverError.ts │ │ │ │ ├── serverProcess.browser.ts │ │ │ │ ├── serverProcess.electron.ts │ │ │ │ ├── spawner.ts │ │ │ │ ├── versionManager.ts │ │ │ │ ├── versionProvider.electron.ts │ │ │ │ └── versionProvider.ts │ │ │ ├── tsconfig.ts │ │ │ ├── typeConverters.ts │ │ │ ├── typeScriptServiceClientHost.ts │ │ │ ├── typescriptService.ts │ │ │ ├── typescriptServiceClient.ts │ │ │ ├── ui/ │ │ │ │ ├── activeJsTsEditorTracker.ts │ │ │ │ ├── intellisenseStatus.ts │ │ │ │ ├── largeProjectStatus.ts │ │ │ │ ├── managedFileContext.ts │ │ │ │ ├── typingsStatus.ts │ │ │ │ └── versionStatus.ts │ │ │ └── utils/ │ │ │ ├── arrays.ts │ │ │ ├── async.ts │ │ │ ├── cancellation.ts │ │ │ ├── dispose.ts │ │ │ ├── fs.electron.ts │ │ │ ├── fs.ts │ │ │ ├── hash.ts │ │ │ ├── lazy.ts │ │ │ ├── memoize.ts │ │ │ ├── objects.ts │ │ │ ├── packageInfo.ts │ │ │ ├── platform.ts │ │ │ ├── regexp.ts │ │ │ ├── relativePathResolver.ts │ │ │ ├── resourceMap.ts │ │ │ └── temp.electron.ts │ │ ├── test-workspace/ │ │ │ ├── bar.ts │ │ │ ├── foo.ts │ │ │ ├── foojs.js │ │ │ ├── index.ts │ │ │ └── tsconfig.json │ │ ├── tsconfig.json │ │ └── web/ │ │ ├── README.md │ │ ├── src/ │ │ │ ├── fileWatcherManager.ts │ │ │ ├── logging.ts │ │ │ ├── pathMapper.ts │ │ │ ├── serverHost.ts │ │ │ ├── typingsInstaller/ │ │ │ │ ├── jsTyping.ts │ │ │ │ └── typingsInstaller.ts │ │ │ ├── util/ │ │ │ │ ├── args.ts │ │ │ │ └── hrtime.ts │ │ │ ├── wasmCancellationToken.ts │ │ │ ├── webServer.ts │ │ │ └── workerSession.ts │ │ └── tsconfig.json │ ├── vb/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── snippets/ │ │ │ └── vb.code-snippets │ │ └── syntaxes/ │ │ └── asp-vb-net.tmLanguage.json │ ├── vscode-api-tests/ │ │ ├── .gitignore │ │ ├── .npmrc │ │ ├── .vscode/ │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ ├── .vscodeignore │ │ ├── package.json │ │ ├── src/ │ │ │ ├── extension.ts │ │ │ ├── memfs.ts │ │ │ ├── singlefolder-tests/ │ │ │ │ ├── chat.test.ts │ │ │ │ ├── commands.test.ts │ │ │ │ ├── configuration.test.ts │ │ │ │ ├── debug.test.ts │ │ │ │ ├── documentPaste.test.ts │ │ │ │ ├── editor.test.ts │ │ │ │ ├── env.test.ts │ │ │ │ ├── extensions.test.ts │ │ │ │ ├── index.ts │ │ │ │ ├── interactiveWindow.test.ts │ │ │ │ ├── ipynb.test.ts │ │ │ │ ├── languagedetection.test.ts │ │ │ │ ├── languages.test.ts │ │ │ │ ├── lm.test.ts │ │ │ │ ├── notebook.api.test.ts │ │ │ │ ├── notebook.document.test.ts │ │ │ │ ├── notebook.editor.test.ts │ │ │ │ ├── notebook.kernel.test.ts │ │ │ │ ├── proxy.test.ts │ │ │ │ ├── quickInput.test.ts │ │ │ │ ├── readonlyFileSystem.test.ts │ │ │ │ ├── rpc.test.ts │ │ │ │ ├── state.test.ts │ │ │ │ ├── terminal.shellIntegration.test.ts │ │ │ │ ├── terminal.test.ts │ │ │ │ ├── types.test.ts │ │ │ │ ├── window.test.ts │ │ │ │ ├── workspace.event.test.ts │ │ │ │ ├── workspace.fs.test.ts │ │ │ │ ├── workspace.tasks.test.ts │ │ │ │ ├── workspace.test.ts │ │ │ │ └── workspace.watcher.test.ts │ │ │ ├── utils.ts │ │ │ └── workspace-tests/ │ │ │ ├── index.ts │ │ │ └── workspace.test.ts │ │ ├── testWorkspace/ │ │ │ ├── .vscode/ │ │ │ │ ├── launch.json │ │ │ │ └── settings.json │ │ │ ├── 10linefile.ts │ │ │ ├── 30linefile.ts │ │ │ ├── bower.json │ │ │ ├── debug.js │ │ │ ├── far.js │ │ │ ├── files-exclude/ │ │ │ │ └── file.txt │ │ │ ├── lorem.txt │ │ │ ├── myFile.ts │ │ │ ├── search-exclude/ │ │ │ │ └── file.txt │ │ │ ├── simple.txt │ │ │ └── test.ipynb │ │ ├── testWorkspace2/ │ │ │ ├── .vscode/ │ │ │ │ └── settings.json │ │ │ └── simple.txt │ │ ├── testworkspace.code-workspace │ │ └── tsconfig.json │ ├── vscode-colorize-perf-tests/ │ │ ├── .gitignore │ │ ├── .npmrc │ │ ├── .vscode/ │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ ├── package.json │ │ ├── src/ │ │ │ ├── colorizer.test.ts │ │ │ ├── colorizerTestMain.ts │ │ │ └── index.ts │ │ ├── test/ │ │ │ └── colorize-fixtures/ │ │ │ ├── test-checker.ts │ │ │ ├── test-treeView.ts │ │ │ └── test.ts │ │ └── tsconfig.json │ ├── vscode-colorize-tests/ │ │ ├── .gitignore │ │ ├── .npmrc │ │ ├── .vscode/ │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ ├── package.json │ │ ├── producticons/ │ │ │ ├── index.html │ │ │ ├── mit_license.txt │ │ │ └── test-product-icon-theme.json │ │ ├── src/ │ │ │ ├── colorizer.test.ts │ │ │ ├── colorizerTestMain.ts │ │ │ └── index.ts │ │ ├── test/ │ │ │ ├── colorize-fixtures/ │ │ │ │ ├── 12750.html │ │ │ │ ├── 13448.html │ │ │ │ ├── 14119.less │ │ │ │ ├── 25920.html │ │ │ │ ├── COMMIT_EDITMSG │ │ │ │ ├── Dockerfile │ │ │ │ ├── basic.java │ │ │ │ ├── git-rebase-todo │ │ │ │ ├── issue-1550.yaml │ │ │ │ ├── issue-224862.yaml │ │ │ │ ├── issue-28354.php │ │ │ │ ├── issue-4008.yaml │ │ │ │ ├── issue-6303.yaml │ │ │ │ ├── issue-76997.php │ │ │ │ ├── makefile │ │ │ │ ├── md-math.md │ │ │ │ ├── test-13777.go │ │ │ │ ├── test-166781.rs │ │ │ │ ├── test-173216.sh │ │ │ │ ├── test-173224.sh │ │ │ │ ├── test-173336.sh │ │ │ │ ├── test-23630.cpp │ │ │ │ ├── test-23850.cpp │ │ │ │ ├── test-241001.ts │ │ │ │ ├── test-33886.md │ │ │ │ ├── test-4287.pug │ │ │ │ ├── test-6611.rs │ │ │ │ ├── test-7115.xml │ │ │ │ ├── test-78769.cpp │ │ │ │ ├── test-80644.cpp │ │ │ │ ├── test-brackets.tsx │ │ │ │ ├── test-cssvariables.less │ │ │ │ ├── test-cssvariables.scss │ │ │ │ ├── test-embedding.html │ │ │ │ ├── test-freeze-56377.py │ │ │ │ ├── test-freeze-56476.ps1 │ │ │ │ ├── test-function-inv.ts │ │ │ │ ├── test-issue11.ts │ │ │ │ ├── test-issue241715.ts │ │ │ │ ├── test-issue5431.ts │ │ │ │ ├── test-issue5465.ts │ │ │ │ ├── test-issue5566.ts │ │ │ │ ├── test-jsdoc-multiline-type.ts │ │ │ │ ├── test-keywords.ts │ │ │ │ ├── test-members.ts │ │ │ │ ├── test-object-literals.ts │ │ │ │ ├── test-regex.coffee │ │ │ │ ├── test-strings.ts │ │ │ │ ├── test-this.ts │ │ │ │ ├── test-variables.css │ │ │ │ ├── test.bat │ │ │ │ ├── test.bib │ │ │ │ ├── test.c │ │ │ │ ├── test.cc │ │ │ │ ├── test.clj │ │ │ │ ├── test.code-snippets │ │ │ │ ├── test.coffee │ │ │ │ ├── test.cpp │ │ │ │ ├── test.cs │ │ │ │ ├── test.cshtml │ │ │ │ ├── test.css │ │ │ │ ├── test.cu │ │ │ │ ├── test.dart │ │ │ │ ├── test.diff │ │ │ │ ├── test.fs │ │ │ │ ├── test.go │ │ │ │ ├── test.groovy │ │ │ │ ├── test.handlebars │ │ │ │ ├── test.hbs │ │ │ │ ├── test.hlsl │ │ │ │ ├── test.html │ │ │ │ ├── test.ini │ │ │ │ ├── test.jl │ │ │ │ ├── test.js │ │ │ │ ├── test.json │ │ │ │ ├── test.jsx │ │ │ │ ├── test.less │ │ │ │ ├── test.log │ │ │ │ ├── test.lua │ │ │ │ ├── test.m │ │ │ │ ├── test.md │ │ │ │ ├── test.mm │ │ │ │ ├── test.p6 │ │ │ │ ├── test.php │ │ │ │ ├── test.pl │ │ │ │ ├── test.ps1 │ │ │ │ ├── test.pug │ │ │ │ ├── test.py │ │ │ │ ├── test.r │ │ │ │ ├── test.rb │ │ │ │ ├── test.regexp.ts │ │ │ │ ├── test.rs │ │ │ │ ├── test.rst │ │ │ │ ├── test.scss │ │ │ │ ├── test.sh │ │ │ │ ├── test.shader │ │ │ │ ├── test.sql │ │ │ │ ├── test.sty │ │ │ │ ├── test.swift │ │ │ │ ├── test.tex │ │ │ │ ├── test.ts │ │ │ │ ├── test.vb │ │ │ │ ├── test.xml │ │ │ │ ├── test.yaml │ │ │ │ ├── test2.pl │ │ │ │ ├── test6916.js │ │ │ │ └── tsconfig_off.json │ │ │ ├── colorize-results/ │ │ │ │ ├── 12750_html.json │ │ │ │ ├── 13448_html.json │ │ │ │ ├── 14119_less.json │ │ │ │ ├── 25920_html.json │ │ │ │ ├── COMMIT_EDITMSG.json │ │ │ │ ├── Dockerfile.json │ │ │ │ ├── basic_java.json │ │ │ │ ├── git-rebase-todo.json │ │ │ │ ├── issue-1550_yaml.json │ │ │ │ ├── issue-224862_yaml.json │ │ │ │ ├── issue-28354_php.json │ │ │ │ ├── issue-4008_yaml.json │ │ │ │ ├── issue-6303_yaml.json │ │ │ │ ├── issue-76997_php.json │ │ │ │ ├── makefile.json │ │ │ │ ├── md-math_md.json │ │ │ │ ├── test-13777_go.json │ │ │ │ ├── test-166781_rs.json │ │ │ │ ├── test-173216_sh.json │ │ │ │ ├── test-173224_sh.json │ │ │ │ ├── test-173336_sh.json │ │ │ │ ├── test-23630_cpp.json │ │ │ │ ├── test-23850_cpp.json │ │ │ │ ├── test-241001_ts.json │ │ │ │ ├── test-33886_md.json │ │ │ │ ├── test-4287_pug.json │ │ │ │ ├── test-6611_rs.json │ │ │ │ ├── test-7115_xml.json │ │ │ │ ├── test-78769_cpp.json │ │ │ │ ├── test-80644_cpp.json │ │ │ │ ├── test-brackets_tsx.json │ │ │ │ ├── test-cssvariables_less.json │ │ │ │ ├── test-cssvariables_scss.json │ │ │ │ ├── test-embedding_html.json │ │ │ │ ├── test-freeze-56377_py.json │ │ │ │ ├── test-freeze-56476_ps1.json │ │ │ │ ├── test-function-inv_ts.json │ │ │ │ ├── test-issue11_ts.json │ │ │ │ ├── test-issue241715_ts.json │ │ │ │ ├── test-issue5431_ts.json │ │ │ │ ├── test-issue5465_ts.json │ │ │ │ ├── test-issue5566_ts.json │ │ │ │ ├── test-jsdoc-multiline-type_ts.json │ │ │ │ ├── test-keywords_ts.json │ │ │ │ ├── test-members_ts.json │ │ │ │ ├── test-object-literals_ts.json │ │ │ │ ├── test-regex_coffee.json │ │ │ │ ├── test-strings_ts.json │ │ │ │ ├── test-this_ts.json │ │ │ │ ├── test-variables_css.json │ │ │ │ ├── test2_pl.json │ │ │ │ ├── test6916_js.json │ │ │ │ ├── test_bat.json │ │ │ │ ├── test_bib.json │ │ │ │ ├── test_c.json │ │ │ │ ├── test_cc.json │ │ │ │ ├── test_clj.json │ │ │ │ ├── test_code-snippets.json │ │ │ │ ├── test_coffee.json │ │ │ │ ├── test_cpp.json │ │ │ │ ├── test_cs.json │ │ │ │ ├── test_cshtml.json │ │ │ │ ├── test_css.json │ │ │ │ ├── test_cu.json │ │ │ │ ├── test_dart.json │ │ │ │ ├── test_diff.json │ │ │ │ ├── test_fs.json │ │ │ │ ├── test_go.json │ │ │ │ ├── test_groovy.json │ │ │ │ ├── test_handlebars.json │ │ │ │ ├── test_hbs.json │ │ │ │ ├── test_hlsl.json │ │ │ │ ├── test_html.json │ │ │ │ ├── test_ini.json │ │ │ │ ├── test_jl.json │ │ │ │ ├── test_js.json │ │ │ │ ├── test_json.json │ │ │ │ ├── test_jsx.json │ │ │ │ ├── test_less.json │ │ │ │ ├── test_log.json │ │ │ │ ├── test_lua.json │ │ │ │ ├── test_m.json │ │ │ │ ├── test_md.json │ │ │ │ ├── test_mm.json │ │ │ │ ├── test_p6.json │ │ │ │ ├── test_php.json │ │ │ │ ├── test_pl.json │ │ │ │ ├── test_ps1.json │ │ │ │ ├── test_pug.json │ │ │ │ ├── test_py.json │ │ │ │ ├── test_r.json │ │ │ │ ├── test_rb.json │ │ │ │ ├── test_regexp.ts.json │ │ │ │ ├── test_rs.json │ │ │ │ ├── test_rst.json │ │ │ │ ├── test_scss.json │ │ │ │ ├── test_sh.json │ │ │ │ ├── test_shader.json │ │ │ │ ├── test_sql.json │ │ │ │ ├── test_sty.json │ │ │ │ ├── test_swift.json │ │ │ │ ├── test_tex.json │ │ │ │ ├── test_ts.json │ │ │ │ ├── test_vb.json │ │ │ │ ├── test_xml.json │ │ │ │ ├── test_yaml.json │ │ │ │ └── tsconfig_off_json.json │ │ │ ├── colorize-tree-sitter-results/ │ │ │ │ ├── 12750_html.json │ │ │ │ ├── 13448_html.json │ │ │ │ ├── 14119_less.json │ │ │ │ ├── 25920_html.json │ │ │ │ ├── COMMIT_EDITMSG.json │ │ │ │ ├── Dockerfile.json │ │ │ │ ├── basic_java.json │ │ │ │ ├── git-rebase-todo.json │ │ │ │ ├── issue-1550_yaml.json │ │ │ │ ├── issue-224862_yaml.json │ │ │ │ ├── issue-28354_php.json │ │ │ │ ├── issue-4008_yaml.json │ │ │ │ ├── issue-6303_yaml.json │ │ │ │ ├── issue-76997_php.json │ │ │ │ ├── makefile.json │ │ │ │ ├── md-math_md.json │ │ │ │ ├── test-13777_go.json │ │ │ │ ├── test-166781_rs.json │ │ │ │ ├── test-173216_sh.json │ │ │ │ ├── test-173224_sh.json │ │ │ │ ├── test-173336_sh.json │ │ │ │ ├── test-23630_cpp.json │ │ │ │ ├── test-23850_cpp.json │ │ │ │ ├── test-241001_ts.json │ │ │ │ ├── test-33886_md.json │ │ │ │ ├── test-4287_pug.json │ │ │ │ ├── test-6611_rs.json │ │ │ │ ├── test-7115_xml.json │ │ │ │ ├── test-78769_cpp.json │ │ │ │ ├── test-80644_cpp.json │ │ │ │ ├── test-brackets_tsx.json │ │ │ │ ├── test-cssvariables_less.json │ │ │ │ ├── test-cssvariables_scss.json │ │ │ │ ├── test-embedding_html.json │ │ │ │ ├── test-freeze-56377_py.json │ │ │ │ ├── test-freeze-56476_ps1.json │ │ │ │ ├── test-function-inv_ts.json │ │ │ │ ├── test-issue11_ts.json │ │ │ │ ├── test-issue241715_ts.json │ │ │ │ ├── test-issue5431_ts.json │ │ │ │ ├── test-issue5465_ts.json │ │ │ │ ├── test-issue5566_ts.json │ │ │ │ ├── test-jsdoc-multiline-type_ts.json │ │ │ │ ├── test-keywords_ts.json │ │ │ │ ├── test-members_ts.json │ │ │ │ ├── test-object-literals_ts.json │ │ │ │ ├── test-regex_coffee.json │ │ │ │ ├── test-strings_ts.json │ │ │ │ ├── test-this_ts.json │ │ │ │ ├── test-variables_css.json │ │ │ │ ├── test2_pl.json │ │ │ │ ├── test6916_js.json │ │ │ │ ├── test_bat.json │ │ │ │ ├── test_bib.json │ │ │ │ ├── test_c.json │ │ │ │ ├── test_cc.json │ │ │ │ ├── test_clj.json │ │ │ │ ├── test_code-snippets.json │ │ │ │ ├── test_coffee.json │ │ │ │ ├── test_cpp.json │ │ │ │ ├── test_cs.json │ │ │ │ ├── test_cshtml.json │ │ │ │ ├── test_css.json │ │ │ │ ├── test_cu.json │ │ │ │ ├── test_dart.json │ │ │ │ ├── test_diff.json │ │ │ │ ├── test_fs.json │ │ │ │ ├── test_go.json │ │ │ │ ├── test_groovy.json │ │ │ │ ├── test_handlebars.json │ │ │ │ ├── test_hbs.json │ │ │ │ ├── test_hlsl.json │ │ │ │ ├── test_html.json │ │ │ │ ├── test_ini.json │ │ │ │ ├── test_jl.json │ │ │ │ ├── test_js.json │ │ │ │ ├── test_json.json │ │ │ │ ├── test_jsx.json │ │ │ │ ├── test_less.json │ │ │ │ ├── test_log.json │ │ │ │ ├── test_lua.json │ │ │ │ ├── test_m.json │ │ │ │ ├── test_md.json │ │ │ │ ├── test_mm.json │ │ │ │ ├── test_p6.json │ │ │ │ ├── test_php.json │ │ │ │ ├── test_pl.json │ │ │ │ ├── test_ps1.json │ │ │ │ ├── test_pug.json │ │ │ │ ├── test_py.json │ │ │ │ ├── test_r.json │ │ │ │ ├── test_rb.json │ │ │ │ ├── test_regexp.ts.json │ │ │ │ ├── test_rs.json │ │ │ │ ├── test_rst.json │ │ │ │ ├── test_scss.json │ │ │ │ ├── test_sh.json │ │ │ │ ├── test_shader.json │ │ │ │ ├── test_sql.json │ │ │ │ ├── test_sty.json │ │ │ │ ├── test_swift.json │ │ │ │ ├── test_tex.json │ │ │ │ ├── test_ts.json │ │ │ │ ├── test_vb.json │ │ │ │ ├── test_xml.json │ │ │ │ ├── test_yaml.json │ │ │ │ └── tsconfig_off_json.json │ │ │ └── semantic-test/ │ │ │ ├── .vscode/ │ │ │ │ └── settings.json │ │ │ └── semantic-test.json │ │ └── tsconfig.json │ ├── vscode-test-resolver/ │ │ ├── .gitignore │ │ ├── .npmrc │ │ ├── .vscode/ │ │ │ └── launch.json │ │ ├── .vscodeignore │ │ ├── extension-browser.webpack.config.js │ │ ├── package.json │ │ ├── scripts/ │ │ │ └── terminateProcess.sh │ │ ├── src/ │ │ │ ├── download.ts │ │ │ ├── extension.browser.ts │ │ │ ├── extension.ts │ │ │ └── util/ │ │ │ └── processes.ts │ │ └── tsconfig.json │ ├── xml/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── syntaxes/ │ │ │ ├── xml.tmLanguage.json │ │ │ └── xsl.tmLanguage.json │ │ ├── xml.language-configuration.json │ │ └── xsl.language-configuration.json │ └── yaml/ │ ├── .vscodeignore │ ├── build/ │ │ └── update-grammar.js │ ├── cgmanifest.json │ ├── language-configuration.json │ ├── package.json │ ├── package.nls.json │ └── syntaxes/ │ ├── yaml-1.0.tmLanguage.json │ ├── yaml-1.1.tmLanguage.json │ ├── yaml-1.2.tmLanguage.json │ ├── yaml-1.3.tmLanguage.json │ ├── yaml-embedded.tmLanguage.json │ └── yaml.tmLanguage.json ├── gulpfile.js ├── package.json ├── product.json ├── remote/ │ ├── .npmrc │ ├── package.json │ └── web/ │ ├── .npmrc │ └── package.json ├── resources/ │ ├── completions/ │ │ ├── bash/ │ │ │ └── code │ │ └── zsh/ │ │ └── _code │ ├── darwin/ │ │ ├── bat.icns │ │ ├── bin/ │ │ │ └── code.sh │ │ ├── bower.icns │ │ ├── c.icns │ │ ├── code.icns │ │ ├── config.icns │ │ ├── cpp.icns │ │ ├── csharp.icns │ │ ├── css.icns │ │ ├── default.icns │ │ ├── go.icns │ │ ├── html.icns │ │ ├── jade.icns │ │ ├── java.icns │ │ ├── javascript.icns │ │ ├── json.icns │ │ ├── less.icns │ │ ├── markdown.icns │ │ ├── php.icns │ │ ├── powershell.icns │ │ ├── python.icns │ │ ├── react.icns │ │ ├── ruby.icns │ │ ├── sass.icns │ │ ├── shell.icns │ │ ├── sql.icns │ │ ├── typescript.icns │ │ ├── vue.icns │ │ ├── xml.icns │ │ └── yaml.icns │ ├── linux/ │ │ ├── bin/ │ │ │ └── code.sh │ │ ├── code-url-handler.desktop │ │ ├── code-workspace.xml │ │ ├── code.appdata.xml │ │ ├── code.desktop │ │ ├── debian/ │ │ │ ├── control.template │ │ │ ├── postinst.template │ │ │ ├── postrm.template │ │ │ ├── prerm.template │ │ │ └── templates.template │ │ ├── rpm/ │ │ │ ├── code.spec.template │ │ │ └── code.xpm │ │ └── snap/ │ │ ├── electron-launch │ │ └── snapcraft.yaml │ ├── server/ │ │ ├── bin/ │ │ │ ├── code-server-darwin.sh │ │ │ ├── code-server-linux.sh │ │ │ ├── code-server.cmd │ │ │ ├── helpers/ │ │ │ │ ├── browser-darwin.sh │ │ │ │ ├── browser-linux.sh │ │ │ │ ├── browser.cmd │ │ │ │ └── check-requirements-linux.sh │ │ │ └── remote-cli/ │ │ │ ├── code-darwin.sh │ │ │ ├── code-linux.sh │ │ │ └── code.cmd │ │ ├── bin-dev/ │ │ │ ├── helpers/ │ │ │ │ ├── browser.cmd │ │ │ │ └── browser.sh │ │ │ └── remote-cli/ │ │ │ ├── code.cmd │ │ │ └── code.sh │ │ └── manifest.json │ └── win32/ │ ├── VisualElementsManifest.xml │ └── bin/ │ ├── code.cmd │ └── code.sh ├── scripts/ │ ├── appimage/ │ │ ├── create-appimage-old.sh │ │ ├── create_appimage.sh │ │ ├── readme.md │ │ ├── void-url-handler.desktop │ │ └── void.desktop │ ├── code-cli.bat │ ├── code-cli.sh │ ├── code-perf.js │ ├── code-server.bat │ ├── code-server.js │ ├── code-server.sh │ ├── code-web.bat │ ├── code-web.js │ ├── code-web.sh │ ├── code.bat │ ├── code.sh │ ├── generate-definitelytyped.sh │ ├── node-electron.bat │ ├── node-electron.sh │ ├── package.json │ ├── playground-server.ts │ ├── test-documentation.bat │ ├── test-documentation.sh │ ├── test-integration.bat │ ├── test-integration.sh │ ├── test-remote-integration.bat │ ├── test-remote-integration.sh │ ├── test-web-integration.bat │ ├── test-web-integration.sh │ ├── test.bat │ ├── test.sh │ ├── xterm-symlink.ps1 │ ├── xterm-update.js │ └── xterm-update.ps1 ├── src/ │ ├── bootstrap-cli.ts │ ├── bootstrap-esm.ts │ ├── bootstrap-fork.ts │ ├── bootstrap-import.ts │ ├── bootstrap-meta.ts │ ├── bootstrap-node.ts │ ├── bootstrap-server.ts │ ├── bootstrap-window.ts │ ├── cli.ts │ ├── main.ts │ ├── server-cli.ts │ ├── server-main.ts │ ├── tsconfig.base.json │ ├── tsconfig.json │ ├── tsconfig.monaco.json │ ├── tsconfig.tsec.json │ ├── tsconfig.vscode-dts.json │ ├── tsconfig.vscode-proposed-dts.json │ ├── tsec.exemptions.json │ ├── typings/ │ │ ├── base-common.d.ts │ │ ├── crypto.d.ts │ │ ├── editContext.d.ts │ │ ├── thenable.d.ts │ │ ├── vscode-globals-nls.d.ts │ │ ├── vscode-globals-product.d.ts │ │ └── vscode-globals-ttp.d.ts │ ├── vs/ │ │ ├── amdX.ts │ │ ├── base/ │ │ │ ├── browser/ │ │ │ │ ├── broadcast.ts │ │ │ │ ├── browser.ts │ │ │ │ ├── canIUse.ts │ │ │ │ ├── contextmenu.ts │ │ │ │ ├── cssValue.ts │ │ │ │ ├── deviceAccess.ts │ │ │ │ ├── dnd.ts │ │ │ │ ├── dom.ts │ │ │ │ ├── domImpl/ │ │ │ │ │ ├── domObservable.ts │ │ │ │ │ └── n.ts │ │ │ │ ├── domStylesheets.ts │ │ │ │ ├── dompurify/ │ │ │ │ │ ├── cgmanifest.json │ │ │ │ │ ├── dompurify.d.ts │ │ │ │ │ ├── dompurify.js │ │ │ │ │ └── dompurify.license.txt │ │ │ │ ├── event.ts │ │ │ │ ├── fastDomNode.ts │ │ │ │ ├── fonts.ts │ │ │ │ ├── formattedTextRenderer.ts │ │ │ │ ├── globalPointerMoveMonitor.ts │ │ │ │ ├── history.ts │ │ │ │ ├── iframe.ts │ │ │ │ ├── indexedDB.ts │ │ │ │ ├── keyboardEvent.ts │ │ │ │ ├── markdownRenderer.ts │ │ │ │ ├── mouseEvent.ts │ │ │ │ ├── performance.ts │ │ │ │ ├── pixelRatio.ts │ │ │ │ ├── touch.ts │ │ │ │ ├── trustedTypes.ts │ │ │ │ ├── ui/ │ │ │ │ │ ├── actionbar/ │ │ │ │ │ │ ├── actionViewItems.ts │ │ │ │ │ │ ├── actionbar.css │ │ │ │ │ │ └── actionbar.ts │ │ │ │ │ ├── aria/ │ │ │ │ │ │ ├── aria.css │ │ │ │ │ │ └── aria.ts │ │ │ │ │ ├── breadcrumbs/ │ │ │ │ │ │ ├── breadcrumbsWidget.css │ │ │ │ │ │ └── breadcrumbsWidget.ts │ │ │ │ │ ├── button/ │ │ │ │ │ │ ├── button.css │ │ │ │ │ │ └── button.ts │ │ │ │ │ ├── centered/ │ │ │ │ │ │ └── centeredViewLayout.ts │ │ │ │ │ ├── codicons/ │ │ │ │ │ │ ├── codicon/ │ │ │ │ │ │ │ ├── codicon-modifiers.css │ │ │ │ │ │ │ └── codicon.css │ │ │ │ │ │ └── codiconStyles.ts │ │ │ │ │ ├── contextview/ │ │ │ │ │ │ ├── contextview.css │ │ │ │ │ │ └── contextview.ts │ │ │ │ │ ├── countBadge/ │ │ │ │ │ │ ├── countBadge.css │ │ │ │ │ │ └── countBadge.ts │ │ │ │ │ ├── dialog/ │ │ │ │ │ │ ├── dialog.css │ │ │ │ │ │ └── dialog.ts │ │ │ │ │ ├── dnd/ │ │ │ │ │ │ ├── dnd.css │ │ │ │ │ │ └── dnd.ts │ │ │ │ │ ├── dropdown/ │ │ │ │ │ │ ├── dropdown.css │ │ │ │ │ │ ├── dropdown.ts │ │ │ │ │ │ └── dropdownActionViewItem.ts │ │ │ │ │ ├── findinput/ │ │ │ │ │ │ ├── findInput.css │ │ │ │ │ │ ├── findInput.ts │ │ │ │ │ │ ├── findInputToggles.ts │ │ │ │ │ │ └── replaceInput.ts │ │ │ │ │ ├── grid/ │ │ │ │ │ │ ├── grid.ts │ │ │ │ │ │ ├── gridview.css │ │ │ │ │ │ └── gridview.ts │ │ │ │ │ ├── highlightedlabel/ │ │ │ │ │ │ └── highlightedLabel.ts │ │ │ │ │ ├── hover/ │ │ │ │ │ │ ├── hover.ts │ │ │ │ │ │ ├── hoverDelegate.ts │ │ │ │ │ │ ├── hoverDelegate2.ts │ │ │ │ │ │ ├── hoverDelegateFactory.ts │ │ │ │ │ │ ├── hoverWidget.css │ │ │ │ │ │ └── hoverWidget.ts │ │ │ │ │ ├── iconLabel/ │ │ │ │ │ │ ├── iconLabel.ts │ │ │ │ │ │ ├── iconLabels.ts │ │ │ │ │ │ ├── iconlabel.css │ │ │ │ │ │ └── simpleIconLabel.ts │ │ │ │ │ ├── icons/ │ │ │ │ │ │ ├── iconSelectBox.css │ │ │ │ │ │ └── iconSelectBox.ts │ │ │ │ │ ├── inputbox/ │ │ │ │ │ │ ├── inputBox.css │ │ │ │ │ │ └── inputBox.ts │ │ │ │ │ ├── keybindingLabel/ │ │ │ │ │ │ ├── keybindingLabel.css │ │ │ │ │ │ └── keybindingLabel.ts │ │ │ │ │ ├── list/ │ │ │ │ │ │ ├── list.css │ │ │ │ │ │ ├── list.ts │ │ │ │ │ │ ├── listPaging.ts │ │ │ │ │ │ ├── listView.ts │ │ │ │ │ │ ├── listWidget.ts │ │ │ │ │ │ ├── rangeMap.ts │ │ │ │ │ │ ├── rowCache.ts │ │ │ │ │ │ └── splice.ts │ │ │ │ │ ├── menu/ │ │ │ │ │ │ ├── menu.ts │ │ │ │ │ │ ├── menubar.css │ │ │ │ │ │ └── menubar.ts │ │ │ │ │ ├── mouseCursor/ │ │ │ │ │ │ ├── mouseCursor.css │ │ │ │ │ │ └── mouseCursor.ts │ │ │ │ │ ├── progressbar/ │ │ │ │ │ │ ├── progressAccessibilitySignal.ts │ │ │ │ │ │ ├── progressbar.css │ │ │ │ │ │ └── progressbar.ts │ │ │ │ │ ├── radio/ │ │ │ │ │ │ ├── radio.css │ │ │ │ │ │ └── radio.ts │ │ │ │ │ ├── resizable/ │ │ │ │ │ │ └── resizable.ts │ │ │ │ │ ├── sash/ │ │ │ │ │ │ ├── sash.css │ │ │ │ │ │ └── sash.ts │ │ │ │ │ ├── scrollbar/ │ │ │ │ │ │ ├── abstractScrollbar.ts │ │ │ │ │ │ ├── horizontalScrollbar.ts │ │ │ │ │ │ ├── media/ │ │ │ │ │ │ │ └── scrollbars.css │ │ │ │ │ │ ├── scrollableElement.ts │ │ │ │ │ │ ├── scrollableElementOptions.ts │ │ │ │ │ │ ├── scrollbarArrow.ts │ │ │ │ │ │ ├── scrollbarState.ts │ │ │ │ │ │ ├── scrollbarVisibilityController.ts │ │ │ │ │ │ └── verticalScrollbar.ts │ │ │ │ │ ├── selectBox/ │ │ │ │ │ │ ├── selectBox.css │ │ │ │ │ │ ├── selectBox.ts │ │ │ │ │ │ ├── selectBoxCustom.css │ │ │ │ │ │ ├── selectBoxCustom.ts │ │ │ │ │ │ └── selectBoxNative.ts │ │ │ │ │ ├── severityIcon/ │ │ │ │ │ │ ├── media/ │ │ │ │ │ │ │ └── severityIcon.css │ │ │ │ │ │ └── severityIcon.ts │ │ │ │ │ ├── splitview/ │ │ │ │ │ │ ├── paneview.css │ │ │ │ │ │ ├── paneview.ts │ │ │ │ │ │ ├── splitview.css │ │ │ │ │ │ └── splitview.ts │ │ │ │ │ ├── table/ │ │ │ │ │ │ ├── table.css │ │ │ │ │ │ ├── table.ts │ │ │ │ │ │ └── tableWidget.ts │ │ │ │ │ ├── toggle/ │ │ │ │ │ │ ├── toggle.css │ │ │ │ │ │ └── toggle.ts │ │ │ │ │ ├── toolbar/ │ │ │ │ │ │ ├── toolbar.css │ │ │ │ │ │ └── toolbar.ts │ │ │ │ │ ├── tree/ │ │ │ │ │ │ ├── abstractTree.ts │ │ │ │ │ │ ├── asyncDataTree.ts │ │ │ │ │ │ ├── compressedObjectTreeModel.ts │ │ │ │ │ │ ├── dataTree.ts │ │ │ │ │ │ ├── indexTree.ts │ │ │ │ │ │ ├── indexTreeModel.ts │ │ │ │ │ │ ├── media/ │ │ │ │ │ │ │ ├── paneviewlet.css │ │ │ │ │ │ │ └── tree.css │ │ │ │ │ │ ├── objectTree.ts │ │ │ │ │ │ ├── objectTreeModel.ts │ │ │ │ │ │ ├── tree.ts │ │ │ │ │ │ └── treeDefaults.ts │ │ │ │ │ └── widget.ts │ │ │ │ ├── webWorkerFactory.ts │ │ │ │ └── window.ts │ │ │ ├── common/ │ │ │ │ ├── actions.ts │ │ │ │ ├── arrays.ts │ │ │ │ ├── arraysFind.ts │ │ │ │ ├── assert.ts │ │ │ │ ├── async.ts │ │ │ │ ├── buffer.ts │ │ │ │ ├── cache.ts │ │ │ │ ├── cancellation.ts │ │ │ │ ├── charCode.ts │ │ │ │ ├── codecs/ │ │ │ │ │ ├── asyncDecoder.ts │ │ │ │ │ ├── baseDecoder.ts │ │ │ │ │ └── types/ │ │ │ │ │ └── ICodec.d.ts │ │ │ │ ├── codicons.ts │ │ │ │ ├── codiconsLibrary.ts │ │ │ │ ├── codiconsUtil.ts │ │ │ │ ├── collections.ts │ │ │ │ ├── color.ts │ │ │ │ ├── comparers.ts │ │ │ │ ├── console.ts │ │ │ │ ├── controlFlow.ts │ │ │ │ ├── dataTransfer.ts │ │ │ │ ├── date.ts │ │ │ │ ├── decorators/ │ │ │ │ │ └── cancelPreviousCalls.ts │ │ │ │ ├── decorators.ts │ │ │ │ ├── desktopEnvironmentInfo.ts │ │ │ │ ├── diff/ │ │ │ │ │ ├── diff.ts │ │ │ │ │ └── diffChange.ts │ │ │ │ ├── envfile.ts │ │ │ │ ├── equals.ts │ │ │ │ ├── errorMessage.ts │ │ │ │ ├── errors.ts │ │ │ │ ├── event.ts │ │ │ │ ├── extpath.ts │ │ │ │ ├── filters.ts │ │ │ │ ├── functional.ts │ │ │ │ ├── fuzzyScorer.ts │ │ │ │ ├── glob.ts │ │ │ │ ├── hash.ts │ │ │ │ ├── hierarchicalKind.ts │ │ │ │ ├── history.ts │ │ │ │ ├── hotReload.ts │ │ │ │ ├── hotReloadHelpers.ts │ │ │ │ ├── htmlContent.ts │ │ │ │ ├── iconLabels.ts │ │ │ │ ├── idGenerator.ts │ │ │ │ ├── ime.ts │ │ │ │ ├── iterator.ts │ │ │ │ ├── json.ts │ │ │ │ ├── jsonEdit.ts │ │ │ │ ├── jsonErrorMessages.ts │ │ │ │ ├── jsonFormatter.ts │ │ │ │ ├── jsonSchema.ts │ │ │ │ ├── jsonc.ts │ │ │ │ ├── keyCodes.ts │ │ │ │ ├── keybindingLabels.ts │ │ │ │ ├── keybindingParser.ts │ │ │ │ ├── keybindings.ts │ │ │ │ ├── labels.ts │ │ │ │ ├── lazy.ts │ │ │ │ ├── lifecycle.ts │ │ │ │ ├── linkedList.ts │ │ │ │ ├── linkedText.ts │ │ │ │ ├── map.ts │ │ │ │ ├── marked/ │ │ │ │ │ ├── cgmanifest.json │ │ │ │ │ ├── marked.d.ts │ │ │ │ │ ├── marked.js │ │ │ │ │ └── marked.license.txt │ │ │ │ ├── marshalling.ts │ │ │ │ ├── marshallingIds.ts │ │ │ │ ├── mime.ts │ │ │ │ ├── naturalLanguage/ │ │ │ │ │ └── korean.ts │ │ │ │ ├── navigator.ts │ │ │ │ ├── network.ts │ │ │ │ ├── normalization.ts │ │ │ │ ├── numbers.ts │ │ │ │ ├── objectCache.ts │ │ │ │ ├── objects.ts │ │ │ │ ├── observable.ts │ │ │ │ ├── observableDisposable.ts │ │ │ │ ├── observableInternal/ │ │ │ │ │ ├── api.ts │ │ │ │ │ ├── autorun.ts │ │ │ │ │ ├── base.ts │ │ │ │ │ ├── commonFacade/ │ │ │ │ │ │ ├── cancellation.ts │ │ │ │ │ │ └── deps.ts │ │ │ │ │ ├── debugName.ts │ │ │ │ │ ├── derived.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── lazyObservableValue.ts │ │ │ │ │ ├── logging/ │ │ │ │ │ │ ├── consoleObservableLogger.ts │ │ │ │ │ │ ├── debugger/ │ │ │ │ │ │ │ ├── debuggerApi.d.ts │ │ │ │ │ │ │ ├── debuggerRpc.ts │ │ │ │ │ │ │ ├── devToolsLogger.ts │ │ │ │ │ │ │ ├── rpc.ts │ │ │ │ │ │ │ └── utils.ts │ │ │ │ │ │ └── logging.ts │ │ │ │ │ ├── promise.ts │ │ │ │ │ ├── utils.ts │ │ │ │ │ └── utilsCancellation.ts │ │ │ │ ├── paging.ts │ │ │ │ ├── parsers.ts │ │ │ │ ├── path.ts │ │ │ │ ├── performance.ts │ │ │ │ ├── platform.ts │ │ │ │ ├── policy.ts │ │ │ │ ├── ports.ts │ │ │ │ ├── prefixTree.ts │ │ │ │ ├── process.ts │ │ │ │ ├── processes.ts │ │ │ │ ├── product.ts │ │ │ │ ├── range.ts │ │ │ │ ├── resourceTree.ts │ │ │ │ ├── resources.ts │ │ │ │ ├── scrollable.ts │ │ │ │ ├── search.ts │ │ │ │ ├── semver/ │ │ │ │ │ ├── cgmanifest.json │ │ │ │ │ ├── semver.d.ts │ │ │ │ │ └── semver.js │ │ │ │ ├── sequence.ts │ │ │ │ ├── severity.ts │ │ │ │ ├── skipList.ts │ │ │ │ ├── stopwatch.ts │ │ │ │ ├── stream.ts │ │ │ │ ├── strings.ts │ │ │ │ ├── symbols.ts │ │ │ │ ├── ternarySearchTree.ts │ │ │ │ ├── tfIdf.ts │ │ │ │ ├── themables.ts │ │ │ │ ├── types.ts │ │ │ │ ├── uint.ts │ │ │ │ ├── uri.ts │ │ │ │ ├── uriIpc.ts │ │ │ │ ├── uuid.ts │ │ │ │ ├── verifier.ts │ │ │ │ └── worker/ │ │ │ │ ├── webWorker.ts │ │ │ │ └── webWorkerBootstrap.ts │ │ │ ├── node/ │ │ │ │ ├── cpuUsage.sh │ │ │ │ ├── crypto.ts │ │ │ │ ├── extpath.ts │ │ │ │ ├── id.ts │ │ │ │ ├── macAddress.ts │ │ │ │ ├── nls.ts │ │ │ │ ├── nodeStreams.ts │ │ │ │ ├── osDisplayProtocolInfo.ts │ │ │ │ ├── osReleaseInfo.ts │ │ │ │ ├── pfs.ts │ │ │ │ ├── ports.ts │ │ │ │ ├── powershell.ts │ │ │ │ ├── processes.ts │ │ │ │ ├── ps.sh │ │ │ │ ├── ps.ts │ │ │ │ ├── shell.ts │ │ │ │ ├── terminalEncoding.ts │ │ │ │ ├── terminateProcess.sh │ │ │ │ ├── unc.ts │ │ │ │ └── zip.ts │ │ │ ├── parts/ │ │ │ │ ├── contextmenu/ │ │ │ │ │ ├── common/ │ │ │ │ │ │ └── contextmenu.ts │ │ │ │ │ ├── electron-main/ │ │ │ │ │ │ └── contextmenu.ts │ │ │ │ │ └── electron-sandbox/ │ │ │ │ │ └── contextmenu.ts │ │ │ │ ├── ipc/ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ └── ipc.mp.ts │ │ │ │ │ ├── common/ │ │ │ │ │ │ ├── ipc.electron.ts │ │ │ │ │ │ ├── ipc.mp.ts │ │ │ │ │ │ ├── ipc.net.ts │ │ │ │ │ │ └── ipc.ts │ │ │ │ │ ├── electron-main/ │ │ │ │ │ │ ├── ipc.electron.ts │ │ │ │ │ │ ├── ipc.mp.ts │ │ │ │ │ │ └── ipcMain.ts │ │ │ │ │ ├── electron-sandbox/ │ │ │ │ │ │ ├── ipc.electron.ts │ │ │ │ │ │ └── ipc.mp.ts │ │ │ │ │ ├── node/ │ │ │ │ │ │ ├── ipc.cp.ts │ │ │ │ │ │ ├── ipc.mp.ts │ │ │ │ │ │ └── ipc.net.ts │ │ │ │ │ └── test/ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ └── ipc.mp.test.ts │ │ │ │ │ ├── common/ │ │ │ │ │ │ └── ipc.test.ts │ │ │ │ │ ├── electron-sandbox/ │ │ │ │ │ │ └── ipc.mp.test.ts │ │ │ │ │ └── node/ │ │ │ │ │ ├── ipc.cp.integrationTest.ts │ │ │ │ │ ├── ipc.net.test.ts │ │ │ │ │ ├── testApp.ts │ │ │ │ │ └── testService.ts │ │ │ │ ├── request/ │ │ │ │ │ ├── common/ │ │ │ │ │ │ ├── request.ts │ │ │ │ │ │ └── requestImpl.ts │ │ │ │ │ └── test/ │ │ │ │ │ └── electron-main/ │ │ │ │ │ └── request.test.ts │ │ │ │ ├── sandbox/ │ │ │ │ │ ├── common/ │ │ │ │ │ │ ├── electronTypes.ts │ │ │ │ │ │ └── sandboxTypes.ts │ │ │ │ │ ├── electron-sandbox/ │ │ │ │ │ │ ├── electronTypes.ts │ │ │ │ │ │ ├── globals.ts │ │ │ │ │ │ ├── preload-aux.ts │ │ │ │ │ │ └── preload.ts │ │ │ │ │ ├── node/ │ │ │ │ │ │ └── electronTypes.ts │ │ │ │ │ └── test/ │ │ │ │ │ └── electron-sandbox/ │ │ │ │ │ └── globals.test.ts │ │ │ │ └── storage/ │ │ │ │ ├── common/ │ │ │ │ │ └── storage.ts │ │ │ │ ├── node/ │ │ │ │ │ └── storage.ts │ │ │ │ └── test/ │ │ │ │ └── node/ │ │ │ │ └── storage.integrationTest.ts │ │ │ └── test/ │ │ │ ├── browser/ │ │ │ │ ├── actionbar.test.ts │ │ │ │ ├── browser.test.ts │ │ │ │ ├── comparers.test.ts │ │ │ │ ├── dom.test.ts │ │ │ │ ├── formattedTextRenderer.test.ts │ │ │ │ ├── hash.test.ts │ │ │ │ ├── highlightedLabel.test.ts │ │ │ │ ├── iconLabels.test.ts │ │ │ │ ├── indexedDB.test.ts │ │ │ │ ├── markdownRenderer.test.ts │ │ │ │ ├── progressBar.test.ts │ │ │ │ └── ui/ │ │ │ │ ├── contextview/ │ │ │ │ │ └── contextview.test.ts │ │ │ │ ├── grid/ │ │ │ │ │ ├── grid.test.ts │ │ │ │ │ ├── gridview.test.ts │ │ │ │ │ └── util.ts │ │ │ │ ├── list/ │ │ │ │ │ ├── listView.test.ts │ │ │ │ │ ├── listWidget.test.ts │ │ │ │ │ └── rangeMap.test.ts │ │ │ │ ├── menu/ │ │ │ │ │ └── menubar.test.ts │ │ │ │ ├── scrollbar/ │ │ │ │ │ ├── scrollableElement.test.ts │ │ │ │ │ └── scrollbarState.test.ts │ │ │ │ ├── splitview/ │ │ │ │ │ └── splitview.test.ts │ │ │ │ └── tree/ │ │ │ │ ├── asyncDataTree.test.ts │ │ │ │ ├── compressedObjectTreeModel.test.ts │ │ │ │ ├── dataTree.test.ts │ │ │ │ ├── indexTreeModel.test.ts │ │ │ │ ├── objectTree.test.ts │ │ │ │ └── objectTreeModel.test.ts │ │ │ ├── common/ │ │ │ │ ├── arrays.test.ts │ │ │ │ ├── arraysFind.test.ts │ │ │ │ ├── assert.test.ts │ │ │ │ ├── assertHeap.ts │ │ │ │ ├── async.test.ts │ │ │ │ ├── buffer.test.ts │ │ │ │ ├── cache.test.ts │ │ │ │ ├── cancelPreviousCalls.test.ts │ │ │ │ ├── cancellation.test.ts │ │ │ │ ├── charCode.test.ts │ │ │ │ ├── collections.test.ts │ │ │ │ ├── color.test.ts │ │ │ │ ├── console.test.ts │ │ │ │ ├── date.test.ts │ │ │ │ ├── decorators.test.ts │ │ │ │ ├── diff/ │ │ │ │ │ └── diff.test.ts │ │ │ │ ├── envfile.test.ts │ │ │ │ ├── errors.test.ts │ │ │ │ ├── event.test.ts │ │ │ │ ├── extpath.test.ts │ │ │ │ ├── filters.perf.data.d.ts │ │ │ │ ├── filters.perf.data.js │ │ │ │ ├── filters.perf.test.ts │ │ │ │ ├── filters.test.ts │ │ │ │ ├── fuzzyScorer.test.ts │ │ │ │ ├── glob.test.ts │ │ │ │ ├── history.test.ts │ │ │ │ ├── iconLabels.test.ts │ │ │ │ ├── iterator.test.ts │ │ │ │ ├── json.test.ts │ │ │ │ ├── jsonEdit.test.ts │ │ │ │ ├── jsonFormatter.test.ts │ │ │ │ ├── jsonParse.test.ts │ │ │ │ ├── jsonSchema.test.ts │ │ │ │ ├── keyCodes.test.ts │ │ │ │ ├── keybindings.test.ts │ │ │ │ ├── labels.test.ts │ │ │ │ ├── lazy.test.ts │ │ │ │ ├── lifecycle.test.ts │ │ │ │ ├── linkedList.test.ts │ │ │ │ ├── linkedText.test.ts │ │ │ │ ├── map.test.ts │ │ │ │ ├── markdownString.test.ts │ │ │ │ ├── marshalling.test.ts │ │ │ │ ├── mime.test.ts │ │ │ │ ├── mock.ts │ │ │ │ ├── naturalLanguage/ │ │ │ │ │ └── korean.test.ts │ │ │ │ ├── network.test.ts │ │ │ │ ├── normalization.test.ts │ │ │ │ ├── numbers.test.ts │ │ │ │ ├── objectCache.test.ts │ │ │ │ ├── objects.test.ts │ │ │ │ ├── observable.test.ts │ │ │ │ ├── observableDisposable.test.ts │ │ │ │ ├── paging.test.ts │ │ │ │ ├── path.test.ts │ │ │ │ ├── prefixTree.test.ts │ │ │ │ ├── processes.test.ts │ │ │ │ ├── resourceTree.test.ts │ │ │ │ ├── resources.test.ts │ │ │ │ ├── scrollable.test.ts │ │ │ │ ├── skipList.test.ts │ │ │ │ ├── snapshot.ts │ │ │ │ ├── stream.test.ts │ │ │ │ ├── strings.test.ts │ │ │ │ ├── ternarySearchtree.test.ts │ │ │ │ ├── testUtils.ts │ │ │ │ ├── tfIdf.test.ts │ │ │ │ ├── timeTravelScheduler.ts │ │ │ │ ├── troubleshooting.ts │ │ │ │ ├── types.test.ts │ │ │ │ ├── uri.test.ts │ │ │ │ ├── utils.ts │ │ │ │ └── uuid.test.ts │ │ │ └── node/ │ │ │ ├── __snapshots__/ │ │ │ │ ├── snapshot_cleans_up_old_snapshots.0.snap │ │ │ │ ├── snapshot_cleans_up_old_snapshots.1.snap │ │ │ │ ├── snapshot_creates_a_snapshot.0.snap │ │ │ │ └── snapshot_formats_object_nicely.0.snap │ │ │ ├── crypto.test.ts │ │ │ ├── extpath.test.ts │ │ │ ├── id.test.ts │ │ │ ├── nodeStreams.test.ts │ │ │ ├── pfs/ │ │ │ │ ├── fixtures/ │ │ │ │ │ ├── examples/ │ │ │ │ │ │ ├── company.jxs │ │ │ │ │ │ ├── conway.jxs │ │ │ │ │ │ ├── employee.jxs │ │ │ │ │ │ └── small.jxs │ │ │ │ │ ├── index.html │ │ │ │ │ └── site.css │ │ │ │ └── pfs.test.ts │ │ │ ├── port.test.ts │ │ │ ├── powershell.test.ts │ │ │ ├── processes/ │ │ │ │ ├── fixtures/ │ │ │ │ │ ├── fork.ts │ │ │ │ │ └── fork_large.ts │ │ │ │ └── processes.integrationTest.ts │ │ │ ├── snapshot.test.ts │ │ │ ├── testUtils.ts │ │ │ ├── unc.test.ts │ │ │ ├── uri.perf.data.txt │ │ │ ├── uri.perf.test.ts │ │ │ ├── uri.test.data.txt │ │ │ └── zip/ │ │ │ └── zip.test.ts │ │ ├── code/ │ │ │ ├── browser/ │ │ │ │ └── workbench/ │ │ │ │ ├── callback.html │ │ │ │ ├── workbench-dev.html │ │ │ │ ├── workbench.html │ │ │ │ └── workbench.ts │ │ │ ├── electron-main/ │ │ │ │ ├── app.ts │ │ │ │ └── main.ts │ │ │ ├── electron-sandbox/ │ │ │ │ ├── processExplorer/ │ │ │ │ │ ├── media/ │ │ │ │ │ │ └── processExplorer.css │ │ │ │ │ ├── processExplorer-dev.html │ │ │ │ │ ├── processExplorer.html │ │ │ │ │ ├── processExplorer.ts │ │ │ │ │ └── processExplorerMain.ts │ │ │ │ └── workbench/ │ │ │ │ ├── workbench-dev.html │ │ │ │ ├── workbench.html │ │ │ │ └── workbench.ts │ │ │ ├── electron-utility/ │ │ │ │ └── sharedProcess/ │ │ │ │ ├── contrib/ │ │ │ │ │ ├── codeCacheCleaner.ts │ │ │ │ │ ├── defaultExtensionsInitializer.ts │ │ │ │ │ ├── extensions.ts │ │ │ │ │ ├── languagePackCachedDataCleaner.ts │ │ │ │ │ ├── localizationsUpdater.ts │ │ │ │ │ ├── logsDataCleaner.ts │ │ │ │ │ ├── storageDataCleaner.ts │ │ │ │ │ └── userDataProfilesCleaner.ts │ │ │ │ └── sharedProcessMain.ts │ │ │ └── node/ │ │ │ ├── cli.ts │ │ │ └── cliProcessMain.ts │ │ ├── editor/ │ │ │ ├── browser/ │ │ │ │ ├── config/ │ │ │ │ │ ├── charWidthReader.ts │ │ │ │ │ ├── domFontInfo.ts │ │ │ │ │ ├── editorConfiguration.ts │ │ │ │ │ ├── elementSizeObserver.ts │ │ │ │ │ ├── fontMeasurements.ts │ │ │ │ │ ├── migrateOptions.ts │ │ │ │ │ └── tabFocus.ts │ │ │ │ ├── controller/ │ │ │ │ │ ├── editContext/ │ │ │ │ │ │ ├── clipboardUtils.ts │ │ │ │ │ │ ├── editContext.ts │ │ │ │ │ │ ├── native/ │ │ │ │ │ │ │ ├── debugEditContext.ts │ │ │ │ │ │ │ ├── editContextFactory.ts │ │ │ │ │ │ │ ├── nativeEditContext.css │ │ │ │ │ │ │ ├── nativeEditContext.ts │ │ │ │ │ │ │ ├── nativeEditContextRegistry.ts │ │ │ │ │ │ │ ├── nativeEditContextUtils.ts │ │ │ │ │ │ │ └── screenReaderSupport.ts │ │ │ │ │ │ ├── screenReaderUtils.ts │ │ │ │ │ │ └── textArea/ │ │ │ │ │ │ ├── textAreaEditContext.css │ │ │ │ │ │ ├── textAreaEditContext.ts │ │ │ │ │ │ ├── textAreaEditContextInput.ts │ │ │ │ │ │ └── textAreaEditContextState.ts │ │ │ │ │ ├── mouseHandler.ts │ │ │ │ │ ├── mouseTarget.ts │ │ │ │ │ └── pointerHandler.ts │ │ │ │ ├── coreCommands.ts │ │ │ │ ├── dnd.ts │ │ │ │ ├── editorBrowser.ts │ │ │ │ ├── editorDom.ts │ │ │ │ ├── editorExtensions.ts │ │ │ │ ├── gpu/ │ │ │ │ │ ├── atlas/ │ │ │ │ │ │ ├── atlas.ts │ │ │ │ │ │ ├── textureAtlas.ts │ │ │ │ │ │ ├── textureAtlasPage.ts │ │ │ │ │ │ ├── textureAtlasShelfAllocator.ts │ │ │ │ │ │ └── textureAtlasSlabAllocator.ts │ │ │ │ │ ├── bufferDirtyTracker.ts │ │ │ │ │ ├── contentSegmenter.ts │ │ │ │ │ ├── css/ │ │ │ │ │ │ ├── decorationCssRuleExtractor.ts │ │ │ │ │ │ ├── decorationStyleCache.ts │ │ │ │ │ │ └── media/ │ │ │ │ │ │ └── decorationCssRuleExtractor.css │ │ │ │ │ ├── gpu.ts │ │ │ │ │ ├── gpuDisposable.ts │ │ │ │ │ ├── gpuUtils.ts │ │ │ │ │ ├── objectCollectionBuffer.ts │ │ │ │ │ ├── raster/ │ │ │ │ │ │ ├── glyphRasterizer.ts │ │ │ │ │ │ └── raster.ts │ │ │ │ │ ├── rectangleRenderer.ts │ │ │ │ │ ├── rectangleRenderer.wgsl.ts │ │ │ │ │ ├── renderStrategy/ │ │ │ │ │ │ ├── baseRenderStrategy.ts │ │ │ │ │ │ ├── fullFileRenderStrategy.ts │ │ │ │ │ │ ├── fullFileRenderStrategy.wgsl.ts │ │ │ │ │ │ └── viewportRenderStrategy.ts │ │ │ │ │ ├── taskQueue.ts │ │ │ │ │ └── viewGpuContext.ts │ │ │ │ ├── observableCodeEditor.ts │ │ │ │ ├── point.ts │ │ │ │ ├── rect.ts │ │ │ │ ├── services/ │ │ │ │ │ ├── abstractCodeEditorService.ts │ │ │ │ │ ├── bulkEditService.ts │ │ │ │ │ ├── codeEditorService.ts │ │ │ │ │ ├── editorWorkerService.ts │ │ │ │ │ ├── hoverService/ │ │ │ │ │ │ ├── hover.css │ │ │ │ │ │ ├── hoverService.ts │ │ │ │ │ │ ├── hoverWidget.ts │ │ │ │ │ │ └── updatableHoverWidget.ts │ │ │ │ │ ├── markerDecorations.ts │ │ │ │ │ └── openerService.ts │ │ │ │ ├── stableEditorScroll.ts │ │ │ │ ├── view/ │ │ │ │ │ ├── domLineBreaksComputer.ts │ │ │ │ │ ├── dynamicViewOverlay.ts │ │ │ │ │ ├── renderingContext.ts │ │ │ │ │ ├── viewController.ts │ │ │ │ │ ├── viewLayer.ts │ │ │ │ │ ├── viewOverlays.ts │ │ │ │ │ ├── viewPart.ts │ │ │ │ │ └── viewUserInputEvents.ts │ │ │ │ ├── view.ts │ │ │ │ ├── viewParts/ │ │ │ │ │ ├── blockDecorations/ │ │ │ │ │ │ ├── blockDecorations.css │ │ │ │ │ │ └── blockDecorations.ts │ │ │ │ │ ├── contentWidgets/ │ │ │ │ │ │ └── contentWidgets.ts │ │ │ │ │ ├── currentLineHighlight/ │ │ │ │ │ │ ├── currentLineHighlight.css │ │ │ │ │ │ └── currentLineHighlight.ts │ │ │ │ │ ├── decorations/ │ │ │ │ │ │ ├── decorations.css │ │ │ │ │ │ └── decorations.ts │ │ │ │ │ ├── editorScrollbar/ │ │ │ │ │ │ └── editorScrollbar.ts │ │ │ │ │ ├── glyphMargin/ │ │ │ │ │ │ ├── glyphMargin.css │ │ │ │ │ │ └── glyphMargin.ts │ │ │ │ │ ├── gpuMark/ │ │ │ │ │ │ ├── gpuMark.css │ │ │ │ │ │ └── gpuMark.ts │ │ │ │ │ ├── indentGuides/ │ │ │ │ │ │ ├── indentGuides.css │ │ │ │ │ │ └── indentGuides.ts │ │ │ │ │ ├── lineNumbers/ │ │ │ │ │ │ ├── lineNumbers.css │ │ │ │ │ │ └── lineNumbers.ts │ │ │ │ │ ├── linesDecorations/ │ │ │ │ │ │ ├── linesDecorations.css │ │ │ │ │ │ └── linesDecorations.ts │ │ │ │ │ ├── margin/ │ │ │ │ │ │ ├── margin.css │ │ │ │ │ │ └── margin.ts │ │ │ │ │ ├── marginDecorations/ │ │ │ │ │ │ ├── marginDecorations.css │ │ │ │ │ │ └── marginDecorations.ts │ │ │ │ │ ├── minimap/ │ │ │ │ │ │ ├── minimap.css │ │ │ │ │ │ ├── minimap.ts │ │ │ │ │ │ ├── minimapCharRenderer.ts │ │ │ │ │ │ ├── minimapCharRendererFactory.ts │ │ │ │ │ │ ├── minimapCharSheet.ts │ │ │ │ │ │ └── minimapPreBaked.ts │ │ │ │ │ ├── overlayWidgets/ │ │ │ │ │ │ ├── overlayWidgets.css │ │ │ │ │ │ └── overlayWidgets.ts │ │ │ │ │ ├── overviewRuler/ │ │ │ │ │ │ ├── decorationsOverviewRuler.ts │ │ │ │ │ │ └── overviewRuler.ts │ │ │ │ │ ├── rulers/ │ │ │ │ │ │ ├── rulers.css │ │ │ │ │ │ └── rulers.ts │ │ │ │ │ ├── rulersGpu/ │ │ │ │ │ │ └── rulersGpu.ts │ │ │ │ │ ├── scrollDecoration/ │ │ │ │ │ │ ├── scrollDecoration.css │ │ │ │ │ │ └── scrollDecoration.ts │ │ │ │ │ ├── selections/ │ │ │ │ │ │ ├── selections.css │ │ │ │ │ │ └── selections.ts │ │ │ │ │ ├── viewCursors/ │ │ │ │ │ │ ├── viewCursor.ts │ │ │ │ │ │ ├── viewCursors.css │ │ │ │ │ │ └── viewCursors.ts │ │ │ │ │ ├── viewLines/ │ │ │ │ │ │ ├── domReadingContext.ts │ │ │ │ │ │ ├── rangeUtil.ts │ │ │ │ │ │ ├── viewLine.ts │ │ │ │ │ │ ├── viewLineOptions.ts │ │ │ │ │ │ ├── viewLines.css │ │ │ │ │ │ └── viewLines.ts │ │ │ │ │ ├── viewLinesGpu/ │ │ │ │ │ │ └── viewLinesGpu.ts │ │ │ │ │ ├── viewZones/ │ │ │ │ │ │ └── viewZones.ts │ │ │ │ │ └── whitespace/ │ │ │ │ │ ├── whitespace.css │ │ │ │ │ └── whitespace.ts │ │ │ │ └── widget/ │ │ │ │ ├── codeEditor/ │ │ │ │ │ ├── codeEditorContributions.ts │ │ │ │ │ ├── codeEditorWidget.ts │ │ │ │ │ ├── editor.css │ │ │ │ │ └── embeddedCodeEditorWidget.ts │ │ │ │ ├── diffEditor/ │ │ │ │ │ ├── commands.ts │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── accessibleDiffViewer.css │ │ │ │ │ │ ├── accessibleDiffViewer.ts │ │ │ │ │ │ ├── diffEditorDecorations.ts │ │ │ │ │ │ ├── diffEditorEditors.ts │ │ │ │ │ │ ├── diffEditorSash.ts │ │ │ │ │ │ └── diffEditorViewZones/ │ │ │ │ │ │ ├── diffEditorViewZones.ts │ │ │ │ │ │ ├── inlineDiffDeletedCodeMargin.ts │ │ │ │ │ │ └── renderLines.ts │ │ │ │ │ ├── delegatingEditorImpl.ts │ │ │ │ │ ├── diffEditor.contribution.ts │ │ │ │ │ ├── diffEditorOptions.ts │ │ │ │ │ ├── diffEditorViewModel.ts │ │ │ │ │ ├── diffEditorWidget.ts │ │ │ │ │ ├── diffProviderFactoryService.ts │ │ │ │ │ ├── embeddedDiffEditorWidget.ts │ │ │ │ │ ├── features/ │ │ │ │ │ │ ├── gutterFeature.ts │ │ │ │ │ │ ├── hideUnchangedRegionsFeature.ts │ │ │ │ │ │ ├── movedBlocksLinesFeature.ts │ │ │ │ │ │ ├── overviewRulerFeature.ts │ │ │ │ │ │ └── revertButtonsFeature.ts │ │ │ │ │ ├── registrations.contribution.ts │ │ │ │ │ ├── style.css │ │ │ │ │ ├── utils/ │ │ │ │ │ │ └── editorGutter.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── markdownRenderer/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── markdownRenderer.ts │ │ │ │ │ └── renderedMarkdown.css │ │ │ │ └── multiDiffEditor/ │ │ │ │ ├── colors.ts │ │ │ │ ├── diffEditorItemTemplate.ts │ │ │ │ ├── model.ts │ │ │ │ ├── multiDiffEditorViewModel.ts │ │ │ │ ├── multiDiffEditorWidget.ts │ │ │ │ ├── multiDiffEditorWidgetImpl.ts │ │ │ │ ├── objectPool.ts │ │ │ │ ├── style.css │ │ │ │ ├── utils.ts │ │ │ │ └── workbenchUIElementFactory.ts │ │ │ ├── common/ │ │ │ │ ├── codecs/ │ │ │ │ │ ├── baseToken.ts │ │ │ │ │ ├── linesCodec/ │ │ │ │ │ │ ├── linesDecoder.ts │ │ │ │ │ │ └── tokens/ │ │ │ │ │ │ ├── carriageReturn.ts │ │ │ │ │ │ ├── line.ts │ │ │ │ │ │ └── newLine.ts │ │ │ │ │ ├── markdownCodec/ │ │ │ │ │ │ ├── markdownDecoder.ts │ │ │ │ │ │ ├── parsers/ │ │ │ │ │ │ │ ├── markdownComment.ts │ │ │ │ │ │ │ ├── markdownImage.ts │ │ │ │ │ │ │ └── markdownLink.ts │ │ │ │ │ │ └── tokens/ │ │ │ │ │ │ ├── markdownComment.ts │ │ │ │ │ │ ├── markdownImage.ts │ │ │ │ │ │ ├── markdownLink.ts │ │ │ │ │ │ └── markdownToken.ts │ │ │ │ │ └── simpleCodec/ │ │ │ │ │ ├── parserBase.ts │ │ │ │ │ ├── simpleDecoder.ts │ │ │ │ │ └── tokens/ │ │ │ │ │ ├── angleBrackets.ts │ │ │ │ │ ├── brackets.ts │ │ │ │ │ ├── colon.ts │ │ │ │ │ ├── dash.ts │ │ │ │ │ ├── exclamationMark.ts │ │ │ │ │ ├── formFeed.ts │ │ │ │ │ ├── hash.ts │ │ │ │ │ ├── parentheses.ts │ │ │ │ │ ├── space.ts │ │ │ │ │ ├── tab.ts │ │ │ │ │ ├── verticalTab.ts │ │ │ │ │ └── word.ts │ │ │ │ ├── commands/ │ │ │ │ │ ├── replaceCommand.ts │ │ │ │ │ ├── shiftCommand.ts │ │ │ │ │ ├── surroundSelectionCommand.ts │ │ │ │ │ └── trimTrailingWhitespaceCommand.ts │ │ │ │ ├── config/ │ │ │ │ │ ├── diffEditor.ts │ │ │ │ │ ├── editorConfiguration.ts │ │ │ │ │ ├── editorConfigurationSchema.ts │ │ │ │ │ ├── editorOptions.ts │ │ │ │ │ ├── editorZoom.ts │ │ │ │ │ └── fontInfo.ts │ │ │ │ ├── core/ │ │ │ │ │ ├── characterClassifier.ts │ │ │ │ │ ├── cursorColumns.ts │ │ │ │ │ ├── dimension.ts │ │ │ │ │ ├── editOperation.ts │ │ │ │ │ ├── editorColorRegistry.ts │ │ │ │ │ ├── eolCounter.ts │ │ │ │ │ ├── indentation.ts │ │ │ │ │ ├── lineEdit.ts │ │ │ │ │ ├── lineRange.ts │ │ │ │ │ ├── offsetEdit.ts │ │ │ │ │ ├── offsetRange.ts │ │ │ │ │ ├── position.ts │ │ │ │ │ ├── positionToOffset.ts │ │ │ │ │ ├── range.ts │ │ │ │ │ ├── rangeMapping.ts │ │ │ │ │ ├── rgba.ts │ │ │ │ │ ├── selection.ts │ │ │ │ │ ├── stringBuilder.ts │ │ │ │ │ ├── textChange.ts │ │ │ │ │ ├── textEdit.ts │ │ │ │ │ ├── textLength.ts │ │ │ │ │ ├── textModelDefaults.ts │ │ │ │ │ ├── wordCharacterClassifier.ts │ │ │ │ │ └── wordHelper.ts │ │ │ │ ├── cursor/ │ │ │ │ │ ├── cursor.ts │ │ │ │ │ ├── cursorAtomicMoveOperations.ts │ │ │ │ │ ├── cursorCollection.ts │ │ │ │ │ ├── cursorColumnSelection.ts │ │ │ │ │ ├── cursorContext.ts │ │ │ │ │ ├── cursorDeleteOperations.ts │ │ │ │ │ ├── cursorMoveCommands.ts │ │ │ │ │ ├── cursorMoveOperations.ts │ │ │ │ │ ├── cursorTypeEditOperations.ts │ │ │ │ │ ├── cursorTypeOperations.ts │ │ │ │ │ ├── cursorWordOperations.ts │ │ │ │ │ └── oneCursor.ts │ │ │ │ ├── cursorCommon.ts │ │ │ │ ├── cursorEvents.ts │ │ │ │ ├── diff/ │ │ │ │ │ ├── defaultLinesDiffComputer/ │ │ │ │ │ │ ├── algorithms/ │ │ │ │ │ │ │ ├── diffAlgorithm.ts │ │ │ │ │ │ │ ├── dynamicProgrammingDiffing.ts │ │ │ │ │ │ │ └── myersDiffAlgorithm.ts │ │ │ │ │ │ ├── computeMovedLines.ts │ │ │ │ │ │ ├── defaultLinesDiffComputer.ts │ │ │ │ │ │ ├── heuristicSequenceOptimizations.ts │ │ │ │ │ │ ├── lineSequence.ts │ │ │ │ │ │ ├── linesSliceCharSequence.ts │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── documentDiffProvider.ts │ │ │ │ │ ├── legacyLinesDiffComputer.ts │ │ │ │ │ ├── linesDiffComputer.ts │ │ │ │ │ ├── linesDiffComputers.ts │ │ │ │ │ └── rangeMapping.ts │ │ │ │ ├── editorAction.ts │ │ │ │ ├── editorCommon.ts │ │ │ │ ├── editorContextKeys.ts │ │ │ │ ├── editorFeatures.ts │ │ │ │ ├── editorTheme.ts │ │ │ │ ├── encodedTokenAttributes.ts │ │ │ │ ├── inputMode.ts │ │ │ │ ├── languageFeatureRegistry.ts │ │ │ │ ├── languageSelector.ts │ │ │ │ ├── languages/ │ │ │ │ │ ├── autoIndent.ts │ │ │ │ │ ├── defaultDocumentColorsComputer.ts │ │ │ │ │ ├── enterAction.ts │ │ │ │ │ ├── highlights/ │ │ │ │ │ │ ├── css.scm │ │ │ │ │ │ ├── ini.scm │ │ │ │ │ │ ├── regex.scm │ │ │ │ │ │ └── typescript.scm │ │ │ │ │ ├── injections/ │ │ │ │ │ │ └── typescript.scm │ │ │ │ │ ├── language.ts │ │ │ │ │ ├── languageConfiguration.ts │ │ │ │ │ ├── languageConfigurationRegistry.ts │ │ │ │ │ ├── linkComputer.ts │ │ │ │ │ ├── modesRegistry.ts │ │ │ │ │ ├── nullTokenize.ts │ │ │ │ │ ├── supports/ │ │ │ │ │ │ ├── characterPair.ts │ │ │ │ │ │ ├── electricCharacter.ts │ │ │ │ │ │ ├── indentRules.ts │ │ │ │ │ │ ├── indentationLineProcessor.ts │ │ │ │ │ │ ├── inplaceReplaceSupport.ts │ │ │ │ │ │ ├── languageBracketsConfiguration.ts │ │ │ │ │ │ ├── onEnter.ts │ │ │ │ │ │ ├── richEditBrackets.ts │ │ │ │ │ │ └── tokenization.ts │ │ │ │ │ ├── supports.ts │ │ │ │ │ └── textToHtmlTokenizer.ts │ │ │ │ ├── languages.ts │ │ │ │ ├── model/ │ │ │ │ │ ├── bracketPairsTextModelPart/ │ │ │ │ │ │ ├── bracketPairsImpl.ts │ │ │ │ │ │ ├── bracketPairsTree/ │ │ │ │ │ │ │ ├── ast.ts │ │ │ │ │ │ │ ├── beforeEditPositionMapper.ts │ │ │ │ │ │ │ ├── bracketPairsTree.ts │ │ │ │ │ │ │ ├── brackets.ts │ │ │ │ │ │ │ ├── combineTextEditInfos.ts │ │ │ │ │ │ │ ├── concat23Trees.ts │ │ │ │ │ │ │ ├── length.ts │ │ │ │ │ │ │ ├── nodeReader.ts │ │ │ │ │ │ │ ├── parser.ts │ │ │ │ │ │ │ ├── smallImmutableSet.ts │ │ │ │ │ │ │ └── tokenizer.ts │ │ │ │ │ │ ├── colorizedBracketPairsDecorationProvider.ts │ │ │ │ │ │ └── fixBrackets.ts │ │ │ │ │ ├── decorationProvider.ts │ │ │ │ │ ├── editStack.ts │ │ │ │ │ ├── fixedArray.ts │ │ │ │ │ ├── guidesTextModelPart.ts │ │ │ │ │ ├── indentationGuesser.ts │ │ │ │ │ ├── intervalTree.ts │ │ │ │ │ ├── mirrorTextModel.ts │ │ │ │ │ ├── pieceTreeTextBuffer/ │ │ │ │ │ │ ├── pieceTreeBase.ts │ │ │ │ │ │ ├── pieceTreeTextBuffer.ts │ │ │ │ │ │ ├── pieceTreeTextBufferBuilder.ts │ │ │ │ │ │ └── rbTreeBase.ts │ │ │ │ │ ├── prefixSumComputer.ts │ │ │ │ │ ├── textModel.ts │ │ │ │ │ ├── textModelOffsetEdit.ts │ │ │ │ │ ├── textModelPart.ts │ │ │ │ │ ├── textModelSearch.ts │ │ │ │ │ ├── textModelText.ts │ │ │ │ │ ├── textModelTokens.ts │ │ │ │ │ ├── tokenStore.ts │ │ │ │ │ ├── tokenizationTextModelPart.ts │ │ │ │ │ ├── tokens.ts │ │ │ │ │ ├── treeSitterTokenStoreService.ts │ │ │ │ │ ├── treeSitterTokens.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── model.ts │ │ │ │ ├── modelLineProjectionData.ts │ │ │ │ ├── services/ │ │ │ │ │ ├── editorBaseApi.ts │ │ │ │ │ ├── editorWebWorker.ts │ │ │ │ │ ├── editorWebWorkerMain.ts │ │ │ │ │ ├── editorWorker.ts │ │ │ │ │ ├── editorWorkerHost.ts │ │ │ │ │ ├── findSectionHeaders.ts │ │ │ │ │ ├── getIconClasses.ts │ │ │ │ │ ├── languageFeatureDebounce.ts │ │ │ │ │ ├── languageFeatures.ts │ │ │ │ │ ├── languageFeaturesService.ts │ │ │ │ │ ├── languageService.ts │ │ │ │ │ ├── languagesAssociations.ts │ │ │ │ │ ├── languagesRegistry.ts │ │ │ │ │ ├── markerDecorations.ts │ │ │ │ │ ├── markerDecorationsService.ts │ │ │ │ │ ├── model.ts │ │ │ │ │ ├── modelService.ts │ │ │ │ │ ├── modelUndoRedoParticipant.ts │ │ │ │ │ ├── resolverService.ts │ │ │ │ │ ├── semanticTokensDto.ts │ │ │ │ │ ├── semanticTokensProviderStyling.ts │ │ │ │ │ ├── semanticTokensStyling.ts │ │ │ │ │ ├── semanticTokensStylingService.ts │ │ │ │ │ ├── textModelSync/ │ │ │ │ │ │ ├── textModelSync.impl.ts │ │ │ │ │ │ └── textModelSync.protocol.ts │ │ │ │ │ ├── textResourceConfiguration.ts │ │ │ │ │ ├── textResourceConfigurationService.ts │ │ │ │ │ ├── treeSitter/ │ │ │ │ │ │ ├── cursorUtils.ts │ │ │ │ │ │ ├── textModelTreeSitter.ts │ │ │ │ │ │ ├── treeSitterLanguages.ts │ │ │ │ │ │ └── treeSitterParserService.ts │ │ │ │ │ ├── treeSitterParserService.ts │ │ │ │ │ ├── treeViewsDnd.ts │ │ │ │ │ ├── treeViewsDndService.ts │ │ │ │ │ └── unicodeTextModelHighlighter.ts │ │ │ │ ├── standalone/ │ │ │ │ │ └── standaloneEnums.ts │ │ │ │ ├── standaloneStrings.ts │ │ │ │ ├── textModelBracketPairs.ts │ │ │ │ ├── textModelEvents.ts │ │ │ │ ├── textModelGuides.ts │ │ │ │ ├── tokenizationRegistry.ts │ │ │ │ ├── tokenizationTextModelPart.ts │ │ │ │ ├── tokens/ │ │ │ │ │ ├── contiguousMultilineTokens.ts │ │ │ │ │ ├── contiguousMultilineTokensBuilder.ts │ │ │ │ │ ├── contiguousTokensEditing.ts │ │ │ │ │ ├── contiguousTokensStore.ts │ │ │ │ │ ├── lineTokens.ts │ │ │ │ │ ├── sparseMultilineTokens.ts │ │ │ │ │ ├── sparseTokensStore.ts │ │ │ │ │ └── tokenArray.ts │ │ │ │ ├── viewEventHandler.ts │ │ │ │ ├── viewEvents.ts │ │ │ │ ├── viewLayout/ │ │ │ │ │ ├── lineDecorations.ts │ │ │ │ │ ├── linePart.ts │ │ │ │ │ ├── linesLayout.ts │ │ │ │ │ ├── viewLayout.ts │ │ │ │ │ ├── viewLineRenderer.ts │ │ │ │ │ └── viewLinesViewportData.ts │ │ │ │ ├── viewModel/ │ │ │ │ │ ├── glyphLanesModel.ts │ │ │ │ │ ├── minimapTokensColorTracker.ts │ │ │ │ │ ├── modelLineProjection.ts │ │ │ │ │ ├── monospaceLineBreaksComputer.ts │ │ │ │ │ ├── overviewZoneManager.ts │ │ │ │ │ ├── viewContext.ts │ │ │ │ │ ├── viewModelDecorations.ts │ │ │ │ │ ├── viewModelImpl.ts │ │ │ │ │ └── viewModelLines.ts │ │ │ │ ├── viewModel.ts │ │ │ │ └── viewModelEventDispatcher.ts │ │ │ ├── contrib/ │ │ │ │ ├── anchorSelect/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── anchorSelect.css │ │ │ │ │ └── anchorSelect.ts │ │ │ │ ├── bracketMatching/ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ ├── bracketMatching.css │ │ │ │ │ │ └── bracketMatching.ts │ │ │ │ │ └── test/ │ │ │ │ │ └── browser/ │ │ │ │ │ └── bracketMatching.test.ts │ │ │ │ ├── caretOperations/ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ ├── caretOperations.ts │ │ │ │ │ │ ├── moveCaretCommand.ts │ │ │ │ │ │ └── transpose.ts │ │ │ │ │ └── test/ │ │ │ │ │ └── browser/ │ │ │ │ │ └── moveCarretCommand.test.ts │ │ │ │ ├── clipboard/ │ │ │ │ │ └── browser/ │ │ │ │ │ └── clipboard.ts │ │ │ │ ├── codeAction/ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ ├── codeAction.ts │ │ │ │ │ │ ├── codeActionCommands.ts │ │ │ │ │ │ ├── codeActionContributions.ts │ │ │ │ │ │ ├── codeActionController.ts │ │ │ │ │ │ ├── codeActionKeybindingResolver.ts │ │ │ │ │ │ ├── codeActionMenu.ts │ │ │ │ │ │ ├── codeActionModel.ts │ │ │ │ │ │ ├── lightBulbWidget.css │ │ │ │ │ │ └── lightBulbWidget.ts │ │ │ │ │ ├── common/ │ │ │ │ │ │ └── types.ts │ │ │ │ │ └── test/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── codeAction.test.ts │ │ │ │ │ ├── codeActionKeybindingResolver.test.ts │ │ │ │ │ └── codeActionModel.test.ts │ │ │ │ ├── codelens/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── codeLensCache.ts │ │ │ │ │ ├── codelens.ts │ │ │ │ │ ├── codelensController.ts │ │ │ │ │ ├── codelensWidget.css │ │ │ │ │ └── codelensWidget.ts │ │ │ │ ├── colorPicker/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── color.ts │ │ │ │ │ ├── colorDetector.ts │ │ │ │ │ ├── colorPicker.css │ │ │ │ │ ├── colorPickerContribution.ts │ │ │ │ │ ├── colorPickerModel.ts │ │ │ │ │ ├── colorPickerParticipantUtils.ts │ │ │ │ │ ├── colorPickerParts/ │ │ │ │ │ │ ├── colorPickerBody.ts │ │ │ │ │ │ ├── colorPickerCloseButton.ts │ │ │ │ │ │ ├── colorPickerHeader.ts │ │ │ │ │ │ ├── colorPickerInsertButton.ts │ │ │ │ │ │ ├── colorPickerSaturationBox.ts │ │ │ │ │ │ └── colorPickerStrip.ts │ │ │ │ │ ├── colorPickerWidget.ts │ │ │ │ │ ├── defaultDocumentColorProvider.ts │ │ │ │ │ ├── hoverColorPicker/ │ │ │ │ │ │ ├── hoverColorPicker.ts │ │ │ │ │ │ ├── hoverColorPickerContribution.ts │ │ │ │ │ │ └── hoverColorPickerParticipant.ts │ │ │ │ │ └── standaloneColorPicker/ │ │ │ │ │ ├── standaloneColorPickerActions.ts │ │ │ │ │ ├── standaloneColorPickerController.ts │ │ │ │ │ ├── standaloneColorPickerParticipant.ts │ │ │ │ │ └── standaloneColorPickerWidget.ts │ │ │ │ ├── comment/ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ ├── blockCommentCommand.ts │ │ │ │ │ │ ├── comment.ts │ │ │ │ │ │ └── lineCommentCommand.ts │ │ │ │ │ └── test/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── blockCommentCommand.test.ts │ │ │ │ │ └── lineCommentCommand.test.ts │ │ │ │ ├── contextmenu/ │ │ │ │ │ └── browser/ │ │ │ │ │ └── contextmenu.ts │ │ │ │ ├── cursorUndo/ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ └── cursorUndo.ts │ │ │ │ │ └── test/ │ │ │ │ │ └── browser/ │ │ │ │ │ └── cursorUndo.test.ts │ │ │ │ ├── diffEditorBreadcrumbs/ │ │ │ │ │ └── browser/ │ │ │ │ │ └── contribution.ts │ │ │ │ ├── dnd/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── dnd.css │ │ │ │ │ ├── dnd.ts │ │ │ │ │ └── dragAndDropCommand.ts │ │ │ │ ├── documentSymbols/ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ ├── documentSymbols.ts │ │ │ │ │ │ └── outlineModel.ts │ │ │ │ │ └── test/ │ │ │ │ │ └── browser/ │ │ │ │ │ └── outlineModel.test.ts │ │ │ │ ├── dropOrPasteInto/ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ ├── copyPasteContribution.ts │ │ │ │ │ │ ├── copyPasteController.ts │ │ │ │ │ │ ├── defaultProviders.ts │ │ │ │ │ │ ├── dropIntoEditorContribution.ts │ │ │ │ │ │ ├── dropIntoEditorController.ts │ │ │ │ │ │ ├── edit.ts │ │ │ │ │ │ ├── postEditWidget.css │ │ │ │ │ │ └── postEditWidget.ts │ │ │ │ │ └── test/ │ │ │ │ │ └── browser/ │ │ │ │ │ └── editSort.test.ts │ │ │ │ ├── editorState/ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ ├── editorState.ts │ │ │ │ │ │ └── keybindingCancellation.ts │ │ │ │ │ └── test/ │ │ │ │ │ └── browser/ │ │ │ │ │ └── editorState.test.ts │ │ │ │ ├── find/ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ ├── findController.ts │ │ │ │ │ │ ├── findDecorations.ts │ │ │ │ │ │ ├── findModel.ts │ │ │ │ │ │ ├── findOptionsWidget.css │ │ │ │ │ │ ├── findOptionsWidget.ts │ │ │ │ │ │ ├── findState.ts │ │ │ │ │ │ ├── findWidget.css │ │ │ │ │ │ ├── findWidget.ts │ │ │ │ │ │ ├── findWidgetSearchHistory.ts │ │ │ │ │ │ ├── replaceAllCommand.ts │ │ │ │ │ │ ├── replacePattern.ts │ │ │ │ │ │ └── replaceWidgetHistory.ts │ │ │ │ │ └── test/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── find.test.ts │ │ │ │ │ ├── findController.test.ts │ │ │ │ │ ├── findModel.test.ts │ │ │ │ │ └── replacePattern.test.ts │ │ │ │ ├── folding/ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ ├── folding.css │ │ │ │ │ │ ├── folding.ts │ │ │ │ │ │ ├── foldingDecorations.ts │ │ │ │ │ │ ├── foldingModel.ts │ │ │ │ │ │ ├── foldingRanges.ts │ │ │ │ │ │ ├── hiddenRangeModel.ts │ │ │ │ │ │ ├── indentRangeProvider.ts │ │ │ │ │ │ └── syntaxRangeProvider.ts │ │ │ │ │ └── test/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── foldingModel.test.ts │ │ │ │ │ ├── foldingRanges.test.ts │ │ │ │ │ ├── hiddenRangeModel.test.ts │ │ │ │ │ ├── indentFold.test.ts │ │ │ │ │ ├── indentRangeProvider.test.ts │ │ │ │ │ └── syntaxFold.test.ts │ │ │ │ ├── fontZoom/ │ │ │ │ │ └── browser/ │ │ │ │ │ └── fontZoom.ts │ │ │ │ ├── format/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── format.ts │ │ │ │ │ ├── formatActions.ts │ │ │ │ │ └── formattingEdit.ts │ │ │ │ ├── gotoError/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── gotoError.ts │ │ │ │ │ ├── gotoErrorWidget.ts │ │ │ │ │ ├── markerNavigationService.ts │ │ │ │ │ └── media/ │ │ │ │ │ └── gotoErrorWidget.css │ │ │ │ ├── gotoSymbol/ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ ├── goToCommands.ts │ │ │ │ │ │ ├── goToSymbol.ts │ │ │ │ │ │ ├── link/ │ │ │ │ │ │ │ ├── clickLinkGesture.ts │ │ │ │ │ │ │ ├── goToDefinitionAtPosition.css │ │ │ │ │ │ │ └── goToDefinitionAtPosition.ts │ │ │ │ │ │ ├── peek/ │ │ │ │ │ │ │ ├── referencesController.ts │ │ │ │ │ │ │ ├── referencesTree.ts │ │ │ │ │ │ │ ├── referencesWidget.css │ │ │ │ │ │ │ └── referencesWidget.ts │ │ │ │ │ │ ├── referencesModel.ts │ │ │ │ │ │ └── symbolNavigation.ts │ │ │ │ │ └── test/ │ │ │ │ │ └── browser/ │ │ │ │ │ └── referencesModel.test.ts │ │ │ │ ├── gpu/ │ │ │ │ │ └── browser/ │ │ │ │ │ └── gpuActions.ts │ │ │ │ ├── hover/ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ ├── contentHoverComputer.ts │ │ │ │ │ │ ├── contentHoverController.ts │ │ │ │ │ │ ├── contentHoverRendered.ts │ │ │ │ │ │ ├── contentHoverStatusBar.ts │ │ │ │ │ │ ├── contentHoverTypes.ts │ │ │ │ │ │ ├── contentHoverWidget.ts │ │ │ │ │ │ ├── contentHoverWidgetWrapper.ts │ │ │ │ │ │ ├── getHover.ts │ │ │ │ │ │ ├── glyphHoverComputer.ts │ │ │ │ │ │ ├── glyphHoverController.ts │ │ │ │ │ │ ├── glyphHoverWidget.ts │ │ │ │ │ │ ├── hover.css │ │ │ │ │ │ ├── hoverAccessibleViews.ts │ │ │ │ │ │ ├── hoverActionIds.ts │ │ │ │ │ │ ├── hoverActions.ts │ │ │ │ │ │ ├── hoverContribution.ts │ │ │ │ │ │ ├── hoverOperation.ts │ │ │ │ │ │ ├── hoverTypes.ts │ │ │ │ │ │ ├── hoverUtils.ts │ │ │ │ │ │ ├── markdownHoverParticipant.ts │ │ │ │ │ │ ├── markerHoverParticipant.ts │ │ │ │ │ │ └── resizableContentWidget.ts │ │ │ │ │ └── test/ │ │ │ │ │ └── browser/ │ │ │ │ │ └── contentHover.test.ts │ │ │ │ ├── inPlaceReplace/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── inPlaceReplace.css │ │ │ │ │ ├── inPlaceReplace.ts │ │ │ │ │ └── inPlaceReplaceCommand.ts │ │ │ │ ├── indentation/ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ └── indentation.ts │ │ │ │ │ ├── common/ │ │ │ │ │ │ ├── indentUtils.ts │ │ │ │ │ │ └── indentation.ts │ │ │ │ │ └── test/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── indentation.test.ts │ │ │ │ │ └── indentationLineProcessor.test.ts │ │ │ │ ├── inlayHints/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── inlayHints.ts │ │ │ │ │ ├── inlayHintsContribution.ts │ │ │ │ │ ├── inlayHintsController.ts │ │ │ │ │ ├── inlayHintsHover.ts │ │ │ │ │ └── inlayHintsLocations.ts │ │ │ │ ├── inlineCompletions/ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ ├── commandIds.ts │ │ │ │ │ │ │ ├── commands.ts │ │ │ │ │ │ │ ├── inlineCompletionContextKeys.ts │ │ │ │ │ │ │ └── inlineCompletionsController.ts │ │ │ │ │ │ ├── hintsWidget/ │ │ │ │ │ │ │ ├── hoverParticipant.ts │ │ │ │ │ │ │ ├── inlineCompletionsHintsWidget.css │ │ │ │ │ │ │ └── inlineCompletionsHintsWidget.ts │ │ │ │ │ │ ├── inlineCompletions.contribution.ts │ │ │ │ │ │ ├── inlineCompletionsAccessibleView.ts │ │ │ │ │ │ ├── model/ │ │ │ │ │ │ │ ├── animation.ts │ │ │ │ │ │ │ ├── changeRecorder.ts │ │ │ │ │ │ │ ├── computeGhostText.ts │ │ │ │ │ │ │ ├── ghostText.ts │ │ │ │ │ │ │ ├── inlineCompletionsModel.ts │ │ │ │ │ │ │ ├── inlineCompletionsSource.ts │ │ │ │ │ │ │ ├── inlineEdit.ts │ │ │ │ │ │ │ ├── inlineEditsAdapter.ts │ │ │ │ │ │ │ ├── provideInlineCompletions.ts │ │ │ │ │ │ │ ├── singleTextEditHelpers.ts │ │ │ │ │ │ │ └── suggestWidgetAdapter.ts │ │ │ │ │ │ ├── structuredLogger.ts │ │ │ │ │ │ ├── utils.ts │ │ │ │ │ │ └── view/ │ │ │ │ │ │ ├── ghostText/ │ │ │ │ │ │ │ ├── ghostTextView.css │ │ │ │ │ │ │ └── ghostTextView.ts │ │ │ │ │ │ ├── inlineCompletionsView.ts │ │ │ │ │ │ └── inlineEdits/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── gutterIndicatorMenu.ts │ │ │ │ │ │ │ ├── gutterIndicatorView.ts │ │ │ │ │ │ │ └── indicatorView.ts │ │ │ │ │ │ ├── inlineEditWithChanges.ts │ │ │ │ │ │ ├── inlineEditsModel.ts │ │ │ │ │ │ ├── inlineEditsView.ts │ │ │ │ │ │ ├── inlineEditsViewInterface.ts │ │ │ │ │ │ ├── inlineEditsViewProducer.ts │ │ │ │ │ │ ├── inlineEditsViews/ │ │ │ │ │ │ │ ├── debugVisualization.ts │ │ │ │ │ │ │ ├── inlineEditsCollapsedView.ts │ │ │ │ │ │ │ ├── inlineEditsDeletionView.ts │ │ │ │ │ │ │ ├── inlineEditsInsertionView.ts │ │ │ │ │ │ │ ├── inlineEditsLineReplacementView.ts │ │ │ │ │ │ │ ├── inlineEditsSideBySideView.ts │ │ │ │ │ │ │ ├── inlineEditsWordInsertView.ts │ │ │ │ │ │ │ ├── inlineEditsWordReplacementView.ts │ │ │ │ │ │ │ └── originalEditorInlineDiffView.ts │ │ │ │ │ │ ├── theme.ts │ │ │ │ │ │ ├── utils/ │ │ │ │ │ │ │ └── utils.ts │ │ │ │ │ │ └── view.css │ │ │ │ │ └── test/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── inlineCompletionsModel.test.ts │ │ │ │ │ ├── inlineCompletionsProvider.test.ts │ │ │ │ │ ├── suggestWidgetModel.test.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── inlineProgress/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── inlineProgress.ts │ │ │ │ │ └── inlineProgressWidget.css │ │ │ │ ├── insertFinalNewLine/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── insertFinalNewLine.ts │ │ │ │ │ └── insertFinalNewLineCommand.ts │ │ │ │ ├── lineSelection/ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ └── lineSelection.ts │ │ │ │ │ └── test/ │ │ │ │ │ └── browser/ │ │ │ │ │ └── lineSelection.test.ts │ │ │ │ ├── linesOperations/ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ ├── copyLinesCommand.ts │ │ │ │ │ │ ├── linesOperations.ts │ │ │ │ │ │ ├── moveLinesCommand.ts │ │ │ │ │ │ └── sortLinesCommand.ts │ │ │ │ │ └── test/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── copyLinesCommand.test.ts │ │ │ │ │ ├── linesOperations.test.ts │ │ │ │ │ ├── moveLinesCommand.test.ts │ │ │ │ │ └── sortLinesCommand.test.ts │ │ │ │ ├── linkedEditing/ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ ├── linkedEditing.css │ │ │ │ │ │ └── linkedEditing.ts │ │ │ │ │ └── test/ │ │ │ │ │ └── browser/ │ │ │ │ │ └── linkedEditing.test.ts │ │ │ │ ├── links/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── getLinks.ts │ │ │ │ │ ├── links.css │ │ │ │ │ └── links.ts │ │ │ │ ├── longLinesHelper/ │ │ │ │ │ └── browser/ │ │ │ │ │ └── longLinesHelper.ts │ │ │ │ ├── message/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── messageController.css │ │ │ │ │ └── messageController.ts │ │ │ │ ├── multicursor/ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ └── multicursor.ts │ │ │ │ │ └── test/ │ │ │ │ │ └── browser/ │ │ │ │ │ └── multicursor.test.ts │ │ │ │ ├── parameterHints/ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ ├── parameterHints.css │ │ │ │ │ │ ├── parameterHints.ts │ │ │ │ │ │ ├── parameterHintsModel.ts │ │ │ │ │ │ ├── parameterHintsWidget.ts │ │ │ │ │ │ └── provideSignatureHelp.ts │ │ │ │ │ └── test/ │ │ │ │ │ └── browser/ │ │ │ │ │ └── parameterHintsModel.test.ts │ │ │ │ ├── peekView/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── media/ │ │ │ │ │ │ └── peekViewWidget.css │ │ │ │ │ └── peekView.ts │ │ │ │ ├── placeholderText/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── placeholderText.contribution.ts │ │ │ │ │ ├── placeholderText.css │ │ │ │ │ └── placeholderTextContribution.ts │ │ │ │ ├── quickAccess/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── commandsQuickAccess.ts │ │ │ │ │ ├── editorNavigationQuickAccess.ts │ │ │ │ │ ├── gotoLineQuickAccess.ts │ │ │ │ │ └── gotoSymbolQuickAccess.ts │ │ │ │ ├── readOnlyMessage/ │ │ │ │ │ └── browser/ │ │ │ │ │ └── contribution.ts │ │ │ │ ├── rename/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── rename.ts │ │ │ │ │ ├── renameWidget.css │ │ │ │ │ └── renameWidget.ts │ │ │ │ ├── sectionHeaders/ │ │ │ │ │ └── browser/ │ │ │ │ │ └── sectionHeaders.ts │ │ │ │ ├── semanticTokens/ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ ├── documentSemanticTokens.ts │ │ │ │ │ │ └── viewportSemanticTokens.ts │ │ │ │ │ ├── common/ │ │ │ │ │ │ ├── getSemanticTokens.ts │ │ │ │ │ │ └── semanticTokensConfig.ts │ │ │ │ │ └── test/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── documentSemanticTokens.test.ts │ │ │ │ │ └── getSemanticTokens.test.ts │ │ │ │ ├── smartSelect/ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ ├── bracketSelections.ts │ │ │ │ │ │ ├── smartSelect.ts │ │ │ │ │ │ └── wordSelections.ts │ │ │ │ │ └── test/ │ │ │ │ │ └── browser/ │ │ │ │ │ └── smartSelect.test.ts │ │ │ │ ├── snippet/ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ ├── snippet.md │ │ │ │ │ │ ├── snippetController2.ts │ │ │ │ │ │ ├── snippetParser.ts │ │ │ │ │ │ ├── snippetSession.css │ │ │ │ │ │ ├── snippetSession.ts │ │ │ │ │ │ └── snippetVariables.ts │ │ │ │ │ └── test/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── snippetController2.old.test.ts │ │ │ │ │ ├── snippetController2.test.ts │ │ │ │ │ ├── snippetParser.test.ts │ │ │ │ │ ├── snippetSession.test.ts │ │ │ │ │ └── snippetVariables.test.ts │ │ │ │ ├── stickyScroll/ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ ├── stickyScroll.css │ │ │ │ │ │ ├── stickyScrollActions.ts │ │ │ │ │ │ ├── stickyScrollContribution.ts │ │ │ │ │ │ ├── stickyScrollController.ts │ │ │ │ │ │ ├── stickyScrollElement.ts │ │ │ │ │ │ ├── stickyScrollModelProvider.ts │ │ │ │ │ │ ├── stickyScrollProvider.ts │ │ │ │ │ │ └── stickyScrollWidget.ts │ │ │ │ │ └── test/ │ │ │ │ │ └── browser/ │ │ │ │ │ └── stickyScroll.test.ts │ │ │ │ ├── suggest/ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ ├── completionModel.ts │ │ │ │ │ │ ├── media/ │ │ │ │ │ │ │ └── suggest.css │ │ │ │ │ │ ├── suggest.ts │ │ │ │ │ │ ├── suggestAlternatives.ts │ │ │ │ │ │ ├── suggestCommitCharacters.ts │ │ │ │ │ │ ├── suggestController.ts │ │ │ │ │ │ ├── suggestInlineCompletions.ts │ │ │ │ │ │ ├── suggestMemory.ts │ │ │ │ │ │ ├── suggestModel.ts │ │ │ │ │ │ ├── suggestOvertypingCapturer.ts │ │ │ │ │ │ ├── suggestWidget.ts │ │ │ │ │ │ ├── suggestWidgetDetails.ts │ │ │ │ │ │ ├── suggestWidgetRenderer.ts │ │ │ │ │ │ ├── suggestWidgetStatus.ts │ │ │ │ │ │ ├── wordContextKey.ts │ │ │ │ │ │ └── wordDistance.ts │ │ │ │ │ └── test/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── completionModel.test.ts │ │ │ │ │ ├── suggest.test.ts │ │ │ │ │ ├── suggestController.test.ts │ │ │ │ │ ├── suggestInlineCompletions.test.ts │ │ │ │ │ ├── suggestMemory.test.ts │ │ │ │ │ ├── suggestModel.test.ts │ │ │ │ │ └── wordDistance.test.ts │ │ │ │ ├── symbolIcons/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── symbolIcons.css │ │ │ │ │ └── symbolIcons.ts │ │ │ │ ├── toggleTabFocusMode/ │ │ │ │ │ └── browser/ │ │ │ │ │ └── toggleTabFocusMode.ts │ │ │ │ ├── tokenization/ │ │ │ │ │ └── browser/ │ │ │ │ │ └── tokenization.ts │ │ │ │ ├── unicodeHighlighter/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── bannerController.css │ │ │ │ │ ├── bannerController.ts │ │ │ │ │ ├── unicodeHighlighter.css │ │ │ │ │ └── unicodeHighlighter.ts │ │ │ │ ├── unusualLineTerminators/ │ │ │ │ │ └── browser/ │ │ │ │ │ └── unusualLineTerminators.ts │ │ │ │ ├── wordHighlighter/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── highlightDecorations.css │ │ │ │ │ ├── highlightDecorations.ts │ │ │ │ │ ├── textualHighlightProvider.ts │ │ │ │ │ └── wordHighlighter.ts │ │ │ │ ├── wordOperations/ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ └── wordOperations.ts │ │ │ │ │ └── test/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── wordOperations.test.ts │ │ │ │ │ └── wordTestUtils.ts │ │ │ │ ├── wordPartOperations/ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ └── wordPartOperations.ts │ │ │ │ │ └── test/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── utils.ts │ │ │ │ │ └── wordPartOperations.test.ts │ │ │ │ └── zoneWidget/ │ │ │ │ └── browser/ │ │ │ │ ├── zoneWidget.css │ │ │ │ └── zoneWidget.ts │ │ │ ├── editor.all.ts │ │ │ ├── editor.api.ts │ │ │ ├── editor.main.ts │ │ │ ├── editor.worker.start.ts │ │ │ ├── standalone/ │ │ │ │ ├── browser/ │ │ │ │ │ ├── colorizer.ts │ │ │ │ │ ├── iPadShowKeyboard/ │ │ │ │ │ │ ├── iPadShowKeyboard.css │ │ │ │ │ │ └── iPadShowKeyboard.ts │ │ │ │ │ ├── inspectTokens/ │ │ │ │ │ │ ├── inspectTokens.css │ │ │ │ │ │ └── inspectTokens.ts │ │ │ │ │ ├── quickAccess/ │ │ │ │ │ │ ├── standaloneCommandsQuickAccess.ts │ │ │ │ │ │ ├── standaloneGotoLineQuickAccess.ts │ │ │ │ │ │ ├── standaloneGotoSymbolQuickAccess.ts │ │ │ │ │ │ └── standaloneHelpQuickAccess.ts │ │ │ │ │ ├── quickInput/ │ │ │ │ │ │ ├── standaloneQuickInput.css │ │ │ │ │ │ └── standaloneQuickInputService.ts │ │ │ │ │ ├── referenceSearch/ │ │ │ │ │ │ └── standaloneReferenceSearch.ts │ │ │ │ │ ├── standalone-tokens.css │ │ │ │ │ ├── standaloneCodeEditor.ts │ │ │ │ │ ├── standaloneCodeEditorService.ts │ │ │ │ │ ├── standaloneEditor.ts │ │ │ │ │ ├── standaloneLanguages.ts │ │ │ │ │ ├── standaloneLayoutService.ts │ │ │ │ │ ├── standaloneServices.ts │ │ │ │ │ ├── standaloneThemeService.ts │ │ │ │ │ ├── standaloneTreeSitterService.ts │ │ │ │ │ ├── standaloneWebWorker.ts │ │ │ │ │ └── toggleHighContrast/ │ │ │ │ │ └── toggleHighContrast.ts │ │ │ │ ├── common/ │ │ │ │ │ ├── monarch/ │ │ │ │ │ │ ├── monarchCommon.ts │ │ │ │ │ │ ├── monarchCompile.ts │ │ │ │ │ │ ├── monarchLexer.ts │ │ │ │ │ │ └── monarchTypes.ts │ │ │ │ │ ├── standaloneTheme.ts │ │ │ │ │ └── themes.ts │ │ │ │ └── test/ │ │ │ │ └── browser/ │ │ │ │ ├── monarch.test.ts │ │ │ │ ├── standaloneLanguages.test.ts │ │ │ │ └── standaloneServices.test.ts │ │ │ └── test/ │ │ │ ├── browser/ │ │ │ │ ├── commands/ │ │ │ │ │ ├── shiftCommand.test.ts │ │ │ │ │ ├── sideEditing.test.ts │ │ │ │ │ └── trimTrailingWhitespaceCommand.test.ts │ │ │ │ ├── config/ │ │ │ │ │ ├── editorConfiguration.test.ts │ │ │ │ │ ├── editorLayoutProvider.test.ts │ │ │ │ │ └── testConfiguration.ts │ │ │ │ ├── controller/ │ │ │ │ │ ├── cursor.integrationTest.ts │ │ │ │ │ ├── cursor.test.ts │ │ │ │ │ ├── cursorMoveCommand.test.ts │ │ │ │ │ ├── imeRecordedTypes.ts │ │ │ │ │ ├── imeRecorder.html │ │ │ │ │ ├── imeRecorder.ts │ │ │ │ │ ├── imeTester.html │ │ │ │ │ ├── imeTester.ts │ │ │ │ │ ├── textAreaInput.test.ts │ │ │ │ │ └── textAreaState.test.ts │ │ │ │ ├── diff/ │ │ │ │ │ └── testDiffProviderFactoryService.ts │ │ │ │ ├── editorTestServices.ts │ │ │ │ ├── gpu/ │ │ │ │ │ ├── atlas/ │ │ │ │ │ │ ├── testUtil.ts │ │ │ │ │ │ ├── textureAtlas.test.ts │ │ │ │ │ │ └── textureAtlasAllocator.test.ts │ │ │ │ │ ├── bufferDirtyTracker.test.ts │ │ │ │ │ ├── decorationCssRulerExtractor.test.ts │ │ │ │ │ └── objectCollectionBuffer.test.ts │ │ │ │ ├── services/ │ │ │ │ │ ├── decorationRenderOptions.test.ts │ │ │ │ │ ├── openerService.test.ts │ │ │ │ │ └── treeSitterParserService.test.ts │ │ │ │ ├── testCodeEditor.ts │ │ │ │ ├── testCommand.ts │ │ │ │ ├── view/ │ │ │ │ │ ├── minimapCharRenderer.test.ts │ │ │ │ │ └── viewLayer.test.ts │ │ │ │ ├── viewModel/ │ │ │ │ │ ├── modelLineProjection.test.ts │ │ │ │ │ ├── testViewModel.ts │ │ │ │ │ ├── viewModelDecorations.test.ts │ │ │ │ │ └── viewModelImpl.test.ts │ │ │ │ └── widget/ │ │ │ │ ├── codeEditorWidget.test.ts │ │ │ │ ├── diffEditorWidget.test.ts │ │ │ │ └── observableCodeEditor.test.ts │ │ │ ├── common/ │ │ │ │ ├── codecs/ │ │ │ │ │ ├── linesDecoder.test.ts │ │ │ │ │ ├── markdownDecoder.test.ts │ │ │ │ │ └── simpleDecoder.test.ts │ │ │ │ ├── controller/ │ │ │ │ │ └── cursorAtomicMoveOperations.test.ts │ │ │ │ ├── core/ │ │ │ │ │ ├── characterClassifier.test.ts │ │ │ │ │ ├── cursorColumns.test.ts │ │ │ │ │ ├── lineRange.test.ts │ │ │ │ │ ├── lineTokens.test.ts │ │ │ │ │ ├── positionOffsetTransformer.test.ts │ │ │ │ │ ├── random.ts │ │ │ │ │ ├── range.test.ts │ │ │ │ │ ├── stringBuilder.test.ts │ │ │ │ │ ├── testLineToken.ts │ │ │ │ │ └── textEdit.test.ts │ │ │ │ ├── diff/ │ │ │ │ │ └── diffComputer.test.ts │ │ │ │ ├── model/ │ │ │ │ │ ├── bracketPairColorizer/ │ │ │ │ │ │ ├── beforeEditPositionMapper.test.ts │ │ │ │ │ │ ├── brackets.test.ts │ │ │ │ │ │ ├── combineTextEditInfos.test.ts │ │ │ │ │ │ ├── concat23Trees.test.ts │ │ │ │ │ │ ├── getBracketPairsInRange.test.ts │ │ │ │ │ │ ├── length.test.ts │ │ │ │ │ │ ├── smallImmutableSet.test.ts │ │ │ │ │ │ └── tokenizer.test.ts │ │ │ │ │ ├── editStack.test.ts │ │ │ │ │ ├── editableTextModel.test.ts │ │ │ │ │ ├── editableTextModelAuto.test.ts │ │ │ │ │ ├── editableTextModelTestUtils.ts │ │ │ │ │ ├── intervalTree.test.ts │ │ │ │ │ ├── linesTextBuffer/ │ │ │ │ │ │ ├── linesTextBuffer.test.ts │ │ │ │ │ │ └── linesTextBufferBuilder.test.ts │ │ │ │ │ ├── model.line.test.ts │ │ │ │ │ ├── model.modes.test.ts │ │ │ │ │ ├── model.test.ts │ │ │ │ │ ├── modelDecorations.test.ts │ │ │ │ │ ├── modelEditOperation.test.ts │ │ │ │ │ ├── modelInjectedText.test.ts │ │ │ │ │ ├── pieceTreeTextBuffer/ │ │ │ │ │ │ └── pieceTreeTextBuffer.test.ts │ │ │ │ │ ├── textChange.test.ts │ │ │ │ │ ├── textModel.test.ts │ │ │ │ │ ├── textModelSearch.test.ts │ │ │ │ │ ├── textModelTokens.test.ts │ │ │ │ │ ├── textModelWithTokens.test.ts │ │ │ │ │ ├── tokenStore.test.ts │ │ │ │ │ └── tokensStore.test.ts │ │ │ │ ├── modes/ │ │ │ │ │ ├── languageConfiguration.test.ts │ │ │ │ │ ├── languageSelector.test.ts │ │ │ │ │ ├── linkComputer.test.ts │ │ │ │ │ ├── supports/ │ │ │ │ │ │ ├── autoClosingPairsRules.ts │ │ │ │ │ │ ├── bracketRules.ts │ │ │ │ │ │ ├── characterPair.test.ts │ │ │ │ │ │ ├── electricCharacter.test.ts │ │ │ │ │ │ ├── indentationRules.ts │ │ │ │ │ │ ├── onEnter.test.ts │ │ │ │ │ │ ├── onEnterRules.ts │ │ │ │ │ │ ├── richEditBrackets.test.ts │ │ │ │ │ │ └── tokenization.test.ts │ │ │ │ │ ├── testLanguageConfigurationService.ts │ │ │ │ │ └── textToHtmlTokenizer.test.ts │ │ │ │ ├── modesTestUtils.ts │ │ │ │ ├── services/ │ │ │ │ │ ├── editorWebWorker.test.ts │ │ │ │ │ ├── findSectionHeaders.test.ts │ │ │ │ │ ├── languageService.test.ts │ │ │ │ │ ├── languagesAssociations.test.ts │ │ │ │ │ ├── languagesRegistry.test.ts │ │ │ │ │ ├── modelService.test.ts │ │ │ │ │ ├── semanticTokensDto.test.ts │ │ │ │ │ ├── semanticTokensProviderStyling.test.ts │ │ │ │ │ ├── testEditorWorkerService.ts │ │ │ │ │ ├── testTextResourcePropertiesService.ts │ │ │ │ │ ├── testTreeSitterService.ts │ │ │ │ │ ├── textResourceConfigurationService.test.ts │ │ │ │ │ └── unicodeTextModelHighlighter.test.ts │ │ │ │ ├── testTextModel.ts │ │ │ │ ├── utils/ │ │ │ │ │ └── testDecoder.ts │ │ │ │ ├── view/ │ │ │ │ │ └── overviewZoneManager.test.ts │ │ │ │ ├── viewLayout/ │ │ │ │ │ ├── lineDecorations.test.ts │ │ │ │ │ ├── linesLayout.test.ts │ │ │ │ │ └── viewLineRenderer.test.ts │ │ │ │ └── viewModel/ │ │ │ │ ├── glyphLanesModel.test.ts │ │ │ │ ├── lineBreakData.test.ts │ │ │ │ ├── monospaceLineBreaksComputer.test.ts │ │ │ │ └── prefixSumComputer.test.ts │ │ │ └── node/ │ │ │ └── diffing/ │ │ │ ├── README.md │ │ │ ├── defaultLinesDiffComputer.test.ts │ │ │ ├── fixtures/ │ │ │ │ ├── bracket-aligning/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── class-replacement/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ ├── advanced.human.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── deletion/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── difficult-move/ │ │ │ │ │ ├── 1.js │ │ │ │ │ ├── 2.js │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── equals/ │ │ │ │ │ ├── 1.txt │ │ │ │ │ ├── 2.txt │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── false-positive-move/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── fuzzy-matching/ │ │ │ │ │ ├── 1.txt │ │ │ │ │ ├── 2.txt │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── import-shifting/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── indentation/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── intra-block-align/ │ │ │ │ │ ├── 1.txt │ │ │ │ │ ├── 2.txt │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── invalid-diff-bug/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── invalid-diff-trimws/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── invalid-ranges/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── issue-131091/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── issue-185779/ │ │ │ │ │ ├── 1.txt │ │ │ │ │ ├── 2.txt │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── issue-201713/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── issue-202147-trimws/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── issue-204948/ │ │ │ │ │ ├── 1.txt │ │ │ │ │ ├── 2.txt │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── issue-214049/ │ │ │ │ │ ├── 1.txt │ │ │ │ │ ├── 2.txt │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── json-brackets/ │ │ │ │ │ ├── 1.json │ │ │ │ │ ├── 2.json │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── just-whitespace/ │ │ │ │ │ ├── 1.js │ │ │ │ │ ├── 2.js │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── method-splitting/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── minimal-diff-character/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── move-1/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── noise-1/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── noise-2/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── noisy-move1/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── penalize-fragmentation/ │ │ │ │ │ ├── 1.txt │ │ │ │ │ ├── 2.txt │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ ├── advanced.human.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── random-match-1/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── random-match-2/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── random-match-3/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── shifting-parameters/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── shifting-twice/ │ │ │ │ │ ├── 1.txt │ │ │ │ │ ├── 2.txt │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── sorted-offsets/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── subword/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── trivial/ │ │ │ │ │ ├── 1.txt │ │ │ │ │ ├── 2.txt │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── ts-advanced-bug/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── ts-class/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ ├── advanced.human.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── ts-comments/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── ts-confusing/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── ts-confusing-2/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── ts-diff-word-split/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── ts-example1/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── ts-example2-ts/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── ts-fragmented-eager-diffing/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── ts-fragmented-eager-diffing2/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── ts-fragmented-eager-diffing3/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── ts-import-ws-affinity/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── ts-insert/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── ts-methods/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── ts-shift-to-ws/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── ts-shifting/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── ts-strings/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── ts-too-much-minimization/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── ts-unfragmented-diffing/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── ts-unit-test/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ ├── word-shared-letters/ │ │ │ │ │ ├── 1.tst │ │ │ │ │ ├── 2.tst │ │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ │ └── legacy.expected.diff.json │ │ │ │ └── ws-alignment/ │ │ │ │ ├── 1.tsx │ │ │ │ ├── 2.tsx │ │ │ │ ├── advanced.expected.diff.json │ │ │ │ └── legacy.expected.diff.json │ │ │ └── fixtures.test.ts │ │ ├── loader.js │ │ ├── monaco.d.ts │ │ ├── nls.messages.ts │ │ ├── nls.ts │ │ ├── platform/ │ │ │ ├── accessibility/ │ │ │ │ ├── browser/ │ │ │ │ │ ├── accessibilityService.ts │ │ │ │ │ ├── accessibleView.ts │ │ │ │ │ └── accessibleViewRegistry.ts │ │ │ │ ├── common/ │ │ │ │ │ └── accessibility.ts │ │ │ │ └── test/ │ │ │ │ └── common/ │ │ │ │ └── testAccessibilityService.ts │ │ │ ├── accessibilitySignal/ │ │ │ │ └── browser/ │ │ │ │ ├── accessibilitySignalService.ts │ │ │ │ └── progressAccessibilitySignalScheduler.ts │ │ │ ├── action/ │ │ │ │ └── common/ │ │ │ │ ├── action.ts │ │ │ │ └── actionCommonCategories.ts │ │ │ ├── actionWidget/ │ │ │ │ ├── browser/ │ │ │ │ │ ├── actionList.ts │ │ │ │ │ ├── actionWidget.css │ │ │ │ │ └── actionWidget.ts │ │ │ │ └── common/ │ │ │ │ └── actionWidget.ts │ │ │ ├── actions/ │ │ │ │ ├── browser/ │ │ │ │ │ ├── actionViewItemService.ts │ │ │ │ │ ├── buttonbar.ts │ │ │ │ │ ├── dropdownActionViewItemWithKeybinding.ts │ │ │ │ │ ├── dropdownWithPrimaryActionViewItem.ts │ │ │ │ │ ├── floatingMenu.ts │ │ │ │ │ ├── menuEntryActionViewItem.css │ │ │ │ │ ├── menuEntryActionViewItem.ts │ │ │ │ │ └── toolbar.ts │ │ │ │ ├── common/ │ │ │ │ │ ├── actions.contribution.ts │ │ │ │ │ ├── actions.ts │ │ │ │ │ ├── menuResetAction.ts │ │ │ │ │ └── menuService.ts │ │ │ │ └── test/ │ │ │ │ └── common/ │ │ │ │ └── menuService.test.ts │ │ │ ├── assignment/ │ │ │ │ └── common/ │ │ │ │ ├── assignment.ts │ │ │ │ └── assignmentService.ts │ │ │ ├── auxiliaryWindow/ │ │ │ │ └── electron-main/ │ │ │ │ ├── auxiliaryWindow.ts │ │ │ │ ├── auxiliaryWindows.ts │ │ │ │ └── auxiliaryWindowsMainService.ts │ │ │ ├── backup/ │ │ │ │ ├── common/ │ │ │ │ │ └── backup.ts │ │ │ │ ├── electron-main/ │ │ │ │ │ ├── backup.ts │ │ │ │ │ └── backupMainService.ts │ │ │ │ ├── node/ │ │ │ │ │ └── backup.ts │ │ │ │ └── test/ │ │ │ │ └── electron-main/ │ │ │ │ └── backupMainService.test.ts │ │ │ ├── checksum/ │ │ │ │ ├── common/ │ │ │ │ │ └── checksumService.ts │ │ │ │ ├── node/ │ │ │ │ │ └── checksumService.ts │ │ │ │ └── test/ │ │ │ │ └── node/ │ │ │ │ ├── checksumService.test.ts │ │ │ │ └── fixtures/ │ │ │ │ └── lorem.txt │ │ │ ├── clipboard/ │ │ │ │ ├── browser/ │ │ │ │ │ └── clipboardService.ts │ │ │ │ ├── common/ │ │ │ │ │ └── clipboardService.ts │ │ │ │ └── test/ │ │ │ │ └── common/ │ │ │ │ └── testClipboardService.ts │ │ │ ├── commands/ │ │ │ │ ├── common/ │ │ │ │ │ └── commands.ts │ │ │ │ └── test/ │ │ │ │ └── common/ │ │ │ │ ├── commands.test.ts │ │ │ │ └── nullCommandService.ts │ │ │ ├── configuration/ │ │ │ │ ├── common/ │ │ │ │ │ ├── configuration.ts │ │ │ │ │ ├── configurationModels.ts │ │ │ │ │ ├── configurationRegistry.ts │ │ │ │ │ ├── configurationService.ts │ │ │ │ │ └── configurations.ts │ │ │ │ └── test/ │ │ │ │ └── common/ │ │ │ │ ├── configuration.test.ts │ │ │ │ ├── configurationModels.test.ts │ │ │ │ ├── configurationRegistry.test.ts │ │ │ │ ├── configurationService.test.ts │ │ │ │ ├── configurations.test.ts │ │ │ │ ├── policyConfiguration.test.ts │ │ │ │ └── testConfigurationService.ts │ │ │ ├── contextkey/ │ │ │ │ ├── browser/ │ │ │ │ │ └── contextKeyService.ts │ │ │ │ ├── common/ │ │ │ │ │ ├── contextkey.ts │ │ │ │ │ ├── contextkeys.ts │ │ │ │ │ └── scanner.ts │ │ │ │ └── test/ │ │ │ │ ├── browser/ │ │ │ │ │ └── contextkey.test.ts │ │ │ │ └── common/ │ │ │ │ ├── contextkey.test.ts │ │ │ │ ├── parser.test.ts │ │ │ │ └── scanner.test.ts │ │ │ ├── contextview/ │ │ │ │ └── browser/ │ │ │ │ ├── contextMenuHandler.ts │ │ │ │ ├── contextMenuService.ts │ │ │ │ ├── contextView.ts │ │ │ │ └── contextViewService.ts │ │ │ ├── cssDev/ │ │ │ │ └── node/ │ │ │ │ └── cssDevService.ts │ │ │ ├── debug/ │ │ │ │ ├── common/ │ │ │ │ │ ├── extensionHostDebug.ts │ │ │ │ │ └── extensionHostDebugIpc.ts │ │ │ │ └── electron-main/ │ │ │ │ └── extensionHostDebugIpc.ts │ │ │ ├── diagnostics/ │ │ │ │ ├── common/ │ │ │ │ │ └── diagnostics.ts │ │ │ │ ├── electron-main/ │ │ │ │ │ └── diagnosticsMainService.ts │ │ │ │ ├── electron-sandbox/ │ │ │ │ │ └── diagnosticsService.ts │ │ │ │ └── node/ │ │ │ │ └── diagnosticsService.ts │ │ │ ├── dialogs/ │ │ │ │ ├── browser/ │ │ │ │ │ └── dialog.ts │ │ │ │ ├── common/ │ │ │ │ │ └── dialogs.ts │ │ │ │ ├── electron-main/ │ │ │ │ │ └── dialogMainService.ts │ │ │ │ └── test/ │ │ │ │ └── common/ │ │ │ │ ├── dialog.test.ts │ │ │ │ └── testDialogService.ts │ │ │ ├── dnd/ │ │ │ │ └── browser/ │ │ │ │ └── dnd.ts │ │ │ ├── download/ │ │ │ │ └── common/ │ │ │ │ ├── download.ts │ │ │ │ ├── downloadIpc.ts │ │ │ │ └── downloadService.ts │ │ │ ├── editor/ │ │ │ │ └── common/ │ │ │ │ └── editor.ts │ │ │ ├── encryption/ │ │ │ │ ├── common/ │ │ │ │ │ └── encryptionService.ts │ │ │ │ └── electron-main/ │ │ │ │ └── encryptionMainService.ts │ │ │ ├── environment/ │ │ │ │ ├── common/ │ │ │ │ │ ├── argv.ts │ │ │ │ │ ├── environment.ts │ │ │ │ │ └── environmentService.ts │ │ │ │ ├── electron-main/ │ │ │ │ │ └── environmentMainService.ts │ │ │ │ ├── node/ │ │ │ │ │ ├── argv.ts │ │ │ │ │ ├── argvHelper.ts │ │ │ │ │ ├── environmentService.ts │ │ │ │ │ ├── stdin.ts │ │ │ │ │ ├── userDataPath.ts │ │ │ │ │ └── wait.ts │ │ │ │ └── test/ │ │ │ │ ├── electron-main/ │ │ │ │ │ └── environmentMainService.test.ts │ │ │ │ └── node/ │ │ │ │ ├── argv.test.ts │ │ │ │ ├── environmentService.test.ts │ │ │ │ ├── nativeModules.integrationTest.ts │ │ │ │ └── userDataPath.test.ts │ │ │ ├── extensionManagement/ │ │ │ │ ├── common/ │ │ │ │ │ ├── abstractExtensionManagementService.ts │ │ │ │ │ ├── allowedExtensionsService.ts │ │ │ │ │ ├── configRemotes.ts │ │ │ │ │ ├── extensionEnablementService.ts │ │ │ │ │ ├── extensionGalleryManifest.ts │ │ │ │ │ ├── extensionGalleryManifestService.ts │ │ │ │ │ ├── extensionGalleryManifestServiceIpc.ts │ │ │ │ │ ├── extensionGalleryService.ts │ │ │ │ │ ├── extensionManagement.ts │ │ │ │ │ ├── extensionManagementCLI.ts │ │ │ │ │ ├── extensionManagementIpc.ts │ │ │ │ │ ├── extensionManagementUtil.ts │ │ │ │ │ ├── extensionNls.ts │ │ │ │ │ ├── extensionStorage.ts │ │ │ │ │ ├── extensionTipsService.ts │ │ │ │ │ ├── extensionsProfileScannerService.ts │ │ │ │ │ ├── extensionsScannerService.ts │ │ │ │ │ ├── implicitActivationEvents.ts │ │ │ │ │ └── unsupportedExtensionsMigration.ts │ │ │ │ ├── electron-sandbox/ │ │ │ │ │ └── extensionsProfileScannerService.ts │ │ │ │ ├── node/ │ │ │ │ │ ├── extensionDownloader.ts │ │ │ │ │ ├── extensionLifecycle.ts │ │ │ │ │ ├── extensionManagementService.ts │ │ │ │ │ ├── extensionManagementUtil.ts │ │ │ │ │ ├── extensionSignatureVerificationService.ts │ │ │ │ │ ├── extensionTipsService.ts │ │ │ │ │ ├── extensionsManifestCache.ts │ │ │ │ │ ├── extensionsProfileScannerService.ts │ │ │ │ │ ├── extensionsScannerService.ts │ │ │ │ │ └── extensionsWatcher.ts │ │ │ │ └── test/ │ │ │ │ ├── common/ │ │ │ │ │ ├── allowedExtensionsService.test.ts │ │ │ │ │ ├── configRemotes.test.ts │ │
Showing preview only (670K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (7323 symbols across 782 files)
FILE: .eslint-plugin-local/code-amd-node-module.ts
method create (line 19) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-declare-service-brand.ts
method create (line 15) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-ensure-no-disposables-leak-in-test.ts
method create (line 20) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-import-patterns.ts
constant REPO_ROOT (line 12) | const REPO_ROOT = path.normalize(path.join(__dirname, '../'));
type ConditionalPattern (line 14) | interface ConditionalPattern {
type RawImportPatternsConfig (line 19) | interface RawImportPatternsConfig {
type LayerAllowRule (line 26) | interface LayerAllowRule {
type RawOption (line 31) | type RawOption = RawImportPatternsConfig | LayerAllowRule;
function isLayerAllowRule (line 33) | function isLayerAllowRule(option: RawOption): option is LayerAllowRule {
type ImportPatternsConfig (line 37) | interface ImportPatternsConfig {
method create (line 57) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
method _processOptions (line 78) | private _processOptions(options: RawOption[]): ImportPatternsConfig[] {
method _checkImport (line 227) | private _checkImport(context: eslint.Rule.RuleContext, config: ImportPat...
function getRelativeFilename (line 284) | function getRelativeFilename(context: eslint.Rule.RuleContext): string {
FILE: .eslint-plugin-local/code-layering.ts
type Config (line 10) | type Config = {
method create (line 37) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-limited-top-functions.ts
method create (line 30) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-must-use-result.ts
constant VALID_USES (line 9) | const VALID_USES = new Set<TSESTree.AST_NODE_TYPES | undefined>([
method create (line 19) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-must-use-super-dispose.ts
method create (line 10) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-no-dangerous-type-assertions.ts
method create (line 11) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-no-global-document-listener.ts
method create (line 10) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-no-native-private.ts
method create (line 17) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-no-nls-in-standalone-editor.ts
method create (line 19) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-no-potentially-unsafe-disposables.ts
method create (line 15) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-no-runtime-import.ts
method create (line 32) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-no-standalone-editor.ts
method create (line 22) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-no-static-self-ref.ts
method create (line 14) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-no-test-async-suite.ts
function isCallExpression (line 9) | function isCallExpression(node: TSESTree.Node): node is TSESTree.CallExp...
function isFunctionExpression (line 13) | function isFunctionExpression(node: TSESTree.Node): node is TSESTree.Fun...
method create (line 19) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-no-test-only.ts
method create (line 10) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-no-unexternalized-strings.ts
function isStringLiteral (line 9) | function isStringLiteral(node: TSESTree.Node | null | undefined): node i...
function isDoubleQuoted (line 13) | function isDoubleQuoted(node: TSESTree.StringLiteral): boolean {
method create (line 31) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-no-unused-expressions.ts
method create (line 55) | create(context: eslint.Rule.RuleContext) {
FILE: .eslint-plugin-local/code-parameter-properties-must-have-explicit-accessibility.ts
method create (line 16) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-translation-remind.ts
method create (line 23) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
method _checkImport (line 27) | private _checkImport(context: eslint.Rule.RuleContext, node: TSESTree.No...
FILE: .eslint-plugin-local/utils.ts
function createImportRuleListener (line 9) | function createImportRuleListener(validateImport: (node: TSESTree.Litera...
FILE: .eslint-plugin-local/vscode-dts-cancellation.ts
method create (line 18) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/vscode-dts-create-func.ts
method create (line 17) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/vscode-dts-event-naming.ts
method create (line 26) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
method getIdent (line 85) | private getIdent(def: TSESTree.Node | undefined): TSESTree.Identifier | ...
FILE: .eslint-plugin-local/vscode-dts-interface-naming.ts
method create (line 20) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/vscode-dts-literal-or-types.ts
method create (line 17) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/vscode-dts-provider-naming.ts
method create (line 20) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/vscode-dts-string-type-literals.ts
method create (line 19) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/vscode-dts-use-export.ts
method create (line 18) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/vscode-dts-use-thenable.ts
method create (line 17) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/vscode-dts-vscode-in-comments.ts
method create (line 18) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .github/scripts/issue_triage.py
function utc_iso_now (line 25) | def utc_iso_now() -> str:
function read_stamp (line 28) | def read_stamp() -> str:
function save_stamp (line 31) | def save_stamp():
function load_cache (line 35) | def load_cache() -> dict[int, str]:
function save_cache (line 38) | def save_cache(d: dict[int, str]):
function fetch_open_issues (line 42) | def fetch_open_issues(since_iso: str | None = None) -> list[dict]:
FILE: .vscode/extensions/vscode-selfhost-import-aid/src/extension.ts
function activate (line 10) | async function activate(context: vscode.ExtensionContext) {
FILE: .vscode/extensions/vscode-selfhost-test-provider/src/coverageProvider.ts
class PerTestCoverageTracker (line 18) | class PerTestCoverageTracker {
method constructor (line 21) | constructor(private readonly maps: SourceMapStore) { }
method add (line 23) | public add(coverage: IScriptCoverage, test?: vscode.TestItem) {
method report (line 41) | public async report(run: vscode.TestRun) {
class Script (line 46) | class Script {
method constructor (line 54) | constructor(
method add (line 62) | public add(coverage: IScriptCoverage, test?: vscode.TestItem) {
method report (line 71) | public async report(run: vscode.TestRun) {
class ScriptCoverageTracker (line 78) | class ScriptCoverageTracker {
method add (line 81) | public add(coverage: IScriptCoverage) {
method toDetails (line 87) | public *toDetails(
method report (line 130) | public report(
class V8CoverageFile (line 145) | class V8CoverageFile extends vscode.FileCoverage {
method constructor (line 148) | constructor(
method add (line 157) | public add(detail: vscode.StatementCoverage) {
method testDetails (line 165) | public testDetails(test: vscode.TestItem): vscode.FileCoverageDetail[] {
FILE: .vscode/extensions/vscode-selfhost-test-provider/src/debounce.ts
function debounce (line 9) | function debounce(duration: number, fn: () => void): (() => void) & { cl...
FILE: .vscode/extensions/vscode-selfhost-test-provider/src/extension.ts
constant TEST_FILE_PATTERN (line 25) | const TEST_FILE_PATTERN = 'src/vs/**/*.{test,integrationTest}.ts';
type FileChangeEvent (line 39) | type FileChangeEvent = { uri: vscode.Uri; removed: boolean };
function activate (line 41) | async function activate(context: vscode.ExtensionContext) {
function deactivate (line 278) | function deactivate() {
function getOrCreateFile (line 282) | function getOrCreateFile(
function gatherTestItems (line 305) | function gatherTestItems(collection: vscode.TestItemCollection) {
function startWatchingWorkspace (line 311) | async function startWatchingWorkspace(
function getPendingTestMap (line 341) | async function getPendingTestMap(ctrl: vscode.TestController, tests: Ite...
FILE: .vscode/extensions/vscode-selfhost-test-provider/src/failingDeepStrictEqualAssertFixer.ts
type Constants (line 25) | const enum Constants {
class FailingDeepStrictEqualAssertFixer (line 29) | class FailingDeepStrictEqualAssertFixer {
method constructor (line 32) | constructor() {
method dispose (line 76) | dispose() {
function detectFailingDeepStrictEqualAssertion (line 125) | function detectFailingDeepStrictEqualAssertion(
class StrictEqualAssertion (line 157) | class StrictEqualAssertion {
method fromNode (line 161) | public static fromNode(node: ts.Node): StrictEqualAssertion | undefined {
method atPosition (line 177) | public static atPosition(sf: ts.SourceFile, offset: number): StrictEqu...
method constructor (line 191) | constructor(private readonly expression: ts.CallExpression) { }
method expectedValue (line 194) | public get expectedValue(): ts.Expression | undefined {
method offsetStart (line 199) | public get offsetStart(): number {
function findNodeAt (line 204) | function findNodeAt(parent: ts.Node, offset: number): ts.Node {
function getAllTestStatusMessagesAt (line 213) | function getAllTestStatusMessagesAt(uri: Uri, lineNumber: number): TestM...
function getTestResultsWithUri (line 237) | function getTestResultsWithUri(testRun: TestRunResult, uri: Uri): TestRe...
FILE: .vscode/extensions/vscode-selfhost-test-provider/src/failureTracker.ts
type IGitState (line 12) | interface IGitState {
type ITrackedRemediation (line 18) | interface ITrackedRemediation {
constant MAX_FAILURES (line 24) | const MAX_FAILURES = 10;
class FailureTracker (line 26) | class FailureTracker {
method constructor (line 36) | constructor(storageLocation: string, private readonly rootDir: string) {
method append (line 95) | private async append(log: ITrackedRemediation) {
method captureGitState (line 113) | private async captureGitState() {
method dispose (line 133) | public dispose() {
method exec (line 137) | private exec(command: string, args: string[]): Promise<string> {
FILE: .vscode/extensions/vscode-selfhost-test-provider/src/importGraph.ts
class ImportGraph (line 30) | class ImportGraph implements vscode.TestRelatedCodeProvider {
method constructor (line 33) | constructor(
method provideRelatedCode (line 40) | public async provideRelatedCode(test: vscode.TestItem, token: vscode.C...
method provideRelatedTests (line 73) | public async provideRelatedTests(document: vscode.TextDocument, _posit...
method didChange (line 115) | public didChange(uri: vscode.Uri, deleted: boolean) {
method getNode (line 132) | private getNode(uri: vscode.Uri | undefined): FileNode | undefined {
method discoverOutwards (line 138) | private async discoverOutwards(uri: vscode.Uri | undefined, seen: Set<...
method discoverOutwardsInner (line 154) | private async discoverOutwardsInner(node: FileNode, seen: Set<string>,...
method syncNode (line 172) | private async syncNode(node: FileNode) {
method uriToImportPath (line 209) | private uriToImportPath(uri: vscode.Uri | undefined) {
method importPathToUri (line 222) | private importPathToUri(importPath: string) {
constant IMPORT_RE (line 227) | const IMPORT_RE = /import .*? from ["'](vs\/[^"']+)/g;
class FileNode (line 229) | class FileNode {
method constructor (line 235) | constructor(
FILE: .vscode/extensions/vscode-selfhost-test-provider/src/metadata.ts
type TestMessageMetadata (line 7) | interface TestMessageMetadata {
function getId (line 16) | function getId(): string {
function attachTestMessageMetadata (line 22) | function attachTestMessageMetadata(
function getTestMessageMetadata (line 46) | function getTestMessageMetadata(message: TestMessage): TestMessageMetada...
FILE: .vscode/extensions/vscode-selfhost-test-provider/src/sourceUtils.ts
type Action (line 13) | const enum Action {
type IdentifiedCall (line 61) | const enum IdentifiedCall {
FILE: .vscode/extensions/vscode-selfhost-test-provider/src/stackTraceParser.ts
class StackTraceParser (line 21) | class StackTraceParser {
method isStackLike (line 23) | public static isStackLike(str: string) {
method constructor (line 26) | constructor(private readonly stack: string) { }
method [Symbol.iterator] (line 29) | *[Symbol.iterator]() {
class StackTraceLocation (line 53) | class StackTraceLocation {
method constructor (line 54) | constructor(
FILE: .vscode/extensions/vscode-selfhost-test-provider/src/streamSplitter.ts
class StreamSplitter (line 16) | class StreamSplitter extends Transform {
method constructor (line 21) | constructor(splitter: string | number | Buffer) {
method _transform (line 31) | override _transform(
method _flush (line 57) | override _flush(callback: (error?: Error | null, data?: any) => void):...
FILE: .vscode/extensions/vscode-selfhost-test-provider/src/testOutputScanner.ts
type MochaEvent (line 24) | const enum MochaEvent {
type IStartEvent (line 36) | interface IStartEvent {
type ITestStartEvent (line 40) | interface ITestStartEvent {
type IPassEvent (line 48) | interface IPassEvent extends ITestStartEvent {
type IFailEvent (line 52) | interface IFailEvent extends IPassEvent {
type IEndEvent (line 62) | interface IEndEvent {
type ITestCoverageCoverage (line 72) | interface ITestCoverageCoverage {
type MochaEventTuple (line 78) | type MochaEventTuple =
class TestOutputScanner (line 89) | class TestOutputScanner implements vscode.Disposable {
method constructor (line 109) | constructor(private readonly process: ChildProcessWithoutNullStreams, ...
method dispose (line 121) | public dispose() {
type QueuedOutput (line 150) | type QueuedOutput = string | [string, vscode.Location | undefined, vscod...
function scanTestOutput (line 152) | async function scanTestOutput(
type SearchStrategy (line 429) | const enum SearchStrategy {
type SourceLocationMapper (line 434) | type SourceLocationMapper = (line: number, col: number, strategy: Search...
class SourceMapStore (line 436) | class SourceMapStore {
method getSourceLocationMapper (line 439) | async getSourceLocationMapper(fileUri: string): Promise<SourceLocation...
method getSourceLocation (line 491) | async getSourceLocation(fileUri: string, line: number, col = 0) {
method getSourceFile (line 519) | async getSourceFile(compiledUri: string) {
method completeSourceMapUrl (line 539) | private completeSourceMapUrl(sm: TraceMap, source: string) {
method loadSourceMap (line 551) | private loadSourceMap(fileUri: string) {
function replaceAllLocations (line 580) | async function replaceAllLocations(store: SourceMapStore, str: string) {
function deriveStackLocations (line 613) | async function deriveStackLocations(
function deriveSourceLocation (line 647) | async function deriveSourceLocation(store: SourceMapStore, parts: RegExp...
function findLastIndex (line 652) | function findLastIndex<T>(arr: T[], predicate: (value: T) => boolean) {
FILE: .vscode/extensions/vscode-selfhost-test-provider/src/testTree.ts
type ContentGetter (line 15) | type ContentGetter = (uri: vscode.Uri) => Promise<string>;
class TestFile (line 55) | class TestFile {
method constructor (line 58) | constructor(
method getId (line 63) | public getId() {
method getLabel (line 67) | public getLabel() {
method updateFromDisk (line 71) | public async updateFromDisk(controller: vscode.TestController, item: v...
method updateFromContents (line 84) | public updateFromContents(
method constructor (line 163) | constructor(
class TestSuite (line 172) | class TestSuite extends TestConstruct {}
class TestCase (line 174) | class TestCase extends TestConstruct {}
type VSCodeTest (line 176) | type VSCodeTest = TestFile | TestSuite | TestCase;
FILE: .vscode/extensions/vscode-selfhost-test-provider/src/v8CoverageWrangling.ts
type ICoverageRange (line 6) | interface ICoverageRange {
type IV8FunctionCoverage (line 12) | interface IV8FunctionCoverage {
type IV8CoverageRange (line 18) | interface IV8CoverageRange {
type IScriptCoverage (line 25) | interface IScriptCoverage {
class RangeCoverageTracker (line 33) | class RangeCoverageTracker implements Iterable<ICoverageRange> {
method initializeBlocks (line 43) | public static initializeBlocks(fns: IV8FunctionCoverage[]) {
method clone (line 77) | public clone() {
method cover (line 84) | public cover(start: number, end: number) {
method uncovered (line 89) | public uncovered(start: number, end: number) {
method setCovered (line 104) | public setCovered(start: number, end: number, covered: boolean) {
method [Symbol.iterator] (line 94) | [Symbol.iterator]() {
class OffsetToPosition (line 165) | class OffsetToPosition {
method constructor (line 171) | constructor(source: string) {
method getLineLength (line 179) | public getLineLength(lineNumber: number): number {
method getLineOfOffset (line 189) | public getLineOfOffset(offset: number): number {
method toLineColumn (line 207) | public toLineColumn(offset: number): { line: number; column: number } {
FILE: .vscode/extensions/vscode-selfhost-test-provider/src/vscodeTestRunner.ts
constant TEST_ELECTRON_SCRIPT_PATH (line 20) | const TEST_ELECTRON_SCRIPT_PATH = 'test/unit/electron/index.js';
constant TEST_BROWSER_SCRIPT_PATH (line 21) | const TEST_BROWSER_SCRIPT_PATH = 'test/unit/browser/index.js';
constant ATTACH_CONFIG_NAME (line 23) | const ATTACH_CONFIG_NAME = 'Attach to VS Code';
constant DEBUG_TYPE (line 24) | const DEBUG_TYPE = 'pwa-chrome';
method constructor (line 27) | constructor(protected readonly repoLocation: vscode.WorkspaceFolder) { }
method run (line 29) | public async run(baseArgs: ReadonlyArray<string>, filter?: ReadonlyArray...
method debug (line 40) | public async debug(testRun: vscode.TestRun, baseArgs: ReadonlyArray<stri...
method findOpenPort (line 126) | private findOpenPort(): Promise<number> {
method getEnvironment (line 142) | protected getEnvironment(_remoteDebugPort?: number): NodeJS.ProcessEnv {
method prepareArguments (line 150) | private prepareArguments(
method readProductJson (line 218) | protected async readProductJson() {
method createWaitServer (line 230) | private createWaitServer() {
class BrowserTestRunner (line 257) | class BrowserTestRunner extends VSCodeTestRunner {
method binaryPath (line 259) | protected binaryPath(): Promise<string> {
method getEnvironment (line 264) | protected override getEnvironment(remoteDebugPort?: number) {
method getDefaultArgs (line 273) | protected getDefaultArgs() {
class WindowsTestRunner (line 278) | class WindowsTestRunner extends VSCodeTestRunner {
method binaryPath (line 280) | protected async binaryPath() {
method getDefaultArgs (line 286) | protected getDefaultArgs() {
class PosixTestRunner (line 291) | class PosixTestRunner extends VSCodeTestRunner {
method binaryPath (line 293) | protected async binaryPath() {
method getDefaultArgs (line 299) | protected getDefaultArgs() {
class DarwinTestRunner (line 304) | class DarwinTestRunner extends PosixTestRunner {
method getDefaultArgs (line 306) | protected override getDefaultArgs() {
method binaryPath (line 316) | protected override async binaryPath() {
FILE: build/azure-pipelines/common/computeNodeModulesCacheKey.js
constant ROOT (line 14) | const ROOT = path_1.default.join(__dirname, '../../../');
FILE: build/azure-pipelines/common/computeNodeModulesCacheKey.ts
constant ROOT (line 11) | const ROOT = path.join(__dirname, '../../../');
FILE: build/azure-pipelines/common/createBuild.js
function getEnv (line 14) | function getEnv(name) {
function main (line 21) | async function main() {
FILE: build/azure-pipelines/common/createBuild.ts
function getEnv (line 15) | function getEnv(name: string): string {
function main (line 25) | async function main(): Promise<void> {
FILE: build/azure-pipelines/common/getPublishAuthTokens.js
function e (line 9) | function e(name) {
function getAccessToken (line 16) | async function getAccessToken(endpoint, tenantId, clientId, idToken) {
function main (line 34) | async function main() {
FILE: build/azure-pipelines/common/getPublishAuthTokens.ts
function e (line 9) | function e(name: string): string {
function getAccessToken (line 19) | async function getAccessToken(endpoint: string, tenantId: string, client...
function main (line 41) | async function main() {
FILE: build/azure-pipelines/common/installPlaywright.js
function install (line 8) | async function install() {
FILE: build/azure-pipelines/common/listNodeModules.js
constant ROOT (line 16) | const ROOT = path_1.default.join(__dirname, '../../../');
function findNodeModulesFiles (line 17) | function findNodeModulesFiles(location, inNodeModules, result) {
FILE: build/azure-pipelines/common/listNodeModules.ts
constant ROOT (line 14) | const ROOT = path.join(__dirname, '../../../');
function findNodeModulesFiles (line 16) | function findNodeModulesFiles(location: string, inNodeModules: boolean, ...
FILE: build/azure-pipelines/common/publish.js
function e (line 25) | function e(name) {
function hashStream (line 32) | function hashStream(hashName, stream) {
function getCertificateBuffer (line 51) | function getCertificateBuffer(input) {
function getThumbprint (line 54) | function getThumbprint(input, algorithm) {
function getKeyFromPFX (line 58) | function getKeyFromPFX(pfx) {
function getCertificatesFromPFX (line 74) | function getCertificatesFromPFX(pfx) {
class ESRPReleaseService (line 90) | class ESRPReleaseService {
method create (line 98) | static async create(log, tenantId, clientId, authCertificatePfx, reque...
method constructor (line 120) | constructor(log, clientId, accessToken, requestSigningCertificates, re...
method createRelease (line 129) | async createRelease(version, filePath, friendlyFileName) {
method submitRelease (line 168) | async submitRelease(version, filePath, friendlyFileName, correlationId...
method getReleaseStatus (line 229) | async getReleaseStatus(releaseId) {
method getReleaseDetails (line 242) | async getReleaseDetails(releaseId) {
method generateJwsToken (line 255) | async generateJwsToken(message) {
class State (line 272) | class State {
method constructor (line 275) | constructor() {
method size (line 291) | get size() {
method has (line 294) | has(name) {
method add (line 297) | add(name) {
method [Symbol.iterator] (line 301) | [Symbol.iterator]() {
function requestAZDOAPI (line 316) | async function requestAZDOAPI(path) {
function getPipelineArtifacts (line 330) | async function getPipelineArtifacts() {
function getPipelineTimeline (line 334) | async function getPipelineTimeline() {
function downloadArtifact (line 337) | async function downloadArtifact(artifact, downloadPath) {
function unzip (line 351) | async function unzip(packagePath, outputPath) {
function getPlatform (line 385) | function getPlatform(product, os, arch, type) {
function getRealType (line 475) | function getRealType(type) {
function withLease (line 486) | async function withLease(client, fn) {
function processArtifact (line 523) | async function processArtifact(artifact, filePath) {
function main (line 588) | async function main() {
FILE: build/azure-pipelines/common/publish.ts
function e (line 23) | function e(name: string): string {
function hashStream (line 33) | function hashStream(hashName: string, stream: Readable): Promise<Buffer> {
type ReleaseSubmitResponse (line 44) | interface ReleaseSubmitResponse {
type ReleaseActivityInfo (line 53) | interface ReleaseActivityInfo {
type InnerServiceError (line 65) | interface InnerServiceError {
type ReleaseError (line 71) | interface ReleaseError {
type StatusCode (line 76) | const enum StatusCode {
type ReleaseResultMessage (line 86) | interface ReleaseResultMessage {
type ReleaseFileInfo (line 104) | interface ReleaseFileInfo {
type ReleaseDetailsFileInfo (line 128) | interface ReleaseDetailsFileInfo extends ReleaseFileInfo { }
type ReleaseDetailsMessage (line 130) | interface ReleaseDetailsMessage extends ReleaseResultMessage {
type ProductInfo (line 146) | interface ProductInfo {
type ReleaseInfo (line 152) | interface ReleaseInfo {
type FileLocationType (line 160) | type FileLocationType = 'azureBlob';
type FileLocation (line 162) | interface FileLocation {
type FileHashType (line 169) | type FileHashType = 'sha256' | 'sha1';
type FileDownloadDetails (line 171) | interface FileDownloadDetails {
type RoutingInfo (line 176) | interface RoutingInfo {
type ReleaseFileInfo (line 184) | interface ReleaseFileInfo {
type UserInfo (line 208) | interface UserInfo {
type OwnerInfo (line 212) | interface OwnerInfo {
type ApproverInfo (line 216) | interface ApproverInfo {
type AccessPermissionsInfo (line 222) | interface AccessPermissionsInfo {
type DownloadCenterLocaleInfo (line 228) | interface DownloadCenterLocaleInfo {
type DownloadCenterInfo (line 241) | interface DownloadCenterInfo {
type ReleaseRequestMessage (line 253) | interface ReleaseRequestMessage {
function getCertificateBuffer (line 272) | function getCertificateBuffer(input: string) {
function getThumbprint (line 276) | function getThumbprint(input: string, algorithm: string): Buffer {
function getKeyFromPFX (line 281) | function getKeyFromPFX(pfx: string): string {
function getCertificatesFromPFX (line 298) | function getCertificatesFromPFX(pfx: string): string[] {
class ESRPReleaseService (line 315) | class ESRPReleaseService {
method create (line 317) | static async create(
method constructor (line 352) | private constructor(
method createRelease (line 362) | async createRelease(version: string, filePath: string, friendlyFileNam...
method submitRelease (line 407) | private async submitRelease(
method getReleaseStatus (line 480) | private async getReleaseStatus(releaseId: string): Promise<ReleaseResu...
method getReleaseDetails (line 497) | private async getReleaseDetails(releaseId: string): Promise<ReleaseDet...
method generateJwsToken (line 514) | private async generateJwsToken(message: ReleaseRequestMessage): Promis...
class State (line 532) | class State {
method constructor (line 537) | constructor() {
method size (line 556) | get size(): number {
method has (line 560) | has(name: string): boolean {
method add (line 564) | add(name: string): void {
method [Symbol.iterator] (line 569) | [Symbol.iterator](): IterableIterator<string> {
function requestAZDOAPI (line 586) | async function requestAZDOAPI<T>(path: string): Promise<T> {
type Artifact (line 603) | interface Artifact {
function getPipelineArtifacts (line 613) | async function getPipelineArtifacts(): Promise<Artifact[]> {
type Timeline (line 618) | interface Timeline {
function getPipelineTimeline (line 626) | async function getPipelineTimeline(): Promise<Timeline> {
function downloadArtifact (line 630) | async function downloadArtifact(artifact: Artifact, downloadPath: string...
function unzip (line 647) | async function unzip(packagePath: string, outputPath: string): Promise<s...
type Asset (line 684) | interface Asset {
function getPlatform (line 697) | function getPlatform(product: string, os: string, arch: string, type: st...
function getRealType (line 788) | function getRealType(type: string) {
function withLease (line 800) | async function withLease<T>(client: BlockBlobClient, fn: () => Promise<T...
function processArtifact (line 842) | async function processArtifact(
function main (line 931) | async function main() {
FILE: build/azure-pipelines/common/releaseBuild.js
function getEnv (line 10) | function getEnv(name) {
function createDefaultConfig (line 17) | function createDefaultConfig(quality) {
function getConfig (line 23) | async function getConfig(client, quality) {
function main (line 31) | async function main(force) {
FILE: build/azure-pipelines/common/releaseBuild.ts
function getEnv (line 10) | function getEnv(name: string): string {
type Config (line 20) | interface Config {
function createDefaultConfig (line 25) | function createDefaultConfig(quality: string): Config {
function getConfig (line 32) | async function getConfig(client: CosmosClient, quality: string): Promise...
function main (line 44) | async function main(force: boolean): Promise<void> {
FILE: build/azure-pipelines/common/retry.js
function retry (line 8) | async function retry(fn) {
FILE: build/azure-pipelines/common/retry.ts
function retry (line 6) | async function retry<T>(fn: (attempt: number) => Promise<T>): Promise<T> {
FILE: build/azure-pipelines/common/sign.js
class Temp (line 17) | class Temp {
method tmpNameSync (line 19) | tmpNameSync() {
method dispose (line 24) | dispose() {
function getParams (line 36) | function getParams(type) {
function main (line 129) | function main([esrpCliPath, type, folderPath, pattern]) {
FILE: build/azure-pipelines/common/sign.ts
class Temp (line 12) | class Temp {
method tmpNameSync (line 15) | tmpNameSync(): string {
method dispose (line 21) | dispose(): void {
type Params (line 32) | interface Params {
function getParams (line 43) | function getParams(type: string): Params[] {
function main (line 137) | function main([esrpCliPath, type, folderPath, pattern]: string[]) {
FILE: build/azure-pipelines/distro/mixin-npm.js
function log (line 13) | function log(...args) {
function mixin (line 16) | function mixin(mixinPath) {
function main (line 30) | function main() {
FILE: build/azure-pipelines/distro/mixin-npm.ts
function log (line 10) | function log(...args: any[]): void {
function mixin (line 14) | function mixin(mixinPath: string) {
function main (line 33) | function main() {
FILE: build/azure-pipelines/distro/mixin-quality.js
function log (line 12) | function log(...args) {
function main (line 15) | function main() {
FILE: build/azure-pipelines/distro/mixin-quality.ts
type IBuiltInExtension (line 9) | interface IBuiltInExtension {
type OSSProduct (line 16) | interface OSSProduct {
type Product (line 21) | interface Product {
function log (line 26) | function log(...args: any[]): void {
function main (line 30) | function main() {
FILE: build/azure-pipelines/publish-types/check-version.js
function isValidTag (line 26) | function isValidTag(t) {
FILE: build/azure-pipelines/publish-types/check-version.ts
function isValidTag (line 24) | function isValidTag(t: string) {
FILE: build/azure-pipelines/publish-types/update-types.js
function updateDTSFile (line 30) | function updateDTSFile(outPath, tag) {
function repeat (line 35) | function repeat(str, times) {
function convertTabsToSpaces (line 42) | function convertTabsToSpaces(str) {
function getNewFileContent (line 45) | function getNewFileContent(content, tag) {
function getNewFileHeader (line 54) | function getNewFileHeader(tag) {
FILE: build/azure-pipelines/publish-types/update-types.ts
function updateDTSFile (line 30) | function updateDTSFile(outPath: string, tag: string) {
function repeat (line 37) | function repeat(str: string, times: number): string {
function convertTabsToSpaces (line 45) | function convertTabsToSpaces(str: string): string {
function getNewFileContent (line 49) | function getNewFileContent(content: string, tag: string) {
function getNewFileHeader (line 60) | function getNewFileHeader(tag: string) {
FILE: build/azure-pipelines/upload-cdn.js
function wait (line 70) | function wait(stream) {
function main (line 76) | async function main() {
FILE: build/azure-pipelines/upload-cdn.ts
function wait (line 70) | function wait(stream: es.ThroughStream): Promise<void> {
function main (line 77) | async function main(): Promise<void> {
FILE: build/azure-pipelines/upload-nlsmetadata.js
function main (line 20) | function main() {
FILE: build/azure-pipelines/upload-nlsmetadata.ts
type NlsMetadata (line 19) | interface NlsMetadata {
function main (line 25) | function main(): Promise<void> {
FILE: build/azure-pipelines/upload-sourcemaps.js
function src (line 55) | function src(base, maps = `${base}/**/*.map`) {
function main (line 62) | function main() {
FILE: build/azure-pipelines/upload-sourcemaps.ts
function src (line 22) | function src(base: string, maps = `${base}/**/*.map`) {
function main (line 30) | function main(): Promise<void> {
FILE: build/buildfile.js
function createModuleDescription (line 10) | function createModuleDescription(name) {
FILE: build/builtin/browser-main.js
function readJson (line 18) | function readJson(filePath) {
function writeJson (line 26) | function writeJson(filePath, obj) {
function renderOption (line 37) | function renderOption(form, id, title, value, checked) {
function render (line 58) | function render(el, state) {
function main (line 128) | function main() {
FILE: build/darwin/create-universal-app.js
function main (line 15) | async function main(buildDir) {
FILE: build/darwin/create-universal-app.ts
function main (line 13) | async function main(buildDir?: string) {
FILE: build/darwin/sign.js
function getElectronVersion (line 15) | function getElectronVersion() {
function main (line 20) | async function main(buildDir) {
FILE: build/darwin/sign.ts
function getElectronVersion (line 13) | function getElectronVersion(): string {
function main (line 19) | async function main(buildDir?: string): Promise<void> {
FILE: build/darwin/verify-macho.js
constant MACHO_PREFIX (line 14) | const MACHO_PREFIX = 'Mach-O ';
constant MACHO_64_MAGIC_LE (line 15) | const MACHO_64_MAGIC_LE = 0xfeedfacf;
constant MACHO_UNIVERSAL_MAGIC_LE (line 16) | const MACHO_UNIVERSAL_MAGIC_LE = 0xbebafeca;
constant MACHO_ARM64_CPU_TYPE (line 17) | const MACHO_ARM64_CPU_TYPE = new Set([
constant MACHO_X86_64_CPU_TYPE (line 21) | const MACHO_X86_64_CPU_TYPE = new Set([
function read (line 25) | async function read(file, buf, offset, length, position) {
function checkMachOFiles (line 35) | async function checkMachOFiles(appPath, arch) {
FILE: build/darwin/verify-macho.ts
constant MACHO_PREFIX (line 11) | const MACHO_PREFIX = 'Mach-O ';
constant MACHO_64_MAGIC_LE (line 12) | const MACHO_64_MAGIC_LE = 0xfeedfacf;
constant MACHO_UNIVERSAL_MAGIC_LE (line 13) | const MACHO_UNIVERSAL_MAGIC_LE = 0xbebafeca;
constant MACHO_ARM64_CPU_TYPE (line 14) | const MACHO_ARM64_CPU_TYPE = new Set([
constant MACHO_X86_64_CPU_TYPE (line 18) | const MACHO_X86_64_CPU_TYPE = new Set([
function read (line 23) | async function read(file: string, buf: Buffer, offset: number, length: n...
function checkMachOFiles (line 33) | async function checkMachOFiles(appPath: string, arch: string) {
FILE: build/eslint.js
function eslint (line 10) | function eslint() {
FILE: build/gulp-eslint.js
function eslint (line 17) | function eslint(action) {
function transform (line 70) | function transform(transform, flush) {
FILE: build/gulpfile.compile.js
function makeCompileBuildTask (line 18) | function makeCompileBuildTask(disableMangle) {
FILE: build/gulpfile.editor.js
constant BUNDLED_FILE_HEADER (line 28) | const BUNDLED_FILE_HEADER = [
function toExternalDTS (line 87) | function toExternalDTS(contents) {
function createTscCompileTask (line 212) | function createTscCompileTask(watch) {
FILE: build/gulpfile.extensions.js
function createPipeline (line 105) | function createPipeline(build, emitError, transpileOnly) {
function buildWebExtensions (line 303) | async function buildWebExtensions(isWatch) {
FILE: build/gulpfile.hygiene.js
function checkPackageJSON (line 15) | function checkPackageJSON(actualPath) {
FILE: build/gulpfile.reh.js
constant REPO_ROOT (line 36) | const REPO_ROOT = path.dirname(__dirname);
constant BUILD_ROOT (line 38) | const BUILD_ROOT = path.dirname(REPO_ROOT);
constant REMOTE_FOLDER (line 39) | const REMOTE_FOLDER = path.join(REPO_ROOT, 'remote');
constant BUILD_TARGETS (line 43) | const BUILD_TARGETS = [
function getNodeVersion (line 138) | function getNodeVersion() {
function getNodeChecksum (line 145) | function getNodeChecksum(expectedName) {
function extractAlpinefromDocker (line 156) | function extractAlpinefromDocker(nodeVersion, platform, arch) {
function nodejs (line 186) | function nodejs(platform, arch) {
function packageTask (line 251) | function packageTask(type, platform, arch, sourceFolderName, destination...
function tweakProductForServerWeb (line 426) | function tweakProductForServerWeb(product) {
FILE: build/gulpfile.scan.js
constant BUILD_TARGETS (line 20) | const BUILD_TARGETS = [
function getProductionDependencySources (line 74) | function getProductionDependencySources() {
function nodeModules (line 79) | function nodeModules(destinationExe, destinationPdb, platform) {
function confirmPdbsExist (line 116) | function confirmPdbsExist(destinationExe, destinationPdb) {
FILE: build/gulpfile.vscode.js
function computeChecksums (line 199) | function computeChecksums(out, filenames) {
function computeChecksum (line 214) | function computeChecksum(filename) {
function packageTask (line 226) | function packageTask(platform, arch, sourceFolderName, destinationFolder...
function patchWin32DependenciesTask (line 443) | function patchWin32DependenciesTask(destinationFolderName) {
constant BUILD_TARGETS (line 474) | const BUILD_TARGETS = [
FILE: build/gulpfile.vscode.linux.js
function getDebPackageArch (line 33) | function getDebPackageArch(arch) {
function prepareDebPackage (line 37) | function prepareDebPackage(arch) {
function buildDebPackage (line 125) | function buildDebPackage(arch) {
function getRpmBuildPath (line 139) | function getRpmBuildPath(rpmArch) {
function getRpmPackageArch (line 146) | function getRpmPackageArch(arch) {
function prepareRpmPackage (line 153) | function prepareRpmPackage(arch) {
function buildRpmPackage (line 226) | function buildRpmPackage(arch) {
function getSnapBuildPath (line 242) | function getSnapBuildPath(arch) {
function prepareSnapPackage (line 249) | function prepareSnapPackage(arch) {
function buildSnapPackage (line 296) | function buildSnapPackage(arch) {
constant BUILD_TARGETS (line 301) | const BUILD_TARGETS = [
FILE: build/gulpfile.vscode.web.js
constant REPO_ROOT (line 26) | const REPO_ROOT = path.dirname(__dirname);
constant BUILD_ROOT (line 27) | const BUILD_ROOT = path.dirname(REPO_ROOT);
constant WEB_FOLDER (line 28) | const WEB_FOLDER = path.join(REPO_ROOT, 'remote', 'web');
function packageTask (line 141) | function packageTask(sourceFolderName, destinationFolderName) {
FILE: build/gulpfile.vscode.win32.js
function packageInnoSetup (line 27) | function packageInnoSetup(iss, options, cb) {
function buildWin32Setup (line 66) | function buildWin32Setup(arch, target) {
function defineWin32SetupTasks (line 128) | function defineWin32SetupTasks(arch, target) {
function copyInnoUpdater (line 141) | function copyInnoUpdater(arch) {
function updateIcon (line 151) | function updateIcon(executablePath) {
FILE: build/hygiene.js
function hygiene (line 23) | function hygiene(some, linting = true) {
function createGitIndexVinyls (line 223) | function createGitIndexVinyls(paths) {
FILE: build/lib/asar.js
function createAsar (line 17) | function createAsar(folderPath, unpackGlobs, skipGlobs, duplicateGlobs, ...
FILE: build/lib/asar.ts
class AsarFilesystem (line 13) | class AsarFilesystem {
function createAsar (line 20) | function createAsar(folderPath: string, unpackGlobs: string[], skipGlobs...
FILE: build/lib/builtInExtensions.js
constant ENABLE_LOGGING (line 60) | const ENABLE_LOGGING = !process.env['VSCODE_BUILD_BUILTIN_EXTENSIONS_SIL...
function log (line 61) | function log(...messages) {
function getExtensionPath (line 66) | function getExtensionPath(extension) {
function isUpToDate (line 69) | function isUpToDate(extension) {
function getExtensionDownloadStream (line 83) | function getExtensionDownloadStream(extension) {
function getExtensionStream (line 96) | function getExtensionStream(extension) {
function syncMarketplaceExtension (line 105) | function syncMarketplaceExtension(extension) {
function syncExtension (line 117) | function syncExtension(extension, controlState) {
function readControlFile (line 144) | function readControlFile() {
function writeControlFile (line 152) | function writeControlFile(control) {
function getBuiltInExtensions (line 156) | function getBuiltInExtensions() {
FILE: build/lib/builtInExtensions.ts
type IExtensionDefinition (line 18) | interface IExtensionDefinition {
constant ENABLE_LOGGING (line 42) | const ENABLE_LOGGING = !process.env['VSCODE_BUILD_BUILTIN_EXTENSIONS_SIL...
function log (line 44) | function log(...messages: string[]): void {
function getExtensionPath (line 50) | function getExtensionPath(extension: IExtensionDefinition): string {
function isUpToDate (line 54) | function isUpToDate(extension: IExtensionDefinition): boolean {
function getExtensionDownloadStream (line 71) | function getExtensionDownloadStream(extension: IExtensionDefinition) {
function getExtensionStream (line 85) | function getExtensionStream(extension: IExtensionDefinition) {
function syncMarketplaceExtension (line 96) | function syncMarketplaceExtension(extension: IExtensionDefinition): Stre...
function syncExtension (line 111) | function syncExtension(extension: IExtensionDefinition, controlState: 'd...
type IControlFile (line 144) | interface IControlFile {
function readControlFile (line 148) | function readControlFile(): IControlFile {
function writeControlFile (line 156) | function writeControlFile(control: IControlFile): void {
function getBuiltInExtensions (line 161) | function getBuiltInExtensions(): Promise<void> {
FILE: build/lib/builtInExtensionsCG.js
function downloadExtensionDetails (line 22) | async function downloadExtensionDetails(extension) {
function main (line 68) | async function main() {
FILE: build/lib/builtInExtensionsCG.ts
function downloadExtensionDetails (line 22) | async function downloadExtensionDetails(extension: IExtensionDefinition)...
function main (line 69) | async function main(): Promise<void> {
FILE: build/lib/bundle.js
function removeAllTSBoilerplate (line 8) | function removeAllTSBoilerplate(source) {
constant BOILERPLATE (line 13) | const BOILERPLATE = [
function removeDuplicateTSBoilerplate (line 27) | function removeDuplicateTSBoilerplate(source, SEEN_BOILERPLATE = []) {
FILE: build/lib/bundle.ts
type IEntryPoint (line 6) | interface IEntryPoint {
function removeAllTSBoilerplate (line 12) | function removeAllTSBoilerplate(source: string) {
constant BOILERPLATE (line 18) | const BOILERPLATE = [
function removeDuplicateTSBoilerplate (line 33) | function removeDuplicateTSBoilerplate(source: string, SEEN_BOILERPLATE: ...
FILE: build/lib/compilation.js
function getTypeScriptCompilerOptions (line 67) | function getTypeScriptCompilerOptions(src) {
function createCompile (line 81) | function createCompile(src, { build, emitError, transpileOnly, preserveE...
function transpileTask (line 128) | function transpileTask(src, out, esbuild) {
function compileTask (line 139) | function compileTask(src, out, build, options = {}) {
function watchTask (line 179) | function watchTask(out, build, srcPath = 'src') {
constant REPO_SRC_FOLDER (line 194) | const REPO_SRC_FOLDER = path_1.default.join(__dirname, '../../src');
class MonacoGenerator (line 195) | class MonacoGenerator {
method constructor (line 201) | constructor(isWatch) {
method _executeSoon (line 232) | _executeSoon() {
method _run (line 242) | _run() {
method _log (line 250) | _log(message, ...rest) {
method execute (line 253) | execute() {
function generateApiProposalNames (line 271) | function generateApiProposalNames() {
FILE: build/lib/compilation.ts
function getTypeScriptCompilerOptions (line 30) | function getTypeScriptCompilerOptions(src: string): ts.CompilerOptions {
type ICompileTaskOptions (line 45) | interface ICompileTaskOptions {
function createCompile (line 52) | function createCompile(src: string, { build, emitError, transpileOnly, p...
function transpileTask (line 108) | function transpileTask(src: string, out: string, esbuild: boolean): task...
function compileTask (line 124) | function compileTask(src: string, out: string, build: boolean, options: ...
function watchTask (line 173) | function watchTask(out: string, build: boolean, srcPath: string = 'src')...
constant REPO_SRC_FOLDER (line 193) | const REPO_SRC_FOLDER = path.join(__dirname, '../../src');
class MonacoGenerator (line 195) | class MonacoGenerator {
method constructor (line 203) | constructor(isWatch: boolean) {
method _executeSoon (line 237) | private _executeSoon(): void {
method _run (line 248) | private _run(): monacodts.IMonacoDeclarationResult | null {
method _log (line 257) | private _log(message: any, ...rest: any[]): void {
method execute (line 261) | public execute(): void {
function generateApiProposalNames (line 281) | function generateApiProposalNames() {
FILE: build/lib/date.js
function writeISODate (line 20) | function writeISODate(outDir) {
function readISODate (line 31) | function readISODate(outDir) {
FILE: build/lib/date.ts
function writeISODate (line 16) | function writeISODate(outDir: string) {
function readISODate (line 30) | function readISODate(outDir: string): string {
FILE: build/lib/dependencies.js
function getNpmProductionDependencies (line 15) | function getNpmProductionDependencies(folder) {
function getProductionDependencies (line 43) | function getProductionDependencies(folderPath) {
FILE: build/lib/dependencies.ts
function getNpmProductionDependencies (line 11) | function getNpmProductionDependencies(folder: string): string[] {
function getProductionDependencies (line 40) | function getProductionDependencies(folderPath: string): string[] {
FILE: build/lib/electron.js
function isDocumentSuffix (line 50) | function isDocumentSuffix(str) {
function createTemplate (line 56) | function createTemplate(input) {
function darwinBundleDocumentType (line 83) | function darwinBundleDocumentType(extensions, icon, nameOrSuffix, utis) {
function darwinBundleDocumentTypes (line 108) | function darwinBundleDocumentTypes(types, icon) {
function getElectron (line 224) | function getElectron(arch) {
function main (line 242) | async function main(arch = process.arch) {
FILE: build/lib/electron.ts
type DarwinDocumentSuffix (line 13) | type DarwinDocumentSuffix = 'document' | 'script' | 'file' | 'source code';
type DarwinDocumentType (line 14) | type DarwinDocumentType = {
function isDocumentSuffix (line 23) | function isDocumentSuffix(str?: string): str is DarwinDocumentSuffix {
function createTemplate (line 31) | function createTemplate(input: string): (params: Record<string, string>)...
function darwinBundleDocumentType (line 60) | function darwinBundleDocumentType(extensions: string[], icon: string, na...
function darwinBundleDocumentTypes (line 87) | function darwinBundleDocumentTypes(types: { [name: string]: string | str...
function getElectron (line 206) | function getElectron(arch: string): () => NodeJS.ReadWriteStream {
function main (line 227) | async function main(arch: string = process.arch): Promise<void> {
FILE: build/lib/extensions.js
function minifyExtensionResources (line 78) | function minifyExtensionResources(input) {
function updateExtensionPackageJSON (line 94) | function updateExtensionPackageJSON(input, update) {
function fromLocal (line 106) | function fromLocal(extensionPath, forWeb, disableMangle) {
function fromLocalWebpack (line 125) | function fromLocalWebpack(extensionPath, webpackConfigFileName, disableM...
function fromLocalNormal (line 225) | function fromLocalNormal(extensionPath) {
function fromMarketplace (line 249) | function fromMarketplace(serviceUrl, { name: extensionName, version, sha...
function fromVsix (line 270) | function fromVsix(vsixPath, { name: extensionName, version, sha256, meta...
function fromGithub (line 293) | function fromGithub({ name, version, repo, sha256, metadata }) {
function isWebExtension (line 339) | function isWebExtension(manifest) {
function packageNonNativeLocalExtensionsStream (line 368) | function packageNonNativeLocalExtensionsStream(forWeb, disableMangle) {
function packageNativeLocalExtensionsStream (line 380) | function packageNativeLocalExtensionsStream(forWeb, disableMangle) {
function packageAllLocalExtensionsStream (line 389) | function packageAllLocalExtensionsStream(forWeb, disableMangle) {
function doPackageLocalExtensionsStream (line 400) | function doPackageLocalExtensionsStream(forWeb, disableMangle, native) {
function packageMarketplaceExtensionsStream (line 432) | function packageMarketplaceExtensionsStream(forWeb) {
function scanBuiltinExtensions (line 450) | function scanBuiltinExtensions(extensionsRoot, exclude = []) {
function translatePackageJSON (line 485) | function translatePackageJSON(packageJSON, packageNLSPath) {
function webpackExtensions (line 518) | async function webpackExtensions(taskName, isWatch, webpackConfigLocatio...
function esbuildExtensions (line 581) | async function esbuildExtensions(taskName, isWatch, scripts) {
function buildExtensionMedia (line 612) | async function buildExtensionMedia(isWatch, outputRoot) {
FILE: build/lib/extensions.ts
function minifyExtensionResources (line 34) | function minifyExtensionResources(input: Stream): Stream {
function updateExtensionPackageJSON (line 51) | function updateExtensionPackageJSON(input: Stream, update: (data: any) =...
function fromLocal (line 64) | function fromLocal(extensionPath: string, forWeb: boolean, disableMangle...
function fromLocalWebpack (line 88) | function fromLocalWebpack(extensionPath: string, webpackConfigFileName: ...
function fromLocalNormal (line 203) | function fromLocalNormal(extensionPath: string): Stream {
function fromMarketplace (line 232) | function fromMarketplace(serviceUrl: string, { name: extensionName, vers...
function fromVsix (line 258) | function fromVsix(vsixPath: string, { name: extensionName, version, sha2...
function fromGithub (line 286) | function fromGithub({ name, version, repo, sha256, metadata }: IExtensio...
type ExtensionKind (line 337) | type ExtensionKind = 'ui' | 'workspace' | 'web';
type IExtensionManifest (line 338) | interface IExtensionManifest {
function isWebExtension (line 349) | function isWebExtension(manifest: IExtensionManifest): boolean {
function packageNonNativeLocalExtensionsStream (line 379) | function packageNonNativeLocalExtensionsStream(forWeb: boolean, disableM...
function packageNativeLocalExtensionsStream (line 392) | function packageNativeLocalExtensionsStream(forWeb: boolean, disableMang...
function packageAllLocalExtensionsStream (line 402) | function packageAllLocalExtensionsStream(forWeb: boolean, disableMangle:...
function doPackageLocalExtensionsStream (line 414) | function doPackageLocalExtensionsStream(forWeb: boolean, disableMangle: ...
function packageMarketplaceExtensionsStream (line 459) | function packageMarketplaceExtensionsStream(forWeb: boolean): Stream {
type IScannedBuiltinExtension (line 485) | interface IScannedBuiltinExtension {
function scanBuiltinExtensions (line 493) | function scanBuiltinExtensions(extensionsRoot: string, exclude: string[]...
function translatePackageJSON (line 530) | function translatePackageJSON(packageJSON: string, packageNLSPath: strin...
function webpackExtensions (line 567) | async function webpackExtensions(taskName: string, isWatch: boolean, web...
function esbuildExtensions (line 630) | async function esbuildExtensions(taskName: string, isWatch: boolean, scr...
function buildExtensionMedia (line 664) | async function buildExtensionMedia(isWatch: boolean, outputRoot?: string) {
FILE: build/lib/fetch.js
function fetchUrls (line 19) | function fetchUrls(urls, options) {
function fetchUrl (line 38) | async function fetchUrl(url, options, retries = 10, retryDelay = 1000) {
function fetchGithub (line 118) | function fetchGithub(repo, options) {
FILE: build/lib/fetch.ts
type IFetchOptions (line 14) | interface IFetchOptions {
function fetchUrls (line 21) | function fetchUrls(urls: string[] | string, options: IFetchOptions): es....
function fetchUrl (line 44) | async function fetchUrl(url: string, options: IFetchOptions, retries = 1...
type IGitHubAssetOptions (line 116) | interface IGitHubAssetOptions {
function fetchGithub (line 129) | function fetchGithub(repo: string, options: IGitHubAssetOptions): Stream {
FILE: build/lib/formatter.js
class LanguageServiceHost (line 14) | class LanguageServiceHost {
method addFile (line 16) | addFile(fileName, text) {
method fileExists (line 19) | fileExists(path) {
method readFile (line 22) | readFile(path) {
function format (line 64) | function format(fileName, text) {
FILE: build/lib/formatter.ts
class LanguageServiceHost (line 10) | class LanguageServiceHost implements ts.LanguageServiceHost {
method addFile (line 12) | addFile(fileName: string, text: string) {
method fileExists (line 16) | fileExists(path: string): boolean {
method readFile (line 20) | readFile(path: string): string | undefined {
function format (line 67) | function format(fileName: string, text: string) {
FILE: build/lib/getVersion.js
function getVersion (line 42) | function getVersion(root) {
FILE: build/lib/getVersion.ts
function getVersion (line 8) | function getVersion(root: string): string | undefined {
FILE: build/lib/git.js
function getVersion (line 16) | function getVersion(repo) {
FILE: build/lib/git.ts
function getVersion (line 11) | function getVersion(repo: string): string | undefined {
FILE: build/lib/i18n.js
constant REPO_ROOT_PATH (line 29) | const REPO_ROOT_PATH = path_1.default.join(__dirname, '../..');
function log (line 30) | function log(message, ...rest) {
function is (line 52) | function is(value) {
function is (line 60) | function is(value) {
function is (line 72) | function is(value) {
class Line (line 81) | class Line {
method constructor (line 83) | constructor(indent = 0) {
method append (line 88) | append(value) {
method toString (line 92) | toString() {
class TextModel (line 97) | class TextModel {
method constructor (line 99) | constructor(contents) {
method lines (line 102) | get lines() {
class XLF (line 106) | class XLF {
method constructor (line 111) | constructor(project) {
method toString (line 117) | toString() {
method addFile (line 133) | addFile(original, keys, messages) {
method addStringItem (line 166) | addStringItem(file, item) {
method appendHeader (line 180) | appendHeader() {
method appendFooter (line 184) | appendFooter() {
method appendNewLine (line 187) | appendNewLine(content, indent) {
function sortLanguages (line 241) | function sortLanguages(languages) {
function stripComments (line 246) | function stripComments(content) {
function processCoreBundleFormat (line 283) | function processCoreBundleFormat(base, fileHeader, languages, json, emit...
function processNlsFiles (line 319) | function processNlsFiles(opts) {
function getResource (line 338) | function getResource(sourceFile) {
function createXlfFilesForCoreBundle (line 371) | function createXlfFilesForCoreBundle() {
function createL10nBundleForExtension (line 418) | function createL10nBundleForExtension(extensionFolderName, prefixWithBui...
function createXlfFilesForExtensions (line 482) | function createXlfFilesForExtensions() {
function createXlfFilesForIsl (line 564) | function createXlfFilesForIsl() {
function createI18nFile (line 614) | function createI18nFile(name, messages) {
function getRecordFromL10nJsonFormat (line 636) | function getRecordFromL10nJsonFormat(l10nJsonFormat) {
function prepareI18nPackFiles (line 644) | function prepareI18nPackFiles(resultingTranslationPaths) {
function prepareIslFiles (line 702) | function prepareIslFiles(language, innoSetupConfig) {
function createIslFile (line 724) | function createIslFile(name, messages, language, innoSetup) {
function encodeEntities (line 761) | function encodeEntities(value) {
function decodeEntities (line 781) | function decodeEntities(value) {
FILE: build/lib/i18n.ts
constant REPO_ROOT_PATH (line 19) | const REPO_ROOT_PATH = path.join(__dirname, '../..');
function log (line 21) | function log(message: any, ...rest: any[]): void {
type Language (line 25) | interface Language {
type InnoSetup (line 31) | interface InnoSetup {
type Item (line 54) | interface Item {
type Resource (line 60) | interface Resource {
type LocalizeInfo (line 65) | interface LocalizeInfo {
function is (line 71) | function is(value: any): value is LocalizeInfo {
type BundledFormat (line 77) | interface BundledFormat {
function is (line 84) | function is(value: any): value is BundledFormat {
type NLSKeysFormat (line 96) | type NLSKeysFormat = [string /* module ID */, string[] /* keys */];
function is (line 99) | function is(value: any): value is NLSKeysFormat {
type BundledExtensionFormat (line 109) | interface BundledExtensionFormat {
type I18nFormat (line 116) | interface I18nFormat {
class Line (line 125) | class Line {
method constructor (line 128) | constructor(indent: number = 0) {
method append (line 134) | public append(value: string): Line {
method toString (line 139) | public toString(): string {
class TextModel (line 144) | class TextModel {
method constructor (line 147) | constructor(contents: string) {
method lines (line 151) | public get lines(): string[] {
class XLF (line 156) | class XLF {
method constructor (line 161) | constructor(public project: string) {
method toString (line 167) | public toString(): string {
method addFile (line 185) | public addFile(original: string, keys: (string | LocalizeInfo)[], mess...
method addStringItem (line 218) | private addStringItem(file: string, item: Item): void {
method appendHeader (line 236) | private appendHeader(): void {
method appendFooter (line 241) | private appendFooter(): void {
method appendNewLine (line 245) | private appendNewLine(content: string, indent?: number): void {
function sortLanguages (line 307) | function sortLanguages(languages: Language[]): Language[] {
function stripComments (line 313) | function stripComments(content: string): string {
function processCoreBundleFormat (line 347) | function processCoreBundleFormat(base: string, fileHeader: string, langu...
function processNlsFiles (line 387) | function processNlsFiles(opts: { out: string; fileHeader: string; langua...
function getResource (line 411) | function getResource(sourceFile: string): Resource {
function createXlfFilesForCoreBundle (line 440) | function createXlfFilesForCoreBundle(): ThroughStream {
function createL10nBundleForExtension (line 486) | function createL10nBundleForExtension(extensionFolderName: string, prefi...
constant EXTERNAL_EXTENSIONS (line 550) | const EXTERNAL_EXTENSIONS = [
function createXlfFilesForExtensions (line 556) | function createXlfFilesForExtensions(): ThroughStream {
function createXlfFilesForIsl (line 641) | function createXlfFilesForIsl(): ThroughStream {
function createI18nFile (line 697) | function createI18nFile(name: string, messages: any): File {
type I18nPack (line 720) | interface I18nPack {
type TranslationPath (line 729) | interface TranslationPath {
function getRecordFromL10nJsonFormat (line 734) | function getRecordFromL10nJsonFormat(l10nJsonFormat: l10nJsonFormat): Re...
function prepareI18nPackFiles (line 743) | function prepareI18nPackFiles(resultingTranslationPaths: TranslationPath...
function prepareIslFiles (line 806) | function prepareIslFiles(language: Language, innoSetupConfig: InnoSetup)...
function createIslFile (line 832) | function createIslFile(name: string, messages: l10nJsonFormat, language:...
function encodeEntities (line 871) | function encodeEntities(value: string): string {
function decodeEntities (line 892) | function decodeEntities(value: string): string {
FILE: build/lib/inlineMeta.js
function inlineMeta (line 21) | function inlineMeta(result, ctx) {
function matchesFile (line 43) | function matchesFile(file, ctx) {
FILE: build/lib/inlineMeta.ts
type IInlineMetaContext (line 10) | interface IInlineMetaContext {
function inlineMeta (line 26) | function inlineMeta(result: NodeJS.ReadWriteStream, ctx: IInlineMetaCont...
function matchesFile (line 53) | function matchesFile(file: File, ctx: IInlineMetaContext): boolean {
FILE: build/lib/layersChecker.js
constant CORE_TYPES (line 28) | const CORE_TYPES = [
constant NATIVE_TYPES (line 91) | const NATIVE_TYPES = [
constant RULES (line 100) | const RULES = [
constant TS_CONFIG_PATH (line 299) | const TS_CONFIG_PATH = (0, path_1.join)(__dirname, '../../', 'src', 'tsc...
function checkFile (line 301) | function checkFile(program, sourceFile, rule) {
function createProgram (line 360) | function createProgram(tsconfigPath) {
FILE: build/lib/layersChecker.ts
constant CORE_TYPES (line 26) | const CORE_TYPES = [
constant NATIVE_TYPES (line 91) | const NATIVE_TYPES = [
constant RULES (line 101) | const RULES: IRule[] = [
constant TS_CONFIG_PATH (line 325) | const TS_CONFIG_PATH = join(__dirname, '../../', 'src', 'tsconfig.json');
type IRule (line 327) | interface IRule {
function checkFile (line 338) | function checkFile(program: ts.Program, sourceFile: ts.SourceFile, rule:...
function createProgram (line 410) | function createProgram(tsconfigPath: string): ts.Program {
FILE: build/lib/mangle/index.js
class ShortIdent (line 21) | class ShortIdent {
method constructor (line 29) | constructor(prefix) {
method next (line 32) | next(isNameTaken) {
method convert (line 41) | static convert(n) {
class ClassData (line 58) | class ClassData {
method constructor (line 65) | constructor(fileName, node) {
method _getMemberName (line 109) | static _getMemberName(node) {
method _getFieldType (line 125) | static _getFieldType(node) {
method _shouldMangle (line 136) | static _shouldMangle(type) {
method makeImplicitPublicActuallyPublic (line 140) | static makeImplicitPublicActuallyPublic(data, reportViolation) {
method fillInReplacement (line 160) | static fillInReplacement(data) {
method _isNameTaken (line 208) | _isNameTaken(name) {
method lookupShortName (line 226) | lookupShortName(name) {
method addChild (line 238) | addChild(child) {
function isNameTakenInFile (line 244) | function isNameTakenInFile(node, name) {
class DeclarationData (line 297) | class DeclarationData {
method constructor (line 301) | constructor(fileName, node, fileIdents) {
method getLocations (line 307) | getLocations(service) {
method shouldMangle (line 320) | shouldMangle(newName) {
class Mangler (line 345) | class Mangler {
method constructor (line 352) | constructor(projectPath, log = () => { }, config) {
method computeNewFileContents (line 361) | async computeNewFileContents(strictImplicitPublicHandling) {
function hasModifier (line 626) | function hasModifier(node, kind) {
function isInAmbientContext (line 630) | function isInAmbientContext(node) {
function normalize (line 638) | function normalize(path) {
function _run (line 641) | async function _run() {
FILE: build/lib/mangle/index.ts
class ShortIdent (line 17) | class ShortIdent {
method constructor (line 28) | constructor(
method next (line 32) | next(isNameTaken?: (name: string) => boolean): string {
method convert (line 42) | private static convert(n: number): string {
type FieldType (line 54) | const enum FieldType {
class ClassData (line 60) | class ClassData {
method constructor (line 69) | constructor(
method _getMemberName (line 117) | private static _getMemberName(node: ts.NamedDeclaration): string | und...
method _getFieldType (line 135) | private static _getFieldType(node: ts.Node): FieldType {
method _shouldMangle (line 145) | static _shouldMangle(type: FieldType): boolean {
method makeImplicitPublicActuallyPublic (line 151) | static makeImplicitPublicActuallyPublic(data: ClassData, reportViolati...
method fillInReplacement (line 173) | static fillInReplacement(data: ClassData) {
method _isNameTaken (line 230) | private _isNameTaken(name: string) {
method lookupShortName (line 251) | lookupShortName(name: string): string {
method addChild (line 265) | addChild(child: ClassData) {
function isNameTakenInFile (line 272) | function isNameTakenInFile(node: ts.Node, name: string): boolean {
class DeclarationData (line 334) | class DeclarationData {
method constructor (line 338) | constructor(
method getLocations (line 347) | getLocations(service: ts.LanguageService): Iterable<{ fileName: string...
method shouldMangle (line 362) | shouldMangle(newName: string): boolean {
type MangleOutput (line 382) | interface MangleOutput {
class Mangler (line 396) | class Mangler {
method constructor (line 403) | constructor(
method computeNewFileContents (line 415) | async computeNewFileContents(strictImplicitPublicHandling?: Set<string...
function hasModifier (line 733) | function hasModifier(node: ts.Node, kind: ts.SyntaxKind) {
function isInAmbientContext (line 738) | function isInAmbientContext(node: ts.Node): boolean {
function normalize (line 747) | function normalize(path: string): string {
function _run (line 751) | async function _run() {
FILE: build/lib/mangle/renameWorker.js
function findRenameLocations (line 14) | function findRenameLocations(projectPath, fileName, position) {
FILE: build/lib/mangle/renameWorker.ts
function findRenameLocations (line 12) | function findRenameLocations(
FILE: build/lib/mangle/staticLanguageServiceHost.js
class StaticLanguageServiceHost (line 13) | class StaticLanguageServiceHost {
method constructor (line 17) | constructor(projectPath) {
method getCompilationSettings (line 29) | getCompilationSettings() {
method getScriptFileNames (line 32) | getScriptFileNames() {
method getScriptVersion (line 35) | getScriptVersion(_fileName) {
method getProjectVersion (line 38) | getProjectVersion() {
method getScriptSnapshot (line 41) | getScriptSnapshot(fileName) {
method getCurrentDirectory (line 53) | getCurrentDirectory() {
method getDefaultLibFileName (line 56) | getDefaultLibFileName(options) {
FILE: build/lib/mangle/staticLanguageServiceHost.ts
class StaticLanguageServiceHost (line 9) | class StaticLanguageServiceHost implements ts.LanguageServiceHost {
method constructor (line 14) | constructor(readonly projectPath: string) {
method getCompilationSettings (line 25) | getCompilationSettings(): ts.CompilerOptions {
method getScriptFileNames (line 28) | getScriptFileNames(): string[] {
method getScriptVersion (line 31) | getScriptVersion(_fileName: string): string {
method getProjectVersion (line 34) | getProjectVersion(): string {
method getScriptSnapshot (line 37) | getScriptSnapshot(fileName: string): ts.IScriptSnapshot | undefined {
method getCurrentDirectory (line 49) | getCurrentDirectory(): string {
method getDefaultLibFileName (line 52) | getDefaultLibFileName(options: ts.CompilerOptions): string {
FILE: build/lib/monaco-api.js
constant SRC (line 19) | const SRC = path_1.default.join(__dirname, '../../src');
constant DECLARATION_PATH (line 21) | const DECLARATION_PATH = path_1.default.join(__dirname, '../../src/vs/mo...
function logErr (line 22) | function logErr(message, ...rest) {
function isDeclaration (line 25) | function isDeclaration(ts, a) {
function visitTopLevelDeclarations (line 33) | function visitTopLevelDeclarations(ts, sourceFile, visitor) {
function getAllTopLevelDeclarations (line 56) | function getAllTopLevelDeclarations(ts, sourceFile) {
function getTopLevelDeclaration (line 78) | function getTopLevelDeclaration(ts, sourceFile, typeName) {
function getNodeText (line 97) | function getNodeText(sourceFile, node) {
function hasModifier (line 100) | function hasModifier(modifiers, kind) {
function isStatic (line 111) | function isStatic(ts, member) {
function isDefaultExport (line 117) | function isDefaultExport(ts, declaration) {
function getMassagedTopLevelDeclarationText (line 121) | function getMassagedTopLevelDeclarationText(ts, sourceFile, declaration,...
function format (line 181) | function format(ts, text, endl) {
function createReplacerFromDirectives (line 301) | function createReplacerFromDirectives(directives) {
function createReplacer (line 309) | function createReplacer(data) {
function generateDeclarationFile (line 326) | function generateDeclarationFile(ts, recipe, sourceFileGetter) {
function _run (line 469) | function _run(ts, sourceFileGetter) {
class FSProvider (line 490) | class FSProvider {
method existsSync (line 491) | existsSync(filePath) {
method statSync (line 494) | statSync(filePath) {
method readFileSync (line 497) | readFileSync(_moduleId, filePath) {
class CacheEntry (line 502) | class CacheEntry {
method constructor (line 505) | constructor(sourceFile, mtime) {
class DeclarationResolver (line 510) | class DeclarationResolver {
method constructor (line 514) | constructor(_fsProvider) {
method invalidateCache (line 519) | invalidateCache(moduleId) {
method getDeclarationSourceFile (line 522) | getDeclarationSourceFile(moduleId) {
method _getFileName (line 536) | _getFileName(moduleId) {
method _getDeclarationSourceFile (line 542) | _getDeclarationSourceFile(moduleId) {
function run3 (line 563) | function run3(resolver) {
class TypeScriptLanguageServiceHost (line 567) | class TypeScriptLanguageServiceHost {
method constructor (line 572) | constructor(ts, libs, files, compilerOptions) {
method getCompilationSettings (line 579) | getCompilationSettings() {
method getScriptFileNames (line 582) | getScriptFileNames() {
method getScriptVersion (line 587) | getScriptVersion(_fileName) {
method getProjectVersion (line 590) | getProjectVersion() {
method getScriptSnapshot (line 593) | getScriptSnapshot(fileName) {
method getScriptKind (line 604) | getScriptKind(_fileName) {
method getCurrentDirectory (line 607) | getCurrentDirectory() {
method getDefaultLibFileName (line 610) | getDefaultLibFileName(_options) {
method isDefaultLibFileName (line 613) | isDefaultLibFileName(fileName) {
method readFile (line 616) | readFile(path, _encoding) {
method fileExists (line 619) | fileExists(path) {
function execute (line 623) | function execute() {
FILE: build/lib/monaco-api.ts
constant SRC (line 16) | const SRC = path.join(__dirname, '../../src');
constant RECIPE_PATH (line 17) | const RECIPE_PATH = path.join(__dirname, '../monaco/monaco.d.ts.recipe');
constant DECLARATION_PATH (line 18) | const DECLARATION_PATH = path.join(__dirname, '../../src/vs/monaco.d.ts');
function logErr (line 20) | function logErr(message: any, ...rest: any[]): void {
type SourceFileGetter (line 24) | type SourceFileGetter = (moduleId: string) => ts.SourceFile | null;
type TSTopLevelDeclaration (line 26) | type TSTopLevelDeclaration = ts.InterfaceDeclaration | ts.EnumDeclaratio...
type TSTopLevelDeclare (line 27) | type TSTopLevelDeclare = TSTopLevelDeclaration | ts.VariableStatement;
function isDeclaration (line 29) | function isDeclaration(ts: typeof import('typescript'), a: TSTopLevelDec...
function visitTopLevelDeclarations (line 40) | function visitTopLevelDeclarations(ts: typeof import('typescript'), sour...
function getAllTopLevelDeclarations (line 69) | function getAllTopLevelDeclarations(ts: typeof import('typescript'), sou...
function getTopLevelDeclaration (line 93) | function getTopLevelDeclaration(ts: typeof import('typescript'), sourceF...
function getNodeText (line 114) | function getNodeText(sourceFile: ts.SourceFile, node: { pos: number; end...
function hasModifier (line 118) | function hasModifier(modifiers: readonly ts.ModifierLike[] | undefined, ...
function isStatic (line 130) | function isStatic(ts: typeof import('typescript'), member: ts.ClassEleme...
function isDefaultExport (line 137) | function isDefaultExport(ts: typeof import('typescript'), declaration: t...
function getMassagedTopLevelDeclarationText (line 144) | function getMassagedTopLevelDeclarationText(ts: typeof import('typescrip...
function format (line 209) | function format(ts: typeof import('typescript'), text: string, endl: str...
function createReplacerFromDirectives (line 343) | function createReplacerFromDirectives(directives: [RegExp, string][]): (...
function createReplacer (line 352) | function createReplacer(data: string): (str: string) => string {
type ITempResult (line 372) | interface ITempResult {
type IEnumEntry (line 378) | interface IEnumEntry {
function generateDeclarationFile (line 383) | function generateDeclarationFile(ts: typeof import('typescript'), recipe...
type IMonacoDeclarationResult (line 550) | interface IMonacoDeclarationResult {
function _run (line 558) | function _run(ts: typeof import('typescript'), sourceFileGetter: SourceF...
class FSProvider (line 583) | class FSProvider {
method existsSync (line 584) | public existsSync(filePath: string): boolean {
method statSync (line 587) | public statSync(filePath: string): fs.Stats {
method readFileSync (line 590) | public readFileSync(_moduleId: string, filePath: string): Buffer {
class CacheEntry (line 595) | class CacheEntry {
method constructor (line 596) | constructor(
class DeclarationResolver (line 602) | class DeclarationResolver {
method constructor (line 607) | constructor(private readonly _fsProvider: FSProvider) {
method invalidateCache (line 612) | public invalidateCache(moduleId: string): void {
method getDeclarationSourceFile (line 616) | public getDeclarationSourceFile(moduleId: string): ts.SourceFile | null {
method _getFileName (line 631) | private _getFileName(moduleId: string): string {
method _getDeclarationSourceFile (line 638) | private _getDeclarationSourceFile(moduleId: string): CacheEntry | null {
function run3 (line 665) | function run3(resolver: DeclarationResolver): IMonacoDeclarationResult |...
type ILibMap (line 673) | interface ILibMap { [libName: string]: string }
type IFileMap (line 674) | interface IFileMap { [fileName: string]: string }
class TypeScriptLanguageServiceHost (line 676) | class TypeScriptLanguageServiceHost implements ts.LanguageServiceHost {
method constructor (line 683) | constructor(ts: typeof import('typescript'), libs: ILibMap, files: IFi...
method getCompilationSettings (line 692) | getCompilationSettings(): ts.CompilerOptions {
method getScriptFileNames (line 695) | getScriptFileNames(): string[] {
method getScriptVersion (line 702) | getScriptVersion(_fileName: string): string {
method getProjectVersion (line 705) | getProjectVersion(): string {
method getScriptSnapshot (line 708) | getScriptSnapshot(fileName: string): ts.IScriptSnapshot {
method getScriptKind (line 717) | getScriptKind(_fileName: string): ts.ScriptKind {
method getCurrentDirectory (line 720) | getCurrentDirectory(): string {
method getDefaultLibFileName (line 723) | getDefaultLibFileName(_options: ts.CompilerOptions): string {
method isDefaultLibFileName (line 726) | isDefaultLibFileName(fileName: string): boolean {
method readFile (line 729) | readFile(path: string, _encoding?: string): string | undefined {
method fileExists (line 732) | fileExists(path: string): boolean {
function execute (line 737) | function execute(): IMonacoDeclarationResult {
FILE: build/lib/nls.js
function collect (line 24) | function collect(ts, node, fn) {
function clone (line 38) | function clone(object) {
function nls (line 48) | function nls(options) {
function isImportNode (line 106) | function isImportNode(ts, node) {
function fileFrom (line 116) | function fileFrom(file, contents, path = file.path) {
function mappedPositionFrom (line 124) | function mappedPositionFrom(source, lc) {
function lcFrom (line 127) | function lcFrom(position) {
class SingleFileServiceHost (line 130) | class SingleFileServiceHost {
method constructor (line 135) | constructor(ts, options, filename, contents) {
method readFile (line 147) | readFile(path, _encoding) {
method fileExists (line 153) | fileExists(path) {
function isCallExpressionWithinTextSpanCollectStep (line 157) | function isCallExpressionWithinTextSpanCollectStep(ts, textSpan, node) {
function analyze (line 163) | function analyze(ts, contents, functionName, options = {}) {
class TextModel (line 239) | class TextModel {
method constructor (line 242) | constructor(contents) {
method get (line 258) | get(index) {
method set (line 261) | set(index, line) {
method lineCount (line 264) | get lineCount() {
method apply (line 272) | apply(patch) {
method toString (line 286) | toString() {
function patchJavascript (line 291) | function patchJavascript(patches, contents) {
function patchSourcemap (line 297) | function patchSourcemap(patches, rsm, smc) {
function parseLocalizeKeyOrValue (line 332) | function parseLocalizeKeyOrValue(sourceExpression) {
function patch (line 339) | function patch(ts, typescript, javascript, sourcemap, options) {
function patchFile (line 390) | function patchFile(javascriptFile, typescript, options) {
FILE: build/lib/nls.ts
class FileSourceMap (line 14) | class FileSourceMap extends File {
type CollectStepResult (line 18) | enum CollectStepResult {
function collect (line 25) | function collect(ts: typeof import('typescript'), node: ts.Node, fn: (no...
function clone (line 44) | function clone<T extends object>(object: T): T {
function nls (line 55) | function nls(options: { preserveEnglish: boolean }): NodeJS.ReadWriteStr...
function isImportNode (line 120) | function isImportNode(ts: typeof import('typescript'), node: ts.Node): b...
type ILocalizeKey (line 132) | type ILocalizeKey = string | { key: string };
type INlsPatchResult (line 134) | interface INlsPatchResult {
type ISpan (line 141) | interface ISpan {
type ILocalizeCall (line 146) | interface ILocalizeCall {
type ILocalizeAnalysisResult (line 153) | interface ILocalizeAnalysisResult {
type IPatch (line 157) | interface IPatch {
function fileFrom (line 162) | function fileFrom(file: File, contents: string, path: string = file.path) {
function mappedPositionFrom (line 171) | function mappedPositionFrom(source: string, lc: ts.LineAndCharacter): sm...
function lcFrom (line 175) | function lcFrom(position: sm.Position): ts.LineAndCharacter {
class SingleFileServiceHost (line 179) | class SingleFileServiceHost implements ts.LanguageServiceHost {
method constructor (line 184) | constructor(ts: typeof import('typescript'), private options: ts.Compi...
method readFile (line 196) | readFile(path: string, _encoding?: string): string | undefined {
method fileExists (line 202) | fileExists(path: string): boolean {
function isCallExpressionWithinTextSpanCollectStep (line 207) | function isCallExpressionWithinTextSpanCollectStep(ts: typeof import('ty...
function analyze (line 215) | function analyze(
class TextModel (line 310) | class TextModel {
method constructor (line 315) | constructor(contents: string) {
method get (line 335) | public get(index: number): string {
method set (line 339) | public set(index: number, line: string): void {
method lineCount (line 343) | public get lineCount(): number {
method apply (line 352) | public apply(patch: IPatch): void {
method toString (line 370) | public toString(): string {
function patchJavascript (line 376) | function patchJavascript(patches: IPatch[], contents: string): string {
function patchSourcemap (line 385) | function patchSourcemap(patches: IPatch[], rsm: sm.RawSourceMap, smc: sm...
function parseLocalizeKeyOrValue (line 430) | function parseLocalizeKeyOrValue(sourceExpression: string) {
function patch (line 438) | function patch(ts: typeof import('typescript'), typescript: string, java...
function patchFile (line 497) | function patchFile(javascriptFile: File, typescript: string, options: { ...
FILE: build/lib/optimize.js
constant REPO_ROOT_PATH (line 58) | const REPO_ROOT_PATH = path_1.default.join(__dirname, '../..');
constant DEFAULT_FILE_HEADER (line 59) | const DEFAULT_FILE_HEADER = [
function bundleESMTask (line 64) | function bundleESMTask(opts) {
function bundleTask (line 182) | function bundleTask(opts) {
function minifyTask (line 187) | function minifyTask(src, sourceMapBaseUrl) {
FILE: build/lib/optimize.ts
constant REPO_ROOT_PATH (line 20) | const REPO_ROOT_PATH = path.join(__dirname, '../..');
type IBundleESMTaskOpts (line 22) | interface IBundleESMTaskOpts {
constant DEFAULT_FILE_HEADER (line 47) | const DEFAULT_FILE_HEADER = [
function bundleESMTask (line 53) | function bundleESMTask(opts: IBundleESMTaskOpts): NodeJS.ReadWriteStream {
type IBundleESMTaskOpts (line 195) | interface IBundleESMTaskOpts {
function bundleTask (line 206) | function bundleTask(opts: IBundleESMTaskOpts): () => NodeJS.ReadWriteStr...
function minifyTask (line 212) | function minifyTask(src: string, sourceMapBaseUrl?: string): (cb: any) =...
FILE: build/lib/policies.js
function isNlsString (line 19) | function isNlsString(value) {
function isStringArray (line 22) | function isStringArray(value) {
function isNlsStringArray (line 25) | function isNlsStringArray(value) {
function renderADMLString (line 36) | function renderADMLString(prefix, moduleName, nlsString, translations) {
function renderProfileString (line 49) | function renderProfileString(_prefix, moduleName, nlsString, translation...
class BasePolicy (line 62) | class BasePolicy {
method constructor (line 69) | constructor(type, name, category, minimumVersion, description, moduleN...
method renderADMLString (line 77) | renderADMLString(nlsString, translations) {
method renderADMX (line 80) | renderADMX(regKey) {
method renderADMLStrings (line 91) | renderADMLStrings(translations) {
method renderADMLPresentation (line 97) | renderADMLPresentation() {
method renderProfile (line 100) | renderProfile() {
method renderProfileManifest (line 103) | renderProfileManifest(translations) {
class BooleanPolicy (line 109) | class BooleanPolicy extends BasePolicy {
method from (line 110) | static from(name, category, minimumVersion, description, moduleName, s...
method constructor (line 117) | constructor(name, category, minimumVersion, description, moduleName) {
method renderADMXElements (line 120) | renderADMXElements() {
method renderADMLPresentationContents (line 127) | renderADMLPresentationContents() {
method renderProfileValue (line 130) | renderProfileValue() {
method renderProfileManifestValue (line 133) | renderProfileManifestValue(translations) {
class ParseError (line 146) | class ParseError extends Error {
method constructor (line 147) | constructor(message, moduleName, node) {
class NumberPolicy (line 151) | class NumberPolicy extends BasePolicy {
method from (line 153) | static from(name, category, minimumVersion, description, moduleName, s...
method constructor (line 164) | constructor(name, category, minimumVersion, description, moduleName, d...
method renderADMXElements (line 168) | renderADMXElements() {
method renderADMLPresentationContents (line 174) | renderADMLPresentationContents() {
method renderProfileValue (line 177) | renderProfileValue() {
method renderProfileManifestValue (line 180) | renderProfileManifestValue(translations) {
class StringPolicy (line 193) | class StringPolicy extends BasePolicy {
method from (line 194) | static from(name, category, minimumVersion, description, moduleName, s...
method constructor (line 201) | constructor(name, category, minimumVersion, description, moduleName) {
method renderADMXElements (line 204) | renderADMXElements() {
method renderADMLPresentationContents (line 207) | renderADMLPresentationContents() {
method renderProfileValue (line 210) | renderProfileValue() {
method renderProfileManifestValue (line 213) | renderProfileManifestValue(translations) {
class ObjectPolicy (line 226) | class ObjectPolicy extends BasePolicy {
method from (line 227) | static from(name, category, minimumVersion, description, moduleName, s...
method constructor (line 234) | constructor(name, category, minimumVersion, description, moduleName) {
method renderADMXElements (line 237) | renderADMXElements() {
method renderADMLPresentationContents (line 240) | renderADMLPresentationContents() {
method renderProfileValue (line 243) | renderProfileValue() {
method renderProfileManifestValue (line 246) | renderProfileManifestValue(translations) {
class StringEnumPolicy (line 260) | class StringEnumPolicy extends BasePolicy {
method from (line 263) | static from(name, category, minimumVersion, description, moduleName, s...
method constructor (line 284) | constructor(name, category, minimumVersion, description, moduleName, e...
method renderADMXElements (line 289) | renderADMXElements() {
method renderADMLStrings (line 296) | renderADMLStrings(translations) {
method renderADMLPresentationContents (line 302) | renderADMLPresentationContents() {
method renderProfileValue (line 305) | renderProfileValue() {
method renderProfileManifestValue (line 308) | renderProfileManifestValue(translations) {
method value (line 327) | value(matches) {
method value (line 353) | value(matches) {
method value (line 373) | value(matches) {
function getProperty (line 382) | function getProperty(qtype, moduleName, node, key) {
function getNumberProperty (line 398) | function getNumberProperty(moduleName, node, key) {
function getStringProperty (line 401) | function getStringProperty(moduleName, node, key) {
function getStringArrayProperty (line 404) | function getStringArrayProperty(moduleName, node, key) {
function getPolicy (line 415) | function getPolicy(moduleName, configurationNode, settingNode, policyNod...
function getPolicies (line 461) | function getPolicies(moduleName, node) {
function getFiles (line 487) | async function getFiles(root) {
function renderADMX (line 497) | function renderADMX(regKey, versions, categories, policies) {
function renderADML (line 520) | function renderADML(appName, versions, categories, policies, translation...
function renderProfileManifest (line 539) | function renderProfileManifest(appName, bundleIdentifier, _versions, _ca...
function renderMacOSPolicy (line 664) | function renderMacOSPolicy(policies, translations) {
function renderGP (line 719) | function renderGP(policies, translations) {
function getSpecificNLS (line 747) | async function getSpecificNLS(resourceUrlTemplate, languageId, version) {
function parseVersion (line 762) | function parseVersion(version) {
function compareVersions (line 766) | function compareVersions(a, b) {
function queryVersions (line 775) | async function queryVersions(serviceUrl, languageId) {
function getNLS (line 794) | async function getNLS(extensionGalleryServiceUrl, resourceUrlTemplate, l...
function parsePolicies (line 804) | async function parsePolicies() {
function getTranslations (line 818) | async function getTranslations() {
function windowsMain (line 834) | async function windowsMain(policies, translations) {
function darwinMain (line 846) | async function darwinMain(policies, translations) {
function main (line 862) | async function main() {
FILE: build/lib/policies.ts
type NlsString (line 16) | type NlsString = { value: string; nlsKey: string };
function isNlsString (line 18) | function isNlsString(value: string | NlsString | undefined): value is Nl...
function isStringArray (line 22) | function isStringArray(value: (string | NlsString)[]): value is string[] {
function isNlsStringArray (line 26) | function isNlsStringArray(value: (string | NlsString)[]): value is NlsSt...
type Category (line 30) | interface Category {
type PolicyType (line 35) | enum PolicyType {
type Policy (line 43) | interface Policy {
function renderADMLString (line 56) | function renderADMLString(prefix: string, moduleName: string, nlsString:...
function renderProfileString (line 74) | function renderProfileString(_prefix: string, moduleName: string, nlsStr...
method constructor (line 93) | constructor(
method renderADMLString (line 102) | protected renderADMLString(nlsString: NlsString, translations?: Language...
method renderADMX (line 106) | renderADMX(regKey: string) {
method renderADMLStrings (line 120) | renderADMLStrings(translations?: LanguageTranslations) {
method renderADMLPresentation (line 127) | renderADMLPresentation(): string {
method renderProfile (line 133) | renderProfile() {
method renderProfileManifest (line 137) | renderProfileManifest(translations?: LanguageTranslations): string {
class BooleanPolicy (line 147) | class BooleanPolicy extends BasePolicy {
method from (line 149) | static from(
method constructor (line 166) | private constructor(
method renderADMXElements (line 176) | protected renderADMXElements(): string[] {
method renderADMLPresentationContents (line 184) | renderADMLPresentationContents() {
method renderProfileValue (line 188) | renderProfileValue(): string {
method renderProfileManifestValue (line 192) | renderProfileManifestValue(translations?: LanguageTranslations): string {
class ParseError (line 206) | class ParseError extends Error {
method constructor (line 207) | constructor(message: string, moduleName: string, node: Parser.SyntaxNo...
class NumberPolicy (line 212) | class NumberPolicy extends BasePolicy {
method from (line 214) | static from(
method constructor (line 237) | private constructor(
method renderADMXElements (line 248) | protected renderADMXElements(): string[] {
method renderADMLPresentationContents (line 255) | renderADMLPresentationContents() {
method renderProfileValue (line 259) | renderProfileValue() {
method renderProfileManifestValue (line 263) | renderProfileManifestValue(translations?: LanguageTranslations) {
class StringPolicy (line 277) | class StringPolicy extends BasePolicy {
method from (line 279) | static from(
method constructor (line 296) | private constructor(
method renderADMXElements (line 306) | protected renderADMXElements(): string[] {
method renderADMLPresentationContents (line 310) | renderADMLPresentationContents() {
method renderProfileValue (line 314) | renderProfileValue(): string {
method renderProfileManifestValue (line 318) | renderProfileManifestValue(translations?: LanguageTranslations): string {
class ObjectPolicy (line 332) | class ObjectPolicy extends BasePolicy {
method from (line 334) | static from(
method constructor (line 351) | private constructor(
method renderADMXElements (line 361) | protected renderADMXElements(): string[] {
method renderADMLPresentationContents (line 365) | renderADMLPresentationContents() {
method renderProfileValue (line 369) | renderProfileValue(): string {
method renderProfileManifestValue (line 373) | renderProfileManifestValue(translations?: LanguageTranslations): string {
class StringEnumPolicy (line 388) | class StringEnumPolicy extends BasePolicy {
method from (line 390) | static from(
method constructor (line 425) | private constructor(
method renderADMXElements (line 437) | protected renderADMXElements(): string[] {
method renderADMLStrings (line 445) | renderADMLStrings(translations?: LanguageTranslations) {
method renderADMLPresentationContents (line 452) | renderADMLPresentationContents() {
method renderProfileValue (line 456) | renderProfileValue() {
method renderProfileManifestValue (line 460) | renderProfileManifestValue(translations?: LanguageTranslations): string {
type QType (line 478) | interface QType<T> {
method value (line 486) | value(matches: Parser.QueryMatch[]): number | undefined {
method value (line 518) | value(matches: Parser.QueryMatch[]): string | NlsString | undefined {
method value (line 544) | value(matches: Parser.QueryMatch[]): (string | NlsString)[] | undefined {
function getProperty (line 555) | function getProperty<T>(qtype: QType<T>, moduleName: string, node: Parse...
function getNumberProperty (line 575) | function getNumberProperty(moduleName: string, node: Parser.SyntaxNode, ...
function getStringProperty (line 579) | function getStringProperty(moduleName: string, node: Parser.SyntaxNode, ...
function getStringArrayProperty (line 583) | function getStringArrayProperty(moduleName: string, node: Parser.SyntaxN...
function getPolicy (line 596) | function getPolicy(
function getPolicies (line 658) | function getPolicies(moduleName: string, node: Parser.SyntaxNode): Polic...
function getFiles (line 687) | async function getFiles(root: string): Promise<string[]> {
function renderADMX (line 698) | function renderADMX(regKey: string, versions: string[], categories: Cate...
function renderADML (line 723) | function renderADML(appName: string, versions: string[], categories: Cat...
function renderProfileManifest (line 743) | function renderProfileManifest(appName: string, bundleIdentifier: string...
function renderMacOSPolicy (line 872) | function renderMacOSPolicy(policies: Policy[], translations: Translation...
function renderGP (line 934) | function renderGP(policies: Policy[], translations: Translations) {
type LanguageTranslations (line 967) | type LanguageTranslations = { [moduleName: string]: { [nlsKey: string]: ...
type Translations (line 968) | type Translations = { languageId: string; languageTranslations: Language...
type Version (line 970) | type Version = [number, number, number];
function getSpecificNLS (line 972) | async function getSpecificNLS(resourceUrlTemplate: string, languageId: s...
function parseVersion (line 991) | function parseVersion(version: string): Version {
function compareVersions (line 996) | function compareVersions(a: Version, b: Version): number {
function queryVersions (line 1002) | async function queryVersions(serviceUrl: string, languageId: string): Pr...
function getNLS (line 1024) | async function getNLS(extensionGalleryServiceUrl: string, resourceUrlTem...
function parsePolicies (line 1037) | async function parsePolicies(): Promise<Policy[]> {
function getTranslations (line 1055) | async function getTranslations(): Promise<Translations> {
function windowsMain (line 1079) | async function windowsMain(policies: Policy[], translations: Translation...
function darwinMain (line 1095) | async function darwinMain(policies: Policy[], translations: Translations) {
function main (line 1114) | async function main() {
FILE: build/lib/postcss.js
function gulpPostcss (line 13) | function gulpPostcss(plugins, handleError) {
FILE: build/lib/postcss.ts
function gulpPostcss (line 9) | function gulpPostcss(plugins: postcss.AcceptedPlugin[], handleError?: (e...
FILE: build/lib/preLaunch.js
function runProcess (line 16) | function runProcess(command, args = []) {
function exists (line 23) | async function exists(subdir) {
function ensureNodeModules (line 32) | async function ensureNodeModules() {
function getElectron (line 37) | async function getElectron() {
function ensureCompiled (line 40) | async function ensureCompiled() {
function main (line 45) | async function main() {
FILE: build/lib/preLaunch.ts
function runProcess (line 15) | function runProcess(command: string, args: ReadonlyArray<string> = []) {
function exists (line 23) | async function exists(subdir: string) {
function ensureNodeModules (line 32) | async function ensureNodeModules() {
function getElectron (line 38) | async function getElectron() {
function ensureCompiled (line 42) | async function ensureCompiled() {
function main (line 48) | async function main() {
FILE: build/lib/propertyInitOrderChecker.js
constant TS_CONFIG_PATH (line 44) | const TS_CONFIG_PATH = path.join(__dirname, '../../', 'src', 'tsconfig.j...
function createProgram (line 174) | function createProgram(tsconfigPath) {
function visit (line 198) | function visit(node) {
function checkParameterPropertyDeclaration (line 204) | function checkParameterPropertyDeclaration(param) {
function requiresInvocation (line 248) | function requiresInvocation(definition) {
function isInvocation (line 251) | function isInvocation(use) {
function formatFileName (line 262) | function formatFileName(node) {
function formatLocation (line 266) | function formatLocation(node) {
function formatStack (line 271) | function formatStack(stack) {
function formatMember (line 274) | function formatMember(container) {
function formatUse (line 285) | function formatUse(use) {
function findContainer (line 304) | function findContainer(node) {
function findClass (line 322) | function findClass(node) {
function findAllReferences (line 342) | function findAllReferences(node) {
FILE: build/lib/propertyInitOrderChecker.ts
constant TS_CONFIG_PATH (line 11) | const TS_CONFIG_PATH = path.join(__dirname, '../../', 'src', 'tsconfig.j...
function createProgram (line 149) | function createProgram(tsconfigPath: string): ts.Program {
function visit (line 183) | function visit(node: ts.Node) {
function checkParameterPropertyDeclaration (line 191) | function checkParameterPropertyDeclaration(param: ts.ParameterPropertyDe...
type InvalidUse (line 215) | interface InvalidUse {
function requiresInvocation (line 246) | function requiresInvocation(definition: ReferenceContainer): boolean {
function isInvocation (line 250) | function isInvocation(use: ts.Node): boolean {
function formatFileName (line 262) | function formatFileName(node: ts.Node): string {
function formatLocation (line 267) | function formatLocation(node: ts.Node): string {
function formatStack (line 273) | function formatStack(stack: ts.Node[]): string {
function formatMember (line 277) | function formatMember(container: ReferenceContainer): string {
function formatUse (line 289) | function formatUse(use: ts.Node): string {
type ReferenceContainer (line 309) | type ReferenceContainer =
function findContainer (line 321) | function findContainer(node: ts.Node): ReferenceContainer | undefined {
function findClass (line 340) | function findClass(node: ts.Node): ts.ClassLikeDeclaration | undefined {
function findAllReferences (line 363) | function findAllReferences(node: ts.Node): readonly SymbolAndEntries[] {
type SymbolAndEntries (line 371) | interface SymbolAndEntries {
type DefinitionKind (line 376) | const enum DefinitionKind {
type Definition (line 385) | type Definition =
type EntryKind (line 394) | const enum EntryKind {
type NodeEntryKind (line 401) | type NodeEntryKind = EntryKind.Node | EntryKind.StringLiteral | EntryKin...
type Entry (line 402) | type Entry = NodeEntry | SpanEntry;
type ContextWithStartAndEndNode (line 403) | interface ContextWithStartAndEndNode {
type ContextNode (line 407) | type ContextNode = ts.Node | ContextWithStartAndEndNode;
type NodeEntry (line 408) | interface NodeEntry {
type SpanEntry (line 413) | interface SpanEntry {
FILE: build/lib/reporter.js
class ErrorLog (line 16) | class ErrorLog {
method constructor (line 18) | constructor(id) {
method onStart (line 24) | onStart() {
method onEnd (line 31) | onEnd() {
method log (line 37) | log() {
function getErrorLog (line 63) | function getErrorLog(id = '') {
function createReporter (line 78) | function createReporter(id) {
FILE: build/lib/reporter.ts
class ErrorLog (line 12) | class ErrorLog {
method constructor (line 13) | constructor(public id: string) {
method onStart (line 19) | onStart(): void {
method onEnd (line 28) | onEnd(): void {
method log (line 36) | log(): void {
function getErrorLog (line 67) | function getErrorLog(id: string = '') {
type IReporter (line 84) | interface IReporter {
function createReporter (line 90) | function createReporter(id?: string): IReporter {
FILE: build/lib/snapshotLoader.js
function snapshotLoader (line 36) | function snapshotLoader(loaderFilepath, startupBlobFilepath) {
FILE: build/lib/snapshotLoader.ts
function snapshotLoader (line 42) | function snapshotLoader(loaderFilepath: string, startupBlobFilepath: str...
FILE: build/lib/standalone.js
constant REPO_ROOT (line 47) | const REPO_ROOT = path_1.default.join(__dirname, '../../');
constant SRC_DIR (line 48) | const SRC_DIR = path_1.default.join(REPO_ROOT, 'src');
function writeFile (line 50) | function writeFile(filePath, contents) {
function extractEditor (line 65) | function extractEditor(options) {
function transportCSS (line 147) | function transportCSS(module, enqueue, write) {
FILE: build/lib/standalone.ts
constant REPO_ROOT (line 10) | const REPO_ROOT = path.join(__dirname, '../../');
constant SRC_DIR (line 11) | const SRC_DIR = path.join(REPO_ROOT, 'src');
function writeFile (line 15) | function writeFile(filePath: string, contents: Buffer | string): void {
function extractEditor (line 32) | function extractEditor(options: tss.ITreeShakingOptions & { destRoot: st...
function transportCSS (line 125) | function transportCSS(module: string, enqueue: (module: string) => void,...
FILE: build/lib/stats.js
class Entry (line 14) | class Entry {
method constructor (line 18) | constructor(name, totalCount, totalSize) {
method toString (line 23) | toString(pretty) {
function createStatsStream (line 46) | function createStatsStream(group, log) {
FILE: build/lib/stats.ts
class Entry (line 11) | class Entry {
method constructor (line 12) | constructor(readonly name: string, public totalCount: number, public t...
method toString (line 14) | toString(pretty?: boolean): string {
function createStatsStream (line 38) | function createStatsStream(group: string, log?: boolean): es.ThroughStre...
FILE: build/lib/stylelint/validateVariableNames.js
constant RE_VAR_PROP (line 13) | const RE_VAR_PROP = /var\(\s*(--([\w\-\.]+))/g;
function getKnownVariableNames (line 15) | function getKnownVariableNames() {
function getVariableNameValidator (line 24) | function getVariableNameValidator() {
FILE: build/lib/stylelint/validateVariableNames.ts
constant RE_VAR_PROP (line 9) | const RE_VAR_PROP = /var\(\s*(--([\w\-\.]+))/g;
function getKnownVariableNames (line 12) | function getKnownVariableNames() {
type IValidator (line 23) | interface IValidator {
function getVariableNameValidator (line 27) | function getVariableNameValidator(): IValidator {
FILE: build/lib/task.js
function _isPromise (line 15) | function _isPromise(p) {
function _renderTime (line 21) | function _renderTime(time) {
function _execute (line 24) | async function _execute(task) {
function _doExecute (line 37) | async function _doExecute(task) {
function series (line 66) | function series(...tasks) {
function parallel (line 75) | function parallel(...tasks) {
function define (line 82) | function define(name, task) {
FILE: build/lib/task.ts
type BaseTask (line 9) | interface BaseTask {
type PromiseTask (line 14) | interface PromiseTask extends BaseTask {
type StreamTask (line 17) | interface StreamTask extends BaseTask {
type CallbackTask (line 20) | interface CallbackTask extends BaseTask {
type Task (line 24) | type Task = PromiseTask | StreamTask | CallbackTask;
function _isPromise (line 26) | function _isPromise(p: Promise<void> | NodeJS.ReadWriteStream): p is Pro...
function _renderTime (line 33) | function _renderTime(time: number): string {
function _execute (line 37) | async function _execute(task: Task): Promise<void> {
function _doExecute (line 51) | async function _doExecute(task: Task): Promise<void> {
function series (line 85) | function series(...tasks: Task[]): PromiseTask {
function parallel (line 95) | function parallel(...tasks: Task[]): PromiseTask {
function define (line 103) | function define(name: string, task: Task): Task {
FILE: build/lib/treeshaking.js
constant TYPESCRIPT_LIB_FOLDER (line 15) | const TYPESCRIPT_LIB_FOLDER = path_1.default.dirname(require.resolve('ty...
function toStringShakeLevel (line 22) | function toStringShakeLevel(shakeLevel) {
function printDiagnostics (line 32) | function printDiagnostics(options, diagnostics) {
function shake (line 46) | function shake(options) {
function createTypeScriptLanguageService (line 69) | function createTypeScriptLanguageService(ts, options) {
function discoverAndReadFiles (line 90) | function discoverAndReadFiles(ts, options) {
function processLibFiles (line 146) | function processLibFiles(ts, options) {
class TypeScriptLanguageServiceHost (line 169) | class TypeScriptLanguageServiceHost {
method constructor (line 174) | constructor(ts, libs, files, compilerOptions) {
method getCompilationSettings (line 181) | getCompilationSettings() {
method getScriptFileNames (line 184) | getScriptFileNames() {
method getScriptVersion (line 189) | getScriptVersion(_fileName) {
method getProjectVersion (line 192) | getProjectVersion() {
method getScriptSnapshot (line 195) | getScriptSnapshot(fileName) {
method getScriptKind (line 206) | getScriptKind(_fileName) {
method getCurrentDirectory (line 209) | getCurrentDirectory() {
method getDefaultLibFileName (line 212) | getDefaultLibFileName(_options) {
method isDefaultLibFileName (line 215) | isDefaultLibFileName(fileName) {
method readFile (line 218) | readFile(path, _encoding) {
method fileExists (line 221) | fileExists(path) {
function getColor (line 233) | function getColor(node) {
function setColor (line 236) | function setColor(node, color) {
function markNeededSourceFile (line 239) | function markNeededSourceFile(node) {
function isNeededSourceFile (line 242) | function isNeededSourceFile(node) {
function nodeOrParentIsBlack (line 245) | function nodeOrParentIsBlack(node) {
function nodeOrChildIsBlack (line 255) | function nodeOrChildIsBlack(node) {
function isSymbolWithDeclarations (line 266) | function isSymbolWithDeclarations(symbol) {
function isVariableStatementWithSideEffects (line 269) | function isVariableStatementWithSideEffects(ts, node) {
function isStaticMemberWithSideEffects (line 291) | function isStaticMemberWithSideEffects(ts, node) {
function markNodes (line 315) | function markNodes(ts, languageService, options) {
function nodeIsInItsOwnDeclaration (line 577) | function nodeIsInItsOwnDeclaration(nodeSourceFile, node, symbol) {
function generateResult (line 589) | function generateResult(ts, languageService, shakeLevel) {
function isLocalCodeExtendingOrInheritingFromDefaultLibSymbol (line 731) | function isLocalCodeExtendingOrInheritingFromDefaultLibSymbol(ts, progra...
function findSymbolFromHeritageType (line 747) | function findSymbolFromHeritageType(ts, checker, type) {
class SymbolImportTuple (line 760) | class SymbolImportTuple {
method constructor (line 763) | constructor(symbol, symbolImportNode) {
function getRealNodeSymbol (line 771) | function getRealNodeSymbol(ts, checker, node) {
function getTokenAtPosition (line 891) | function getTokenAtPosition(ts, sourceFile, position, allowPositionInLea...
FILE: build/lib/treeshaking.ts
constant TYPESCRIPT_LIB_FOLDER (line 10) | const TYPESCRIPT_LIB_FOLDER = path.dirname(require.resolve('typescript/l...
type ShakeLevel (line 12) | const enum ShakeLevel {
function toStringShakeLevel (line 18) | function toStringShakeLevel(shakeLevel: ShakeLevel): string {
type ITreeShakingOptions (line 29) | interface ITreeShakingOptions {
type ITreeShakingResult (line 63) | interface ITreeShakingResult {
function printDiagnostics (line 67) | function printDiagnostics(options: ITreeShakingOptions, diagnostics: Rea...
function shake (line 82) | function shake(options: ITreeShakingOptions): ITreeShakingResult {
function createTypeScriptLanguageService (line 111) | function createTypeScriptLanguageService(ts: typeof import('typescript')...
function discoverAndReadFiles (line 138) | function discoverAndReadFiles(ts: typeof import('typescript'), options: ...
function processLibFiles (line 208) | function processLibFiles(ts: typeof import('typescript'), options: ITree...
type ILibMap (line 233) | interface ILibMap { [libName: string]: string }
type IFileMap (line 234) | interface IFileMap { [fileName: string]: string }
class TypeScriptLanguageServiceHost (line 239) | class TypeScriptLanguageServiceHost implements ts.LanguageServiceHost {
method constructor (line 246) | constructor(ts: typeof import('typescript'), libs: ILibMap, files: IFi...
method getCompilationSettings (line 255) | getCompilationSettings(): ts.CompilerOptions {
method getScriptFileNames (line 258) | getScriptFileNames(): string[] {
method getScriptVersion (line 265) | getScriptVersion(_fileName: string): string {
method getProjectVersion (line 268) | getProjectVersion(): string {
method getScriptSnapshot (line 271) | getScriptSnapshot(fileName: string): ts.IScriptSnapshot {
method getScriptKind (line 280) | getScriptKind(_fileName: string): ts.ScriptKind {
method getCurrentDirectory (line 283) | getCurrentDirectory(): string {
method getDefaultLibFileName (line 286) | getDefaultLibFileName(_options: ts.CompilerOptions): string {
method isDefaultLibFileName (line 289) | isDefaultLibFileName(fileName: string): boolean {
method readFile (line 292) | readFile(path: string, _encoding?: string): string | undefined {
method fileExists (line 295) | fileExists(path: string): boolean {
type NodeColor (line 303) | const enum NodeColor {
function getColor (line 309) | function getColor(node: ts.Node): NodeColor {
function setColor (line 312) | function setColor(node: ts.Node, color: NodeColor): void {
function markNeededSourceFile (line 315) | function markNeededSourceFile(node: ts.SourceFile): void {
function isNeededSourceFile (line 318) | function isNeededSourceFile(node: ts.SourceFile): boolean {
function nodeOrParentIsBlack (line 321) | function nodeOrParentIsBlack(node: ts.Node): boolean {
function nodeOrChildIsBlack (line 331) | function nodeOrChildIsBlack(node: ts.Node): boolean {
function isSymbolWithDeclarations (line 343) | function isSymbolWithDeclarations(symbol: ts.Symbol | undefined | null):...
function isVariableStatementWithSideEffects (line 347) | function isVariableStatementWithSideEffects(ts: typeof import('typescrip...
function isStaticMemberWithSideEffects (line 370) | function isStaticMemberWithSideEffects(ts: typeof import('typescript'), ...
function markNodes (line 395) | function markNodes(ts: typeof import('typescript'), languageService: ts....
function nodeIsInItsOwnDeclaration (line 700) | function nodeIsInItsOwnDeclaration(nodeSourceFile: ts.SourceFile, node: ...
function generateResult (line 715) | function generateResult(ts: typeof import('typescript'), languageService...
function isLocalCodeExtendingOrInheritingFromDefaultLibSymbol (line 870) | function isLocalCodeExtendingOrInheritingFromDefaultLibSymbol(ts: typeof...
function findSymbolFromHeritageType (line 887) | function findSymbolFromHeritageType(ts: typeof import('typescript'), che...
class SymbolImportTuple (line 901) | class SymbolImportTuple {
method constructor (line 902) | constructor(
function getRealNodeSymbol (line 911) | function getRealNodeSymbol(ts: typeof import('typescript'), checker: ts....
function getTokenAtPosition (line 1047) | function getTokenAtPosition(ts: typeof import('typescript'), sourceFile:...
FILE: build/lib/tsb/builder.js
method isCancellationRequested (line 56) | isCancellationRequested() { return false; }
function normalize (line 59) | function normalize(path) {
function createTypeScriptBuilder (line 62) | function createTypeScriptBuilder(config, projectFile, cmd) {
class ScriptSnapshot (line 433) | class ScriptSnapshot {
method constructor (line 436) | constructor(text, mtime) {
method getVersion (line 440) | getVersion() {
method getText (line 443) | getText(start, end) {
method getLength (line 446) | getLength() {
method getChangeRange (line 449) | getChangeRange(_oldSnapshot) {
class VinylScriptSnapshot (line 453) | class VinylScriptSnapshot extends ScriptSnapshot {
method constructor (line 456) | constructor(file) {
method getBase (line 461) | getBase() {
class LanguageServiceHost (line 465) | class LanguageServiceHost {
method constructor (line 476) | constructor(_cmdLine, _projectPath, _log) {
method log (line 488) | log(_s) {
method trace (line 491) | trace(_s) {
method error (line 494) | error(s) {
method getCompilationSettings (line 497) | getCompilationSettings() {
method getProjectVersion (line 500) | getProjectVersion() {
method getScriptFileNames (line 503) | getScriptFileNames() {
method getScriptVersion (line 507) | getScriptVersion(filename) {
method getScriptSnapshot (line 515) | getScriptSnapshot(filename, resolve = true) {
method addScriptSnapshot (line 535) | addScriptSnapshot(filename, snapshot) {
method removeScriptSnapshot (line 560) | removeScriptSnapshot(filename) {
method getCurrentDirectory (line 568) | getCurrentDirectory() {
method getDefaultLibFileName (line 571) | getDefaultLibFileName(options) {
method collectDependents (line 580) | collectDependents(filename, target) {
method hasCyclicDependency (line 590) | hasCyclicDependency() {
method _processFile (line 600) | _processFile(filename) {
FILE: build/lib/tsb/builder.ts
type IConfiguration (line 15) | interface IConfiguration {
type CancellationToken (line 20) | interface CancellationToken {
method isCancellationRequested (line 26) | isCancellationRequested() { return false; }
type ITypeScriptBuilder (line 30) | interface ITypeScriptBuilder {
function normalize (line 36) | function normalize(path: string): string {
function createTypeScriptBuilder (line 40) | function createTypeScriptBuilder(config: IConfiguration, projectFile: st...
class ScriptSnapshot (line 480) | class ScriptSnapshot implements ts.IScriptSnapshot {
method constructor (line 485) | constructor(text: string, mtime: Date) {
method getVersion (line 490) | getVersion(): string {
method getText (line 494) | getText(start: number, end: number): string {
method getLength (line 498) | getLength(): number {
method getChangeRange (line 502) | getChangeRange(_oldSnapshot: ts.IScriptSnapshot): ts.TextChangeRange |...
class VinylScriptSnapshot (line 507) | class VinylScriptSnapshot extends ScriptSnapshot {
method constructor (line 513) | constructor(file: Vinyl & { sourceMap?: RawSourceMap }) {
method getBase (line 519) | getBase(): string {
class LanguageServiceHost (line 524) | class LanguageServiceHost implements ts.LanguageServiceHost {
method constructor (line 535) | constructor(
method log (line 550) | log(_s: string): void {
method trace (line 554) | trace(_s: string): void {
method error (line 558) | error(s: string): void {
method getCompilationSettings (line 562) | getCompilationSettings(): ts.CompilerOptions {
method getProjectVersion (line 566) | getProjectVersion(): string {
method getScriptFileNames (line 570) | getScriptFileNames(): string[] {
method getScriptVersion (line 575) | getScriptVersion(filename: string): string {
method getScriptSnapshot (line 584) | getScriptSnapshot(filename: string, resolve: boolean = true): ScriptSn...
method addScriptSnapshot (line 605) | addScriptSnapshot(filename: string, snapshot: ScriptSnapshot): ScriptS...
method removeScriptSnapshot (line 632) | removeScriptSnapshot(filename: string): boolean {
method getCurrentDirectory (line 641) | getCurrentDirectory(): string {
method getDefaultLibFileName (line 645) | getDefaultLibFileName(options: ts.CompilerOptions): string {
method collectDependents (line 657) | collectDependents(filename: string, target: string[]): void {
method hasCyclicDependency (line 668) | hasCyclicDependency(): string | undefined {
method _processFile (line 679) | _processFile(filename: string): void {
FILE: build/lib/tsb/index.js
class EmptyDuplex (line 55) | class EmptyDuplex extends stream_1.Duplex {
method _write (line 56) | _write(_chunk, _encoding, callback) { callback(); }
method _read (line 57) | _read() { this.push(null); }
function createNullCompiler (line 59) | function createNullCompiler() {
function create (line 65) | function create(projectPath, existingOptions, config, onError = _default...
FILE: build/lib/tsb/index.ts
type IncrementalCompiler (line 18) | interface IncrementalCompiler {
class EmptyDuplex (line 23) | class EmptyDuplex extends Duplex {
method _write (line 24) | _write(_chunk: any, _encoding: string, callback: (err?: Error) => void...
method _read (line 25) | _read() { this.push(null); }
function createNullCompiler (line 28) | function createNullCompiler(): IncrementalCompiler {
function create (line 36) | function create(
FILE: build/lib/tsb/transpiler.js
function transpile (line 16) | function transpile(tsSrc, options) {
class OutputFileNameOracle (line 43) | class OutputFileNameOracle {
method constructor (line 45) | constructor(cmdLine, configFilePath) {
class TranspileWorker (line 73) | class TranspileWorker {
method constructor (line 79) | constructor(outFileFn) {
method terminate (line 129) | terminate() {
method isBusy (line 133) | get isBusy() {
method next (line 136) | next(files, options) {
class TscTranspiler (line 150) | class TscTranspiler {
method constructor (line 159) | constructor(logFn, _onError, configFilePath, _cmdLine) {
method join (line 165) | async join() {
method transpile (line 174) | transpile(file) {
method _consumeQueue (line 184) | _consumeQueue() {
class ESBuildTranspiler (line 230) | class ESBuildTranspiler {
method constructor (line 238) | constructor(_logFn, _onError, configFilePath, _cmdLine) {
method join (line 266) | async join() {
method transpile (line 271) | transpile(file) {
function _isDefaultEmpty (line 299) | function _isDefaultEmpty(src) {
FILE: build/lib/tsb/transpiler.ts
type TranspileReq (line 12) | interface TranspileReq {
type TranspileRes (line 17) | interface TranspileRes {
function transpile (line 22) | function transpile(tsSrc: string, options: ts.TranspileOptions): { jsSrc...
class OutputFileNameOracle (line 52) | class OutputFileNameOracle {
method constructor (line 56) | constructor(cmdLine: ts.ParsedCommandLine, configFilePath: string) {
class TranspileWorker (line 93) | class TranspileWorker {
method constructor (line 103) | constructor(outFileFn: (fileName: string) => string) {
method terminate (line 162) | terminate() {
method isBusy (line 167) | get isBusy() {
method next (line 171) | next(files: Vinyl[], options: ts.TranspileOptions) {
type ITranspiler (line 186) | interface ITranspiler {
class TscTranspiler (line 192) | class TscTranspiler implements ITranspiler {
method constructor (line 205) | constructor(
method join (line 215) | async join() {
method transpile (line 227) | transpile(file: Vinyl) {
method _consumeQueue (line 240) | private _consumeQueue(): void {
class ESBuildTranspiler (line 294) | class ESBuildTranspiler implements ITranspiler {
method constructor (line 303) | constructor(
method join (line 336) | async join(): Promise<void> {
method transpile (line 342) | transpile(file: Vinyl): void {
function _isDefaultEmpty (line 375) | function _isDefaultEmpty(src: string): boolean {
FILE: build/lib/tsb/utils.js
function format (line 10) | function format(value, ...rest) {
class Node (line 20) | class Node {
method constructor (line 24) | constructor(data) {
class Graph (line 29) | class Graph {
method inertEdge (line 31) | inertEdge(from, to) {
method resetNode (line 37) | resetNode(data) {
method lookupOrInsertNode (line 47) | lookupOrInsertNode(data) {
method lookup (line 55) | lookup(data) {
method findCycle (line 58) | findCycle() {
FILE: build/lib/tsb/utils.ts
function format (line 8) | function format(value: string, ...rest: any[]): string {
class Node (line 18) | class Node<T> {
method constructor (line 23) | constructor(readonly data: T) {
class Graph (line 28) | class Graph<T> {
method inertEdge (line 32) | inertEdge(from: T, to: T): void {
method resetNode (line 40) | resetNode(data: T): void {
method lookupOrInsertNode (line 51) | lookupOrInsertNode(data: T): Node<T> {
method lookup (line 62) | lookup(data: T): Node<T> | null {
method findCycle (line 66) | findCycle(): T[] | undefined {
FILE: build/lib/typings/event-stream.d.ts
type ThroughStream (line 6) | interface ThroughStream extends _ThroughStream {
FILE: build/lib/typings/lazy.js.d.ts
type StrictLazy (line 22) | interface StrictLazy {
type ArrayLike (line 38) | interface ArrayLike<T> {
type Callback (line 43) | interface Callback {
type ErrorCallback (line 47) | interface ErrorCallback {
type ValueCallback (line 51) | interface ValueCallback<T> {
type GetKeyCallback (line 55) | interface GetKeyCallback<T> {
type TestCallback (line 59) | interface TestCallback<T> {
type MapCallback (line 63) | interface MapCallback<T, U> {
type MapStringCallback (line 67) | interface MapStringCallback {
type NumberCallback (line 71) | interface NumberCallback<T> {
type MemoCallback (line 75) | interface MemoCallback<T, U> {
type GeneratorCallback (line 79) | interface GeneratorCallback<T> {
type CompareCallback (line 83) | interface CompareCallback {
type Iterator (line 89) | interface Iterator<T> {
type GeneratedSequence (line 95) | interface GeneratedSequence<T> extends Sequence<T> {
type AsyncSequence (line 100) | interface AsyncSequence<T> extends SequenceBase<T> {
type AsyncHandle (line 104) | interface AsyncHandle<T> {
type Sequence (line 116) | interface Sequence<T> extends SequenceBase<T> {
type ArraySequence (line 120) | interface ArraySequence<T> extends SequenceBase<T[]> {
type SequenceBase (line 124) | interface SequenceBase<T> extends SequenceBaser<T> {
type SequenceBaser (line 136) | interface SequenceBaser<T> {
type ArrayLikeSequence (line 199) | interface ArrayLikeSequence<T> extends Sequence<T> {
type ObjectLikeSequence (line 221) | interface ObjectLikeSequence<T> extends Sequence<T> {
type StringLikeSequence (line 244) | interface StringLikeSequence extends SequenceBaser<string> {
FILE: build/lib/typings/stream.d.ts
type ComposeFnParam (line 2) | type ComposeFnParam = (source: any) => void;
type ReadWriteStream (line 3) | interface ReadWriteStream {
FILE: build/lib/typings/vinyl.d.ts
class File (line 13) | class File {
FILE: build/lib/util.js
function incremental (line 40) | function incremental(streamProvider, initial, supportsCancellation) {
function debounce (line 77) | function debounce(task, duration = 500) {
function fixWin32DirectoryPermissions (line 105) | function fixWin32DirectoryPermissions() {
function setExecutableBit (line 116) | function setExecutableBit(pattern) {
function toFileUri (line 135) | function toFileUri(filePath) {
function skipDirectories (line 142) | function skipDirectories() {
function cleanNodeModules (line 149) | function cleanNodeModules(rulePath) {
function loadSourcemaps (line 160) | function loadSourcemaps() {
function stripSourceMappingURL (line 201) | function stripSourceMappingURL() {
function $if (line 212) | function $if(test, onTrue, onFalse = event_stream_1.default.through()) {
function appendOwnPathSourceURL (line 219) | function appendOwnPathSourceURL() {
function rewriteSourceMappingURL (line 231) | function rewriteSourceMappingURL(sourceMappingURLBase) {
function rimraf (line 242) | function rimraf(dir) {
function _rreaddir (line 261) | function _rreaddir(dirPath, prepend, result) {
function rreddir (line 272) | function rreddir(dirPath) {
function ensureDir (line 277) | function ensureDir(dirPath) {
function rebase (line 284) | function rebase(count) {
function filter (line 290) | function filter(fn) {
function streamToPromise (line 302) | function streamToPromise(stream) {
function getElectronVersion (line 308) | function getElectronVersion() {
FILE: build/lib/util.ts
type ICancellationToken (line 21) | interface ICancellationToken {
type IStreamProvider (line 27) | interface IStreamProvider {
function incremental (line 31) | function incremental(streamProvider: IStreamProvider, initial: NodeJS.Re...
function debounce (line 80) | function debounce(task: () => NodeJS.ReadWriteStream, duration = 500): N...
function fixWin32DirectoryPermissions (line 115) | function fixWin32DirectoryPermissions(): NodeJS.ReadWriteStream {
function setExecutableBit (line 129) | function setExecutableBit(pattern?: string | string[]): NodeJS.ReadWrite...
function toFileUri (line 152) | function toFileUri(filePath: string): string {
function skipDirectories (line 162) | function skipDirectories(): NodeJS.ReadWriteStream {
function cleanNodeModules (line 170) | function cleanNodeModules(rulePath: string): NodeJS.ReadWriteStream {
class FileSourceMap (line 188) | class FileSourceMap extends VinylFile {
function loadSourcemaps (line 192) | function loadSourcemaps(): NodeJS.ReadWriteStream {
function stripSourceMappingURL (line 243) | function stripSourceMappingURL(): NodeJS.ReadWriteStream {
function $if (line 257) | function $if(test: boolean | ((f: VinylFile) => boolean), onTrue: NodeJS...
function appendOwnPathSourceURL (line 266) | function appendOwnPathSourceURL(): NodeJS.ReadWriteStream {
function rewriteSourceMappingURL (line 282) | function rewriteSourceMappingURL(sourceMappingURLBase: string): NodeJS.R...
function rimraf (line 296) | function rimraf(dir: string): () => Promise<void> {
function _rreaddir (line 321) | function _rreaddir(dirPath: string, prepend: string, result: string[]): ...
function rreddir (line 332) | function rreddir(dirPath: string): string[] {
function ensureDir (line 338) | function ensureDir(dirPath: string): void {
function rebase (line 346) | function rebase(count: number): NodeJS.ReadWriteStream {
type FilterStream (line 353) | interface FilterStream extends NodeJS.ReadWriteStream {
function filter (line 357) | function filter(fn: (data: any) => boolean): FilterStream {
function streamToPromise (line 370) | function streamToPromise(stream: NodeJS.ReadWriteStream): Promise<void> {
function getElectronVersion (line 377) | function getElectronVersion(): Record<string, string> {
FILE: build/lib/watch/watch-win32.js
function toChangeType (line 17) | function toChangeType(type) {
function watch (line 24) | function watch(root) {
FILE: build/lib/watch/watch-win32.ts
function toChangeType (line 16) | function toChangeType(type: '0' | '1' | '2'): 'change' | 'add' | 'unlink' {
function watch (line 24) | function watch(root: string): Stream {
FILE: build/linux/debian/calculate-deps.js
function generatePackageDeps (line 17) | function generatePackageDeps(files, arch, chromiumSysroot, vscodeSysroot) {
function calculatePackageDeps (line 24) | function calculatePackageDeps(binaryPath, arch, chromiumSysroot, vscodeS...
FILE: build/linux/debian/calculate-deps.ts
function generatePackageDeps (line 14) | function generatePackageDeps(files: string[], arch: DebianArchString, ch...
function calculatePackageDeps (line 22) | function calculatePackageDeps(binaryPath: string, arch: DebianArchString...
FILE: build/linux/debian/install-sysroot.js
constant URL_PREFIX (line 20) | const URL_PREFIX = 'https://msftelectronbuild.z5.web.core.windows.net';
constant URL_PATH (line 21) | const URL_PATH = 'sysroots/toolchain';
constant REPO_ROOT (line 22) | const REPO_ROOT = path_1.default.dirname(path_1.default.dirname(path_1.d...
function getElectronVersion (line 34) | function getElectronVersion() {
function getSha (line 40) | function getSha(filename) {
function getVSCodeSysrootChecksum (line 54) | function getVSCodeSysrootChecksum(expectedName) {
function fetchUrl (line 69) | async function fetchUrl(options, retries = 10, retryDelay = 1000) {
function getVSCodeSysroot (line 122) | async function getVSCodeSysroot(arch) {
function getChromiumSysroot (line 162) | async function getChromiumSysroot(arch) {
FILE: build/linux/debian/install-sysroot.ts
constant URL_PREFIX (line 16) | const URL_PREFIX = 'https://msftelectronbuild.z5.web.core.windows.net';
constant URL_PATH (line 17) | const URL_PATH = 'sysroots/toolchain';
constant REPO_ROOT (line 18) | const REPO_ROOT = path.dirname(path.dirname(path.dirname(__dirname)));
type IFetchOptions (line 34) | interface IFetchOptions {
function getElectronVersion (line 40) | function getElectronVersion(): Record<string, string> {
function getSha (line 47) | function getSha(filename: fs.PathLike): string {
function getVSCodeSysrootChecksum (line 62) | function getVSCodeSysrootChecksum(expectedName: string) {
function fetchUrl (line 78) | async function fetchUrl(options: IFetchOptions, retries = 10, retryDelay...
type SysrootDictEntry (line 130) | type SysrootDictEntry = {
function getVSCodeSysroot (line 136) | async function getVSCodeSysroot(arch: DebianArchString): Promise<string> {
function getChromiumSysroot (line 177) | async function getChromiumSysroot(arch: DebianArchString): Promise<strin...
FILE: build/linux/debian/types.js
function isDebianArchString (line 8) | function isDebianArchString(s) {
FILE: build/linux/debian/types.ts
type DebianArchString (line 6) | type DebianArchString = 'amd64' | 'armhf' | 'arm64';
function isDebianArchString (line 8) | function isDebianArchString(s: string): s is DebianArchString {
FILE: build/linux/dependencies-generator.js
constant FAIL_BUILD_FOR_NEW_DEPENDENCIES (line 28) | const FAIL_BUILD_FOR_NEW_DEPENDENCIES = true;
function getDependencies (line 39) | async function getDependencies(packageType, buildDir, applicationName, a...
function mergePackageDeps (line 100) | function mergePackageDeps(inputDeps) {
FILE: build/linux/dependencies-generator.ts
constant FAIL_BUILD_FOR_NEW_DEPENDENCIES (line 26) | const FAIL_BUILD_FOR_NEW_DEPENDENCIES: boolean = true;
function getDependencies (line 39) | async function getDependencies(packageType: 'deb' | 'rpm', buildDir: str...
function mergePackageDeps (line 107) | function mergePackageDeps(inputDeps: Set<string>[]): Set<string> {
FILE: build/linux/libcxx-fetcher.js
function downloadLibcxxHeaders (line 20) | async function downloadLibcxxHeaders(outDir, electronVersion, lib_name) {
function downloadLibcxxObjects (line 36) | async function downloadLibcxxObjects(outDir, electronVersion, targetArch...
function main (line 53) | async function main() {
FILE: build/linux/libcxx-fetcher.ts
function downloadLibcxxHeaders (line 18) | async function downloadLibcxxHeaders(outDir: string, electronVersion: st...
function downloadLibcxxObjects (line 37) | async function downloadLibcxxObjects(outDir: string, electronVersion: st...
function main (line 57) | async function main(): Promise<void> {
FILE: build/linux/rpm/calculate-deps.js
function generatePackageDeps (line 11) | function generatePackageDeps(files) {
function calculatePackageDeps (line 18) | function calculatePackageDeps(binaryPath) {
FILE: build/linux/rpm/calculate-deps.ts
function generatePackageDeps (line 10) | function generatePackageDeps(files: string[]): Set<string>[] {
function calculatePackageDeps (line 18) | function calculatePackageDeps(binaryPath: string): Set<string> {
FILE: build/linux/rpm/types.js
function isRpmArchString (line 8) | function isRpmArchString(s) {
FILE: build/linux/rpm/types.ts
type RpmArchString (line 6) | type RpmArchString = 'x86_64' | 'armv7hl' | 'aarch64';
function isRpmArchString (line 8) | function isRpmArchString(s: string): s is RpmArchString {
FILE: build/npm/postinstall.js
function log (line 14) | function log(dir, message) {
function run (line 22) | function run(command, args, opts) {
function npmInstall (line 40) | function npmInstall(dir, opts) {
function setNpmrcConfig (line 68) | function setNpmrcConfig(dir, env) {
function removeParcelWatcherPrebuild (line 100) | function removeParcelWatcherPrebuild(dir) {
FILE: build/npm/preinstall.js
function hasSupportedVisualStudioVersion (line 41) | function hasSupportedVisualStudioVersion() {
function installHeaders (line 78) | function installHeaders() {
function getHeaderInfo (line 110) | function getHeaderInfo(rcFile) {
FILE: build/npm/update-all-grammars.mjs
function spawn (line 11) | async function spawn(cmd, args, opts) {
function main (line 18) | async function main() {
FILE: build/npm/update-localization-extension.js
function update (line 17) | function update(options) {
FILE: build/setup-npm-registry.js
function setup (line 26) | async function setup(url, file) {
function main (line 32) | async function main(url, dir) {
FILE: build/stylelint.js
function gulpstylelint (line 14) | function gulpstylelint(reporter) {
function stylelint (line 38) | function stylelint() {
FILE: build/win32/explorer-appx-fetcher.js
function downloadExplorerAppx (line 18) | async function downloadExplorerAppx(outDir, quality = 'stable', targetAr...
function main (line 42) | async function main(outputDir) {
FILE: build/win32/explorer-appx-fetcher.ts
function downloadExplorerAppx (line 18) | async function downloadExplorerAppx(outDir: string, quality: string = 's...
function main (line 47) | async function main(outputDir?: string): Promise<void> {
FILE: cli/build.rs
constant FILE_HEADER (line 6) | const FILE_HEADER: &str = "/*-------------------------------------------...
function main (line 19) | fn main() {
function camel_case_to_constant_case (line 25) | fn camel_case_to_constant_case(key: &str) -> String {
function set_env_vars_from_map_keys (line 49) | fn set_env_vars_from_map_keys(prefix: &str, map: impl IntoIterator<Item ...
function read_json_from_path (line 103) | fn read_json_from_path<T>(path: &Path) -> T
function apply_build_from_product_json (line 111) | fn apply_build_from_product_json(path: &Path) {
type PackageJson (line 117) | struct PackageJson {
function apply_build_environment_variables (line 121) | fn apply_build_environment_variables() {
function ensure_file_headers (line 151) | fn ensure_file_headers(files: &[PathBuf]) -> Result<(), io::Error> {
function enumerate_source_files (line 174) | fn enumerate_source_files() -> Result<Vec<PathBuf>, io::Error> {
FILE: cli/src/async_pipe.rs
method into_pollable (line 180) | pub fn into_pollable(self) -> PollableAsyncListener {
type PollableAsyncListener (line 188) | pub struct PollableAsyncListener {
type Conn (line 209) | type Conn = AsyncPipe;
type Error (line 210) | type Error = CodeError;
method poll_accept (line 212) | fn poll_accept(
function make_accept_fut (line 196) | async fn make_accept_fut(
function get_socket_name (line 231) | pub fn get_socket_name() -> PathBuf {
type AcceptedRW (line 241) | pub type AcceptedRW = (
type AsyncRWAccepter (line 247) | pub trait AsyncRWAccepter {
method accept_rw (line 248) | async fn accept_rw(&mut self) -> Result<AcceptedRW, CodeError>;
method accept_rw (line 253) | async fn accept_rw(&mut self) -> Result<AcceptedRW, CodeError> {
method accept_rw (line 262) | async fn accept_rw(&mut self) -> Result<AcceptedRW, CodeError> {
FILE: cli/src/auth.rs
type DeviceCodeResponse (line 32) | struct DeviceCodeResponse {
type AuthenticationResponse (line 41) | struct AuthenticationResponse {
type AuthenticationError (line 48) | struct AuthenticationError {
type AuthProvider (line 54) | pub enum AuthProvider {
method client_id (line 69) | pub fn client_id(&self) -> &'static str {
method code_uri (line 76) | pub fn code_uri(&self) -> &'static str {
method grant_uri (line 85) | pub fn grant_uri(&self) -> &'static str {
method get_default_scopes (line 94) | pub fn get_default_scopes(&self) -> String {
method fmt (line 60) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
type StoredCredential (line 105) | pub struct StoredCredential {
method is_expired (line 131) | pub async fn is_expired(&self, log: &log::Logger, client: &reqwest::Cl...
method from_response (line 162) | fn from_response(auth: AuthenticationResponse, provider: AuthProvider)...
constant GH_USER_ENDPOINT (line 116) | const GH_USER_ENDPOINT: &str = "https://api.github.com/user";
function get_github_user (line 118) | async fn get_github_user(
type StorageWithLastRead (line 174) | struct StorageWithLastRead {
type Auth (line 181) | pub struct Auth {
method new (line 384) | pub fn new(paths: &LauncherPaths, log: log::Logger) -> Auth {
method with_storage (line 393) | fn with_storage<T, F>(&self, op: F) -> T
method get_tunnel_authentication (line 445) | pub async fn get_tunnel_authentication(&self) -> Result<Authorization,...
method get_current_credential (line 460) | pub fn get_current_credential(&self) -> Result<Option<StoredCredential...
method clear_credentials (line 469) | pub fn clear_credentials(&self) -> Result<(), AnyError> {
method login (line 478) | pub async fn login(
method get_credential (line 508) | pub async fn get_credential(&self) -> Result<StoredCredential, AnyErro...
method store_credentials (line 552) | fn store_credentials(&self, creds: StoredCredential) {
method maybe_refresh_token (line 578) | async fn maybe_refresh_token(
method do_refresh_token (line 591) | async fn do_refresh_token(
method do_grant (line 615) | async fn do_grant(
method touch_github_token (line 644) | async fn touch_github_token(&self, credential: &StoredCredential) -> R...
method handle_grant_error (line 659) | fn handle_grant_error(url: &str, status_code: u16, body: bytes::Bytes)...
method do_device_code_flow (line 676) | async fn do_device_code_flow(&self) -> Result<StoredCredential, AnyErr...
method prompt_for_provider (line 681) | async fn prompt_for_provider(&self) -> Result<AuthProvider, AnyError> {
method do_device_code_flow_with_provider (line 699) | async fn do_device_code_flow_with_provider(
method keep_token_alive (line 763) | pub async fn keep_token_alive(self) -> Result<(), AnyError> {
type StorageImplementation (line 188) | trait StorageImplementation: Send + Sync {
method read (line 189) | fn read(&mut self) -> Result<Option<StoredCredential>, AnyError>;
method store (line 190) | fn store(&mut self, value: StoredCredential) -> Result<(), AnyError>;
method clear (line 191) | fn clear(&mut self) -> Result<(), AnyError>;
method read (line 274) | fn read(&mut self) -> Result<Option<StoredCredential>, AnyError> {
method store (line 278) | fn store(&mut self, value: StoredCredential) -> Result<(), AnyError> {
method clear (line 282) | fn clear(&mut self) -> Result<(), AnyError> {
method read (line 308) | fn read(&mut self) -> Result<Option<StoredCredential>, AnyError> {
method store (line 330) | fn store(&mut self, value: StoredCredential) -> Result<(), AnyError> {
method clear (line 354) | fn clear(&mut self) -> Result<(), AnyError> {
method read (line 370) | fn read(&mut self) -> Result<Option<StoredCredential>, AnyError> {
method store (line 374) | fn store(&mut self, value: StoredCredential) -> Result<(), AnyError> {
method clear (line 378) | fn clear(&mut self) -> Result<(), AnyError> {
function seal (line 195) | fn seal<T>(value: &T) -> String
function unseal (line 207) | fn unseal<T>(value: &str) -> Option<T>
constant KEYCHAIN_ENTRY_LIMIT (line 221) | const KEYCHAIN_ENTRY_LIMIT: usize = 1024;
constant KEYCHAIN_ENTRY_LIMIT (line 223) | const KEYCHAIN_ENTRY_LIMIT: usize = 128 * 1024;
constant CONTINUE_MARKER (line 225) | const CONTINUE_MARKER: &str = "<MORE>";
type ThreadKeyringStorage (line 229) | struct ThreadKeyringStorage {
method thread_op (line 234) | fn thread_op<R, Fn>(&mut self, f: Fn) -> Result<R, AnyError>
method default (line 266) | fn default() -> Self {
type KeyringStorage (line 288) | struct KeyringStorage {
type FileStorage (line 367) | struct FileStorage(PersistedState<Option<String>>);
method get_authorization (line 812) | async fn get_authorization(&self) -> Result<Authorization, HttpError> {
function encrypt (line 824) | fn encrypt(value: &str) -> String {
function decrypt (line 829) | fn decrypt(value: &str) -> Option<String> {
function encrypt (line 835) | fn encrypt(value: &str) -> String {
function decrypt (line 840) | fn decrypt(value: &str) -> Option<String> {
FILE: cli/src/bin/code/legacy_args.rs
function try_parse_legacy (line 15) | pub fn try_parse_legacy(
function test_parses_list_extensions (line 127) | fn test_parses_list_extensions() {
function test_parses_install_extension (line 153) | fn test_parses_install_extension() {
function test_parses_uninstall_extension (line 184) | fn test_parses_uninstall_extension() {
function test_parses_user_data_dir_and_extensions_dir (line 203) | fn test_parses_user_data_dir_and_extensions_dir() {
function test_status (line 238) | fn test_status() {
FILE: cli/src/bin/code/main.rs
function main (line 26) | async fn main() -> Result<(), std::convert::Infallible> {
function make_logger (line 135) | fn make_logger(core: &args::CliCore) -> log::Logger {
function print_and_exit (line 152) | fn print_and_exit<E>(err: E) -> !
function start_code (line 160) | async fn start_code(context: CommandContext, args: Vec<String>) -> Resul...
FILE: cli/src/commands/args.rs
constant CLI_NAME (line 12) | const CLI_NAME: &str = concatcp!(constants::PRODUCT_NAME_LONG, " CLI");
constant HELP_COMMANDS (line 13) | const HELP_COMMANDS: &str = concatcp!(
constant STANDALONE_TEMPLATE (line 21) | const STANDALONE_TEMPLATE: &str = concatcp!(
constant INTEGRATED_TEMPLATE (line 34) | const INTEGRATED_TEMPLATE: &str = concatcp!(
constant COMMIT_IN_VERSION (line 45) | const COMMIT_IN_VERSION: &str = match constants::VSCODE_CLI_COMMIT {
constant NUMBER_IN_VERSION (line 49) | const NUMBER_IN_VERSION: &str = match constants::VSCODE_CLI_VERSION {
constant VERSION (line 53) | const VERSION: &str = concatcp!(NUMBER_IN_VERSION, " (commit ", COMMIT_I...
type IntegratedCli (line 62) | pub struct IntegratedCli {
type CliCore (line 69) | pub struct CliCore {
method get_base_code_args (line 117) | pub fn get_base_code_args(&self) -> Vec<String> {
type StandaloneCli (line 94) | pub struct StandaloneCli {
type AnyCli (line 102) | pub enum AnyCli {
method core (line 108) | pub fn core(&self) -> &CliCore {
method from (line 127) | fn from(cli: &'a CliCore) -> Self {
type StandaloneCommands (line 152) | pub enum StandaloneCommands {
type StandaloneUpdateArgs (line 158) | pub struct StandaloneUpdateArgs {
type Commands (line 166) | pub enum Commands {
type ServeWebArgs (line 191) | pub struct ServeWebArgs {
type CommandShellArgs (line 222) | pub struct CommandShellArgs {
type ExtensionArgs (line 244) | pub struct ExtensionArgs {
method add_code_args (line 253) | pub fn add_code_args(&self, target: &mut Vec<String>) {
type ExtensionSubcommand (line 260) | pub enum ExtensionSubcommand {
method add_code_args (line 272) | pub fn add_code_args(&self, target: &mut Vec<String>) {
type ListExtensionArgs (line 310) | pub struct ListExtensionArgs {
type InstallExtensionArgs (line 321) | pub struct InstallExtensionArgs {
type UninstallExtensionArgs (line 343) | pub struct UninstallExtensionArgs {
type VersionArgs (line 352) | pub struct VersionArgs {
type VersionSubcommand (line 358) | pub enum VersionSubcommand {
type UseVersionArgs (line 367) | pub struct UseVersionArgs {
type EditorOptions (line 379) | pub struct EditorOptions {
method add_code_args (line 418) | pub fn add_code_args(&self, target: &mut Vec<String>) {
type DesktopCodeOptions (line 456) | pub struct DesktopCodeOptions {
method add_code_args (line 482) | pub fn add_code_args(&self, target: &mut Vec<String>) {
type OutputFormatOptions (line 475) | pub struct OutputFormatOptions {
type GlobalOptions (line 493) | pub struct GlobalOptions {
method add_code_args (line 521) | pub fn add_code_args(&self, target: &mut Vec<String>) {
type EditorTroubleshooting (line 538) | pub struct EditorTroubleshooting {
method add_code_args (line 574) | pub fn add_code_args(&self, target: &mut Vec<String>) {
type SyncState (line 603) | pub enum SyncState {
method fmt (line 609) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
type OutputFormat (line 618) | pub enum OutputFormat {
type ExistingTunnelArgs (line 624) | pub struct ExistingTunnelArgs {
type TunnelServeArgs (line 644) | pub struct TunnelServeArgs {
type BaseServerArgs (line 674) | pub struct BaseServerArgs {
method apply_to (line 689) | pub fn apply_to(&self, csa: &mut CodeServerArgs) {
type TunnelArgs (line 704) | pub struct TunnelArgs {
type TunnelSubcommand (line 713) | pub enum TunnelSubcommand {
type TunnelServiceSubCommands (line 745) | pub enum TunnelServiceSubCommands {
type TunnelServiceInstallArgs (line 761) | pub struct TunnelServiceInstallArgs {
type TunnelRenameArgs (line 772) | pub struct TunnelRenameArgs {
type TunnelForwardArgs (line 778) | pub struct TunnelForwardArgs {
type TunnelUserSubCommands (line 788) | pub enum TunnelUserSubCommands {
type LoginArgs (line 800) | pub struct LoginArgs {
type AuthProvider (line 815) | pub enum AuthProvider {
FILE: cli/src/commands/context.rs
type CommandContext (line 10) | pub struct CommandContext {
FILE: cli/src/commands/output.rs
type Column (line 12) | pub struct Column {
method new (line 19) | pub fn new(heading: &'static str) -> Self {
method add_row (line 27) | pub fn add_row(&mut self, row: String) {
method print_table (line 34) | pub fn print_table(&self, table: OutputTable) -> Result<(), std::io::Err...
type OutputTable (line 42) | pub struct OutputTable {
method new (line 47) | pub fn new(cols: Vec<Column>) -> Self {
type TablePrinter (line 52) | trait TablePrinter {
method print (line 53) | fn print(&self, table: OutputTable, out: &mut dyn std::io::Write)
method print (line 60) | fn print(
method print (line 93) | fn print(
type JsonTablePrinter (line 57) | pub struct JsonTablePrinter();
type TextTablePrinter (line 90) | pub struct TextTablePrinter();
function write_columns (line 122) | fn write_columns<T>(
FILE: cli/src/commands/serve_web.rs
constant COMMIT_HASH_LEN (line 45) | const COMMIT_HASH_LEN: usize = 40;
constant SERVER_IDLE_TIMEOUT_SECS (line 48) | const SERVER_IDLE_TIMEOUT_SECS: u64 = 60 * 60;
constant SERVER_ACTIVE_TIMEOUT_SECS (line 51) | const SERVER_ACTIVE_TIMEOUT_SECS: u64 = SERVER_IDLE_TIMEOUT_SECS * 24 * ...
constant RELEASE_CHECK_INTERVAL (line 53) | const RELEASE_CHECK_INTERVAL: u64 = 60 * 60;
constant SECRET_KEY_BYTES (line 56) | const SECRET_KEY_BYTES: usize = 32;
constant SECRET_KEY_MINT_PATH (line 58) | const SECRET_KEY_MINT_PATH: &str = "_vscode-cli/mint-key";
constant PATH_COOKIE_NAME (line 60) | const PATH_COOKIE_NAME: &str = "vscode-secret-key-path";
constant SECRET_KEY_COOKIE_NAME (line 62) | const SECRET_KEY_COOKIE_NAME: &str = "vscode-cli-secret-half";
function serve_web (line 69) | pub async fn serve_web(ctx: CommandContext, mut args: ServeWebArgs) -> R...
type HandleContext (line 154) | struct HandleContext {
function handle (line 161) | async fn handle(ctx: HandleContext, req: Request<Body>) -> Result<Respon...
function handle_proxied (line 178) | async fn handle_proxied(ctx: &HandleContext, req: Request<Body>) -> Resp...
function handle_secret_mint (line 204) | fn handle_secret_mint(ctx: &HandleContext, req: Request<Body>) -> Respon...
function append_secret_headers (line 218) | fn append_secret_headers(
function get_release_from_path (line 244) | fn get_release_from_path(path: &str, platform: Platform) -> Option<(Rele...
function forward_http_req_to_server (line 275) | async fn forward_http_req_to_server(
function forward_ws_req_to_server (line 302) | async fn forward_ws_req_to_server(
function is_commit_hash (line 360) | fn is_commit_hash(s: &str) -> bool {
function extract_cookie (line 365) | fn extract_cookie(req: &Request<Body>, name: &str) -> Option<String> {
type SecretKeyPart (line 385) | struct SecretKeyPart(Box<[u8; SECRET_KEY_BYTES]>);
method new (line 388) | pub fn new() -> Self {
method decode (line 393) | pub fn decode(s: &str) -> Result<Self, base64::DecodeSliceError> {
method encode (line 405) | pub fn encode(&self) -> String {
function get_server_key_half (line 412) | fn get_server_key_half(paths: &LauncherPaths) -> SecretKeyPart {
function get_client_key_half (line 425) | fn get_client_key_half(req: &Request<Body>) -> SecretKeyPart {
function connection_err (line 443) | pub fn connection_err(err: hyper::Error) -> Response<Body> {
function code_err (line 450) | pub fn code_err(err: CodeError) -> Response<Body> {
function wait_for_download (line 457) | pub fn wait_for_download() -> Response<Body> {
function secret_key (line 465) | pub fn secret_key(hash: Vec<u8>) -> Response<Body> {
type ConnectionHandle (line 476) | struct ConnectionHandle {
method new (line 481) | pub fn new(client_counter: Arc<tokio::sync::watch::Sender<usize>>) -> ...
method drop (line 490) | fn drop(&mut self) {
type StartData (line 497) | type StartData = (PathBuf, Arc<tokio::sync::watch::Sender<usize>>);
type VersionState (line 500) | struct VersionState {
type ConnectionStateMap (line 505) | type ConnectionStateMap = Arc<Mutex<HashMap<(Quality, String), VersionSt...
type ConnectionManager (line 509) | struct ConnectionManager {
method new (line 540) | pub fn new(ctx: &CommandContext, platform: Platform, args: ServeWebArg...
method start_update_checker (line 582) | pub fn start_update_checker(self: Arc<Self>, duration: Duration) {
method get_release_from_cache (line 596) | pub async fn get_release_from_cache(&self) -> Result<Release, CodeErro...
method get_connection (line 607) | pub async fn get_connection(
method get_latest_release (line 621) | pub async fn get_latest_release(&self) -> Result<Release, CodeError> {
method get_version_data (line 655) | async fn get_version_data(&self, release: Release) -> Result<StartData...
method get_version_data_inner (line 663) | fn get_version_data_inner(
method download_version (line 723) | async fn download_version(
method start_version (line 754) | async fn start_version(args: StartArgs, path: PathBuf) {
function key_for_release (line 525) | fn key_for_release(release: &Release) -> (Quality, String) {
function normalize_base_path (line 529) | fn normalize_base_path(p: &str) -> String {
type StartArgs (line 855) | struct StartArgs {
function mint_connection_token (line 862) | fn mint_connection_token(path: &Path, prefer_token: Option<String>) -> s...
FILE: cli/src/commands/tunnels.rs
function from (line 70) | fn from(auth_provider: AuthProvider) -> Self {
function fulfill_existing_tunnel_args (line 78) | fn fulfill_existing_tunnel_args(
type TunnelServiceContainer (line 106) | struct TunnelServiceContainer {
method new (line 112) | fn new(core_args: CliCore, tunnel_args: TunnelArgs) -> Self {
method run_service (line 122) | async fn run_service(
function command_shell (line 144) | pub async fn command_shell(ctx: CommandContext, args: CommandShellArgs) ...
function find_unused_port (line 235) | async fn find_unused_port(host: &IpAddr, start_port: u16, end_port: u16)...
function is_port_available (line 244) | async fn is_port_available(host: IpAddr, port: u16) -> bool {
function make_service_args (line 250) | fn make_service_args<'a: 'c, 'b: 'c, 'c>(
function service (line 268) | pub async fn service(
function user (line 317) | pub async fn user(ctx: CommandContext, user_args: TunnelUserSubCommands)...
function rename (line 345) | pub async fn rename(ctx: CommandContext, rename_args: TunnelRenameArgs) ...
function unregister (line 358) | pub async fn unregister(ctx: CommandContext) -> Result<i32, AnyError> {
function restart (line 365) | pub async fn restart(ctx: CommandContext) -> Result<i32, AnyError> {
function kill (line 377) | pub async fn kill(ctx: CommandContext) -> Result<i32, AnyError> {
type StatusOutput (line 390) | pub struct StatusOutput {
function status (line 395) | pub async fn status(ctx: CommandContext) -> Result<i32, AnyError> {
function prune (line 425) | pub async fn prune(ctx: CommandContext) -> Result<i32, AnyError> {
function serve (line 443) | pub async fn serve(ctx: CommandContext, gateway_args: TunnelServeArgs) -...
function forward (line 475) | pub async fn forward(
function get_connection_token (line 553) | fn get_connection_token(tunnel: &ActiveTunnel) -> String {
function serve_with_csa (line 565) | async fn serve_with_csa(
FILE: cli/src/commands/update.rs
function update (line 19) | pub async fn update(ctx: CommandContext, args: StandaloneUpdateArgs) -> ...
FILE: cli/src/commands/version.rs
function switch_to (line 19) | pub async fn switch_to(ctx: CommandContext, args: UseVersionArgs) -> Res...
function show (line 46) | pub async fn show(ctx: CommandContext) -> Result<i32, AnyError> {
function print_now_using (line 60) | fn print_now_using(log: &log::Logger, version: &RequestedVersion, path: ...
FILE: cli/src/constants.rs
constant CONTROL_PORT (line 14) | pub const CONTROL_PORT: u16 = 31545;
constant PROTOCOL_VERSION (line 23) | pub const PROTOCOL_VERSION: u32 = 4;
constant PROTOCOL_VERSION_TAG_PREFIX (line 26) | pub const PROTOCOL_VERSION_TAG_PREFIX: &str = "protocolv";
constant PROTOCOL_VERSION_TAG (line 28) | pub const PROTOCOL_VERSION_TAG: &str = concatcp!("protocolv", PROTOCOL_V...
constant VSCODE_CLI_VERSION (line 30) | pub const VSCODE_CLI_VERSION: Option<&'static str> = option_env!("VSCODE...
constant VSCODE_CLI_AI_KEY (line 31) | pub const VSCODE_CLI_AI_KEY: Option<&'static str> = option_env!("VSCODE_...
constant VSCODE_CLI_AI_ENDPOINT (line 32) | pub const VSCODE_CLI_AI_ENDPOINT: Option<&'static str> = option_env!("VS...
constant VSCODE_CLI_QUALITY (line 33) | pub const VSCODE_CLI_QUALITY: Option<&'static str> = option_env!("VSCODE...
constant DOCUMENTATION_URL (line 34) | pub const DOCUMENTATION_URL: Option<&'static str> = option_env!("VSCODE_...
constant VSCODE_CLI_COMMIT (line 35) | pub const VSCODE_CLI_COMMIT: Option<&'static str> = option_env!("VSCODE_...
constant VSCODE_CLI_UPDATE_ENDPOINT (line 36) | pub const VSCODE_CLI_UPDATE_ENDPOINT: Option<&'static str> = option_env!...
constant TUNNEL_SERVICE_LOCK_NAME (line 40) | pub const TUNNEL_SERVICE_LOCK_NAME: Option<&'static str> =
constant TUNNEL_CLI_LOCK_NAME (line 45) | pub const TUNNEL_CLI_LOCK_NAME: Option<&'static str> = option_env!("VSCO...
constant TUNNEL_SERVICE_USER_AGENT_ENV_VAR (line 47) | pub const TUNNEL_SERVICE_USER_AGENT_ENV_VAR: &str = "TUNNEL_SERVICE_USER...
constant APPLICATION_NAME (line 50) | pub const APPLICATION_NAME: &str = match option_env!("VSCODE_CLI_APPLICA...
constant PRODUCT_NAME_LONG (line 56) | pub const PRODUCT_NAME_LONG: &str = match option_env!("VSCODE_CLI_NAME_L...
constant QUALITYLESS_PRODUCT_NAME (line 62) | pub const QUALITYLESS_PRODUCT_NAME: &str = match option_env!("VSCODE_CLI...
constant QUALITYLESS_SERVER_NAME (line 69) | pub const QUALITYLESS_SERVER_NAME: &str = concatcp!(QUALITYLESS_PRODUCT_...
constant QUALITY (line 71) | pub const QUALITY: &str = match VSCODE_CLI_QUALITY {
constant EDITOR_WEB_URL (line 77) | pub const EDITOR_WEB_URL: Option<&'static str> = option_env!("VSCODE_CLI...
constant TUNNEL_ACTIVITY_NAME (line 80) | pub const TUNNEL_ACTIVITY_NAME: &str = concatcp!(PRODUCT_NAME_LONG, " Tu...
constant PRODUCT_DOWNLOAD_URL (line 83) | pub const PRODUCT_DOWNLOAD_URL: Option<&'static str> = option_env!("VSCO...
constant NONINTERACTIVE_VAR (line 85) | const NONINTERACTIVE_VAR: &str = "VSCODE_CLI_NONINTERACTIVE";
constant DEFAULT_DATA_PARENT_DIR (line 88) | pub const DEFAULT_DATA_PARENT_DIR: &str = match option_env!("VSCODE_CLI_...
function get_default_user_agent (line 93) | pub fn get_default_user_agent() -> String {
constant NO_COLOR_ENV (line 100) | const NO_COLOR_ENV: &str = "NO_COLOR";
type ServerQualityInfo (line 104) | pub struct ServerQualityInfo {
FILE: cli/src/desktop/version_manager.rs
type RequestedVersion (line 30) | pub enum RequestedVersion {
method get_command (line 41) | pub fn get_command(&self) -> String {
method fmt (line 57) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
type Error (line 71) | type Error = InvalidRequestedVersion;
method try_from (line 73) | fn try_from(s: &str) -> Result<Self, Self::Error> {
type Stored (line 91) | struct Stored {
type CodeVersionManager (line 97) | pub struct CodeVersionManager {
method new (line 103) | pub fn new(log: log::Logger, lp: &LauncherPaths, _platform: Platform) ...
method get_entrypoint_for_install_dir (line 111) | pub async fn get_entrypoint_for_install_dir(path: &Path) -> Option<Pat...
method set_preferred_version (line 145) | pub async fn set_preferred_version(
method store_version_path (line 158) | fn store_version_path(
method get_preferred_version (line 176) | pub fn get_preferred_version(&self) -> RequestedVersion {
method try_get_entrypoint (line 186) | pub async fn try_get_entrypoint(&self, version: &RequestedVersion) -> ...
function prompt_to_install (line 224) | pub fn prompt_to_install(version: &RequestedVersion) {
function detect_installed_program (line 245) | fn detect_installed_program(log: &log::Logger) -> io::Result<Vec<PathBuf...
function detect_installed_program (line 315) | fn detect_installed_program(_log: &log::Logger) -> io::Result<Vec<PathBu...
function detect_installed_program (line 371) | fn detect_installed_program(log: &log::Logger) -> io::Result<Vec<PathBuf...
constant DESKTOP_CLI_RELATIVE_PATH (line 401) | const DESKTOP_CLI_RELATIVE_PATH: &str = if cfg!(target_os = "macos") {
function make_fake_vscode_install (line 418) | fn make_fake_vscode_install(path: &Path) {
function make_multiple_vscode_install (line 435) | fn make_multiple_vscode_install() -> tempfile::TempDir {
function test_detect_installed_program (line 443) | fn test_detect_installed_program() {
function test_set_preferred_version (line 452) | async fn test_set_preferred_version() {
function test_gets_entrypoint (line 484) | async fn test_gets_entrypoint() {
function test_gets_entrypoint_as_binary (line 501) | async fn test_gets_entrypoint_as_binary() {
FILE: cli/src/download_cache.rs
constant KEEP_LRU (line 19) | const KEEP_LRU: usize = 5;
constant STAGING_SUFFIX (line 20) | const STAGING_SUFFIX: &str = ".staging";
constant RENAME_ATTEMPTS (line 21) | const RENAME_ATTEMPTS: u32 = 20;
constant RENAME_DELAY (line 22) | const RENAME_DELAY: std::time::Duration = std::time::Duration::from_mill...
constant PERSISTED_STATE_FILE_NAME (line 23) | const PERSISTED_STATE_FILE_NAME: &str = "lru.json";
type DownloadCache (line 26) | pub struct DownloadCache {
method new (line 32) | pub fn new(path: PathBuf) -> DownloadCache {
method get (line 40) | pub fn get(&self) -> Vec<String> {
method path (line 46) | pub fn path(&self) -> &Path {
method exists (line 52) | pub fn exists(&self, name: &str) -> Option<PathBuf> {
method delete (line 63) | pub fn delete(&self, name: &str) -> Result<(), WrappedError> {
method create (line 78) | pub async fn create<F, T>(
method touch (line 119) | fn touch(&self, name: String) -> Result<(), AnyError> {
FILE: cli/src/json_rpc.rs
type JsonRpcSerializer (line 22) | pub struct JsonRpcSerializer {}
method serialize (line 25) | fn serialize(&self, value: impl serde::Serialize) -> Vec<u8> {
method deserialize (line 31) | fn deserialize<P: serde::de::DeserializeOwned>(
function new_json_rpc (line 41) | pub fn new_json_rpc() -> rpc::RpcBuilder<JsonRpcSerializer> {
function start_json_rpc (line 46) | pub async fn start_json_rpc<C: Send + Sync + 'static, S: Clone>(
FILE: cli/src/log.rs
function next_counter (line 24) | pub fn next_counter() -> u32 {
type Level (line 32) | pub enum Level {
method fmt (line 44) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
method name (line 58) | pub fn name(&self) -> Option<&str> {
method color_code (line 70) | pub fn color_code(&self) -> Option<&str> {
method to_u8 (line 86) | pub fn to_u8(self) -> u8 {
function new_tunnel_prefix (line 91) | pub fn new_tunnel_prefix() -> String {
function new_code_server_prefix (line 95) | pub fn new_code_server_prefix() -> String {
function new_rpc_prefix (line 99) | pub fn new_rpc_prefix() -> String {
type Logger (line 105) | pub struct Logger {
method test (line 200) | pub fn test() -> Self {
method new (line 208) | pub fn new(tracer: Tracer, level: Level) -> Self {
method span (line 216) | pub fn span(&self, name: &str) -> SpanBuilder {
method tracer (line 220) | pub fn tracer(&self) -> &Tracer {
method emit (line 224) | pub fn emit(&self, level: Level, message: &str) {
method result (line 231) | pub fn result(&self, message: impl AsRef<str>) {
method prefixed (line 237) | pub fn prefixed(&self, prefix: &str) -> Logger {
method tee (line 248) | pub fn tee<T>(&self, sink: T) -> Logger
method with_sink (line 262) | pub fn with_sink<T>(&self, sink: T) -> Logger
method get_download_logger (line 272) | pub fn get_download_logger<'a>(&'a self, prefix: &'static str) -> Down...
type LogSinkClone (line 112) | pub trait LogSinkClone {
method clone_box (line 113) | fn clone_box(&self) -> Box<dyn LogSink>;
method clone_box (line 120) | fn clone_box(&self) -> Box<dyn LogSink> {
type LogSink (line 125) | pub trait LogSink: LogSinkClone + Sync + Send {
method write_log (line 126) | fn write_log(&self, level: Level, prefix: &str, message: &str);
method write_result (line 127) | fn write_result(&self, message: &str);
method write_log (line 143) | fn write_log(&self, level: Level, prefix: &str, message: &str) {
method write_result (line 151) | fn write_result(&self, message: &str) {
method write_log (line 185) | fn write_log(&self, level: Level, prefix: &str, message: &str) {
method write_result (line 196) | fn write_result(&self, _message: &str) {}
method clone (line 131) | fn clone(&self) -> Box<dyn LogSink> {
type StdioLogSink (line 138) | pub struct StdioLogSink {
type FileLogSink (line 157) | pub struct FileLogSink {
method new (line 165) | pub fn new(level: Level, path: &Path) -> std::io::Result<Self> {
constant FILE_LOG_SIZE_LIMIT (line 162) | const FILE_LOG_SIZE_LIMIT: u64 = 1024 * 1024 * 10;
type DownloadLogger (line 280) | pub struct DownloadLogger<'a> {
function report_progress (line 286) | fn report_progress(&mut self, bytes_so_far: u64, total_bytes: u64) {
function format (line 307) | fn format(level: Level, prefix: &str, message: &str, use_colors: bool) -...
function emit (line 322) | pub fn emit(level: Level, prefix: &str, message: &str) {
function install_global_logger (line 333) | pub fn install_global_logger(log: Logger) {
type RustyLogger (line 341) | struct RustyLogger(Logger);
method enabled (line 344) | fn enabled(&self, metadata: &log::Metadata) -> bool {
method log (line 348) | fn log(&self, record: &log::Record) {
method flush (line 372) | fn flush(&self) {}
FILE: cli/src/msgpack_rpc.rs
type MsgPackSerializer (line 25) | pub struct MsgPackSerializer {}
method serialize (line 28) | fn serialize(&self, value: impl serde::Serialize) -> Vec<u8> {
method deserialize (line 32) | fn deserialize<P: serde::de::DeserializeOwned>(&self, b: &[u8]) -> Resul...
type MsgPackCaller (line 37) | pub type MsgPackCaller = rpc::RpcCaller<MsgPackSerializer>;
function new_msgpack_rpc (line 40) | pub fn new_msgpack_rpc() -> rpc::RpcBuilder<MsgPackSerializer> {
function start_msgpack_rpc (line 46) | pub async fn start_msgpack_rpc<
type MsgPackCodec (line 118) | pub struct MsgPackCodec<T> {
function new (line 123) | pub fn new() -> Self {
type MsgPackDecoded (line 130) | pub struct MsgPackDecoded<T> {
type Item (line 136) | type Item = MsgPackDecoded<T>;
type Error (line 137) | type Error = io::Error;
function decode (line 139) | fn decode(&mut self, src: &mut bytes::BytesMut) -> Result<Option<Self::I...
type Msg (line 172) | pub struct Msg {
function test_protocol (line 177) | fn test_protocol() {
FILE: cli/src/options.rs
type Quality (line 13) | pub enum Quality {
method get_machine_name (line 24) | pub fn get_machine_name(&self) -> &'static str {
method get_capitalized_name (line 33) | pub fn get_capitalized_name(&self) -> &'static str {
method server_entrypoint (line 42) | pub fn server_entrypoint(&self) -> String {
method fmt (line 59) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
type Error (line 65) | type Error = String;
method try_from (line 67) | fn try_from(s: &str) -> Result<Self, Self::Error> {
type TelemetryLevel (line 80) | pub enum TelemetryLevel {
method fmt (line 88) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
FILE: cli/src/rpc.rs
type SyncMethod (line 25) | pub type SyncMethod = Arc<dyn Send + Sync + Fn(Option<u32>, &[u8]) -> Op...
type AsyncMethod (line 26) | pub type AsyncMethod =
type Duplex (line 28) | pub type Duplex = Arc<
type Method (line 34) | pub enum Method {
type Serialization (line 42) | pub trait Serialization: Send + Sync + 'static {
method serialize (line 43) | fn serialize(&self, value: impl Serialize) -> Vec<u8>;
method deserialize (line 44) | fn deserialize<P: DeserializeOwned>(&self, b: &[u8]) -> Result<P, AnyE...
type RpcBuilder (line 49) | pub struct RpcBuilder<S> {
function new (line 57) | pub fn new(serializer: S) -> Self {
function get_caller (line 67) | pub fn get_caller(&mut self, sender: mpsc::UnboundedSender<Vec<u8>>) -> ...
function methods (line 76) | pub fn methods<C: Send + Sync + 'static>(self, context: C) -> RpcMethodB...
type RpcMethodBuilder (line 86) | pub struct RpcMethodBuilder<S, C> {
type DuplexStreamStarted (line 94) | struct DuplexStreamStarted {
function register_sync (line 101) | pub fn register_sync<P, R, F>(&mut self, method_name: &'static str, call...
function register_async (line 148) | pub fn register_async<P, R, Fut, F>(&mut self, method_name: &'static str...
function register_duplex (line 203) | pub fn register_duplex<P, R, Fut, F>(
function build (line 275) | pub fn build(mut self, log: log::Logger) -> RpcDispatcher<S, C> {
type DispatchMethod (line 304) | type DispatchMethod = Box<dyn Send + Sync + FnOnce(Outcome)>;
type RpcCaller (line 310) | pub struct RpcCaller<S: Serialization> {
function serialize_notify (line 317) | pub fn serialize_notify<M, A>(serializer: &S, method: M, params: A) -> V...
function notify (line 331) | pub fn notify<M, A>(&self, method: M, params: A) -> bool
function call (line 342) | pub fn call<M, A, R>(&self, method: M, params: A) -> oneshot::Receiver<R...
type RpcDispatcher (line 388) | pub struct RpcDispatcher<S, C> {
function next_message_id (line 398) | fn next_message_id() -> u32 {
function dispatch (line 409) | pub fn dispatch(&self, body: &[u8]) -> MaybeSync {
function dispatch_with_partial (line 420) | pub fn dispatch_with_partial(&self, body: &[u8], partial: PartialIncomin...
function register_stream (line 453) | pub async fn register_stream(
function context (line 526) | pub fn context(&self) -> Arc<C> {
type StreamRec (line 531) | struct StreamRec {
type Streams (line 538) | struct Streams {
method remove (line 543) | pub async fn remove(&self, id: u32) {
method write (line 564) | pub fn write(&self, id: u32, buf: Vec<u8>) {
method insert (line 575) | pub fn insert(&self, id: u32, stream: WriteHalf<DuplexStream>) {
function write_loop (line 596) | async fn write_loop(
constant METHOD_STREAMS_STARTED (line 633) | const METHOD_STREAMS_STARTED: &str = "streams_started";
constant METHOD_STREAM_DATA (line 634) | const METHOD_STREAM_DATA: &str = "stream_data";
constant METHOD_STREAM_ENDED (line 635) | const METHOD_STREAM_ENDED: &str = "stream_ended";
type AssertIsSync (line 638) | trait AssertIsSync: Sync {}
type PartialIncoming (line 643) | pub struct PartialIncoming {
type StreamDataIncomingParams (line 650) | struct StreamDataIncomingParams {
type StreamDataParams (line 657) | struct StreamDataParams<'a> {
type StreamEndedParams (line 664) | struct StreamEndedParams {
type FullRequest (line 669) | pub struct FullRequest<M: AsRef<str>, P> {
type RequestParams (line 676) | struct RequestParams<P> {
type SuccessResponse (line 681) | struct SuccessResponse<T> {
type ErrorResponse (line 687) | struct ErrorResponse {
type ResponseError (line 693) | pub struct ResponseError {
type Outcome (line 698) | enum Outcome {
type StreamDto (line 703) | pub struct StreamDto {
type MaybeSync (line 708) | pub enum MaybeSync {
function test_remove (line 719) | async fn test_remove() {
function test_write (line 731) | async fn test_write() {
function test_write_with_immediate_end (line 743) | async fn test_write_with_immediate_end() {
FILE: cli/src/self_update.rs
type SelfUpdate (line 21) | pub struct SelfUpdate<'a> {
function new (line 31) | pub fn new(update_service: &'a UpdateService) -> Result<Self, AnyError> {
function get_current_release (line 54) | pub async fn get_current_release(&self) -> Result<Release, AnyError> {
function is_up_to_date_with (line 61) | pub fn is_up_to_date_with(&self, release: &Release) -> bool {
function cleanup_old_update (line 67) | pub fn cleanup_old_update(&self) -> Result<(), std::io::Error> {
function do_update (line 78) | pub async fn do_update(
function validate_cli_is_good (line 121) | fn validate_cli_is_good(exe_path: &Path) -> Result<(), AnyError> {
function copy_updated_cli_to_path (line 140) | fn copy_updated_cli_to_path(unzipped_content: &Path, staging_path: &Path...
function copy_file_metadata (line 161) | fn copy_file_metadata(from: &Path, to: &Path) -> Result<(), std::io::Err...
function copy_file_metadata (line 168) | fn copy_file_metadata(from: &Path, to: &Path) -> Result<(), std::io::Err...
FILE: cli/src/singleton.rs
type SingletonServer (line 27) | pub struct SingletonServer {
method accept (line 33) | pub async fn accept(&mut self) -> Result<AsyncPipe, CodeError> {
type SingletonConnection (line 38) | pub enum SingletonConnection {
type LockFileMatter (line 49) | struct LockFileMatter {
function acquire_singleton (line 56) | pub async fn acquire_singleton(lock_file: &Path) -> Result<SingletonConn...
function connect_as_client (line 77) | pub async fn connect_as_client(lock_file: &Path) -> Result<AsyncPipe, Co...
function start_singleton_server (line 86) | async fn start_singleton_server(mut lock: FileLock) -> Result<SingletonS...
constant MAX_CLIENT_ATTEMPTS (line 110) | const MAX_CLIENT_ATTEMPTS: i32 = 10;
function connect_as_client_with_file (line 112) | async fn connect_as_client_with_file(mut file: &mut File) -> Result<Asyn...
function retry_get_socket_rw_stream (line 139) | async fn retry_get_socket_rw_stream(
function test_acquires_singleton (line 160) | async fn test_acquires_singleton() {
function test_acquires_client (line 173) | async fn test_acquires_client() {
FILE: cli/src/state.rs
constant HOME_DIR_ALTS (line 23) | const HOME_DIR_ALTS: [&str; 2] = ["$HOME", "~"];
type LauncherPaths (line 26) | pub struct LauncherPaths {
method migrate (line 138) | pub fn migrate(root: Option<String>) -> Result<LauncherPaths, AnyError> {
method new (line 164) | pub fn new(root: Option<String>) -> Result<LauncherPaths, AnyError> {
method new_for_path (line 180) | fn new_for_path(root: PathBuf) -> Result<LauncherPaths, AnyError> {
method new_without_replacements (line 189) | pub fn new_without_replacements(root: PathBuf) -> LauncherPaths {
method root (line 202) | pub fn root(&self) -> &Path {
method tunnel_lockfile (line 207) | pub fn tunnel_lockfile(&self) -> PathBuf {
method forwarding_lockfile (line 215) | pub fn forwarding_lockfile(&self) -> PathBuf {
method service_log_file (line 223) | pub fn service_log_file(&self) -> PathBuf {
method remove (line 228) | pub fn remove(&self) -> Result<(), WrappedError> {
method web_server_storage (line 241) | pub fn web_server_storage(&self) -> PathBuf {
type PersistedStateContainer (line 32) | struct PersistedStateContainer<T>
function load_or_get (line 46) | fn load_or_get(&mut self) -> T {
function save (line 61) | fn save(&mut self, state: T) -> Result<(), WrappedError> {
function write_state (line 72) | fn write_state(&mut self, s: String) -> std::io::Result<()> {
type PersistedState (line 90) | pub struct PersistedState<T>
function new (line 102) | pub fn new(path: PathBuf) -> PersistedState<T> {
function new_with_mode (line 107) | pub fn new_with_mode(path: PathBuf, mode: u32) -> PersistedState<T> {
function load (line 118) | pub fn load(&self) -> T {
function save (line 123) | pub fn save(&self, state: T) -> Result<(), WrappedError> {
function update (line 128) | pub fn update<R>(&self, mutator: impl FnOnce(&mut T) -> R) -> Result<R, ...
FILE: cli/src/tunnels/challenge.rs
function create_challenge (line 7) | pub fn create_challenge() -> String {
function sign_challenge (line 13) | pub fn sign_challenge(challenge: &str) -> String {
function verify_challenge (line 23) | pub fn verify_challenge(challenge: &str, response: &str) -> bool {
function create_challenge (line 28) | pub fn create_challenge() -> String {
function sign_challenge (line 35) | pub fn sign_challenge(challenge: &str) -> String {
function verify_challenge (line 40) | pub fn verify_challenge(challenge: &str, response: &str) -> bool {
FILE: cli/src/tunnels/code_server.rs
type CodeServerArgs (line 50) | pub struct CodeServerArgs {
method log_level (line 80) | pub fn log_level(&self) -> log::Level {
method telemetry_disabled (line 88) | pub fn telemetry_disabled(&self) -> bool {
method command_arguments (line 92) | pub fn command_arguments(&self) -> Vec<String> {
type ServerParamsRaw (line 166) | pub struct ServerParamsRaw {
method resolve (line 191) | pub async fn resolve(
method get_or_fetch_commit_id (line 202) | async fn get_or_fetch_commit_id(
type ResolvedServerParams (line 175) | pub struct ResolvedServerParams {
method as_installed_server (line 181) | fn as_installed_server(&self) -> InstalledServer {
type UpdateServerVersion (line 231) | struct UpdateServerVersion {
type SocketCodeServer (line 240) | pub struct SocketCodeServer {
type PortCodeServer (line 248) | pub struct PortCodeServer {
type AnyCodeServer (line 255) | pub enum AnyCodeServer {
type CodeServerOrigin (line 260) | pub enum CodeServerOrigin {
method wait_for_exit (line 268) | pub async fn wait_for_exit(&mut self) {
method kill (line 282) | pub async fn kill(&mut self) {
function do_extension_install_on_running_server (line 295) | async fn do_extension_install_on_running_server(
type ServerBuilder (line 325) | pub struct ServerBuilder<'a> {
function new (line 334) | pub fn new(
function get_running (line 352) | pub async fn get_running(&self) -> Result<Option<AnyCodeServer>, AnyErro...
function evict (line 399) | pub async fn evict(&self) -> Result<(), WrappedError> {
function setup (line 409) | pub async fn setup(&self) -> Result<(), AnyError> {
function listen_on_port (line 487) | pub async fn listen_on_port(&self, port: u16) -> Result<PortCodeServer, ...
function install_extensions (line 522) | pub async fn install_extensions(&self) -> Result<(), AnyError> {
function listen_on_default_socket (line 543) | pub async fn listen_on_default_socket(&self) -> Result<SocketCodeServer,...
function listen_on_socket (line 548) | pub async fn listen_on_socket(&self, socket: &Path) -> Result<SocketCode...
function _listen_on_socket (line 559) | async fn _listen_on_socket(&self, socket: &Path) -> Result<SocketCodeSer...
function spawn_server_process (line 595) | async fn spawn_server_process(&self, mut cmd: Command) -> Result<Child, ...
function get_logfile (line 628) | fn get_logfile(&self) -> Result<File, WrappedError> {
function get_base_command (line 640) | fn get_base_command(&self) -> Command {
function monitor_server (line 648) | fn monitor_server<M, R>(
function get_extensions_flag (line 735) | fn get_extensions_flag(extension_id: &str) -> String {
type ServerOutputMatcher (line 741) | pub trait ServerOutputMatcher<R>
method match_line (line 745) | fn match_line(line: &str) -> Option<R>;
type SocketMatcher (line 749) | struct SocketMatcher();
method match_line (line 752) | fn match_line(line: &str) -> Option<PathBuf> {
type PortMatcher (line 758) | pub struct PortMatcher();
method match_line (line 761) | fn match_line(line: &str) -> Option<u16> {
type WebUiMatcher (line 767) | pub struct WebUiMatcher();
method match_line (line 770) | fn match_line(line: &str) -> Option<reqwest::Url> {
type NoOpMatcher (line 779) | pub struct NoOpMatcher();
method match_line (line 782) | fn match_line(_: &str) -> Option<()> {
function parse_socket_from (line 787) | fn parse_socket_from(text: &str) -> Option<PathBuf> {
function parse_port_from (line 793) | fn parse_port_from(text: &str) -> Option<u16> {
function print_listening (line 800) | pub fn print_listening(log: &log::Logger, tunnel_name: &str) {
function download_cli_into_cache (line 837) | pub async fn download_cli_into_cache(
function get_should_use_breakaway_from_job (line 874) | async fn get_should_use_breakaway_from_job() -> bool {
FILE: cli/src/tunnels/control_server.rs
type HttpRequestsMap (line 71) | type HttpRequestsMap = Arc<std::sync::Mutex<HashMap<u32, DelegatedHttpRe...
type CodeServerCell (line 72) | type CodeServerCell = Arc<Mutex<Option<SocketCodeServer>>>;
type HandlerContext (line 74) | struct HandlerContext {
method dispose (line 119) | async fn dispose(&self) {
type AuthState (line 102) | enum AuthState {
function next_message_id (line 114) | pub fn next_message_id() -> u32 {
type ServerSignal (line 125) | enum ServerSignal {
type Next (line 134) | pub enum Next {
type ServerTermination (line 143) | pub struct ServerTermination {
function preload_extensions (line 148) | async fn preload_extensions(
function serve (line 176) | pub async fn serve(
type AuthRequired (line 288) | pub enum AuthRequired {
type ServeStreamParams (line 295) | pub struct ServeStreamParams {
function serve_stream (line 304) | pub async fn serve_stream(
type SocketStats (line 317) | pub struct SocketStats {
function make_socket_rpc (line 323) | fn make_socket_rpc(
function ensure_auth (line 511) | fn ensure_auth(is_authed: &Arc<std::sync::Mutex<AuthState>>) -> Result<(...
function process_socket (line 520) | async fn process_socket(
function send_version (line 642) | async fn send_version(tx: &mpsc::Sender<SocketSignal>) {
function handle_socket_read (line 650) | async fn handle_socket_read(
type ServerOutputSink (line 707) | struct ServerOutputSink {
method write_log (line 712) | fn write_log(&self, level: log::Level, _prefix: &str, message: &str) {
method write_result (line 724) | fn write_result(&self, _message: &str) {}
function handle_serve (line 727) | async fn handle_serve(
function attach_server_bridge (line 823) | async fn attach_server_bridge(
function handle_server_message (line 864) | fn handle_server_message(
function handle_prune (line 876) | fn handle_prune(paths: &LauncherPaths) -> Result<Vec<String>, AnyError> {
function handle_update (line 884) | async fn handle_update(
function handle_get_hostname (line 938) | fn handle_get_hostname() -> Result<GetHostnameResponse, AnyError> {
function handle_stat (line 944) | fn handle_stat(path: String) -> Result<FsStatResponse, AnyError> {
function handle_fs_read (line 954) | async fn handle_fs_read(mut out: DuplexStream, path: String) -> Result<E...
function handle_fs_write (line 966) | async fn handle_fs_write(mut input: DuplexStream, path: String) -> Resul...
function handle_net_connect (line 978) | async fn handle_net_connect(
function handle_fs_connect (line 992) | async fn handle_fs_connect(
function handle_fs_remove (line 1007) | async fn handle_fs_remove(path: String) -> Result<EmptyObject, AnyError> {
function handle_fs_rename (line 1014) | fn handle_fs_rename(from_path: String, to_path: String) -> Result<EmptyO...
function handle_fs_mkdirp (line 1019) | fn handle_fs_mkdirp(path: String) -> Result<EmptyObject, AnyError> {
function handle_fs_readdir (line 1024) | fn handle_fs_readdir(path: String) -> Result<FsReadDirResponse, AnyError> {
function handle_sys_kill (line 1038) | fn handle_sys_kill(pid: u32) -> Result<SysKillResponse, AnyError> {
function handle_get_env (line 1044) | fn handle_get_env() -> Result<GetEnvResponse, AnyError> {
function handle_challenge_issue (line 1057) | fn handle_challenge_issue(
function handle_challenge_verify (line 1076) | fn handle_challenge_verify(
function handle_forward (line 1095) | async fn handle_forward(
function handle_unforward (line 1116) | async fn handle_unforward(
function handle_call_server_http (line 1129) | async fn handle_call_server_http(
function handle_acquire_cli (line 1184) | async fn handle_acquire_cli(
function handle_spawn (line 1215) | async fn handle_spawn<Stdin, StdoutAndErr>(
function handle_spawn_cli (line 1271) | async fn handle_spawn_cli(
type TokioCopyFuture (line 1325) | type TokioCopyFuture = dyn futures::Future<Output = Result<u64, std::io:...
function get_joined_result (line 1327) | async fn get_joined_result(
function wait_for_process_exit (line 1338) | async fn wait_for_process_exit(
function spawn_do_child_authentication (line 1372) | async fn spawn_do_child_authentication(
function do_challenge_response_flow (line 1407) | async fn do_challenge_response_flow(
FILE: cli/src/tunnels/dev_tunnels.rs
constant IS_WSL_INSTALLED (line 42) | pub const IS_WSL_INSTALLED: u32 = 1 << 0;
constant IS_WINDOWS (line 43) | pub const IS_WINDOWS: u32 = 1 << 1;
constant IS_LINUX (line 44) | pub const IS_LINUX: u32 = 1 << 2;
constant IS_MACOS (line 45) | pub const IS_MACOS: u32 = 1 << 3;
function create (line 48) | pub fn create(log: &log::Logger) -> String {
type PersistedTunnel (line 73) | pub struct PersistedTunnel {
method into_locator (line 80) | pub fn into_locator(self) -> TunnelLocator {
method locator (line 86) | pub fn locator(&self) -> TunnelLocator {
type AccessTokenProvider (line 95) | trait AccessTokenProvider: Send + Sync {
method refresh_token (line 97) | async fn refresh_token(&self) -> Result<String, WrappedError>;
method keep_alive (line 102) | fn keep_alive(&self) -> BoxFuture<'static, Result<(), AnyError>>;
method refresh_token (line 116) | async fn refresh_token(&self) -> Result<String, WrappedError> {
method keep_alive (line 120) | fn keep_alive(&self) -> BoxFuture<'static, Result<(), AnyError>> {
method refresh_token (line 154) | async fn refresh_token(&self) -> Result<String, WrappedError> {
method keep_alive (line 179) | fn keep_alive(&self) -> BoxFuture<'static, Result<(), AnyError>> {
type StaticAccessTokenProvider (line 106) | struct StaticAccessTokenProvider(String);
method new (line 109) | pub fn new(token: String) -> Self {
type LookupAccessTokenProvider (line 126) | struct LookupAccessTokenProvider {
method new (line 135) | pub fn new(
type DevTunnels (line 186) | pub struct DevTunnels {
method new_port_forwarding (line 326) | pub fn new_port_forwarding(
method new_remote_tunnel (line 344) | pub fn new_remote_tunnel(
method remove_tunnel (line 361) | pub async fn remove_tunnel(&mut self) -> Result<(), AnyError> {
method rename_tunnel (line 382) | pub async fn rename_tunnel(&mut self, name: &str) -> Result<(), AnyErr...
method update_tunnel_name (line 390) | async fn update_tunnel_name(
method get_or_create_tunnel (line 439) | async fn get_or_create_tunnel(
method start_new_launcher_tunnel (line 468) | pub async fn start_new_launcher_tunnel(
method create_tunnel (line 558) | async fn create_tunnel(
method get_labels (line 638) | fn get_labels(&self, name: &str) -> Vec<String> {
method sync_tunnel_tags (line 649) | async fn sync_tunnel_tags(
method try_recycle_tunnel (line 686) | async fn try_recycle_tunnel(&mut self) -> Result<bool, AnyError> {
method list_tunnels_with_tag (line 718) | async fn list_tunnels_with_tag(
method get_existing_tunnel_with_name (line 735) | async fn get_existing_tunnel_with_name(&self, name: &str) -> Result<Op...
method get_placeholder_name (line 753) | fn get_placeholder_name() -> String {
method get_name_for_tunnel (line 760) | async fn get_name_for_tunnel(
method start_existing_tunnel (line 825) | pub async fn start_existing_tunnel(
method start_tunnel (line 865) | async fn start_tunnel(
type ActiveTunnel (line 195) | pub struct ActiveTunnel {
method close (line 205) | pub async fn close(&mut self) -> Result<(), AnyError> {
method add_port_direct (line 211) | pub async fn add_port_direct(
method add_port_tcp (line 220) | pub async fn add_port_tcp(
method remove_port (line 233) | pub async fn remove_port(&self, port_number: u16) -> Result<(), AnyErr...
method get_port_format (line 239) | pub fn get_port_format(&self) -> Result<String, AnyError> {
method get_port_uri (line 256) | pub fn get_port_uri(&self, port: u16) -> Result<String, AnyError> {
method status (line 262) | pub fn status(&self) -> StatusLock {
constant VSCODE_CLI_TUNNEL_TAG (line 267) | const VSCODE_CLI_TUNNEL_TAG: &str = "vscode-server-launcher";
constant VSCODE_CLI_FORWARDING_TAG (line 268) | const VSCODE_CLI_FORWARDING_TAG: &str = "vscode-port-forward";
constant OWNED_TUNNEL_TAGS (line 269) | const OWNED_TUNNEL_TAGS: &[&str] = &[VSCODE_CLI_TUNNEL_TAG, VSCODE_CLI_F...
constant MAX_TUNNEL_NAME_LENGTH (line 270) | const MAX_TUNNEL_NAME_LENGTH: usize = 20;
function get_host_token_from_tunnel (line 272) | fn get_host_token_from_tunnel(tunnel: &Tunnel) -> String {
function is_valid_name (line 282) | fn is_valid_name(name: &str) -> Result<(), InvalidTunnelName> {
type ExistingTunnel (line 310) | pub struct ExistingTunnel {
type StatusLock (line 900) | pub struct StatusLock(Arc<std::sync::Mutex<protocol::singleton::Status>>);
method succeed (line 903) | fn succeed(&self) {
method fail (line 909) | fn fail(&self, reason: String) {
method read (line 918) | pub fn read(&self) -> protocol::singleton::Status {
type ActiveTunnelManager (line 924) | struct ActiveTunnelManager {
method new (line 932) | pub fn new(
method get_status (line 968) | pub fn get_status(&self) -> StatusLock {
method add_port_tcp (line 973) | pub async fn add_port_tcp(
method add_port_direct (line 994) | pub async fn add_port_direct(
method remove_port (line 1012) | pub async fn remove_port(&self, port_number: u16) -> Result<(), Wrappe...
method get_endpoint (line 1023) | pub async fn get_endpoint(&mut self) -> Result<TunnelRelayTunnelEndpoi...
method kill (line 1037) | pub async fn kill(&mut self) -> Result<(), AnyError> {
method spawn_tunnel (line 1054) | async fn spawn_tunnel(
type Backoff (line 1133) | struct Backoff {
method new (line 1140) | pub fn new(base_duration: Duration, max_duration: Duration) -> Self {
method delay (line 1148) | pub async fn delay(&mut self) {
method next (line 1152) | pub fn next(&mut self) -> Duration {
method reset (line 1161) | pub fn reset(&mut self) {
function clean_hostname_for_tunnel (line 1168) | fn clean_hostname_for_tunnel(hostname: &str) -> String {
function vec_eq_as_set (line 1190) | fn vec_eq_as_set(a: &[String], b: &[String]) -> bool {
function privacy_to_tunnel_acl (line 1204) | fn privacy_to_tunnel_acl(privacy: PortPrivacy) -> TunnelAccessControl {
function tunnel_has_host_connection (line 1235) | fn tunnel_has_host_connection(tunnel: &Tunnel) -> bool {
function test_clean_hostname_for_tunnel (line 1248) | fn test_clean_hostname_for_tunnel() {
FILE: cli/src/tunnels/legal.rs
constant LICENSE_PROMPT (line 17) | const LICENSE_PROMPT: Option<&'static str> = option_env!("VSCODE_CLI_REM...
type PersistedConsent (line 20) | struct PersistedConsent {
function require_consent (line 24) | pub fn require_consent(
FILE: cli/src/tunnels/local_forwarding.rs
type PortCount (line 36) | struct PortCount {
type Output (line 42) | type Output = u32;
method index (line 44) | fn index(&self, privacy: PortPrivacy) -> &Self::Output {
method index_mut (line 53) | fn index_mut(&mut self, privacy: PortPrivacy) -> &mut Self::Output {
method is_empty (line 62) | fn is_empty(&self) -> bool {
method primary_privacy (line 66) | fn primary_privacy(&self) -> PortPrivacy {
type PortMapRec (line 75) | struct PortMapRec {
type PortMap (line 80) | type PortMap = HashMap<u16, PortMapRec>;
type PortForwardingSender (line 84) | struct PortForwardingSender {
method set_ports (line 101) | pub fn set_ports(&self, ports: PortList) {
method clone (line 142) | fn clone(&self) -> Self {
method drop (line 151) | fn drop(&mut self) {
type PortForwardingReceiver (line 156) | struct PortForwardingReceiver {
method new (line 161) | pub fn new() -> (PortForwardingSender, Self) {
method apply_to (line 174) | pub async fn apply_to(&mut self, log: log::Logger, tunnel: Arc<ActiveT...
type SingletonClientArgs (line 216) | pub struct SingletonClientArgs {
type SingletonServerContext (line 224) | struct SingletonServerContext {
function client (line 231) | pub async fn client(args: SingletonClientArgs) -> Result<(), std::io::Er...
function server (line 276) | pub async fn server(
function serve_singleton_rpc (line 304) | async fn serve_singleton_rpc(
function print_forwarding_addr (line 353) | fn print_forwarding_addr(r: &SetPortsResponse) {
FILE: cli/src/tunnels/nosleep.rs
type SleepInhibitor (line 7) | pub type SleepInhibitor = super::nosleep_windows::SleepInhibitor;
type SleepInhibitor (line 10) | pub type SleepInhibitor = super::nosleep_linux::SleepInhibitor;
type SleepInhibitor (line 13) | pub type SleepInhibitor = super::nosleep_macos::SleepInhibitor;
FILE: cli/src/tunnels/nosleep_linux.rs
type PMInhibitor (line 26) | trait PMInhibitor {
method inhibit (line 28) | fn inhibit(&self, what: &str, why: &str) -> zbus::Result<u32>;
type ScreenSaver (line 38) | trait ScreenSaver {
method inhibit (line 40) | fn inhibit(&self, what: &str, why: &str) -> zbus::Result<u32>;
type SleepInhibitor (line 43) | pub struct SleepInhibitor {
method new (line 48) | pub async fn new() -> Result<Self, AnyError> {
FILE: cli/src/tunnels/nosleep_macos.rs
function IOPMAssertionCreateWithName (line 15) | pub fn IOPMAssertionCreateWithName(
function IOPMAssertionRelease (line 22) | pub fn IOPMAssertionRelease(assertion_id: u32) -> c_int;
constant NUM_ASSERTIONS (line 25) | const NUM_ASSERTIONS: usize = 2;
constant ASSERTIONS (line 27) | const ASSERTIONS: [&str; NUM_ASSERTIONS] = ["PreventUserIdleSystemSleep"...
type Assertion (line 29) | struct Assertion(u32);
method make (line 32) | pub fn make(typ: &CFString, name: &CFString) -> io::Result<Self> {
method drop (line 52) | fn drop(&mut self) {
type SleepInhibitor (line 59) | pub struct SleepInhibitor {
method new (line 64) | pub async fn new() -> io::Result<Self> {
FILE: cli/src/tunnels/nosleep_windows.rs
type Request (line 23) | struct Request(*mut c_void);
method new (line 26) | pub fn new() -> io::Result<Self> {
method set (line 43) | pub fn set(&self, request_type: POWER_REQUEST_TYPE) -> io::Result<()> {
method drop (line 54) | fn drop(&mut self) {
type SleepInhibitor (line 61) | pub struct SleepInhibitor {
method new (line 66) | pub async fn new() -> io::Result<Self> {
method drop (line 74) | fn drop(&mut self) {
FILE: cli/src/tunnels/paths.rs
constant SERVER_FOLDER_NAME (line 22) | pub const SERVER_FOLDER_NAME: &str = "server";
type ServerPaths (line 24) | pub struct ServerPaths {
method get_running_pid (line 38) | pub fn get_running_pid(&self) -> Option<u32> {
method delete (line 56) | pub fn delete(&self) -> Result<(), WrappedError> {
method write_pid (line 66) | pub fn write_pid(&self, pid: u32) -> Result<(), WrappedError> {
method read_pid (line 75) | fn read_pid(&self) -> Option<u32> {
type InstalledServer (line 83) | pub struct InstalledServer {
method server_paths (line 91) | pub fn server_paths(&self, p: &LauncherPaths) -> ServerPaths {
method get_install_folder (line 109) | fn get_install_folder(&self, p: &LauncherPaths) -> PathBuf {
function prune_stopped_servers (line 119) | pub fn prune_stopped_servers(launcher_paths: &LauncherPaths) -> Result<V...
function get_all_servers (line 130) | pub fn get_all_servers(lp: &LauncherPaths) -> Vec<InstalledServer> {
function get_server_folder_name (line 157) | pub fn get_server_folder_name(quality: Quality, commit: &str) -> String {
FILE: cli/src/tunnels/port_forwarder.rs
type PortForwardingRec (line 20) | pub enum PortForwardingRec {
type PortForwardingProcessor (line 28) | pub struct PortForwardingProcessor {
method new (line 35) | pub fn new() -> Self {
method handle (line 45) | pub fn handle(&self) -> PortForwarding {
method recv (line 53) | pub async fn recv(&mut self) -> Option<PortForwardingRec> {
method process (line 58) | pub async fn process(&mut self, req: PortForwardingRec, tunnel: &mut A...
method process_unforward (line 70) | async fn process_unforward(
method process_forward (line 84) | async fn process_forward(
type PortForwarding (line 106) | pub struct PortForwarding {
method forward (line 111) | pub async fn forward(&self, port: u16, privacy: PortPrivacy) -> Result...
method unforward (line 125) | pub async fn unforward(&self, port: u16) -> Result<(), AnyError> {
FILE: cli/src/tunnels/protocol.rs
type ClientRequestMethod (line 17) | pub enum ClientRequestMethod<'a> {
type HttpBodyParams (line 26) | pub struct HttpBodyParams {
type HttpRequestParams (line 34) | pub struct HttpRequestParams<'a> {
type HttpHeadersParams (line 41) | pub struct HttpHeadersParams {
type ForwardParams (line 48) | pub struct ForwardParams {
type UnforwardParams (line 55) | pub struct UnforwardParams {
type ForwardResult (line 60) | pub struct ForwardResult {
type ServeParams (line 65) | pub struct ServeParams {
type EmptyObject (line 81) | pub struct EmptyObject {}
type UpdateParams (line 84) | pub struct UpdateParams {
type ServerMessageParams (line 89) | pub struct ServerMessageParams {
type ServerClosedParams (line 96) | pub struct ServerClosedParams {
type RefServerMessageParams (line 101) | pub struct RefServerMessageParams<'a> {
type UpdateResult (line 108) | pub struct UpdateResult {
type ToClientRequest (line 114) | pub struct ToClientRequest<'a> {
type ServerLog (line 121) | pub struct ServerLog<'a> {
type GetHostnameResponse (line 127) | pub struct GetHostnameResponse {
type GetEnvResponse (line 132) | pub struct GetEnvResponse {
type SysKillRequest (line 140) | pub struct SysKillRequest {
type SysKillResponse (line 145) | pub struct SysKillResponse {
type FsSinglePathRequest (line 159) | pub struct FsSinglePathRequest {
type FsFileKind (line 164) | pub enum FsFileKind {
method from (line 174) | fn from(kind: std::fs::FileType) -> Self {
type FsStatResponse (line 188) | pub struct FsStatResponse {
type FsReadDirResponse (line 196) | pub struct FsReadDirResponse {
type FsReadDirEntry (line 201) | pub struct FsReadDirEntry {
type FsRenameRequest (line 209) | pub struct FsRenameRequest {
type NetConnectRequest (line 216) | pub struct NetConnectRequest {
type CallServerHttpParams (line 222) | pub struct CallServerHttpParams {
type CallServerHttpResult (line 230) | pub struct CallServerHttpResult {
type VersionResponse (line 238) | pub struct VersionResponse {
method default (line 244) | fn default() -> Self {
type SpawnParams (line 253) |
Copy disabled (too large)
Download .json
Condensed preview — 8041 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (18,603K chars).
[
{
"path": ".config/1espt/PipelineAutobaseliningConfig.yml",
"chars": 621,
"preview": "## DO NOT MODIFY THIS FILE MANUALLY. This is part of auto-baselining from 1ES Pipeline Templates. Go to [https://aka.ms/"
},
{
"path": ".config/guardian/.gdnbaselines",
"chars": 11207,
"preview": "{\n \"properties\": {\n \"helpUri\": \"https://eng.ms/docs/microsoft-security/security/azure-security/cloudai-security-fund"
},
{
"path": ".config/guardian/.gdnsuppress",
"chars": 1582,
"preview": "{\n \"hydrated\": false,\n \"properties\": {\n \"helpUri\": \"https://eng.ms/docs/microsoft-security/security/azure-security/"
},
{
"path": ".configurations/configuration.dsc.yaml",
"chars": 1777,
"preview": "# yaml-language-server: $schema=https://aka.ms/configuration-dsc-schema/0.2\n# Reference: https://github.com/microsoft/vs"
},
{
"path": ".devcontainer/Dockerfile",
"chars": 502,
"preview": "FROM mcr.microsoft.com/devcontainers/typescript-node:20-bookworm\n\nADD install-vscode.sh /root/\nRUN /root/install-vscode."
},
{
"path": ".devcontainer/README.md",
"chars": 7581,
"preview": "# Code - OSS Development Container\n\n[ Micros"
},
{
"path": ".eslint-plugin-local/code-declare-service-brand.ts",
"chars": 946,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-ensure-no-disposables-leak-in-test.ts",
"chars": 1555,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-import-patterns.ts",
"chars": 9316,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-layering.ts",
"chars": 2304,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-limited-top-functions.ts",
"chars": 2293,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-must-use-result.ts",
"chars": 1347,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-must-use-super-dispose.ts",
"chars": 925,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-dangerous-type-assertions.ts",
"chars": 1497,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-global-document-listener.ts",
"chars": 1119,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-native-private.ts",
"chars": 1165,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-nls-in-standalone-editor.ts",
"chars": 1502,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-potentially-unsafe-disposables.ts",
"chars": 1446,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-runtime-import.ts",
"chars": 2146,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-standalone-editor.ts",
"chars": 1576,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-static-self-ref.ts",
"chars": 1875,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-test-async-suite.ts",
"chars": 1243,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-test-only.ts",
"chars": 754,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-unexternalized-strings.ts",
"chars": 5988,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-unused-expressions.ts",
"chars": 4899,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-parameter-properties-must-have-explicit-accessibility.ts",
"chars": 1346,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-translation-remind.ts",
"chars": 2147,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/index.js",
"chars": 681,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/package.json",
"chars": 24,
"preview": "{\n\t\"type\": \"commonjs\"\n}\n"
},
{
"path": ".eslint-plugin-local/tsconfig.json",
"chars": 442,
"preview": "{\n\t\"compilerOptions\": {\n\t\t\"target\": \"es2020\",\n\t\t\"lib\": [\n\t\t\t\"ES2020\"\n\t\t],\n\t\t\"module\": \"commonjs\",\n\t\t\"esModuleInterop\": t"
},
{
"path": ".eslint-plugin-local/utils.ts",
"chars": 1496,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/vscode-dts-cancellation.ts",
"chars": 1217,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/vscode-dts-create-func.ts",
"chars": 1463,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/vscode-dts-event-naming.ts",
"chars": 3000,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/vscode-dts-interface-naming.ts",
"chars": 1047,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/vscode-dts-literal-or-types.ts",
"chars": 1061,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/vscode-dts-provider-naming.ts",
"chars": 1472,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/vscode-dts-string-type-literals.ts",
"chars": 1143,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/vscode-dts-use-export.ts",
"chars": 1123,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/vscode-dts-use-thenable.ts",
"chars": 859,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/vscode-dts-vscode-in-comments.ts",
"chars": 1699,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".git-blame-ignore-revs",
"chars": 955,
"preview": "# https://git-scm.com/docs/git-blame#Documentation/git-blame.txt---ignore-revs-fileltfilegt\n# https://docs.github.com/en"
},
{
"path": ".gitattributes",
"chars": 167,
"preview": "* text=auto\n\nLICENSE.txt eol=crlf\nThirdPartyNotices.txt eol=crlf\n\n*.bat eol=crlf\n*.cmd eol=crlf\n*.ps1 eol=lf\n*.sh eol=lf"
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 28,
"preview": "blank_issues_enabled: false\n"
},
{
"path": ".github/ISSUE_TEMPLATE/issue_template.md",
"chars": 413,
"preview": "---\nname: Issue\nabout: Submit an Issue to Void\ntitle: For VSCode-related issues (eg builds), please start the title with"
},
{
"path": ".github/scripts/issue_triage.py",
"chars": 5550,
"preview": "#!/usr/bin/env python\nfrom __future__ import annotations\nimport os, sys, json, datetime, pathlib, textwrap, requests\nfro"
},
{
"path": ".github/workflows/triage.yml",
"chars": 1894,
"preview": "name: Issue Triage to Wiki\n\non:\n workflow_dispatch:\n schedule:\n - cron: '0 */6 * * *' # every 6 hrs (UTC)\n\njobs:"
},
{
"path": ".gitignore",
"chars": 471,
"preview": ".DS_Store\n.cache\nnpm-debug.log\nThumbs.db\nnode_modules/\n.build/\n.vscode/extensions/**/out/\nextensions/**/dist/\n/out*/\n/ex"
},
{
"path": ".idx/dev.nix",
"chars": 1560,
"preview": "# Created for Void\n# To learn more about how to use Nix to configure your environment\n# see: https://developers.google.c"
},
{
"path": ".lsifrc.json",
"chars": 116,
"preview": "{\n\t\"project\": \"src/tsconfig.json\",\n\t\"source\": \"./package.json\",\n\t\"package\": \"package.json\",\n\t\"out\": \"vscode.lsif\"\n}\n"
},
{
"path": ".mailmap",
"chars": 263,
"preview": "Daniel Imms <daimms@microsoft.com> Daniel Imms <tyriar@tyriar.com>\nRaymond Zhao <raymondzhao@microsoft.com>\nTyler Leonha"
},
{
"path": ".mention-bot",
"chars": 153,
"preview": "{\n \"maxReviewers\": 2,\n \"requiredOrgs\": [\"Microsoft\"],\n \"skipAlreadyAssignedPR\": true,\n \"skipAlreadyMentionedPR\": tru"
},
{
"path": ".npmrc",
"chars": 163,
"preview": "disturl=\"https://electronjs.org/headers\"\ntarget=\"34.3.2\"\nms_build_id=\"11161073\"\nruntime=\"electron\"\nbuild_from_source=\"tr"
},
{
"path": ".nvmrc",
"chars": 8,
"preview": "20.18.2\n"
},
{
"path": ".voidrules",
"chars": 878,
"preview": "This is a fork of the VSCode repo called Void.\n\nMost code we care about lives in src/vs/workbench/contrib/void.\n\nYou may"
},
{
"path": ".vscode/cglicenses.schema.json",
"chars": 1845,
"preview": "{\n\t\"type\": \"array\",\n\t\"items\": {\n\t\t\"oneOf\": [\n\t\t\t{\n\t\t\t\t\"type\": \"object\",\n\t\t\t\t\"required\": [\n\t\t\t\t\t\"name\",\n\t\t\t\t\t\"prependLice"
},
{
"path": ".vscode/extensions/vscode-selfhost-import-aid/.vscode/launch.json",
"chars": 315,
"preview": "{\n\t\"configurations\": [\n\t\t{\n\t\t\t\"args\": [\n\t\t\t\t\"--extensionDevelopmentPath=${workspaceFolder}\",\n\t\t\t\t\"--enable-proposed-api="
},
{
"path": ".vscode/extensions/vscode-selfhost-import-aid/.vscode/settings.json",
"chars": 172,
"preview": "{\n\t\"editor.formatOnSave\": true,\n\t\"editor.defaultFormatter\": \"vscode.typescript-language-features\",\n\t\"editor.codeActionsO"
},
{
"path": ".vscode/extensions/vscode-selfhost-import-aid/package.json",
"chars": 683,
"preview": "{\n \"name\": \"vscode-selfhost-import-aid\",\n \"displayName\": \"VS Code Selfhost Import Aid\",\n \"description\": \"Util to impr"
},
{
"path": ".vscode/extensions/vscode-selfhost-import-aid/src/extension.ts",
"chars": 8172,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".vscode/extensions/vscode-selfhost-import-aid/tsconfig.json",
"chars": 216,
"preview": "{\n\t\"extends\": \"../../../extensions/tsconfig.base.json\",\n\t\"compilerOptions\": {\n\t\t\"outDir\": \"./out\",\n\t\t\"types\": [\n\t\t\t\"node"
},
{
"path": ".vscode/extensions/vscode-selfhost-test-provider/.vscode/launch.json",
"chars": 296,
"preview": "{\n\t\"configurations\": [\n\t\t{\n\t\t\t\"args\": [\"--extensionDevelopmentPath=${workspaceFolder}\", \"--enable-proposed-api=ms-vscode"
},
{
"path": ".vscode/extensions/vscode-selfhost-test-provider/.vscode/settings.json",
"chars": 172,
"preview": "{\n\t\"editor.formatOnSave\": true,\n\t\"editor.defaultFormatter\": \"vscode.typescript-language-features\",\n\t\"editor.codeActionsO"
},
{
"path": ".vscode/extensions/vscode-selfhost-test-provider/package.json",
"chars": 2307,
"preview": "{\n \"name\": \"vscode-selfhost-test-provider\",\n \"displayName\": \"VS Code Selfhost Test Provider\",\n \"description\": \"Test p"
},
{
"path": ".vscode/extensions/vscode-selfhost-test-provider/src/coverageProvider.ts",
"chars": 5567,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".vscode/extensions/vscode-selfhost-test-provider/src/debounce.ts",
"chars": 843,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".vscode/extensions/vscode-selfhost-test-provider/src/extension.ts",
"chars": 10442,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".vscode/extensions/vscode-selfhost-test-provider/src/failingDeepStrictEqualAssertFixer.ts",
"chars": 6904,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".vscode/extensions/vscode-selfhost-test-provider/src/failureTracker.ts",
"chars": 4435,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".vscode/extensions/vscode-selfhost-test-provider/src/importGraph.ts",
"chars": 7082,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".vscode/extensions/vscode-selfhost-test-provider/src/memoize.ts",
"chars": 631,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".vscode/extensions/vscode-selfhost-test-provider/src/metadata.ts",
"chars": 1538,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".vscode/extensions/vscode-selfhost-test-provider/src/snapshot.ts",
"chars": 1116,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".vscode/extensions/vscode-selfhost-test-provider/src/sourceUtils.ts",
"chars": 2749,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".vscode/extensions/vscode-selfhost-test-provider/src/stackTraceParser.ts",
"chars": 2032,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".vscode/extensions/vscode-selfhost-test-provider/src/streamSplitter.ts",
"chars": 1853,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".vscode/extensions/vscode-selfhost-test-provider/src/testOutputScanner.ts",
"chars": 18905,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".vscode/extensions/vscode-selfhost-test-provider/src/testTree.ts",
"chars": 5083,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".vscode/extensions/vscode-selfhost-test-provider/src/v8CoverageWrangling.test.ts",
"chars": 3928,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".vscode/extensions/vscode-selfhost-test-provider/src/v8CoverageWrangling.ts",
"chars": 6319,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".vscode/extensions/vscode-selfhost-test-provider/src/vscodeTestRunner.ts",
"chars": 9492,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".vscode/extensions/vscode-selfhost-test-provider/tsconfig.json",
"chars": 345,
"preview": "{\n\t\"extends\": \"../../../extensions/tsconfig.base.json\",\n\t\"compilerOptions\": {\n\t\t\"outDir\": \"./out\",\n\t\t\"types\": [\n\t\t\t\"node"
},
{
"path": ".vscode/extensions.json",
"chars": 352,
"preview": "{\n\t// See https://go.microsoft.com/fwlink/?LinkId=827846\n\t// for the documentation about the extensions.json format\n\t\"re"
},
{
"path": ".vscode/launch.json",
"chars": 17367,
"preview": "{\n\t\"version\": \"0.1.0\",\n\t\"configurations\": [\n\t\t{\n\t\t\t\"type\": \"node\",\n\t\t\t\"request\": \"launch\",\n\t\t\t\"name\": \"Gulp Build\",\n\t\t\t\""
},
{
"path": ".vscode/notebooks/api.github-issues",
"chars": 628,
"preview": "[\n {\n \"kind\": 1,\n \"language\": \"markdown\",\n \"value\": \"#### Config\"\n },\n {\n \"kind\": 2,\n \"language\": \"git"
},
{
"path": ".vscode/notebooks/endgame.github-issues",
"chars": 6131,
"preview": "[\n {\n \"kind\": 1,\n \"language\": \"markdown\",\n \"value\": \"#### Macros\"\n },\n {\n \"kind\": 2,\n \"language\": \"git"
},
{
"path": ".vscode/notebooks/grooming-delta.github-issues",
"chars": 15390,
"preview": "[\n {\n \"kind\": 1,\n \"language\": \"markdown\",\n \"value\": \"## Config\"\n },\n {\n \"kind\": 2,\n \"language\": \"githu"
},
{
"path": ".vscode/notebooks/grooming.github-issues",
"chars": 9624,
"preview": "[\n {\n \"kind\": 1,\n \"language\": \"markdown\",\n \"value\": \"#### Config\"\n },\n {\n \"kind\": 2,\n \"language\": \"git"
},
{
"path": ".vscode/notebooks/inbox.github-issues",
"chars": 3491,
"preview": "[\n {\n \"kind\": 1,\n \"language\": \"markdown\",\n \"value\": \"## tl;dr: Triage Inbox\\n\\nAll inbox issues but not those "
},
{
"path": ".vscode/notebooks/my-endgame.github-issues",
"chars": 8110,
"preview": "[\n {\n \"kind\": 1,\n \"language\": \"markdown\",\n \"value\": \"#### Macros\"\n },\n {\n \"kind\": 2,\n \"language\": \"git"
},
{
"path": ".vscode/notebooks/my-work.github-issues",
"chars": 11859,
"preview": "[\n {\n \"kind\": 1,\n \"language\": \"markdown\",\n \"value\": \"##### `Config`: This should be changed every month/milest"
},
{
"path": ".vscode/notebooks/papercuts.github-issues",
"chars": 1391,
"preview": "[\n {\n \"kind\": 1,\n \"language\": \"markdown\",\n \"value\": \"## Papercuts\\n\\nThis notebook serves as an ongoing collec"
},
{
"path": ".vscode/notebooks/verification.github-issues",
"chars": 3716,
"preview": "[\n {\n \"kind\": 1,\n \"language\": \"markdown\",\n \"value\": \"### Bug Verification Queries\\n\\nBefore shipping we want t"
},
{
"path": ".vscode/notebooks/vscode-dev.github-issues",
"chars": 1000,
"preview": "[\n {\n \"kind\": 2,\n \"language\": \"github-issues\",\n \"value\": \"$milestone=milestone:\\\"August 2024\\\"\"\n },\n {\n \""
},
{
"path": ".vscode/searches/ts36031.code-search",
"chars": 1901,
"preview": "# Query: \\\\w+\\\\?\\\\.\\\\w+![(.[]\n# Flags: RegExp\n# ContextLines: 2\n\n8 results - 4 files\n\nsrc/vs/base/browser/ui/tree/asyncD"
},
{
"path": ".vscode/settings.json",
"chars": 4861,
"preview": "{\n\t\"editor.insertSpaces\": false,\n\t\"files.trimTrailingWhitespace\": true,\n\t\"files.exclude\": {\n\t\t\".git\": true,\n\t\t\".build\": "
},
{
"path": ".vscode/shared.code-snippets",
"chars": 1481,
"preview": "{\n\t// Each snippet is defined under a snippet name and has a scope, prefix, body and\n\t// description. The scope defines "
},
{
"path": ".vscode/tasks.json",
"chars": 6591,
"preview": "{\n\t\"version\": \"2.0.0\",\n\t\"tasks\": [\n\t\t{\n\t\t\t\"type\": \"npm\",\n\t\t\t\"script\": \"watch-clientd\",\n\t\t\t\"label\": \"Core - Build\",\n\t\t\t\"i"
},
{
"path": ".vscode-test.js",
"chars": 4677,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": "CodeQL.yml",
"chars": 1450,
"preview": "path_classifiers:\n test:\n # Classify all files in the top-level directories test/ and testsuites/ as test code.\n "
},
{
"path": "HOW_TO_CONTRIBUTE.md",
"chars": 8038,
"preview": "# Contributing to Void\n### Welcome! 👋\nThis is the official guide on how to contribute to Void. We want to make it as eas"
},
{
"path": "LICENSE-VS-Code.txt",
"chars": 1283,
"preview": "Void is a fork of VS Code, which is licensed under the MIT License (below).\nVoid's additions and modifications are licen"
},
{
"path": "LICENSE.txt",
"chars": 11551,
"preview": " Apache License\r\n Version 2.0, January 2004\r\n "
},
{
"path": "README.md",
"chars": 1696,
"preview": "# Welcome to Void.\n\n<div align=\"center\">\n\t<img\n\t\tsrc=\"./src/vs/workbench/browser/parts/editor/media/slice_of_void.png\"\n\t"
},
{
"path": "ThirdPartyNotices.txt",
"chars": 185543,
"preview": "NOTICES\r\n\r\nThis repository incorporates material as listed below or described in the code.\r\n\r\n\r\n\r\n----------------------"
},
{
"path": "VOID_CODEBASE_GUIDE.md",
"chars": 9586,
"preview": "# Void Codebase Guide\n\nThe Void codebase is not as intimidating as it seems!\n\nMost of Void's code lives in the folder `s"
},
{
"path": "build/.cachesalt",
"chars": 25,
"preview": "2024-12-11T00:28:56.838Z\n"
},
{
"path": "build/.gitattributes",
"chars": 40,
"preview": "* text eol=lf\n*.exe binary\n*.dll binary\n"
},
{
"path": "build/.gitignore",
"chars": 9,
"preview": "*.js.map\n"
},
{
"path": "build/.moduleignore",
"chars": 4347,
"preview": "# cleanup rules for node modules, .gitignore style\n\n# native node modules\n\nnan/**\n*/node_modules/nan/**\n\nfsevents/bindin"
},
{
"path": "build/.moduleignore.darwin",
"chars": 523,
"preview": "@vscode/windows-mutex/index.js\n@vscode/windows-mutex/**/*.node\n@vscode/windows-mutex/*.md\n@vscode/windows-mutex/package."
},
{
"path": "build/.moduleignore.linux",
"chars": 523,
"preview": "@vscode/windows-mutex/index.js\n@vscode/windows-mutex/**/*.node\n@vscode/windows-mutex/*.md\n@vscode/windows-mutex/package."
},
{
"path": "build/.moduleignore.win32",
"chars": 0,
"preview": ""
},
{
"path": "build/.npmrc",
"chars": 141,
"preview": "disturl=\"https://nodejs.org/dist\"\nruntime=\"node\"\nbuild_from_source=\"true\"\nlegacy-peer-deps=\"true\"\nforce_process_config=\""
},
{
"path": "build/.webignore",
"chars": 1392,
"preview": "# cleanup rules for web node modules, .gitignore style\n\n**/*.txt\n**/*.json\n**/*.md\n**/*.d.ts\n**/*.js.map\n**/LICENSE\n**/C"
},
{
"path": "build/azure-pipelines/alpine/cli-build-alpine.yml",
"chars": 4270,
"preview": "parameters:\n - name: VSCODE_BUILD_ALPINE\n type: boolean\n default: false\n - name: VSCODE_BUILD_ALPINE_ARM64\n t"
},
{
"path": "build/azure-pipelines/alpine/product-build-alpine.yml",
"chars": 7639,
"preview": "steps:\n - task: NodeTool@0\n inputs:\n versionSource: fromFile\n versionFilePath: .nvmrc\n nodejsMirror: "
},
{
"path": "build/azure-pipelines/cli/cli-apply-patches.yml",
"chars": 246,
"preview": "steps:\n - template: ../distro/download-distro.yml@self\n\n - script: node build/azure-pipelines/distro/mixin-quality\n "
},
{
"path": "build/azure-pipelines/cli/cli-compile.yml",
"chars": 9861,
"preview": "parameters:\n - name: VSCODE_QUALITY\n type: string\n - name: VSCODE_CLI_TARGET\n type: string\n - name: VSCODE_CLI_"
},
{
"path": "build/azure-pipelines/cli/cli-darwin-sign.yml",
"chars": 2360,
"preview": "parameters:\n - name: VSCODE_CLI_ARTIFACTS\n type: object\n default: []\n\nsteps:\n - task: UseDotNet@2\n inputs:\n "
},
{
"path": "build/azure-pipelines/cli/cli-win32-sign.yml",
"chars": 2663,
"preview": "parameters:\n - name: VSCODE_CLI_ARTIFACTS\n type: object\n default: []\n\nsteps:\n - task: UseDotNet@2\n inputs:\n "
},
{
"path": "build/azure-pipelines/cli/install-rust-posix.yml",
"chars": 1651,
"preview": "parameters:\n - name: channel\n type: string\n default: 1.85\n - name: targets\n default: []\n type: object\n\n# T"
},
{
"path": "build/azure-pipelines/cli/install-rust-win32.yml",
"chars": 1922,
"preview": "parameters:\n - name: channel\n type: string\n default: 1.85\n - name: targets\n default: []\n type: object\n\n# T"
},
{
"path": "build/azure-pipelines/cli/test.yml",
"chars": 229,
"preview": "steps:\n - template: ./install-rust-posix.yml@self\n\n - script: cargo clippy -- -D warnings\n workingDirectory: cli\n "
},
{
"path": "build/azure-pipelines/common/computeBuiltInDepsCacheKey.js",
"chars": 1093,
"preview": "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyri"
},
{
"path": "build/azure-pipelines/common/computeBuiltInDepsCacheKey.ts",
"chars": 722,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": "build/azure-pipelines/common/computeNodeModulesCacheKey.js",
"chars": 2191,
"preview": "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyri"
},
{
"path": "build/azure-pipelines/common/computeNodeModulesCacheKey.ts",
"chars": 1663,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": "build/azure-pipelines/common/createBuild.js",
"chars": 2323,
"preview": "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyri"
},
{
"path": "build/azure-pipelines/common/createBuild.ts",
"chars": 2095,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": "build/azure-pipelines/common/extract-telemetry.sh",
"chars": 1158,
"preview": "#!/usr/bin/env bash\nset -e\n\ncd $BUILD_STAGINGDIRECTORY\nmkdir extraction\ncd extraction\ngit clone --depth 1 https://github"
},
{
"path": "build/azure-pipelines/common/getPublishAuthTokens.js",
"chars": 2041,
"preview": "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyri"
},
{
"path": "build/azure-pipelines/common/getPublishAuthTokens.ts",
"chars": 1885,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": "build/azure-pipelines/common/install-builtin-extensions.yml",
"chars": 921,
"preview": "steps:\n - pwsh: mkdir .build -ea 0\n condition: and(succeeded(), contains(variables['Agent.OS'], 'windows'))\n disp"
},
{
"path": "build/azure-pipelines/common/installPlaywright.js",
"chars": 703,
"preview": "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyri"
},
{
"path": "build/azure-pipelines/common/listNodeModules.js",
"chars": 1805,
"preview": "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyri"
},
{
"path": "build/azure-pipelines/common/listNodeModules.ts",
"chars": 1336,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": "build/azure-pipelines/common/publish.js",
"chars": 33149,
"preview": "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyri"
},
{
"path": "build/azure-pipelines/common/publish.ts",
"chars": 33280,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": "build/azure-pipelines/common/releaseBuild.js",
"chars": 2368,
"preview": "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyri"
},
{
"path": "build/azure-pipelines/common/releaseBuild.ts",
"chars": 2275,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": "build/azure-pipelines/common/retry.js",
"chars": 1328,
"preview": "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyri"
},
{
"path": "build/azure-pipelines/common/retry.ts",
"chars": 1158,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": "build/azure-pipelines/common/sign-win32.js",
"chars": 857,
"preview": "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyri"
},
{
"path": "build/azure-pipelines/common/sign-win32.ts",
"chars": 535,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": "build/azure-pipelines/common/sign.js",
"chars": 8588,
"preview": "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyri"
},
{
"path": "build/azure-pipelines/common/sign.ts",
"chars": 6569,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": "build/azure-pipelines/common/telemetry-config.json",
"chars": 1227,
"preview": "[\n\t{\n\t\t\"eventPrefix\": \"typescript-language-features/\",\n\t\t\"sourceDirs\": [\n\t\t\t\"../../s/extensions/typescript-language-feat"
},
{
"path": "build/azure-pipelines/config/CredScanSuppressions.json",
"chars": 8289,
"preview": "{\n\t\"tool\": \"Credential Scanner\",\n\t\"suppressions\": [\n\t\t{\n\t\t\t\"file\": [\n\t\t\t\t\"src/vs/base/test/common/uri.test.ts\",\n\t\t\t\t\"src"
},
{
"path": "build/azure-pipelines/config/tsaoptions.json",
"chars": 396,
"preview": "{\n\t\"codebaseName\": \"devdiv_microsoft_vscode\",\n\t\"serviceTreeID\": \"79c048b2-322f-4ed5-a1ea-252a1250e4b3\",\n\t\"instanceUrl\": "
},
{
"path": "build/azure-pipelines/darwin/app-entitlements.plist",
"chars": 442,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "build/azure-pipelines/darwin/cli-build-darwin.yml",
"chars": 3611,
"preview": "parameters:\n - name: VSCODE_QUALITY\n type: string\n - name: VSCODE_BUILD_MACOS\n type: boolean\n default: false\n"
},
{
"path": "build/azure-pipelines/darwin/helper-gpu-entitlements.plist",
"chars": 247,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "build/azure-pipelines/darwin/helper-plugin-entitlements.plist",
"chars": 387,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "build/azure-pipelines/darwin/helper-renderer-entitlements.plist",
"chars": 247,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "build/azure-pipelines/darwin/product-build-darwin-cli-sign.yml",
"chars": 2151,
"preview": "parameters:\n - name: VSCODE_BUILD_MACOS\n type: boolean\n - name: VSCODE_BUILD_MACOS_ARM64\n type: boolean\n - name"
},
{
"path": "build/azure-pipelines/darwin/product-build-darwin-sign.yml",
"chars": 3353,
"preview": "steps:\n - task: NodeTool@0\n inputs:\n versionSource: fromFile\n versionFilePath: .nvmrc\n nodejsMirror: "
},
{
"path": "build/azure-pipelines/darwin/product-build-darwin-test.yml",
"chars": 8849,
"preview": "parameters:\n - name: VSCODE_QUALITY\n type: string\n - name: VSCODE_RUN_UNIT_TESTS\n type: boolean\n - name: VSCODE"
},
{
"path": "build/azure-pipelines/darwin/product-build-darwin-universal.yml",
"chars": 4318,
"preview": "steps:\n - task: NodeTool@0\n inputs:\n versionSource: fromFile\n versionFilePath: .nvmrc\n nodejsMirror: "
},
{
"path": "build/azure-pipelines/darwin/product-build-darwin.yml",
"chars": 11717,
"preview": "parameters:\n - name: VSCODE_QUALITY\n type: string\n - name: VSCODE_CIBUILD\n type: boolean\n - name: VSCODE_RUN_UN"
},
{
"path": "build/azure-pipelines/distro/download-distro.yml",
"chars": 2414,
"preview": "steps:\n - task: AzureKeyVault@2\n displayName: \"Azure Key Vault: Get Secrets\"\n inputs:\n azureSubscription: vs"
},
{
"path": "build/azure-pipelines/distro/mixin-npm.js",
"chars": 1962,
"preview": "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyri"
},
{
"path": "build/azure-pipelines/distro/mixin-npm.ts",
"chars": 1596,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": "build/azure-pipelines/distro/mixin-quality.js",
"chars": 3041,
"preview": "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyri"
},
{
"path": "build/azure-pipelines/distro/mixin-quality.ts",
"chars": 2851,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": "build/azure-pipelines/distro-build.yml",
"chars": 342,
"preview": "pool:\n name: 1es-ubuntu-22.04-x64\n os: linux\n\ntrigger:\n branches:\n include: [\"main\", \"release/*\"]\npr: none\n\nsteps:"
},
{
"path": "build/azure-pipelines/linux/.gitignore",
"chars": 3,
"preview": "pat"
},
{
"path": "build/azure-pipelines/linux/apt-retry.sh",
"chars": 1208,
"preview": "#!/bin/sh\n################################################################################\n## Copied from https://githu"
},
{
"path": "build/azure-pipelines/linux/cli-build-linux.yml",
"chars": 6319,
"preview": "parameters:\n - name: VSCODE_BUILD_LINUX\n type: boolean\n default: false\n - name: VSCODE_BUILD_LINUX_ARM64\n typ"
},
{
"path": "build/azure-pipelines/linux/product-build-linux-test.yml",
"chars": 10836,
"preview": "parameters:\n - name: VSCODE_QUALITY\n type: string\n - name: VSCODE_RUN_UNIT_TESTS\n type: boolean\n - name: VSCODE"
},
{
"path": "build/azure-pipelines/linux/product-build-linux.yml",
"chars": 17293,
"preview": "parameters:\n - name: VSCODE_QUALITY\n type: string\n - name: VSCODE_CIBUILD\n type: boolean\n - name: VSCODE_RUN_UN"
},
{
"path": "build/azure-pipelines/linux/setup-env.sh",
"chars": 5655,
"preview": "#!/usr/bin/env bash\n\nset -e\n\nSYSROOT_ARCH=$VSCODE_ARCH\nif [ \"$SYSROOT_ARCH\" == \"x64\" ]; then\n SYSROOT_ARCH=\"amd64\"\nfi\n\n"
},
{
"path": "build/azure-pipelines/linux/snap-build-linux.yml",
"chars": 2238,
"preview": "steps:\n - task: NodeTool@0\n inputs:\n versionSource: fromFile\n versionFilePath: .nvmrc\n nodejsMirror: "
},
{
"path": "build/azure-pipelines/linux/verify-glibc-requirements.sh",
"chars": 1701,
"preview": "#!/usr/bin/env bash\n\nset -e\n\nTRIPLE=\"x86_64-linux-gnu\"\nif [ \"$VSCODE_ARCH\" == \"arm64\" ]; then\n TRIPLE=\"aarch64-linux-gn"
},
{
"path": "build/azure-pipelines/linux/xvfb.init",
"chars": 1051,
"preview": "#!/bin/bash\n#\n# /etc/rc.d/init.d/xvfbd\n#\n# chkconfig: 345 95 28\n# description: Starts/Stops X Virtual Framebuffer server"
},
{
"path": "build/azure-pipelines/oss/product-build-pr-cache-linux.yml",
"chars": 2925,
"preview": "steps:\n - checkout: self\n fetchDepth: 1\n retryCountOnTaskFailure: 3\n\n - task: NodeTool@0\n inputs:\n versi"
},
{
"path": "build/azure-pipelines/oss/product-build-pr-cache-win32.yml",
"chars": 2838,
"preview": "steps:\n - checkout: self\n fetchDepth: 1\n retryCountOnTaskFailure: 3\n\n - task: NodeTool@0\n inputs:\n versi"
},
{
"path": "build/azure-pipelines/product-build-pr.yml",
"chars": 6571,
"preview": "trigger:\n - main\n - release/*\n\npr:\n branches:\n include: [\"main\", \"release/*\"]\n\nvariables:\n - name: Codeql.SkipTas"
},
{
"path": "build/azure-pipelines/product-build.yml",
"chars": 35142,
"preview": "pr: none\n\nschedules:\n - cron: \"0 5 * * Mon-Fri\"\n displayName: Mon-Fri at 7:00\n branches:\n include:\n -"
},
{
"path": "build/azure-pipelines/product-compile.yml",
"chars": 7114,
"preview": "parameters:\n - name: VSCODE_QUALITY\n type: string\n\nsteps:\n - task: NodeTool@0\n inputs:\n versionSource: from"
},
{
"path": "build/azure-pipelines/product-npm-package-validate.yml",
"chars": 3376,
"preview": "trigger: none\n\npr:\n branches:\n include: [\"main\"]\n paths:\n include: [\"package.json\", \"package-lock.json\"]\n\nvariab"
},
{
"path": "build/azure-pipelines/product-publish.yml",
"chars": 5020,
"preview": "steps:\n - task: NodeTool@0\n inputs:\n versionSource: fromFile\n versionFilePath: .nvmrc\n nodejsMirror: "
},
{
"path": "build/azure-pipelines/product-release.yml",
"chars": 1094,
"preview": "parameters:\n - name: VSCODE_RELEASE\n type: boolean\n\nsteps:\n - task: NodeTool@0\n inputs:\n versionSource: fro"
},
{
"path": "build/azure-pipelines/publish-types/check-version.js",
"chars": 1372,
"preview": "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyri"
},
{
"path": "build/azure-pipelines/publish-types/check-version.ts",
"chars": 988,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": "build/azure-pipelines/publish-types/publish-types.yml",
"chars": 3167,
"preview": "# Publish @types/vscode for each release\n\ntrigger:\n branches:\n include: [\"refs/tags/*\"]\n\npr: none\n\npool:\n vmImage: "
},
{
"path": "build/azure-pipelines/publish-types/update-types.js",
"chars": 3609,
"preview": "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyri"
},
{
"path": "build/azure-pipelines/publish-types/update-types.ts",
"chars": 3079,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": "build/azure-pipelines/upload-cdn.js",
"chars": 4477,
"preview": "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyri"
},
{
"path": "build/azure-pipelines/upload-cdn.ts",
"chars": 3601,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": "build/azure-pipelines/upload-nlsmetadata.js",
"chars": 6442,
"preview": "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyri"
},
{
"path": "build/azure-pipelines/upload-nlsmetadata.ts",
"chars": 4747,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": "build/azure-pipelines/upload-sourcemaps.js",
"chars": 4626,
"preview": "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyri"
}
]
// ... and 7841 more files (download for full content)
About this extraction
This page contains the full source code of the voideditor/void GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 8041 files (103.7 MB), approximately 4.5M tokens, and a symbol index with 7323 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.