Copy disabled (too large)
Download .txt
Showing preview only (107,324K chars total). Download the full file to get everything.
Repository: microsoft/vscode
Branch: main
Commit: 559cb3e74d07
Files: 9676
Total size: 123.6 MB
Directory structure:
gitextract_5mnz8wu3/
├── .agents/
│ └── skills/
│ └── launch/
│ └── SKILL.md
├── .config/
│ ├── 1espt/
│ │ └── PipelineAutobaseliningConfig.yml
│ ├── configuration.winget
│ └── guardian/
│ └── .gdnsuppress
├── .devcontainer/
│ ├── Dockerfile
│ ├── README.md
│ ├── devcontainer-lock.json
│ ├── devcontainer.json
│ ├── install-vscode.sh
│ └── post-create.sh
├── .editorconfig
├── .eslint-ignore
├── .eslint-plugin-local/
│ ├── README.md
│ ├── 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-accessor-after-await.ts
│ ├── code-no-any-casts.ts
│ ├── code-no-dangerous-type-assertions.ts
│ ├── code-no-declare-const-enum.ts
│ ├── code-no-deep-import-of-internal.ts
│ ├── code-no-global-document-listener.ts
│ ├── code-no-http-import.ts
│ ├── code-no-icons-in-localized-strings.ts
│ ├── code-no-in-operator.ts
│ ├── code-no-localization-template-literals.ts
│ ├── code-no-localized-model-description.ts
│ ├── code-no-nls-in-standalone-editor.ts
│ ├── code-no-observable-get-in-reactive-context.ts
│ ├── code-no-potentially-unsafe-disposables.ts
│ ├── code-no-reader-after-await.ts
│ ├── code-no-runtime-import.ts
│ ├── code-no-standalone-editor.ts
│ ├── code-no-static-node-module-import.ts
│ ├── code-no-static-self-ref.ts
│ ├── code-no-telemetry-common-property.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-policy-localization-key-match.ts
│ ├── code-translation-remind.ts
│ ├── index.ts
│ ├── package.json
│ ├── tests/
│ │ ├── code-no-observable-get-in-reactive-context-test.ts
│ │ └── code-no-reader-after-await-test.ts
│ ├── 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/
│ ├── CODENOTIFY
│ ├── CODEOWNERS
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ ├── config.yml
│ │ ├── copilot_bug_report.md
│ │ └── feature_request.md
│ ├── agents/
│ │ ├── data.md
│ │ ├── demonstrate.md
│ │ └── sessions.md
│ ├── classifier.json
│ ├── commands/
│ │ └── codespaces_issue.yml
│ ├── commands.json
│ ├── copilot-instructions.md
│ ├── dependabot.yml
│ ├── endgame/
│ │ └── insiders.yml
│ ├── hooks/
│ │ └── hooks.json
│ ├── insiders.yml
│ ├── instructions/
│ │ ├── accessibility.instructions.md
│ │ ├── agentHostTesting.instructions.md
│ │ ├── ai-customization.instructions.md
│ │ ├── api-version.instructions.md
│ │ ├── chat.instructions.md
│ │ ├── disposable.instructions.md
│ │ ├── interactive.instructions.md
│ │ ├── kusto.instructions.md
│ │ ├── learnings.instructions.md
│ │ ├── notebook.instructions.md
│ │ ├── observables.instructions.md
│ │ ├── oss.instructions.md
│ │ ├── sessions.instructions.md
│ │ ├── telemetry.instructions.md
│ │ └── tree-widgets.instructions.md
│ ├── prompts/
│ │ ├── build-champ.prompt.md
│ │ ├── codenotify.prompt.md
│ │ ├── component.prompt.md
│ │ ├── doc-comments.prompt.md
│ │ ├── find-duplicates.prompt.md
│ │ ├── find-issue.prompt.md
│ │ ├── fix-error.prompt.md
│ │ ├── fixIssueNo.prompt.md
│ │ ├── implement.prompt.md
│ │ ├── issue-grouping.prompt.md
│ │ ├── micro-perf.prompt.md
│ │ ├── migrate.prompt.md
│ │ ├── no-any.prompt.md
│ │ ├── plan-deep.prompt.md
│ │ ├── plan-fast.prompt.md
│ │ ├── setup-environment.prompt.md
│ │ └── update-instructions.prompt.md
│ ├── pull_request_template.md
│ ├── similarity.yml
│ ├── skills/
│ │ ├── accessibility/
│ │ │ └── SKILL.md
│ │ ├── add-policy/
│ │ │ └── SKILL.md
│ │ ├── agent-sessions-layout/
│ │ │ └── SKILL.md
│ │ ├── author-contributions/
│ │ │ └── SKILL.md
│ │ ├── azure-pipelines/
│ │ │ ├── SKILL.md
│ │ │ └── azure-pipeline.ts
│ │ ├── chat-customizations-editor/
│ │ │ └── SKILL.md
│ │ ├── component-fixtures/
│ │ │ └── SKILL.md
│ │ ├── fix-ci-failures/
│ │ │ └── SKILL.md
│ │ ├── fix-errors/
│ │ │ └── SKILL.md
│ │ ├── hygiene/
│ │ │ └── SKILL.md
│ │ ├── integration-tests/
│ │ │ └── SKILL.md
│ │ ├── memory-leak-audit/
│ │ │ └── SKILL.md
│ │ ├── sessions/
│ │ │ └── SKILL.md
│ │ ├── tool-rename-deprecation/
│ │ │ └── SKILL.md
│ │ ├── unit-tests/
│ │ │ └── SKILL.md
│ │ └── update-screenshots/
│ │ └── SKILL.md
│ └── workflows/
│ ├── api-proposal-version-check.yml
│ ├── check-clean-git-state.sh
│ ├── component-fixture-tests.yml
│ ├── copilot-setup-steps.yml
│ ├── monaco-editor.yml
│ ├── no-engineering-system-changes.yml
│ ├── pr-darwin-test.yml
│ ├── pr-linux-cli-test.yml
│ ├── pr-linux-test.yml
│ ├── pr-node-modules.yml
│ ├── pr-win32-test.yml
│ ├── pr.yml
│ ├── screenshot-test.yml
│ ├── sessions-e2e.yml
│ └── telemetry.yml
├── .gitignore
├── .lsifrc.json
├── .mailmap
├── .mention-bot
├── .npmrc
├── .nvmrc
├── .vscode/
│ ├── cglicenses.schema.json
│ ├── extensions/
│ │ ├── vscode-extras/
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ ├── extension.ts
│ │ │ │ └── npmUpToDateFeature.ts
│ │ │ └── tsconfig.json
│ │ ├── 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
│ ├── mcp.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/
│ │ ├── no-any-casts.code-search
│ │ └── ts36031.code-search
│ ├── settings.json
│ ├── shared.code-snippets
│ └── tasks.json
├── .vscode-test.js
├── AGENTS.md
├── CONTRIBUTING.md
├── CodeQL.yml
├── LICENSE.txt
├── README.md
├── SECURITY.md
├── ThirdPartyNotices.txt
├── build/
│ ├── .cachesalt
│ ├── .gitattributes
│ ├── .gitignore
│ ├── .moduleignore
│ ├── .moduleignore.darwin
│ ├── .moduleignore.linux
│ ├── .moduleignore.win32
│ ├── .npmrc
│ ├── .webignore
│ ├── azure-pipelines/
│ │ ├── alpine/
│ │ │ ├── product-build-alpine-cli.yml
│ │ │ ├── product-build-alpine-node-modules.yml
│ │ │ └── product-build-alpine.yml
│ │ ├── cli/
│ │ │ ├── cli-apply-patches.yml
│ │ │ ├── cli-compile.yml
│ │ │ └── install-rust-posix.yml
│ │ ├── common/
│ │ │ ├── checkCopilotChatCompatibility.ts
│ │ │ ├── checkDistroCommit.ts
│ │ │ ├── checkForArtifact.ts
│ │ │ ├── checkout.yml
│ │ │ ├── codesign.ts
│ │ │ ├── computeBuiltInDepsCacheKey.ts
│ │ │ ├── computeNodeModulesCacheKey.ts
│ │ │ ├── createBuild.ts
│ │ │ ├── extract-telemetry.ts
│ │ │ ├── getPublishAuthTokens.ts
│ │ │ ├── install-builtin-extensions.yml
│ │ │ ├── installPlaywright.js
│ │ │ ├── listNodeModules.ts
│ │ │ ├── publish-artifact.yml
│ │ │ ├── publish.ts
│ │ │ ├── releaseBuild.ts
│ │ │ ├── retry.ts
│ │ │ ├── sanity-tests.yml
│ │ │ ├── sign-win32.ts
│ │ │ ├── sign.ts
│ │ │ ├── telemetry-config.json
│ │ │ ├── versionCompatibility.ts
│ │ │ └── waitForArtifacts.ts
│ │ ├── config/
│ │ │ ├── CredScanSuppressions.json
│ │ │ └── tsaoptions.json
│ │ ├── darwin/
│ │ │ ├── app-entitlements.plist
│ │ │ ├── codesign.ts
│ │ │ ├── helper-gpu-entitlements.plist
│ │ │ ├── helper-plugin-entitlements.plist
│ │ │ ├── helper-renderer-entitlements.plist
│ │ │ ├── product-build-darwin-ci.yml
│ │ │ ├── product-build-darwin-cli.yml
│ │ │ ├── product-build-darwin-node-modules.yml
│ │ │ ├── product-build-darwin-universal.yml
│ │ │ ├── product-build-darwin.yml
│ │ │ ├── server-entitlements.plist
│ │ │ └── steps/
│ │ │ ├── product-build-darwin-compile.yml
│ │ │ └── product-build-darwin-test.yml
│ │ ├── dependencies-check.yml
│ │ ├── distro/
│ │ │ ├── download-distro.yml
│ │ │ ├── mixin-npm.ts
│ │ │ └── mixin-quality.ts
│ │ ├── distro-build.yml
│ │ ├── github-check-run.js
│ │ ├── linux/
│ │ │ ├── .gitignore
│ │ │ ├── apt-retry.sh
│ │ │ ├── build-snap.sh
│ │ │ ├── codesign.ts
│ │ │ ├── product-build-linux-ci.yml
│ │ │ ├── product-build-linux-cli.yml
│ │ │ ├── product-build-linux-node-modules.yml
│ │ │ ├── product-build-linux.yml
│ │ │ ├── setup-env.sh
│ │ │ ├── steps/
│ │ │ │ ├── product-build-linux-compile.yml
│ │ │ │ └── product-build-linux-test.yml
│ │ │ ├── verify-glibc-requirements.sh
│ │ │ └── xvfb.init
│ │ ├── product-build.yml
│ │ ├── product-publish.yml
│ │ ├── product-quality-checks.yml
│ │ ├── product-release.yml
│ │ ├── product-sanity-tests.yml
│ │ ├── publish-types/
│ │ │ ├── check-version.ts
│ │ │ ├── publish-types.yml
│ │ │ └── update-types.ts
│ │ ├── update-dependencies-check.ts
│ │ ├── upload-cdn.ts
│ │ ├── upload-nlsmetadata.ts
│ │ ├── upload-sourcemaps.ts
│ │ ├── web/
│ │ │ ├── product-build-web-node-modules.yml
│ │ │ └── product-build-web.yml
│ │ └── win32/
│ │ ├── codesign.ts
│ │ ├── exec.ps1
│ │ ├── import-esrp-auth-cert.ps1
│ │ ├── listprocesses.bat
│ │ ├── product-build-win32-ci.yml
│ │ ├── product-build-win32-cli.yml
│ │ ├── product-build-win32-node-modules.yml
│ │ ├── product-build-win32.yml
│ │ ├── retry.ps1
│ │ ├── sdl-scan-win32.yml
│ │ └── steps/
│ │ ├── product-build-win32-compile.yml
│ │ ├── product-build-win32-install-rust.yml
│ │ └── product-build-win32-test.yml
│ ├── buildConfig.ts
│ ├── buildfile.ts
│ ├── builtin/
│ │ ├── browser-main.js
│ │ ├── index.html
│ │ ├── main.js
│ │ └── package.json
│ ├── checker/
│ │ ├── layersChecker.ts
│ │ ├── tsconfig.browser.json
│ │ ├── tsconfig.electron-browser.json
│ │ ├── tsconfig.electron-main.json
│ │ ├── tsconfig.electron-utility.json
│ │ ├── tsconfig.node.json
│ │ └── tsconfig.worker.json
│ ├── checksums/
│ │ ├── electron.txt
│ │ ├── explorer-dll.txt
│ │ ├── nodejs.txt
│ │ └── vscode-sysroot.txt
│ ├── darwin/
│ │ ├── create-dmg.ts
│ │ ├── create-universal-app.ts
│ │ ├── dmg-background-exploration.tiff
│ │ ├── dmg-background-insider.tiff
│ │ ├── dmg-background-stable.tiff
│ │ ├── dmg-settings.py.template
│ │ ├── patch-dmg.py
│ │ ├── sign-server.ts
│ │ ├── sign.ts
│ │ └── verify-macho.ts
│ ├── eslint.ts
│ ├── filters.ts
│ ├── gulp-eslint.ts
│ ├── gulpfile.cli.ts
│ ├── gulpfile.compile.ts
│ ├── gulpfile.editor.ts
│ ├── gulpfile.extensions.ts
│ ├── gulpfile.hygiene.ts
│ ├── gulpfile.reh.ts
│ ├── gulpfile.scan.ts
│ ├── gulpfile.ts
│ ├── gulpfile.vscode.linux.ts
│ ├── gulpfile.vscode.ts
│ ├── gulpfile.vscode.web.ts
│ ├── gulpfile.vscode.win32.ts
│ ├── hygiene.ts
│ ├── lib/
│ │ ├── asar.ts
│ │ ├── builtInExtensions.ts
│ │ ├── builtInExtensionsCG.ts
│ │ ├── bundle.ts
│ │ ├── checkCyclicDependencies.ts
│ │ ├── compilation.ts
│ │ ├── copilot.ts
│ │ ├── date.ts
│ │ ├── dependencies.ts
│ │ ├── electron.ts
│ │ ├── embeddedType.ts
│ │ ├── extensions.ts
│ │ ├── extractExtensionPoints.ts
│ │ ├── fetch.ts
│ │ ├── formatter.ts
│ │ ├── getVersion.ts
│ │ ├── git.ts
│ │ ├── i18n.resources.json
│ │ ├── i18n.ts
│ │ ├── inlineMeta.ts
│ │ ├── mangle/
│ │ │ ├── index.ts
│ │ │ ├── renameWorker.ts
│ │ │ └── staticLanguageServiceHost.ts
│ │ ├── monaco-api.ts
│ │ ├── nls-analysis.ts
│ │ ├── nls.ts
│ │ ├── node.ts
│ │ ├── optimize.ts
│ │ ├── policies/
│ │ │ ├── basePolicy.ts
│ │ │ ├── booleanPolicy.ts
│ │ │ ├── copyPolicyDto.ts
│ │ │ ├── exportPolicyData.ts
│ │ │ ├── numberPolicy.ts
│ │ │ ├── objectPolicy.ts
│ │ │ ├── policyData.jsonc
│ │ │ ├── policyGenerator.ts
│ │ │ ├── render.ts
│ │ │ ├── stringEnumPolicy.ts
│ │ │ ├── stringPolicy.ts
│ │ │ └── types.ts
│ │ ├── preLaunch.ts
│ │ ├── propertyInitOrderChecker.ts
│ │ ├── reporter.ts
│ │ ├── standalone.ts
│ │ ├── stats.ts
│ │ ├── stylelint/
│ │ │ ├── validateVariableNames.ts
│ │ │ └── vscode-known-variables.json
│ │ ├── task.ts
│ │ ├── test/
│ │ │ ├── booleanPolicy.test.ts
│ │ │ ├── checkCyclicDependencies.test.ts
│ │ │ ├── fixtures/
│ │ │ │ └── policies/
│ │ │ │ ├── darwin/
│ │ │ │ │ ├── com.visualstudio.code.oss.mobileconfig
│ │ │ │ │ ├── en-us/
│ │ │ │ │ │ └── com.visualstudio.code.oss.plist
│ │ │ │ │ └── fr-fr/
│ │ │ │ │ └── com.visualstudio.code.oss.plist
│ │ │ │ ├── linux/
│ │ │ │ │ └── policy.json
│ │ │ │ └── win32/
│ │ │ │ ├── CodeOSS.admx
│ │ │ │ ├── en-us/
│ │ │ │ │ └── CodeOSS.adml
│ │ │ │ └── fr-fr/
│ │ │ │ └── CodeOSS.adml
│ │ │ ├── i18n.test.ts
│ │ │ ├── numberPolicy.test.ts
│ │ │ ├── objectPolicy.test.ts
│ │ │ ├── policyConversion.test.ts
│ │ │ ├── render.test.ts
│ │ │ ├── stringEnumPolicy.test.ts
│ │ │ └── stringPolicy.test.ts
│ │ ├── treeshaking.ts
│ │ ├── tsb/
│ │ │ ├── builder.ts
│ │ │ ├── index.ts
│ │ │ ├── transpiler.ts
│ │ │ └── utils.ts
│ │ ├── tsconfigUtils.ts
│ │ ├── tsgo.ts
│ │ ├── typeScriptLanguageServiceHost.ts
│ │ ├── typings/
│ │ │ ├── @vscode/
│ │ │ │ └── gulp-electron.d.ts
│ │ │ ├── asar.d.ts
│ │ │ ├── cgmanifest.json
│ │ │ ├── chromium-pickle-js.d.ts
│ │ │ ├── event-stream.d.ts
│ │ │ ├── gulp-azure-storage.d.ts
│ │ │ ├── gulp-bom.d.ts
│ │ │ ├── gulp-buffer.d.ts
│ │ │ ├── gulp-gunzip.d.ts
│ │ │ ├── gulp-vinyl-zip.d.ts
│ │ │ ├── rcedit.d.ts
│ │ │ ├── stream.d.ts
│ │ │ ├── ternary-stream.d.ts
│ │ │ └── vscode-gulp-watch.d.ts
│ │ ├── util.ts
│ │ └── watch/
│ │ ├── index.ts
│ │ └── watch-win32.ts
│ ├── linux/
│ │ ├── debian/
│ │ │ ├── calculate-deps.ts
│ │ │ ├── dep-lists.ts
│ │ │ ├── install-sysroot.ts
│ │ │ └── types.ts
│ │ ├── dependencies-generator.ts
│ │ ├── libcxx-fetcher.ts
│ │ └── rpm/
│ │ ├── calculate-deps.ts
│ │ ├── dep-lists.ts
│ │ └── types.ts
│ ├── loader.min
│ ├── monaco/
│ │ ├── LICENSE
│ │ ├── README-npm.md
│ │ ├── README.md
│ │ ├── ThirdPartyNotices.txt
│ │ ├── monaco.d.ts.recipe
│ │ ├── monaco.usage.recipe
│ │ ├── package.json
│ │ └── version.txt
│ ├── next/
│ │ ├── index.ts
│ │ ├── nls-plugin.ts
│ │ ├── private-to-property.ts
│ │ ├── test/
│ │ │ ├── nls-sourcemap.test.ts
│ │ │ └── private-to-property.test.ts
│ │ └── working.md
│ ├── npm/
│ │ ├── dirs.ts
│ │ ├── fast-install.ts
│ │ ├── gyp/
│ │ │ ├── custom-headers/
│ │ │ │ └── v8-source-location.patch
│ │ │ └── package.json
│ │ ├── installStateHash.ts
│ │ ├── mixin-telemetry-docs.ts
│ │ ├── postinstall.ts
│ │ ├── preinstall.ts
│ │ ├── update-all-grammars.ts
│ │ ├── update-distro.ts
│ │ └── update-localization-extension.ts
│ ├── package.json
│ ├── rspack/
│ │ ├── package.json
│ │ ├── rspack.serve-out.config.mts
│ │ └── workbench-rspack.html
│ ├── setup-npm-registry.ts
│ ├── stylelint.ts
│ ├── tsconfig.json
│ ├── vite/
│ │ ├── index-workbench.ts
│ │ ├── index.html
│ │ ├── index.ts
│ │ ├── package.json
│ │ ├── setup-dev.ts
│ │ ├── style.css
│ │ ├── tsconfig.json
│ │ ├── vite.config.ts
│ │ ├── workbench-electron.ts
│ │ ├── workbench-vite-electron.html
│ │ └── workbench-vite.html
│ └── win32/
│ ├── .gitignore
│ ├── Cargo.toml
│ ├── code.iss
│ ├── explorer-dll-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/
│ │ ├── agent_host.rs
│ │ ├── 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
│ ├── CONTRIBUTING.md
│ ├── 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
│ │ ├── esbuild.browser.mts
│ │ ├── esbuild.mts
│ │ ├── 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.browser.json
│ │ └── 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.browser.json
│ │ │ └── tsconfig.json
│ │ ├── esbuild.browser.mts
│ │ ├── esbuild.mts
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── schemas/
│ │ │ └── package.schema.json
│ │ ├── server/
│ │ │ ├── .npmrc
│ │ │ ├── .vscode/
│ │ │ │ ├── launch.json
│ │ │ │ └── tasks.json
│ │ │ ├── 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.browser.json
│ │ │ └── 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
│ │ ├── esbuild.mts
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── src/
│ │ │ └── extension.ts
│ │ └── tsconfig.json
│ ├── debug-server-ready/
│ │ ├── .npmrc
│ │ ├── .vscode/
│ │ │ └── launch.json
│ │ ├── .vscodeignore
│ │ ├── esbuild.mts
│ │ ├── 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
│ ├── dotenv/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── syntaxes/
│ │ └── dotenv.tmLanguage.json
│ ├── emmet/
│ │ ├── .npmrc
│ │ ├── .vscode/
│ │ │ ├── launch.json
│ │ │ └── settings.json
│ │ ├── .vscodeignore
│ │ ├── CONTRIBUTING.md
│ │ ├── README.md
│ │ ├── cgmanifest.json
│ │ ├── esbuild.browser.mts
│ │ ├── esbuild.mts
│ │ ├── 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.browser.json
│ │ └── tsconfig.json
│ ├── esbuild-extension-common.mts
│ ├── esbuild-webview-common.mts
│ ├── extension-editing/
│ │ ├── .npmrc
│ │ ├── .vscodeignore
│ │ ├── esbuild.browser.mts
│ │ ├── esbuild.mts
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── src/
│ │ │ ├── constants.ts
│ │ │ ├── extensionEditingBrowserMain.ts
│ │ │ ├── extensionEditingMain.ts
│ │ │ ├── extensionEngineValidation.ts
│ │ │ ├── extensionLinter.ts
│ │ │ ├── jsonReconstruct.ts
│ │ │ ├── packageDocumentHelper.ts
│ │ │ └── packageDocumentL10nSupport.ts
│ │ ├── tsconfig.browser.json
│ │ └── 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
│ │ ├── esbuild.mts
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── resources/
│ │ │ └── emojis.json
│ │ ├── src/
│ │ │ ├── actionButton.ts
│ │ │ ├── api/
│ │ │ │ ├── api1.ts
│ │ │ │ ├── extension.ts
│ │ │ │ ├── git.constants.ts
│ │ │ │ └── git.d.ts
│ │ │ ├── artifactProvider.ts
│ │ │ ├── askpass-empty.sh
│ │ │ ├── askpass-main.ts
│ │ │ ├── askpass.sh
│ │ │ ├── askpass.ts
│ │ │ ├── askpassManager.ts
│ │ │ ├── autofetch.ts
│ │ │ ├── blame.ts
│ │ │ ├── branchProtection.ts
│ │ │ ├── cache.ts
│ │ │ ├── cloneManager.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
│ │ │ ├── hover.ts
│ │ │ ├── ipc/
│ │ │ │ ├── ipcClient.ts
│ │ │ │ └── ipcServer.ts
│ │ │ ├── main.ts
│ │ │ ├── model.ts
│ │ │ ├── operation.ts
│ │ │ ├── postCommitCommands.ts
│ │ │ ├── protocolHandler.ts
│ │ │ ├── pushError.ts
│ │ │ ├── quickDiffProvider.ts
│ │ │ ├── remotePublisher.ts
│ │ │ ├── remoteSource.ts
│ │ │ ├── repository.ts
│ │ │ ├── repositoryCache.ts
│ │ │ ├── ssh-askpass-empty.sh
│ │ │ ├── ssh-askpass.sh
│ │ │ ├── staging.ts
│ │ │ ├── statusbar.ts
│ │ │ ├── terminal.ts
│ │ │ ├── test/
│ │ │ │ ├── askpassManager.test.ts
│ │ │ │ ├── git.test.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── repositoryCache.test.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
│ │ ├── esbuild.browser.mts
│ │ ├── esbuild.mts
│ │ ├── 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
│ │ │ ├── foldingProvider.ts
│ │ │ ├── model.ts
│ │ │ ├── remoteProvider.ts
│ │ │ ├── remoteSource.ts
│ │ │ ├── test/
│ │ │ │ └── foldingProvider.test.ts
│ │ │ └── util.ts
│ │ ├── syntaxes/
│ │ │ ├── git-commit.tmLanguage.json
│ │ │ ├── git-rebase.tmLanguage.json
│ │ │ └── ignore.tmLanguage.json
│ │ ├── tsconfig.browser.json
│ │ └── tsconfig.json
│ ├── github/
│ │ ├── .npmrc
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── esbuild.mts
│ │ ├── 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.constants.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
│ │ ├── esbuild.browser.mts
│ │ ├── esbuild.mts
│ │ ├── 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
│ │ │ └── fetch.test.ts
│ │ ├── tsconfig.browser.json
│ │ └── 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
│ │ ├── esbuild.mts
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── src/
│ │ │ └── main.ts
│ │ └── tsconfig.json
│ ├── gulp/
│ │ ├── .npmrc
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── esbuild.mts
│ │ ├── 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.browser.json
│ │ │ └── tsconfig.json
│ │ ├── esbuild.browser.mts
│ │ ├── esbuild.mts
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── schemas/
│ │ │ └── package.schema.json
│ │ └── server/
│ │ ├── .npmrc
│ │ ├── .vscode/
│ │ │ ├── launch.json
│ │ │ └── tasks.json
│ │ ├── 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.browser.json
│ │ └── 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.browser.mts
│ │ ├── esbuild.mts
│ │ ├── esbuild.notebook.mts
│ │ ├── 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.browser.json
│ │ └── tsconfig.json
│ ├── jake/
│ │ ├── .npmrc
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── esbuild.mts
│ │ ├── 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
│ │ │ │ └── urlMatch.ts
│ │ │ ├── tsconfig.browser.json
│ │ │ └── tsconfig.json
│ │ ├── esbuild.browser.mts
│ │ ├── esbuild.mts
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── server/
│ │ ├── .npmignore
│ │ ├── .npmrc
│ │ ├── .vscode/
│ │ │ ├── launch.json
│ │ │ └── tasks.json
│ │ ├── README.md
│ │ ├── bin/
│ │ │ └── vscode-json-languageserver
│ │ ├── 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.browser.json
│ │ └── 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
│ ├── 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.browser.mts
│ │ ├── esbuild.mts
│ │ ├── esbuild.notebook.mts
│ │ ├── esbuild.webview.mts
│ │ ├── 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
│ │ │ └── uuid.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.browser.mts
│ │ ├── esbuild.mts
│ │ ├── esbuild.notebook.mts
│ │ ├── 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.browser.json
│ │ └── tsconfig.json
│ ├── media-preview/
│ │ ├── .npmrc
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── esbuild.browser.mts
│ │ ├── esbuild.mts
│ │ ├── 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
│ │ │ │ └── uuid.ts
│ │ │ └── videoPreview.ts
│ │ ├── tsconfig.browser.json
│ │ └── tsconfig.json
│ ├── merge-conflict/
│ │ ├── .npmrc
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── esbuild.browser.mts
│ │ ├── esbuild.mts
│ │ ├── 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.browser.json
│ │ └── tsconfig.json
│ ├── mermaid-chat-features/
│ │ ├── .gitignore
│ │ ├── .npmrc
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── cgmanifest.json
│ │ ├── chat-webview-src/
│ │ │ ├── index-editor.ts
│ │ │ ├── index.ts
│ │ │ ├── mermaidWebview.ts
│ │ │ ├── tsconfig.json
│ │ │ └── vscodeApi.ts
│ │ ├── esbuild.browser.mts
│ │ ├── esbuild.mts
│ │ ├── esbuild.webview.mts
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── src/
│ │ │ ├── chatOutputRenderer.ts
│ │ │ ├── editorManager.ts
│ │ │ ├── extension.ts
│ │ │ ├── util/
│ │ │ │ ├── dispose.ts
│ │ │ │ ├── html.ts
│ │ │ │ └── uuid.ts
│ │ │ └── webviewManager.ts
│ │ ├── tsconfig.browser.json
│ │ └── tsconfig.json
│ ├── microsoft-authentication/
│ │ ├── .npmrc
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── esbuild.mts
│ │ ├── media/
│ │ │ ├── auth.css
│ │ │ └── index.html
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── packageMocks/
│ │ │ ├── dpapi/
│ │ │ │ └── dpapi.js
│ │ │ └── keytar/
│ │ │ ├── index.js
│ │ │ └── package.json
│ │ ├── src/
│ │ │ ├── UriEventHandler.ts
│ │ │ ├── betterSecretStorage.ts
│ │ │ ├── common/
│ │ │ │ ├── accountAccess.ts
│ │ │ │ ├── async.ts
│ │ │ │ ├── cachePlugin.ts
│ │ │ │ ├── config.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
│ │ │ ├── logger.ts
│ │ │ └── node/
│ │ │ ├── authProvider.ts
│ │ │ ├── buffer.ts
│ │ │ ├── cachedPublicClientApplication.ts
│ │ │ ├── fetch.ts
│ │ │ ├── flows.ts
│ │ │ ├── loopbackTemplate.ts
│ │ │ ├── publicClientCache.ts
│ │ │ └── test/
│ │ │ └── flows.test.ts
│ │ └── tsconfig.json
│ ├── notebook-renderers/
│ │ ├── .gitignore
│ │ ├── .npmrc
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── esbuild.notebook.mts
│ │ ├── 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
│ │ ├── esbuild.browser.mts
│ │ ├── esbuild.mts
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── src/
│ │ │ ├── commands.ts
│ │ │ ├── features/
│ │ │ │ ├── date.ts
│ │ │ │ ├── jsonContributions.ts
│ │ │ │ └── packageJSONContribution.ts
│ │ │ ├── npmBrowserMain.ts
│ │ │ ├── npmMain.ts
│ │ │ ├── npmScriptLens.ts
│ │ │ ├── npmView.ts
│ │ │ ├── preferred-pm.ts
│ │ │ ├── readScripts.ts
│ │ │ ├── scriptHover.ts
│ │ │ └── tasks.ts
│ │ ├── tsconfig.browser.json
│ │ └── 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
│ ├── 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
│ │ ├── esbuild.mts
│ │ ├── 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
│ ├── prompt-basics/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── syntaxes/
│ │ └── prompt.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
│ │ ├── esbuild.browser.mts
│ │ ├── esbuild.mts
│ │ ├── 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.browser.json
│ │ └── 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
│ │ ├── esbuild.browser.mts
│ │ ├── esbuild.mts
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ ├── src/
│ │ │ └── extension.ts
│ │ ├── syntaxes/
│ │ │ ├── generateTMLanguage.js
│ │ │ └── searchResult.tmLanguage.json
│ │ ├── tsconfig.browser.json
│ │ └── tsconfig.json
│ ├── shaderlab/
│ │ ├── .vscodeignore
│ │ ├── cgmanifest.json
│ │ ├── language-configuration.json
│ │ ├── package.json
│ │ ├── package.nls.json
│ │ └── syntaxes/
│ │ └── shaderlab.tmLanguage.json
│ ├── 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.browser.mts
│ │ ├── esbuild.mts
│ │ ├── esbuild.webview.mts
│ │ ├── 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
│ │ │ └── uuid.ts
│ │ ├── tsconfig.browser.json
│ │ └── 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
│ │ ├── .npmrc
│ │ ├── .vscode/
│ │ │ ├── launch.json
│ │ │ └── tasks.json
│ │ ├── .vscodeignore
│ │ ├── README.md
│ │ ├── ThirdPartyNotices.txt
│ │ ├── cgmanifest.json
│ │ ├── esbuild.mts
│ │ ├── 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/
│ │ │ │ ├── azd.ts
│ │ │ │ ├── cd.ts
│ │ │ │ ├── code-insiders.ts
│ │ │ │ ├── code-tunnel-insiders.ts
│ │ │ │ ├── code-tunnel.ts
│ │ │ │ ├── code.ts
│ │ │ │ ├── copilot.ts
│ │ │ │ ├── gh.ts
│ │ │ │ ├── git.ts
│ │ │ │ ├── index.d.ts
│ │ │ │ ├── npm.ts
│ │ │ │ ├── npx.ts
│ │ │ │ ├── pnpm.ts
│ │ │ │ ├── set-location.ts
│ │ │ │ ├── upstream/
│ │ │ │ │ ├── adb.ts
│ │ │ │ │ ├── apt.ts
│ │ │ │ │ ├── basename.ts
│ │ │ │ │ ├── brew.ts
│ │ │ │ │ ├── bundle.ts
│ │ │ │ │ ├── cat.ts
│ │ │ │ │ ├── chmod.ts
│ │ │ │ │ ├── chown.ts
│ │ │ │ │ ├── clear.ts
│ │ │ │ │ ├── cp.ts
│ │ │ │ │ ├── curl.ts
│ │ │ │ │ ├── cut.ts
│ │ │ │ │ ├── date.ts
│ │ │ │ │ ├── dd.ts
│ │ │ │ │ ├── df.ts
│ │ │ │ │ ├── diff.ts
│ │ │ │ │ ├── dig.ts
│ │ │ │ │ ├── dirname.ts
│ │ │ │ │ ├── docker-compose.ts
│ │ │ │ │ ├── docker.ts
│ │ │ │ │ ├── dotnet.ts
│ │ │ │ │ ├── du.ts
│ │ │ │ │ ├── echo.ts
│ │ │ │ │ ├── env.ts
│ │ │ │ │ ├── export.ts
│ │ │ │ │ ├── fdisk.ts
│ │ │ │ │ ├── find.ts
│ │ │ │ │ ├── fmt.ts
│ │ │ │ │ ├── fold.ts
│ │ │ │ │ ├── go.ts
│ │ │ │ │ ├── grep.ts
│ │ │ │ │ ├── head.ts
│ │ │ │ │ ├── htop.ts
│ │ │ │ │ ├── id.ts
│ │ │ │ │ ├── jq.ts
│ │ │ │ │ ├── kill.ts
│ │ │ │ │ ├── killall.ts
│ │ │ │ │ ├── less.ts
│ │ │ │ │ ├── ln.ts
│ │ │ │ │ ├── ls.ts
│ │ │ │ │ ├── lsblk.ts
│ │ │ │ │ ├── lsof.ts
│ │ │ │ │ ├── mkdir.ts
│ │ │ │ │ ├── more.ts
│ │ │ │ │ ├── mount.ts
│ │ │ │ │ ├── mv.ts
│ │ │ │ │ ├── nano.ts
│ │ │ │ │ ├── nl.ts
│ │ │ │ │ ├── node.ts
│ │ │ │ │ ├── nvm.ts
│ │ │ │ │ ├── od.ts
│ │ │ │ │ ├── paste.ts
│ │ │ │ │ ├── ping.ts
│ │ │ │ │ ├── pkill.ts
│ │ │ │ │ ├── ps.ts
│ │ │ │ │ ├── pwd.ts
│ │ │ │ │ ├── python.ts
│ │ │ │ │ ├── python3.ts
│ │ │ │ │ ├── readlink.ts
│ │ │ │ │ ├── rm.ts
│ │ │ │ │ ├── rmdir.ts
│ │ │ │ │ ├── rsync.ts
│ │ │ │ │ ├── ruby.ts
│ │ │ │ │ ├── ruff.ts
│ │ │ │ │ ├── scp.ts
│ │ │ │ │ ├── sed.ts
│ │ │ │ │ ├── seq.ts
│ │ │ │ │ ├── shred.ts
│ │ │ │ │ ├── sort.ts
│ │ │ │ │ ├── source.ts
│ │ │ │ │ ├── split.ts
│ │ │ │ │ ├── ssh.ts
│ │ │ │ │ ├── stat.ts
│ │ │ │ │ ├── su.ts
│ │ │ │ │ ├── sudo.ts
│ │ │ │ │ ├── tac.ts
│ │ │ │ │ ├── tail.ts
│ │ │ │ │ ├── tar.ts
│ │ │ │ │ ├── tee.ts
│ │ │ │ │ ├── time.ts
│ │ │ │ │ ├── top.ts
│ │ │ │ │ ├── touch.ts
│ │ │ │ │ ├── tr.ts
│ │ │ │ │ ├── traceroute.ts
│ │ │ │ │ ├── tree.ts
│ │ │ │ │ ├── truncate.ts
│ │ │ │ │ ├── uname.ts
│ │ │ │ │ ├── uniq.ts
│ │ │ │ │ ├── unzip.ts
│ │ │ │ │ ├── vim.ts
│ │ │ │ │ ├── wc.ts
│ │ │ │ │ ├── wget.ts
│ │ │ │ │ ├── where.ts
│ │ │ │ │ ├── whereis.ts
│ │ │ │ │ ├── which.ts
│ │ │ │ │ ├── who.ts
│ │ │ │ │ ├── xargs.ts
│ │ │ │ │ ├── xxd.ts
│ │ │ │ │ ├── yo.ts
│ │ │ │ │ └── zip.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
│ │ │ │ ├── keyvalue.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
│ │ │ │ │ ├── git-branch.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
│ │ │ │ ├── fixtures/
│ │ │ │ │ └── symlink-test/
│ │ │ │ │ └── real-executable.sh
│ │ │ │ ├── helpers.ts
│ │ │ │ ├── terminalSuggestMain.test.ts
│ │ │ │ └── tokens.test.ts
│ │ │ ├── tokens.ts
│ │ │ ├── types.ts
│ │ │ └── upstreamSpecs.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/
│ │ ├── 2026-dark.json
│ │ ├── 2026-light.json
│ │ ├── 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
│ │ ├── esbuild.mts
│ │ ├── 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
│ │ ├── esbuild.browser.mts
│ │ ├── esbuild.mts
│ │ ├── 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
│ │ │ │ └── useTsgo.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
│ │ │ │ │ ├── implementationsCodeLens.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
│ │ │ ├── configuration.ts
│ │ │ ├── dispose.ts
│ │ │ ├── fs.electron.ts
│ │ │ ├── fs.ts
│ │ │ ├── hash.ts
│ │ │ ├── lazy.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.browser.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/
│ │ │ │ ├── browser.test.ts
│ │ │ │ ├── chat.runInTerminal.test.ts
│ │ │ │ ├── chat.test.ts
│ │ │ │ ├── commands.test.ts
│ │ │ │ ├── configuration.test.ts
│ │ │ │ ├── debug.test.ts
│ │ │ │ ├── documentPaste.test.ts
│ │ │ │ ├── editor.test.ts
│ │ │ │ ├── env.power.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
│ │ │ │ ├── tree.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.env
│ │ │ │ ├── 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_env.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_env.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
│ │ ├── esbuild.browser.mts
│ │ ├── esbuild.mts
│ │ ├── package.json
│ │ ├── scripts/
│ │ │ └── terminateProcess.sh
│ │ ├── src/
│ │ │ ├── download.ts
│ │ │ ├── extension.browser.ts
│ │ │ ├── extension.ts
│ │ │ └── util/
│ │ │ └── processes.ts
│ │ ├── tsconfig.browser.json
│ │ └── 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.mjs
├── 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
│ ├── appx/
│ │ └── AppxManifest.xml
│ ├── bin/
│ │ ├── code.cmd
│ │ └── code.sh
│ └── versioned/
│ └── bin/
│ ├── code.cmd
│ └── code.sh
├── scripts/
│ ├── code-agent-host.js
│ ├── code-agent-host.sh
│ ├── code-cli.bat
│ ├── code-cli.sh
│ ├── code-perf.js
│ ├── code-server.bat
│ ├── code-server.js
│ ├── code-server.sh
│ ├── code-sessions-web.js
│ ├── code-sessions-web.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
│ ├── sync-agent-host-protocol.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
│ ├── cli.ts
│ ├── main.ts
│ ├── server-cli.ts
│ ├── server-main.ts
│ ├── tsconfig.base.json
│ ├── tsconfig.defineClassFields.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
│ │ ├── css.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
│ │ │ │ ├── domSanitize.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
│ │ │ │ │ ├── animations/
│ │ │ │ │ │ └── animations.ts
│ │ │ │ │ ├── aria/
│ │ │ │ │ │ ├── aria.css
│ │ │ │ │ │ └── aria.ts
│ │ │ │ │ ├── breadcrumbs/
│ │ │ │ │ │ ├── breadcrumbsWidget.css
│ │ │ │ │ │ └── breadcrumbsWidget.ts
│ │ │ │ │ ├── button/
│ │ │ │ │ │ ├── button.css
│ │ │ │ │ │ └── button.ts
│ │ │ │ │ ├── centered/
│ │ │ │ │ │ └── centeredViewLayout.ts
│ │ │ │ │ ├── codicons/
│ │ │ │ │ │ ├── codicon/
│ │ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ │ ├── 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
│ │ │ │ └── window.ts
│ │ │ ├── common/
│ │ │ │ ├── actions.ts
│ │ │ │ ├── arrays.ts
│ │ │ │ ├── arraysFind.ts
│ │ │ │ ├── assert.ts
│ │ │ │ ├── async.ts
│ │ │ │ ├── buffer.ts
│ │ │ │ ├── cache.ts
│ │ │ │ ├── cancellation.ts
│ │ │ │ ├── charCode.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
│ │ │ │ ├── defaultAccount.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
│ │ │ │ ├── jsonRpcProtocol.ts
│ │ │ │ ├── jsonSchema.ts
│ │ │ │ ├── jsonc.ts
│ │ │ │ ├── keyCodes.ts
│ │ │ │ ├── keybindingLabels.ts
│ │ │ │ ├── keybindingParser.ts
│ │ │ │ ├── keybindings.ts
│ │ │ │ ├── labels.ts
│ │ │ │ ├── layout.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
│ │ │ │ ├── oauth.ts
│ │ │ │ ├── objects.ts
│ │ │ │ ├── observable.ts
│ │ │ │ ├── observableInternal/
│ │ │ │ │ ├── base.ts
│ │ │ │ │ ├── changeTracker.ts
│ │ │ │ │ ├── commonFacade/
│ │ │ │ │ │ ├── cancellation.ts
│ │ │ │ │ │ └── deps.ts
│ │ │ │ │ ├── debugLocation.ts
│ │ │ │ │ ├── debugName.ts
│ │ │ │ │ ├── experimental/
│ │ │ │ │ │ ├── reducer.ts
│ │ │ │ │ │ ├── time.ts
│ │ │ │ │ │ └── utils.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── logging/
│ │ │ │ │ │ ├── consoleObservableLogger.ts
│ │ │ │ │ │ ├── debugGetDependencyGraph.ts
│ │ │ │ │ │ ├── debugger/
│ │ │ │ │ │ │ ├── debuggerApi.d.ts
│ │ │ │ │ │ │ ├── debuggerRpc.ts
│ │ │ │ │ │ │ ├── devToolsLogger.ts
│ │ │ │ │ │ │ ├── rpc.ts
│ │ │ │ │ │ │ └── utils.ts
│ │ │ │ │ │ └── logging.ts
│ │ │ │ │ ├── map.ts
│ │ │ │ │ ├── observables/
│ │ │ │ │ │ ├── baseObservable.ts
│ │ │ │ │ │ ├── constObservable.ts
│ │ │ │ │ │ ├── derived.ts
│ │ │ │ │ │ ├── derivedImpl.ts
│ │ │ │ │ │ ├── lazyObservableValue.ts
│ │ │ │ │ │ ├── observableFromEvent.ts
│ │ │ │ │ │ ├── observableSignal.ts
│ │ │ │ │ │ ├── observableSignalFromEvent.ts
│ │ │ │ │ │ ├── observableValue.ts
│ │ │ │ │ │ └── observableValueOpts.ts
│ │ │ │ │ ├── reactions/
│ │ │ │ │ │ ├── autorun.ts
│ │ │ │ │ │ └── autorunImpl.ts
│ │ │ │ │ ├── set.ts
│ │ │ │ │ ├── transaction.ts
│ │ │ │ │ └── utils/
│ │ │ │ │ ├── promise.ts
│ │ │ │ │ ├── runOnChange.ts
│ │ │ │ │ ├── utils.ts
│ │ │ │ │ ├── utilsCancellation.ts
│ │ │ │ │ └── valueWithChangeEvent.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
│ │ │ │ ├── sseParser.ts
│ │ │ │ ├── stopwatch.ts
│ │ │ │ ├── stream.ts
│ │ │ │ ├── strings.ts
│ │ │ │ ├── symbols.ts
│ │ │ │ ├── ternarySearchTree.ts
│ │ │ │ ├── tfIdf.ts
│ │ │ │ ├── themables.ts
│ │ │ │ ├── types.ts
│ │ │ │ ├── uint.ts
│ │ │ │ ├── uri.ts
│ │ │ │ ├── uriIpc.ts
│ │ │ │ ├── uriTransformer.ts
│ │ │ │ ├── uuid.ts
│ │ │ │ ├── validation.ts
│ │ │ │ ├── verifier.ts
│ │ │ │ ├── worker/
│ │ │ │ │ ├── webWorker.ts
│ │ │ │ │ └── webWorkerBootstrap.ts
│ │ │ │ └── yaml.ts
│ │ │ ├── node/
│ │ │ │ ├── cpuUsage.sh
│ │ │ │ ├── crypto.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
│ │ │ │ ├── windowsVersion.ts
│ │ │ │ └── zip.ts
│ │ │ ├── parts/
│ │ │ │ ├── contextmenu/
│ │ │ │ │ ├── common/
│ │ │ │ │ │ └── contextmenu.ts
│ │ │ │ │ ├── electron-browser/
│ │ │ │ │ │ └── contextmenu.ts
│ │ │ │ │ └── electron-main/
│ │ │ │ │ └── contextmenu.ts
│ │ │ │ ├── ipc/
│ │ │ │ │ ├── browser/
│ │ │ │ │ │ └── ipc.mp.ts
│ │ │ │ │ ├── common/
│ │ │ │ │ │ ├── ipc.electron.ts
│ │ │ │ │ │ ├── ipc.mp.ts
│ │ │ │ │ │ ├── ipc.net.ts
│ │ │ │ │ │ └── ipc.ts
│ │ │ │ │ ├── electron-browser/
│ │ │ │ │ │ ├── ipc.electron.ts
│ │ │ │ │ │ └── ipc.mp.ts
│ │ │ │ │ ├── electron-main/
│ │ │ │ │ │ ├── ipc.electron.ts
│ │ │ │ │ │ ├── ipc.mp.ts
│ │ │ │ │ │ └── ipcMain.ts
│ │ │ │ │ ├── node/
│ │ │ │ │ │ ├── ipc.cp.ts
│ │ │ │ │ │ ├── ipc.mp.ts
│ │ │ │ │ │ └── ipc.net.ts
│ │ │ │ │ └── test/
│ │ │ │ │ ├── browser/
│ │ │ │ │ │ └── ipc.mp.test.ts
│ │ │ │ │ ├── common/
│ │ │ │ │ │ └── ipc.test.ts
│ │ │ │ │ ├── electron-browser/
│ │ │ │ │ │ └── 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-browser/
│ │ │ │ │ │ ├── electronTypes.ts
│ │ │ │ │ │ ├── globals.ts
│ │ │ │ │ │ ├── preload-aux.ts
│ │ │ │ │ │ └── preload.ts
│ │ │ │ │ ├── node/
│ │ │ │ │ │ └── electronTypes.ts
│ │ │ │ │ └── test/
│ │ │ │ │ └── electron-browser/
│ │ │ │ │ └── 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
│ │ │ │ ├── domSanitize.test.ts
│ │ │ │ ├── formattedTextRenderer.test.ts
│ │ │ │ ├── hash.test.ts
│ │ │ │ ├── highlightedLabel.test.ts
│ │ │ │ ├── iconLabels.test.ts
│ │ │ │ ├── indexedDB.test.ts
│ │ │ │ ├── markdownRenderer.test.ts
│ │ │ │ ├── progressBar.test.ts
│ │ │ │ └── ui/
│ │ │ │ ├── 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
│ │ │ │ ├── toolbar/
│ │ │ │ │ └── toolbar.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
│ │ │ │ ├── iterativePaging.test.ts
│ │ │ │ ├── iterator.test.ts
│ │ │ │ ├── json.test.ts
│ │ │ │ ├── jsonEdit.test.ts
│ │ │ │ ├── jsonFormatter.test.ts
│ │ │ │ ├── jsonParse.test.ts
│ │ │ │ ├── jsonRpcProtocol.test.ts
│ │ │ │ ├── jsonSchema.test.ts
│ │ │ │ ├── keyCodes.test.ts
│ │ │ │ ├── keybindings.test.ts
│ │ │ │ ├── labels.test.ts
│ │ │ │ ├── layout.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
│ │ │ │ ├── oauth.test.ts
│ │ │ │ ├── objects.test.ts
│ │ │ │ ├── observables/
│ │ │ │ │ ├── debug.test.ts
│ │ │ │ │ └── observable.test.ts
│ │ │ │ ├── paging.test.ts
│ │ │ │ ├── path.test.ts
│ │ │ │ ├── performance.test.ts
│ │ │ │ ├── prefixTree.test.ts
│ │ │ │ ├── processes.test.ts
│ │ │ │ ├── resourceTree.test.ts
│ │ │ │ ├── resources.test.ts
│ │ │ │ ├── scrollable.test.ts
│ │ │ │ ├── sinonUtils.ts
│ │ │ │ ├── snapshot.ts
│ │ │ │ ├── sseParser.test.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
│ │ │ │ └── yaml.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
│ │ │ ├── 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
│ │ │ ├── ps.test.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-browser/
│ │ │ │ └── workbench/
│ │ │ │ ├── workbench-dev.html
│ │ │ │ ├── workbench.html
│ │ │ │ └── workbench.ts
│ │ │ ├── electron-main/
│ │ │ │ ├── app.ts
│ │ │ │ └── main.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/
│ │ │ │ │ ├── dragScrolling.ts
│ │ │ │ │ ├── editContext/
│ │ │ │ │ │ ├── clipboardUtils.ts
│ │ │ │ │ │ ├── editContext.ts
│ │ │ │ │ │ ├── native/
│ │ │ │ │ │ │ ├── debugEditContext.ts
│ │ │ │ │ │ │ ├── editContextFactory.ts
│ │ │ │ │ │ │ ├── nativeEditContext.css
│ │ │ │ │ │ │ ├── nativeEditContext.ts
│ │ │ │ │ │ │ ├── nativeEditContextRegistry.ts
│ │ │ │ │ │ │ ├── nativeEditContextUtils.ts
│ │ │ │ │ │ │ ├── screenReaderContentRich.ts
│ │ │ │ │ │ │ ├── screenReaderContentSimple.ts
│ │ │ │ │ │ │ ├── screenReaderSupport.ts
│ │ │ │ │ │ │ └── screenReaderUtils.ts
│ │ │ │ │ │ ├── screenReaderUtils.ts
│ │ │ │ │ │ └── textArea/
│ │ │ │ │ │ ├── textAreaEditContext.css
│ │ │ │ │ │ ├── textAreaEditContext.ts
│ │ │ │ │ │ ├── textAreaEditContextInput.ts
│ │ │ │ │ │ ├── textAreaEditContextRegistry.ts
│ │ │ │ │ │ └── textAreaEditContextState.ts
│ │ │ │ │ ├── mouseHandler.ts
│ │ │ │ │ ├── mouseTarget.ts
│ │ │ │ │ └── pointerHandler.ts
│ │ │ │ ├── coreCommands.ts
│ │ │ │ ├── dataTransfer.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
│ │ │ │ ├── services/
│ │ │ │ │ ├── abstractCodeEditorService.ts
│ │ │ │ │ ├── bulkEditService.ts
│ │ │ │ │ ├── codeEditorService.ts
│ │ │ │ │ ├── contribution.ts
│ │ │ │ │ ├── editorWorkerService.ts
│ │ │ │ │ ├── inlineCompletionsService.ts
│ │ │ │ │ ├── markerDecorations.ts
│ │ │ │ │ ├── openerService.ts
│ │ │ │ │ └── renameSymbolTrackerService.ts
│ │ │ │ ├── stableEditorScroll.ts
│ │ │ │ ├── triggerInlineEditCommandsRegistry.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/
│ │ │ │ │ │ ├── copySelection.ts
│ │ │ │ │ │ ├── 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/
│ │ │ │ │ ├── editorMarkdownCodeBlockRenderer.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/
│ │ │ │ ├── commands/
│ │ │ │ │ ├── replaceCommand.ts
│ │ │ │ │ ├── shiftCommand.ts
│ │ │ │ │ ├── surroundSelectionCommand.ts
│ │ │ │ │ └── trimTrailingWhitespaceCommand.ts
│ │ │ │ ├── config/
│ │ │ │ │ ├── diffEditor.ts
│ │ │ │ │ ├── editorConfiguration.ts
│ │ │ │ │ ├── editorConfigurationSchema.ts
│ │ │ │ │ ├── editorOptions.ts
│ │ │ │ │ ├── editorZoom.ts
│ │ │ │ │ ├── fontInfo.ts
│ │ │ │ │ └── fontInfoFromSettings.ts
│ │ │ │ ├── coordinatesConverter.ts
│ │ │ │ ├── core/
│ │ │ │ │ ├── 2d/
│ │ │ │ │ │ ├── dimension.ts
│ │ │ │ │ │ ├── point.ts
│ │ │ │ │ │ ├── rect.ts
│ │ │ │ │ │ └── size.ts
│ │ │ │ │ ├── characterClassifier.ts
│ │ │ │ │ ├── cursorColumns.ts
│ │ │ │ │ ├── editOperation.ts
│ │ │ │ │ ├── editorColorRegistry.ts
│ │ │ │ │ ├── edits/
│ │ │ │ │ │ ├── arrayEdit.ts
│ │ │ │ │ │ ├── edit.ts
│ │ │ │ │ │ ├── lengthEdit.ts
│ │ │ │ │ │ ├── lineEdit.ts
│ │ │ │ │ │ ├── stringEdit.ts
│ │ │ │ │ │ └── textEdit.ts
│ │ │ │ │ ├── misc/
│ │ │ │ │ │ ├── eolCounter.ts
│ │ │ │ │ │ ├── indentation.ts
│ │ │ │ │ │ ├── rgba.ts
│ │ │ │ │ │ └── textModelDefaults.ts
│ │ │ │ │ ├── position.ts
│ │ │ │ │ ├── range.ts
│ │ │ │ │ ├── ranges/
│ │ │ │ │ │ ├── columnRange.ts
│ │ │ │ │ │ ├── lineRange.ts
│ │ │ │ │ │ ├── offsetRange.ts
│ │ │ │ │ │ ├── rangeMapping.ts
│ │ │ │ │ │ └── rangeSingleLine.ts
│ │ │ │ │ ├── selection.ts
│ │ │ │ │ ├── stringBuilder.ts
│ │ │ │ │ ├── text/
│ │ │ │ │ │ ├── abstractText.ts
│ │ │ │ │ │ ├── getPositionOffsetTransformerFromTextModel.ts
│ │ │ │ │ │ ├── positionToOffset.ts
│ │ │ │ │ │ ├── positionToOffsetImpl.ts
│ │ │ │ │ │ └── textLength.ts
│ │ │ │ │ ├── textChange.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
│ │ │ │ │ ├── textModelPart.ts
│ │ │ │ │ ├── textModelSearch.ts
│ │ │ │ │ ├── textModelStringEdit.ts
│ │ │ │ │ ├── textModelText.ts
│ │ │ │ │ ├── textModelTokens.ts
│ │ │ │ │ ├── tokens/
│ │ │ │ │ │ ├── abstractSyntaxTokenBackend.ts
│ │ │ │ │ │ ├── annotations.ts
│ │ │ │ │ │ ├── tokenizationFontDecorationsProvider.ts
│ │ │ │ │ │ ├── tokenizationTextModelPart.ts
│ │ │ │ │ │ ├── tokenizerSyntaxTokenBackend.ts
│ │ │ │ │ │ └── treeSitter/
│ │ │ │ │ │ ├── cursorUtils.ts
│ │ │ │ │ │ ├── tokenStore.ts
│ │ │ │ │ │ ├── treeSitterSyntaxTokenBackend.ts
│ │ │ │ │ │ ├── treeSitterTokenizationImpl.ts
│ │ │ │ │ │ └── treeSitterTree.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── model.ts
│ │ │ │ ├── modelLineProjectionData.ts
│ │ │ │ ├── services/
│ │ │ │ │ ├── completionsEnablement.ts
│ │ │ │ │ ├── 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/
│ │ │ │ │ │ ├── treeSitterLibraryService.ts
│ │ │ │ │ │ └── treeSitterThemeService.ts
│ │ │ │ │ ├── treeViewsDnd.ts
│ │ │ │ │ ├── treeViewsDndService.ts
│ │ │ │ │ └── unicodeTextModelHighlighter.ts
│ │ │ │ ├── standalone/
│ │ │ │ │ └── standaloneEnums.ts
│ │ │ │ ├── standaloneStrings.ts
│ │ │ │ ├── textModelBracketPairs.ts
│ │ │ │ ├── textModelEditSource.ts
│ │ │ │ ├── textModelEvents.ts
│ │ │ │ ├── textModelGuides.ts
│ │ │ │ ├── tokenizationRegistry.ts
│ │ │ │ ├── tokenizationTextModelPart.ts
│ │ │ │ ├── tokens/
│ │ │ │ │ ├── common.ts
│ │ │ │ │ ├── contiguousMultilineTokens.ts
│ │ │ │ │ ├── contiguousMultilineTokensBuilder.ts
│ │ │ │ │ ├── contiguousTokensEditing.ts
│ │ │ │ │ ├── contiguousTokensStore.ts
│ │ │ │ │ ├── lineTokens.ts
│ │ │ │ │ ├── sparseMultilineTokens.ts
│ │ │ │ │ ├── sparseTokensStore.ts
│ │ │ │ │ └── tokenWithTextArray.ts
│ │ │ │ ├── viewEventHandler.ts
│ │ │ │ ├── viewEvents.ts
│ │ │ │ ├── viewLayout/
│ │ │ │ │ ├── lineDecorations.ts
│ │ │ │ │ ├── lineHeights.ts
│ │ │ │ │ ├── linePart.ts
│ │ │ │ │ ├── linesLayout.ts
│ │ │ │ │ ├── viewLayout.ts
│ │ │ │ │ ├── viewLineRenderer.ts
│ │ │ │ │ └── viewLinesViewportData.ts
│ │ │ │ ├── viewModel/
│ │ │ │ │ ├── glyphLanesModel.ts
│ │ │ │ │ ├── inlineDecorations.ts
│ │ │ │ │ ├── minimapTokensColorTracker.ts
│ │ │ │ │ ├── modelLineProjection.ts
│ │ │ │ │ ├── monospaceLineBreaksComputer.ts
│ │ │ │ │ ├── overviewZoneManager.ts
│ │ │ │ │ ├── screenReaderSimpleModel.ts
│ │ │ │ │ ├── viewContext.ts
│ │ │ │ │ ├── viewModelDecoration.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
│ │ │ │ │ └── test/
│ │ │ │ │ └── browser/
│ │ │ │ │ └── defaultDocumentColorProvider.test.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
│ │ │ │ ├── floatingMenu/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── floatingMenu.contribution.ts
│ │ │ │ │ ├── floatingMenu.css
│ │ │ │ │ └── floatingMenu.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
│ │ │ │ │ ├── markerSelectionStatus.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
│ │ │ │ │ │ ├── hoverCopyButton.ts
│ │ │ │ │ │ ├── hoverOperation.ts
│ │ │ │ │ │ ├── hoverTypes.ts
│ │ │ │ │ │ ├── hoverUtils.ts
│ │ │ │ │ │ ├── markdownHoverParticipant.ts
│ │ │ │ │ │ ├── markerHoverParticipant.ts
│ │ │ │ │ │ └── resizableContentWidget.ts
│ │ │ │ │ └── test/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── contentHover.test.ts
│ │ │ │ │ ├── hoverCopyButton.test.ts
│ │ │ │ │ └── hoverUtils.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
│ │ │ │ │ │ │ ├── common.ts
│ │ │ │ │ │ │ ├── inlineCompletionContextKeys.ts
│ │ │ │ │ │ │ └── inlineCompletionsController.ts
│ │ │ │ │ │ ├── hintsWidget/
│ │ │ │ │ │ │ ├── hoverParticipant.ts
│ │ │ │ │ │ │ ├── inlineCompletionsHintsWidget.css
│ │ │ │ │ │ │ └── inlineCompletionsHintsWidget.ts
│ │ │ │ │ │ ├── inlineCompletions.contribution.ts
│ │ │ │ │ │ ├── inlineCompletionsAccessibleView.ts
│ │ │ │ │ │ ├── model/
│ │ │ │ │ │ │ ├── InlineSuggestAlternativeAction.ts
│ │ │ │ │ │ │ ├── animation.ts
│ │ │ │ │ │ │ ├── changeRecorder.ts
│ │ │ │ │ │ │ ├── computeGhostText.ts
│ │ │ │ │ │ │ ├── editKind.ts
│ │ │ │ │ │ │ ├── ghostText.ts
│ │ │ │ │ │ │ ├── graph.ts
│ │ │ │ │ │ │ ├── inlineCompletionIsVisible.ts
│ │ │ │ │ │ │ ├── inlineCompletionsModel.ts
│ │ │ │ │ │ │ ├── inlineCompletionsSource.ts
│ │ │ │ │ │ │ ├── inlineSuggestionItem.ts
│ │ │ │ │ │ │ ├── provideInlineCompletions.ts
│ │ │ │ │ │ │ ├── renameSymbolProcessor.ts
│ │ │ │ │ │ │ ├── singleTextEditHelpers.ts
│ │ │ │ │ │ │ ├── suggestWidgetAdapter.ts
│ │ │ │ │ │ │ ├── textModelValueReference.ts
│ │ │ │ │ │ │ └── typingSpeed.ts
│ │ │ │ │ │ ├── structuredLogger.ts
│ │ │ │ │ │ ├── telemetry.ts
│ │ │ │ │ │ ├── utils.ts
│ │ │ │ │ │ └── view/
│ │ │ │ │ │ ├── ghostText/
│ │ │ │ │ │ │ ├── ghostTextView.css
│ │ │ │ │ │ │ └── ghostTextView.ts
│ │ │ │ │ │ ├── inlineEdits/
│ │ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ │ ├── gutterIndicatorMenu.ts
│ │ │ │ │ │ │ │ └── gutterIndicatorView.ts
│ │ │ │ │ │ │ ├── inlineEditWithChanges.ts
│ │ │ │ │ │ │ ├── inlineEditsModel.ts
│ │ │ │ │ │ │ ├── inlineEditsNewUsers.ts
│ │ │ │ │ │ │ ├── inlineEditsView.ts
│ │ │ │ │ │ │ ├── inlineEditsViewInterface.ts
│ │ │ │ │ │ │ ├── inlineEditsViewProducer.ts
│ │ │ │ │ │ │ ├── inlineEditsViews/
│ │ │ │ │ │ │ │ ├── debugVisualization.ts
│ │ │ │ │ │ │ │ ├── inlineEditsCollapsedView.ts
│ │ │ │ │ │ │ │ ├── inlineEditsCustomView.ts
│ │ │ │ │ │ │ │ ├── inlineEditsDeletionView.ts
│ │ │ │ │ │ │ │ ├── inlineEditsInsertionView.ts
│ │ │ │ │ │ │ │ ├── inlineEditsLineReplacementView.ts
│ │ │ │ │ │ │ │ ├── inlineEditsSideBySideView.ts
│ │ │ │ │ │ │ │ ├── inlineEditsWordInsertView.ts
│ │ │ │ │ │ │ │ ├── inlineEditsWordReplacementView.ts
│ │ │ │ │ │ │ │ ├── jumpToView.ts
│ │ │ │ │ │ │ │ ├── longDistanceHint/
│ │ │ │ │ │ │ │ │ ├── inlineEditsLongDistanceHint.ts
│ │ │ │ │ │ │ │ │ ├── longDistancePreviewEditor.ts
│ │ │ │ │ │ │ │ │ └── longDistnaceWidgetPlacement.ts
│ │ │ │ │ │ │ │ └── originalEditorInlineDiffView.ts
│ │ │ │ │ │ │ ├── theme.ts
│ │ │ │ │ │ │ ├── utils/
│ │ │ │ │ │ │ │ ├── flexBoxLayout.ts
│ │ │ │ │ │ │ │ ├── towersLayout.ts
│ │ │ │ │ │ │ │ └── utils.ts
│ │ │ │ │ │ │ └── view.css
│ │ │ │ │ │ └── inlineSuggestionsView.ts
│ │ │ │ │ └── test/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── computeGhostText.test.ts
│ │ │ │ │ ├── editKind.test.ts
│ │ │ │ │ ├── getSecondaryEdits.test.ts
│ │ │ │ │ ├── graph.test.ts
│ │ │ │ │ ├── inlineCompletions.test.ts
│ │ │ │ │ ├── inlineEdits.test.ts
│ │ │ │ │ ├── layout.test.ts
│ │ │ │ │ ├── longDistanceWidgetPlacement.test.ts
│ │ │ │ │ ├── renameSymbolProcessor.test.ts
│ │ │ │ │ ├── scrollToReveal.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
│ │ │ │ ├── middleScroll/
│ │ │ │ │ └── browser/
│ │ │ │ │ ├── middleScroll.contribution.ts
│ │ │ │ │ ├── middleScroll.css
│ │ │ │ │ └── middleScrollController.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
│ │ │ │ │ └── test/
│ │ │ │ │ └── browser/
│ │ │ │ │ └── gotoLineQuickAccess.test.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
│ │ │ │ │ └── viewportSemanticTokens.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
│ │ │ │ │ ├── services/
│ │ │ │ │ │ └── standaloneWebWorkerService.ts
│ │ │ │ │ ├── standalone-tokens.css
│ │ │ │ │ ├── standaloneCodeEditor.ts
│ │ │ │ │ ├── standaloneCodeEditorService.ts
│ │ │ │ │ ├── standaloneEditor.ts
│ │ │ │ │ ├── standaloneLanguages.ts
│ │ │ │ │ ├── standaloneLayoutService.ts
│ │ │ │ │ ├── standaloneServices.ts
│ │ │ │ │ ├── standaloneThemeService.ts
│ │ │ │ │ ├── standaloneTreeSitterLibraryService.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
│ │ │ │ │ ├── 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
│ │ │ │ ├── testCodeEditor.ts
│ │ │ │ ├── testCommand.ts
│ │ │ │ ├── view/
│ │ │ │ │ ├── minimapCharRenderer.test.ts
│ │ │ │ │ ├── viewController.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/
│ │ │ │ ├── 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
│ │ │ │ │ ├── stringEdit.test.ts
│ │ │ │ │ ├── testLineToken.ts
│ │ │ │ │ └── textEdit.test.ts
│ │ │ │ ├── diff/
│ │ │ │ │ └── diffComputer.test.ts
│ │ │ │ ├── languages/
│ │ │ │ │ └── defaultDocumentColorsComputer.test.ts
│ │ │ │ ├── model/
│ │ │ │ │ ├── annotations.test.ts
│ │ │ │ │ ├── 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
│ │ │ │ │ ├── testTreeSitterLibraryService.ts
│ │ │ │ │ ├── textResourceConfigurationService.test.ts
│ │ │ │ │ └── unicodeTextModelHighlighter.test.ts
│ │ │ │ ├── testTextModel.ts
│ │ │ │ ├── view/
│ │ │ │ │ └── overviewZoneManager.test.ts
│ │ │ │ ├── viewLayout/
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── renderViewLine2_issue-11485.0.html
│ │ │ │ │ │ ├── renderViewLine2_issue-11485.1.snap
│ │ │ │ │ │ ├── renderViewLine2_issue-116939.0.html
│ │ │ │ │ │ ├── renderViewLine2_issue-116939.1.snap
│ │ │ │ │ │ ├── renderViewLine2_issue-118759.0.html
│ │ │ │ │ │ ├── renderViewLine2_issue-118759.1.snap
│ │ │ │ │ │ ├── renderViewLine2_issue-119416.0.html
│ │ │ │ │ │ ├── renderViewLine2_issue-119416.1.snap
│ │ │ │ │ │ ├── renderViewLine2_issue-124038.0.html
│ │ │ │ │ │ ├── renderViewLine2_issue-124038.1.snap
│ │ │ │ │ │ ├── renderViewLine2_issue-136622.0.html
│ │ │ │ │ │ ├── renderViewLine2_issue-136622.1.snap
│ │ │ │ │ │ ├── renderViewLine2_issue-18616.0.html
│ │ │ │ │ │ ├── renderViewLine2_issue-18616.1.snap
│ │ │ │ │ │ ├── renderViewLine2_issue-19207.0.html
│ │ │ │ │ │ ├── renderViewLine2_issue-19207.1.snap
│ │ │ │ │ │ ├── renderViewLine2_issue-22352-1.0.html
│ │ │ │ │ │ ├── renderViewLine2_issue-22352-1.1.snap
│ │ │ │ │ │ ├── renderViewLine2_issue-22352-2.0.html
│ │ │ │ │ │ ├── renderViewLine2_issue-22352-2.1.snap
│ │ │ │ │ │ ├── renderViewLine2_issue-22832-1.0.html
│ │ │ │ │ │ ├── renderViewLine2_issue-22832-1.1.snap
│ │ │ │ │ │ ├── renderViewLine2_issue-22832-2.0.html
│ │ │ │ │ │ ├── renderViewLine2_issue-22832-2.1.snap
│ │ │ │ │ │ ├── renderViewLine2_issue-30133.0.html
│ │ │ │ │ │ ├── renderViewLine2_issue-30133.1.snap
│ │ │ │ │ │ ├── renderViewLine2_issue-32436.0.html
│ │ │ │ │ │ ├── renderViewLine2_issue-32436.1.snap
│ │ │ │ │ │ ├── renderViewLine2_issue-33525-1.0.html
│ │ │ │ │ │ ├── renderViewLine2_issue-33525-1.1.snap
│ │ │ │ │ │ ├── renderViewLine2_issue-33525-2.0.html
│ │ │ │ │ │ ├── renderViewLine2_issue-33525-2.1.snap
│ │ │ │ │ │ ├── renderViewLine2_issue-37208.0.html
│ │ │ │ │ │ ├── renderViewLine2_issue-37208.1.snap
│ │ │ │ │ │ ├── renderViewLine2_issue-37401.0.html
│ │ │ │ │ │ ├── renderViewLine2_issue-37401.1.snap
│ │ │ │ │ │ ├── renderViewLine2_issue-38123.0.html
│ │ │ │ │ │ ├── renderViewLine2_issue-38123.1.snap
│ │ │ │ │ │ ├── renderViewLine2_issue-38935.0.html
│ │ │ │ │ │ ├── renderViewLine2_issue-38935.1.snap
│ │ │ │ │ │ ├── renderViewLine2_issue-42700.0.html
│ │ │ │ │ │ ├── renderViewLine2_issue-42700.1.snap
│ │ │ │ │ │ ├── renderViewLine2_issue-91936.0.html
│ │ │ │ │ │ ├── renderViewLine2_issue-91936.1.snap
│ │ │ │ │ │ ├── renderViewLine2_simple.0.html
│ │ │ │ │ │ ├── renderViewLine2_simple.1.snap
│ │ │ │ │ │ ├── renderViewLine2_two-tokens.0.html
│ │ │ │ │ │ ├── renderViewLine2_two-tokens.1.snap
│ │ │ │ │ │ ├── renderViewLine2_unsorted-deco.0.html
│ │ │ │ │ │ ├── renderViewLine2_unsorted-deco.1.snap
│ │ │ │ │ │ ├── renderViewLine2_ws-2-tabs.0.html
│ │ │ │ │ │ ├── renderViewLine2_ws-2-tabs.1.snap
│ │ │ │ │ │ ├── renderViewLine2_ws-4-leading.0.html
│ │ │ │ │ │ ├── renderViewLine2_ws-4-leading.1.snap
│ │ │ │ │ │ ├── renderViewLine2_ws-8-leading.0.html
│ │ │ │ │ │ ├── renderViewLine2_ws-8-leading.1.snap
│ │ │ │ │ │ ├── renderViewLine2_ws-all-middle.0.html
│ │ │ │ │ │ ├── renderViewLine2_ws-all-middle.1.snap
│ │ │ │ │ │ ├── renderViewLine2_ws-faux-indent.0.html
│ │ │ │ │ │ ├── renderViewLine2_ws-faux-indent.1.snap
│ │ │ │ │ │ ├── renderViewLine2_ws-middle.0.html
│ │ │ │ │ │ ├── renderViewLine2_ws-middle.1.snap
│ │ │ │ │ │ ├── renderViewLine2_ws-mixed.0.html
│ │ │ │ │ │ ├── renderViewLine2_ws-mixed.1.snap
│ │ │ │ │ │ ├── renderViewLine2_ws-monospace.0.html
│ │ │ │ │ │ ├── renderViewLine2_ws-monospace.1.snap
│ │ │ │ │ │ ├── renderViewLine2_ws-sel-adjacent.0.html
│ │ │ │ │ │ ├── renderViewLine2_ws-sel-adjacent.1.snap
│ │ │ │ │ │ ├── renderViewLine2_ws-sel-multiple.0.html
│ │ │ │ │ │ ├── renderViewLine2_ws-sel-multiple.1.snap
│ │ │ │ │ │ ├── renderViewLine2_ws-sel-none.0.html
│ │ │ │ │ │ ├── renderViewLine2_ws-sel-none.1.snap
│ │ │ │ │ │ ├── renderViewLine2_ws-sel-partial.0.html
│ │ │ │ │ │ ├── renderViewLine2_ws-sel-partial.1.snap
│ │ │ │ │ │ ├── renderViewLine2_ws-sel-unsorted.0.html
│ │ │ │ │ │ ├── renderViewLine2_ws-sel-unsorted.1.snap
│ │ │ │ │ │ ├── renderViewLine2_ws-sel-whole.0.html
│ │ │ │ │ │ ├── renderViewLine2_ws-sel-whole.1.snap
│ │ │ │ │ │ ├── renderViewLine2_ws-trail-8-8.0.html
│ │ │ │ │ │ ├── renderViewLine2_ws-trail-8-8.1.snap
│ │ │ │ │ │ ├── renderViewLine2_ws-trail-no-trail.0.html
│ │ │ │ │ │ ├── renderViewLine2_ws-trail-no-trail.1.snap
│ │ │ │ │ │ ├── renderViewLine2_ws-trail-only.0.html
│ │ │ │ │ │ ├── renderViewLine2_ws-trail-only.1.snap
│ │ │ │ │ │ ├── renderViewLine2_ws-trail-with-trail.0.html
│ │ │ │ │ │ ├── renderViewLine2_ws-trail-with-trail.1.snap
│ │ │ │ │ │ ├── renderViewLine_issue-137036.0.html
│ │ │ │ │ │ ├── renderViewLine_issue-137036.1.snap
│ │ │ │ │ │ ├── renderViewLine_issue-19673.0.html
│ │ │ │ │ │ ├── renderViewLine_issue-19673.1.snap
│ │ │ │ │ │ ├── renderViewLine_issue-20624.0.html
│ │ │ │ │ │ ├── renderViewLine_issue-2255-1.0.html
│ │ │ │ │ │ ├── renderViewLine_issue-2255-1.1.snap
│ │ │ │ │ │ ├── renderViewLine_issue-2255-2.0.html
│ │ │ │ │ │ ├── renderViewLine_issue-2255-2.1.snap
│ │ │ │ │ │ ├── renderViewLine_issue-260239.0.html
│ │ │ │ │ │ ├── renderViewLine_issue-260239.1.snap
│ │ │ │ │ │ ├── renderViewLine_issue-274604.0.html
│ │ │ │ │ │ ├── renderViewLine_issue-274604.1.snap
│ │ │ │ │ │ ├── renderViewLine_issue-277693.0.html
│ │ │ │ │ │ ├── renderViewLine_issue-277693.1.snap
│ │ │ │ │ │ ├── renderViewLine_issue-6885-rtl.0.html
│ │ │ │ │ │ ├── renderViewLine_issue-91178.0.html
│ │ │ │ │ │ ├── renderViewLine_issue-91178.1.snap
│ │ │ │ │ │ ├── renderViewLine_issue-95685.0.html
│ │ │ │ │ │ ├── renderViewLine_issue-95685.1.snap
│ │ │ │ │ │ ├── renderViewLine_issue-99589.0.html
│ │ │ │ │ │ ├── renderViewLine_issue-99589.1.snap
│ │ │ │ │ │ ├── renderViewLine_monaco-280.0.html
│ │ │ │ │ │ ├── renderViewLine_monaco-280.1.snap
│ │ │ │ │ │ ├── renderViewLine_overflow.0.html
│ │ │ │ │ │ ├── renderViewLine_overflow.1.snap
│ │ │ │ │ │ ├── renderViewLine_typical.0.html
│ │ │ │ │ │ └── renderViewLine_typical.1.snap
│ │ │ │ │ ├── lineDecorations.test.ts
│ │ │ │ │ ├── lineHeights.test.ts
│ │ │ │ │ ├── linesLayout.test.ts
│ │ │ │ │ └── viewLineRenderer.test.ts
│ │ │ │ └── viewModel/
│ │ │ │ ├── glyphLanesModel.test.ts
│ │ │ │ ├── inlineDecorations.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
│ │ │
================================================
FILE CONTENTS
================================================
================================================
FILE: .agents/skills/launch/SKILL.md
================================================
---
name: launch
description: "Launch and automate VS Code (Code OSS) using agent-browser via Chrome DevTools Protocol. Use when you need to interact with the VS Code UI, automate the chat panel, test UI features, or take screenshots of VS Code. Triggers include 'automate VS Code', 'interact with chat', 'test the UI', 'take a screenshot', 'launch Code OSS with debugging'."
metadata:
allowed-tools: Bash(agent-browser:*), Bash(npx agent-browser:*)
---
# VS Code Automation
Automate VS Code (Code OSS) using agent-browser. VS Code is built on Electron/Chromium and exposes a Chrome DevTools Protocol (CDP) port that agent-browser can connect to, enabling the same snapshot-interact workflow used for web pages.
## Prerequisites
- **`agent-browser` must be installed.** It's listed in devDependencies — run `npm install` in the repo root. Use `npx agent-browser` if it's not on your PATH, or install globally with `npm install -g agent-browser`.
- **For Code OSS (VS Code dev build):** The repo must be built before launching. `./scripts/code.sh` runs the build automatically if needed, or set `VSCODE_SKIP_PRELAUNCH=1` to skip the compile step if you've already built.
- **CSS selectors are internal implementation details.** Selectors like `.interactive-input-part`, `.interactive-input-editor`, and `.part.auxiliarybar` used in `eval` commands are VS Code internals that may change across versions. If they stop working, use `agent-browser snapshot -i` to re-discover the current DOM structure.
## Core Workflow
1. **Launch** Code OSS with remote debugging enabled
2. **Connect** agent-browser to the CDP port
3. **Snapshot** to discover interactive elements
4. **Interact** using element refs
5. **Re-snapshot** after navigation or state changes
> **📸 Take screenshots for a paper trail.** Use `agent-browser screenshot <path>` at key moments — after launch, before/after interactions, and when something goes wrong. Screenshots provide visual proof of what the UI looked like and are invaluable for debugging failures or documenting what was accomplished.
>
> Save screenshots inside a timestamped subfolder so each run is isolated and nothing gets overwritten:
>
> ```bash
> # Create a timestamped folder for this run's screenshots
> SCREENSHOT_DIR="/tmp/code-oss-screenshots/$(date +%Y-%m-%dT%H-%M-%S)"
> mkdir -p "$SCREENSHOT_DIR"
>
> # Save a screenshot (path is a positional argument — use ./ or absolute paths)
> # Bare filenames without ./ may be misinterpreted as CSS selectors
> agent-browser screenshot "$SCREENSHOT_DIR/after-launch.png"
> ```
```bash
# Launch Code OSS with remote debugging
./scripts/code.sh --remote-debugging-port=9224
# Wait for Code OSS to start, retry until connected
for i in 1 2 3 4 5; do agent-browser connect 9224 2>/dev/null && break || sleep 3; done
# Verify you're connected to the right target (not about:blank)
# If `tab` shows the wrong target, run `agent-browser close` and reconnect
agent-browser tab
# Discover UI elements
agent-browser snapshot -i
# Focus the chat input (macOS)
agent-browser press Control+Meta+i
```
## Connecting
```bash
# Connect to a specific port
agent-browser connect 9222
# Or use --cdp on each command
agent-browser --cdp 9222 snapshot -i
# Auto-discover a running Chromium-based app
agent-browser --auto-connect snapshot -i
```
After `connect`, all subsequent commands target the connected app without needing `--cdp`.
## Tab Management
Electron apps often have multiple windows or webviews. Use tab commands to list and switch between them:
```bash
# List all available targets (windows, webviews, etc.)
agent-browser tab
# Switch to a specific tab by index
agent-browser tab 2
# Switch by URL pattern
agent-browser tab --url "*settings*"
```
## Launching Code OSS (VS Code Dev Build)
The VS Code repository includes `scripts/code.sh` which launches Code OSS from source. It passes all arguments through to the Electron binary, so `--remote-debugging-port` works directly:
```bash
cd <repo-root> # the root of your VS Code checkout
./scripts/code.sh --remote-debugging-port=9224
```
Wait for the window to fully initialize, then connect:
```bash
# Wait for Code OSS to start, retry until connected
for i in 1 2 3 4 5; do agent-browser connect 9224 2>/dev/null && break || sleep 3; done
# Verify you're connected to the right target (not about:blank)
# If `tab` shows the wrong target, run `agent-browser close` and reconnect
agent-browser tab
agent-browser snapshot -i
```
**Tips:**
- Set `VSCODE_SKIP_PRELAUNCH=1` to skip the compile step if you've already built: `VSCODE_SKIP_PRELAUNCH=1 ./scripts/code.sh --remote-debugging-port=9224` (from the repo root)
- Code OSS uses the default user data directory. Unlike VS Code Insiders, you don't typically need `--user-data-dir` since there's usually only one Code OSS instance running.
- If you see "Sent env to running instance. Terminating..." it means Code OSS is already running and forwarded your args to the existing instance. Quit Code OSS and relaunch with the flag, or use `--user-data-dir=/tmp/code-oss-debug` to force a new instance.
## Launching the Agents App (Agents Window)
The Agents app is a separate workbench mode launched with the `--agents` flag. It uses a dedicated user data directory to avoid conflicts with the main Code OSS instance.
```bash
cd <repo-root> # the root of your VS Code checkout
./scripts/code.sh --agents --remote-debugging-port=9224
```
Wait for the window to fully initialize, then connect:
```bash
# Wait for Agents app to start, retry until connected
for i in 1 2 3 4 5; do agent-browser connect 9224 2>/dev/null && break || sleep 3; done
# Verify you're connected to the right target (not about:blank)
agent-browser tab
agent-browser snapshot -i
```
**Tips:**
- The `--agents` flag launches the Agents workbench instead of the standard VS Code workbench.
- Set `VSCODE_SKIP_PRELAUNCH=1` to skip the compile step if you've already built.
## Launching VS Code Extensions for Debugging
To debug a VS Code extension via agent-browser, launch VS Code Insiders with `--extensionDevelopmentPath` and `--remote-debugging-port`. Use `--user-data-dir` to avoid conflicting with an already-running instance.
```bash
# Build the extension first
cd <extension-repo-root> # e.g., the root of your extension checkout
npm run compile
# Launch VS Code Insiders with the extension and CDP
code-insiders \
--extensionDevelopmentPath="<extension-repo-root>" \
--remote-debugging-port=9223 \
--user-data-dir=/tmp/vscode-ext-debug
# Wait for VS Code to start, retry until connected
for i in 1 2 3 4 5; do agent-browser connect 9223 2>/dev/null && break || sleep 3; done
# Verify you're connected to the right target (not about:blank)
# If `tab` shows the wrong target, run `agent-browser close` and reconnect
agent-browser tab
agent-browser snapshot -i
```
**Key flags:**
- `--extensionDevelopmentPath=<path>` — loads your extension from source (must be compiled first)
- `--remote-debugging-port=9223` — enables CDP (use 9223 to avoid conflicts with other apps on 9222)
- `--user-data-dir=<path>` — uses a separate profile so it starts a new process instead of sending to an existing VS Code instance
**Without `--user-data-dir`**, VS Code detects the running instance, forwards the args to it, and exits immediately — you'll see "Sent env to running instance. Terminating..." and CDP never starts.
## Restarting After Code Changes
**After making changes to Code OSS source code, you must restart to pick up the new build.** The workbench loads the compiled JavaScript at startup — changes are not hot-reloaded.
### Restart Workflow
1. **Rebuild** the changed code
2. **Kill** the running Code OSS instance
3. **Relaunch** with the same flags
```bash
# 1. Ensure your build is up to date.
# Normally you can skip a manual step here and let ./scripts/code.sh in step 3
# trigger the build when needed (or run `npm run watch` in another terminal).
# 2. Kill the Code OSS instance listening on the debug port (if running)
pids=$(lsof -t -i :9224)
if [ -n "$pids" ]; then
kill $pids
fi
# 3. Relaunch
./scripts/code.sh --remote-debugging-port=9224
# 4. Reconnect agent-browser
for i in 1 2 3 4 5; do agent-browser connect 9224 2>/dev/null && break || sleep 3; done
agent-browser tab
agent-browser snapshot -i
```
> **Tip:** If you're iterating frequently, run `npm run watch` in a separate terminal so compilation happens automatically. You still need to kill and relaunch Code OSS to load the new build.
## Interacting with Monaco Editor (Chat Input, Code Editors)
VS Code uses Monaco Editor for all text inputs including the Copilot Chat input. Monaco editors require specific agent-browser techniques — standard `click`, `fill`, and `keyboard type` commands may not work depending on the VS Code build.
### The Universal Pattern: Focus via Keyboard Shortcut + `press`
This works on **all** VS Code builds (Code OSS, Insiders, stable):
```bash
# 1. Open and focus the chat input with the keyboard shortcut
# macOS:
agent-browser press Control+Meta+i
# Linux / Windows:
agent-browser press Control+Alt+i
# 2. Type using individual press commands
agent-browser press H
agent-browser press e
agent-browser press l
agent-browser press l
agent-browser press o
agent-browser press Space # Use "Space" for spaces
agent-browser press w
agent-browser press o
agent-browser press r
agent-browser press l
agent-browser press d
# Verify text appeared (optional)
agent-browser eval '
(() => {
const sidebar = document.querySelector(".part.auxiliarybar");
const viewLines = sidebar.querySelectorAll(".interactive-input-editor .view-line");
return Array.from(viewLines).map(vl => vl.textContent).join("|");
})()'
# 3. Send the message (same on all platforms)
agent-browser press Enter
```
**Chat focus shortcut by platform:**
- **macOS:** `Ctrl+Cmd+I` → `agent-browser press Control+Meta+i`
- **Linux:** `Ctrl+Alt+I` → `agent-browser press Control+Alt+i`
- **Windows:** `Ctrl+Alt+I` → `agent-browser press Control+Alt+i`
This shortcut focuses the chat input and sets `document.activeElement` to a `DIV` with class `native-edit-context` — VS Code's native text editing surface that correctly processes key events from `agent-browser press`.
### `type @ref` — Works on Some Builds
On VS Code Insiders (extension debug mode), `type @ref` handles focus and input in one step:
```bash
agent-browser snapshot -i
# Look for: textbox "The editor is not accessible..." [ref=e62]
agent-browser type @e62 "Hello from George!"
```
> **Tip:** If `type @ref` silently drops text (the editor stays empty), the ref may be stale or the editor not yet ready. Re-snapshot to get a fresh ref and try again. You can verify text was entered using the snippet in "Verifying Text and Clearing" below.
However, **`type @ref` silently fails on Code OSS** — the command completes without error but no text appears. This also applies to `keyboard type` and `keyboard inserttext`. Always verify text appeared after typing, and fall back to the keyboard shortcut + `press` pattern if it didn't. The `press`-per-key approach works universally across all builds.
> **⚠️ Warning:** `keyboard type` can hang indefinitely in some focus states (e.g., after JS mouse events). If it doesn't return within a few seconds, interrupt it and fall back to `press` for individual keystrokes.
### Compatibility Matrix
| Method | VS Code Insiders | Code OSS |
|--------|-----------------|----------|
| `press` per key (after focus shortcut) | ✅ Works | ✅ Works |
| `type @ref` | ✅ Works | ❌ Silent fail |
| `keyboard type` (after focus) | ✅ Works | ❌ Silent fail |
| `keyboard inserttext` (after focus) | ✅ Works | ❌ Silent fail |
| `click @ref` | ❌ Blocked by overlay | ❌ Blocked by overlay |
| `fill @ref` | ❌ Element not visible | ❌ Element not visible |
### Fallback: Focus via JavaScript Mouse Events
If the keyboard shortcut doesn't work (e.g., chat panel isn't configured), you can focus the editor via JavaScript:
```bash
agent-browser eval '
(() => {
const inputPart = document.querySelector(".interactive-input-part");
const editor = inputPart.querySelector(".monaco-editor");
const rect = editor.getBoundingClientRect();
const x = rect.x + rect.width / 2;
const y = rect.y + rect.height / 2;
editor.dispatchEvent(new MouseEvent("mousedown", { bubbles: true, clientX: x, clientY: y }));
editor.dispatchEvent(new MouseEvent("mouseup", { bubbles: true, clientX: x, clientY: y }));
editor.dispatchEvent(new MouseEvent("click", { bubbles: true, clientX: x, clientY: y }));
return "activeElement: " + document.activeElement?.className;
})()'
# Then use press for each character
agent-browser press H
agent-browser press e
# ...
```
### Verifying Text and Clearing
```bash
# Verify text in the chat input
agent-browser eval '
(() => {
const sidebar = document.querySelector(".part.auxiliarybar");
const viewLines = sidebar.querySelectorAll(".interactive-input-editor .view-line");
return Array.from(viewLines).map(vl => vl.textContent).join("|");
})()'
# Clear the input (Select All + Backspace)
# macOS:
agent-browser press Meta+a
# Linux / Windows:
agent-browser press Control+a
# Then delete:
agent-browser press Backspace
```
### Screenshot Tips for VS Code
On ultrawide monitors, the chat sidebar may be in the far-right corner of the CDP screenshot. Options:
- Use `agent-browser screenshot --full` to capture the entire window
- Use element screenshots: `agent-browser screenshot ".part.auxiliarybar" sidebar.png`
- Use `agent-browser screenshot --annotate` to see labeled element positions
- Maximize the sidebar first: click the "Maximize Secondary Side Bar" button
> **macOS:** If `agent-browser screenshot` returns "Permission denied", your terminal needs Screen Recording permission. Grant it in **System Settings → Privacy & Security → Screen Recording**. As a fallback, use the `eval` verification snippet to confirm text was entered — this doesn't require screen permissions.
## Troubleshooting
### "Connection refused" or "Cannot connect"
- Make sure Code OSS was launched with `--remote-debugging-port=NNNN`
- If Code OSS was already running, quit and relaunch with the flag
- Check that the port isn't in use by another process:
- macOS / Linux: `lsof -i :9224`
- Windows: `netstat -ano | findstr 9224`
### Elements not appearing in snapshot
- VS Code uses multiple webviews. Use `agent-browser tab` to list targets and switch to the right one
- Use `agent-browser snapshot -i -C` to include cursor-interactive elements (divs with onclick handlers)
### Cannot type in Monaco Editor inputs
- Use `agent-browser press` for individual keystrokes after focusing the input. Focus the chat input with the keyboard shortcut (macOS: `Ctrl+Cmd+I`, Linux/Windows: `Ctrl+Alt+I`).
- `type @ref`, `keyboard type`, and `keyboard inserttext` work on VS Code Insiders but **silently fail on Code OSS** — they complete without error but no text appears. The `press`-per-key approach works universally.
- See the "Interacting with Monaco Editor" section above for the full compatibility matrix.
## Cleanup
**Always kill the Code OSS instance when you're done.** Code OSS is a full Electron app that consumes significant memory (often 1–4 GB+). Leaving it running wastes resources and holds the CDP port.
```bash
# Disconnect agent-browser
agent-browser close
# Kill the Code OSS instance listening on the debug port (if running)
# macOS / Linux:
pids=$(lsof -t -i :9224)
if [ -n "$pids" ]; then
kill $pids
fi
# Windows:
# taskkill /F /PID <PID>
# Or use Task Manager to end "Code - OSS"
```
Verify it's gone:
```bash
# Confirm no process is listening on the debug port
lsof -i :9224 # should return nothing
```
================================================
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
accessibilityinsights:
lastModifiedDate: 2025-06-02
binary:
credscan:
lastModifiedDate: 2025-02-04
binskim:
lastModifiedDate: 2025-02-04
spotbugs:
lastModifiedDate: 2025-02-04
================================================
FILE: .config/configuration.winget
================================================
# 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
# Requires elevation for the set operation (i.e., for installing the package)
securityContext: elevated
settings:
id: Git.Git
source: winget
- resource: Microsoft.WinGet.DSC/WinGetPackage
id: npm
directives:
description: Install NodeJS version 20
# Requires elevation for the set operation (i.e., for installing the package)
securityContext: elevated
settings:
id: OpenJS.NodeJS.LTS
version: "20.14.0"
source: winget
- resource: Microsoft.WinGet.DSC/WinGetPackage
directives:
description: Install Python 3.10
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)
# Requires elevation for the set operation (i.e., for installing the package)
securityContext: elevated
settings:
id: Microsoft.VisualStudio.2022.BuildTools
source: winget
- resource: Microsoft.VisualStudio.DSC/VSComponents
dependsOn:
- vsPackage
directives:
description: Install required VS workloads
# Requires elevation for the get and set operations
securityContext: elevated
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: .config/guardian/.gdnsuppress
================================================
{
"hydrated": true,
"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-01-28 06:29:05Z",
"lastUpdatedDate": "2025-08-25 17:55:20Z"
}
},
"results": {
"6216d3477ad4f56cb4ec316a9aaff02e9530a10d56469a4ef4063b8d02fe344b": {
"signature": "6216d3477ad4f56cb4ec316a9aaff02e9530a10d56469a4ef4063b8d02fe344b",
"alternativeSignatures": [
"46ad210995b2ff199f3bee5f271938a4251ed7a60058041ace1beaa53e36b51c"
],
"target": "file:///D:/a/_work/1/vscode-server-win32-x64/node.exe",
"memberOf": [
"default"
],
"tool": "binskim",
"ruleId": "BA2008",
"createdDate": "2025-08-25 17:54:06Z"
},
"b8a4702fb4b855719e5e5033c3b629fbe6267d516ce8a18bd8f3be3b9962434b": {
"signature": "b8a4702fb4b855719e5e5033c3b629fbe6267d516ce8a18bd8f3be3b9962434b",
"alternativeSignatures": [
"52d986be88f1c5696fc87d7794279d02f5084c645440e2dd2c3b5a2176b6bf52"
],
"target": "file:///D:/a/_work/1/vscode-server-win32-x64-web/node.exe",
"memberOf": [
"default"
],
"tool": "binskim",
"ruleId": "BA2008",
"createdDate": "2025-08-25 17:54:06Z"
},
"4dbc45d0405de2e83d53f10227e36b2a9d15eceb2c5e6934da5c4a1bffbfad89": {
"signature": "4dbc45d0405de2e83d53f10227e36b2a9d15eceb2c5e6934da5c4a1bffbfad89",
"alternativeSignatures": [
"b6bab85ba5e97bc4e6ff2e8a7913cb9f4f3346f7bda435d176e0b1e3cfb883cf"
],
"target": "file:///D:/a/_work/1/vscode-server-win32-arm64/node.exe",
"memberOf": [
"default"
],
"tool": "binskim",
"ruleId": "BA2008",
"createdDate": "2025-08-25 17:45:35Z"
},
"024ff37af329b63d2d9c83784cc071badf63b7729e3dd0969ab921d2f04d8e09": {
"signature": "024ff37af329b63d2d9c83784cc071badf63b7729e3dd0969ab921d2f04d8e09",
"alternativeSignatures": [
"b46b7d6ed331f3e62eff23c57d3a074f76ef618f108929851065904200f5a572"
],
"target": "file:///D:/a/_work/1/vscode-server-win32-arm64-web/node.exe",
"memberOf": [
"default"
],
"tool": "binskim",
"ruleId": "BA2008",
"createdDate": "2025-08-25 17:45:35Z"
}
}
}
================================================
FILE: .devcontainer/Dockerfile
================================================
FROM mcr.microsoft.com/devcontainers/typescript-node:22-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:": {
"version": "1.2.8",
"resolved": "ghcr.io/devcontainers/features/desktop-lite@sha256:14ac23fd59afab939e6562ba6a1f42a659a805e4c574a1be23b06f28eb3b0b71",
"integrity": "sha256:14ac23fd59afab939e6562ba6a1f42a659a805e4c574a1be23b06f28eb3b0b71"
},
"ghcr.io/devcontainers/features/rust:": {
"version": "1.5.0",
"resolved": "ghcr.io/devcontainers/features/rust@sha256:0c55e65f2e3df736e478f26ee4d5ed41bae6b54dac1318c443e31444c8ed283c",
"integrity": "sha256:0c55e65f2e3df736e478f26ee4d5ed41bae6b54dac1318c443e31444c8ed283c"
}
}
}
================================================
FILE: .devcontainer/devcontainer.json
================================================
{
"name": "Code - OSS",
"build": {
"dockerfile": "Dockerfile"
},
"features": {
"ghcr.io/devcontainers/features/desktop-lite:": {},
"ghcr.io/devcontainers/features/rust:": {}
},
"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/mermaid-chat-features/chat-webview-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/package-manager/node-maintainer/**
**/extensions/vscode-api-tests/testWorkspace/**
**/extensions/vscode-api-tests/testWorkspace2/**
**/fixtures/**
**/node_modules/**
**/out/**
**/out-*/**
**/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
**/test/unit/assert.js
**/test/automation/out/**
**/typings/**
**/.build/**
!.vscode
================================================
FILE: .eslint-plugin-local/README.md
================================================
# Custom ESLint rules
We use a set of custom [ESLint](http://eslint.org) to enforce repo specific coding rules and styles. These custom rules are run in addition to many standard ESLint rules we enable in the project. Some example custom rules includes:
- Enforcing proper code layering
- Preventing checking in of `test.only(...)`
- Enforcing conventions in `vscode.d.ts`
Custom rules are mostly used for enforcing or banning certain coding patterns. We tend to leave stylistic choices up to area owners unless there's a good reason to enforce something project wide.
This doc provides a brief overview of how these rules are setup and how you can add a new one.
# Resources
- [ESLint rules](https://eslint.org/docs/latest/extend/custom-rules) — General documentation about writing eslint rules
- [TypeScript ASTs and eslint](https://typescript-eslint.io/blog/asts-and-typescript-eslint/) — Look at how ESLint works with TS programs
- [ESTree selectors](https://eslint.org/docs/latest/extend/selectors) — Info about the selector syntax rules use to target specific nodes in an AST. Works similarly to css selectors.
- [TypeScript ESLint playground](https://typescript-eslint.io/play/#showAST=es) — Useful tool for figuring out the structure of TS programs and debugging custom rule selectors
# Custom Rule Configuration
Custom rules are defined in the `.eslint-plugin-local` folder. Each rule is defined in its own TypeScript file. These follow the naming convention:
- `code-RULE-NAME.ts` — General rules that apply to the entire repo.
- `vscode-dts-RULE-NAME.ts` — Rules that apply just to `vscode.d.ts`.
These rules are then enabled in the `eslint.config.js` file. This is the main eslint configuration for our repo. It defines a set of file scopes which rules should apply to files in those scopes.
For example, here's a configuration that enables the no `test.only` rule in all `*.test.ts` files in the VS Code repo:
```ts
{
// Define which files these rules apply to
files: [
'**/*.test.ts'
],
languageOptions: { parser: tseslint.parser, },
plugins: {
'local': pluginLocal,
},
rules: {
// Enable the rule from .eslint-plugin-local/code-no-test-only.ts
'local/code-no-test-only': 'error',
}
}
```
# Creating a new custom rule
This walks through the steps to create a new eslint rule:
1. Create a new rule file under `.eslint-plugin-local`. Generally you should call it `code-YOUR-RULE-NAME.ts`, for example, `.eslint-plugin-local/code-no-not-null-assertions-on-undefined-values.ts`
2. In this file, add the rule. Here's a template:
```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 YourRuleName implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
customMessageName: 'message text shown in errors/warnings',
},
schema: false,
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
return {
[SELECTOR]: (node: any) => {
// Report errors if needed
return context.report({
node,
messageId: 'customMessageName'
});
}
};
}
};
```
- Update the name of the class to match the name of your rule
- Add message entries for any errors you want to report
- Update `SELECTOR` with the [ESTree selector](https://eslint.org/docs/latest/extend/selectors) needed to target the nodes you are interested in. Use the [TypeScript ESLint playground](https://typescript-eslint.io/play/#showAST=es) to figure out which nodes you need and debug selectors
3. Register the rule in `eslint.config.js`
Generally this is just turning on the rule in the rule list like so:
```js
rules: {
// Name should match file name
'local/code-no-not-null-assertions-on-undefined-values': 'warn',
...
}
```
Rules can also take custom arguments. For example, here's how we can pass arguments to a custom rule in the `eslint.config.js`:
```
rules: {
'local/code-no-not-null-assertions-on-undefined-values': ['warn', { testsOk: true }],
...
}
```
In these cases make sure to update the `meta.schema` property on your rule with the JSON schema for the arguments. You can access these arguments using `context.options` in the rule `create` function
## Adding fixes to custom rules
Fixes are a useful way to mechanically fix basic linting issues, such as auto inserting semicolons. These fixes typically work at the AST level, so they are a more reliable way to perform bulk fixes compared to find/replaces.
To add a fix for a custom rule:
1. On the `meta` for your rule, add `fixable: 'code'`
2. When reporting an error in the rule, also include a `fix`. This is a function that takes a `fixer` argument and returns one or more fixes.
See the [Double quoted to single quoted string covert fix](https://github.com/microsoft/vscode/blob/b074375e1884ae01033967bf0bbceeaa4795354a/.eslint-plugin-local/code-no-unexternalized-strings.ts#L128) for an example. The ESLint docs also have [details on adding fixes and the fixer api](https://eslint.org/docs/latest/extend/custom-rules#applying-fixes)
The fixes can be run using `npx eslint --fix` in the VS Code repo
================================================
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 type * as ESTree from 'estree';
import { readFileSync } from 'fs';
import { join } from 'path';
export default 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 packageJson = JSON.parse(readFileSync(join(import.meta.dirname, '../package.json'), 'utf-8'));
const { dependencies, optionalDependencies } = packageJson;
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: ESTree.Literal & { parent?: ESTree.Node & { importKind?: string } }) => {
if (typeof node.value !== 'string') {
return;
}
if (node.parent?.type === 'ImportDeclaration' && 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';
import type * as ESTree from 'estree';
export default 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: ESTree.PropertyDefinition) => {
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 type * as estree from 'estree';
export default 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 = context.options[0] as { exclude: string[] };
const needle = context.getFilename().replace(/\\/g, '/');
if (config.exclude.some((e) => needle.endsWith(e))) {
return {};
}
return {
[`Program > ExpressionStatement > CallExpression[callee.name='suite']`]: (node: estree.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.ts';
const REPO_ROOT = path.normalize(path.join(import.meta.dirname, '../'));
interface ConditionalPattern {
when?: 'hasBrowser' | 'hasNode' | 'hasElectron' | 'test';
pattern: string;
}
interface RawImportPatternsConfig {
target: string;
layer?: 'common' | 'worker' | 'browser' | 'electron-browser' | '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 !!((option as LayerAllowRule).when && (option as LayerAllowRule).allow);
}
interface ImportPatternsConfig {
target: string;
restrictions: string[];
}
export default 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 = context.options as RawOption[];
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-browser' | '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-browser', deps: orSegment(['common', 'browser', 'electron-browser']), 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: restrictions.filter(r => typeof r === 'string') as 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.ts';
type Config = {
allowed: Set<string>;
disallowed: Set<string>;
};
export default 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 = context.options[0] as Record<string, string[]>;
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';
import type * as ESTree from 'estree';
export default 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(import.meta.dirname), context.getFilename());
if (!fileRelativePath.endsWith('/')) {
fileRelativePath += '/';
}
const ruleArgs = context.options[0] as Record<string, string[]>;
const matchingKey = Object.keys(ruleArgs).find(key => fileRelativePath.startsWith(key) || minimatch(fileRelativePath, key));
if (!matchingKey) {
// nothing
return {};
}
const restrictedFunctions = ruleArgs[matchingKey];
return {
FunctionDeclaration: (node: ESTree.FunctionDeclaration & { parent?: ESTree.Node }) => {
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: ESTree.ExportNamedDeclaration & { parent?: ESTree.Node }) {
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 type * as ESTree from 'estree';
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 default new class MustUseResults implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
schema: false
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
const config = context.options[0] as { message: string; functions: string[] }[];
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: ESTree.Node) => {
const callExpression = node as TSESTree.CallExpression;
if (!VALID_USES.has(callExpression.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 { TSESTree } from '@typescript-eslint/utils';
import * as eslint from 'eslint';
import type * as ESTree from 'estree';
export default new class NoAsyncSuite implements eslint.Rule.RuleModule {
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
function doesCallSuperDispose(node: TSESTree.MethodDefinition) {
if (!node.override) {
return;
}
const body = context.getSourceCode().getText(node as ESTree.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-accessor-after-await.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';
/**
* Lint rule that prevents using a `ServicesAccessor` after an `await` expression.
*
* The accessor returned by `IInstantiationService.invokeFunction` is only valid
* synchronously during the invocation of the target function. Calling
* `accessor.get(...)` after any `await` is a bug because the accessor will have
* been invalidated.
*
* Detection strategies:
* 1. `invokeFunction` / `invokeWithinContext` calls — first param of the callback
* is the accessor.
* 2. Functions/methods with a parameter typed as `ServicesAccessor` — these are
* always called through `invokeFunction` at runtime (e.g. `Action2.run`,
* `ICommandHandler`).
*/
export default new class NoAccessorAfterAwait implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
accessorAfterAwait: 'ServicesAccessor \'{{name}}\' must not be used after \'await\'. The accessor is only valid synchronously. Extract needed services before any async operation.',
},
schema: false,
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
return {
// Strategy 1: invokeFunction / invokeWithinContext calls
'CallExpression': (node: eslint.Rule.Node) => {
const callExpression = node as unknown as TSESTree.CallExpression;
if (!isInvokeFunctionCall(callExpression.callee)) {
return;
}
const functionArg = callExpression.arguments.find(arg =>
arg.type === 'ArrowFunctionExpression' || arg.type === 'FunctionExpression'
) as TSESTree.ArrowFunctionExpression | TSESTree.FunctionExpression | undefined;
if (!functionArg || functionArg.params.length === 0) {
return;
}
const accessorName = getParamName(functionArg.params[0]);
if (!accessorName) {
return;
}
checkForAccessorAfterAwait(functionArg, accessorName, context);
},
// Strategy 2: functions/methods with a `ServicesAccessor` typed parameter
'FunctionDeclaration': (node: eslint.Rule.Node) => {
checkFunctionWithAccessorParam(node as unknown as TSESTree.FunctionDeclaration, context);
},
'FunctionExpression': (node: eslint.Rule.Node) => {
checkFunctionWithAccessorParam(node as unknown as TSESTree.FunctionExpression, context);
},
'ArrowFunctionExpression': (node: eslint.Rule.Node) => {
checkFunctionWithAccessorParam(node as unknown as TSESTree.ArrowFunctionExpression, context);
},
};
}
};
function checkFunctionWithAccessorParam(
fn: TSESTree.FunctionDeclaration | TSESTree.FunctionExpression | TSESTree.ArrowFunctionExpression,
context: eslint.Rule.RuleContext
) {
for (const param of fn.params) {
if (param.type === 'Identifier' && hasServicesAccessorAnnotation(param)) {
// Skip if this function is the direct callback of an invokeFunction call
// (already handled by strategy 1)
if (isDirectInvokeFunctionCallback(fn)) {
return;
}
checkForAccessorAfterAwait(fn, param.name, context);
return;
}
}
}
/**
* Check whether a function node is the direct callback argument of an
* `invokeFunction` / `invokeWithinContext` call.
*/
function isDirectInvokeFunctionCallback(
fn: TSESTree.FunctionDeclaration | TSESTree.FunctionExpression | TSESTree.ArrowFunctionExpression
): boolean {
const parent = fn.parent;
if (parent?.type === 'CallExpression' && isInvokeFunctionCall(parent.callee)) {
return parent.arguments.some(arg => arg === fn);
}
return false;
}
function hasServicesAccessorAnnotation(param: TSESTree.Identifier): boolean {
const annotation = param.typeAnnotation;
if (!annotation || annotation.type !== 'TSTypeAnnotation') {
return false;
}
const typeNode = annotation.typeAnnotation;
if (typeNode.type === 'TSTypeReference' && typeNode.typeName.type === 'Identifier') {
return typeNode.typeName.name === 'ServicesAccessor';
}
return false;
}
function checkForAccessorAfterAwait(
fn: TSESTree.ArrowFunctionExpression | TSESTree.FunctionExpression | TSESTree.FunctionDeclaration,
accessorName: string,
context: eslint.Rule.RuleContext
) {
let sawAwait = false;
const visited = new Set<TSESTree.Node>();
function walk(node: TSESTree.Node) {
if (visited.has(node)) {
return;
}
visited.add(node);
// Don't descend into nested function scopes — they have their own
// async context and the accessor name may be shadowed.
if (node !== fn &&
(node.type === 'ArrowFunctionExpression' ||
node.type === 'FunctionExpression' ||
node.type === 'FunctionDeclaration')) {
return;
}
if (node.type === 'AwaitExpression') {
// Walk the argument first (it is evaluated before the await suspends)
if (node.argument) {
walk(node.argument);
}
sawAwait = true;
return;
}
if (isAccessorUsage(node, accessorName) && sawAwait) {
context.report({
node: node as unknown as eslint.Rule.Node,
messageId: 'accessorAfterAwait',
data: { name: accessorName },
});
return;
}
// Branch-aware walking: isolate await state across branches so an
// await in one branch does not taint the other branch.
if (node.type === 'IfStatement') {
walk(node.test);
const beforeBranches = sawAwait;
// Walk consequent
walk(node.consequent);
const awaitAfterConsequent = sawAwait;
const consequentExits = blockAlwaysExits(node.consequent);
// Restore before walking alternate
sawAwait = beforeBranches;
if (node.alternate) {
walk(node.alternate);
}
const awaitAfterAlternate = sawAwait;
const alternateExits = node.alternate ? blockAlwaysExits(node.alternate) : false;
// Determine sawAwait for code after the if-statement.
// If a branch always exits (return/throw), code after is only
// reachable from the other branch.
if (consequentExits && alternateExits) {
// Both exit — code after is unreachable, keep conservative
sawAwait = awaitAfterConsequent || awaitAfterAlternate;
} else if (consequentExits) {
// Only reachable through alternate path
sawAwait = awaitAfterAlternate;
} else if (alternateExits) {
// Only reachable through consequent path
sawAwait = awaitAfterConsequent;
} else {
sawAwait = awaitAfterConsequent || awaitAfterAlternate;
}
return;
}
if (node.type === 'ConditionalExpression') {
walk(node.test);
const beforeBranches = sawAwait;
walk(node.consequent);
const awaitAfterConsequent = sawAwait;
sawAwait = beforeBranches;
walk(node.alternate);
sawAwait = sawAwait || awaitAfterConsequent;
return;
}
if (node.type === 'SwitchStatement') {
walk(node.discriminant);
const beforeCases = sawAwait;
let anyCaseHadAwait = false;
for (const c of node.cases) {
sawAwait = beforeCases;
if (c.test) { walk(c.test); }
c.consequent.forEach(walk);
anyCaseHadAwait = anyCaseHadAwait || sawAwait;
}
sawAwait = anyCaseHadAwait;
return;
}
if (node.type === 'TryStatement') {
const beforeTry = sawAwait;
walk(node.block);
const awaitAfterTry = sawAwait;
// Catch: an exception may have been thrown before or after an await
// in the try block, so we conservatively use the before-try state.
sawAwait = beforeTry;
if (node.handler) { walk(node.handler.body); }
const awaitAfterCatch = sawAwait;
sawAwait = awaitAfterTry || awaitAfterCatch;
if (node.finalizer) { walk(node.finalizer); }
return;
}
// `for await...of` suspends on each iteration
if (node.type === 'ForOfStatement' && node.await) {
walkChildren(node, (child) => {
if (child === node.right) {
walk(child);
sawAwait = true;
} else {
walk(child);
}
});
return;
}
// Walk children in source order for all other node types
walkChildren(node, walk);
}
if (fn.body) {
walk(fn.body);
}
}
/**
* Check whether a statement or block always exits the current function scope
* via `return` or `throw`. Note: `break`/`continue` only exit loops, not the
* enclosing function, so they are intentionally excluded.
*/
function blockAlwaysExits(node: TSESTree.Node): boolean {
if (node.type === 'ReturnStatement' || node.type === 'ThrowStatement') {
return true;
}
if (node.type === 'BlockStatement' && node.body.length > 0) {
return blockAlwaysExits(node.body[node.body.length - 1]);
}
if (node.type === 'IfStatement') {
return blockAlwaysExits(node.consequent) &&
!!node.alternate && blockAlwaysExits(node.alternate);
}
return false;
}
/**
* Check if a node is a usage of the accessor — either `accessor.get(...)` or
* just a reference to the accessor identifier (e.g. passing it to another fn).
*/
function isAccessorUsage(node: TSESTree.Node, accessorName: string): boolean {
// accessor.get(...)
if (node.type === 'CallExpression' &&
node.callee.type === 'MemberExpression' &&
node.callee.object.type === 'Identifier' &&
node.callee.object.name === accessorName) {
return true;
}
// Passing accessor as an argument: someFunction(accessor)
if (node.type === 'Identifier' && node.name === accessorName) {
// Only flag when used as a call argument or assignment, not in
// the function's own parameter list
const parent = node.parent;
if (parent?.type === 'CallExpression' && parent.arguments.includes(node)) {
return true;
}
}
return false;
}
function walkChildren(node: TSESTree.Node, visit: (child: TSESTree.Node) => void) {
switch (node.type) {
case 'BlockStatement':
node.body.forEach(visit);
break;
case 'ExpressionStatement':
visit(node.expression);
break;
case 'VariableDeclaration':
node.declarations.forEach(decl => {
if (decl.init) { visit(decl.init); }
});
break;
case 'CallExpression':
visit(node.callee);
node.arguments.forEach(visit);
break;
case 'MemberExpression':
visit(node.object);
if (node.computed) { visit(node.property); }
break;
case 'ReturnStatement':
if (node.argument) { visit(node.argument); }
break;
case 'BinaryExpression':
case 'LogicalExpression':
visit(node.left);
visit(node.right);
break;
case 'AssignmentExpression':
visit(node.left);
visit(node.right);
break;
case 'TemplateLiteral':
node.expressions.forEach(visit);
break;
case 'TaggedTemplateExpression':
visit(node.tag);
visit(node.quasi);
break;
case 'ArrayExpression':
node.elements.forEach(e => { if (e) { visit(e); } });
break;
case 'ObjectExpression':
node.properties.forEach(p => {
if (p.type === 'Property') {
visit(p.value);
} else {
visit(p);
}
});
break;
case 'SpreadElement':
visit(node.argument);
break;
case 'UnaryExpression':
case 'UpdateExpression':
visit(node.argument);
break;
case 'ForStatement':
if (node.init) { visit(node.init); }
if (node.test) { visit(node.test); }
if (node.update) { visit(node.update); }
visit(node.body);
break;
case 'ForInStatement':
visit(node.left);
visit(node.right);
visit(node.body);
break;
case 'ForOfStatement':
visit(node.left);
visit(node.right);
visit(node.body);
break;
case 'WhileStatement':
case 'DoWhileStatement':
visit(node.test);
visit(node.body);
break;
case 'ThrowStatement':
if (node.argument) { visit(node.argument); }
break;
case 'NewExpression':
visit(node.callee);
node.arguments.forEach(visit);
break;
case 'SequenceExpression':
node.expressions.forEach(visit);
break;
case 'TSAsExpression':
case 'TSNonNullExpression':
visit(node.expression);
break;
// Leaf / unhandled nodes — nothing to traverse
default:
break;
}
}
function getParamName(param: TSESTree.Parameter): string | null {
if (param.type === 'Identifier') {
return param.name;
}
return null;
}
const invokeFunctionNames = new Set(['invokeFunction', 'invokeWithinContext']);
function isInvokeFunctionCall(callee: TSESTree.Expression): boolean {
// object.invokeFunction(...)
if (callee.type === 'MemberExpression' &&
callee.property.type === 'Identifier' &&
invokeFunctionNames.has(callee.property.name)) {
return true;
}
// Standalone invokeFunction(...) — unlikely but handle it
if (callee.type === 'Identifier' && invokeFunctionNames.has(callee.name)) {
return true;
}
return false;
}
================================================
FILE: .eslint-plugin-local/code-no-any-casts.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 default new class NoAnyCasts implements eslint.Rule.RuleModule {
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
return {
'TSTypeAssertion[typeAnnotation.type="TSAnyKeyword"], TSAsExpression[typeAnnotation.type="TSAnyKeyword"]': (node: TSESTree.TSTypeAssertion | TSESTree.TSAsExpression) => {
context.report({
node,
message: `Avoid casting to 'any' type. Consider using a more specific type or type guards for better type safety.`
});
}
};
}
};
================================================
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 type * as ESTree from 'estree';
import { TSESTree } from '@typescript-eslint/utils';
export default new class NoDangerousTypeAssertions implements eslint.Rule.RuleModule {
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
return {
// Disallow type assertions on object literals: <T>{ ... } or {} as T
['TSTypeAssertion > ObjectExpression, TSAsExpression > ObjectExpression']: (node: ESTree.ObjectExpression) => {
const objectNode = node as TSESTree.ObjectExpression;
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-declare-const-enum.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';
/**
* Disallows `declare const enum` declarations. esbuild does not inline
* `declare const enum` values, leaving the enum identifier in the output
* which causes a ReferenceError at runtime.
*
* Use `const enum` (without `declare`) instead.
*
* See https://github.com/evanw/esbuild/issues/4394
*/
export default new class NoDeclareConstEnum implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
noDeclareConstEnum: '"declare const enum" is not supported by esbuild. Use "const enum" instead. See https://github.com/evanw/esbuild/issues/4394',
},
schema: false,
fixable: 'code',
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
return {
TSEnumDeclaration(node: any) {
if (node.const && node.declare) {
context.report({
node,
messageId: 'noDeclareConstEnum',
fix: (fixer) => {
// Remove "declare " from "declare const enum"
const sourceCode = context.sourceCode;
const text = sourceCode.getText(node);
const declareIndex = text.indexOf('declare');
if (declareIndex !== -1) {
return fixer.removeRange([
node.range[0] + declareIndex,
node.range[0] + declareIndex + 'declare '.length
]);
}
return null;
}
});
}
}
};
}
};
================================================
FILE: .eslint-plugin-local/code-no-deep-import-of-internal.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.ts';
export default new class implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
noDeepImportOfInternal: 'No deep import of internal modules allowed! Use a re-export from a non-internal module instead. Internal modules can only be imported by direct parents (any module in {{parentDir}}).'
},
docs: {
url: 'https://github.com/microsoft/vscode/wiki/Source-Code-Organization'
},
schema: [
{
type: 'object',
additionalProperties: {
type: 'boolean'
}
}
]
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
const patterns = context.options[0] as Record<string, boolean>;
const internalModulePattern = Object.entries(patterns).map(([key, v]) => v ? key : undefined).filter((v): v is string => !!v);
const allowedPatterns = Object.entries(patterns).map(([key, v]) => !v ? key : undefined).filter((v): v is string => !!v);
return createImportRuleListener((node, path) => {
const importerModuleDir = dirname(context.filename);
if (path[0] === '.') {
path = join(importerModuleDir, path);
}
const importedModulePath = path;
const importerDirParts = splitParts(importerModuleDir);
const importedModuleParts = splitParts(importedModulePath);
for (let i = 0; i < importedModuleParts.length; i++) {
if (internalModulePattern.some(p => importedModuleParts[i].match(p)) && allowedPatterns.every(p => !importedModuleParts[i].match(p))) {
const importerDirJoined = importerDirParts.join('/');
const expectedParentDir = importedModuleParts.slice(0, i).join('/');
if (!importerDirJoined.startsWith(expectedParentDir)) {
context.report({
node,
messageId: 'noDeepImportOfInternal',
data: {
parentDir: expectedParentDir
}
});
return;
}
}
}
});
}
};
function splitParts(path: string): string[] {
return path.split(/\\|\//);
}
================================================
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 default 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-http-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 { normalize } from 'path';
import minimatch from 'minimatch';
import { createImportRuleListener } from './utils.ts';
const restrictedModules = new Set(['http', 'https']);
const REPO_ROOT = normalize(`${import.meta.dirname}/..`);
export default new class implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
notAllowed: 'Importing \'{{module}}\' is only allowed as a type import (`import type ...`) to prevent startup performance regressions as these modules are slow to load. Use dynamic `import(\'{{module}}\')` for runtime access.'
},
schema: {
type: 'array',
items: {
type: 'object',
properties: {
target: {
type: 'string',
description: 'A glob pattern for files to check'
}
},
additionalProperties: false,
required: ['target']
}
}
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
const targets = (context.options as { target: string }[]).map(o => o.target);
if (targets.length > 0) {
const relativeFilename = normalize(context.getFilename()).substring(REPO_ROOT.length + 1).replace(/\\/g, '/');
const matched = targets.some(pattern => minimatch(relativeFilename, pattern));
if (!matched) {
return {}; // file is not covered by any target pattern
}
}
return createImportRuleListener((node, path) => {
if (!restrictedModules.has(path)) {
return;
}
const parent = node.parent;
if (!parent) {
return;
}
// Allow: import type { ... } from 'http'
// Allow: import type * as http from 'http'
if (parent.type === TSESTree.AST_NODE_TYPES.ImportDeclaration && parent.importKind === 'type') {
return;
}
// Allow: export type { ... } from 'http'
if ('exportKind' in parent && parent.exportKind === 'type') {
return;
}
context.report({
loc: parent.loc,
messageId: 'notAllowed',
data: {
module: path
}
});
});
}
};
================================================
FILE: .eslint-plugin-local/code-no-icons-in-localized-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 } from '@typescript-eslint/utils';
/**
* Prevents theme icon syntax `$(iconName)` from appearing inside localized
* string arguments. Localizers may translate or corrupt the icon syntax,
* breaking rendering. Icon references should be kept outside the localized
* string - either prepended via concatenation or passed as a placeholder
* argument.
*
* Examples:
* ❌ localize('key', "$(gear) Settings")
* ✅ '$(gear) ' + localize('key', "Settings")
* ✅ localize('key', "Like {0}", '$(gear)')
*
* ❌ nls.localize('key', "$(loading~spin) Loading...")
* ✅ '$(loading~spin) ' + nls.localize('key', "Loading...")
*/
export default new class NoIconsInLocalizedStrings implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
noIconInLocalizedString: 'Theme icon syntax $(…) should not appear inside localized strings. Move it outside the localize call or pass it as a placeholder argument.'
},
docs: {
description: 'Prevents $(icon) theme icon syntax inside localize() string arguments',
},
type: 'problem',
schema: false,
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
// Matches $(iconName) or $(iconName~modifier) but not escaped \$(...)
const iconPattern = /(?<!\\)\$\([a-zA-Z][\w~-]*\)/;
function isLocalizeCall(callee: TSESTree.CallExpression['callee']): { isLocalize: boolean; messageArgIndex: number } {
// Direct localize('key', "message", ...) or localize2('key', "message", ...)
if (callee.type === 'Identifier' && (callee.name === 'localize' || callee.name === 'localize2')) {
return { isLocalize: true, messageArgIndex: 1 };
}
// nls.localize('key', "message", ...) or *.localize(...)
if (callee.type === 'MemberExpression' && callee.property.type === 'Identifier' && callee.property.name === 'localize') {
return { isLocalize: true, messageArgIndex: 1 };
}
return { isLocalize: false, messageArgIndex: -1 };
}
function getStringValue(node: TSESTree.Node): string | undefined {
if (node.type === 'Literal' && typeof node.value === 'string') {
return node.value;
}
if (node.type === 'TemplateLiteral' && node.expressions.length === 0 && node.quasis.length === 1) {
return node.quasis[0].value.cooked ?? undefined;
}
return undefined;
}
function checkCallExpression(node: TSESTree.CallExpression) {
const { isLocalize, messageArgIndex } = isLocalizeCall(node.callee);
if (!isLocalize) {
return;
}
// The first argument may be a string key or an object { key, comment }.
// Adjust the message argument index if the first arg is an object.
let actualMessageArgIndex = messageArgIndex;
const firstArg = node.arguments[0];
if (firstArg && firstArg.type === 'ObjectExpression') {
// localize({ key: '...', comment: [...] }, "message", ...)
actualMessageArgIndex = 1;
}
const messageArg = node.arguments[actualMessageArgIndex];
if (!messageArg) {
return;
}
const messageValue = getStringValue(messageArg);
if (messageValue !== undefined && iconPattern.test(messageValue)) {
context.report({
node: messageArg,
messageId: 'noIconInLocalizedString'
});
}
}
return {
CallExpression: (node: any) => checkCallExpression(node as TSESTree.CallExpression)
};
}
};
================================================
FILE: .eslint-plugin-local/code-no-in-operator.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';
import { TSESTree } from '@typescript-eslint/utils';
/**
* Disallows the use of the `in` operator in TypeScript code, except within
* type predicate functions (functions with `arg is Type` return types).
*
* The `in` operator can lead to runtime errors and type safety issues.
* Consider using Object.hasOwn(), hasOwnProperty(), or other safer patterns.
*
* Exception: Type predicate functions are allowed to use the `in` operator
* since they are the standard way to perform runtime type checking.
*/
export default new class NoInOperator implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
noInOperator: 'The "in" operator should not be used. Use type discriminator properties and classes instead or the `hasKey`-utility.',
},
schema: false,
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
function checkInOperator(inNode: ESTree.BinaryExpression) {
const node = inNode as TSESTree.BinaryExpression;
// Check if we're inside a type predicate function
const ancestors = context.sourceCode.getAncestors(node as ESTree.Node);
for (const ancestor of ancestors) {
if (ancestor.type === 'FunctionDeclaration' ||
ancestor.type === 'FunctionExpression' ||
ancestor.type === 'ArrowFunctionExpression') {
// Check if this function has a type predicate return type
// Type predicates have the form: `arg is SomeType`
if ((ancestor as { returnType?: any }).returnType?.typeAnnotation?.type === 'TSTypePredicate') {
// This is a type predicate function, allow the "in" operator
return;
}
}
}
context.report({
node,
messageId: 'noInOperator'
});
}
return {
['BinaryExpression[operator="in"]']: checkInOperator,
};
}
};
================================================
FILE: .eslint-plugin-local/code-no-localization-template-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';
/**
* Prevents the use of template literals in localization function calls.
*
* vscode.l10n.t() and nls.localize() cannot handle string templating.
* Use placeholders instead: vscode.l10n.t('Message {0}', value)
*
* Examples:
* ❌ vscode.l10n.t(`Message ${value}`)
* ✅ vscode.l10n.t('Message {0}', value)
*
* ❌ nls.localize('key', `Message ${value}`)
* ✅ nls.localize('key', 'Message {0}', value)
*/
export default new class NoLocalizationTemplateLiterals implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
noTemplateLiteral: 'Template literals cannot be used in localization calls. Use placeholders like {0}, {1} instead.'
},
docs: {
description: 'Prevents template literals in vscode.l10n.t() and nls.localize() calls',
},
schema: false,
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
function checkCallExpression(node: TSESTree.CallExpression) {
const callee = node.callee;
let isLocalizationCall = false;
let isNlsLocalize = false;
// Check for vscode.l10n.t()
if (callee.type === 'MemberExpression') {
const object = callee.object;
const property = callee.property;
// vscode.l10n.t
if (object.type === 'MemberExpression') {
const outerObject = object.object;
const outerProperty = object.property;
if (outerObject.type === 'Identifier' && outerObject.name === 'vscode' &&
outerProperty.type === 'Identifier' && outerProperty.name === 'l10n' &&
property.type === 'Identifier' && property.name === 't') {
isLocalizationCall = true;
}
}
// l10n.t or nls.localize or any *.localize
if (object.type === 'Identifier' && property.type === 'Identifier') {
if (object.name === 'l10n' && property.name === 't') {
isLocalizationCall = true;
} else if (property.name === 'localize') {
isLocalizationCall = true;
isNlsLocalize = true;
}
}
}
if (!isLocalizationCall) {
return;
}
// For vscode.l10n.t(message, ...args) - check the first argument (message)
// For nls.localize(key, message, ...args) - check first two arguments (key and message)
const argsToCheck = isNlsLocalize ? 2 : 1;
for (let i = 0; i < argsToCheck && i < node.arguments.length; i++) {
const arg = node.arguments[i];
if (arg && arg.type === 'TemplateLiteral' && arg.expressions.length > 0) {
context.report({
node: arg,
messageId: 'noTemplateLiteral'
});
}
}
}
return {
CallExpression: (node: any) => checkCallExpression(node as TSESTree.CallExpression)
};
}
};
================================================
FILE: .eslint-plugin-local/code-no-localized-model-description.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';
import * as visitorKeys from 'eslint-visitor-keys';
import type * as ESTree from 'estree';
const MESSAGE_ID = 'noLocalizedModelDescription';
type NodeWithChildren = TSESTree.Node & {
[key: string]: TSESTree.Node | TSESTree.Node[] | null | undefined;
};
type PropertyKeyNode = TSESTree.Property['key'] | TSESTree.MemberExpression['property'];
type AssignmentTarget = TSESTree.AssignmentExpression['left'];
export default new class NoLocalizedModelDescriptionRule implements eslint.Rule.RuleModule {
meta: eslint.Rule.RuleMetaData = {
messages: {
[MESSAGE_ID]: 'modelDescription values describe behavior to the language model and must not use localized strings.'
},
type: 'problem',
schema: false
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
const reportIfLocalized = (expression: TSESTree.Expression | null | undefined) => {
if (expression && containsLocalizedCall(expression)) {
context.report({ node: expression, messageId: MESSAGE_ID });
}
};
return {
Property: (node: ESTree.Property) => {
const propertyNode = node as TSESTree.Property;
if (!isModelDescriptionKey(propertyNode.key, propertyNode.computed)) {
return;
}
reportIfLocalized(propertyNode.value as TSESTree.Expression);
},
AssignmentExpression: (node: ESTree.AssignmentExpression) => {
const assignment = node as TSESTree.AssignmentExpression;
if (!isModelDescriptionAssignmentTarget(assignment.left)) {
return;
}
reportIfLocalized(assignment.right);
}
};
}
};
function isModelDescriptionKey(key: PropertyKeyNode, computed: boolean | undefined): boolean {
if (!computed && key.type === 'Identifier') {
return key.name === 'modelDescription';
}
if (key.type === 'Literal' && key.value === 'modelDescription') {
return true;
}
return false;
}
function isModelDescriptionAssignmentTarget(target: AssignmentTarget): target is TSESTree.MemberExpression {
if (target.type === 'MemberExpression') {
return isModelDescriptionKey(target.property, target.computed);
}
return false;
}
function containsLocalizedCall(expression: TSESTree.Expression): boolean {
let found = false;
const visit = (node: TSESTree.Node) => {
if (found) {
return;
}
if (isLocalizeCall(node)) {
found = true;
return;
}
for (const key of visitorKeys.KEYS[node.type] ?? []) {
const value = (node as NodeWithChildren)[key];
if (Array.isArray(value)) {
for (const child of value) {
if (child) {
visit(child);
if (found) {
return;
}
}
}
} else if (value) {
visit(value);
}
}
};
visit(expression);
return found;
}
function isLocalizeCall(node: TSESTree.Node): boolean {
if (node.type === 'CallExpression') {
return isLocalizeCallee(node.callee);
}
if (node.type === 'ChainExpression') {
return isLocalizeCall(node.expression);
}
return false;
}
function isLocalizeCallee(callee: TSESTree.CallExpression['callee']): boolean {
if (callee.type === 'Identifier') {
return callee.name === 'localize';
}
if (callee.type === 'MemberExpression') {
if (!callee.computed && callee.property.type === 'Identifier') {
return callee.property.name === 'localize';
}
if (callee.property.type === 'Literal' && callee.property.value === 'localize') {
return true;
}
}
return false;
}
================================================
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.ts';
export default 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-observable-get-in-reactive-context.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';
import * as visitorKeys from 'eslint-visitor-keys';
import type * as ESTree from 'estree';
export default new class NoObservableGetInReactiveContext implements eslint.Rule.RuleModule {
meta: eslint.Rule.RuleMetaData = {
type: 'problem',
docs: {
description: 'Disallow calling .get() on observables inside reactive contexts in favor of .read(undefined).',
},
fixable: 'code',
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
return {
'CallExpression': (node: ESTree.CallExpression) => {
const callExpression = node as TSESTree.CallExpression;
if (!isReactiveFunctionWithReader(callExpression.callee)) {
return;
}
const functionArg = callExpression.arguments.find(arg =>
arg.type === 'ArrowFunctionExpression' || arg.type === 'FunctionExpression'
) as TSESTree.ArrowFunctionExpression | TSESTree.FunctionExpression | undefined;
if (!functionArg) {
return;
}
const readerName = getReaderParameterName(functionArg);
if (!readerName) {
return;
}
checkFunctionForObservableGetCalls(functionArg, readerName, context);
}
};
}
};
function checkFunctionForObservableGetCalls(
fn: TSESTree.ArrowFunctionExpression | TSESTree.FunctionExpression,
readerName: string,
context: eslint.Rule.RuleContext
) {
const visited = new Set<TSESTree.Node>();
function traverse(node: TSESTree.Node) {
if (visited.has(node)) {
return;
}
visited.add(node);
if (node.type === 'CallExpression' && isObservableGetCall(node)) {
// Flag .get() calls since we're always in a reactive context here
context.report({
node: node,
message: `Observable '.get()' should not be used in reactive context. Use '.read(${readerName})' instead to properly track dependencies or '.read(undefined)' to be explicit about an untracked read.`,
fix: (fixer) => {
const memberExpression = node.callee as TSESTree.MemberExpression;
return fixer.replaceText(node, `${context.getSourceCode().getText(memberExpression.object as ESTree.Node)}.read(undefined)`);
}
});
}
walkChildren(node, traverse);
}
if (fn.body) {
traverse(fn.body);
}
}
function isObservableGetCall(node: TSESTree.CallExpression): boolean {
// Look for pattern: something.get()
if (node.callee.type === 'MemberExpression' &&
node.callee.property.type === 'Identifier' &&
node.callee.property.name === 'get' &&
node.arguments.length === 0) {
// This is a .get() call with no arguments, which is likely an observable
return true;
}
return false;
}
const reactiveFunctions = new Set([
'derived',
'derivedDisposable',
'derivedHandleChanges',
'derivedOpts',
'derivedWithSetter',
'derivedWithStore',
'autorun',
'autorunOpts',
'autorunHandleChanges',
'autorunSelfDisposable',
'autorunDelta',
'autorunWithStore',
'autorunWithStoreHandleChanges',
'autorunIterableDelta'
]);
function getReaderParameterName(fn: TSESTree.ArrowFunctionExpression | TSESTree.FunctionExpression): string | null {
if (fn.params.length === 0) {
return null;
}
const firstParam = fn.params[0];
if (firstParam.type === 'Identifier') {
// Accept any parameter name as a potential reader parameter
// since reactive functions should always have the reader as the first parameter
return firstParam.name;
}
return null;
}
function isReactiveFunctionWithReader(callee: TSESTree.Node): boolean {
if (callee.type === 'Identifier') {
return reactiveFunctions.has(callee.name);
}
return false;
}
function walkChildren(node: TSESTree.Node, cb: (child: TSESTree.Node) => void) {
const keys = visitorKeys.KEYS[node.type] || [];
for (const key of keys) {
const child = (node as Record<string, any>)[key];
if (Array.isArray(child)) {
for (const item of child) {
if (item && typeof item === 'object' && item.type) {
cb(item);
}
}
} else if (child && typeof child === 'object' && child.type) {
cb(child);
}
}
}
================================================
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';
import type * as ESTree from 'estree';
/**
* Checks for potentially unsafe usage of `DisposableStore` / `MutableDisposable`.
*
* These have been the source of leaks in the past.
*/
export default new class implements eslint.Rule.RuleModule {
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
function checkVariableDeclaration(inNode: ESTree.Node) {
context.report({
node: inNode,
message: `Use const for 'DisposableStore' to avoid leaks by accidental reassignment.`
});
}
function checkProperty(inNode: ESTree.Node) {
context.report({
node: inNode,
message: `Use readonly for DisposableStore/MutableDisposable to avoid leaks through accidental reassignment.`
});
}
return {
'VariableDeclaration[kind!="const"] > VariableDeclarator > 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-reader-after-await.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';
import type * as ESTree from 'estree';
export default new class NoReaderAfterAwait implements eslint.Rule.RuleModule {
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
return {
'CallExpression': (node: ESTree.CallExpression) => {
const callExpression = node as TSESTree.CallExpression;
if (!isFunctionWithReader(callExpression.callee)) {
return;
}
const functionArg = callExpression.arguments.find(arg =>
arg.type === 'ArrowFunctionExpression' || arg.type === 'FunctionExpression'
) as TSESTree.ArrowFunctionExpression | TSESTree.FunctionExpression | undefined;
if (!functionArg) {
return;
}
const readerName = getReaderParameterName(functionArg);
if (!readerName) {
return;
}
checkFunctionForAwaitBeforeReader(functionArg, readerName, context);
}
};
}
};
function checkFunctionForAwaitBeforeReader(
fn: TSESTree.ArrowFunctionExpression | TSESTree.FunctionExpression,
readerName: string,
context: eslint.Rule.RuleContext
) {
const awaitPositions: { line: number; column: number }[] = [];
const visited = new Set<TSESTree.Node>();
function collectPositions(node: TSESTree.Node) {
if (visited.has(node)) {
return;
}
visited.add(node);
if (node.type === 'AwaitExpression') {
awaitPositions.push({
line: node.loc?.start.line || 0,
column: node.loc?.start.column || 0
});
} else if (node.type === 'CallExpression' && isReaderMethodCall(node, readerName)) {
if (awaitPositions.length > 0) {
const methodName = getMethodName(node);
context.report({
node: node,
message: `Reader method '${methodName}' should not be called after 'await'. The reader becomes invalid after async operations.`
});
}
}
// Safely traverse known node types only
switch (node.type) {
case 'BlockStatement':
node.body.forEach(stmt => collectPositions(stmt));
break;
case 'ExpressionStatement':
collectPositions(node.expression);
break;
case 'VariableDeclaration':
node.declarations.forEach(decl => {
if (decl.init) { collectPositions(decl.init); }
});
break;
case 'AwaitExpression':
if (node.argument) { collectPositions(node.argument); }
break;
case 'CallExpression':
node.arguments.forEach(arg => collectPositions(arg));
break;
case 'IfStatement':
collectPositions(node.test);
collectPositions(node.consequent);
if (node.alternate) { collectPositions(node.alternate); }
break;
case 'TryStatement':
collectPositions(node.block);
if (node.handler) { collectPositions(node.handler.body); }
if (node.finalizer) { collectPositions(node.finalizer); }
break;
case 'ReturnStatement':
if (node.argument) { collectPositions(node.argument); }
break;
case 'BinaryExpression':
case 'LogicalExpression':
collectPositions(node.left);
collectPositions(node.right);
break;
case 'MemberExpression':
collectPositions(node.object);
if (node.computed) { collectPositions(node.property); }
break;
case 'AssignmentExpression':
collectPositions(node.left);
collectPositions(node.right);
break;
}
}
if (fn.body) {
collectPositions(fn.body);
}
}
function getMethodName(callExpression: TSESTree.CallExpression): string {
if (callExpression.callee.type === 'MemberExpression' &&
callExpression.callee.property.type === 'Identifier') {
return callExpression.callee.property.name;
}
return 'read';
}
function isReaderMethodCall(node: TSESTree.CallExpression, readerName: string): boolean {
if (node.callee.type === 'MemberExpression') {
// Pattern 1: reader.read() or reader.readObservable()
if (node.callee.object.type === 'Identifier' &&
node.callee.object.name === readerName &&
node.callee.property.type === 'Identifier') {
return ['read', 'readObservable'].includes(node.callee.property.name);
}
// Pattern 2: observable.read(reader) or observable.readObservable(reader)
if (node.callee.property.type === 'Identifier' &&
['read', 'readObservable'].includes(node.callee.property.name)) {
// Check if the reader is passed as the first argument
return node.arguments.length > 0 &&
node.arguments[0].type === 'Identifier' &&
node.arguments[0].name === readerName;
}
}
return false;
}
const readerFunctions = new Set(['derived', 'autorun', 'autorunOpts', 'autorunHandleChanges', 'autorunSelfDisposable']);
function getReaderParameterName(fn: TSESTree.ArrowFunctionExpression | TSESTree.FunctionExpression): string | null {
if (fn.params.length === 0) {
return null;
}
const firstParam = fn.params[0];
if (firstParam.type === 'Identifier') {
return firstParam.name;
}
return null;
}
function isFunctionWithReader(callee: TSESTree.Node): boolean {
if (callee.type === 'Identifier') {
return readerFunctions.has(callee.name);
}
return false;
}
================================================
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.ts';
export default 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(import.meta.dirname), context.getFilename());
if (!fileRelativePath.endsWith('/')) {
fileRelativePath += '/';
}
const ruleArgs = context.options[0] as Record<string, string[]>;
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.ts';
export default 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-node-module-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 { builtinModules } from 'module';
import { join, normalize, relative } from 'path';
import minimatch from 'minimatch';
import { createImportRuleListener } from './utils.ts';
const nodeBuiltins = new Set([
...builtinModules,
...builtinModules.map(m => `node:${m}`)
]);
const REPO_ROOT = normalize(join(import.meta.dirname, '../'));
export default new class implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
staticImport: 'Static imports of \'{{module}}\' are not allowed here because they are loaded synchronously on startup. Use a dynamic `await import(...)` or `import type` instead.'
},
docs: {
description: 'Disallow static imports of node_modules packages to prevent synchronous loading on startup. Allows Node.js built-ins, electron, relative imports, and whitelisted file paths.'
},
schema: {
type: 'array',
items: {
type: 'string'
}
}
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
const allowedPaths = context.options as string[];
const filePath = normalize(relative(REPO_ROOT, normalize(context.getFilename()))).replace(/\\/g, '/');
// Skip whitelisted files
if (allowedPaths.some(pattern => filePath === pattern || minimatch(filePath, pattern))) {
return {};
}
return createImportRuleListener((node, value) => {
// Allow `import type` and `export type` declarations
if (node.parent?.type === TSESTree.AST_NODE_TYPES.ImportDeclaration && node.parent.importKind === 'type') {
return;
}
if (node.parent && 'exportKind' in node.parent && node.parent.exportKind === 'type') {
return;
}
// Allow relative imports
if (value.startsWith('.')) {
return;
}
// Allow Node.js built-in modules
if (nodeBuiltins.has(value)) {
return;
}
// Allow electron
if (value === 'electron') {
return;
}
context.report({
loc: node.parent!.loc,
messageId: 'staticImport',
data: {
module: value
}
});
});
}
};
================================================
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 type * as ESTree from 'estree';
import { TSESTree } from '@typescript-eslint/utils';
/**
* WORKAROUND for https://github.com/evanw/esbuild/issues/3823
*/
export default new class implements eslint.Rule.RuleModule {
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
function checkProperty(inNode: TSESTree.PropertyDefinition) {
const classDeclaration = context.sourceCode.getAncestors(inNode as ESTree.Node).find(node => node.type === 'ClassDeclaration');
const 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 || classCtor.type === 'StaticBlock') {
return;
}
const name = classDeclaration.id.name;
const valueText = context.sourceCode.getText(propertyDefinition.value as ESTree.Node);
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-telemetry-common-property.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';
const telemetryMethods = new Set(['publicLog', 'publicLog2', 'publicLogError', 'publicLogError2']);
/**
* Common telemetry property names that are automatically added to every event.
* Telemetry events must not set these because they would collide with / be
* overwritten by the common properties that the telemetry pipeline injects.
*
* Collected from:
* - src/vs/platform/telemetry/common/commonProperties.ts (resolveCommonProperties)
* - src/vs/workbench/services/telemetry/common/workbenchCommonProperties.ts
* - src/vs/workbench/services/telemetry/browser/workbenchCommonProperties.ts
*/
const commonTelemetryProperties = new Set([
'common.machineid',
'common.sqmid',
'common.devdeviceid',
'sessionid',
'commithash',
'version',
'common.releasedate',
'common.platformversion',
'common.platform',
'common.nodeplatform',
'common.nodearch',
'common.product',
'common.msftinternal',
'timestamp',
'common.timesincesessionstart',
'common.sequence',
'common.snap',
'common.platformdetail',
'common.version.shell',
'common.version.renderer',
'common.firstsessiondate',
'common.lastsessiondate',
'common.isnewsession',
'common.remoteauthority',
'common.cli',
'common.useragent',
'common.istouchdevice',
'common.copilottrackingid',
]);
export default new class NoTelemetryCommonProperty implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
noCommonProperty: 'Telemetry events must not contain the common property "{{name}}". Common properties are automatically added by the telemetry pipeline and will be dropped.',
},
schema: false,
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
/**
* Check whether any property key in an object expression is a reserved common telemetry property.
*/
function checkObjectForCommonProperties(node: ESTree.ObjectExpression) {
for (const prop of node.properties) {
if (prop.type === 'Property') {
let name: string | undefined;
if (prop.key.type === 'Identifier') {
name = prop.key.name;
} else if (prop.key.type === 'Literal' && typeof prop.key.value === 'string') {
name = prop.key.value;
}
if (name && commonTelemetryProperties.has(name.toLowerCase())) {
context.report({
node: prop.key,
messageId: 'noCommonProperty',
data: { name },
});
}
}
}
}
return {
['CallExpression[callee.property.type="Identifier"]'](node: ESTree.CallExpression) {
const callee = node.callee;
if (callee.type !== 'MemberExpression') {
return;
}
const prop = callee.property;
if (prop.type !== 'Identifier' || !telemetryMethods.has(prop.name)) {
return;
}
// The data argument is the second argument for publicLog/publicLog2/publicLogError/publicLogError2
const dataArg = node.arguments[1];
if (dataArg && dataArg.type === 'ObjectExpression') {
checkObjectForCommonProperties(dataArg);
}
},
};
}
};
================================================
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 * as eslint from 'eslint';
import type * as ESTree from 'estree';
import { TSESTree } from '@typescript-eslint/utils';
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 default new class NoAsyncSuite implements eslint.Rule.RuleModule {
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
function hasAsyncSuite(node: ESTree.Node) {
const tsNode = node as TSESTree.Node;
if (isCallExpression(tsNode) && tsNode.arguments.length >= 2 && isFunctionExpression(tsNode.arguments[1]) && tsNode.arguments[1].async) {
return context.report({
node: tsNode,
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';
import type * as ESTree from 'estree';
export default 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: ESTree.MemberExpression) => {
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 { AST_NODE_TYPES, TSESTree } from '@typescript-eslint/utils';
import * as eslint from 'eslint';
import type * as ESTree from 'estree';
function isStringLiteral(node: TSESTree.Node | ESTree.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] === '"';
}
/**
* Enable bulk fixing double-quoted strings to single-quoted strings with the --fix eslint flag
*
* Disabled by default as this is often not the desired fix. Instead the string should be localized. However it is
* useful for bulk conversations of existing code.
*/
const enableDoubleToSingleQuoteFixes = false;
export default 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,
fixable: enableDoubleToSingleQuoteFixes ? 'code' : undefined,
};
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: ESTree.Literal) {
if (isStringLiteral(node) && isDoubleQuoted(node)) {
doubleQuotedStringLiterals.add(node);
}
}
function visitLocalizeCall(node: TSESTree.CallExpression) {
// localize(key, message)
const [keyNode, messageNode] = 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.TemplateLiteral && keyNode.expressions.length === 0 && keyNode.quasis.length === 1) {
key = keyNode.quasis[0].value.cooked ?? undefined;
} 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;
} else if (property.value.type === AST_NODE_TYPES.TemplateLiteral && property.value.expressions.length === 0 && property.value.quasis.length === 1) {
key = property.value.quasis[0].value.cooked ?? undefined;
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(node as ESTree.Node) }
});
}
}
function visitL10NCall(node: TSESTree.CallExpression) {
// localize(key, message)
const [messageNode] = (node as TSESTree.CallExpression).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',
fix: enableDoubleToSingleQuoteFixes ? (fixer) => {
// Get the raw string content, unescaping any escaped quotes
const content = (node as ESTree.SimpleLiteral).raw!
.slice(1, -1)
.replace(/(?<!\\)\\'/g, `'`)
.replace(/(?<!\\)\\"/g, `"`);
// If the escaped content contains a single quote, use template string instead
if (content.includes(`'`)
&& !content.includes('${') // Unless the content has a template expressions
&& !content.includes('`') // Or backticks which would need escaping
) {
const templateStr = `\`${content}\``;
return fixer.replaceText(node, templateStr);
}
// Otherwise prefer using a single-quoted string
const singleStr = `'${content.replace(/'/g, `\\'`)}'`;
return fixer.replaceText(node, singleStr);
} : undefined
});
}
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(values[i - 1].message as ESTree.Node) !== context.getSourceCode().getText(values[i].message as ESTree.Node)) {
context.report({ loc: values[i].call.loc, messageId: 'duplicateKey', data: { key } });
}
}
}
}
}
return {
['Literal']: (node: ESTree.Literal) => collectDoubleQuotedStrings(node),
['ExpressionStatement[directive] Literal:exit']: (node: TSESTree.Literal) => doubleQuotedStringLiterals.delete(node),
// localize(...)
['CallExpression[callee.type="MemberExpression"][callee.object.name="nls"][callee.property.name="localize"]:exit']: (node: TSESTree.CallExpression) => visitLocalizeCall(node),
// localize2(...)
['CallExpression[callee.type="MemberExpression"][callee.object.name="nls"][callee.property.name="localize2"]:exit']: (node: TSESTree.CallExpression) => visitLocalizeCall(node),
// vscode.l10n.t(...)
['CallExpression[callee.type="MemberExpression"][callee.object.property.name="l10n"][callee.property.name="t"]:exit']: (node: TSESTree.CallExpression) => visitL10NCall(node),
// l10n.t(...)
['CallExpression[callee.object.name="l10n"][callee.property.name="t"]:exit']: (node: TSESTree.CallExpression) => visitL10NCall(node),
['CallExpression[callee.name="localize"][arguments.length>=2]:exit']: (node: TSESTree.CallExpression) => visitLocalizeCall(node),
['CallExpression[callee.name="localize2"][arguments.length>=2]:exit']: (node: TSESTree.CallExpression) => 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 { TSESTree } from '@typescript-eslint/utils';
import * as eslint from 'eslint';
import type * as ESTree from 'estree';
//------------------------------------------------------------------------------
// Rule Definition
//------------------------------------------------------------------------------
export default {
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, context.sourceCode.getAncestors(node as ESTree.Node) as TSESTree.Node[])) {
context.report({ node: node as ESTree.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 { TSESTree } from '@typescript-eslint/utils';
import * as eslint from 'eslint';
/**
* 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 default new class implements eslint.Rule.RuleModule {
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
function check(node: TSESTree.TSParameterProperty) {
// 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: node,
message: 'Parameter properties must have an explicit access modifier.'
});
}
}
return {
['TSParameterProperty']: check,
};
}
};
================================================
FILE: .eslint-plugin-local/code-policy-localization-key-match.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';
/**
* Ensures that localization keys in policy blocks match the keys used in nls.localize() calls.
*
* For example, in a policy block with:
* ```
* localization: {
* description: {
* key: 'autoApprove2.description',
* value: nls.localize('autoApprove2.description', '...')
* }
* }
* ```
*
* The key property ('autoApprove2.description') must match the first argument
* to nls.localize() ('autoApprove2.description').
*/
export default new class PolicyLocalizationKeyMatch implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
mismatch: 'Localization key "{{keyValue}}" does not match the key used in nls.localize("{{localizeKey}}", ...). They must be identical.'
},
docs: {
description: 'Ensures that localization keys in policy blocks match the keys used in nls.localize() calls',
},
schema: false,
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
function checkLocalizationObject(node: ESTree.ObjectExpression) {
// Look for objects with structure: { key: '...', value: nls.localize('...', '...') }
let keyProperty: ESTree.Property | undefined;
let valueProperty: ESTree.Property | undefined;
for (const property of node.properties) {
if (property.type !== 'Property') {
continue;
}
const propertyKey = property.key;
if (propertyKey.type === 'Identifier') {
if (propertyKey.name === 'key') {
keyProperty = property;
} else if (propertyKey.name === 'value') {
valueProperty = property;
}
}
}
if (!keyProperty || !valueProperty) {
return;
}
// Extract the key value (should be a string literal)
let keyValue: string | undefined;
if (keyProperty.value.type === 'Literal' && typeof keyProperty.value.value === 'string') {
keyValue = keyProperty.value.value;
}
if (!keyValue) {
return;
}
// Check if value is a call to localize or any namespace's localize method
if (valueProperty.value.type === 'CallExpression') {
const callee = valueProperty.value.callee;
// Check if it's <anything>.localize or just localize
let isLocalizeCall = false;
if (callee.type === 'MemberExpression') {
const object = callee.object;
const property = callee.property;
if (object.type === 'Identifier' &&
property.type === 'Identifier' && property.name === 'localize') {
isLocalizeCall = true;
}
} else if (callee.type === 'Identifier' && callee.name === 'localize') {
// Direct localize() call
isLocalizeCall = true;
}
if (isLocalizeCall) {
// Get the first argument to localize (the key)
const args = valueProperty.value.arguments;
if (args.length > 0) {
const firstArg = args[0];
if (firstArg.type === 'Literal' && typeof firstArg.value === 'string') {
const localizeKey = firstArg.value;
// Compare the keys
if (keyValue !== localizeKey) {
context.report({
node: keyProperty.value,
messageId: 'mismatch',
data: {
keyValue,
localizeKey
}
});
}
}
}
}
}
}
function isInPolicyBlock(node: ESTree.Node): boolean {
// Walk up the AST to see if we're inside a policy object
const ancestors = context.sourceCode.getAncestors(node);
for (const ancestor of ancestors) {
if (ancestor.type === 'Property') {
// eslint-disable-next-line local/code-no-any-casts
const property = ancestor as any;
if (property.key && property.key.type === 'Identifier' && property.key.name === 'policy') {
return true;
}
}
}
return false;
}
return {
'ObjectExpression': (node: ESTree.ObjectExpression) => {
// Only check objects inside policy blocks
if (!isInPolicyBlock(node)) {
return;
}
// Check if this object has the pattern we're looking for
checkLocalizationObject(node);
}
};
}
};
================================================
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.ts';
export default 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 && !path.endsWith('/nls.js')) {
return;
}
const currentFile = context.getFilename();
const matchService = currentFile.match(/vs\/workbench\/services\/\w+/);
const matchPart = currentFile.match(/vs\/workbench\/contrib\/\w+/);
const matchSessionsPart = currentFile.match(/vs\/sessions\/contrib\/\w+/);
if (!matchService && !matchPart && !matchSessionsPart) {
return;
}
const resource = matchService ? matchService[0] : matchPart ? matchPart[0] : matchSessionsPart![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 parsed = JSON.parse(json);
const resources = [...parsed.workbench, ...parsed.sessions];
resources.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.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import type { LooseRuleDefinition } from '@typescript-eslint/utils/ts-eslint';
import glob from 'glob';
import { createRequire } from 'module';
import path from 'path';
const require = createRequire(import.meta.url);
// Re-export all .ts files as rules
const rules: Record<string, LooseRuleDefinition> = {};
glob.sync(`${import.meta.dirname}/*.ts`)
.filter(file => !file.endsWith('index.ts') && !file.endsWith('utils.ts'))
.map(file => {
rules[path.basename(file, '.ts')] = require(file).default;
});
export { rules };
================================================
FILE: .eslint-plugin-local/package.json
================================================
{
"private": true,
"type": "module",
"scripts": {
"typecheck": "tsgo -p tsconfig.json --noEmit"
}
}
================================================
FILE: .eslint-plugin-local/tests/code-no-observable-get-in-reactive-context-test.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
// Test file to verify the code-no-observable-get-in-reactive-context ESLint rule works correctly
import { observableValue, derived, autorun } from '../../src/vs/base/common/observable.js';
export function testValidUsage() {
const obs = observableValue('test', 0);
// Valid: Using .read(reader) in derived
const validDerived = derived(reader => {
const value = obs.read(reader);
return value * 2;
});
// Valid: Using .read(reader) in autorun
autorun(rdr => {
const value = validDerived.read(rdr);
console.log('Value:', value);
});
// Valid: Using .get() outside reactive context
const outsideValue = obs.get();
console.log('Outside value:', outsideValue);
}
export function testInvalidUsage() {
const obs = observableValue('test', 0);
// Invalid: Using .get() in derived instead of .read(reader)
const invalidDerived = derived(rdr => {
// This should use obs.read(reader) instead
// eslint-disable-next-line local/code-no-observable-get-in-reactive-context
const value = obs.get();
// Use reader for something valid to avoid unused var warning
const validValue = obs.read(rdr);
obs.read(undefined);
return value * 2 + validValue;
});
// Invalid: Using .get() in autorun instead of .read(reader)
autorun(reader => {
// This should use invalidDerived.read(reader) instead
// eslint-disable-next-line local/code-no-observable-get-in-reactive-context
const value = invalidDerived.get();
// Use reader for something valid to avoid unused var warning
const validValue = obs.read(reader);
console.log('Value:', value, validValue);
});
// Invalid: Using .get() in derivedWithStore
derived(reader => {
// eslint-disable-next-line local/code-no-observable-get-in-reactive-context
const value = obs.get();
reader.store.add({ dispose: () => { } });
return value;
});
}
export function testComplexCases() {
const obs1 = observableValue('test1', 0);
const obs2 = observableValue('test2', 10);
// Invalid: Using .get() in conditional within derived
derived(reader => {
const initial = obs1.read(reader);
if (initial > 0) {
// eslint-disable-next-line local/code-no-observable-get-in-reactive-context
return obs2.get();
}
return initial;
});
// Invalid: Using .get() in nested function call within autorun
autorun(reader => {
const process = () => {
// eslint-disable-next-line local/code-no-observable-get-in-reactive-context
return obs1.get() + obs2.get();
};
// Use reader for something valid to avoid unused var warning
const validValue = obs1.read(reader);
const result = process();
console.log('Result:', result, validValue);
});
// Invalid: Using .get() in try-catch within derived
derived(reader => {
try {
// eslint-disable-next-line local/code-no-observable-get-in-reactive-context
const value = obs1.get();
// Use reader for something valid to avoid unused var warning
const validValue = obs2.read(reader);
return value * 2 + validValue;
} catch (e) {
return obs2.read(reader);
}
});
}
export function testValidComplexCases() {
const obs1 = observableValue('test1', 0);
const obs2 = observableValue('test2', 10);
// Valid: Proper usage with .read(reader)
derived(reader => {
const value1 = obs1.read(reader);
const value2 = obs2.read(undefined);
if (value1 > 0) {
return value2;
}
return value1;
});
// Valid: Using .get() outside reactive context
function processValues() {
const val1 = obs1.get();
const val2 = obs2.get();
return val1 + val2;
}
// Valid: Mixed usage - .read(reader) inside reactive, .get() outside
autorun(reader => {
const reactiveValue = obs1.read(reader);
const outsideValue = processValues();
console.log('Values:', reactiveValue, outsideValue);
});
}
export function testEdgeCases() {
const obs = observableValue('test', 0);
// Valid: Function with no reader parameter
derived(() => {
const value = obs.get();
return value;
});
// Invalid: Function with differently named parameter (now also flagged)
derived(_someOtherName => {
// eslint-disable-next-line local/code-no-observable-get-in-reactive-context
const value = obs.get();
return value;
});
// Invalid: Correctly named reader parameter
derived(reader => {
// eslint-disable-next-line local/code-no-observable-get-in-reactive-context
const value = obs.get();
// Use reader for something valid to avoid unused var warning
const validValue = obs.read(reader);
return value + validValue;
});
}
export function testQuickFixScenarios() {
const obs = observableValue('test', 0);
const obs2 = observableValue('test2', 10);
// These examples show what the quick fix should transform:
// Example 1: Simple case with 'reader' parameter name
derived(_reader => {
const value = obs.read(undefined); // This should be the auto-fix result
return value;
});
// Example 2: Different parameter name
derived(rdr => {
// Before fix: obs2.get()
// After fix: obs2.read(rdr)
const value = obs2.read(rdr); // This should be the auto-fix result
return value;
});
// Example 3: Complex expression
derived(ctx => {
// Before fix: (someCondition ? obs : obs2).get()
// After fix: (someCondition ? obs : obs2).read(ctx)
const someCondition = true;
const value = (someCondition ? obs : obs2).read(ctx); // This should be the auto-fix result
return value;
});
// Example 4: Multiple calls in same function
autorun(reader => {
// Before fix: obs.get() and obs2.get()
// After fix: obs.read(reader) and obs2.read(reader)
const val1 = obs.read(reader); // This should be the auto-fix result
const val2 = obs2.read(reader); // This should be the auto-fix result
console.log(val1, val2);
});
}
================================================
FILE: .eslint-plugin-local/tests/code-no-reader-after-await-test.ts
================================================
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
// Test file to verify the code-no-reader-after-await ESLint rule works correctly
import { observableValue, derived, autorun } from '../../src/vs/base/common/observable.js';
export function testValidUsage() {
const obs = observableValue('test', 0);
const validDerived = derived(reader => {
const value = obs.read(reader);
return value * 2;
});
autorun(reader => {
const value = validDerived.read(reader);
console.log('Value:', value);
});
}
export function testInvalidUsage() {
const obs = observableValue('test', 0);
const invalidDerived = derived(async reader => {
await Promise.resolve();
// eslint-disable-next-line local/code-no-reader-after-await
const value = obs.read(reader);
return value * 2;
});
autorun(async reader => {
await Promise.resolve();
// eslint-disable-next-line local/code-no-reader-after-await
const value = invalidDerived.read(reader);
console.log('Value:', value);
});
autorun(async reader => {
await Promise.resolve();
// eslint-disable-next-line local/code-no-reader-after-await
const value = reader.readObservable(obs);
console.log('Value:', value);
});
}
export function testComplexCases() {
const obs = observableValue('test', 0);
derived(async reader => {
const initial = obs.read(reader);
if (initial > 0) {
await Promise.resolve();
}
// eslint-disable-next-line local/code-no-reader-after-await
const final = obs.read(reader);
return final;
});
autorun(async reader => {
try {
await Promise.resolve();
} catch (e) {
} finally {
// eslint-disable-next-line local/code-no-reader-after-await
const value = obs.read(reader);
console.log(value);
}
});
}
export function testValidComplexCases() {
const obs = observableValue('test', 0);
derived(async reader => {
const value1 = obs.read(reader);
const value2 = reader.readObservable(obs);
const result = value1 + value2;
await Promise.resolve(result);
return result;
});
}
================================================
FILE: .eslint-plugin-local/tsconfig.json
================================================
{
"compilerOptions": {
"target": "es2024",
"lib": [
"ES2024"
],
"rootDir": ".",
"module": "esnext",
"allowImportingTsExtensions": true,
"erasableSyntaxOnly": true,
"verbatimModuleSyntax": true,
"noEmit": true,
"strict": true,
"exactOptionalPropertyTypes": false,
"useUnknownInCatchVariables": false,
"noUnusedLocals": true,
"noUnusedParameters": true,
"typeRoots": [
"."
]
},
"include": [
"./**/*.ts",
],
"exclude": [
"node_modules/**",
"./tests/**"
]
}
================================================
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 type * as ESTree from 'estree';
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: ESTree.ImportDeclaration) => {
_checkImport((node as TSESTree.ImportDeclaration).source);
},
// import('module').then(...) OR await import('module')
['CallExpression[callee.type="Import"][arguments.length=1] > Literal']: (node: TSESTree.Literal) => {
_checkImport(node);
},
// import foo = ...
['TSImportEqualsDeclaration > TSExternalModuleReference > Literal']: (node: TSESTree.Literal) => {
_checkImport(node);
},
// export ?? from 'module'
ExportAllDeclaration: (node: ESTree.ExportAllDeclaration) => {
_checkImport((node as TSESTree.ExportAllDeclaration).source);
},
// export {foo} from 'module'
ExportNamedDeclaration: (node: ESTree.ExportNamedDeclaration) => {
_checkImport((node as TSESTree.ExportNamedDeclaration).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 { AST_NODE_TYPES, TSESTree } from '@typescript-eslint/utils';
import * as eslint from 'eslint';
export default 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: TSESTree.Node) => {
let found = false;
for (const param of (node as TSESTree.TSMethodSignature).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 type * as ESTree from 'estree';
import { TSESTree, AST_NODE_TYPES } from '@typescript-eslint/utils';
export default 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: ESTree.Node) => {
const decl = (node as TSESTree.Identifier).parent as TSESTree.FunctionDeclaration;
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 type * as ESTree from 'estree';
import { TSESTree, AST_NODE_TYPES } from '@typescript-eslint/utils';
export default 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 = context.options[0] as { allowed: string[]; verbs: string[] };
const allowed = new Set(config.allowed);
const verbs = new Set(config.verbs);
return {
['TSTypeAnnotation TSTypeReference Identifier[name="Event"]']: (node: ESTree.Identifier) => {
const def = (node as TSESTree.Identifier).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 type * as ESTree from 'estree';
import { TSESTree } from '@typescript-eslint/utils';
export default 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: ESTree.Identifier) => {
const name = (node as TSESTree.Identifier).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 { TSESTree } from '@typescript-eslint/utils';
import * as eslint from 'eslint';
export default 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: TSESTree.TSUnionType) => {
if (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 { TSESTree } from '@typescript-eslint/utils';
import * as eslint from 'eslint';
export default 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 = context.options[0] as { allowed: string[] };
const allowed = new Set(config.allowed);
return {
['TSInterfaceDeclaration[id.name=/.+Provider/] TSMethodSignature']: (node: TSESTree.Node) => {
const interfaceName = ((node as TSESTree.Identifier).parent?.parent as TSESTree.TSInterfaceDeclaration).id.name;
if (allowed.has(interfaceName)) {
// allowed
return;
}
const methodName = ((node as TSESTree.TSMethodSignatureNonComputedName).key as TSESTree.Identifier).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 type * as ESTree from 'estree';
import { TSESTree } from '@typescript-eslint/utils';
export default 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: ESTree.Literal) => {
const raw = String((node as TSESTree.Literal).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';
import type * as ESTree from 'estree';
export default 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: ESTree.Node) => {
const parent = (node as TSESTree.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';
import type * as ESTree from 'estree';
export default 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: ESTree.Identifier) => {
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 default 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: ESTree.Program) => {
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);
const end = sourceCode.getLocFromIndex(startIndex + match.index + match[0].length);
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
test/componentFixtures/.screenshots/**/*.png filter=lfs diff=lfs merge=lfs -text
================================================
FILE: .github/CODENOTIFY
================================================
# Base Utilities
src/vs/base/common/extpath.ts @bpasero
src/vs/base/common/fuzzyScorer.ts @bpasero
src/vs/base/common/glob.ts @bpasero
src/vs/base/common/oauth.ts @TylerLeonhardt
src/vs/base/common/path.ts @bpasero
src/vs/base/common/stream.ts @bpasero
src/vs/base/common/uri.ts @jrieken
src/vs/base/browser/domSanitize.ts @mjbvz
src/vs/base/node/pfs.ts @bpasero
src/vs/base/node/unc.ts @bpasero
src/vs/base/parts/contextmenu/** @bpasero
src/vs/base/parts/ipc/** @bpasero
src/vs/base/parts/quickinput/** @TylerLeonhardt
src/vs/base/parts/sandbox/** @bpasero
src/vs/base/parts/storage/** @bpasero
# Base Widgets
src/vs/base/browser/ui/grid/** @joaomoreno @benibenj
src/vs/base/browser/ui/list/** @joaomoreno @benibenj
src/vs/base/browser/ui/sash/** @joaomoreno @benibenj
src/vs/base/browser/ui/splitview/** @joaomoreno @benibenj
src/vs/base/browser/ui/table/** @joaomoreno @benibenj
src/vs/base/browser/ui/tree/** @joaomoreno @benibenj
# Platform
src/vs/platform/auxiliaryWindow/** @bpasero
src/vs/platform/backup/** @bpasero
src/vs/platform/browserView/** @kycutler @jruales
src/vs/platform/dialogs/** @bpasero
src/vs/platform/editor/** @bpasero
src/vs/platform/environment/** @bpasero
src/vs/platform/files/** @bpasero
src/vs/platform/ipc/** @bpasero
src/vs/platform/launch/** @bpasero
src/vs/platform/lifecycle/** @bpasero
src/vs/platform/menubar/** @bpasero
src/vs/platform/native/** @bpasero
src/vs/platform/quickinput/** @TylerLeonhardt
src/vs/platform/secrets/** @TylerLeonhardt
src/vs/platform/sharedProcess/** @bpasero
src/vs/platform/state/** @bpasero
src/vs/platform/storage/** @bpasero
src/vs/platform/terminal/electron-main/** @anthonykim1
src/vs/platform/terminal/node/** @anthonykim1
src/vs/platform/utilityProcess/** @bpasero
src/vs/platform/window/** @bpasero
src/vs/platform/windows/** @bpasero
src/vs/platform/workspace/** @bpasero
src/vs/platform/workspaces/** @bpasero
src/vs/platform/actions/common/menuService.ts @jrieken
src/vs/platform/instantiation/** @jrieken
# Editor Core
src/vs/editor/contrib/snippet/** @jrieken
src/vs/editor/contrib/suggest/** @jrieken
src/vs/editor/contrib/format/** @jrieken
# Bootstrap
src/*.ts @bpasero
# Electron Main
src/vs/code/** @bpasero @deepak1556
# Workbench Services
src/vs/workbench/services/activity/** @bpasero
src/vs/workbench/services/authentication/** @TylerLeonhardt
src/vs/workbench/services/auxiliaryWindow/** @bpasero
src/vs/workbench/services/browserView/** @kycutler @jruales
src/vs/workbench/services/contextmenu/** @bpasero
src/vs/workbench/services/dialogs/** @alexr00 @bpasero
src/vs/workbench/services/editor/** @bpasero
src/vs/workbench/services/editor/common/customEditorLabelService.ts @benibenj
src/vs/workbench/services/environment/** @bpasero
src/vs/workbench/services/files/** @bpasero
src/vs/workbench/services/filesConfiguration/** @bpasero
src/vs/workbench/services/history/** @bpasero
src/vs/workbench/services/host/** @bpasero
src/vs/workbench/services/label/** @bpasero
src/vs/workbench/services/languageDetection/** @TylerLeonhardt
src/vs/workbench/services/layout/** @bpasero
src/vs/workbench/services/lifecycle/** @bpasero
src/vs/workbench/services/notification/** @bpasero
src/vs/workbench/services/path/** @bpasero
src/vs/workbench/services/progress/** @bpasero
src/vs/workbench/services/storage/** @bpasero
src/vs/workbench/services/textfile/** @bpasero
src/vs/workbench/services/textmodelResolver/** @bpasero
src/vs/workbench/services/untitled/** @bpasero
src/vs/workbench/services/utilityProcess/** @bpasero
src/vs/workbench/services/views/** @sandy081 @benibenj @bpasero
src/vs/workbench/services/workingCopy/** @bpasero
src/vs/workbench/services/workspaces/** @bpasero
# Workbench Core
src/vs/workbench/common/** @bpasero
src/vs/workbench/browser/** @bpasero
src/vs/workbench/electron-browser/** @bpasero
# Workbench Contributions
src/vs/workbench/contrib/authentication/** @TylerLeonhardt
src/vs/workbench/contrib/browserView/** @kycutler @jruales
src/vs/workbench/contrib/files/** @bpasero
src/vs/workbench/contrib/chat/browser/chatListRenderer.ts @roblourens
src/vs/workbench/contrib/localization/** @TylerLeonhardt
src/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.ts @TylerLeonhardt
src/vs/workbench/contrib/scm/** @lszomoru
src/vs/workbench/contrib/update/browser/releaseNotesEditor.ts @alexr00 @joaomoreno
src/vs/workbench/contrib/preferences/** @rzhao271
# Build
build/azure-pipelines/** @lszomoru
build/azure-pipelines/common/sanity-tests.yml @dmitrivMS
build/lib/i18n.ts @TylerLeonhardt
resources/linux/debian/** @rzhao271
resources/linux/rpm/** @rzhao271
# Editor contrib
src/vs/editor/standalone/browser/quickInput/** @TylerLeonhardt
# Workbench API
src/vs/workbench/api/common/extHostLocalizationService.ts @TylerLeonhardt
src/vs/workbench/api/browser/mainThreadAuthentication.ts @TylerLeonhardt
src/vs/workbench/api/common/extHostAuthentication.ts @TylerLeonhardt
src/vs/workbench/api/node/extHostAuthentication.ts @TylerLeonhardt
src/vs/workbench/api/common/extHostMcp.ts @TylerLeonhardt
src/vs/workbench/api/browser/mainThreadMcp.ts @TylerLeonhardt
src/vs/workbench/api/common/extHostQuickOpen.ts @TylerLeonhardt
src/vs/workbench/api/browser/mainThreadSecretState.ts @TylerLeonhardt
# Extensions
extensions/microsoft-authentication/** @TylerLeonhardt
extensions/github-authentication/** @TylerLeonhardt
extensions/git/** @lszomoru
extensions/git-base/** @lszomoru
extensions/github/** @lszomoru
# Chat Editing, Inline Chat
src/vs/workbench/contrib/chat/browser/chatEditing/** @jrieken
src/vs/workbench/contrib/inlineChat/** @jrieken
# Testing
test/sanity/** @dmitrivMS
================================================
FILE: .github/CODEOWNERS
================================================
# GitHub actions required reviewers
.github/workflows/monaco-editor.yml @hediet @alexdima @lszomoru @joaomoreno
.github/workflows/no-package-lock-changes.yml @lszomoru @joaomoreno @TylerLeonhardt @rzhao271
.github/workflows/no-yarn-lock-changes.yml @lszomoru @joaomoreno @TylerLeonhardt @rzhao271
.github/workflows/pr-darwin-test.yml @lszomoru @joaomoreno @TylerLeonhardt @rzhao271
.github/workflows/pr-linux-cli-test.yml @lszomoru @joaomoreno @TylerLeonhardt @rzhao271
.github/workflows/pr-linux-test.yml @lszomoru @joaomoreno @TylerLeonhardt @rzhao271
.github/workflows/pr-node-modules.yml @lszomoru @joaomoreno @TylerLeonhardt @rzhao271
.github/workflows/pr-win32-test.yml @lszomoru @joaomoreno @TylerLeonhardt @rzhao271
.github/workflows/pr.yml @lszomoru @joaomoreno @TylerLeonhardt @rzhao271
.github/workflows/telemetry.yml @lramos15 @lszomoru @joaomoreno
# Ensure those that manage generated policy are aware of changes
build/lib/policies/policyData.jsonc @joshspicer @rebornix @joaomoreno @pwang347 @sandy081
# VS Code API
# Ensure the API team is aware of changes to the vscode-dts file
# this is only about the final API, not about proposed API changes
src/vscode-dts/vscode.d.ts @jrieken @mjbvz @alexr00
src/vs/workbench/services/extensions/common/extensionPoints.json @jrieken @mjbvz @alexr00
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
<!-- ⚠️⚠️ Do Not Delete This! bug_report_template ⚠️⚠️ -->
<!-- Please read our Rules of Conduct: https://opensource.microsoft.com/codeofconduct/ -->
<!-- 🕮 Read our guide about submitting issues: https://github.com/microsoft/vscode/wiki/Submitting-Bugs-and-Suggestions -->
<!-- 🔎 Search existing issues to avoid creating duplicates. -->
<!-- 🧪 Test using the latest Insiders build to see if your issue has already been fixed: https://code.visualstudio.com/insiders/ -->
<!-- 💡 Instead of creating your report here, use 'Report Issue' from the 'Help' menu in VS Code to pre-fill useful information. -->
<!-- 🔧 Launch with `code --disable-extensions` to check. -->
Does this issue occur when all extensions are disabled?: Yes/No
<!-- 🪓 If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. -->
<!-- 📣 Issues caused by an extension need to be reported directly to the extension publisher. The 'Help > Report Issue' dialog can assist with this. -->
- VS Code Version:
- OS Version:
Steps to Reproduce:
1.
2.
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
- name: Question
url: https://stackoverflow.com/questions/tagged/visual-studio-code
about: Please ask and answer questions here.
- name: Extension Development
url: https://github.com/microsoft/vscode-discussions/discussions
about: Please use this for extension development questions and ideas.
================================================
FILE: .github/ISSUE_TEMPLATE/copilot_bug_report.md
================================================
---
name: Copilot Bug report
about: Create a report to help us improve Copilot's chat interface in VS Code
title: ''
labels: chat-ext-issue
assignees: ''
---
<!-- Please search existing issues to avoid creating duplicates -->
<!-- Please attach logs to help us diagnose your issue -->
- Copilot Chat Extension Version:
- VS Code Version:
- OS Version:
- Feature (e.g. agent/edit/ask mode):
- Selected model (e.g. GPT 4.1, Claude 3.7 Sonnet):
- Logs:
Steps to Reproduce:
1.
2.
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
<!-- ⚠️⚠️ Do Not Delete This! feature_request_template ⚠️⚠️ -->
<!-- Please read our Rules of Conduct: https://opensource.microsoft.com/codeofconduct/ -->
<!-- Please search existing issues to avoid creating duplicates. -->
<!-- Describe the feature you'd like. -->
================================================
FILE: .github/agents/data.md
================================================
---
name: Data
description: Answer telemetry questions with data queries using Kusto Query Language (KQL)
tools: [vscode/extensions, execute/runInTerminal, read/readFile, search, azure-mcp/kusto_query, todo, ms-vscode.kusto-client/kusto, ms-vscode.kusto-client/kustoQueryExecution]
---
# Role and Objective
You are a Azure Data Explorer data analyst with expert knowledge in Kusto Query Language (KQL) and data analysis. Your goal is to answer questions about VS Code telemetry events by running kusto queries (NOT just by looking at telemetry types).
# Workflow
1. Read `vscode-telemetry-docs/.github/copilot-instructions.md` to understand how to access VS Code's telemetry
- If the `vscode-telemetry-docs` folder doesn't exist (just check your workspace_info, no extra tool call needed), run `npm run mixin-telemetry-docs` to clone the telemetry documentation.
2. Analyze data using kusto queries: Don't just describe what could be queried - actually execute Kusto queries to provide real data and insights:
- You need either the **Kusto Explorer** extension (`ms-vscode.kusto-client`) or the **Azure MCP** extension (`ms-azuretools.vscode-azure-mcp-server`) installed to run queries.
- **Prefer Kusto Explorer** (`kusto_runQuery` / `kusto_checkQueryExecution` tools) over Azure MCP (`kusto_query` tool) when both are available.
- If neither tool is available (just check your provided tools, no need to run them!), install the Kusto Explorer extension (`ms-vscode.kusto-client`). If that is not an option, fall back to installing the Azure MCP extension (`ms-azuretools.vscode-azure-mcp-server`).
- Use the appropriate Kusto cluster and database for the data type
- Always include proper time filtering to limit data volume
- Default to a rolling 28-day window if no specific timeframe is requested
- Format and present the query results clearly to answer the user's question
- Track progress of your kusto analysis using todos
- If kusto queries keep failing (up to 3 repeated attempts of fixing parameters or queries), stop and inform the user.
# Kusto Best Practices
When writing Kusto queries, follow these best practices:
- **Explore data efficiently.** Use 1d (1-day) time window and `sample` operator to quickly understand data shape and volume
- **Aggregate usage in proper time windows.** When no specific timeframe is provided:
- Default to a rolling 28-day window (standard practice in VS Code telemetry)
- Use full day boundaries to avoid partial day data
- Follow the time filtering patterns from the telemetry documentation
- **Correctly map names and keys.** EventName is the prefix (`monacoworkbench/` for vscode) and lowercase event name. Properties/Measurements keys are lowercase. Any properties marked `isMeasurement` are in the Measurements bag.
- **Parallelize queries when possible.** Run multiple independent queries as parallel tool calls to speed up analysis.
# Output Format
Your response should include:
- The actual Kusto query executed (formatted nicely)
- Real query results with data to answer the user's question
- Interpretation and analysis of the results
- References to specific documentation files when applicable
- Additional context or insights from the telemetry data
# Troubleshooting
If the connection to the Kusto cluster is timing out consistently, stop and ask the user to check whether they are connected to Azure VPN.
================================================
FILE: .github/agents/demonstrate.md
================================================
---
name: Demonstrate
description: Agent for demonstrating VS Code features
target: github-copilot
tools:
- "view"
- "create"
- "edit"
- "glob"
- "grep"
- "bash"
- "read_bash"
- "write_bash"
- "stop_bash"
- "list_bash"
- "report_intent"
- "fetch_documentation"
- "agents"
- "read"
- "search"
- "todo"
- "web"
- "github-mcp-server/*"
- "GitHub/*"
- "github/*"
- "vscode-playwright-mcp/*"
---
# Role and Objective
You are a QA testing agent. Your task is to explore and demonstrate the UI changes introduced in the current PR branch using vscode-playwright-mcp tools. Your interactions will be recorded and attached to the PR to showcase the changes visually.
# Core Requirements
## Setup Phase
1. Use GitHub MCP tools to get PR details (description, linked issues, comments)
2. Search the `microsoft/vscode-docs` repository for relevant documentation about the feature area
3. Examine changed files and commit messages to understand the scope
4. Identify what UI features or behaviors were modified
5. Start VS Code automation using `vscode_automation_start`
6. ALWAYS start by setting the setting `"chat.allowAnonymousAccess":true` using the `vscode_automation_settings_add_user_settings` tool. This will ensure that Chat works without requiring sign-in.
## Testing Phase
1. Use `browser_snapshot` to capture the current state
2. Execute the user workflows affected by the PR changes
## Demonstration Goals
- Show the new or modified UI in action
- Exercise the changed code paths through realistic user interactions
- Capture clear visual evidence of the improvements or changes
- Test edge cases or variations if applicable
# Important Guidelines
- Focus on DEMONSTRATING the changes, not verifying correctness
- You are NOT writing playwright tests - use the tools interactively to explore
- If the PR description or commits mention specific scenarios, prioritize testing those
- Make multiple passes if needed to capture different aspects of the changes
- You may make temporary modifications to facilitate better demonstration (e.g., adjusting settings, opening specific views)
## GitHub MCP Tools
**Prefer using GitHub MCP tools over `gh` CLI commands** - these provide structured data and better integration:
### Pull Request Tools
- `pull_request_read` - Get PR details, diff, status, files, reviews, and comments
- Use `method="get"` for PR metadata (title, description, labels, etc.)
- Use `method="get_diff"` for the full diff
- Use `method="get_files"` for list of changed files
- Use `method="get_reviews"` for review summaries
- Use `method="get_review_comments"` for line-specific review comments
- `search_pull_requests` - Search PRs with filters (author, state, etc.)
### Issue Tools
- `get_issue` - Get full issue details (description, labels, assignees, etc.)
- `get_issue_comments` - Get all comments on an issue
- `search_issues` - Search issues with filters
- `list_sub_issues` - Get sub-issues if using issue hierarchies
## Pointers for Controlling VS Code
- **Prefer `vscode_automation_*` tools over `browser_*` tools** when available - these are designed specifically for VS Code interactions and provide more reliable control. For example:
- `vscode_automation_chat_send_message` over using `browser_*` tools to send chat messages
- `vscode_automation_editor_type_text` over using `browser_*` tools to type in editors
If you are typing into a monaco input and you can't use the standard methods, follow this sequence:
**Monaco editors (used throughout VS Code) DO NOT work with standard Playwright methods like `.click()` on textareas or `.fill()` / `.type()`**
**YOU MUST follow this exact sequence:**
1. **Take a page snapshot** to identify the editor structure in the accessibility tree
2. **Find the parent `code` role element** that wraps the Monaco editor
- ❌ DO NOT click on `textarea` or `textbox` elements - these are overlaid by Monaco's rendering
- ✅ DO click on the `code` role element that is the parent container
3. **Click on the `code` element** to focus the editor - this properly delegates focus to Monaco's internal text handling
4. **Verify focus** by checking that the nested textbox element has the `[active]` attribute in a new snapshot
5. **Use `page.keyboard.press()` for EACH character individually** - standard Playwright `type()` or `fill()` methods don't work with Monaco editors since they intercept keyboard events at the page level
**Example:**
```js
// ❌ WRONG - this will fail with timeout
await page.locator('textarea').click();
await page.locator('textarea').fill('text');
// ✅ CORRECT
await page.locator('[role="code"]').click();
await page.keyboard.press('t');
await page.keyboard.press('e');
await page.keyboard.press('x');
await page.keyboard.press('t');
```
**Why this is required:** Monaco editors intercept keyboard events at the page level and use a virtualized rendering system. Clicking textareas directly or using `.fill()` bypasses Monaco's event handling, causing timeouts and failures.
# Workflow Pattern
1. Gather context:
- Retrieve PR details using GitHub MCP (description, linked issues, review comments)
- Search microsoft/vscode-docs for documentation on the affected feature areas
- Examine changed files and commit messages
2. Plan which user interactions will best showcase the changes
3. Start automation and navigate to the relevant area
4. Perform the interactions
5. Document what you're demonstrating as you go
6. Ensure the recording clearly shows the before/after or new functionality
7. **ALWAYS stop the automation** by calling `vscode_automation_stop` - this is REQUIRED whether you successfully demonstrated the feature or encountered issues that prevented testing
================================================
FILE: .github/agents/sessions.md
================================================
---
name: Agents Window Developer
description: Specialist in developing the Agents Window
---
# Role and Objective
You are a developer working on the 'agents window'. Your goal is to make ch
Showing preview only (713K chars total). Download the full file or copy to clipboard to get everything.
gitextract_5mnz8wu3/ ├── .agents/ │ └── skills/ │ └── launch/ │ └── SKILL.md ├── .config/ │ ├── 1espt/ │ │ └── PipelineAutobaseliningConfig.yml │ ├── configuration.winget │ └── guardian/ │ └── .gdnsuppress ├── .devcontainer/ │ ├── Dockerfile │ ├── README.md │ ├── devcontainer-lock.json │ ├── devcontainer.json │ ├── install-vscode.sh │ └── post-create.sh ├── .editorconfig ├── .eslint-ignore ├── .eslint-plugin-local/ │ ├── README.md │ ├── 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-accessor-after-await.ts │ ├── code-no-any-casts.ts │ ├── code-no-dangerous-type-assertions.ts │ ├── code-no-declare-const-enum.ts │ ├── code-no-deep-import-of-internal.ts │ ├── code-no-global-document-listener.ts │ ├── code-no-http-import.ts │ ├── code-no-icons-in-localized-strings.ts │ ├── code-no-in-operator.ts │ ├── code-no-localization-template-literals.ts │ ├── code-no-localized-model-description.ts │ ├── code-no-nls-in-standalone-editor.ts │ ├── code-no-observable-get-in-reactive-context.ts │ ├── code-no-potentially-unsafe-disposables.ts │ ├── code-no-reader-after-await.ts │ ├── code-no-runtime-import.ts │ ├── code-no-standalone-editor.ts │ ├── code-no-static-node-module-import.ts │ ├── code-no-static-self-ref.ts │ ├── code-no-telemetry-common-property.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-policy-localization-key-match.ts │ ├── code-translation-remind.ts │ ├── index.ts │ ├── package.json │ ├── tests/ │ │ ├── code-no-observable-get-in-reactive-context-test.ts │ │ └── code-no-reader-after-await-test.ts │ ├── 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/ │ ├── CODENOTIFY │ ├── CODEOWNERS │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── config.yml │ │ ├── copilot_bug_report.md │ │ └── feature_request.md │ ├── agents/ │ │ ├── data.md │ │ ├── demonstrate.md │ │ └── sessions.md │ ├── classifier.json │ ├── commands/ │ │ └── codespaces_issue.yml │ ├── commands.json │ ├── copilot-instructions.md │ ├── dependabot.yml │ ├── endgame/ │ │ └── insiders.yml │ ├── hooks/ │ │ └── hooks.json │ ├── insiders.yml │ ├── instructions/ │ │ ├── accessibility.instructions.md │ │ ├── agentHostTesting.instructions.md │ │ ├── ai-customization.instructions.md │ │ ├── api-version.instructions.md │ │ ├── chat.instructions.md │ │ ├── disposable.instructions.md │ │ ├── interactive.instructions.md │ │ ├── kusto.instructions.md │ │ ├── learnings.instructions.md │ │ ├── notebook.instructions.md │ │ ├── observables.instructions.md │ │ ├── oss.instructions.md │ │ ├── sessions.instructions.md │ │ ├── telemetry.instructions.md │ │ └── tree-widgets.instructions.md │ ├── prompts/ │ │ ├── build-champ.prompt.md │ │ ├── codenotify.prompt.md │ │ ├── component.prompt.md │ │ ├── doc-comments.prompt.md │ │ ├── find-duplicates.prompt.md │ │ ├── find-issue.prompt.md │ │ ├── fix-error.prompt.md │ │ ├── fixIssueNo.prompt.md │ │ ├── implement.prompt.md │ │ ├── issue-grouping.prompt.md │ │ ├── micro-perf.prompt.md │ │ ├── migrate.prompt.md │ │ ├── no-any.prompt.md │ │ ├── plan-deep.prompt.md │ │ ├── plan-fast.prompt.md │ │ ├── setup-environment.prompt.md │ │ └── update-instructions.prompt.md │ ├── pull_request_template.md │ ├── similarity.yml │ ├── skills/ │ │ ├── accessibility/ │ │ │ └── SKILL.md │ │ ├── add-policy/ │ │ │ └── SKILL.md │ │ ├── agent-sessions-layout/ │ │ │ └── SKILL.md │ │ ├── author-contributions/ │ │ │ └── SKILL.md │ │ ├── azure-pipelines/ │ │ │ ├── SKILL.md │ │ │ └── azure-pipeline.ts │ │ ├── chat-customizations-editor/ │ │ │ └── SKILL.md │ │ ├── component-fixtures/ │ │ │ └── SKILL.md │ │ ├── fix-ci-failures/ │ │ │ └── SKILL.md │ │ ├── fix-errors/ │ │ │ └── SKILL.md │ │ ├── hygiene/ │ │ │ └── SKILL.md │ │ ├── integration-tests/ │ │ │ └── SKILL.md │ │ ├── memory-leak-audit/ │ │ │ └── SKILL.md │ │ ├── sessions/ │ │ │ └── SKILL.md │ │ ├── tool-rename-deprecation/ │ │ │ └── SKILL.md │ │ ├── unit-tests/ │ │ │ └── SKILL.md │ │ └── update-screenshots/ │ │ └── SKILL.md │ └── workflows/ │ ├── api-proposal-version-check.yml │ ├── check-clean-git-state.sh │ ├── component-fixture-tests.yml │ ├── copilot-setup-steps.yml │ ├── monaco-editor.yml │ ├── no-engineering-system-changes.yml │ ├── pr-darwin-test.yml │ ├── pr-linux-cli-test.yml │ ├── pr-linux-test.yml │ ├── pr-node-modules.yml │ ├── pr-win32-test.yml │ ├── pr.yml │ ├── screenshot-test.yml │ ├── sessions-e2e.yml │ └── telemetry.yml ├── .gitignore ├── .lsifrc.json ├── .mailmap ├── .mention-bot ├── .npmrc ├── .nvmrc ├── .vscode/ │ ├── cglicenses.schema.json │ ├── extensions/ │ │ ├── vscode-extras/ │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── extension.ts │ │ │ │ └── npmUpToDateFeature.ts │ │ │ └── tsconfig.json │ │ ├── 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 │ ├── mcp.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/ │ │ ├── no-any-casts.code-search │ │ └── ts36031.code-search │ ├── settings.json │ ├── shared.code-snippets │ └── tasks.json ├── .vscode-test.js ├── AGENTS.md ├── CONTRIBUTING.md ├── CodeQL.yml ├── LICENSE.txt ├── README.md ├── SECURITY.md ├── ThirdPartyNotices.txt ├── build/ │ ├── .cachesalt │ ├── .gitattributes │ ├── .gitignore │ ├── .moduleignore │ ├── .moduleignore.darwin │ ├── .moduleignore.linux │ ├── .moduleignore.win32 │ ├── .npmrc │ ├── .webignore │ ├── azure-pipelines/ │ │ ├── alpine/ │ │ │ ├── product-build-alpine-cli.yml │ │ │ ├── product-build-alpine-node-modules.yml │ │ │ └── product-build-alpine.yml │ │ ├── cli/ │ │ │ ├── cli-apply-patches.yml │ │ │ ├── cli-compile.yml │ │ │ └── install-rust-posix.yml │ │ ├── common/ │ │ │ ├── checkCopilotChatCompatibility.ts │ │ │ ├── checkDistroCommit.ts │ │ │ ├── checkForArtifact.ts │ │ │ ├── checkout.yml │ │ │ ├── codesign.ts │ │ │ ├── computeBuiltInDepsCacheKey.ts │ │ │ ├── computeNodeModulesCacheKey.ts │ │ │ ├── createBuild.ts │ │ │ ├── extract-telemetry.ts │ │ │ ├── getPublishAuthTokens.ts │ │ │ ├── install-builtin-extensions.yml │ │ │ ├── installPlaywright.js │ │ │ ├── listNodeModules.ts │ │ │ ├── publish-artifact.yml │ │ │ ├── publish.ts │ │ │ ├── releaseBuild.ts │ │ │ ├── retry.ts │ │ │ ├── sanity-tests.yml │ │ │ ├── sign-win32.ts │ │ │ ├── sign.ts │ │ │ ├── telemetry-config.json │ │ │ ├── versionCompatibility.ts │ │ │ └── waitForArtifacts.ts │ │ ├── config/ │ │ │ ├── CredScanSuppressions.json │ │ │ └── tsaoptions.json │ │ ├── darwin/ │ │ │ ├── app-entitlements.plist │ │ │ ├── codesign.ts │ │ │ ├── helper-gpu-entitlements.plist │ │ │ ├── helper-plugin-entitlements.plist │ │ │ ├── helper-renderer-entitlements.plist │ │ │ ├── product-build-darwin-ci.yml │ │ │ ├── product-build-darwin-cli.yml │ │ │ ├── product-build-darwin-node-modules.yml │ │ │ ├── product-build-darwin-universal.yml │ │ │ ├── product-build-darwin.yml │ │ │ ├── server-entitlements.plist │ │ │ └── steps/ │ │ │ ├── product-build-darwin-compile.yml │ │ │ └── product-build-darwin-test.yml │ │ ├── dependencies-check.yml │ │ ├── distro/ │ │ │ ├── download-distro.yml │ │ │ ├── mixin-npm.ts │ │ │ └── mixin-quality.ts │ │ ├── distro-build.yml │ │ ├── github-check-run.js │ │ ├── linux/ │ │ │ ├── .gitignore │ │ │ ├── apt-retry.sh │ │ │ ├── build-snap.sh │ │ │ ├── codesign.ts │ │ │ ├── product-build-linux-ci.yml │ │ │ ├── product-build-linux-cli.yml │ │ │ ├── product-build-linux-node-modules.yml │ │ │ ├── product-build-linux.yml │ │ │ ├── setup-env.sh │ │ │ ├── steps/ │ │ │ │ ├── product-build-linux-compile.yml │ │ │ │ └── product-build-linux-test.yml │ │ │ ├── verify-glibc-requirements.sh │ │ │ └── xvfb.init │ │ ├── product-build.yml │ │ ├── product-publish.yml │ │ ├── product-quality-checks.yml │ │ ├── product-release.yml │ │ ├── product-sanity-tests.yml │ │ ├── publish-types/ │ │ │ ├── check-version.ts │ │ │ ├── publish-types.yml │ │ │ └── update-types.ts │ │ ├── update-dependencies-check.ts │ │ ├── upload-cdn.ts │ │ ├── upload-nlsmetadata.ts │ │ ├── upload-sourcemaps.ts │ │ ├── web/ │ │ │ ├── product-build-web-node-modules.yml │ │ │ └── product-build-web.yml │ │ └── win32/ │ │ ├── codesign.ts │ │ ├── exec.ps1 │ │ ├── import-esrp-auth-cert.ps1 │ │ ├── listprocesses.bat │ │ ├── product-build-win32-ci.yml │ │ ├── product-build-win32-cli.yml │ │ ├── product-build-win32-node-modules.yml │ │ ├── product-build-win32.yml │ │ ├── retry.ps1 │ │ ├── sdl-scan-win32.yml │ │ └── steps/ │ │ ├── product-build-win32-compile.yml │ │ ├── product-build-win32-install-rust.yml │ │ └── product-build-win32-test.yml │ ├── buildConfig.ts │ ├── buildfile.ts │ ├── builtin/ │ │ ├── browser-main.js │ │ ├── index.html │ │ ├── main.js │ │ └── package.json │ ├── checker/ │ │ ├── layersChecker.ts │ │ ├── tsconfig.browser.json │ │ ├── tsconfig.electron-browser.json │ │ ├── tsconfig.electron-main.json │ │ ├── tsconfig.electron-utility.json │ │ ├── tsconfig.node.json │ │ └── tsconfig.worker.json │ ├── checksums/ │ │ ├── electron.txt │ │ ├── explorer-dll.txt │ │ ├── nodejs.txt │ │ └── vscode-sysroot.txt │ ├── darwin/ │ │ ├── create-dmg.ts │ │ ├── create-universal-app.ts │ │ ├── dmg-background-exploration.tiff │ │ ├── dmg-background-insider.tiff │ │ ├── dmg-background-stable.tiff │ │ ├── dmg-settings.py.template │ │ ├── patch-dmg.py │ │ ├── sign-server.ts │ │ ├── sign.ts │ │ └── verify-macho.ts │ ├── eslint.ts │ ├── filters.ts │ ├── gulp-eslint.ts │ ├── gulpfile.cli.ts │ ├── gulpfile.compile.ts │ ├── gulpfile.editor.ts │ ├── gulpfile.extensions.ts │ ├── gulpfile.hygiene.ts │ ├── gulpfile.reh.ts │ ├── gulpfile.scan.ts │ ├── gulpfile.ts │ ├── gulpfile.vscode.linux.ts │ ├── gulpfile.vscode.ts │ ├── gulpfile.vscode.web.ts │ ├── gulpfile.vscode.win32.ts │ ├── hygiene.ts │ ├── lib/ │ │ ├── asar.ts │ │ ├── builtInExtensions.ts │ │ ├── builtInExtensionsCG.ts │ │ ├── bundle.ts │ │ ├── checkCyclicDependencies.ts │ │ ├── compilation.ts │ │ ├── copilot.ts │ │ ├── date.ts │ │ ├── dependencies.ts │ │ ├── electron.ts │ │ ├── embeddedType.ts │ │ ├── extensions.ts │ │ ├── extractExtensionPoints.ts │ │ ├── fetch.ts │ │ ├── formatter.ts │ │ ├── getVersion.ts │ │ ├── git.ts │ │ ├── i18n.resources.json │ │ ├── i18n.ts │ │ ├── inlineMeta.ts │ │ ├── mangle/ │ │ │ ├── index.ts │ │ │ ├── renameWorker.ts │ │ │ └── staticLanguageServiceHost.ts │ │ ├── monaco-api.ts │ │ ├── nls-analysis.ts │ │ ├── nls.ts │ │ ├── node.ts │ │ ├── optimize.ts │ │ ├── policies/ │ │ │ ├── basePolicy.ts │ │ │ ├── booleanPolicy.ts │ │ │ ├── copyPolicyDto.ts │ │ │ ├── exportPolicyData.ts │ │ │ ├── numberPolicy.ts │ │ │ ├── objectPolicy.ts │ │ │ ├── policyData.jsonc │ │ │ ├── policyGenerator.ts │ │ │ ├── render.ts │ │ │ ├── stringEnumPolicy.ts │ │ │ ├── stringPolicy.ts │ │ │ └── types.ts │ │ ├── preLaunch.ts │ │ ├── propertyInitOrderChecker.ts │ │ ├── reporter.ts │ │ ├── standalone.ts │ │ ├── stats.ts │ │ ├── stylelint/ │ │ │ ├── validateVariableNames.ts │ │ │ └── vscode-known-variables.json │ │ ├── task.ts │ │ ├── test/ │ │ │ ├── booleanPolicy.test.ts │ │ │ ├── checkCyclicDependencies.test.ts │ │ │ ├── fixtures/ │ │ │ │ └── policies/ │ │ │ │ ├── darwin/ │ │ │ │ │ ├── com.visualstudio.code.oss.mobileconfig │ │ │ │ │ ├── en-us/ │ │ │ │ │ │ └── com.visualstudio.code.oss.plist │ │ │ │ │ └── fr-fr/ │ │ │ │ │ └── com.visualstudio.code.oss.plist │ │ │ │ ├── linux/ │ │ │ │ │ └── policy.json │ │ │ │ └── win32/ │ │ │ │ ├── CodeOSS.admx │ │ │ │ ├── en-us/ │ │ │ │ │ └── CodeOSS.adml │ │ │ │ └── fr-fr/ │ │ │ │ └── CodeOSS.adml │ │ │ ├── i18n.test.ts │ │ │ ├── numberPolicy.test.ts │ │ │ ├── objectPolicy.test.ts │ │ │ ├── policyConversion.test.ts │ │ │ ├── render.test.ts │ │ │ ├── stringEnumPolicy.test.ts │ │ │ └── stringPolicy.test.ts │ │ ├── treeshaking.ts │ │ ├── tsb/ │ │ │ ├── builder.ts │ │ │ ├── index.ts │ │ │ ├── transpiler.ts │ │ │ └── utils.ts │ │ ├── tsconfigUtils.ts │ │ ├── tsgo.ts │ │ ├── typeScriptLanguageServiceHost.ts │ │ ├── typings/ │ │ │ ├── @vscode/ │ │ │ │ └── gulp-electron.d.ts │ │ │ ├── asar.d.ts │ │ │ ├── cgmanifest.json │ │ │ ├── chromium-pickle-js.d.ts │ │ │ ├── event-stream.d.ts │ │ │ ├── gulp-azure-storage.d.ts │ │ │ ├── gulp-bom.d.ts │ │ │ ├── gulp-buffer.d.ts │ │ │ ├── gulp-gunzip.d.ts │ │ │ ├── gulp-vinyl-zip.d.ts │ │ │ ├── rcedit.d.ts │ │ │ ├── stream.d.ts │ │ │ ├── ternary-stream.d.ts │ │ │ └── vscode-gulp-watch.d.ts │ │ ├── util.ts │ │ └── watch/ │ │ ├── index.ts │ │ └── watch-win32.ts │ ├── linux/ │ │ ├── debian/ │ │ │ ├── calculate-deps.ts │ │ │ ├── dep-lists.ts │ │ │ ├── install-sysroot.ts │ │ │ └── types.ts │ │ ├── dependencies-generator.ts │ │ ├── libcxx-fetcher.ts │ │ └── rpm/ │ │ ├── calculate-deps.ts │ │ ├── dep-lists.ts │ │ └── types.ts │ ├── loader.min │ ├── monaco/ │ │ ├── LICENSE │ │ ├── README-npm.md │ │ ├── README.md │ │ ├── ThirdPartyNotices.txt │ │ ├── monaco.d.ts.recipe │ │ ├── monaco.usage.recipe │ │ ├── package.json │ │ └── version.txt │ ├── next/ │ │ ├── index.ts │ │ ├── nls-plugin.ts │ │ ├── private-to-property.ts │ │ ├── test/ │ │ │ ├── nls-sourcemap.test.ts │ │ │ └── private-to-property.test.ts │ │ └── working.md │ ├── npm/ │ │ ├── dirs.ts │ │ ├── fast-install.ts │ │ ├── gyp/ │ │ │ ├── custom-headers/ │ │ │ │ └── v8-source-location.patch │ │ │ └── package.json │ │ ├── installStateHash.ts │ │ ├── mixin-telemetry-docs.ts │ │ ├── postinstall.ts │ │ ├── preinstall.ts │ │ ├── update-all-grammars.ts │ │ ├── update-distro.ts │ │ └── update-localization-extension.ts │ ├── package.json │ ├── rspack/ │ │ ├── package.json │ │ ├── rspack.serve-out.config.mts │ │ └── workbench-rspack.html │ ├── setup-npm-registry.ts │ ├── stylelint.ts │ ├── tsconfig.json │ ├── vite/ │ │ ├── index-workbench.ts │ │ ├── index.html │ │ ├── index.ts │ │ ├── package.json │ │ ├── setup-dev.ts │ │ ├── style.css │ │ ├── tsconfig.json │ │ ├── vite.config.ts │ │ ├── workbench-electron.ts │ │ ├── workbench-vite-electron.html │ │ └── workbench-vite.html │ └── win32/ │ ├── .gitignore │ ├── Cargo.toml │ ├── code.iss │ ├── explorer-dll-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/ │ │ ├── agent_host.rs │ │ ├── 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 │ ├── CONTRIBUTING.md │ ├── 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 │ │ ├── esbuild.browser.mts │ │ ├── esbuild.mts │ │ ├── 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.browser.json │ │ └── 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.browser.json │ │ │ └── tsconfig.json │ │ ├── esbuild.browser.mts │ │ ├── esbuild.mts │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── schemas/ │ │ │ └── package.schema.json │ │ ├── server/ │ │ │ ├── .npmrc │ │ │ ├── .vscode/ │ │ │ │ ├── launch.json │ │ │ │ └── tasks.json │ │ │ ├── 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.browser.json │ │ │ └── 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 │ │ ├── esbuild.mts │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── src/ │ │ │ └── extension.ts │ │ └── tsconfig.json │ ├── debug-server-ready/ │ │ ├── .npmrc │ │ ├── .vscode/ │ │ │ └── launch.json │ │ ├── .vscodeignore │ │ ├── esbuild.mts │ │ ├── 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 │ ├── dotenv/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── syntaxes/ │ │ └── dotenv.tmLanguage.json │ ├── emmet/ │ │ ├── .npmrc │ │ ├── .vscode/ │ │ │ ├── launch.json │ │ │ └── settings.json │ │ ├── .vscodeignore │ │ ├── CONTRIBUTING.md │ │ ├── README.md │ │ ├── cgmanifest.json │ │ ├── esbuild.browser.mts │ │ ├── esbuild.mts │ │ ├── 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.browser.json │ │ └── tsconfig.json │ ├── esbuild-extension-common.mts │ ├── esbuild-webview-common.mts │ ├── extension-editing/ │ │ ├── .npmrc │ │ ├── .vscodeignore │ │ ├── esbuild.browser.mts │ │ ├── esbuild.mts │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── src/ │ │ │ ├── constants.ts │ │ │ ├── extensionEditingBrowserMain.ts │ │ │ ├── extensionEditingMain.ts │ │ │ ├── extensionEngineValidation.ts │ │ │ ├── extensionLinter.ts │ │ │ ├── jsonReconstruct.ts │ │ │ ├── packageDocumentHelper.ts │ │ │ └── packageDocumentL10nSupport.ts │ │ ├── tsconfig.browser.json │ │ └── 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 │ │ ├── esbuild.mts │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── resources/ │ │ │ └── emojis.json │ │ ├── src/ │ │ │ ├── actionButton.ts │ │ │ ├── api/ │ │ │ │ ├── api1.ts │ │ │ │ ├── extension.ts │ │ │ │ ├── git.constants.ts │ │ │ │ └── git.d.ts │ │ │ ├── artifactProvider.ts │ │ │ ├── askpass-empty.sh │ │ │ ├── askpass-main.ts │ │ │ ├── askpass.sh │ │ │ ├── askpass.ts │ │ │ ├── askpassManager.ts │ │ │ ├── autofetch.ts │ │ │ ├── blame.ts │ │ │ ├── branchProtection.ts │ │ │ ├── cache.ts │ │ │ ├── cloneManager.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 │ │ │ ├── hover.ts │ │ │ ├── ipc/ │ │ │ │ ├── ipcClient.ts │ │ │ │ └── ipcServer.ts │ │ │ ├── main.ts │ │ │ ├── model.ts │ │ │ ├── operation.ts │ │ │ ├── postCommitCommands.ts │ │ │ ├── protocolHandler.ts │ │ │ ├── pushError.ts │ │ │ ├── quickDiffProvider.ts │ │ │ ├── remotePublisher.ts │ │ │ ├── remoteSource.ts │ │ │ ├── repository.ts │ │ │ ├── repositoryCache.ts │ │ │ ├── ssh-askpass-empty.sh │ │ │ ├── ssh-askpass.sh │ │ │ ├── staging.ts │ │ │ ├── statusbar.ts │ │ │ ├── terminal.ts │ │ │ ├── test/ │ │ │ │ ├── askpassManager.test.ts │ │ │ │ ├── git.test.ts │ │ │ │ ├── index.ts │ │ │ │ ├── repositoryCache.test.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 │ │ ├── esbuild.browser.mts │ │ ├── esbuild.mts │ │ ├── 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 │ │ │ ├── foldingProvider.ts │ │ │ ├── model.ts │ │ │ ├── remoteProvider.ts │ │ │ ├── remoteSource.ts │ │ │ ├── test/ │ │ │ │ └── foldingProvider.test.ts │ │ │ └── util.ts │ │ ├── syntaxes/ │ │ │ ├── git-commit.tmLanguage.json │ │ │ ├── git-rebase.tmLanguage.json │ │ │ └── ignore.tmLanguage.json │ │ ├── tsconfig.browser.json │ │ └── tsconfig.json │ ├── github/ │ │ ├── .npmrc │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── esbuild.mts │ │ ├── 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.constants.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 │ │ ├── esbuild.browser.mts │ │ ├── esbuild.mts │ │ ├── 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 │ │ │ └── fetch.test.ts │ │ ├── tsconfig.browser.json │ │ └── 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 │ │ ├── esbuild.mts │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── src/ │ │ │ └── main.ts │ │ └── tsconfig.json │ ├── gulp/ │ │ ├── .npmrc │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── esbuild.mts │ │ ├── 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.browser.json │ │ │ └── tsconfig.json │ │ ├── esbuild.browser.mts │ │ ├── esbuild.mts │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── schemas/ │ │ │ └── package.schema.json │ │ └── server/ │ │ ├── .npmrc │ │ ├── .vscode/ │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ ├── 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.browser.json │ │ └── 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.browser.mts │ │ ├── esbuild.mts │ │ ├── esbuild.notebook.mts │ │ ├── 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.browser.json │ │ └── tsconfig.json │ ├── jake/ │ │ ├── .npmrc │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── esbuild.mts │ │ ├── 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 │ │ │ │ └── urlMatch.ts │ │ │ ├── tsconfig.browser.json │ │ │ └── tsconfig.json │ │ ├── esbuild.browser.mts │ │ ├── esbuild.mts │ │ ├── package.json │ │ ├── package.nls.json │ │ └── server/ │ │ ├── .npmignore │ │ ├── .npmrc │ │ ├── .vscode/ │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ ├── README.md │ │ ├── bin/ │ │ │ └── vscode-json-languageserver │ │ ├── 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.browser.json │ │ └── 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 │ ├── 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.browser.mts │ │ ├── esbuild.mts │ │ ├── esbuild.notebook.mts │ │ ├── esbuild.webview.mts │ │ ├── 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 │ │ │ └── uuid.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.browser.mts │ │ ├── esbuild.mts │ │ ├── esbuild.notebook.mts │ │ ├── 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.browser.json │ │ └── tsconfig.json │ ├── media-preview/ │ │ ├── .npmrc │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── esbuild.browser.mts │ │ ├── esbuild.mts │ │ ├── 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 │ │ │ │ └── uuid.ts │ │ │ └── videoPreview.ts │ │ ├── tsconfig.browser.json │ │ └── tsconfig.json │ ├── merge-conflict/ │ │ ├── .npmrc │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── esbuild.browser.mts │ │ ├── esbuild.mts │ │ ├── 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.browser.json │ │ └── tsconfig.json │ ├── mermaid-chat-features/ │ │ ├── .gitignore │ │ ├── .npmrc │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── cgmanifest.json │ │ ├── chat-webview-src/ │ │ │ ├── index-editor.ts │ │ │ ├── index.ts │ │ │ ├── mermaidWebview.ts │ │ │ ├── tsconfig.json │ │ │ └── vscodeApi.ts │ │ ├── esbuild.browser.mts │ │ ├── esbuild.mts │ │ ├── esbuild.webview.mts │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── src/ │ │ │ ├── chatOutputRenderer.ts │ │ │ ├── editorManager.ts │ │ │ ├── extension.ts │ │ │ ├── util/ │ │ │ │ ├── dispose.ts │ │ │ │ ├── html.ts │ │ │ │ └── uuid.ts │ │ │ └── webviewManager.ts │ │ ├── tsconfig.browser.json │ │ └── tsconfig.json │ ├── microsoft-authentication/ │ │ ├── .npmrc │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── esbuild.mts │ │ ├── media/ │ │ │ ├── auth.css │ │ │ └── index.html │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── packageMocks/ │ │ │ ├── dpapi/ │ │ │ │ └── dpapi.js │ │ │ └── keytar/ │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── src/ │ │ │ ├── UriEventHandler.ts │ │ │ ├── betterSecretStorage.ts │ │ │ ├── common/ │ │ │ │ ├── accountAccess.ts │ │ │ │ ├── async.ts │ │ │ │ ├── cachePlugin.ts │ │ │ │ ├── config.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 │ │ │ ├── logger.ts │ │ │ └── node/ │ │ │ ├── authProvider.ts │ │ │ ├── buffer.ts │ │ │ ├── cachedPublicClientApplication.ts │ │ │ ├── fetch.ts │ │ │ ├── flows.ts │ │ │ ├── loopbackTemplate.ts │ │ │ ├── publicClientCache.ts │ │ │ └── test/ │ │ │ └── flows.test.ts │ │ └── tsconfig.json │ ├── notebook-renderers/ │ │ ├── .gitignore │ │ ├── .npmrc │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── esbuild.notebook.mts │ │ ├── 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 │ │ ├── esbuild.browser.mts │ │ ├── esbuild.mts │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── src/ │ │ │ ├── commands.ts │ │ │ ├── features/ │ │ │ │ ├── date.ts │ │ │ │ ├── jsonContributions.ts │ │ │ │ └── packageJSONContribution.ts │ │ │ ├── npmBrowserMain.ts │ │ │ ├── npmMain.ts │ │ │ ├── npmScriptLens.ts │ │ │ ├── npmView.ts │ │ │ ├── preferred-pm.ts │ │ │ ├── readScripts.ts │ │ │ ├── scriptHover.ts │ │ │ └── tasks.ts │ │ ├── tsconfig.browser.json │ │ └── 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 │ ├── 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 │ │ ├── esbuild.mts │ │ ├── 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 │ ├── prompt-basics/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── syntaxes/ │ │ └── prompt.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 │ │ ├── esbuild.browser.mts │ │ ├── esbuild.mts │ │ ├── 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.browser.json │ │ └── 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 │ │ ├── esbuild.browser.mts │ │ ├── esbuild.mts │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── src/ │ │ │ └── extension.ts │ │ ├── syntaxes/ │ │ │ ├── generateTMLanguage.js │ │ │ └── searchResult.tmLanguage.json │ │ ├── tsconfig.browser.json │ │ └── tsconfig.json │ ├── shaderlab/ │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── language-configuration.json │ │ ├── package.json │ │ ├── package.nls.json │ │ └── syntaxes/ │ │ └── shaderlab.tmLanguage.json │ ├── 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.browser.mts │ │ ├── esbuild.mts │ │ ├── esbuild.webview.mts │ │ ├── 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 │ │ │ └── uuid.ts │ │ ├── tsconfig.browser.json │ │ └── 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 │ │ ├── .npmrc │ │ ├── .vscode/ │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── ThirdPartyNotices.txt │ │ ├── cgmanifest.json │ │ ├── esbuild.mts │ │ ├── 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/ │ │ │ │ ├── azd.ts │ │ │ │ ├── cd.ts │ │ │ │ ├── code-insiders.ts │ │ │ │ ├── code-tunnel-insiders.ts │ │ │ │ ├── code-tunnel.ts │ │ │ │ ├── code.ts │ │ │ │ ├── copilot.ts │ │ │ │ ├── gh.ts │ │ │ │ ├── git.ts │ │ │ │ ├── index.d.ts │ │ │ │ ├── npm.ts │ │ │ │ ├── npx.ts │ │ │ │ ├── pnpm.ts │ │ │ │ ├── set-location.ts │ │ │ │ ├── upstream/ │ │ │ │ │ ├── adb.ts │ │ │ │ │ ├── apt.ts │ │ │ │ │ ├── basename.ts │ │ │ │ │ ├── brew.ts │ │ │ │ │ ├── bundle.ts │ │ │ │ │ ├── cat.ts │ │ │ │ │ ├── chmod.ts │ │ │ │ │ ├── chown.ts │ │ │ │ │ ├── clear.ts │ │ │ │ │ ├── cp.ts │ │ │ │ │ ├── curl.ts │ │ │ │ │ ├── cut.ts │ │ │ │ │ ├── date.ts │ │ │ │ │ ├── dd.ts │ │ │ │ │ ├── df.ts │ │ │ │ │ ├── diff.ts │ │ │ │ │ ├── dig.ts │ │ │ │ │ ├── dirname.ts │ │ │ │ │ ├── docker-compose.ts │ │ │ │ │ ├── docker.ts │ │ │ │ │ ├── dotnet.ts │ │ │ │ │ ├── du.ts │ │ │ │ │ ├── echo.ts │ │ │ │ │ ├── env.ts │ │ │ │ │ ├── export.ts │ │ │ │ │ ├── fdisk.ts │ │ │ │ │ ├── find.ts │ │ │ │ │ ├── fmt.ts │ │ │ │ │ ├── fold.ts │ │ │ │ │ ├── go.ts │ │ │ │ │ ├── grep.ts │ │ │ │ │ ├── head.ts │ │ │ │ │ ├── htop.ts │ │ │ │ │ ├── id.ts │ │ │ │ │ ├── jq.ts │ │ │ │ │ ├── kill.ts │ │ │ │ │ ├── killall.ts │ │ │ │ │ ├── less.ts │ │ │ │ │ ├── ln.ts │ │ │ │ │ ├── ls.ts │ │ │ │ │ ├── lsblk.ts │ │ │ │ │ ├── lsof.ts │ │ │ │ │ ├── mkdir.ts │ │ │ │ │ ├── more.ts │ │ │ │ │ ├── mount.ts │ │ │ │ │ ├── mv.ts │ │ │ │ │ ├── nano.ts │ │ │ │ │ ├── nl.ts │ │ │ │ │ ├── node.ts │ │ │ │ │ ├── nvm.ts │ │ │ │ │ ├── od.ts │ │ │ │ │ ├── paste.ts │ │ │ │ │ ├── ping.ts │ │ │ │ │ ├── pkill.ts │ │ │ │ │ ├── ps.ts │ │ │ │ │ ├── pwd.ts │ │ │ │ │ ├── python.ts │ │ │ │ │ ├── python3.ts │ │ │ │ │ ├── readlink.ts │ │ │ │ │ ├── rm.ts │ │ │ │ │ ├── rmdir.ts │ │ │ │ │ ├── rsync.ts │ │ │ │ │ ├── ruby.ts │ │ │ │ │ ├── ruff.ts │ │ │ │ │ ├── scp.ts │ │ │ │ │ ├── sed.ts │ │ │ │ │ ├── seq.ts │ │ │ │ │ ├── shred.ts │ │ │ │ │ ├── sort.ts │ │ │ │ │ ├── source.ts │ │ │ │ │ ├── split.ts │ │ │ │ │ ├── ssh.ts │ │ │ │ │ ├── stat.ts │ │ │ │ │ ├── su.ts │ │ │ │ │ ├── sudo.ts │ │ │ │ │ ├── tac.ts │ │ │ │ │ ├── tail.ts │ │ │ │ │ ├── tar.ts │ │ │ │ │ ├── tee.ts │ │ │ │ │ ├── time.ts │ │ │ │ │ ├── top.ts │ │ │ │ │ ├── touch.ts │ │ │ │ │ ├── tr.ts │ │ │ │ │ ├── traceroute.ts │ │ │ │ │ ├── tree.ts │ │ │ │ │ ├── truncate.ts │ │ │ │ │ ├── uname.ts │ │ │ │ │ ├── uniq.ts │ │ │ │ │ ├── unzip.ts │ │ │ │ │ ├── vim.ts │ │ │ │ │ ├── wc.ts │ │ │ │ │ ├── wget.ts │ │ │ │ │ ├── where.ts │ │ │ │ │ ├── whereis.ts │ │ │ │ │ ├── which.ts │ │ │ │ │ ├── who.ts │ │ │ │ │ ├── xargs.ts │ │ │ │ │ ├── xxd.ts │ │ │ │ │ ├── yo.ts │ │ │ │ │ └── zip.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 │ │ │ │ ├── keyvalue.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 │ │ │ │ │ ├── git-branch.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 │ │ │ │ ├── fixtures/ │ │ │ │ │ └── symlink-test/ │ │ │ │ │ └── real-executable.sh │ │ │ │ ├── helpers.ts │ │ │ │ ├── terminalSuggestMain.test.ts │ │ │ │ └── tokens.test.ts │ │ │ ├── tokens.ts │ │ │ ├── types.ts │ │ │ └── upstreamSpecs.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/ │ │ ├── 2026-dark.json │ │ ├── 2026-light.json │ │ ├── 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 │ │ ├── esbuild.mts │ │ ├── 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 │ │ ├── esbuild.browser.mts │ │ ├── esbuild.mts │ │ ├── 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 │ │ │ │ └── useTsgo.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 │ │ │ │ │ ├── implementationsCodeLens.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 │ │ │ ├── configuration.ts │ │ │ ├── dispose.ts │ │ │ ├── fs.electron.ts │ │ │ ├── fs.ts │ │ │ ├── hash.ts │ │ │ ├── lazy.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.browser.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/ │ │ │ │ ├── browser.test.ts │ │ │ │ ├── chat.runInTerminal.test.ts │ │ │ │ ├── chat.test.ts │ │ │ │ ├── commands.test.ts │ │ │ │ ├── configuration.test.ts │ │ │ │ ├── debug.test.ts │ │ │ │ ├── documentPaste.test.ts │ │ │ │ ├── editor.test.ts │ │ │ │ ├── env.power.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 │ │ │ │ ├── tree.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.env │ │ │ │ ├── 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_env.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_env.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 │ │ ├── esbuild.browser.mts │ │ ├── esbuild.mts │ │ ├── package.json │ │ ├── scripts/ │ │ │ └── terminateProcess.sh │ │ ├── src/ │ │ │ ├── download.ts │ │ │ ├── extension.browser.ts │ │ │ ├── extension.ts │ │ │ └── util/ │ │ │ └── processes.ts │ │ ├── tsconfig.browser.json │ │ └── 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.mjs ├── 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 │ ├── appx/ │ │ └── AppxManifest.xml │ ├── bin/ │ │ ├── code.cmd │ │ └── code.sh │ └── versioned/ │ └── bin/ │ ├── code.cmd │ └── code.sh ├── scripts/ │ ├── code-agent-host.js │ ├── code-agent-host.sh │ ├── code-cli.bat │ ├── code-cli.sh │ ├── code-perf.js │ ├── code-server.bat │ ├── code-server.js │ ├── code-server.sh │ ├── code-sessions-web.js │ ├── code-sessions-web.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 │ ├── sync-agent-host-protocol.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 │ ├── cli.ts │ ├── main.ts │ ├── server-cli.ts │ ├── server-main.ts │ ├── tsconfig.base.json │ ├── tsconfig.defineClassFields.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 │ │ ├── css.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 │ │ │ │ ├── domSanitize.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 │ │ │ │ │ ├── animations/ │ │ │ │ │ │ └── animations.ts │ │ │ │ │ ├── aria/ │ │ │ │ │ │ ├── aria.css │ │ │ │ │ │ └── aria.ts │ │ │ │ │ ├── breadcrumbs/ │ │ │ │ │ │ ├── breadcrumbsWidget.css │ │ │ │ │ │ └── breadcrumbsWidget.ts │ │ │ │ │ ├── button/ │ │ │ │ │ │ ├── button.css │ │ │ │ │ │ └── button.ts │ │ │ │ │ ├── centered/ │ │ │ │ │ │ └── centeredViewLayout.ts │ │ │ │ │ ├── codicons/ │ │ │ │ │ │ ├── codicon/ │ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ │ ├── 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 │ │ │ │ └── window.ts │ │ │ ├── common/ │ │ │ │ ├── actions.ts │ │ │ │ ├── arrays.ts │ │ │ │ ├── arraysFind.ts │ │ │ │ ├── assert.ts │ │ │ │ ├── async.ts │ │ │ │ ├── buffer.ts │ │ │ │ ├── cache.ts │ │ │ │ ├── cancellation.ts │ │ │ │ ├── charCode.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 │ │ │ │ ├── defaultAccount.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 │ │ │ │ ├── jsonRpcProtocol.ts │ │ │ │ ├── jsonSchema.ts │ │ │ │ ├── jsonc.ts │ │ │ │ ├── keyCodes.ts │ │ │ │ ├── keybindingLabels.ts │ │ │ │ ├── keybindingParser.ts │ │ │ │ ├── keybindings.ts │ │ │ │ ├── labels.ts │ │ │ │ ├── layout.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 │ │ │ │ ├── oauth.ts │ │ │ │ ├── objects.ts │ │ │ │ ├── observable.ts │ │ │ │ ├── observableInternal/ │ │ │ │ │ ├── base.ts │ │ │ │ │ ├── changeTracker.ts │ │ │ │ │ ├── commonFacade/ │ │ │ │ │ │ ├── cancellation.ts │ │ │ │ │ │ └── deps.ts │ │ │ │ │ ├── debugLocation.ts │ │ │ │ │ ├── debugName.ts │ │ │ │ │ ├── experimental/ │ │ │ │ │ │ ├── reducer.ts │ │ │ │ │ │ ├── time.ts │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── logging/ │ │ │ │ │ │ ├── consoleObservableLogger.ts │ │ │ │ │ │ ├── debugGetDependencyGraph.ts │ │ │ │ │ │ ├── debugger/ │ │ │ │ │ │ │ ├── debuggerApi.d.ts │ │ │ │ │ │ │ ├── debuggerRpc.ts │ │ │ │ │ │ │ ├── devToolsLogger.ts │ │ │ │ │ │ │ ├── rpc.ts │ │ │ │ │ │ │ └── utils.ts │ │ │ │ │ │ └── logging.ts │ │ │ │ │ ├── map.ts │ │ │ │ │ ├── observables/ │ │ │ │ │ │ ├── baseObservable.ts │ │ │ │ │ │ ├── constObservable.ts │ │ │ │ │ │ ├── derived.ts │ │ │ │ │ │ ├── derivedImpl.ts │ │ │ │ │ │ ├── lazyObservableValue.ts │ │ │ │ │ │ ├── observableFromEvent.ts │ │ │ │ │ │ ├── observableSignal.ts │ │ │ │ │ │ ├── observableSignalFromEvent.ts │ │ │ │ │ │ ├── observableValue.ts │ │ │ │ │ │ └── observableValueOpts.ts │ │ │ │ │ ├── reactions/ │ │ │ │ │ │ ├── autorun.ts │ │ │ │ │ │ └── autorunImpl.ts │ │ │ │ │ ├── set.ts │ │ │ │ │ ├── transaction.ts │ │ │ │ │ └── utils/ │ │ │ │ │ ├── promise.ts │ │ │ │ │ ├── runOnChange.ts │ │ │ │ │ ├── utils.ts │ │ │ │ │ ├── utilsCancellation.ts │ │ │ │ │ └── valueWithChangeEvent.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 │ │ │ │ ├── sseParser.ts │ │ │ │ ├── stopwatch.ts │ │ │ │ ├── stream.ts │ │ │ │ ├── strings.ts │ │ │ │ ├── symbols.ts │ │ │ │ ├── ternarySearchTree.ts │ │ │ │ ├── tfIdf.ts │ │ │ │ ├── themables.ts │ │ │ │ ├── types.ts │ │ │ │ ├── uint.ts │ │ │ │ ├── uri.ts │ │ │ │ ├── uriIpc.ts │ │ │ │ ├── uriTransformer.ts │ │ │ │ ├── uuid.ts │ │ │ │ ├── validation.ts │ │ │ │ ├── verifier.ts │ │ │ │ ├── worker/ │ │ │ │ │ ├── webWorker.ts │ │ │ │ │ └── webWorkerBootstrap.ts │ │ │ │ └── yaml.ts │ │ │ ├── node/ │ │ │ │ ├── cpuUsage.sh │ │ │ │ ├── crypto.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 │ │ │ │ ├── windowsVersion.ts │ │ │ │ └── zip.ts │ │ │ ├── parts/ │ │ │ │ ├── contextmenu/ │ │ │ │ │ ├── common/ │ │ │ │ │ │ └── contextmenu.ts │ │ │ │ │ ├── electron-browser/ │ │ │ │ │ │ └── contextmenu.ts │ │ │ │ │ └── electron-main/ │ │ │ │ │ └── contextmenu.ts │ │ │ │ ├── ipc/ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ └── ipc.mp.ts │ │ │ │ │ ├── common/ │ │ │ │ │ │ ├── ipc.electron.ts │ │ │ │ │ │ ├── ipc.mp.ts │ │ │ │ │ │ ├── ipc.net.ts │ │ │ │ │ │ └── ipc.ts │ │ │ │ │ ├── electron-browser/ │ │ │ │ │ │ ├── ipc.electron.ts │ │ │ │ │ │ └── ipc.mp.ts │ │ │ │ │ ├── electron-main/ │ │ │ │ │ │ ├── ipc.electron.ts │ │ │ │ │ │ ├── ipc.mp.ts │ │ │ │ │ │ └── ipcMain.ts │ │ │ │ │ ├── node/ │ │ │ │ │ │ ├── ipc.cp.ts │ │ │ │ │ │ ├── ipc.mp.ts │ │ │ │ │ │ └── ipc.net.ts │ │ │ │ │ └── test/ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ └── ipc.mp.test.ts │ │ │ │ │ ├── common/ │ │ │ │ │ │ └── ipc.test.ts │ │ │ │ │ ├── electron-browser/ │ │ │ │ │ │ └── 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-browser/ │ │ │ │ │ │ ├── electronTypes.ts │ │ │ │ │ │ ├── globals.ts │ │ │ │ │ │ ├── preload-aux.ts │ │ │ │ │ │ └── preload.ts │ │ │ │ │ ├── node/ │ │ │ │ │ │ └── electronTypes.ts │ │ │ │ │ └── test/ │ │ │ │ │ └── electron-browser/ │ │ │ │ │ └── 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 │ │ │ │ ├── domSanitize.test.ts │ │ │ │ ├── formattedTextRenderer.test.ts │ │ │ │ ├── hash.test.ts │ │ │ │ ├── highlightedLabel.test.ts │ │ │ │ ├── iconLabels.test.ts │ │ │ │ ├── indexedDB.test.ts │ │ │ │ ├── markdownRenderer.test.ts │ │ │ │ ├── progressBar.test.ts │ │ │ │ └── ui/ │ │ │ │ ├── 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 │ │ │ │ ├── toolbar/ │ │ │ │ │ └── toolbar.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 │ │ │ │ ├── iterativePaging.test.ts │ │ │ │ ├── iterator.test.ts │ │ │ │ ├── json.test.ts │ │ │ │ ├── jsonEdit.test.ts │ │ │ │ ├── jsonFormatter.test.ts │ │ │ │ ├── jsonParse.test.ts │ │ │ │ ├── jsonRpcProtocol.test.ts │ │ │ │ ├── jsonSchema.test.ts │ │ │ │ ├── keyCodes.test.ts │ │ │ │ ├── keybindings.test.ts │ │ │ │ ├── labels.test.ts │ │ │ │ ├── layout.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 │ │ │ │ ├── oauth.test.ts │ │ │ │ ├── objects.test.ts │ │ │ │ ├── observables/ │ │ │ │ │ ├── debug.test.ts │ │ │ │ │ └── observable.test.ts │ │ │ │ ├── paging.test.ts │ │ │ │ ├── path.test.ts │ │ │ │ ├── performance.test.ts │ │ │ │ ├── prefixTree.test.ts │ │ │ │ ├── processes.test.ts │ │ │ │ ├── resourceTree.test.ts │ │ │ │ ├── resources.test.ts │ │ │ │ ├── scrollable.test.ts │ │ │ │ ├── sinonUtils.ts │ │ │ │ ├── snapshot.ts │ │ │ │ ├── sseParser.test.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 │ │ │ │ └── yaml.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 │ │ │ ├── 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 │ │ │ ├── ps.test.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-browser/ │ │ │ │ └── workbench/ │ │ │ │ ├── workbench-dev.html │ │ │ │ ├── workbench.html │ │ │ │ └── workbench.ts │ │ │ ├── electron-main/ │ │ │ │ ├── app.ts │ │ │ │ └── main.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/ │ │ │ │ │ ├── dragScrolling.ts │ │ │ │ │ ├── editContext/ │ │ │ │ │ │ ├── clipboardUtils.ts │ │ │ │ │ │ ├── editContext.ts │ │ │ │ │ │ ├── native/ │ │ │ │ │ │ │ ├── debugEditContext.ts │ │ │ │ │ │ │ ├── editContextFactory.ts │ │ │ │ │ │ │ ├── nativeEditContext.css │ │ │ │ │ │ │ ├── nativeEditContext.ts │ │ │ │ │ │ │ ├── nativeEditContextRegistry.ts │ │ │ │ │ │ │ ├── nativeEditContextUtils.ts │ │ │ │ │ │ │ ├── screenReaderContentRich.ts │ │ │ │ │ │ │ ├── screenReaderContentSimple.ts │ │ │ │ │ │ │ ├── screenReaderSupport.ts │ │ │ │ │ │ │ └── screenReaderUtils.ts │ │ │ │ │ │ ├── screenReaderUtils.ts │ │ │ │ │ │ └── textArea/ │ │ │ │ │ │ ├── textAreaEditContext.css │ │ │ │ │ │ ├── textAreaEditContext.ts │ │ │ │ │ │ ├── textAreaEditContextInput.ts │ │ │ │ │ │ ├── textAreaEditContextRegistry.ts │ │ │ │ │ │ └── textAreaEditContextState.ts │ │ │ │ │ ├── mouseHandler.ts │ │ │ │ │ ├── mouseTarget.ts │ │ │ │ │ └── pointerHandler.ts │ │ │ │ ├── coreCommands.ts │ │ │ │ ├── dataTransfer.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 │ │ │ │ ├── services/ │ │ │ │ │ ├── abstractCodeEditorService.ts │ │ │ │ │ ├── bulkEditService.ts │ │ │ │ │ ├── codeEditorService.ts │ │ │ │ │ ├── contribution.ts │ │ │ │ │ ├── editorWorkerService.ts │ │ │ │ │ ├── inlineCompletionsService.ts │ │ │ │ │ ├── markerDecorations.ts │ │ │ │ │ ├── openerService.ts │ │ │ │ │ └── renameSymbolTrackerService.ts │ │ │ │ ├── stableEditorScroll.ts │ │ │ │ ├── triggerInlineEditCommandsRegistry.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/ │ │ │ │ │ │ ├── copySelection.ts │ │ │ │ │ │ ├── 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/ │ │ │ │ │ ├── editorMarkdownCodeBlockRenderer.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/ │ │ │ │ ├── commands/ │ │ │ │ │ ├── replaceCommand.ts │ │ │ │ │ ├── shiftCommand.ts │ │ │ │ │ ├── surroundSelectionCommand.ts │ │ │ │ │ └── trimTrailingWhitespaceCommand.ts │ │ │ │ ├── config/ │ │ │ │ │ ├── diffEditor.ts │ │ │ │ │ ├── editorConfiguration.ts │ │ │ │ │ ├── editorConfigurationSchema.ts │ │ │ │ │ ├── editorOptions.ts │ │ │ │ │ ├── editorZoom.ts │ │ │ │ │ ├── fontInfo.ts │ │ │ │ │ └── fontInfoFromSettings.ts │ │ │ │ ├── coordinatesConverter.ts │ │ │ │ ├── core/ │ │ │ │ │ ├── 2d/ │ │ │ │ │ │ ├── dimension.ts │ │ │ │ │ │ ├── point.ts │ │ │ │ │ │ ├── rect.ts │ │ │ │ │ │ └── size.ts │ │ │ │ │ ├── characterClassifier.ts │ │ │ │ │ ├── cursorColumns.ts │ │ │ │ │ ├── editOperation.ts │ │ │ │ │ ├── editorColorRegistry.ts │ │ │ │ │ ├── edits/ │ │ │ │ │ │ ├── arrayEdit.ts │ │ │ │ │ │ ├── edit.ts │ │ │ │ │ │ ├── lengthEdit.ts │ │ │ │ │ │ ├── lineEdit.ts │ │ │ │ │ │ ├── stringEdit.ts │ │ │ │ │ │ └── textEdit.ts │ │ │ │ │ ├── misc/ │ │ │ │ │ │ ├── eolCounter.ts │ │ │ │ │ │ ├── indentation.ts │ │ │ │ │ │ ├── rgba.ts │ │ │ │ │ │ └── textModelDefaults.ts │ │ │ │ │ ├── position.ts │ │ │ │ │ ├── range.ts │ │ │ │ │ ├── ranges/ │ │ │ │ │ │ ├── columnRange.ts │ │ │ │ │ │ ├── lineRange.ts │ │ │ │ │ │ ├── offsetRange.ts │ │ │ │ │ │ ├── rangeMapping.ts │ │ │ │ │ │ └── rangeSingleLine.ts │ │ │ │ │ ├── selection.ts │ │ │ │ │ ├── stringBuilder.ts │ │ │ │ │ ├── text/ │ │ │ │ │ │ ├── abstractText.ts │ │ │ │ │ │ ├── getPositionOffsetTransformerFromTextModel.ts │ │ │ │ │ │ ├── positionToOffset.ts │ │ │ │ │ │ ├── positionToOffsetImpl.ts │ │ │ │ │ │ └── textLength.ts │ │ │ │ │ ├── textChange.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 │ │ │ │ │ ├── textModelPart.ts │ │ │ │ │ ├── textModelSearch.ts │ │ │ │ │ ├── textModelStringEdit.ts │ │ │ │ │ ├── textModelText.ts │ │ │ │ │ ├── textModelTokens.ts │ │ │ │ │ ├── tokens/ │ │ │ │ │ │ ├── abstractSyntaxTokenBackend.ts │ │ │ │ │ │ ├── annotations.ts │ │ │ │ │ │ ├── tokenizationFontDecorationsProvider.ts │ │ │ │ │ │ ├── tokenizationTextModelPart.ts │ │ │ │ │ │ ├── tokenizerSyntaxTokenBackend.ts │ │ │ │ │ │ └── treeSitter/ │ │ │ │ │ │ ├── cursorUtils.ts │ │ │ │ │ │ ├── tokenStore.ts │ │ │ │ │ │ ├── treeSitterSyntaxTokenBackend.ts │ │ │ │ │ │ ├── treeSitterTokenizationImpl.ts │ │ │ │ │ │ └── treeSitterTree.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── model.ts │ │ │ │ ├── modelLineProjectionData.ts │ │ │ │ ├── services/ │ │ │ │ │ ├── completionsEnablement.ts │ │ │ │ │ ├── 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/ │ │ │ │ │ │ ├── treeSitterLibraryService.ts │ │ │ │ │ │ └── treeSitterThemeService.ts │ │ │ │ │ ├── treeViewsDnd.ts │ │ │ │ │ ├── treeViewsDndService.ts │ │ │ │ │ └── unicodeTextModelHighlighter.ts │ │ │ │ ├── standalone/ │ │ │ │ │ └── standaloneEnums.ts │ │ │ │ ├── standaloneStrings.ts │ │ │ │ ├── textModelBracketPairs.ts │ │ │ │ ├── textModelEditSource.ts │ │ │ │ ├── textModelEvents.ts │ │ │ │ ├── textModelGuides.ts │ │ │ │ ├── tokenizationRegistry.ts │ │ │ │ ├── tokenizationTextModelPart.ts │ │ │ │ ├── tokens/ │ │ │ │ │ ├── common.ts │ │ │ │ │ ├── contiguousMultilineTokens.ts │ │ │ │ │ ├── contiguousMultilineTokensBuilder.ts │ │ │ │ │ ├── contiguousTokensEditing.ts │ │ │ │ │ ├── contiguousTokensStore.ts │ │ │ │ │ ├── lineTokens.ts │ │ │ │ │ ├── sparseMultilineTokens.ts │ │ │ │ │ ├── sparseTokensStore.ts │ │ │ │ │ └── tokenWithTextArray.ts │ │ │ │ ├── viewEventHandler.ts │ │ │ │ ├── viewEvents.ts │ │ │ │ ├── viewLayout/ │ │ │ │ │ ├── lineDecorations.ts │ │ │ │ │ ├── lineHeights.ts │ │ │ │ │ ├── linePart.ts │ │ │ │ │ ├── linesLayout.ts │ │ │ │ │ ├── viewLayout.ts │ │ │ │ │ ├── viewLineRenderer.ts │ │ │ │ │ └── viewLinesViewportData.ts │ │ │ │ ├── viewModel/ │ │ │ │ │ ├── glyphLanesModel.ts │ │ │ │ │ ├── inlineDecorations.ts │ │ │ │ │ ├── minimapTokensColorTracker.ts │ │ │ │ │ ├── modelLineProjection.ts │ │ │ │ │ ├── monospaceLineBreaksComputer.ts │ │ │ │ │ ├── overviewZoneManager.ts │ │ │ │ │ ├── screenReaderSimpleModel.ts │ │ │ │ │ ├── viewContext.ts │ │ │ │ │ ├── viewModelDecoration.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 │ │ │ │ │ └── test/ │ │ │ │ │ └── browser/ │ │ │ │ │ └── defaultDocumentColorProvider.test.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 │ │ │ │ ├── floatingMenu/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── floatingMenu.contribution.ts │ │ │ │ │ ├── floatingMenu.css │ │ │ │ │ └── floatingMenu.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 │ │ │ │ │ ├── markerSelectionStatus.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 │ │ │ │ │ │ ├── hoverCopyButton.ts │ │ │ │ │ │ ├── hoverOperation.ts │ │ │ │ │ │ ├── hoverTypes.ts │ │ │ │ │ │ ├── hoverUtils.ts │ │ │ │ │ │ ├── markdownHoverParticipant.ts │ │ │ │ │ │ ├── markerHoverParticipant.ts │ │ │ │ │ │ └── resizableContentWidget.ts │ │ │ │ │ └── test/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── contentHover.test.ts │ │ │ │ │ ├── hoverCopyButton.test.ts │ │ │ │ │ └── hoverUtils.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 │ │ │ │ │ │ │ ├── common.ts │ │ │ │ │ │ │ ├── inlineCompletionContextKeys.ts │ │ │ │ │ │ │ └── inlineCompletionsController.ts │ │ │ │ │ │ ├── hintsWidget/ │ │ │ │ │ │ │ ├── hoverParticipant.ts │ │ │ │ │ │ │ ├── inlineCompletionsHintsWidget.css │ │ │ │ │ │ │ └── inlineCompletionsHintsWidget.ts │ │ │ │ │ │ ├── inlineCompletions.contribution.ts │ │ │ │ │ │ ├── inlineCompletionsAccessibleView.ts │ │ │ │ │ │ ├── model/ │ │ │ │ │ │ │ ├── InlineSuggestAlternativeAction.ts │ │ │ │ │ │ │ ├── animation.ts │ │ │ │ │ │ │ ├── changeRecorder.ts │ │ │ │ │ │ │ ├── computeGhostText.ts │ │ │ │ │ │ │ ├── editKind.ts │ │ │ │ │ │ │ ├── ghostText.ts │ │ │ │ │ │ │ ├── graph.ts │ │ │ │ │ │ │ ├── inlineCompletionIsVisible.ts │ │ │ │ │ │ │ ├── inlineCompletionsModel.ts │ │ │ │ │ │ │ ├── inlineCompletionsSource.ts │ │ │ │ │ │ │ ├── inlineSuggestionItem.ts │ │ │ │ │ │ │ ├── provideInlineCompletions.ts │ │ │ │ │ │ │ ├── renameSymbolProcessor.ts │ │ │ │ │ │ │ ├── singleTextEditHelpers.ts │ │ │ │ │ │ │ ├── suggestWidgetAdapter.ts │ │ │ │ │ │ │ ├── textModelValueReference.ts │ │ │ │ │ │ │ └── typingSpeed.ts │ │ │ │ │ │ ├── structuredLogger.ts │ │ │ │ │ │ ├── telemetry.ts │ │ │ │ │ │ ├── utils.ts │ │ │ │ │ │ └── view/ │ │ │ │ │ │ ├── ghostText/ │ │ │ │ │ │ │ ├── ghostTextView.css │ │ │ │ │ │ │ └── ghostTextView.ts │ │ │ │ │ │ ├── inlineEdits/ │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ ├── gutterIndicatorMenu.ts │ │ │ │ │ │ │ │ └── gutterIndicatorView.ts │ │ │ │ │ │ │ ├── inlineEditWithChanges.ts │ │ │ │ │ │ │ ├── inlineEditsModel.ts │ │ │ │ │ │ │ ├── inlineEditsNewUsers.ts │ │ │ │ │ │ │ ├── inlineEditsView.ts │ │ │ │ │ │ │ ├── inlineEditsViewInterface.ts │ │ │ │ │ │ │ ├── inlineEditsViewProducer.ts │ │ │ │ │ │ │ ├── inlineEditsViews/ │ │ │ │ │ │ │ │ ├── debugVisualization.ts │ │ │ │ │ │ │ │ ├── inlineEditsCollapsedView.ts │ │ │ │ │ │ │ │ ├── inlineEditsCustomView.ts │ │ │ │ │ │ │ │ ├── inlineEditsDeletionView.ts │ │ │ │ │ │ │ │ ├── inlineEditsInsertionView.ts │ │ │ │ │ │ │ │ ├── inlineEditsLineReplacementView.ts │ │ │ │ │ │ │ │ ├── inlineEditsSideBySideView.ts │ │ │ │ │ │ │ │ ├── inlineEditsWordInsertView.ts │ │ │ │ │ │ │ │ ├── inlineEditsWordReplacementView.ts │ │ │ │ │ │ │ │ ├── jumpToView.ts │ │ │ │ │ │ │ │ ├── longDistanceHint/ │ │ │ │ │ │ │ │ │ ├── inlineEditsLongDistanceHint.ts │ │ │ │ │ │ │ │ │ ├── longDistancePreviewEditor.ts │ │ │ │ │ │ │ │ │ └── longDistnaceWidgetPlacement.ts │ │ │ │ │ │ │ │ └── originalEditorInlineDiffView.ts │ │ │ │ │ │ │ ├── theme.ts │ │ │ │ │ │ │ ├── utils/ │ │ │ │ │ │ │ │ ├── flexBoxLayout.ts │ │ │ │ │ │ │ │ ├── towersLayout.ts │ │ │ │ │ │ │ │ └── utils.ts │ │ │ │ │ │ │ └── view.css │ │ │ │ │ │ └── inlineSuggestionsView.ts │ │ │ │ │ └── test/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── computeGhostText.test.ts │ │ │ │ │ ├── editKind.test.ts │ │ │ │ │ ├── getSecondaryEdits.test.ts │ │ │ │ │ ├── graph.test.ts │ │ │ │ │ ├── inlineCompletions.test.ts │ │ │ │ │ ├── inlineEdits.test.ts │ │ │ │ │ ├── layout.test.ts │ │ │ │ │ ├── longDistanceWidgetPlacement.test.ts │ │ │ │ │ ├── renameSymbolProcessor.test.ts │ │ │ │ │ ├── scrollToReveal.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 │ │ │ │ ├── middleScroll/ │ │ │ │ │ └── browser/ │ │ │ │ │ ├── middleScroll.contribution.ts │ │ │ │ │ ├── middleScroll.css │ │ │ │ │ └── middleScrollController.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 │ │ │ │ │ └── test/ │ │ │ │ │ └── browser/ │ │ │ │ │ └── gotoLineQuickAccess.test.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 │ │ │ │ │ └── viewportSemanticTokens.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 │ │ │ │ │ ├── services/ │ │ │ │ │ │ └── standaloneWebWorkerService.ts │ │ │ │ │ ├── standalone-tokens.css │ │ │ │ │ ├── standaloneCodeEditor.ts │ │ │ │ │ ├── standaloneCodeEditorService.ts │ │ │ │ │ ├── standaloneEditor.ts │ │ │ │ │ ├── standaloneLanguages.ts │ │ │ │ │ ├── standaloneLayoutService.ts │ │ │ │ │ ├── standaloneServices.ts │ │ │ │ │ ├── standaloneThemeService.ts │ │ │ │ │ ├── standaloneTreeSitterLibraryService.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 │ │ │ │ │ ├── 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 │ │ │ │ ├── testCodeEditor.ts │ │ │ │ ├── testCommand.ts │ │ │ │ ├── view/ │ │ │ │ │ ├── minimapCharRenderer.test.ts │ │ │ │ │ ├── viewController.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/ │ │ │ │ ├── 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 │ │ │ │ │ ├── stringEdit.test.ts │ │ │ │ │ ├── testLineToken.ts │ │ │ │ │ └── textEdit.test.ts │ │ │ │ ├── diff/ │ │ │ │ │ └── diffComputer.test.ts │ │ │ │ ├── languages/ │ │ │ │ │ └── defaultDocumentColorsComputer.test.ts │ │ │ │ ├── model/ │ │ │ │ │ ├── annotations.test.ts │ │ │ │ │ ├── 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 │ │ │ │ │ ├── testTreeSitterLibraryService.ts │ │ │ │ │ ├── textResourceConfigurationService.test.ts │ │ │ │ │ └── unicodeTextModelHighlighter.test.ts │ │ │ │ ├── testTextModel.ts │ │ │ │ ├── view/ │ │ │ │ │ └── overviewZoneManager.test.ts │ │ │ │ ├── viewLayout/ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── renderViewLine2_issue-11485.0.html │ │ │ │ │ │ ├── renderViewLine2_issue-11485.1.snap │ │ │ │ │ │ ├── renderViewLine2_issue-116939.0.html │ │ │ │ │ │ ├── renderViewLine2_issue-116939.1.snap │ │ │ │ │ │ ├── renderViewLine2_issue-118759.0.html │ │ │ │ │ │ ├── renderViewLine2_issue-118759.1.snap │ │ │ │ │ │ ├── renderViewLine2_issue-119416.0.html │ │ │ │ │ │ ├── renderViewLine2_issue-119416.1.snap │ │ │ │ │ │ ├── renderViewLine2_issue-124038.0.html │ │ │ │ │ │ ├── renderViewLine2_issue-124038.1.snap │ │ │ │ │ │ ├── renderViewLine2_issue-136622.0.html │ │ │ │ │ │ ├── renderViewLine2_issue-136622.1.snap │ │ │ │ │ │ ├── renderViewLine2_issue-18616.0.html │ │ │ │ │ │ ├── renderViewLine2_issue-18616.1.snap │ │ │ │ │ │ ├── renderViewLine2_issue-19207.0.html │ │ │ │ │ │ ├── renderViewLine2_issue-19207.1.snap │ │ │ │ │ │ ├── renderViewLine2_issue-22352-1.0.html │ │ │ │ │ │ ├── renderViewLine2_issue-22352-1.1.snap │ │ │ │ │ │ ├── renderViewLine2_issue-22352-2.0.html │ │ │ │ │ │ ├── renderViewLine2_issue-22352-2.1.snap │ │ │ │ │ │ ├── renderViewLine2_issue-22832-1.0.html │ │ │ │ │ │ ├── renderViewLine2_issue-22832-1.1.snap │ │ │ │ │ │ ├── renderViewLine2_issue-22832-2.0.html │ │ │ │ │ │ ├── renderViewLine2_issue-22832-2.1.snap │ │ │ │ │ │ ├── renderViewLine2_issue-30133.0.html │ │ │ │ │ │ ├── renderViewLine2_issue-30133.1.snap │ │ │ │ │ │ ├── renderViewLine2_issue-32436.0.html │ │ │ │ │ │ ├── renderViewLine2_issue-32436.1.snap │ │ │ │ │ │ ├── renderViewLine2_issue-33525-1.0.html │ │ │ │ │ │ ├── renderViewLine2_issue-33525-1.1.snap │ │ │ │ │ │ ├── renderViewLine2_issue-33525-2.0.html │ │ │ │ │ │ ├── renderViewLine2_issue-33525-2.1.snap │ │ │ │ │ │ ├── renderViewLine2_issue-37208.0.html │ │ │ │ │ │ ├── renderViewLine2_issue-37208.1.snap │ │ │ │ │ │ ├── renderViewLine2_issue-37401.0.html │ │ │ │ │ │ ├── renderViewLine2_issue-37401.1.snap │ │ │ │ │ │ ├── renderViewLine2_issue-38123.0.html │ │ │ │ │ │ ├── renderViewLine2_issue-38123.1.snap │ │ │ │ │ │ ├── renderViewLine2_issue-38935.0.html │ │ │ │ │ │ ├── renderViewLine2_issue-38935.1.snap │ │ │ │ │ │ ├── renderViewLine2_issue-42700.0.html │ │ │ │ │ │ ├── renderViewLine2_issue-42700.1.snap │ │ │ │ │ │ ├── renderViewLine2_issue-91936.0.html │ │ │ │ │ │ ├── renderViewLine2_issue-91936.1.snap │ │ │ │ │ │ ├── renderViewLine2_simple.0.html │ │ │ │ │ │ ├── renderViewLine2_simple.1.snap │ │ │ │ │ │ ├── renderViewLine2_two-tokens.0.html │ │ │ │ │ │ ├── renderViewLine2_two-tokens.1.snap │ │ │ │ │ │ ├── renderViewLine2_unsorted-deco.0.html │ │ │ │ │ │ ├── renderViewLine2_unsorted-deco.1.snap │ │ │ │ │ │ ├── renderViewLine2_ws-2-tabs.0.html │ │ │ │ │ │ ├── renderViewLine2_ws-2-tabs.1.snap │ │ │ │ │ │ ├── renderViewLine2_ws-4-leading.0.html │ │ │ │ │ │ ├── renderViewLine2_ws-4-leading.1.snap │ │ │ │ │ │ ├── renderViewLine2_ws-8-leading.0.html │ │ │ │ │ │ ├── renderViewLine2_ws-8-leading.1.snap │ │ │ │ │ │ ├── renderViewLine2_ws-all-middle.0.html │ │ │ │ │ │ ├── renderViewLine2_ws-all-middle.1.snap │ │ │ │ │ │ ├── renderViewLine2_ws-faux-indent.0.html │ │ │ │ │ │ ├── renderViewLine2_ws-faux-indent.1.snap │ │ │ │ │ │ ├── renderViewLine2_ws-middle.0.html │ │ │ │ │ │ ├── renderViewLine2_ws-middle.1.snap │ │ │ │ │ │ ├── renderViewLine2_ws-mixed.0.html │ │ │ │ │ │ ├── renderViewLine2_ws-mixed.1.snap │ │ │ │ │ │ ├── renderViewLine2_ws-monospace.0.html │ │ │ │ │ │ ├── renderViewLine2_ws-monospace.1.snap │ │ │ │ │ │ ├── renderViewLine2_ws-sel-adjacent.0.html │ │ │ │ │ │ ├── renderViewLine2_ws-sel-adjacent.1.snap │ │ │ │ │ │ ├── renderViewLine2_ws-sel-multiple.0.html │ │ │ │ │ │ ├── renderViewLine2_ws-sel-multiple.1.snap │ │ │ │ │ │ ├── renderViewLine2_ws-sel-none.0.html │ │ │ │ │ │ ├── renderViewLine2_ws-sel-none.1.snap │ │ │ │ │ │ ├── renderViewLine2_ws-sel-partial.0.html │ │ │ │ │ │ ├── renderViewLine2_ws-sel-partial.1.snap │ │ │ │ │ │ ├── renderViewLine2_ws-sel-unsorted.0.html │ │ │ │ │ │ ├── renderViewLine2_ws-sel-unsorted.1.snap │ │ │ │ │ │ ├── renderViewLine2_ws-sel-whole.0.html │ │ │ │ │ │ ├── renderViewLine2_ws-sel-whole.1.snap │ │ │ │ │ │ ├── renderViewLine2_ws-trail-8-8.0.html │ │ │ │ │ │ ├── renderViewLine2_ws-trail-8-8.1.snap │ │ │ │ │ │ ├── renderViewLine2_ws-trail-no-trail.0.html │ │ │ │ │ │ ├── renderViewLine2_ws-trail-no-trail.1.snap │ │ │ │ │ │ ├── renderViewLine2_ws-trail-only.0.html │ │ │ │ │ │ ├── renderViewLine2_ws-trail-only.1.snap │ │ │ │ │ │ ├── renderViewLine2_ws-trail-with-trail.0.html │ │ │ │ │ │ ├── renderViewLine2_ws-trail-with-trail.1.snap │ │ │ │ │ │ ├── renderViewLine_issue-137036.0.html │ │ │ │ │ │ ├── renderViewLine_issue-137036.1.snap │ │ │ │ │ │ ├── renderViewLine_issue-19673.0.html │ │ │ │ │ │ ├── renderViewLine_issue-19673.1.snap │ │ │ │ │ │ ├── renderViewLine_issue-20624.0.html │ │ │ │ │ │ ├── renderViewLine_issue-2255-1.0.html │ │ │ │ │ │ ├── renderViewLine_issue-2255-1.1.snap │ │ │ │ │ │ ├── renderViewLine_issue-2255-2.0.html │ │ │ │ │ │ ├── renderViewLine_issue-2255-2.1.snap │ │ │ │ │ │ ├── renderViewLine_issue-260239.0.html │ │ │ │ │ │ ├── renderViewLine_issue-260239.1.snap │ │ │ │ │ │ ├── renderViewLine_issue-274604.0.html │ │ │ │ │ │ ├── renderViewLine_issue-274604.1.snap │ │ │ │ │ │ ├── renderViewLine_issue-277693.0.html │ │ │ │ │ │ ├── renderViewLine_issue-277693.1.snap │ │ │ │ │ │ ├── renderViewLine_issue-6885-rtl.0.html │ │ │ │ │ │ ├── renderViewLine_issue-91178.0.html │ │ │ │ │ │ ├── renderViewLine_issue-91178.1.snap │ │ │ │ │ │ ├── renderViewLine_issue-95685.0.html │ │ │ │ │ │ ├── renderViewLine_issue-95685.1.snap │ │ │ │ │ │ ├── renderViewLine_issue-99589.0.html │ │ │ │ │ │ ├── renderViewLine_issue-99589.1.snap │ │ │ │ │ │ ├── renderViewLine_monaco-280.0.html │ │ │ │ │ │ ├── renderViewLine_monaco-280.1.snap │ │ │ │ │ │ ├── renderViewLine_overflow.0.html │ │ │ │ │ │ ├── renderViewLine_overflow.1.snap │ │ │ │ │ │ ├── renderViewLine_typical.0.html │ │ │ │ │ │ └── renderViewLine_typical.1.snap │ │ │ │ │ ├── lineDecorations.test.ts │ │ │ │ │ ├── lineHeights.test.ts │ │ │ │ │ ├── linesLayout.test.ts │ │ │ │ │ └── viewLineRenderer.test.ts │ │ │ │ └── viewModel/ │ │ │ │ ├── glyphLanesModel.test.ts │ │ │ │ ├── inlineDecorations.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 │ │ │
Showing preview only (7,202K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (75633 symbols across 4566 files)
FILE: .eslint-plugin-local/code-amd-node-module.ts
method create (line 21) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-declare-service-brand.ts
method create (line 16) | 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(import.meta.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 31) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-must-use-result.ts
constant VALID_USES (line 10) | const VALID_USES = new Set<TSESTree.AST_NODE_TYPES | undefined>([
method create (line 20) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-must-use-super-dispose.ts
method create (line 12) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-no-accessor-after-await.ts
method create (line 33) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
function checkFunctionWithAccessorParam (line 73) | function checkFunctionWithAccessorParam(
function isDirectInvokeFunctionCallback (line 94) | function isDirectInvokeFunctionCallback(
function hasServicesAccessorAnnotation (line 104) | function hasServicesAccessorAnnotation(param: TSESTree.Identifier): bool...
function checkForAccessorAfterAwait (line 116) | function checkForAccessorAfterAwait(
function blockAlwaysExits (line 260) | function blockAlwaysExits(node: TSESTree.Node): boolean {
function isAccessorUsage (line 278) | function isAccessorUsage(node: TSESTree.Node, accessorName: string): boo...
function walkChildren (line 298) | function walkChildren(node: TSESTree.Node, visit: (child: TSESTree.Node)...
function getParamName (line 400) | function getParamName(param: TSESTree.Parameter): string | null {
function isInvokeFunctionCall (line 409) | function isInvokeFunctionCall(callee: TSESTree.Expression): boolean {
FILE: .eslint-plugin-local/code-no-any-casts.ts
method create (line 11) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-no-dangerous-type-assertions.ts
method create (line 12) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-no-declare-const-enum.ts
method create (line 27) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-no-deep-import-of-internal.ts
method create (line 29) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
function splitParts (line 64) | function splitParts(path: string): string[] {
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-http-import.ts
constant REPO_ROOT (line 14) | const REPO_ROOT = normalize(`${import.meta.dirname}/..`);
method create (line 38) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-no-icons-in-localized-strings.ts
method create (line 37) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-no-in-operator.ts
method create (line 29) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-no-localization-template-literals.ts
method create (line 34) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-no-localized-model-description.ts
constant MESSAGE_ID (line 11) | const MESSAGE_ID = 'noLocalizedModelDescription';
type NodeWithChildren (line 12) | type NodeWithChildren = TSESTree.Node & {
type PropertyKeyNode (line 15) | type PropertyKeyNode = TSESTree.Property['key'] | TSESTree.MemberExpress...
type AssignmentTarget (line 16) | type AssignmentTarget = TSESTree.AssignmentExpression['left'];
method create (line 27) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
function isModelDescriptionKey (line 53) | function isModelDescriptionKey(key: PropertyKeyNode, computed: boolean |...
function isModelDescriptionAssignmentTarget (line 63) | function isModelDescriptionAssignmentTarget(target: AssignmentTarget): t...
function containsLocalizedCall (line 70) | function containsLocalizedCall(expression: TSESTree.Expression): boolean {
function isLocalizeCall (line 104) | function isLocalizeCall(node: TSESTree.Node): boolean {
function isLocalizeCallee (line 115) | function isLocalizeCallee(callee: TSESTree.CallExpression['callee']): bo...
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-observable-get-in-reactive-context.ts
method create (line 20) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
function checkFunctionForObservableGetCalls (line 48) | function checkFunctionForObservableGetCalls(
function isObservableGetCall (line 81) | function isObservableGetCall(node: TSESTree.CallExpression): boolean {
function getReaderParameterName (line 111) | function getReaderParameterName(fn: TSESTree.ArrowFunctionExpression | T...
function isReactiveFunctionWithReader (line 124) | function isReactiveFunctionWithReader(callee: TSESTree.Node): boolean {
function walkChildren (line 131) | function walkChildren(node: TSESTree.Node, cb: (child: TSESTree.Node) =>...
FILE: .eslint-plugin-local/code-no-potentially-unsafe-disposables.ts
method create (line 16) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-no-reader-after-await.ts
method create (line 11) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
function checkFunctionForAwaitBeforeReader (line 39) | function checkFunctionForAwaitBeforeReader(
function getMethodName (line 121) | function getMethodName(callExpression: TSESTree.CallExpression): string {
function isReaderMethodCall (line 129) | function isReaderMethodCall(node: TSESTree.CallExpression, readerName: s...
function getReaderParameterName (line 152) | function getReaderParameterName(fn: TSESTree.ArrowFunctionExpression | T...
function isFunctionWithReader (line 163) | function isFunctionWithReader(callee: TSESTree.Node): boolean {
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-node-module-import.ts
constant REPO_ROOT (line 18) | const REPO_ROOT = normalize(join(import.meta.dirname, '../'));
method create (line 37) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-no-static-self-ref.ts
method create (line 15) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-no-telemetry-common-property.ts
method create (line 61) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-no-test-async-suite.ts
function isCallExpression (line 10) | function isCallExpression(node: TSESTree.Node): node is TSESTree.CallExp...
function isFunctionExpression (line 14) | function isFunctionExpression(node: TSESTree.Node): node is TSESTree.Fun...
method create (line 20) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-no-test-only.ts
method create (line 11) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/code-no-unexternalized-strings.ts
function isStringLiteral (line 10) | function isStringLiteral(node: TSESTree.Node | ESTree.Node | null | unde...
function isDoubleQuoted (line 14) | function isDoubleQuoted(node: TSESTree.StringLiteral): boolean {
method create (line 42) | 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-policy-localization-key-match.ts
method create (line 37) | 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/tests/code-no-observable-get-in-reactive-context-test.ts
function testValidUsage (line 10) | function testValidUsage() {
function testInvalidUsage (line 30) | function testInvalidUsage() {
function testComplexCases (line 65) | function testComplexCases() {
function testValidComplexCases (line 108) | function testValidComplexCases() {
function testEdgeCases (line 139) | function testEdgeCases() {
function testQuickFixScenarios (line 165) | function testQuickFixScenarios() {
FILE: .eslint-plugin-local/tests/code-no-reader-after-await-test.ts
function testValidUsage (line 10) | function testValidUsage() {
function testInvalidUsage (line 24) | function testInvalidUsage() {
function testComplexCases (line 49) | function testComplexCases() {
function testValidComplexCases (line 76) | function testValidComplexCases() {
FILE: .eslint-plugin-local/utils.ts
function createImportRuleListener (line 10) | 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 18) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/vscode-dts-event-naming.ts
method create (line 27) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
method getIdent (line 86) | private getIdent(def: TSESTree.Node | undefined): TSESTree.Identifier | ...
FILE: .eslint-plugin-local/vscode-dts-interface-naming.ts
method create (line 21) | 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 20) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/vscode-dts-use-export.ts
method create (line 19) | create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
FILE: .eslint-plugin-local/vscode-dts-use-thenable.ts
method create (line 18) | 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/skills/azure-pipelines/azure-pipeline.ts
constant ORGANIZATION (line 31) | const ORGANIZATION = 'https://dev.azure.com/monacotools';
constant PROJECT (line 32) | const PROJECT = 'Monaco';
constant DEFAULT_DEFINITION_ID (line 33) | const DEFAULT_DEFINITION_ID = '111';
constant DEFAULT_WATCH_INTERVAL (line 34) | const DEFAULT_WATCH_INTERVAL = 30;
constant NUMERIC_ID_PATTERN (line 37) | const NUMERIC_ID_PATTERN = /^\d+$/;
constant MAX_ID_LENGTH (line 38) | const MAX_ID_LENGTH = 15;
constant BRANCH_PATTERN (line 39) | const BRANCH_PATTERN = /^[a-zA-Z0-9_\-./]+$/;
constant MAX_BRANCH_LENGTH (line 40) | const MAX_BRANCH_LENGTH = 256;
constant PARAMETER_PATTERN (line 41) | const PARAMETER_PATTERN = /^[a-zA-Z_][a-zA-Z0-9_]*=[a-zA-Z0-9_\-./: +]*$/;
constant MAX_PARAMETER_LENGTH (line 42) | const MAX_PARAMETER_LENGTH = 256;
constant ARTIFACT_NAME_PATTERN (line 43) | const ARTIFACT_NAME_PATTERN = /^[a-zA-Z0-9_\-.]+$/;
constant MAX_ARTIFACT_NAME_LENGTH (line 44) | const MAX_ARTIFACT_NAME_LENGTH = 256;
constant MIN_WATCH_INTERVAL (line 45) | const MIN_WATCH_INTERVAL = 5;
constant MAX_WATCH_INTERVAL (line 46) | const MAX_WATCH_INTERVAL = 3600;
type Build (line 52) | interface Build {
type TimelineRecord (line 65) | interface TimelineRecord {
type Timeline (line 76) | interface Timeline {
type Artifact (line 80) | interface Artifact {
type QueueArgs (line 88) | interface QueueArgs {
type StatusArgs (line 96) | interface StatusArgs {
type CancelArgs (line 109) | interface CancelArgs {
function validateNumericId (line 133) | function validateNumericId(value: string, name: string): void {
function validateBranch (line 147) | function validateBranch(value: string): void {
function validateParameters (line 162) | function validateParameters(values: string[]): void {
function validateArtifactName (line 179) | function validateArtifactName(value: string): void {
function validateWatchInterval (line 198) | function validateWatchInterval(value: number): void {
function commandExists (line 209) | function commandExists(command: string): boolean {
function hasAzureDevOpsExtension (line 218) | function hasAzureDevOpsExtension(): boolean {
function getCurrentBranch (line 227) | function getCurrentBranch(): string {
function ensureAzureCli (line 235) | function ensureAzureCli(): void {
function sleep (line 254) | function sleep(seconds: number): Promise<void> {
function clearScreen (line 258) | function clearScreen(): void {
function formatStatus (line 266) | function formatStatus(status: string): string {
function formatResult (line 282) | function formatResult(result: string): string {
function formatTimelineStatus (line 297) | function formatTimelineStatus(state: string, result: string): string {
function formatBytes (line 316) | function formatBytes(bytes: number): string {
function formatRelativeTime (line 326) | function formatRelativeTime(dateStr: string): string {
function formatReason (line 349) | function formatReason(reason: string): string {
function padOrTruncate (line 370) | function padOrTruncate(str: string, width: number): string {
function displayBuildSummary (line 377) | function displayBuildSummary(build: Build): void {
function displayBuildList (line 408) | function displayBuildList(builds: Build[]): void {
function displayTimeline (line 464) | function displayTimeline(timeline: Timeline | null): void {
function displayArtifacts (line 511) | function displayArtifacts(artifacts: Artifact[]): void {
function displayNextSteps (line 535) | function displayNextSteps(buildId: string): void {
class AzureDevOpsClient (line 548) | class AzureDevOpsClient {
method constructor (line 552) | constructor(organization: string, project: string) {
method runAzCommand (line 557) | protected runAzCommand(args: string[]): Promise<string> {
method rest (line 587) | private async rest<T>(method: string, url: string, body?: string): Pro...
method queueBuild (line 618) | async queueBuild(definitionId: string, branch: string, parameters: str...
method getBuild (line 636) | async getBuild(buildId: string): Promise<Build | null> {
method listBuilds (line 652) | async listBuilds(definitionId: string, options: { branch?: string; rea...
method findRecentBuild (line 675) | async findRecentBuild(branch: string, definitionId: string): Promise<s...
method cancelBuild (line 694) | async cancelBuild(buildId: string): Promise<Build> {
method getTimeline (line 699) | async getTimeline(buildId: string): Promise<Timeline | null> {
method getArtifacts (line 708) | async getArtifacts(buildId: string): Promise<Artifact[]> {
method downloadLog (line 718) | async downloadLog(buildId: string, logId: string): Promise<string> {
method downloadArtifact (line 733) | async downloadArtifact(buildId: string, artifactName: string): Promise...
function printQueueUsage (line 776) | function printQueueUsage(): void {
function parseQueueArgs (line 797) | function parseQueueArgs(args: string[]): QueueArgs {
function validateQueueArgs (line 841) | function validateQueueArgs(args: QueueArgs): void {
function runQueueCommand (line 847) | async function runQueueCommand(args: string[]): Promise<void> {
function printStatusUsage (line 936) | function printStatusUsage(): void {
function parseStatusArgs (line 963) | function parseStatusArgs(args: string[]): StatusArgs {
function validateStatusArgs (line 1020) | function validateStatusArgs(args: StatusArgs): void {
function runStatusCommand (line 1030) | async function runStatusCommand(args: string[]): Promise<void> {
function printCancelUsage (line 1177) | function printCancelUsage(): void {
function parseCancelArgs (line 1194) | function parseCancelArgs(args: string[]): CancelArgs {
function validateCancelArgs (line 1227) | function validateCancelArgs(args: CancelArgs): void {
function runCancelCommand (line 1232) | async function runCancelCommand(args: string[]): Promise<void> {
class TestableAzureDevOpsClient (line 1321) | class TestableAzureDevOpsClient extends AzureDevOpsClient {
method constructor (line 1325) | constructor(organization: string, project: string) {
method setMockResponse (line 1329) | setMockResponse(commandPattern: string, response: unknown): void {
method runAzCommand (line 1333) | protected override runAzCommand(args: string[]): Promise<string> {
function runAllTests (line 1379) | async function runAllTests(): Promise<void> {
function printMainUsage (line 1826) | function printMainUsage(): void {
function main (line 1851) | async function main(): Promise<void> {
FILE: .vscode/extensions/vscode-extras/src/extension.ts
class Extension (line 9) | class Extension extends vscode.Disposable {
method constructor (line 13) | constructor(_context: vscode.ExtensionContext) {
method _updateNpmFeature (line 31) | private _updateNpmFeature(): void {
function activate (line 44) | function activate(context: vscode.ExtensionContext) {
function deactivate (line 49) | function deactivate() {
FILE: .vscode/extensions/vscode-extras/src/npmUpToDateFeature.ts
type FileHashes (line 11) | interface FileHashes {
type PostinstallState (line 15) | interface PostinstallState {
type InstallState (line 20) | interface InstallState {
class NpmUpToDateFeature (line 28) | class NpmUpToDateFeature extends vscode.Disposable {
method constructor (line 38) | constructor(private readonly _output: vscode.LogOutputChannel) {
method _runNpmInstall (line 90) | private _runNpmInstall(): void {
method _queryState (line 108) | private _queryState(): InstallState | undefined {
method _check (line 129) | private _check(): void {
method _showDiff (line 167) | private _showDiff(file: string): void {
method _readSavedContent (line 183) | private _readSavedContent(file: string): string {
method _readCurrentContent (line 195) | private _readCurrentContent(file: string): string {
method _getChangedFiles (line 211) | private _getChangedFiles(state: InstallState): { readonly label: strin...
method _setupWatcher (line 228) | private _setupWatcher(state: InstallState): void {
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 554) | private loadSourceMap(fileUri: string) {
function replaceAllLocations (line 583) | async function replaceAllLocations(store: SourceMapStore, str: string) {
function deriveStackLocations (line 616) | async function deriveStackLocations(
function deriveSourceLocation (line 650) | async function deriveSourceLocation(store: SourceMapStore, parts: RegExp...
function findLastIndex (line 655) | 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>;
function isVsCodeWorkspaceFolder (line 42) | async function isVsCodeWorkspaceFolder(folder: vscode.WorkspaceFolder): ...
class TestFile (line 62) | class TestFile {
method constructor (line 65) | constructor(
method getId (line 70) | public getId() {
method getLabel (line 74) | public getLabel() {
method updateFromDisk (line 78) | public async updateFromDisk(controller: vscode.TestController, item: v...
method updateFromContents (line 91) | public updateFromContents(
method constructor (line 170) | constructor(
class TestSuite (line 179) | class TestSuite extends TestConstruct { }
class TestCase (line 181) | class TestCase extends TestConstruct { }
type VSCodeTest (line 183) | 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 314) | protected override async binaryPath() {
FILE: build/azure-pipelines/common/checkCopilotChatCompatibility.ts
function fetchLatestExtensionManifest (line 13) | async function fetchLatestExtensionManifest(extensionId: string): Promis...
function checkCopilotChatCompatibility (line 44) | async function checkCopilotChatCompatibility(): Promise<void> {
FILE: build/azure-pipelines/common/checkDistroCommit.ts
function getEnv (line 12) | function getEnv(name: string): string {
type GitHubBranchResponse (line 22) | interface GitHubBranchResponse {
function getDistroBranchHead (line 28) | async function getDistroBranchHead(branch: string, token: string): Promi...
function checkDistroCommit (line 48) | async function checkDistroCommit(): Promise<void> {
FILE: build/azure-pipelines/common/checkForArtifact.ts
function getPipelineArtifacts (line 9) | async function getPipelineArtifacts(): Promise<Artifact[]> {
function main (line 14) | async function main([variableName, artifactName]: string[]): Promise<voi...
FILE: build/azure-pipelines/common/codesign.ts
function printBanner (line 8) | function printBanner(title: string) {
function streamProcessOutputAndCheckResult (line 18) | async function streamProcessOutputAndCheckResult(name: string, promise: ...
function spawnCodesignProcess (line 28) | function spawnCodesignProcess(esrpCliDLLPath: string, type: 'sign-window...
FILE: build/azure-pipelines/common/computeNodeModulesCacheKey.ts
constant ROOT (line 10) | const ROOT = path.join(import.meta.dirname, '../../../');
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/extract-telemetry.ts
constant BUILD_STAGINGDIRECTORY (line 11) | const BUILD_STAGINGDIRECTORY = process.env.BUILD_STAGINGDIRECTORY ?? fs....
constant BUILD_SOURCESDIRECTORY (line 12) | const BUILD_SOURCESDIRECTORY = process.env.BUILD_SOURCESDIRECTORY ?? pat...
type ITelemetryConfigEntry (line 33) | interface ITelemetryConfigEntry {
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.ts
constant ROOT (line 14) | const ROOT = path.join(import.meta.dirname, '../../../');
function findNodeModulesFiles (line 16) | function findNodeModulesFiles(location: string, inNodeModules: boolean, ...
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 85) | type StatusCode = typeof StatusCode[keyof typeof StatusCode];
type ReleaseResultMessage (line 87) | interface ReleaseResultMessage {
type ReleaseFileInfo (line 105) | interface ReleaseFileInfo {
type ReleaseDetailsFileInfo (line 129) | interface ReleaseDetailsFileInfo extends ReleaseFileInfo { }
type ReleaseDetailsMessage (line 131) | interface ReleaseDetailsMessage extends ReleaseResultMessage {
type ProductInfo (line 147) | interface ProductInfo {
type ReleaseInfo (line 153) | interface ReleaseInfo {
type FileLocationType (line 161) | type FileLocationType = 'azureBlob';
type FileLocation (line 163) | interface FileLocation {
type FileHashType (line 170) | type FileHashType = 'sha256' | 'sha1';
type FileDownloadDetails (line 172) | interface FileDownloadDetails {
type RoutingInfo (line 177) | interface RoutingInfo {
type ReleaseFileInfo (line 185) | interface ReleaseFileInfo {
type UserInfo (line 209) | interface UserInfo {
type OwnerInfo (line 213) | interface OwnerInfo {
type ApproverInfo (line 217) | interface ApproverInfo {
type AccessPermissionsInfo (line 223) | interface AccessPermissionsInfo {
type DownloadCenterLocaleInfo (line 229) | interface DownloadCenterLocaleInfo {
type DownloadCenterInfo (line 242) | interface DownloadCenterInfo {
type ReleaseRequestMessage (line 254) | interface ReleaseRequestMessage {
function getCertificateBuffer (line 273) | function getCertificateBuffer(input: string) {
function getThumbprint (line 277) | function getThumbprint(input: string, algorithm: string): Buffer {
function getKeyFromPFX (line 282) | function getKeyFromPFX(pfx: string): string {
function getCertificatesFromPFX (line 299) | function getCertificatesFromPFX(pfx: string): string[] {
class ESRPReleaseService (line 316) | class ESRPReleaseService {
method create (line 318) | static async create(
method constructor (line 361) | private constructor(
method createRelease (line 379) | async createRelease(version: string, filePath: string, friendlyFileNam...
method submitRelease (line 424) | private async submitRelease(
method getReleaseStatus (line 497) | private async getReleaseStatus(releaseId: string): Promise<ReleaseResu...
method getReleaseDetails (line 514) | private async getReleaseDetails(releaseId: string): Promise<ReleaseDet...
method generateJwsToken (line 531) | private async generateJwsToken(message: ReleaseRequestMessage): Promis...
class State (line 553) | class State {
method constructor (line 558) | constructor() {
method size (line 577) | get size(): number {
method has (line 581) | has(name: string): boolean {
method add (line 585) | add(name: string): void {
method [Symbol.iterator] (line 590) | [Symbol.iterator](): IterableIterator<string> {
function requestAZDOAPI (line 607) | async function requestAZDOAPI<T>(path: string): Promise<T> {
type Artifact (line 624) | interface Artifact {
function getPipelineArtifacts (line 634) | async function getPipelineArtifacts(): Promise<Artifact[]> {
type Timeline (line 639) | interface Timeline {
function getPipelineTimeline (line 648) | async function getPipelineTimeline(): Promise<Timeline> {
function downloadArtifact (line 652) | async function downloadArtifact(artifact: Artifact, downloadPath: string...
function unzip (line 669) | async function unzip(packagePath: string, outputPath: string): Promise<s...
type Asset (line 706) | interface Asset {
function getPlatform (line 719) | function getPlatform(product: string, os: string, arch: string, type: st...
function getRealType (line 816) | function getRealType(type: string) {
function withLease (line 828) | async function withLease<T>(client: BlockBlobClient, fn: () => Promise<T...
function processArtifact (line 870) | async function processArtifact(
function main (line 959) | async function main() {
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.ts
function retry (line 6) | async function retry<T>(fn: (attempt: number) => Promise<T>): Promise<T> {
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/common/versionCompatibility.ts
type IExtensionManifest (line 8) | interface IExtensionManifest {
function isEngineCompatible (line 18) | function isEngineCompatible(productVersion: string, engineVersion: strin...
function parseApiProposals (line 73) | function parseApiProposals(enabledApiProposals: string[]): { proposalNam...
function areApiProposalsCompatible (line 80) | function areApiProposalsCompatible(
function parseApiProposalsFromSource (line 106) | function parseApiProposalsFromSource(content: string): { [proposalName: ...
function areAllowlistedApiProposalsMatching (line 127) | function areAllowlistedApiProposalsMatching(
function checkExtensionCompatibility (line 171) | function checkExtensionCompatibility(
FILE: build/azure-pipelines/common/waitForArtifacts.ts
function getPipelineArtifacts (line 9) | async function getPipelineArtifacts(): Promise<Artifact[]> {
function main (line 14) | async function main(artifacts: string[]): Promise<void> {
FILE: build/azure-pipelines/darwin/codesign.ts
function main (line 9) | async function main() {
FILE: build/azure-pipelines/distro/mixin-npm.ts
function log (line 10) | function log(...args: unknown[]): void {
function mixin (line 14) | function mixin(mixinPath: string) {
function main (line 33) | 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: unknown[]): void {
function main (line 30) | function main() {
FILE: build/azure-pipelines/github-check-run.js
function createJwt (line 16) | function createJwt(appId, privateKey) {
function request (line 29) | function request(options, body) {
function getInstallationToken (line 55) | async function getInstallationToken(jwt, installationId) {
function updateCheckRun (line 77) | function updateCheckRun(token, checkRunId, conclusion, detailsUrl) {
function main (line 96) | async function main() {
FILE: build/azure-pipelines/linux/codesign.ts
function main (line 9) | async function main() {
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.ts
function updateDTSFile (line 38) | function updateDTSFile(outPath: string, shorttag: string) {
function repeat (line 45) | function repeat(str: string, times: number): string {
function convertTabsToSpaces (line 53) | function convertTabsToSpaces(str: string): string {
function getNewFileContent (line 57) | function getNewFileContent(content: string, shorttag: string) {
function getNewFileHeader (line 68) | function getNewFileHeader(shorttag: string) {
FILE: build/azure-pipelines/update-dependencies-check.ts
function createJwt (line 9) | function createJwt(appId: string, privateKey: string): string {
function request (line 17) | function request(options: https.RequestOptions, body?: object): Promise<...
function getInstallationToken (line 38) | async function getInstallationToken(jwt: string, installationId: string)...
function updateCheckRun (line 53) | function updateCheckRun(token: string, checkRunId: string, conclusion: s...
function main (line 72) | async function main() {
FILE: build/azure-pipelines/upload-cdn.ts
function wait (line 71) | function wait(stream: es.ThroughStream): Promise<void> {
function main (line 78) | async function main(): Promise<void> {
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.ts
function src (line 23) | function src(base: string, maps = `${base}/**/*.map`) {
function main (line 31) | function main(): Promise<void> {
FILE: build/azure-pipelines/win32/codesign.ts
function main (line 10) | async function main() {
FILE: build/buildfile.ts
function createModuleDescription (line 8) | function createModuleDescription(name: string): IEntryPoint {
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/checker/layersChecker.ts
constant NATIVE_TYPES (line 26) | const NATIVE_TYPES = [
constant RULES (line 37) | const RULES: IRule[] = [
constant TS_CONFIG_PATH (line 97) | const TS_CONFIG_PATH = join(import.meta.dirname, '../../', 'src', 'tscon...
type IRule (line 99) | interface IRule {
function checkFile (line 107) | function checkFile(program: ts.Program, sourceFile: ts.SourceFile, rule:...
function createProgram (line 142) | function createProgram(tsconfigPath: string): ts.Program {
FILE: build/darwin/create-dmg.ts
constant DMGBUILD_REPO (line 13) | const DMGBUILD_REPO = 'https://github.com/dmgbuild/dmgbuild.git';
constant DMGBUILD_COMMIT (line 14) | const DMGBUILD_COMMIT = '75c8a6c7835c5b73dfd4510d92a8f357f93a5fbf';
constant MIN_PYTHON_VERSION (line 15) | const MIN_PYTHON_VERSION = [3, 10];
function getDmgBuildPath (line 17) | function getDmgBuildPath(): string {
function getVenvPath (line 21) | function getVenvPath(): string {
function getPythonPath (line 25) | function getPythonPath(): string {
function checkPythonVersion (line 29) | async function checkPythonVersion(pythonBin: string): Promise<boolean> {
function findSuitablePython (line 49) | async function findSuitablePython(): Promise<string> {
function ensureDmgBuild (line 95) | async function ensureDmgBuild(): Promise<void> {
function runDmgBuild (line 133) | async function runDmgBuild(settingsFile: string, volumeName: string, art...
function main (line 142) | async function main(buildDir?: string, outDir?: string): Promise<void> {
FILE: build/darwin/create-universal-app.ts
function crossCopyPlatformDir (line 24) | function crossCopyPlatformDir(x64AppPath: string, arm64AppPath: string, ...
function main (line 37) | async function main(buildDir?: string) {
FILE: build/darwin/patch-dmg.py
function patch_dmg_icon (line 8) | def patch_dmg_icon(dmg_path, new_icon_path):
FILE: build/darwin/sign-server.ts
constant MACHO_MAGIC_NUMBERS (line 10) | const MACHO_MAGIC_NUMBERS = new Set([
function isMachOBinary (line 19) | function isMachOBinary(filePath: string): boolean {
function main (line 38) | async function main(serverDir: string): Promise<void> {
FILE: build/darwin/sign.ts
function getElectronVersion (line 19) | function getElectronVersion(): string {
function getEntitlementsForFile (line 25) | function getEntitlementsForFile(filePath: string): string {
function retrySignOnKeychainError (line 36) | async function retrySignOnKeychainError<T>(fn: () => Promise<T>, maxRetr...
function main (line 65) | async function main(buildDir?: string): Promise<void> {
FILE: build/darwin/verify-macho.ts
constant MACHO_PREFIX (line 12) | const MACHO_PREFIX = 'Mach-O ';
constant MACHO_64_MAGIC_LE (line 13) | const MACHO_64_MAGIC_LE = 0xfeedfacf;
constant MACHO_UNIVERSAL_MAGIC_LE (line 14) | const MACHO_UNIVERSAL_MAGIC_LE = 0xbebafeca;
constant MACHO_ARM64_CPU_TYPE (line 15) | const MACHO_ARM64_CPU_TYPE = new Set([
constant MACHO_X86_64_CPU_TYPE (line 19) | const MACHO_X86_64_CPU_TYPE = new Set([
constant FILES_TO_SKIP (line 25) | const FILES_TO_SKIP = [
function isFileSkipped (line 39) | function isFileSkipped(file: string): boolean {
function read (line 43) | async function read(file: string, buf: Buffer, offset: number, length: n...
function checkMachOFiles (line 53) | async function checkMachOFiles(appPath: string, arch: string) {
FILE: build/eslint.ts
function eslint (line 11) | function eslint(): NodeJS.ReadWriteStream {
FILE: build/gulp-eslint.ts
type ESLintResults (line 11) | interface ESLintResults extends Array<ESLint.LintResult> {
type EslintAction (line 16) | interface EslintAction {
function eslint (line 20) | function eslint(action: EslintAction) {
function createTransform (line 71) | function createTransform(
FILE: build/gulpfile.compile.ts
function makeCompileBuildTask (line 12) | function makeCompileBuildTask(disableMangle: boolean) {
FILE: build/gulpfile.editor.ts
constant BUNDLED_FILE_HEADER (line 28) | const BUNDLED_FILE_HEADER = [
function toExternalDTS (line 93) | function toExternalDTS(contents: string) {
function createTscCompileTask (line 236) | function createTscCompileTask(watch: boolean) {
function setUnsetField (line 294) | function setUnsetField(obj: Record<string, unknown>, field: string, valu...
FILE: build/gulpfile.extensions.ts
function onExtensionCompilationStart (line 36) | function onExtensionCompilationStart(): void {
function onExtensionCompilationEnd (line 43) | function onExtensionCompilationEnd(): void {
function rewriteTsgoSourceMappingUrlsIfNeeded (line 103) | function rewriteTsgoSourceMappingUrlsIfNeeded(build: boolean, out: strin...
function createPipeline (line 132) | function createPipeline(build: boolean, emitError?: boolean, transpileOn...
function buildWebExtensions (line 303) | async function buildWebExtensions(isWatch: boolean): Promise<void> {
FILE: build/gulpfile.hygiene.ts
function checkPackageJSON (line 14) | function checkPackageJSON(this: NodeJS.ReadWriteStream, actualPath: stri...
FILE: build/gulpfile.reh.ts
constant REPO_ROOT (line 43) | const REPO_ROOT = path.dirname(import.meta.dirname);
constant BUILD_ROOT (line 45) | const BUILD_ROOT = path.dirname(REPO_ROOT);
constant REMOTE_FOLDER (line 46) | const REMOTE_FOLDER = path.join(REPO_ROOT, 'remote');
constant BUILD_TARGETS (line 50) | const BUILD_TARGETS = [
function getNodeVersion (line 147) | function getNodeVersion() {
function getNodeChecksum (line 154) | function getNodeChecksum(expectedName: string): string | undefined {
function extractAlpinefromDocker (line 165) | function extractAlpinefromDocker(nodeVersion: string, platform: string, ...
function nodejs (line 197) | function nodejs(platform: string, arch: string): NodeJS.ReadWriteStream ...
function packageTask (line 260) | function packageTask(type: string, platform: string, arch: string, sourc...
function patchWin32DependenciesTask (line 432) | function patchWin32DependenciesTask(destinationFolderName: string) {
function copyCopilotNativeDepsTaskREH (line 466) | function copyCopilotNativeDepsTaskREH(platform: string, arch: string, de...
function tweakProductForServerWeb (line 476) | function tweakProductForServerWeb(product: typeof import('../product.jso...
FILE: build/gulpfile.scan.ts
constant BUILD_TARGETS (line 18) | const BUILD_TARGETS = [
function getProductionDependencySources (line 76) | function getProductionDependencySources() {
function nodeModules (line 81) | function nodeModules(destinationExe: string, destinationPdb: string, pla...
function confirmPdbsExist (line 117) | function confirmPdbsExist(destinationExe: string, destinationPdb: string) {
FILE: build/gulpfile.vscode.linux.ts
function getDebPackageArch (line 29) | function getDebPackageArch(arch: string): string {
function prepareDebPackage (line 38) | function prepareDebPackage(arch: string) {
function buildDebPackage (line 124) | function buildDebPackage(arch: string) {
function getRpmBuildPath (line 135) | function getRpmBuildPath(rpmArch: string): string {
function getRpmPackageArch (line 139) | function getRpmPackageArch(arch: string): string {
function prepareRpmPackage (line 148) | function prepareRpmPackage(arch: string) {
function buildRpmPackage (line 219) | function buildRpmPackage(arch: string) {
function getSnapBuildPath (line 232) | function getSnapBuildPath(arch: string): string {
function prepareSnapPackage (line 236) | function prepareSnapPackage(arch: string) {
function buildSnapPackage (line 280) | function buildSnapPackage(arch: string) {
constant BUILD_TARGETS (line 285) | const BUILD_TARGETS = [
FILE: build/gulpfile.vscode.ts
function runEsbuildTranspile (line 166) | function runEsbuildTranspile(outDir: string, excludeTests: boolean): Pro...
function runEsbuildBundle (line 190) | function runEsbuildBundle(outDir: string, minify: boolean, nls: boolean,...
function runTsGoTypeCheck (line 222) | function runTsGoTypeCheck(): Promise<void> {
function computeChecksums (line 295) | function computeChecksums(out: string, filenames: string[]): Record<stri...
function computeChecksum (line 310) | function computeChecksum(filename: string): string {
function packageTask (line 322) | function packageTask(platform: string, arch: string, sourceFolderName: s...
function patchWin32DependenciesTask (line 649) | function patchWin32DependenciesTask(destinationFolderName: string) {
function copyCopilotNativeDepsTask (line 685) | function copyCopilotNativeDepsTask(platform: string, arch: string, desti...
constant BUILD_TARGETS (line 702) | const BUILD_TARGETS = [
FILE: build/gulpfile.vscode.web.ts
constant REPO_ROOT (line 27) | const REPO_ROOT = path.dirname(import.meta.dirname);
constant BUILD_ROOT (line 28) | const BUILD_ROOT = path.dirname(REPO_ROOT);
constant WEB_FOLDER (line 29) | const WEB_FOLDER = path.join(REPO_ROOT, 'remote', 'web');
function runEsbuildBundle (line 36) | function runEsbuildBundle(outDir: string, minify: boolean, nls: boolean,...
function packageTask (line 174) | function packageTask(sourceFolderName: string, destinationFolderName: st...
FILE: build/gulpfile.vscode.win32.ts
function packageInnoSetup (line 29) | function packageInnoSetup(iss: string, options: { definitions?: Record<s...
function buildWin32Setup (line 62) | function buildWin32Setup(arch: string, target: string): task.CallbackTask {
function defineWin32SetupTasks (line 138) | function defineWin32SetupTasks(arch: string, target: string) {
function copyInnoUpdater (line 148) | function copyInnoUpdater(arch: string) {
function updateIcon (line 155) | function updateIcon(executablePath: string): task.CallbackTask {
FILE: build/hygiene.ts
type VinylFileWithLines (line 26) | interface VinylFileWithLines extends VinylFile {
function hygiene (line 33) | function hygiene(some: NodeJS.ReadWriteStream | string[] | undefined, ru...
function createGitIndexVinyls (line 228) | function createGitIndexVinyls(paths: string[]): Promise<VinylFile[]> {
FILE: build/lib/asar.ts
function createAsar (line 13) | function createAsar(folderPath: string, unpackGlobs: string[], skipGlobs...
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.ts
function downloadExtensionDetails (line 22) | async function downloadExtensionDetails(extension: IExtensionDefinition)...
function main (line 69) | async function main(): Promise<void> {
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/checkCyclicDependencies.ts
class Node (line 12) | class Node {
method constructor (line 18) | constructor(data: string) {
class Graph (line 23) | class Graph {
method inertEdge (line 26) | inertEdge(from: string, to: string): void {
method lookupOrInsertNode (line 33) | lookupOrInsertNode(data: string): Node {
method lookup (line 42) | lookup(data: string): Node | undefined {
method findCycles (line 46) | findCycles(allData: string[]): Map<string, string[] | undefined> {
method _findCycle (line 60) | private _findCycle(node: Node, checked: Set<string>, seen: Set<string>...
function normalize (line 85) | function normalize(p: string): string {
function collectJsFiles (line 89) | function collectJsFiles(dir: string): string[] {
function processFile (line 102) | function processFile(filename: string, graph: Graph): void {
function main (line 129) | function main(): void {
FILE: build/lib/compilation.ts
function getTypeScriptCompilerOptions (line 35) | function getTypeScriptCompilerOptions(src: string): ts.CompilerOptions {
type ICompileTaskOptions (line 50) | interface ICompileTaskOptions {
function createCompile (line 58) | function createCompile(src: string, { build, emitError, transpileOnly, p...
function transpileTask (line 108) | function transpileTask(src: string, out: string, esbuild?: boolean): tas...
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(import.meta.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: string, ...rest: unknown[]): void {
method execute (line 261) | public execute(): void {
function generateApiProposalNames (line 281) | function generateApiProposalNames() {
function generateExtensionPointNames (line 357) | function generateExtensionPointNames() {
function copyCodiconsImpl (line 425) | function copyCodiconsImpl() {
FILE: build/lib/copilot.ts
function toNodePlatformArch (line 27) | function toNodePlatformArch(platform: string, arch: string): { nodePlatf...
function getCopilotExcludeFilter (line 52) | function getCopilotExcludeFilter(platform: string, arch: string): string...
function copyCopilotNativeDeps (line 84) | function copyCopilotNativeDeps(platform: string, arch: string, nodeModul...
FILE: build/lib/date.ts
function getGitCommitDate (line 17) | function getGitCommitDate(): string {
function writeISODate (line 30) | function writeISODate(outDir: string) {
function readISODate (line 44) | function readISODate(outDir: string): string {
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.ts
type DarwinDocumentSuffix (line 15) | type DarwinDocumentSuffix = 'document' | 'script' | 'file' | 'source code';
type DarwinDocumentType (line 16) | type DarwinDocumentType = {
function isDocumentSuffix (line 25) | function isDocumentSuffix(str?: string): str is DarwinDocumentSuffix {
function createTemplate (line 35) | function createTemplate(input: string): (params: Record<string, string>)...
function darwinBundleDocumentType (line 64) | function darwinBundleDocumentType(extensions: string[], icon: string, na...
function darwinBundleDocumentTypes (line 91) | function darwinBundleDocumentTypes(types: { [name: string]: string | str...
function getElectron (line 213) | function getElectron(arch: string): () => NodeJS.ReadWriteStream {
function main (line 231) | async function main(arch: string = process.arch): Promise<void> {
FILE: build/lib/embeddedType.ts
type EmbeddedProductInfo (line 6) | type EmbeddedProductInfo = {
FILE: build/lib/extensions.ts
function minifyExtensionResources (line 36) | function minifyExtensionResources(input: Stream): Stream {
function updateExtensionPackageJSON (line 53) | function updateExtensionPackageJSON(input: Stream, update: (data: any) =...
function fromLocal (line 66) | function fromLocal(extensionPath: string, forWeb: boolean, _disableMangl...
function typeCheckExtension (line 103) | function typeCheckExtension(extensionPath: string, forWeb: boolean): Pro...
function typeCheckExtensionStream (line 109) | function typeCheckExtensionStream(extensionPath: string, forWeb: boolean...
function fromLocalNormal (line 116) | function fromLocalNormal(extensionPath: string): Stream {
function fromLocalEsbuild (line 138) | function fromLocalEsbuild(extensionPath: string, esbuildConfigFileName: ...
function fromMarketplace (line 219) | function fromMarketplace(serviceUrl: string, { name: extensionName, vers...
function fromVsix (line 245) | function fromVsix(vsixPath: string, { name: extensionName, version, sha2...
function fromGithub (line 273) | function fromGithub({ name, version, repo, sha256, metadata }: IExtensio...
type ExtensionKind (line 325) | type ExtensionKind = 'ui' | 'workspace' | 'web';
type IExtensionManifest (line 326) | interface IExtensionManifest {
function isWebExtension (line 337) | function isWebExtension(manifest: IExtensionManifest): boolean {
function packageNonNativeLocalExtensionsStream (line 367) | function packageNonNativeLocalExtensionsStream(forWeb: boolean, disableM...
function packageNativeLocalExtensionsStream (line 380) | function packageNativeLocalExtensionsStream(forWeb: boolean, disableMang...
function packageAllLocalExtensionsStream (line 390) | function packageAllLocalExtensionsStream(forWeb: boolean, disableMangle:...
function doPackageLocalExtensionsStream (line 402) | function doPackageLocalExtensionsStream(forWeb: boolean, disableMangle: ...
function packageMarketplaceExtensionsStream (line 447) | function packageMarketplaceExtensionsStream(forWeb: boolean): Stream {
type IScannedBuiltinExtension (line 473) | interface IScannedBuiltinExtension {
function scanBuiltinExtensions (line 481) | function scanBuiltinExtensions(extensionsRoot: string, exclude: string[]...
function translatePackageJSON (line 518) | function translatePackageJSON(packageJSON: string, packageNLSPath: strin...
function esbuildExtensions (line 545) | async function esbuildExtensions(taskName: string, isWatch: boolean, scr...
function buildExtensionMedia (line 592) | function buildExtensionMedia(isWatch: boolean, outputRoot?: string): Pro...
function getBuildRootsForExtension (line 599) | function getBuildRootsForExtension(extensionPath: string): string[] {
FILE: build/lib/extractExtensionPoints.ts
function extractExtensionPointNamesFromFile (line 27) | function extractExtensionPointNamesFromFile(sourceFile: ts.SourceFile): ...
function findExtensionPointProperty (line 164) | function findExtensionPointProperty(obj: ts.ObjectLiteralExpression): ts...
function findExtensionPointInVariable (line 173) | function findExtensionPointInVariable(sourceFile: ts.SourceFile, varName...
function scanDirectory (line 197) | function scanDirectory(dir: string): string[] {
function normalize (line 214) | function normalize(s: string): string {
function main (line 218) | function main(): void {
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 119) | interface IGitHubAssetOptions {
function fetchGithub (line 132) | function fetchGithub(repo: string, options: IGitHubAssetOptions): Stream {
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.ts
function getVersion (line 8) | function getVersion(root: string): string | undefined {
FILE: build/lib/git.ts
function getVersion (line 11) | function getVersion(repo: string): string | undefined {
FILE: build/lib/i18n.ts
constant REPO_ROOT_PATH (line 18) | const REPO_ROOT_PATH = path.join(import.meta.dirname, '../..');
function log (line 20) | function log(message: any, ...rest: unknown[]): void {
type Language (line 24) | interface Language {
type InnoSetup (line 30) | interface InnoSetup {
type Item (line 54) | interface Item {
type Resource (line 60) | interface Resource {
type LocalizeInfo (line 65) | interface LocalizeInfo {
function isLocalizeInfo (line 70) | function isLocalizeInfo(value: unknown): value is LocalizeInfo {
type BundledFormat (line 75) | interface BundledFormat {
type NLSKeysFormat (line 81) | type NLSKeysFormat = [string /* module ID */, string[] /* keys */];
function isNLSKeysFormat (line 83) | function isNLSKeysFormat(value: unknown): value is NLSKeysFormat {
type BundledExtensionFormat (line 92) | interface BundledExtensionFormat {
type I18nFormat (line 99) | interface I18nFormat {
class Line (line 108) | class Line {
method constructor (line 111) | constructor(indent: number = 0) {
method append (line 117) | public append(value: string): Line {
method toString (line 122) | public toString(): string {
class TextModel (line 127) | class TextModel {
method constructor (line 130) | constructor(contents: string) {
method lines (line 134) | public get lines(): string[] {
class XLF (line 139) | class XLF {
method constructor (line 145) | constructor(project: string) {
method toString (line 152) | public toString(): string {
method addFile (line 170) | public addFile(original: string, keys: (string | LocalizeInfo)[], mess...
method addStringItem (line 203) | private addStringItem(file: string, item: Item): void {
method appendHeader (line 221) | private appendHeader(): void {
method appendFooter (line 226) | private appendFooter(): void {
method appendNewLine (line 230) | private appendNewLine(content: string, indent?: number): void {
function sortLanguages (line 292) | function sortLanguages(languages: Language[]): Language[] {
function stripComments (line 298) | function stripComments(content: string): string {
function processCoreBundleFormat (line 332) | function processCoreBundleFormat(base: string, fileHeader: string, langu...
function processNlsFiles (line 372) | function processNlsFiles(opts: { out: string; fileHeader: string; langua...
function getResource (line 397) | function getResource(sourceFile: string): Resource {
function createXlfFilesForCoreBundle (line 431) | function createXlfFilesForCoreBundle(): eventStream.ThroughStream {
function createL10nBundleForExtension (line 477) | function createL10nBundleForExtension(extensionFolderName: string, prefi...
constant EXTERNAL_EXTENSIONS (line 541) | const EXTERNAL_EXTENSIONS = [
function createXlfFilesForExtensions (line 547) | function createXlfFilesForExtensions(): eventStream.ThroughStream {
function createXlfFilesForIsl (line 632) | function createXlfFilesForIsl(): eventStream.ThroughStream {
function createI18nFile (line 688) | function createI18nFile(name: string, messages: any): File {
type I18nPack (line 711) | interface I18nPack {
type TranslationPath (line 720) | interface TranslationPath {
function getRecordFromL10nJsonFormat (line 725) | function getRecordFromL10nJsonFormat(l10nJsonFormat: l10nJsonFormat): Re...
function prepareI18nPackFiles (line 734) | function prepareI18nPackFiles(resultingTranslationPaths: TranslationPath...
function prepareIslFiles (line 801) | function prepareIslFiles(language: Language, innoSetupConfig: InnoSetup)...
function createIslFile (line 827) | function createIslFile(name: string, messages: l10nJsonFormat, language:...
function encodeEntities (line 866) | function encodeEntities(value: string): string {
function decodeEntities (line 887) | function decodeEntities(value: string): string {
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/mangle/index.ts
class ShortIdent (line 16) | class ShortIdent {
method constructor (line 28) | constructor(
method next (line 34) | next(isNameTaken?: (name: string) => boolean): string {
method convert (line 44) | private static convert(n: number): string {
type FieldType (line 61) | type FieldType = typeof FieldType[keyof typeof FieldType];
class ClassData (line 63) | class ClassData {
method constructor (line 75) | constructor(
method _getMemberName (line 125) | private static _getMemberName(node: ts.NamedDeclaration): string | und...
method _getFieldType (line 143) | private static _getFieldType(node: ts.Node): FieldType {
method _shouldMangle (line 153) | static _shouldMangle(type: FieldType): boolean {
method makeImplicitPublicActuallyPublic (line 159) | static makeImplicitPublicActuallyPublic(data: ClassData, reportViolati...
method fillInReplacement (line 181) | static fillInReplacement(data: ClassData) {
method _isNameTaken (line 238) | private _isNameTaken(name: string) {
method lookupShortName (line 259) | lookupShortName(name: string): string {
method addChild (line 273) | addChild(child: ClassData) {
type SourceFile (line 281) | interface SourceFile {
function isNameTakenInFile (line 286) | function isNameTakenInFile(node: ts.Node, name: string): boolean {
class DeclarationData (line 346) | class DeclarationData {
method constructor (line 352) | constructor(
method getLocations (line 363) | getLocations(service: ts.LanguageService): Iterable<{ fileName: string...
method shouldMangle (line 378) | shouldMangle(newName: string): boolean {
type MangleOutput (line 398) | interface MangleOutput {
class Mangler (line 412) | class Mangler {
method constructor (line 423) | constructor(
method computeNewFileContents (line 438) | async computeNewFileContents(strictImplicitPublicHandling?: Set<string...
function hasModifier (line 756) | function hasModifier(node: ts.Node, kind: ts.SyntaxKind) {
function isInAmbientContext (line 761) | function isInAmbientContext(node: ts.Node): boolean {
function normalize (line 770) | function normalize(path: string): string {
function _run (line 774) | async function _run() {
FILE: build/lib/mangle/renameWorker.ts
function findRenameLocations (line 12) | function findRenameLocations(
FILE: build/lib/mangle/staticLanguageServiceHost.ts
class StaticLanguageServiceHost (line 9) | class StaticLanguageServiceHost implements ts.LanguageServiceHost {
method constructor (line 15) | constructor(projectPath: string) {
method getCompilationSettings (line 27) | getCompilationSettings(): ts.CompilerOptions {
method getScriptFileNames (line 30) | getScriptFileNames(): string[] {
method getScriptVersion (line 33) | getScriptVersion(_fileName: string): string {
method getProjectVersion (line 36) | getProjectVersion(): string {
method getScriptSnapshot (line 39) | getScriptSnapshot(fileName: string): ts.IScriptSnapshot | undefined {
method getCurrentDirectory (line 51) | getCurrentDirectory(): string {
method getDefaultLibFileName (line 54) | getDefaultLibFileName(options: ts.CompilerOptions): string {
FILE: build/lib/monaco-api.ts
constant SRC (line 17) | const SRC = path.join(import.meta.dirname, '../../src');
constant RECIPE_PATH (line 18) | const RECIPE_PATH = path.join(import.meta.dirname, '../monaco/monaco.d.t...
constant DECLARATION_PATH (line 19) | const DECLARATION_PATH = path.join(import.meta.dirname, '../../src/vs/mo...
function logErr (line 21) | function logErr(message: any, ...rest: unknown[]): void {
type SourceFileGetter (line 25) | type SourceFileGetter = (moduleId: string) => ts.SourceFile | null;
type TSTopLevelDeclaration (line 27) | type TSTopLevelDeclaration = ts.InterfaceDeclaration | ts.EnumDeclaratio...
type TSTopLevelDeclare (line 28) | type TSTopLevelDeclare = TSTopLevelDeclaration | ts.VariableStatement;
function isDeclaration (line 30) | function isDeclaration(ts: typeof import('typescript'), a: TSTopLevelDec...
function visitTopLevelDeclarations (line 41) | function visitTopLevelDeclarations(ts: typeof import('typescript'), sour...
function getAllTopLevelDeclarations (line 70) | function getAllTopLevelDeclarations(ts: typeof import('typescript'), sou...
function getTopLevelDeclaration (line 94) | function getTopLevelDeclaration(ts: typeof import('typescript'), sourceF...
function getNodeText (line 115) | function getNodeText(sourceFile: ts.SourceFile, node: { pos: number; end...
function hasModifier (line 119) | function hasModifier(modifiers: readonly ts.ModifierLike[] | undefined, ...
function isStatic (line 131) | function isStatic(ts: typeof import('typescript'), member: ts.ClassEleme...
function isDefaultExport (line 138) | function isDefaultExport(ts: typeof import('typescript'), declaration: t...
function getMassagedTopLevelDeclarationText (line 145) | function getMassagedTopLevelDeclarationText(ts: typeof import('typescrip...
type Formatting (line 210) | interface Formatting<TContext> {
type Typescript (line 215) | type Typescript = typeof import('typescript') & { readonly formatting: F...
function format (line 217) | function format(ts: Typescript, text: string, endl: string): string {
function createReplacerFromDirectives (line 352) | function createReplacerFromDirectives(directives: [RegExp, string][]): (...
function createReplacer (line 361) | function createReplacer(data: string): (str: string) => string {
type ITempResult (line 381) | interface ITempResult {
type IEnumEntry (line 387) | interface IEnumEntry {
function generateDeclarationFile (line 392) | function generateDeclarationFile(ts: Typescript, recipe: string, sourceF...
type IMonacoDeclarationResult (line 559) | interface IMonacoDeclarationResult {
function _run (line 567) | function _run(ts: Typescript, sourceFileGetter: SourceFileGetter): IMona...
class FSProvider (line 592) | class FSProvider {
method existsSync (line 593) | public existsSync(filePath: string): boolean {
method statSync (line 596) | public statSync(filePath: string): fs.Stats {
method readFileSync (line 599) | public readFileSync(_moduleId: string, filePath: string): Buffer {
class CacheEntry (line 604) | class CacheEntry {
method constructor (line 608) | constructor(
class DeclarationResolver (line 617) | class DeclarationResolver {
method constructor (line 623) | constructor(fsProvider: FSProvider) {
method invalidateCache (line 629) | public invalidateCache(moduleId: string): void {
method getDeclarationSourceFile (line 633) | public getDeclarationSourceFile(moduleId: string): ts.SourceFile | null {
method _getFileName (line 648) | private _getFileName(moduleId: string): string {
method _getDeclarationSourceFile (line 658) | private _getDeclarationSourceFile(moduleId: string): CacheEntry | null {
function run3 (line 685) | function run3(resolver: DeclarationResolver): IMonacoDeclarationResult |...
function execute (line 691) | function execute(): IMonacoDeclarationResult {
FILE: build/lib/nls-analysis.ts
type ISpan (line 12) | interface ISpan {
type ILocalizeCall (line 17) | interface ILocalizeCall {
type CollectStepResult (line 35) | type CollectStepResult = typeof CollectStepResult[keyof typeof CollectSt...
function collect (line 37) | function collect(node: ts.Node, fn: (node: ts.Node) => CollectStepResult...
function isImportNode (line 56) | function isImportNode(node: ts.Node): boolean {
function isCallExpressionWithinTextSpanCollectStep (line 60) | function isCallExpressionWithinTextSpanCollectStep(textSpan: ts.TextSpan...
class SingleFileServiceHost (line 72) | class SingleFileServiceHost implements ts.LanguageServiceHost {
method constructor (line 78) | constructor(options: ts.CompilerOptions, filename: string, contents: s...
method readFile (line 92) | readFile(path: string): string | undefined {
method fileExists (line 99) | fileExists(path: string): boolean {
function analyzeLocalizeCalls (line 111) | function analyzeLocalizeCalls(
class TextModel (line 238) | class TextModel {
method constructor (line 242) | constructor(contents: string) {
method get (line 262) | get(index: number): string {
method set (line 266) | set(index: number, line: string): void {
method lineCount (line 270) | get lineCount(): number {
method apply (line 279) | apply(span: ISpan, content: string): void {
method toString (line 297) | toString(): string {
function parseLocalizeKeyOrValue (line 314) | function parseLocalizeKeyOrValue(sourceExpression: string): string | { k...
FILE: build/lib/nls.ts
type FileWithSourcemap (line 15) | type FileWithSourcemap = File & { sourceMap: sm.RawSourceMap };
function nls (line 20) | function nls(options: { preserveEnglish: boolean }): NodeJS.ReadWriteStr...
type ILocalizeKey (line 93) | type ILocalizeKey = string | { key: string };
type INlsPatchResult (line 95) | interface INlsPatchResult {
type IPatch (line 102) | interface IPatch {
function fileFrom (line 107) | function fileFrom(file: File, contents: string, path: string = file.path) {
function mappedPositionFrom (line 116) | function mappedPositionFrom(source: string, lc: ts.LineAndCharacter): sm...
function lcFrom (line 120) | function lcFrom(position: sm.Position): ts.LineAndCharacter {
function patchJavascript (line 124) | function patchJavascript(patches: IPatch[], contents: string): string {
function patchSourcemap (line 133) | function patchSourcemap(patches: IPatch[], rsm: sm.RawSourceMap, smc: sm...
function patch (line 178) | function patch(typescript: string, javascript: string, sourcemap: sm.Raw...
function patchFile (line 237) | function patchFile(javascriptFile: File, typescript: string, options: { ...
FILE: build/lib/optimize.ts
type WriteOptions (line 25) | interface WriteOptions {
constant REPO_ROOT_PATH (line 35) | const REPO_ROOT_PATH = path.join(import.meta.dirname, '../..');
type IBundleESMTaskOpts (line 37) | interface IBundleESMTaskOpts {
constant DEFAULT_FILE_HEADER (line 62) | const DEFAULT_FILE_HEADER = [
function bundleESMTask (line 68) | function bundleESMTask(opts: IBundleESMTaskOpts): NodeJS.ReadWriteStream {
type IBundleTaskOpts (line 212) | interface IBundleTaskOpts {
function bundleTask (line 223) | function bundleTask(opts: IBundleTaskOpts): () => NodeJS.ReadWriteStream {
function minifyTask (line 229) | function minifyTask(src: string, sourceMapBaseUrl?: string): (cb: any) =...
function getBuildTarget (line 283) | function getBuildTarget() {
FILE: build/lib/policies/basePolicy.ts
method constructor (line 17) | constructor(
method renderADMLString (line 33) | protected renderADMLString(nlsString: NlsString, translations?: Language...
method renderADMX (line 37) | renderADMX(regKey: string) {
method renderADMLStrings (line 51) | renderADMLStrings(translations?: LanguageTranslations) {
method renderADMLPresentation (line 58) | renderADMLPresentation(): string {
method renderProfile (line 64) | renderProfile() {
method renderProfileManifest (line 68) | renderProfileManifest(translations?: LanguageTranslations): string {
FILE: build/lib/policies/booleanPolicy.ts
class BooleanPolicy (line 11) | class BooleanPolicy extends BasePolicy {
method from (line 13) | static from(category: CategoryDto, policy: PolicyDto): BooleanPolicy |...
method constructor (line 23) | private constructor(
method renderADMXElements (line 33) | protected renderADMXElements(): string[] {
method renderADMLPresentationContents (line 41) | renderADMLPresentationContents() {
method renderJsonValue (line 45) | renderJsonValue() {
method renderProfileValue (line 49) | renderProfileValue(): string {
method renderProfileManifestValue (line 53) | renderProfileManifestValue(translations?: LanguageTranslations): string {
FILE: build/lib/policies/exportPolicyData.ts
constant CLIENT_ID (line 12) | const CLIENT_ID = '01ab8ac9400c4e429b23';
function acquireTokenViaDeviceFlow (line 18) | async function acquireTokenViaDeviceFlow(): Promise<string> {
FILE: build/lib/policies/numberPolicy.ts
class NumberPolicy (line 11) | class NumberPolicy extends BasePolicy {
method from (line 13) | static from(category: CategoryDto, policy: PolicyDto): NumberPolicy | ...
method constructor (line 29) | private constructor(
method renderADMXElements (line 41) | protected renderADMXElements(): string[] {
method renderADMLPresentationContents (line 48) | renderADMLPresentationContents() {
method renderJsonValue (line 52) | renderJsonValue() {
method renderProfileValue (line 56) | renderProfileValue() {
method renderProfileManifestValue (line 60) | renderProfileManifestValue(translations?: LanguageTranslations) {
FILE: build/lib/policies/objectPolicy.ts
class ObjectPolicy (line 11) | class ObjectPolicy extends BasePolicy {
method from (line 13) | static from(category: CategoryDto, policy: PolicyDto): ObjectPolicy | ...
method constructor (line 23) | private constructor(
method renderADMXElements (line 33) | protected renderADMXElements(): string[] {
method renderADMLPresentationContents (line 37) | renderADMLPresentationContents() {
method renderJsonValue (line 41) | renderJsonValue() {
method renderProfileValue (line 45) | renderProfileValue(): string {
method renderProfileManifestValue (line 49) | renderProfileManifestValue(translations?: LanguageTranslations): string {
FILE: build/lib/policies/policyGenerator.ts
function getSpecificNLS (line 22) | async function getSpecificNLS(resourceUrlTemplate: string, languageId: s...
function parseVersion (line 51) | function parseVersion(version: string): Version {
function compareVersions (line 56) | function compareVersions(a: Version, b: Version): number {
function queryVersions (line 62) | async function queryVersions(serviceUrl: string, languageId: string): Pr...
function getNLS (line 84) | async function getNLS(extensionGalleryServiceUrl: string, resourceUrlTem...
function parsePolicies (line 106) | async function parsePolicies(policyDataFile: string): Promise<Policy[]> {
function getTranslations (line 146) | async function getTranslations(): Promise<Translations> {
function windowsMain (line 170) | async function windowsMain(policies: Policy[], translations: Translation...
function darwinMain (line 186) | async function darwinMain(policies: Policy[], translations: Translations) {
function linuxMain (line 205) | async function linuxMain(policies: Policy[]) {
function main (line 216) | async function main() {
FILE: build/lib/policies/render.ts
function renderADMLString (line 8) | function renderADMLString(prefix: string, moduleName: string, nlsString:...
function renderProfileString (line 26) | function renderProfileString(_prefix: string, moduleName: string, nlsStr...
function renderADMX (line 44) | function renderADMX(regKey: string, versions: string[], categories: Cate...
function renderADML (line 69) | function renderADML(appName: string, versions: string[], categories: Cat...
function renderProfileManifest (line 89) | function renderProfileManifest(appName: string, bundleIdentifier: string...
function renderMacOSPolicy (line 218) | function renderMacOSPolicy(product: ProductJson, policies: Policy[], tra...
function renderGP (line 280) | function renderGP(product: ProductJson, policies: Policy[], translations...
function renderJsonPolicies (line 297) | function renderJsonPolicies(policies: Policy[]) {
FILE: build/lib/policies/stringEnumPolicy.ts
class StringEnumPolicy (line 11) | class StringEnumPolicy extends BasePolicy {
method from (line 13) | static from(category: CategoryDto, policy: PolicyDto): StringEnumPolic...
method constructor (line 44) | private constructor(
method renderADMXElements (line 58) | protected renderADMXElements(): string[] {
method renderADMLStrings (line 66) | renderADMLStrings(translations?: LanguageTranslations) {
method renderADMLPresentationContents (line 73) | renderADMLPresentationContents() {
method renderJsonValue (line 77) | renderJsonValue() {
method renderProfileValue (line 81) | renderProfileValue() {
method renderProfileManifestValue (line 85) | renderProfileManifestValue(translations?: LanguageTranslations): string {
FILE: build/lib/policies/stringPolicy.ts
class StringPolicy (line 11) | class StringPolicy extends BasePolicy {
method from (line 13) | static from(category: CategoryDto, policy: PolicyDto): StringPolicy | ...
method constructor (line 23) | private constructor(
method renderADMXElements (line 33) | protected renderADMXElements(): string[] {
method renderJsonValue (line 37) | renderJsonValue() {
method renderADMLPresentationContents (line 41) | renderADMLPresentationContents() {
method renderProfileValue (line 45) | renderProfileValue(): string {
method renderProfileManifestValue (line 49) | renderProfileManifestValue(translations?: LanguageTranslations): string {
FILE: build/lib/policies/types.ts
type ProductJson (line 6) | interface ProductJson {
type Policy (line 18) | interface Policy {
type NlsString (line 32) | type NlsString = { value: string; nlsKey: string };
type Category (line 34) | interface Category {
type PolicyType (line 46) | type PolicyType = typeof PolicyType[keyof typeof PolicyType];
type LanguageTranslations (line 64) | type LanguageTranslations = { [moduleName: string]: { [nlsKey: string]: ...
type Translations (line 65) | type Translations = { languageId: string; languageTranslations: Language...
type Version (line 67) | type Version = [number, number, number];
FILE: build/lib/preLaunch.ts
function runProcess (line 12) | function runProcess(command: string, args: ReadonlyArray<string> = []) {
function exists (line 20) | async function exists(subdir: string) {
function ensureNodeModules (line 29) | async function ensureNodeModules() {
function getElectron (line 35) | async function getElectron() {
function ensureCompiled (line 39) | async function ensureCompiled() {
function main (line 45) | async function main() {
FILE: build/lib/propertyInitOrderChecker.ts
constant TS_CONFIG_PATH (line 11) | const TS_CONFIG_PATH = path.join(import.meta.dirname, '../../', 'src', '...
type EntryKind (line 33) | type EntryKind = typeof EntryKind[keyof typeof EntryKind];
function createProgram (line 45) | function createProgram(tsconfigPath: string): ts.Program {
function visit (line 73) | function visit(node: ts.Node) {
function checkParameterPropertyDeclaration (line 81) | function checkParameterPropertyDeclaration(param: ts.ParameterPropertyDe...
type InvalidUse (line 105) | interface InvalidUse {
function requiresInvocation (line 136) | function requiresInvocation(definition: ReferenceContainer): boolean {
function isInvocation (line 140) | function isInvocation(use: ts.Node): boolean {
function formatFileName (line 152) | function formatFileName(node: ts.Node): string {
function formatLocation (line 157) | function formatLocation(node: ts.Node): string {
function formatStack (line 163) | function formatStack(stack: ts.Node[]): string {
function formatMember (line 167) | function formatMember(container: ReferenceContainer): string {
function formatUse (line 179) | function formatUse(use: ts.Node): string {
type ReferenceContainer (line 199) | type ReferenceContainer =
function findContainer (line 211) | function findContainer(node: ts.Node): ReferenceContainer | undefined {
function findClass (line 230) | function findClass(node: ts.Node): ts.ClassLikeDeclaration | undefined {
type TypeScriptInternals (line 253) | interface TypeScriptInternals {
function findAllReferences (line 272) | function findAllReferences(node: ts.Node): readonly SymbolAndEntries[] {
type SymbolAndEntries (line 281) | interface SymbolAndEntries {
type DefinitionKind (line 294) | type DefinitionKind = typeof DefinitionKind[keyof typeof DefinitionKind];
type Definition (line 296) | type Definition =
type NodeEntryKind (line 304) | type NodeEntryKind = typeof EntryKind.Node | typeof EntryKind.StringLite...
type Entry (line 305) | type Entry = NodeEntry | SpanEntry;
type ContextWithStartAndEndNode (line 306) | interface ContextWithStartAndEndNode {
type ContextNode (line 310) | type ContextNode = ts.Node | ContextWithStartAndEndNode;
type NodeEntry (line 311) | interface NodeEntry {
type SpanEntry (line 316) | interface SpanEntry {
FILE: build/lib/reporter.ts
class ErrorLog (line 12) | class ErrorLog {
method constructor (line 15) | constructor(id: string) {
method onStart (line 22) | onStart(): void {
method onEnd (line 31) | onEnd(): void {
method log (line 39) | log(): void {
function getErrorLog (line 70) | function getErrorLog(id: string = '') {
type IReporter (line 87) | interface IReporter {
class ReporterError (line 93) | class ReporterError extends Error {
type Errors (line 97) | interface Errors extends Array<string> {
function createReporter (line 101) | function createReporter(id?: string): IReporter {
FILE: build/lib/standalone.ts
function writeFile (line 13) | function writeFile(filePath: string, contents: Buffer | string): void {
function extractEditor (line 30) | function extractEditor(options: tss.ITreeShakingOptions & { destRoot: st...
function transportCSS (line 127) | function transportCSS(module: string, enqueue: (module: string) => void,...
FILE: build/lib/stats.ts
class Entry (line 11) | class Entry {
method constructor (line 16) | constructor(name: string, totalCount: number, totalSize: number) {
method toString (line 22) | toString(pretty?: boolean): string {
function createStatsStream (line 46) | function createStatsStream(group: string, log?: boolean): es.ThroughStre...
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.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 30) | function _renderTime(time: number): string {
function _execute (line 34) | async function _execute(task: Task): Promise<void> {
function _doExecute (line 48) | async function _doExecute(task: Task): Promise<void> {
function series (line 82) | function series(...tasks: Task[]): PromiseTask {
function parallel (line 92) | function parallel(...tasks: Task[]): PromiseTask {
function define (line 100) | function define(name: string, task: Task): Task {
FILE: build/lib/test/policyConversion.test.ts
function parsePolicies (line 26) | function parsePolicies(policyData: ExportedPolicyDataDto): Policy[] {
FILE: build/lib/treeshaking.ts
type ShakeLevel (line 17) | type ShakeLevel = typeof ShakeLevel[keyof typeof ShakeLevel];
function toStringShakeLevel (line 19) | function toStringShakeLevel(shakeLevel: ShakeLevel): string {
type ITreeShakingOptions (line 30) | interface ITreeShakingOptions {
type ITreeShakingResult (line 62) | interface ITreeShakingResult {
function printDiagnostics (line 66) | function printDiagnostics(options: ITreeShakingOptions, diagnostics: Rea...
function shake (line 81) | function shake(options: ITreeShakingOptions): ITreeShakingResult {
function createTypeScriptLanguageService (line 109) | function createTypeScriptLanguageService(ts: typeof import('typescript')...
type NodeColor (line 145) | type NodeColor = typeof NodeColor[keyof typeof NodeColor];
type ObjectLiteralElementWithName (line 147) | type ObjectLiteralElementWithName = ts.ObjectLiteralElement & { name: ts...
type Node (line 150) | interface Node {
function getColor (line 161) | function getColor(node: ts.Node): NodeColor {
function setColor (line 164) | function setColor(node: ts.Node, color: NodeColor): void {
function markNeededSourceFile (line 167) | function markNeededSourceFile(node: ts.SourceFile): void {
function isNeededSourceFile (line 170) | function isNeededSourceFile(node: ts.SourceFile): boolean {
function nodeOrParentIsBlack (line 173) | function nodeOrParentIsBlack(node: ts.Node): boolean {
function nodeOrChildIsBlack (line 183) | function nodeOrChildIsBlack(node: ts.Node): boolean {
function isSymbolWithDeclarations (line 195) | function isSymbolWithDeclarations(symbol: ts.Symbol | undefined | null):...
function isVariableStatementWithSideEffects (line 199) | function isVariableStatementWithSideEffects(ts: typeof import('typescrip...
function isStaticMemberWithSideEffects (line 222) | function isStaticMemberWithSideEffects(ts: typeof import('typescript'), ...
function markNodes (line 247) | function markNodes(ts: typeof import('typescript'), languageService: ts....
function nodeIsInItsOwnDeclaration (line 558) | function nodeIsInItsOwnDeclaration(nodeSourceFile: ts.SourceFile, node: ...
function generateResult (line 573) | function generateResult(ts: typeof import('typescript'), languageService...
function isLocalCodeExtendingOrInheritingFromDefaultLibSymbol (line 728) | function isLocalCodeExtendingOrInheritingFromDefaultLibSymbol(ts: typeof...
function findSymbolFromHeritageType (line 745) | function findSymbolFromHeritageType(ts: typeof import('typescript'), che...
class SymbolImportTuple (line 759) | class SymbolImportTuple {
method constructor (line 763) | constructor(
function getRealNodeSymbol (line 775) | function getRealNodeSymbol(ts: typeof import('typescript'), checker: ts....
function getTokenAtPosition (line 905) | function getTokenAtPosition(ts: typeof import('typescript'), sourceFile:...
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 483) | class ScriptSnapshot implements ts.IScriptSnapshot {
method constructor (line 488) | constructor(text: string, mtime: Date) {
method getVersion (line 493) | getVersion(): string {
method getText (line 497) | getText(start: number, end: number): string {
method getLength (line 501) | getLength(): number {
method getChangeRange (line 505) | getChangeRange(_oldSnapshot: ts.IScriptSnapshot): ts.TextChangeRange |...
class VinylScriptSnapshot (line 510) | class VinylScriptSnapshot extends ScriptSnapshot {
method constructor (line 516) | constructor(file: Vinyl & { sourceMap?: RawSourceMap }) {
method getBase (line 522) | getBase(): string {
class LanguageServiceHost (line 527) | class LanguageServiceHost implements ts.LanguageServiceHost {
method constructor (line 541) | constructor(
method log (line 559) | log(_s: string): void {
method trace (line 563) | trace(_s: string): void {
method error (line 567) | error(s: string): void {
method getCompilationSettings (line 571) | getCompilationSettings(): ts.CompilerOptions {
method getProjectVersion (line 575) | getProjectVersion(): string {
method getScriptFileNames (line 579) | getScriptFileNames(): string[] {
method getScriptVersion (line 584) | getScriptVersion(filename: string): string {
method getScriptSnapshot (line 593) | getScriptSnapshot(filename: string, resolve: boolean = true): ScriptSn...
method addScriptSnapshot (line 614) | addScriptSnapshot(filename: string, snapshot: ScriptSnapshot): ScriptS...
method removeScriptSnapshot (line 641) | removeScriptSnapshot(filename: string): boolean {
method getCurrentDirectory (line 651) | getCurrentDirectory(): string {
method getDefaultLibFileName (line 655) | getDefaultLibFileName(options: ts.CompilerOptions): string {
method collectDependents (line 667) | collectDependents(filename: string, target: string[]): void {
method getCyclicDependencies (line 678) | getCyclicDependencies(filenames: string[]): Map<string, string | undef...
method _processFile (line 691) | _processFile(filename: string): void {
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.ts
type TranspileReq (line 13) | interface TranspileReq {
type TranspileRes (line 18) | interface TranspileRes {
function transpile (line 23) | function transpile(tsSrc: string, options: ts.TranspileOptions): { jsSrc...
class OutputFileNameOracle (line 53) | class OutputFileNameOracle {
method constructor (line 57) | constructor(cmdLine: ts.ParsedCommandLine, configFilePath: string) {
class TranspileWorker (line 94) | class TranspileWorker {
method constructor (line 104) | constructor(outFileFn: (fileName: string) => string) {
method terminate (line 163) | terminate() {
method isBusy (line 168) | get isBusy() {
method next (line 172) | next(files: Vinyl[], options: ts.TranspileOptions) {
type ITranspiler (line 187) | interface ITranspiler {
class TscTranspiler (line 193) | class TscTranspiler implements ITranspiler {
method constructor (line 210) | constructor(
method join (line 223) | async join() {
method transpile (line 235) | transpile(file: Vinyl) {
method _consumeQueue (line 248) | private _consumeQueue(): void {
class ESBuildTranspiler (line 302) | class ESBuildTranspiler implements ITranspiler {
method constructor (line 314) | constructor(
method join (line 352) | async join(): Promise<void> {
method transpile (line 358) | transpile(file: Vinyl): void {
function _isDefaultEmpty (line 391) | function _isDefaultEmpty(src: string): boolean {
FILE: build/lib/tsb/utils.ts
function format (line 8) | function format(value: string, ...rest: unknown[]): string {
class Node (line 20) | class Node<T> {
method constructor (line 26) | constructor(data: T) {
class Graph (line 31) | class Graph<T> {
method inertEdge (line 35) | inertEdge(from: T, to: T): void {
method resetNode (line 43) | resetNode(data: T): void {
method lookupOrInsertNode (line 54) | lookupOrInsertNode(data: T): Node<T> {
method lookup (line 65) | lookup(data: T): Node<T> | null {
method findCycles (line 69) | findCycles(allData: T[]): Map<T, T[] | undefined> {
method _findCycle (line 83) | private _findCycle(node: Node<T>, checked: Set<T>, seen: Set<T>): T[] ...
FILE: build/lib/tsconfigUtils.ts
function getTargetStringFromTsConfig (line 11) | function getTargetStringFromTsConfig(configFilePath: string): string {
FILE: build/lib/tsgo.ts
function spawnTsgo (line 17) | function spawnTsgo(projectPath: string, config: { taskName: string; noEm...
function createTsgoStream (line 76) | function createTsgoStream(projectPath: string, config: { taskName: strin...
FILE: build/lib/typeScriptLanguageServiceHost.ts
type IFileMap (line 10) | type IFileMap = Map</*fileName*/ string, string>;
function normalizePath (line 12) | function normalizePath(filePath: string): string {
class TypeScriptLanguageServiceHost (line 19) | class TypeScriptLanguageServiceHost implements ts.LanguageServiceHost {
method constructor (line 25) | constructor(
method getCompilationSettings (line 36) | getCompilationSettings(): ts.CompilerOptions {
method getScriptFileNames (line 39) | getScriptFileNames(): string[] {
method getScriptVersion (line 45) | getScriptVersion(_fileName: string): string {
method getProjectVersion (line 48) | getProjectVersion(): string {
method getScriptSnapshot (line 51) | getScriptSnapshot(fileName: string): ts.IScriptSnapshot {
method getScriptKind (line 60) | getScriptKind(_fileName: string): ts.ScriptKind {
method getCurrentDirectory (line 63) | getCurrentDirectory(): string {
method getDefaultLibFileName (line 66) | getDefaultLibFileName(options: ts.CompilerOptions): string {
method readFile (line 69) | readFile(path: string, encoding?: string): string | undefined {
method fileExists (line 77) | fileExists(path: string): boolean {
FILE: build/lib/typings/@vscode/gulp-electron.d.ts
type MainFunction (line 8) | interface MainFunction {
FILE: build/lib/typings/asar.d.ts
class AsarFilesystem (line 3) | class AsarFilesystem {
FILE: build/lib/typings/chromium-pickle-js.d.ts
type Pickle (line 2) | interface Pickle {
FILE: build/lib/typings/event-stream.d.ts
type ThroughStream (line 6) | interface ThroughStream extends _ThroughStream {
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/util.ts
type ICancellationToken (line 23) | interface ICancellationToken {
type IStreamProvider (line 29) | interface IStreamProvider {
function incremental (line 33) | function incremental(streamProvider: IStreamProvider, initial: NodeJS.Re...
function debounce (line 82) | function debounce(task: () => NodeJS.ReadWriteStream, duration = 500): N...
function fixWin32DirectoryPermissions (line 117) | function fixWin32DirectoryPermissions(): NodeJS.ReadWriteStream {
function setExecutableBit (line 131) | function setExecutableBit(pattern?: string | string[]): NodeJS.ReadWrite...
function toFileUri (line 155) | function toFileUri(filePath: string): string {
function skipDirectories (line 165) | function skipDirectories(): NodeJS.ReadWriteStream {
function cleanNodeModules (line 173) | function cleanNodeModules(rulePath: string): NodeJS.ReadWriteStream {
type FileSourceMap (line 191) | type FileSourceMap = VinylFile & { sourceMap: sm.RawSourceMap };
function loadSourcemaps (line 193) | 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> {
function getVersionedResourcesFolder (line 384) | function getVersionedResourcesFolder(platform: string, commit: string): ...
class VinylStat (line 390) | class VinylStat implements fs.Stats {
method constructor (line 411) | constructor(stat: Partial<fs.Stats>) {
method isFile (line 432) | isFile(): boolean { return true; }
method isDirectory (line 433) | isDirectory(): boolean { return false; }
method isBlockDevice (line 434) | isBlockDevice(): boolean { return false; }
method isCharacterDevice (line 435) | isCharacterDevice(): boolean { return false; }
method isSymbolicLink (line 436) | isSymbolicLink(): boolean { return false; }
method isFIFO (line 437) | isFIFO(): boolean { return false; }
method isSocket (line 438) | isSocket(): boolean { return false; }
function untar (line 441) | function untar(): Transform {
FILE: build/lib/watch/watch-win32.ts
function toChangeType (line 17) | function toChangeType(type: '0' | '1' | '2'): 'change' | 'add' | 'unlink' {
function watch (line 25) | function watch(root: string): Stream {
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.ts
constant URL_PREFIX (line 15) | const URL_PREFIX = 'https://msftelectronbuild.z5.web.core.windows.net';
constant URL_PATH (line 16) | const URL_PATH = 'sysroots/toolchain';
constant REPO_ROOT (line 17) | const REPO_ROOT = path.dirname(path.dirname(path.dirname(import.meta.dir...
type IFetchOptions (line 33) | interface IFetchOptions {
function getElectronVersion (line 39) | function getElectronVersion(): Record<string, string> {
function getSha (line 46) | function getSha(filename: fs.PathLike): string {
function getVSCodeSysrootChecksum (line 61) | function getVSCodeSysrootChecksum(expectedName: string) {
function fetchUrl (line 77) | async function fetchUrl(options: IFetchOptions, retries = 10, retryDelay...
type SysrootDictEntry (line 129) | type SysrootDictEntry = {
function getVSCodeSysroot (line 135) | async function getVSCodeSysroot(arch: DebianArchString, isMusl: boolean ...
function getChromiumSysroot (line 184) | async function getChromiumSysroot(arch: DebianArchString): Promise<strin...
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.ts
constant FAIL_BUILD_FOR_NEW_DEPENDENCIES (line 23) | const FAIL_BUILD_FOR_NEW_DEPENDENCIES: boolean = true;
function getDependencies (line 36) | async function getDependencies(packageType: 'deb' | 'rpm', buildDir: str...
function mergePackageDeps (line 104) | function mergePackageDeps(inputDeps: Set<string>[]): Set<string> {
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.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.ts
type RpmArchString (line 6) | type RpmArchString = 'x86_64' | 'armv7hl' | 'aarch64';
function isRpmArchString (line 8) | function isRpmArchString(s: string): s is RpmArchString {
FILE: build/next/index.ts
constant REPO_ROOT (line 28) | const REPO_ROOT = path.dirname(path.dirname(import.meta.dirname));
function getArgValue (line 36) | function getArgValue(name: string): string | undefined {
type BuildTarget (line 56) | type BuildTarget = 'desktop' | 'server' | 'server-web' | 'web';
constant SRC_DIR (line 58) | const SRC_DIR = 'src';
constant OUT_DIR (line 59) | const OUT_DIR = 'out';
constant OUT_VSCODE_DIR (line 60) | const OUT_VSCODE_DIR = 'out-vscode';
constant UTF8_BOM (line 63) | const UTF8_BOM = Buffer.from([0xef, 0xbb, 0xbf]);
function isExtensionHostBundle (line 76) | function isExtensionHostBundle(filePath: string): boolean {
function getEntryPointsForTarget (line 151) | function getEntryPointsForTarget(target: BuildTarget): string[] {
function getBootstrapEntryPointsForTarget (line 185) | function getBootstrapEntryPointsForTarget(target: BuildTarget): string[] {
function getCssBundleEntryPointsForTarget (line 202) | function getCssBundleEntryPointsForTarget(target: BuildTarget): Set<stri...
function getResourcePatternsForTarget (line 373) | function getResourcePatternsForTarget(target: BuildTarget): string[] {
function cleanDir (line 392) | async function cleanDir(dir: string): Promise<void> {
function scanBuiltinExtensions (line 403) | function scanBuiltinExtensions(extensionsRoot: string): Array<IScannedBu...
function readISODate (line 445) | function readISODate(outDir: string): string {
function needsBomAdded (line 457) | function needsBomAdded(filePath: string): boolean {
function copyFile (line 461) | async function copyFile(srcPath: string, destPath: string): Promise<void> {
function compileStandaloneFiles (line 485) | async function compileStandaloneFiles(outDir: string, doMinify: boolean,...
function copyAllNonTsFiles (line 526) | async function copyAllNonTsFiles(outDir: string, excludeTests: boolean):...
function copyResources (line 565) | async function copyResources(outDir: string, target: BuildTarget): Promi...
function inlineMinimistPlugin (line 594) | function inlineMinimistPlugin(): esbuild.Plugin {
function cssExternalPlugin (line 606) | function cssExternalPlugin(): esbuild.Plugin {
function fileContentMapperPlugin (line 626) | function fileContentMapperPlugin(outDir: string, target: BuildTarget): e...
function transpileFile (line 707) | async function transpileFile(srcPath: string, destPath: string): Promise...
function transpile (line 718) | async function transpile(outDir: string, excludeTests: boolean): Promise...
function bundle (line 744) | async function bundle(outDir: string, doMinify: boolean, doNls: boolean,...
function watch (line 1033) | async function watch(): Promise<void> {
function printUsage (line 1138) | function printUsage(): void {
function main (line 1171) | async function main(): Promise<void> {
FILE: build/next/nls-plugin.ts
type NLSEntry (line 21) | interface NLSEntry {
type NLSPluginOptions (line 28) | interface NLSPluginOptions {
type NLSCollector (line 44) | interface NLSCollector {
function createNLSCollector (line 52) | function createNLSCollector(): NLSCollector {
function finalizeNLS (line 66) | async function finalizeNLS(
function postProcessNLS (line 154) | function postProcessNLS(
type NLSEdit (line 166) | interface NLSEdit {
function transformToPlaceholders (line 173) | function transformToPlaceholders(
function generateNLSSourceMap (line 241) | function generateNLSSourceMap(
function replaceInOutput (line 312) | function replaceInOutput(
function nlsPlugin (line 396) | function nlsPlugin(options: NLSPluginOptions): esbuild.Plugin {
FILE: build/next/private-to-property.ts
constant CHARS (line 36) | const CHARS = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
function generateShortName (line 38) | function generateShortName(index: number): string {
type Edit (line 47) | interface Edit {
type ClassScope (line 54) | type ClassScope = Map<string, string>;
type TextEdit (line 56) | interface TextEdit {
type ConvertPrivateFieldsResult (line 62) | interface ConvertPrivateFieldsResult {
function convertPrivateFields (line 80) | function convertPrivateFields(code: string, filename: string): ConvertPr...
function adjustSourceMap (line 214) | function adjustSourceMap(
function buildLineStarts (line 329) | function buildLineStarts(text: string): number[] {
function buildLineStartsAfterEdits (line 347) | function buildLineStartsAfterEdits(originalCode: string, edits: readonly...
FILE: build/next/test/nls-sourcemap.test.ts
constant NLS_STUB (line 16) | const NLS_STUB = [
type BundleResult (line 25) | interface BundleResult {
function bundleWithNLS (line 37) | async function bundleWithNLS(
function findLine (line 123) | function findLine(text: string, needle: string): number {
function findColumn (line 136) | function findColumn(text: string, needle: string): number {
FILE: build/next/test/private-to-property.test.ts
function createIdentitySourceMap (line 301) | function createIdentitySourceMap(code: string, sourceName: string): RawS...
FILE: build/npm/installStateHash.ts
function collectInputFiles (line 16) | function collectInputFiles(): string[] {
type PostinstallState (line 34) | interface PostinstallState {
function normalizeFileContent (line 55) | function normalizeFileContent(filePath: string): string {
function hashContent (line 84) | function hashContent(content: string): string {
function computeState (line 90) | function computeState(options?: { ignoreNodeVersion?: boolean }): Postin...
function computeContents (line 103) | function computeContents(): Record<string, string> {
function readSavedState (line 115) | function readSavedState(): PostinstallState | undefined {
function isUpToDate (line 124) | function isUpToDate(): boolean {
function readSavedContents (line 134) | function readSavedContents(): Record<string, string> | undefined {
FILE: build/npm/postinstall.ts
function log (line 16) | function log(dir: string, message: string) {
function run (line 24) | function run(command: string, args: string[], opts: child_process.SpawnS...
function spawnAsync (line 38) | function spawnAsync(command: string, args: string[], opts: child_process...
function npmInstallAsync (line 55) | async function npmInstallAsync(dir: string, opts?: child_process.SpawnOp...
function setNpmrcConfig (line 101) | function setNpmrcConfig(dir: string, env: NodeJS.ProcessEnv) {
function removeParcelWatcherPrebuild (line 139) | function removeParcelWatcherPrebuild(dir: string) {
function getNpmrcConfigKeys (line 155) | function getNpmrcConfigKeys(npmrcPath: string): string[] {
function clearInheritedNpmrcConfig (line 173) | function clearInheritedNpmrcConfig(dir: string, env: NodeJS.ProcessEnv):...
function ensureAgentHarnessLink (line 185) | function ensureAgentHarnessLink(sourceRelativePath: string, linkPath: st...
function runWithConcurrency (line 211) | async function runWithConcurrency(tasks: (() => Promise<void>)[], concur...
function main (line 236) | async function main() {
FILE: build/npm/preinstall.ts
function hasSupportedVisualStudioVersion (line 68) | function hasSupportedVisualStudioVersion() {
function installHeaders (line 107) | function installHeaders() {
function getHeaderInfo (line 156) | function getHeaderInfo(rcFile: string): { disturl: string; target: strin...
FILE: build/npm/update-all-grammars.ts
function spawn (line 10) | async function spawn(cmd: string, args: string[], opts?: Parameters<type...
function main (line 17) | async function main() {
FILE: build/npm/update-localization-extension.ts
type Options (line 14) | interface Options {
type PackageJson (line 20) | interface PackageJson {
type Localization (line 26) | interface Localization {
type TranslationPath (line 33) | interface TranslationPath {
function update (line 38) | function update(options: Options) {
FILE: build/setup-npm-registry.ts
function setup (line 30) | async function setup(url: string, file: string): Promise<void> {
function main (line 39) | async function main(url: string, dir?: string): Promise<void> {
FILE: build/stylelint.ts
type FileWithLines (line 11) | interface FileWithLines {
type Reporter (line 17) | type Reporter = (message: string, isError: boolean) => void;
function gulpstylelint (line 22) | function gulpstylelint(reporter: Reporter): NodeJS.ReadWriteStream {
function stylelint (line 59) | function stylelint(): NodeJS.ReadWriteStream {
FILE: build/vite/vite.config.ts
function injectBuiltinExtensionsPlugin (line 13) | function injectBuiltinExtensionsPlugin(): Plugin {
function createHotClassSupport (line 99) | function createHotClassSupport(): Plugin {
FILE: build/win32/explorer-dll-fetcher.ts
type ProductConfiguration (line 11) | interface ProductConfiguration {
function downloadExplorerDll (line 20) | async function downloadExplorerDll(outDir: string, quality: string = 'st...
function main (line 60) | 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 26) | fn camel_case_to_constant_case(key: &str) -> String {
function set_env_vars_from_map_keys (line 50) | fn set_env_vars_from_map_keys(prefix: &str, map: impl IntoIterator<Item ...
function read_json_from_path (line 104) | fn read_json_from_path<T>(path: &Path) -> T
function apply_build_from_product_json (line 112) | fn apply_build_from_product_json(path: &Path) {
type PackageJson (line 118) | struct PackageJson {
function apply_build_environment_variables (line 122) | fn apply_build_environment_variables() {
function apply_win32_version_resources (line 152) | fn apply_win32_version_resources() {
function ensure_file_headers (line 202) | fn ensure_file_headers(files: &[PathBuf]) -> Result<(), io::Error> {
function enumerate_source_files (line 225) | 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 139) | fn make_logger(core: &args::CliCore) -> log::Logger {
function print_and_exit (line 156) | fn print_and_exit<E>(err: E) -> !
function start_code (line 164) | async fn start_code(context: CommandContext, args: Vec<String>) -> Resul...
FILE: cli/src/commands/agent_host.rs
constant UPDATE_CHECK_INTERVAL (line 42) | const UPDATE_CHECK_INTERVAL: Duration = Duration::from_secs(24 * 60 * 60);
constant UPDATE_POLL_INTERVAL (line 44) | const UPDATE_POLL_INTERVAL: Duration = Duration::from_secs(10 * 60);
constant STARTUP_TIMEOUT (line 46) | const STARTUP_TIMEOUT: Duration = Duration::from_secs(30);
function agent_host (line 53) | pub async fn agent_host(ctx: CommandContext, mut args: AgentHostArgs) ->...
type RunningServer (line 136) | struct RunningServer {
type AgentHostManager (line 143) | struct AgentHostManager {
method new (line 159) | fn new(
method ensure_server (line 182) | async fn ensure_server(self: &Arc<Self>) -> Result<PathBuf, CodeError> {
method start_server (line 217) | async fn start_server(self: &Arc<Self>) -> Result<PathBuf, CodeError> {
method run_server (line 242) | async fn run_server(
method get_cached_or_download (line 390) | async fn get_cached_or_download(&self) -> Result<(Release, PathBuf), C...
method ensure_downloaded (line 448) | async fn ensure_downloaded(&self, release: &Release) -> Result<PathBuf...
method get_latest_release (line 479) | async fn get_latest_release(&self) -> Result<Release, CodeError> {
method run_update_loop (line 510) | async fn run_update_loop(self: Arc<Self>) {
method kill_running_server (line 554) | async fn kill_running_server(&self) {
function handle_request (line 565) | async fn handle_request(
function forward_http_to_server (line 604) | async fn forward_http_to_server(rw: AsyncPipe, req: Request<Body>) -> Re...
function forward_ws_to_server (line 620) | async fn forward_ws_to_server(rw: AsyncPipe, mut req: Request<Body>) -> ...
function connection_err (line 659) | fn connection_err(err: hyper::Error) -> Response<Body> {
function mint_connection_token (line 668) | fn mint_connection_token(path: &Path, prefer_token: Option<String>) -> s...
function mint_connection_token_generates_and_persists (line 701) | fn mint_connection_token_generates_and_persists() {
function mint_connection_token_respects_preferred (line 716) | fn mint_connection_token_respects_preferred() {
function mint_connection_token_preferred_overwrites_existing (line 727) | fn mint_connection_token_preferred_overwrites_existing() {
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 195) | pub struct ServeWebArgs {
type AgentHostArgs (line 238) | pub struct AgentHostArgs {
type CommandShellArgs (line 263) | pub struct CommandShellArgs {
type ExtensionArgs (line 285) | pub struct ExtensionArgs {
method add_code_args (line 294) | pub fn add_code_args(&self, target: &mut Vec<String>) {
type ExtensionSubcommand (line 301) | pub enum ExtensionSubcommand {
method add_code_args (line 313) | pub fn add_code_args(&self, target: &mut Vec<String>) {
type ListExtensionArgs (line 351) | pub struct ListExtensionArgs {
type InstallExtensionArgs (line 362) | pub struct InstallExtensionArgs {
type UninstallExtensionArgs (line 384) | pub struct UninstallExtensionArgs {
type VersionArgs (line 393) | pub struct VersionArgs {
type VersionSubcommand (line 399) | pub enum VersionSubcommand {
type UseVersionArgs (line 408) | pub struct UseVersionArgs {
type EditorOptions (line 420) | pub struct EditorOptions {
method add_code_args (line 459) | pub fn add_code_args(&self, target: &mut Vec<String>) {
type DesktopCodeOptions (line 497) | pub struct DesktopCodeOptions {
method add_code_args (line 523) | pub fn add_code_args(&self, target: &mut Vec<String>) {
type OutputFormatOptions (line 516) | pub struct OutputFormatOptions {
type GlobalOptions (line 534) | pub struct GlobalOptions {
method add_code_args (line 562) | pub fn add_code_args(&self, target: &mut Vec<String>) {
type EditorTroubleshooting (line 579) | pub struct EditorTroubleshooting {
method add_code_args (line 615) | pub fn add_code_args(&self, target: &mut Vec<String>) {
type SyncState (line 644) | pub enum SyncState {
method fmt (line 650) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
type OutputFormat (line 659) | pub enum OutputFormat {
type ExistingTunnelArgs (line 665) | pub struct ExistingTunnelArgs {
type TunnelServeArgs (line 685) | pub struct TunnelServeArgs {
type BaseServerArgs (line 715) | pub struct BaseServerArgs {
method apply_to (line 734) | pub fn apply_to(&self, csa: &mut CodeServerArgs) {
type TunnelArgs (line 753) | pub struct TunnelArgs {
type TunnelSubcommand (line 762) | pub enum TunnelSubcommand {
type TunnelServiceSubCommands (line 794) | pub enum TunnelServiceSubCommands {
type TunnelServiceInstallArgs (line 810) | pub struct TunnelServiceInstallArgs {
type TunnelRenameArgs (line 821) | pub struct TunnelRenameArgs {
type TunnelForwardArgs (line 827) | pub struct TunnelForwardArgs {
type TunnelUserSubCommands (line 837) | pub enum TunnelUserSubCommands {
type LoginArgs (line 849) | pub struct LoginArgs {
type AuthProvider (line 864) | 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 164) | struct HandleContext {
function handle (line 171) | async fn handle(ctx: HandleContext, req: Request<Body>) -> Result<Respon...
function handle_proxied (line 188) | async fn handle_proxied(ctx: &HandleContext, req: Request<Body>) -> Resp...
function handle_secret_mint (line 214) | fn handle_secret_mint(ctx: &HandleContext, req: Request<Body>) -> Respon...
function append_secret_headers (line 228) | fn append_secret_headers(
function get_release_from_path (line 254) | fn get_release_from_path(path: &str, platform: Platform) -> Option<(Rele...
function forward_http_req_to_server (line 285) | async fn forward_http_req_to_server(
function forward_ws_req_to_server (line 312) | async fn forward_ws_req_to_server(
function is_commit_hash (line 370) | fn is_commit_hash(s: &str) -> bool {
function extract_cookie (line 375) | fn extract_cookie(req: &Request<Body>, name: &str) -> Option<String> {
type SecretKeyPart (line 395) | struct SecretKeyPart(Box<[u8; SECRET_KEY_BYTES]>);
method new (line 398) | pub fn new() -> Self {
method decode (line 403) | pub fn decode(s: &str) -> Result<Self, base64::DecodeSliceError> {
method encode (line 415) | pub fn encode(&self) -> String {
function get_server_key_half (line 422) | fn get_server_key_half(paths: &LauncherPaths) -> SecretKeyPart {
function get_client_key_half (line 435) | fn get_client_key_half(req: &Request<Body>) -> SecretKeyPart {
function connection_err (line 453) | pub fn connection_err(err: hyper::Error) -> Response<Body> {
function code_err (line 460) | pub fn code_err(err: CodeError) -> Response<Body> {
function wait_for_download (line 467) | pub fn wait_for_download() -> Response<Body> {
function secret_key (line 475) | pub fn secret_key(hash: Vec<u8>) -> Response<Body> {
type ConnectionHandle (line 486) | struct ConnectionHandle {
method new (line 491) | pub fn new(client_counter: Arc<tokio::sync::watch::Sender<usize>>) -> ...
method drop (line 500) | fn drop(&mut self) {
type StartData (line 507) | type StartData = (PathBuf, Arc<tokio::sync::watch::Sender<usize>>);
type VersionState (line 510) | struct VersionState {
type ConnectionStateMap (line 515) | type ConnectionStateMap = Arc<Mutex<HashMap<(Quality, String), VersionSt...
type ConnectionManager (line 519) | struct ConnectionManager {
method new (line 550) | pub fn new(ctx: &CommandContext, platform: Platform, args: ServeWebArg...
method start_update_checker (line 592) | pub fn start_update_checker(self: Arc<Self>, duration: Duration) {
method get_release_from_cache (line 606) | pub async fn get_release_from_cache(&self) -> Result<Release, CodeErro...
method get_connection (line 617) | pub async fn get_connection(
method get_latest_release (line 631) | pub async fn get_latest_release(&self) -> Result<Release, CodeError> {
method get_version_data (line 681) | async fn get_version_data(&self, release: Release) -> Result<StartData...
method get_version_data_inner (line 689) | fn get_version_data_inner(
method download_version (line 749) | async fn download_version(
method start_version (line 780) | async fn start_version(args: StartArgs, path: PathBuf) {
function key_for_release (line 535) | fn key_for_release(release: &Release) -> (Quality, String) {
function normalize_base_path (line 539) | fn normalize_base_path(p: &str) -> String {
type StartArgs (line 892) | struct StartArgs {
function mint_connection_token (line 899) | 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 82) | pub fn log_level(&self) -> log::Level {
method telemetry_disabled (line 90) | pub fn telemetry_disabled(&self) -> bool {
method command_arguments (line 94) | pub fn command_arguments(&self) -> Vec<String> {
type ServerParamsRaw (line 171) | pub struct ServerParamsRaw {
method resolve (line 196) | pub async fn resolve(
method get_or_fetch_commit_id (line 207) | async fn get_or_fetch_commit_id(
type ResolvedServerParams (line 180) | pub struct ResolvedServerParams {
method as_installed_server (line 186) | fn as_installed_server(&self) -> InstalledServer {
type UpdateServerVersion (line 236) | struct UpdateServerVersion {
type SocketCodeServer (line 245) | pub struct SocketCodeServer {
type PortCodeServer (line 253) | pub struct PortCodeServer {
type AnyCodeServer (line 260) | pub enum AnyCodeServer {
type CodeServerOrigin (line 265) | pub enum CodeServerOrigin {
method wait_for_exit (line 273) | pub async fn wait_for_exit(&mut self) {
method kill (line 287) | pub async fn kill(&mut self) {
function do_extension_install_on_running_server (line 300) | async fn do_extension_install_on_running_server(
type ServerBuilder (line 330) | pub struct ServerBuilder<'a> {
function new (line 339) | pub fn new(
function get_running (line 357) | pub async fn get_running(&self) -> Result<Option<AnyCodeServer>, AnyErro...
function evict (line 404) | pub async fn evict(&self) -> Result<(), WrappedError> {
function setup (line 414) | pub async fn setup(&self) -> Result<(), AnyError> {
function listen_on_port (line 492) | pub async fn listen_on_port(&self, port: u16) -> Result<PortCodeServer, ...
function install_extensions (line 527) | pub async fn install_extensions(&self) -> Result<(), AnyError> {
function listen_on_default_socket (line 548) | pub async fn listen_on_default_socket(&self) -> Result<SocketCodeServer,...
function listen_on_socket (line 553) | pub async fn listen_on_socket(&self, socket: &Path) -> Result<SocketCode...
function _listen_on_socket (line 564) | async fn _listen_on_socket(&self, socket: &Path) -> Result<SocketCodeSer...
function spawn_server_process (line 600) | async fn spawn_server_process(&self, mut cmd: Command) -> Result<Child, ...
function get_logfile (line 633) | fn get_logfile(&self) -> Result<File, WrappedError> {
function get_base_command (line 645) | fn get_base_command(&self) -> Command {
function monitor_server (line 653) | fn monitor_server<M, R>(
function get_extensions_flag (line 740) | fn get_extensions_flag(extension_id: &str) -> String {
type ServerOutputMatcher (line 746) | pub trait ServerOutputMatcher<R>
method match_line (line 750) | fn match_line(line: &str) -> Option<R>;
type SocketMatcher (line 754) | struct SocketMatcher();
method match_line (line 757) | fn match_line(line: &str) -> Option<PathBuf> {
type PortMatcher (line 763) | pub struct PortMatcher();
method match_line (line 766) | fn match_line(line: &str) -> Option<u16> {
type WebUiMatcher (line 772) | pub struct WebUiMatcher();
method match_line (line 775) | fn match_line(line: &str) -> Option<reqwest::Url> {
type NoOpMatcher (line 784) | pub struct NoOpMatcher();
method match_line (line 787) | fn match_line(_: &str) -> Option<()> {
function parse_socket_from (line 792) | fn parse_socket_from(text: &str) -> Option<PathBuf> {
function parse_port_from (line 798) | fn parse_port_from(text: &str) -> Option<u16> {
function print_listening (line 805) | pub fn print_listening(log: &log::Logger, tunnel_name: &str) {
function download_cli_into_cache (line 842) | pub async fn download_cli_into_cache(
function get_should_use_breakaway_from_job (line 879) | 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) | pub struct SpawnParams {
type AcquireCliParams (line 263) | pub struct AcquireCliParams {
type SpawnResult (line 272) | pub struct SpawnResult {
constant METHOD_CHALLENGE_ISSUE (line 277) | pub const METHOD_CHALLENGE_ISSUE: &str = "challenge_issue";
constant METHOD_CHALLENGE_VERIFY (line 278) | pub const METHOD_CHALLENGE_VERIFY: &str = "challenge_verify";
type ChallengeIssueParams (line 281) | pub struct ChallengeIssueParams {
type ChallengeIssueResponse (line 286) | pub struct ChallengeIssueResponse {
type ChallengeVerifyParams (line 291) | pub struct ChallengeVerifyParams {
type PortPrivacy (line 297) | pub enum PortPrivacy {
type PortProtocol (line 304) | pub enum PortProtocol {
method fmt (line 311) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
method to_contract_str (line 323) | pub fn to_contract_str(&self) -> &'static str {
method default (line 317) | fn default() -> Self {
constant METHOD_SET_PORTS (line 337) | pub const METHOD_SET_PORTS: &str = "set_ports";
type PortRec (line 340) | pub struct PortRec {
type PortList (line 346) | pub type PortList = Vec<PortRec>;
type SetPortsParams (line 349) | pub struct SetPortsParams {
type SetPortsResponse (line 354) | pub struct SetPortsResponse {
constant METHOD_RESTART (line 364) | pub const METHOD_RESTART: &str = "restart";
constant METHOD_SHUTDOWN (line 365) | pub const METHOD_SHUTDOWN: &str = "shutdown";
constant METHOD_STATUS (line 366) | pub const METHOD_STATUS: &str = "status";
constant METHOD_LOG (line 367) | pub const METHOD_LOG: &str = "log";
constant METHOD_LOG_REPLY_DONE (line 368) | pub const METHOD_LOG_REPLY_DONE: &str = "log_done";
type LogMessage (line 371) | pub struct LogMessage<'a> {
type LogMessageOwned (line 378) | pub struct LogMessageOwned {
type StatusWithTunnelName (line 385) | pub struct StatusWithTunnelName {
type Status (line 392) | pub struct Status {
method default (line 401) | fn default() -> Self {
type LogReplayFinished (line 413) | pub struct LogReplayFinished {}
type TunnelState (line 416) | pub enum TunnelState {
FILE: cli/src/tunnels/server_bridge.rs
type ServerBridge (line 13) | pub struct ServerBridge {
method new (line 21) | pub async fn new(
method write (line 51) | pub async fn write(&mut self, b: Vec<u8>) -> std::io::Result<()> {
method close (line 59) | pub async fn close(mut self) -> std::io::Result<()> {
constant BUFFER_SIZE (line 18) | const BUFFER_SIZE: usize = 65536;
FILE: cli/src/tunnels/server_multiplexer.rs
type Inner (line 14) | type Inner = Arc<std::sync::Mutex<Option<Vec<ServerBridgeRec>>>>;
type ServerBridgeRec (line 16) | struct ServerBridgeRec {
type ServerMultiplexer (line 26) | pub struct ServerMultiplexer {
method new (line 31) | pub fn new() -> Self {
method register (line 38) | pub fn register(&self, id: u16, bridge: ServerBridge) {
method remove (line 53) | pub fn remove(&self, id: u16) {
method write_message (line 63) | pub fn write_message(&self, log: &log::Logger, bridge_id: u16, message...
method dispose (line 87) | pub async fn dispose(&self) {
function write_loop (line 113) | async fn write_loop(log: log::Logger, id: u16, mut bridge: ServerBridge,...
FILE: cli/src/tunnels/service.rs
constant SERVICE_LOG_FILE_NAME (line 15) | pub const SERVICE_LOG_FILE_NAME: &str = "tunnel-service.log";
type ServiceContainer (line 18) | pub trait ServiceContainer: Send {
method run_service (line 19) | async fn run_service(
type ServiceManager (line 27) | pub trait ServiceManager {
method register (line 30) | async fn register(&self, exe: PathBuf, args: &[&str]) -> Result<(), An...
method run (line 35) | async fn run(
method show_logs (line 42) | async fn show_logs(&self) -> Result<(), AnyError>;
method is_installed (line 45) | async fn is_installed(&self) -> Result<bool, AnyError>;
method unregister (line 48) | async fn unregister(&self) -> Result<(), AnyError>;
type ServiceManagerImpl (line 52) | pub type ServiceManagerImpl = super::service_windows::WindowsService;
type ServiceManagerImpl (line 55) | pub type ServiceManagerImpl = super::service_linux::SystemdService;
type ServiceManagerImpl (line 58) | pub type ServiceManagerImpl = super::service_macos::LaunchdService;
function create_service_manager (line 62) | pub fn create_service_manager(log: log::Logger, paths: &LauncherPaths) -...
function tail_log_file (line 78) | pub(crate) async fn tail_log_file(log_file: &Path) -> Result<(), AnyErro...
FILE: cli/src/tunnels/service_linux.rs
type SystemdService (line 25) | pub struct SystemdService {
method new (line 31) | pub fn new(log: log::Logger, paths: LauncherPaths) -> Self {
method connect (line 40) | async fn connect() -> Result<Connection, AnyError> {
method proxy (line 47) | async fn proxy(connection: &Connection) -> Result<SystemdManagerDbusPr...
method service_path_string (line 60) | fn service_path_string(&self) -> String {
method service_name_string (line 64) | fn service_name_string() -> String {
method register (line 71) | async fn register(
method is_installed (line 124) | async fn is_installed(&self) -> Result<bool, AnyError> {
method run (line 138) | async fn run(
method show_logs (line 146) | async fn show_logs(&self) -> Result<(), AnyError> {
method unregister (line 169) | async fn unregister(&self) -> Result<(), crate::util::errors::AnyError> {
function write_systemd_service_file (line 194) | fn write_systemd_service_file(
type SystemdManagerDbus (line 235) | trait SystemdManagerDbus {
method enable_unit_files (line 237) | fn enable_unit_files(
method get_unit_file_state (line 244) | fn get_unit_file_state(&self, file: String) -> zbus::Result<String>;
method link_unit_files (line 246) | fn link_unit_files(
method disable_unit_files (line 253) | fn disable_unit_files(
method start_unit (line 260) | fn start_unit(&self, name: String, mode: String) -> zbus::Result<zvari...
method stop_unit (line 263) | fn stop_unit(&self, name: String, mode: String) -> zbus::Result<zvaria...
method reload (line 266) | fn reload(&self) -> zbus::Result<()>;
FILE: cli/src/tunnels/service_macos.rs
type LaunchdService (line 26) | pub struct LaunchdService {
method new (line 32) | pub fn new(log: log::Logger, paths: &LauncherPaths) -> Self {
method register (line 42) | async fn register(
method show_logs (line 66) | async fn show_logs(&self) -> Result<(), AnyError> {
method run (line 70) | async fn run(
method is_installed (line 78) | async fn is_installed(&self) -> Result<bool, AnyError> {
method unregister (line 83) | async fn unregister(&self) -> Result<(), crate::util::errors::AnyError> {
function get_service_label (line 114) | fn get_service_label() -> String {
function get_service_file_path (line 118) | fn get_service_file_path() -> Result<PathBuf, MissingHomeDirectory> {
function write_service_file (line 128) | fn write_service_file(
FILE: cli/src/tunnels/service_windows.rs
constant DID_LAUNCH_AS_HIDDEN_PROCESS (line 24) | const DID_LAUNCH_AS_HIDDEN_PROCESS: &str = "VSCODE_CLI_DID_LAUNCH_AS_HID...
type WindowsService (line 26) | pub struct WindowsService {
method new (line 33) | pub fn new(log: log::Logger, paths: &LauncherPaths) -> Self {
method open_key (line 41) | fn open_key() -> Result<RegKey, AnyError> {
method register (line 51) | async fn register(&self, exe: std::path::PathBuf, args: &[&str]) -> Resu...
method show_logs (line 87) | async fn show_logs(&self) -> Result<(), AnyError> {
method run (line 91) | async fn run(
method is_installed (line 116) | async fn is_installed(&self) -> Result<bool, AnyError> {
method unregister (line 121) | async fn unregister(&self) -> Result<(), AnyError> {
FILE: cli/src/tunnels/shutdown_signal.rs
type ShutdownSignal (line 17) | pub enum ShutdownSignal {
method fmt (line 27) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
type ShutdownRequest (line 45) | pub enum ShutdownRequest {
method wait (line 53) | async fn wait(self) -> Option<ShutdownSignal> {
method create_rx (line 73) | pub fn create_rx(
FILE: cli/src/tunnels/singleton_client.rs
type SingletonClientArgs (line 34) | pub struct SingletonClientArgs {
type SingletonServerContext (line 40) | struct SingletonServerContext {
constant CONTROL_INSTRUCTIONS_COMMON (line 46) | const CONTROL_INSTRUCTIONS_COMMON: &str =
constant CONTROL_INSTRUCTIONS_INTERACTIVE (line 49) | const CONTROL_INSTRUCTIONS_INTERACTIVE: &str = concatcp!(
function start_singleton_client (line 61) | pub async fn start_singleton_client(args: SingletonClientArgs) -> bool {
function do_single_rpc_call (line 154) | pub async fn do_single_rpc_call<
FILE: cli/src/tunnels/singleton_server.rs
type SingletonServerArgs (line 40) | pub struct SingletonServerArgs<'a> {
type StatusInfo (line 51) | struct StatusInfo {
type SingletonServerContext (line 57) | struct SingletonServerContext {
type RpcServer (line 69) | pub struct RpcServer {
function make_singleton_server (line 75) | pub fn make_singleton_server(
function start_singleton_server (line 145) | pub async fn start_singleton_server(
function serve_singleton_rpc (line 185) | async fn serve_singleton_rpc<C: Clone + Send + Sync + 'static>(
type BroadcastLogSink (line 216) | pub struct BroadcastLogSink {
method new (line 228) | pub fn new() -> Self {
method get_brocaster (line 236) | pub fn get_brocaster(&self) -> broadcast::Sender<Vec<u8>> {
method replay_and_subscribe (line 240) | fn replay_and_subscribe(
method write_log (line 261) | fn write_log(&self, level: log::Level, prefix: &str, message: &str) {
method write_result (line 277) | fn write_result(&self, message: &str) {
method default (line 222) | fn default() -> Self {
FILE: cli/src/tunnels/socket_signal.rs
type CloseReason (line 16) | pub struct CloseReason(pub String);
type SocketSignal (line 18) | pub enum SocketSignal {
method from (line 26) | fn from(v: Vec<u8>) -> Self {
method from_message (line 32) | pub fn from_message<T>(msg: &T) -> Self
type ServerMessageDestination (line 42) | pub enum ServerMessageDestination {
type ServerMessageSink (line 48) | pub struct ServerMessageSink {
method new_plain (line 56) | pub fn new_plain(
method new_compressed (line 69) | pub fn new_compressed(
method server_closed (line 84) | pub async fn server_closed(&mut self) -> Result<(), mpsc::error::SendE...
method server_message (line 88) | pub async fn server_message(
method server_message_or_closed (line 95) | async fn server_message_or_closed(
method get_server_msg_content (line 126) | pub(crate) fn get_server_msg_content<'a: 'b, 'b>(
function send_data_or_close_if_none (line 141) | async fn send_data_or_close_if_none(
method drop (line 168) | fn drop(&mut self) {
type ClientMessageDecoder (line 173) | pub struct ClientMessageDecoder {
method new_plain (line 178) | pub fn new_plain() -> Self {
method new_compressed (line 182) | pub fn new_compressed() -> Self {
method decode (line 190) | pub fn decode<'a: 'b, 'b>(&'a mut self, message: &'b [u8]) -> std::io:...
type FlateAlgorithm (line 199) | trait FlateAlgorithm {
method total_in (line 200) | fn total_in(&self) -> u64;
method total_out (line 201) | fn total_out(&self) -> u64;
method process (line 202) | fn process(
method total_in (line 213) | fn total_in(&self) -> u64 {
method total_out (line 217) | fn total_out(&self) -> u64 {
method process (line 221) | fn process(
method total_in (line 241) | fn total_in(&self) -> u64 {
method total_ou
Copy disabled (too large)
Download .json
Condensed preview — 9676 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (115,580K chars).
[
{
"path": ".agents/skills/launch/SKILL.md",
"chars": 15751,
"preview": "---\nname: launch\ndescription: \"Launch and automate VS Code (Code OSS) using agent-browser via Chrome DevTools Protocol. "
},
{
"path": ".config/1espt/PipelineAutobaseliningConfig.yml",
"chars": 693,
"preview": "## DO NOT MODIFY THIS FILE MANUALLY. This is part of auto-baselining from 1ES Pipeline Templates. Go to [https://aka.ms/"
},
{
"path": ".config/configuration.winget",
"chars": 2111,
"preview": "# yaml-language-server: $schema=https://aka.ms/configuration-dsc-schema/0.2\n# Reference: https://github.com/microsoft/vs"
},
{
"path": ".config/guardian/.gdnsuppress",
"chars": 2463,
"preview": "{\n \"hydrated\": true,\n \"properties\": {\n \"helpUri\": \"https://eng.ms/docs/microsoft-security/security/azure-security/c"
},
{
"path": ".devcontainer/Dockerfile",
"chars": 502,
"preview": "FROM mcr.microsoft.com/devcontainers/typescript-node:22-bookworm\n\nADD install-vscode.sh /root/\nRUN /root/install-vscode."
},
{
"path": ".devcontainer/README.md",
"chars": 7578,
"preview": "# Code - OSS Development Container\n\n[ to enforce repo specific coding rules and styl"
},
{
"path": ".eslint-plugin-local/code-amd-node-module.ts",
"chars": 1747,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-declare-service-brand.ts",
"chars": 1013,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-ensure-no-disposables-leak-in-test.ts",
"chars": 1578,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-import-patterns.ts",
"chars": 9343,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-layering.ts",
"chars": 2313,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-limited-top-functions.ts",
"chars": 2455,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-must-use-result.ts",
"chars": 1424,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-must-use-super-dispose.ts",
"chars": 1060,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-accessor-after-await.ts",
"chars": 12640,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-any-casts.ts",
"chars": 945,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-dangerous-type-assertions.ts",
"chars": 1476,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-declare-const-enum.ts",
"chars": 1726,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-deep-import-of-internal.ts",
"chars": 2412,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-global-document-listener.ts",
"chars": 1125,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-http-import.ts",
"chars": 2407,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-icons-in-localized-strings.ts",
"chars": 3718,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-in-operator.ts",
"chars": 2217,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-localization-template-literals.ts",
"chars": 3062,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-localized-model-description.ts",
"chars": 3787,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-nls-in-standalone-editor.ts",
"chars": 1511,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-observable-get-in-reactive-context.ts",
"chars": 4380,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-potentially-unsafe-disposables.ts",
"chars": 1532,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-reader-after-await.ts",
"chars": 5331,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-runtime-import.ts",
"chars": 2167,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-standalone-editor.ts",
"chars": 1585,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-static-node-module-import.ts",
"chars": 2471,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-static-self-ref.ts",
"chars": 1975,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-telemetry-common-property.ts",
"chars": 3422,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-test-async-suite.ts",
"chars": 1340,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-test-only.ts",
"chars": 819,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-unexternalized-strings.ts",
"chars": 7869,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-no-unused-expressions.ts",
"chars": 4909,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-parameter-properties-must-have-explicit-accessibility.ts",
"chars": 1319,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-policy-localization-key-match.ts",
"chars": 4404,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/code-translation-remind.ts",
"chars": 2351,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/index.ts",
"chars": 879,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/package.json",
"chars": 112,
"preview": "{\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"typecheck\": \"tsgo -p tsconfig.json --noEmit\"\n }\n}\n"
},
{
"path": ".eslint-plugin-local/tests/code-no-observable-get-in-reactive-context-test.ts",
"chars": 6065,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/tests/code-no-reader-after-await-test.ts",
"chars": 2317,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/tsconfig.json",
"chars": 504,
"preview": "{\n\t\"compilerOptions\": {\n\t\t\"target\": \"es2024\",\n\t\t\"lib\": [\n\t\t\t\"ES2024\"\n\t\t],\n\t\t\"rootDir\": \".\",\n\t\t\"module\": \"esnext\",\n\t\t\"all"
},
{
"path": ".eslint-plugin-local/utils.ts",
"chars": 1638,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/vscode-dts-cancellation.ts",
"chars": 1235,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/vscode-dts-create-func.ts",
"chars": 1520,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/vscode-dts-event-naming.ts",
"chars": 3063,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/vscode-dts-interface-naming.ts",
"chars": 1108,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/vscode-dts-literal-or-types.ts",
"chars": 1060,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/vscode-dts-provider-naming.ts",
"chars": 1512,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/vscode-dts-string-type-literals.ts",
"chars": 1201,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/vscode-dts-use-export.ts",
"chars": 1178,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/vscode-dts-use-thenable.ts",
"chars": 918,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".eslint-plugin-local/vscode-dts-vscode-in-comments.ts",
"chars": 1664,
"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": 249,
"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/CODENOTIFY",
"chars": 5615,
"preview": "# Base Utilities\nsrc/vs/base/common/extpath.ts @bpasero\nsrc/vs/base/common/fuzzyScorer.ts @bpasero\nsrc/vs/base/common/gl"
},
{
"path": ".github/CODEOWNERS",
"chars": 1306,
"preview": "# GitHub actions required reviewers\n.github/workflows/monaco-editor.yml @hediet @alexdima @lszomoru @joaomoreno\n.github/"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.md",
"chars": 1173,
"preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n<!-- ⚠️⚠️ Do Not"
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 357,
"preview": "blank_issues_enabled: false\ncontact_links:\n - name: Question\n url: https://stackoverflow.com/questions/tagged/visual"
},
{
"path": ".github/ISSUE_TEMPLATE/copilot_bug_report.md",
"chars": 481,
"preview": "---\nname: Copilot Bug report\nabout: Create a report to help us improve Copilot's chat interface in VS Code\ntitle: ''\nlab"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.md",
"chars": 374,
"preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n<!-- ⚠️⚠️ Do "
},
{
"path": ".github/agents/data.md",
"chars": 3408,
"preview": "---\nname: Data\ndescription: Answer telemetry questions with data queries using Kusto Query Language (KQL)\ntools: [vscode"
},
{
"path": ".github/agents/demonstrate.md",
"chars": 5714,
"preview": "---\nname: Demonstrate\ndescription: Agent for demonstrating VS Code features\ntarget: github-copilot\ntools:\n- \"view\"\n- \"cr"
},
{
"path": ".github/agents/sessions.md",
"chars": 657,
"preview": "---\nname: Agents Window Developer\ndescription: Specialist in developing the Agents Window\n---\n\n# Role and Objective\n\nYou"
},
{
"path": ".github/classifier.json",
"chars": 14259,
"preview": "{\n\t\"$schema\": \"https://raw.githubusercontent.com/microsoft/vscode-github-triage-actions/stable/classifier-deep/apply/app"
},
{
"path": ".github/commands/codespaces_issue.yml",
"chars": 493,
"preview": "# Learn more about the syntax here:\n# https://docs.github.com/en/early-access/github/save-time-with-slash-commands/synta"
},
{
"path": ".github/commands.json",
"chars": 29339,
"preview": "[\n\t{\n\t\t\"type\": \"comment\",\n\t\t\"name\": \"question\",\n\t\t\"allowUsers\": [\n\t\t\t\"cleidigh\",\n\t\t\t\"usernamehw\",\n\t\t\t\"gjsjohnmurray\",\n\t\t"
},
{
"path": ".github/copilot-instructions.md",
"chars": 10047,
"preview": "# VS Code Copilot Instructions\n\n## Project Overview\n\nVisual Studio Code is built with a layered architecture using TypeS"
},
{
"path": ".github/dependabot.yml",
"chars": 257,
"preview": "version: 2\nupdates:\n - package-ecosystem: \"github-actions\"\n directory: \"/\"\n schedule:\n interval: \"weekly\"\n "
},
{
"path": ".github/endgame/insiders.yml",
"chars": 94,
"preview": "{\n insidersLabel: \"insiders\",\n insidersColor: \"006b75\",\n action: \"add\",\n perform: true,\n}\n"
},
{
"path": ".github/hooks/hooks.json",
"chars": 470,
"preview": "{\n\t\"version\": 1,\n\t\"hooks\": {\n\t\t\"sessionStart\": [\n\t\t\t{\n\t\t\t\t\"type\": \"command\",\n\t\t\t\t\"bash\": \"\"\n\t\t\t}\n\t\t],\n\t\t\"sessionEnd\": [\n"
},
{
"path": ".github/insiders.yml",
"chars": 97,
"preview": "{\n insidersLabel: \"insiders\",\n insidersColor: \"006b75\",\n action: \"remove\",\n perform: true,\n}\n"
},
{
"path": ".github/instructions/accessibility.instructions.md",
"chars": 2860,
"preview": "---\ndescription: 'Use when implementing accessibility features, ARIA labels, screen reader support, accessible help dial"
},
{
"path": ".github/instructions/agentHostTesting.instructions.md",
"chars": 2317,
"preview": "---\ndescription: Architecture documentation for VS Code AI Customization view. Use when working in `src/vs/workbench/con"
},
{
"path": ".github/instructions/ai-customization.instructions.md",
"chars": 7481,
"preview": "---\ndescription: Architecture documentation for VS Code AI Customization view. Use when working in `src/vs/workbench/con"
},
{
"path": ".github/instructions/api-version.instructions.md",
"chars": 1218,
"preview": "---\ndescription: Read this when changing proposed API in vscode.proposed.*.d.ts files.\napplyTo: 'src/vscode-dts/**/vscod"
},
{
"path": ".github/instructions/chat.instructions.md",
"chars": 1275,
"preview": "---\ndescription: Chat feature area coding guidelines\n---\n\n## Adding chat/AI-related features\n\n- When adding a new chat/A"
},
{
"path": ".github/instructions/disposable.instructions.md",
"chars": 890,
"preview": "---\ndescription: Guidelines for writing code using IDisposable\n---\n\nCore symbols:\n* `IDisposable`\n\t* `dispose(): void` -"
},
{
"path": ".github/instructions/interactive.instructions.md",
"chars": 4930,
"preview": "---\ndescription: Architecture documentation for VS Code interactive window component. Use when working in `src/vs/workbe"
},
{
"path": ".github/instructions/kusto.instructions.md",
"chars": 994,
"preview": "---\ndescription: Kusto exploration and telemetry analysis instructions\n---\n\n# Kusto Exploration Instructions\n\nWhen perfo"
},
{
"path": ".github/instructions/learnings.instructions.md",
"chars": 974,
"preview": "---\ndescription: This document describes how to deal with learnings that you make. (meta instruction)\n---\n\nThis document"
},
{
"path": ".github/instructions/notebook.instructions.md",
"chars": 5218,
"preview": "---\ndescription: Architecture documentation for VS Code notebook and interactive window components. Use when working in "
},
{
"path": ".github/instructions/observables.instructions.md",
"chars": 3177,
"preview": "---\ndescription: Guidelines for writing code using observables and deriveds.\n---\n\n```ts\nclass MyService extends Disposab"
},
{
"path": ".github/instructions/oss.instructions.md",
"chars": 1332,
"preview": "---\napplyTo: '{ThirdPartyNotices.txt,cli/ThirdPartyNotices.txt,cglicenses.json,cgmanifest.json}'\n---\n\n# OSS License Revi"
},
{
"path": ".github/instructions/sessions.instructions.md",
"chars": 1072,
"preview": "---\ndescription: Architecture documentation for the Agents window — an agents-first app built as a new top-level layer a"
},
{
"path": ".github/instructions/telemetry.instructions.md",
"chars": 4314,
"preview": "---\ndescription: Use when asked to work on telemetry events\n---\n\nPatterns for GDPR-compliant telemetry in VS Code with p"
},
{
"path": ".github/instructions/tree-widgets.instructions.md",
"chars": 6940,
"preview": "---\ndescription: Use when asked to consume workbench tree widgets in VS Code.\n---\n\n# Workbench Tree Widgets Overview\n\n**"
},
{
"path": ".github/prompts/build-champ.prompt.md",
"chars": 2819,
"preview": "---\nagent: agent\ntools: ['github/github-mcp-server/*', 'microsoft/azure-devops-mcp/*', 'todos']\n---\n# Role\nYou are the b"
},
{
"path": ".github/prompts/codenotify.prompt.md",
"chars": 3474,
"preview": "---\nagent: agent\ntools: ['edit', 'search', 'runCommands', 'fetch', 'todos']\n---\n\n# Add My Contributions to CODENOTIFY\n\nT"
},
{
"path": ".github/prompts/component.prompt.md",
"chars": 2535,
"preview": "---\nagent: agent\ndescription: 'Help author a component specification for an agent.'\ntools: ['edit', 'search', 'usages', "
},
{
"path": ".github/prompts/doc-comments.prompt.md",
"chars": 1677,
"preview": "---\nagent: agent\ndescription: 'Update doc comments'\ntools: ['edit', 'search', 'new', 'runCommands', 'runTasks', 'usages'"
},
{
"path": ".github/prompts/find-duplicates.prompt.md",
"chars": 638,
"preview": "---\n# NOTE: This prompt is intended for internal use only for now.\nagent: agent\nargument-hint: Provide a link or issue n"
},
{
"path": ".github/prompts/find-issue.prompt.md",
"chars": 672,
"preview": "---\n# ⚠️: Internal use only. To onboard, follow instructions at https://github.com/microsoft/vscode-engineering/blob/mai"
},
{
"path": ".github/prompts/fix-error.prompt.md",
"chars": 5128,
"preview": "---\nagent: agent\ndescription: 'Fix an unhandled error from the VS Code error telemetry dashboard'\nargument-hint: Paste t"
},
{
"path": ".github/prompts/fixIssueNo.prompt.md",
"chars": 593,
"preview": "---\nagent: Plan\ntools: ['runCommands', 'runTasks', 'runNotebooks', 'search', 'new', 'usages', 'vscodeAPI', 'problems', '"
},
{
"path": ".github/prompts/implement.prompt.md",
"chars": 988,
"preview": "---\nagent: agent\ndescription: 'Implement the plan'\ntools: ['edit', 'runNotebooks', 'search', 'new', 'runCommands', 'runT"
},
{
"path": ".github/prompts/issue-grouping.prompt.md",
"chars": 1486,
"preview": "---\nagent: agent\nmodel: Claude Sonnet 4.5 (copilot)\nargument-hint: Give an assignee and or a label/labels. Issues with t"
},
{
"path": ".github/prompts/micro-perf.prompt.md",
"chars": 1974,
"preview": "---\nagent: agent\ndescription: 'Optimize code performance'\ntools: ['edit', 'search', 'new', 'runCommands', 'runTasks', 'u"
},
{
"path": ".github/prompts/migrate.prompt.md",
"chars": 4827,
"preview": "---\nagent: agent\ntools:\n [\n \"github/add_issue_comment\",\n \"github/get_label\",\n \"github/get_me\",\n \"github/iss"
},
{
"path": ".github/prompts/no-any.prompt.md",
"chars": 610,
"preview": "---\nagent: agent\ndescription: 'Remove any usage of the any type in TypeScript files'\n---\n\nI am trying to minimize the us"
},
{
"path": ".github/prompts/plan-deep.prompt.md",
"chars": 388,
"preview": "---\nagent: Plan\ndescription: Clarify before planning in more detail\n---\nBefore doing your research workflow, gather prel"
},
{
"path": ".github/prompts/plan-fast.prompt.md",
"chars": 201,
"preview": "---\nagent: Plan\ndescription: Iterate quicker on simple tasks\n---\nPlanning for faster iteration: Research as usual, but d"
},
{
"path": ".github/prompts/setup-environment.prompt.md",
"chars": 4526,
"preview": "---\nagent: agent\ndescription: First Time Setup\ntools: ['runCommands', 'runTasks/runTask', 'search', 'todos', 'fetch']\n--"
},
{
"path": ".github/prompts/update-instructions.prompt.md",
"chars": 947,
"preview": "---\nagent: agent\n---\n\nRead the changes introduced on the current branch, including BOTH:\n\n1. Uncommitted workspace modif"
},
{
"path": ".github/pull_request_template.md",
"chars": 344,
"preview": "<!-- Thank you for submitting a Pull Request. Please:\n* Read our Pull Request guidelines:\n https://github.com/microsoft"
},
{
"path": ".github/similarity.yml",
"chars": 226,
"preview": "{\n perform: true,\n whenCreatedByTeam: false,\n comment: \"(Experimental duplicate detection)\\nThanks for submitting thi"
},
{
"path": ".github/skills/accessibility/SKILL.md",
"chars": 16213,
"preview": "---\nname: accessibility\ndescription: Primary accessibility skill for VS Code. REQUIRED for new feature and contribution "
},
{
"path": ".github/skills/add-policy/SKILL.md",
"chars": 9422,
"preview": "---\nname: add-policy\ndescription: Use when adding, modifying, or reviewing VS Code configuration policies. Covers the fu"
},
{
"path": ".github/skills/agent-sessions-layout/SKILL.md",
"chars": 4936,
"preview": "---\nname: agent-sessions-layout\ndescription: Agents workbench layout — covers the fixed layout structure, grid configura"
},
{
"path": ".github/skills/author-contributions/SKILL.md",
"chars": 6706,
"preview": "---\nname: author-contributions\ndescription: Identify all files a specific author contributed to on a branch vs its upstr"
},
{
"path": ".github/skills/azure-pipelines/SKILL.md",
"chars": 11735,
"preview": "---\nname: azure-pipelines\ndescription: Use when validating Azure DevOps pipeline changes for the VS Code build. Covers q"
},
{
"path": ".github/skills/azure-pipelines/azure-pipeline.ts",
"chars": 61209,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".github/skills/chat-customizations-editor/SKILL.md",
"chars": 11703,
"preview": "---\nname: chat-customizations-editor\ndescription: Use when working on the Chat Customizations editor — the management UI"
},
{
"path": ".github/skills/component-fixtures/SKILL.md",
"chars": 14106,
"preview": "---\nname: component-fixtures\ndescription: Use when creating or updating component fixtures for screenshot testing, or wh"
},
{
"path": ".github/skills/fix-ci-failures/SKILL.md",
"chars": 10828,
"preview": "---\nname: fix-ci-failures\ndescription: Investigate and fix CI failures on a pull request. Use when CI checks fail on a P"
},
{
"path": ".github/skills/fix-errors/SKILL.md",
"chars": 6674,
"preview": "---\nname: fix-errors\ndescription: Guidelines for fixing unhandled errors from the VS Code error telemetry dashboard. Use"
},
{
"path": ".github/skills/hygiene/SKILL.md",
"chars": 1735,
"preview": "---\nname: hygiene\ndescription: Use when making code changes to ensure they pass VS Code's hygiene checks. Covers the pre"
},
{
"path": ".github/skills/integration-tests/SKILL.md",
"chars": 5657,
"preview": "---\nname: integration-tests\ndescription: Use when running integration tests in the VS Code repo. Covers scripts/test-int"
},
{
"path": ".github/skills/memory-leak-audit/SKILL.md",
"chars": 5348,
"preview": "---\nname: memory-leak-audit\ndescription: 'Audit code for memory leaks and disposable issues. Use when reviewing event li"
},
{
"path": ".github/skills/sessions/SKILL.md",
"chars": 17200,
"preview": "---\nname: sessions\ndescription: Agents window architecture — covers the agents-first app, layering, folder structure, ch"
},
{
"path": ".github/skills/tool-rename-deprecation/SKILL.md",
"chars": 10088,
"preview": "---\nname: tool-rename-deprecation\ndescription: 'Ensure renamed built-in tool references preserve backward compatibility."
},
{
"path": ".github/skills/unit-tests/SKILL.md",
"chars": 3760,
"preview": "---\nname: unit-tests\ndescription: Use when running unit tests in the VS Code repo. Covers the runTests tool, scripts/tes"
},
{
"path": ".github/skills/update-screenshots/SKILL.md",
"chars": 3563,
"preview": "---\nname: update-screenshots\ndescription: Download screenshot baselines from the latest CI run and commit them. Use when"
},
{
"path": ".github/workflows/api-proposal-version-check.yml",
"chars": 12618,
"preview": "name: API Proposal Version Check\n\non:\n pull_request:\n branches:\n - main\n - 'release/*'\n paths:\n - "
},
{
"path": ".github/workflows/check-clean-git-state.sh",
"chars": 222,
"preview": "R=`git status --porcelain | wc -l`\nif [ \"$R\" -ne \"0\" ]; then\n echo \"The git repo is not clean after compiling the /buil"
},
{
"path": ".github/workflows/component-fixture-tests.yml",
"chars": 1687,
"preview": "name: Component Fixture Tests\n\non:\n push:\n branches: [main]\n pull_request:\n branches:\n - main\n - 'rele"
},
{
"path": ".github/workflows/copilot-setup-steps.yml",
"chars": 9402,
"preview": "name: \"Copilot Setup Steps\"\n\n# Automatically run the setup steps when they are changed to allow for easy validation, and"
},
{
"path": ".github/workflows/monaco-editor.yml",
"chars": 3044,
"preview": "name: Monaco Editor checks\n\non:\n push:\n branches:\n - main\n - release/*\n pull_request:\n branches:\n "
},
{
"path": ".github/workflows/no-engineering-system-changes.yml",
"chars": 4765,
"preview": "name: Prevent engineering system changes in PRs\n\non: pull_request\npermissions: {}\n\njobs:\n main:\n name: Prevent engin"
},
{
"path": ".github/workflows/pr-darwin-test.yml",
"chars": 8624,
"preview": "on:\n workflow_call:\n inputs:\n job_name:\n type: string\n required: true\n electron_tests:\n "
},
{
"path": ".github/workflows/pr-linux-cli-test.yml",
"chars": 1107,
"preview": "on:\n workflow_call:\n inputs:\n job_name:\n type: string\n required: true\n rustup_toolchain:\n "
},
{
"path": ".github/workflows/pr-linux-test.yml",
"chars": 9872,
"preview": "on:\n workflow_call:\n inputs:\n job_name:\n type: string\n required: true\n electron_tests:\n "
},
{
"path": ".github/workflows/pr-node-modules.yml",
"chars": 9745,
"preview": "name: Code OSS (node_modules)\n\non:\n push:\n branches:\n - main\n\npermissions: {}\n\njobs:\n compile:\n name: Compi"
},
{
"path": ".github/workflows/pr-win32-test.yml",
"chars": 9449,
"preview": "on:\n workflow_call:\n inputs:\n job_name:\n type: string\n required: true\n electron_tests:\n "
},
{
"path": ".github/workflows/pr.yml",
"chars": 4282,
"preview": "name: Code OSS\n\non:\n pull_request:\n branches:\n - main\n - 'release/*'\n\nconcurrency:\n group: ${{ github.wor"
},
{
"path": ".github/workflows/screenshot-test.yml",
"chars": 6113,
"preview": "name: Checking Component Screenshots\n\non:\n push:\n branches: [main]\n pull_request:\n branches:\n - main\n "
},
{
"path": ".github/workflows/sessions-e2e.yml",
"chars": 1732,
"preview": "name: Sessions E2E Tests\n\n# on:\n# pull_request:\n# branches:\n# - main\n# - 'release/*'\n# paths:\n# "
},
{
"path": ".github/workflows/telemetry.yml",
"chars": 530,
"preview": "name: 'Telemetry'\non: pull_request\npermissions: {}\njobs:\n check-metadata:\n name: 'Check metadata'\n runs-on: 'ubun"
},
{
"path": ".gitignore",
"chars": 937,
"preview": ".DS_Store\n.cache\nnpm-debug.log\nThumbs.db\nnode_modules/\n.build/\n.vscode/extensions/**/out/\nextensions/**/dist/\nsrc/vs/bas"
},
{
"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": 196,
"preview": "Raymond Zhao <raymondzhao@microsoft.com>\nTyler Leonhardt <tyleonha@microsoft.com> Tyler Leonhardt <me@tylerleonhardt.com"
},
{
"path": ".mention-bot",
"chars": 153,
"preview": "{\n \"maxReviewers\": 2,\n \"requiredOrgs\": [\"Microsoft\"],\n \"skipAlreadyAssignedPR\": true,\n \"skipAlreadyMentionedPR\": tru"
},
{
"path": ".npmrc",
"chars": 184,
"preview": "disturl=\"https://electronjs.org/headers\"\ntarget=\"39.8.5\"\nms_build_id=\"13703022\"\nruntime=\"electron\"\nignore-scripts=false\n"
},
{
"path": ".nvmrc",
"chars": 8,
"preview": "22.22.1\n"
},
{
"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-extras/package.json",
"chars": 883,
"preview": "{\n\t\"name\": \"vscode-extras\",\n\t\"displayName\": \"VS Code Extras\",\n\t\"description\": \"Extra utility features for the VS Code se"
},
{
"path": ".vscode/extensions/vscode-extras/src/extension.ts",
"chars": 1718,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".vscode/extensions/vscode-extras/src/npmUpToDateFeature.ts",
"chars": 8097,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".vscode/extensions/vscode-extras/tsconfig.json",
"chars": 225,
"preview": "{\n\t\"extends\": \"../../../extensions/tsconfig.base.json\",\n\t\"compilerOptions\": {\n\t\t\"rootDir\": \"./src\",\n\t\t\"outDir\": \"./out\","
},
{
"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": 238,
"preview": "{\n\t\"extends\": \"../../../extensions/tsconfig.base.json\",\n\t\"compilerOptions\": {\n\t\t\"rootDir\": \"./src\",\n\t\t\"outDir\": \"./out\","
},
{
"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": 2317,
"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": 10429,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".vscode/extensions/vscode-selfhost-test-provider/src/failingDeepStrictEqualAssertFixer.ts",
"chars": 6938,
"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": 19005,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".vscode/extensions/vscode-selfhost-test-provider/src/testTree.ts",
"chars": 5343,
"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": 9449,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": ".vscode/extensions/vscode-selfhost-test-provider/tsconfig.json",
"chars": 367,
"preview": "{\n\t\"extends\": \"../../../extensions/tsconfig.base.json\",\n\t\"compilerOptions\": {\n\t\t\"rootDir\": \"./src\",\n\t\t\"outDir\": \"./out\","
},
{
"path": ".vscode/extensions.json",
"chars": 433,
"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": 21163,
"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/mcp.json",
"chars": 455,
"preview": "{\n\t\"servers\": {\n\t\t\"vscode-automation-mcp\": {\n\t\t\t\"type\": \"stdio\",\n\t\t\t\"command\": \"npm\",\n\t\t\t\"args\": [\n\t\t\t\t\"run\",\n\t\t\t\t\"start"
},
{
"path": ".vscode/notebooks/api.github-issues",
"chars": 631,
"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": 1617,
"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": 7197,
"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": 11933,
"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": 3700,
"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": 1001,
"preview": "[\n {\n \"kind\": 2,\n \"language\": \"github-issues\",\n \"value\": \"$milestone=milestone:\\\"October 2025\\\"\"\n },\n {\n "
},
{
"path": ".vscode/searches/no-any-casts.code-search",
"chars": 64591,
"preview": "# Query: // eslint-disable-next-line (local/code-no-any-casts|@typescript-eslint/no-explicit-any)\n# Flags: RegExp\n\n727 r"
}
]
// ... and 9476 more files (download for full content)
About this extraction
This page contains the full source code of the microsoft/vscode GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 9676 files (123.6 MB), approximately 26.8M tokens, and a symbol index with 75633 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.