/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ // @ts-check import fs from 'fs'; import path from 'path'; import tseslint from 'typescript-eslint'; import stylisticTs from '@stylistic/eslint-plugin-ts'; import * as pluginLocal from './.eslint-plugin-local/index.js'; import pluginJsdoc from 'eslint-plugin-jsdoc'; import pluginHeader from 'eslint-plugin-header'; pluginHeader.rules.header.meta.schema = false; const ignores = fs.readFileSync(path.join(import.meta.dirname, '.eslint-ignore'), 'utf8') .toString() .split(/\r\n|\n/) .filter(line => line && !line.startsWith('#')); export default tseslint.config( // Global ignores { ignores: [ ...ignores, '!**/.eslint-plugin-local/**/*' ], }, // All files (JS and TS) { languageOptions: { parser: tseslint.parser, }, plugins: { 'local': pluginLocal, 'header': pluginHeader, }, rules: { 'constructor-super': 'warn', 'curly': 'warn', 'eqeqeq': 'warn', 'prefer-const': [ 'warn', { 'destructuring': 'all' } ], 'no-buffer-constructor': 'warn', 'no-caller': 'warn', 'no-case-declarations': 'warn', 'no-debugger': 'warn', 'no-duplicate-case': 'warn', 'no-duplicate-imports': 'warn', 'no-eval': 'warn', 'no-async-promise-executor': 'warn', 'no-extra-semi': 'warn', 'no-new-wrappers': 'warn', 'no-redeclare': 'off', 'no-sparse-arrays': 'warn', 'no-throw-literal': 'warn', 'no-unsafe-finally': 'warn', 'no-unused-labels': 'warn', 'no-misleading-character-class': 'warn', 'no-restricted-globals': [ 'warn', 'name', 'length', 'event', 'closed', 'external', 'status', 'origin', 'orientation', 'context' ], // non-complete list of globals that are easy to access unintentionally 'no-var': 'warn', 'semi': 'off', 'local/code-translation-remind': 'warn', 'local/code-no-native-private': 'warn', 'local/code-parameter-properties-must-have-explicit-accessibility': 'warn', 'local/code-no-nls-in-standalone-editor': 'warn', 'local/code-no-potentially-unsafe-disposables': 'warn', 'local/code-no-dangerous-type-assertions': 'warn', 'local/code-no-any-casts': 'warn', 'local/code-no-standalone-editor': 'warn', 'local/code-no-unexternalized-strings': 'warn', 'local/code-must-use-super-dispose': 'warn', 'local/code-declare-service-brand': 'warn', 'local/code-no-reader-after-await': 'warn', 'local/code-no-observable-get-in-reactive-context': 'warn', 'local/code-policy-localization-key-match': 'warn', 'local/code-no-deep-import-of-internal': ['error', { '.*Internal': true, 'searchExtTypesInternal': false }], 'local/code-layering': [ 'warn', { 'common': [], 'node': [ 'common' ], 'browser': [ 'common' ], 'electron-browser': [ 'common', 'browser' ], 'electron-utility': [ 'common', 'node' ], 'electron-main': [ 'common', 'node', 'electron-utility' ] } ], 'header/header': [ 2, 'block', [ '---------------------------------------------------------------------------------------------', ' * Copyright (c) Microsoft Corporation. All rights reserved.', ' * Licensed under the MIT License. See License.txt in the project root for license information.', ' *--------------------------------------------------------------------------------------------' ] ] }, }, // TS { files: [ '**/*.ts', ], languageOptions: { parser: tseslint.parser, }, plugins: { '@stylistic/ts': stylisticTs, '@typescript-eslint': tseslint.plugin, 'local': pluginLocal, 'jsdoc': pluginJsdoc, }, rules: { '@stylistic/ts/semi': 'warn', '@stylistic/ts/member-delimiter-style': 'warn', 'local/code-no-unused-expressions': [ 'warn', { 'allowTernary': true } ], 'jsdoc/no-types': 'warn', 'local/code-no-static-self-ref': 'warn' } }, // vscode TS { files: [ 'src/**/*.ts', ], languageOptions: { parser: tseslint.parser, }, plugins: { '@typescript-eslint': tseslint.plugin, }, rules: { '@typescript-eslint/naming-convention': [ 'warn', { 'selector': 'class', 'format': [ 'PascalCase' ] } ] } }, // Disallow 'in' operator except in type predicates { files: [ '**/*.ts' ], ignores: [ 'src/bootstrap-node.ts', 'build/lib/extensions.ts', 'build/lib/test/render.test.ts', 'extensions/debug-auto-launch/src/extension.ts', 'extensions/emmet/src/updateImageSize.ts', 'extensions/emmet/src/util.ts', 'extensions/git/src/blame.ts', 'extensions/github/src/links.ts', 'extensions/github-authentication/src/node/fetch.ts', 'extensions/ipynb/src/deserializers.ts', 'extensions/ipynb/src/notebookImagePaste.ts', 'extensions/ipynb/src/serializers.ts', 'extensions/notebook-renderers/src/index.ts', 'extensions/terminal-suggest/src/fig/figInterface.ts', 'extensions/terminal-suggest/src/fig/fig-autocomplete-shared/mixins.ts', 'extensions/terminal-suggest/src/fig/fig-autocomplete-shared/specMetadata.ts', 'extensions/terminal-suggest/src/terminalSuggestMain.ts', 'extensions/terminal-suggest/src/test/env/pathExecutableCache.test.ts', 'extensions/tunnel-forwarding/src/extension.ts', 'extensions/typescript-language-features/src/utils/platform.ts', 'extensions/typescript-language-features/web/src/webServer.ts', 'src/vs/base/browser/broadcast.ts', 'src/vs/base/browser/canIUse.ts', 'src/vs/base/browser/dom.ts', 'src/vs/base/browser/markdownRenderer.ts', 'src/vs/base/browser/touch.ts', 'src/vs/base/browser/webWorkerFactory.ts', 'src/vs/base/common/async.ts', 'src/vs/base/common/desktopEnvironmentInfo.ts', 'src/vs/base/common/objects.ts', 'src/vs/base/common/observableInternal/logging/consoleObservableLogger.ts', 'src/vs/base/common/observableInternal/logging/debugger/devToolsLogger.ts', 'src/vs/base/test/common/snapshot.ts', 'src/vs/base/test/common/timeTravelScheduler.ts', 'src/vs/editor/browser/controller/editContext/native/debugEditContext.ts', 'src/vs/editor/browser/gpu/gpuUtils.ts', 'src/vs/editor/browser/gpu/taskQueue.ts', 'src/vs/editor/browser/view.ts', 'src/vs/editor/browser/widget/diffEditor/diffEditorWidget.ts', 'src/vs/editor/browser/widget/diffEditor/utils.ts', 'src/vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidgetImpl.ts', 'src/vs/editor/common/config/editorOptions.ts', 'src/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.ts', 'src/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.ts', 'src/vs/editor/contrib/dropOrPasteInto/browser/edit.ts', 'src/vs/editor/contrib/inlineCompletions/browser/model/provideInlineCompletions.ts', 'src/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.ts', 'src/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/debugVisualization.ts', 'src/vs/editor/contrib/quickAccess/browser/editorNavigationQuickAccess.ts', 'src/vs/platform/accessibilitySignal/browser/accessibilitySignalService.ts', 'src/vs/platform/configuration/common/configuration.ts', 'src/vs/platform/configuration/common/configurationModels.ts', 'src/vs/platform/contextkey/browser/contextKeyService.ts', 'src/vs/platform/contextkey/test/common/scanner.test.ts', 'src/vs/platform/dataChannel/browser/forwardingTelemetryService.ts', 'src/vs/platform/externalTerminal/node/externalTerminalService.ts', 'src/vs/platform/hover/browser/hoverService.ts', 'src/vs/platform/hover/browser/hoverWidget.ts', 'src/vs/platform/instantiation/common/instantiationService.ts', 'src/vs/platform/mcp/common/mcpManagementCli.ts', 'src/vs/platform/terminal/common/capabilities/commandDetection/terminalCommand.ts', 'src/vs/platform/terminal/common/capabilities/commandDetectionCapability.ts', 'src/vs/platform/terminal/common/terminalProfiles.ts', 'src/vs/platform/terminal/node/ptyService.ts', 'src/vs/platform/terminal/node/terminalProcess.ts', 'src/vs/platform/terminal/node/terminalProfiles.ts', 'src/vs/platform/terminal/test/node/terminalEnvironment.test.ts', 'src/vs/workbench/api/browser/mainThreadChatSessions.ts', 'src/vs/workbench/api/browser/mainThreadDebugService.ts', 'src/vs/workbench/api/browser/mainThreadTerminalService.ts', 'src/vs/workbench/api/browser/mainThreadTesting.ts', 'src/vs/workbench/api/common/extHost.api.impl.ts', 'src/vs/workbench/api/common/extHostChatAgents2.ts', 'src/vs/workbench/api/common/extHostChatSessions.ts', 'src/vs/workbench/api/common/extHostDebugService.ts', 'src/vs/workbench/api/common/extHostNotebookKernels.ts', 'src/vs/workbench/api/common/extHostQuickOpen.ts', 'src/vs/workbench/api/common/extHostRequireInterceptor.ts', 'src/vs/workbench/api/common/extHostTelemetry.ts', 'src/vs/workbench/api/common/extHostTerminalService.ts', 'src/vs/workbench/api/common/extHostTypeConverters.ts', 'src/vs/workbench/api/common/extHostTypes.ts', 'src/vs/workbench/api/node/loopbackServer.ts', 'src/vs/workbench/api/node/proxyResolver.ts', 'src/vs/workbench/api/test/common/extHostTypeConverters.test.ts', 'src/vs/workbench/api/test/common/testRPCProtocol.ts', 'src/vs/workbench/api/worker/extHostExtensionService.ts', 'src/vs/workbench/browser/parts/paneCompositeBar.ts', 'src/vs/workbench/browser/parts/titlebar/titlebarPart.ts', 'src/vs/workbench/browser/workbench.ts', 'src/vs/workbench/common/notifications.ts', 'src/vs/workbench/contrib/accessibility/browser/accessibleView.ts', 'src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.ts', 'src/vs/workbench/contrib/chat/browser/chat.ts', 'src/vs/workbench/contrib/chat/browser/chatAttachmentResolveService.ts', 'src/vs/workbench/contrib/chat/browser/chatContentParts/chatAttachmentsContentPart.ts', 'src/vs/workbench/contrib/chat/browser/chatContentParts/chatConfirmationWidget.ts', 'src/vs/workbench/contrib/chat/browser/chatContentParts/chatElicitationContentPart.ts', 'src/vs/workbench/contrib/chat/browser/chatContentParts/chatReferencesContentPart.ts', 'src/vs/workbench/contrib/chat/browser/chatContentParts/chatTreeContentPart.ts', 'src/vs/workbench/contrib/chat/browser/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.ts', 'src/vs/workbench/contrib/chat/browser/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.ts', 'src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.ts', 'src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.ts', 'src/vs/workbench/contrib/chat/browser/chatEditorInput.ts', 'src/vs/workbench/contrib/chat/browser/chatFollowups.ts', 'src/vs/workbench/contrib/chat/browser/chatInlineAnchorWidget.ts', 'src/vs/workbench/contrib/chat/browser/chatInputPart.ts', 'src/vs/workbench/contrib/chat/browser/chatListRenderer.ts', 'src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.ts', 'src/vs/workbench/contrib/chat/browser/chatSessions/common.ts', 'src/vs/workbench/contrib/chat/browser/chatSessions/localChatSessionsProvider.ts', 'src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsTreeRenderer.ts', 'src/vs/workbench/contrib/chat/browser/chatWidget.ts', 'src/vs/workbench/contrib/chat/browser/contrib/chatInputCompletions.ts', 'src/vs/workbench/contrib/chat/common/annotations.ts', 'src/vs/workbench/contrib/chat/common/chat.ts', 'src/vs/workbench/contrib/chat/common/chatAgents.ts', 'src/vs/workbench/contrib/chat/common/chatModel.ts', 'src/vs/workbench/contrib/chat/common/chatService.ts', 'src/vs/workbench/contrib/chat/common/chatServiceImpl.ts', 'src/vs/workbench/contrib/chat/common/codeBlockModelCollection.ts', 'src/vs/workbench/contrib/chat/test/common/chatModel.test.ts', 'src/vs/workbench/contrib/chat/test/common/promptSyntax/testUtils/mockFilesystem.test.ts', 'src/vs/workbench/contrib/chat/test/common/promptSyntax/testUtils/mockFilesystem.ts', 'src/vs/workbench/contrib/chat/test/common/tools/manageTodoListTool.test.ts', 'src/vs/workbench/contrib/debug/browser/breakpointsView.ts', 'src/vs/workbench/contrib/debug/browser/debugAdapterManager.ts', 'src/vs/workbench/contrib/debug/browser/variablesView.ts', 'src/vs/workbench/contrib/debug/browser/watchExpressionsView.ts', 'src/vs/workbench/contrib/debug/common/debugModel.ts', 'src/vs/workbench/contrib/debug/common/debugger.ts', 'src/vs/workbench/contrib/debug/common/replAccessibilityAnnouncer.ts', 'src/vs/workbench/contrib/editSessions/browser/editSessionsStorageService.ts', 'src/vs/workbench/contrib/editTelemetry/browser/helpers/documentWithAnnotatedEdits.ts', 'src/vs/workbench/contrib/extensions/common/extensionQuery.ts', 'src/vs/workbench/contrib/interactive/browser/interactiveEditorInput.ts', 'src/vs/workbench/contrib/issue/browser/issueFormService.ts', 'src/vs/workbench/contrib/issue/browser/issueQuickAccess.ts', 'src/vs/workbench/contrib/markers/browser/markersView.ts', 'src/vs/workbench/contrib/mcp/browser/mcpElicitationService.ts', 'src/vs/workbench/contrib/mcp/common/mcpLanguageModelToolContribution.ts', 'src/vs/workbench/contrib/mcp/common/mcpResourceFilesystem.ts', 'src/vs/workbench/contrib/mcp/common/mcpSamplingLog.ts', 'src/vs/workbench/contrib/mcp/common/mcpServer.ts', 'src/vs/workbench/contrib/mcp/common/mcpServerRequestHandler.ts', 'src/vs/workbench/contrib/mcp/test/common/mcpRegistryTypes.ts', 'src/vs/workbench/contrib/mcp/test/common/mcpServerRequestHandler.test.ts', 'src/vs/workbench/contrib/notebook/browser/contrib/debug/notebookBreakpoints.ts', 'src/vs/workbench/contrib/notebook/browser/contrib/find/findModel.ts', 'src/vs/workbench/contrib/notebook/browser/controller/cellOutputActions.ts', 'src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.ts', 'src/vs/workbench/contrib/notebook/browser/controller/coreActions.ts', 'src/vs/workbench/contrib/notebook/browser/diff/diffElementViewModel.ts', 'src/vs/workbench/contrib/notebook/browser/view/cellParts/cellExecution.ts', 'src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts', 'src/vs/workbench/contrib/notebook/browser/viewParts/notebookKernelView.ts', 'src/vs/workbench/contrib/notebook/common/model/notebookTextModel.ts', 'src/vs/workbench/contrib/notebook/common/notebookEditorModel.ts', 'src/vs/workbench/contrib/output/browser/outputView.ts', 'src/vs/workbench/contrib/preferences/browser/settingsTree.ts', 'src/vs/workbench/contrib/remoteTunnel/electron-browser/remoteTunnel.contribution.ts', 'src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts', 'src/vs/workbench/contrib/tasks/browser/taskTerminalStatus.ts', 'src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts', 'src/vs/workbench/contrib/terminal/browser/baseTerminalBackend.ts', 'src/vs/workbench/contrib/terminal/browser/remotePty.ts', 'src/vs/workbench/contrib/terminal/browser/remoteTerminalBackend.ts', 'src/vs/workbench/contrib/terminal/browser/terminalActions.ts', 'src/vs/workbench/contrib/terminal/browser/terminalEditorService.ts', 'src/vs/workbench/contrib/terminal/browser/terminalGroup.ts', 'src/vs/workbench/contrib/terminal/browser/terminalIcon.ts', 'src/vs/workbench/contrib/terminal/browser/terminalIconPicker.ts', 'src/vs/workbench/contrib/terminal/browser/terminalInstance.ts', 'src/vs/workbench/contrib/terminal/browser/terminalInstanceService.ts', 'src/vs/workbench/contrib/terminal/browser/terminalMenus.ts', 'src/vs/workbench/contrib/terminal/browser/terminalProfileQuickpick.ts', 'src/vs/workbench/contrib/terminal/browser/terminalProfileResolverService.ts', 'src/vs/workbench/contrib/terminal/browser/terminalProfileService.ts', 'src/vs/workbench/contrib/terminal/browser/terminalService.ts', 'src/vs/workbench/contrib/terminal/browser/terminalTabsList.ts', 'src/vs/workbench/contrib/terminal/browser/terminalView.ts', 'src/vs/workbench/contrib/terminal/browser/xterm/markNavigationAddon.ts', 'src/vs/workbench/contrib/terminal/common/terminalEnvironment.ts', 'src/vs/workbench/contrib/terminal/common/terminalExtensionPoints.ts', 'src/vs/workbench/contrib/terminal/electron-browser/localTerminalBackend.ts', 'src/vs/workbench/contrib/terminal/test/common/terminalDataBuffering.test.ts', 'src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminal.accessibility.contribution.ts', 'src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminalAccessibleBufferProvider.ts', 'src/vs/workbench/contrib/terminalContrib/chat/browser/terminal.initialHint.contribution.ts', 'src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.ts', 'src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandLineAutoApprover.ts', 'src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.ts', 'src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.ts', 'src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.ts', 'src/vs/workbench/contrib/terminalContrib/commandGuide/browser/terminal.commandGuide.contribution.ts', 'src/vs/workbench/contrib/terminalContrib/history/browser/terminalRunRecentQuickPick.ts', 'src/vs/workbench/contrib/terminalContrib/links/browser/terminalLinkQuickpick.ts', 'src/vs/workbench/contrib/terminalContrib/links/test/browser/linkTestUtils.ts', 'src/vs/workbench/contrib/terminalContrib/quickFix/browser/quickFixAddon.ts', 'src/vs/workbench/contrib/terminalContrib/sendSequence/browser/terminal.sendSequence.contribution.ts', 'src/vs/workbench/contrib/terminalContrib/sendSignal/browser/terminal.sendSignal.contribution.ts', 'src/vs/workbench/contrib/terminalContrib/stickyScroll/browser/terminalStickyScrollOverlay.ts', 'src/vs/workbench/contrib/terminalContrib/suggest/browser/terminalCompletionService.ts', 'src/vs/workbench/contrib/testing/browser/explorerProjections/listProjection.ts', 'src/vs/workbench/contrib/testing/browser/explorerProjections/treeProjection.ts', 'src/vs/workbench/contrib/testing/browser/testCoverageBars.ts', 'src/vs/workbench/contrib/testing/browser/testExplorerActions.ts', 'src/vs/workbench/contrib/testing/browser/testingOutputPeek.ts', 'src/vs/workbench/contrib/testing/browser/testingProgressUiService.ts', 'src/vs/workbench/contrib/testing/browser/testResultsView/testResultsTree.ts', 'src/vs/workbench/contrib/testing/common/testCoverageService.ts', 'src/vs/workbench/contrib/testing/common/testResultService.ts', 'src/vs/workbench/contrib/testing/common/testingChatAgentTool.ts', 'src/vs/workbench/contrib/testing/test/browser/testObjectTree.ts', 'src/vs/workbench/contrib/themes/browser/themes.contribution.ts', 'src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.contribution.ts', 'src/vs/workbench/services/environment/electron-browser/environmentService.ts', 'src/vs/workbench/services/keybinding/common/keybindingIO.ts', 'src/vs/workbench/services/preferences/common/preferencesValidation.ts', 'src/vs/workbench/services/remote/common/tunnelModel.ts', 'src/vs/workbench/services/search/common/textSearchManager.ts', 'src/vs/workbench/services/telemetry/test/browser/commonProperties.test.ts', 'src/vs/workbench/services/telemetry/test/node/commonProperties.test.ts', 'src/vs/workbench/test/browser/workbenchTestServices.ts', 'test/automation/src/playwrightDriver.ts', '.eslint-plugin-local/**/*', ], plugins: { 'local': pluginLocal, }, rules: { 'local/code-no-in-operator': 'warn', } }, // vscode TS: strict no explicit `any` { files: [ 'src/**/*.ts', ], ignores: [ 'src/vs/amdX.ts', 'src/vs/monaco.d.ts', 'src/vscode-dts/**', // Base 'src/vs/base/browser/dom.ts', 'src/vs/base/browser/mouseEvent.ts', 'src/vs/base/browser/pixelRatio.ts', 'src/vs/base/browser/trustedTypes.ts', 'src/vs/base/browser/webWorkerFactory.ts', 'src/vs/base/node/osDisplayProtocolInfo.ts', 'src/vs/base/node/osReleaseInfo.ts', 'src/vs/base/node/processes.ts', 'src/vs/base/common/arrays.ts', 'src/vs/base/common/async.ts', 'src/vs/base/common/cancellation.ts', 'src/vs/base/common/collections.ts', 'src/vs/base/common/console.ts', 'src/vs/base/common/controlFlow.ts', 'src/vs/base/common/decorators.ts', 'src/vs/base/common/equals.ts', 'src/vs/base/common/errorMessage.ts', 'src/vs/base/common/errors.ts', 'src/vs/base/common/event.ts', 'src/vs/base/common/hotReload.ts', 'src/vs/base/common/hotReloadHelpers.ts', 'src/vs/base/common/iterator.ts', 'src/vs/base/common/json.ts', 'src/vs/base/common/jsonSchema.ts', 'src/vs/base/common/lifecycle.ts', 'src/vs/base/common/linkedList.ts', 'src/vs/base/common/map.ts', 'src/vs/base/common/marshalling.ts', 'src/vs/base/common/network.ts', 'src/vs/base/common/oauth.ts', 'src/vs/base/common/objects.ts', 'src/vs/base/common/performance.ts', 'src/vs/base/common/platform.ts', 'src/vs/base/common/processes.ts', 'src/vs/base/common/resourceTree.ts', 'src/vs/base/common/skipList.ts', 'src/vs/base/common/strings.ts', 'src/vs/base/common/ternarySearchTree.ts', 'src/vs/base/common/types.ts', 'src/vs/base/common/uriIpc.ts', 'src/vs/base/common/verifier.ts', 'src/vs/base/common/observableInternal/base.ts', 'src/vs/base/common/observableInternal/changeTracker.ts', 'src/vs/base/common/observableInternal/debugLocation.ts', 'src/vs/base/common/observableInternal/debugName.ts', 'src/vs/base/common/observableInternal/map.ts', 'src/vs/base/common/observableInternal/set.ts', 'src/vs/base/common/observableInternal/transaction.ts', 'src/vs/base/common/worker/webWorkerBootstrap.ts', 'src/vs/base/test/common/mock.ts', 'src/vs/base/test/common/snapshot.ts', 'src/vs/base/test/common/timeTravelScheduler.ts', 'src/vs/base/test/common/troubleshooting.ts', 'src/vs/base/test/common/utils.ts', 'src/vs/base/browser/ui/breadcrumbs/breadcrumbsWidget.ts', 'src/vs/base/browser/ui/grid/grid.ts', 'src/vs/base/browser/ui/grid/gridview.ts', 'src/vs/base/browser/ui/list/listPaging.ts', 'src/vs/base/browser/ui/list/listView.ts', 'src/vs/base/browser/ui/list/listWidget.ts', 'src/vs/base/browser/ui/list/rowCache.ts', 'src/vs/base/browser/ui/sash/sash.ts', 'src/vs/base/browser/ui/table/tableWidget.ts', 'src/vs/base/browser/ui/tree/abstractTree.ts', 'src/vs/base/browser/ui/tree/asyncDataTree.ts', 'src/vs/base/browser/ui/tree/compressedObjectTreeModel.ts', 'src/vs/base/browser/ui/tree/dataTree.ts', 'src/vs/base/browser/ui/tree/indexTree.ts', 'src/vs/base/browser/ui/tree/indexTreeModel.ts', 'src/vs/base/browser/ui/tree/objectTree.ts', 'src/vs/base/browser/ui/tree/objectTreeModel.ts', 'src/vs/base/browser/ui/tree/tree.ts', 'src/vs/base/parts/ipc/common/ipc.net.ts', 'src/vs/base/parts/ipc/common/ipc.ts', 'src/vs/base/parts/ipc/electron-main/ipcMain.ts', 'src/vs/base/parts/ipc/node/ipc.cp.ts', 'src/vs/base/common/observableInternal/experimental/reducer.ts', 'src/vs/base/common/observableInternal/experimental/utils.ts', 'src/vs/base/common/observableInternal/logging/consoleObservableLogger.ts', 'src/vs/base/common/observableInternal/logging/debugGetDependencyGraph.ts', 'src/vs/base/common/observableInternal/logging/logging.ts', 'src/vs/base/common/observableInternal/observables/baseObservable.ts', 'src/vs/base/common/observableInternal/observables/derived.ts', 'src/vs/base/common/observableInternal/observables/derivedImpl.ts', 'src/vs/base/common/observableInternal/observables/observableFromEvent.ts', 'src/vs/base/common/observableInternal/observables/observableSignalFromEvent.ts', 'src/vs/base/common/observableInternal/reactions/autorunImpl.ts', 'src/vs/base/common/observableInternal/utils/utils.ts', 'src/vs/base/common/observableInternal/utils/utilsCancellation.ts', 'src/vs/base/parts/ipc/test/node/testService.ts', 'src/vs/base/common/observableInternal/logging/debugger/debuggerRpc.ts', 'src/vs/base/common/observableInternal/logging/debugger/devToolsLogger.ts', 'src/vs/base/common/observableInternal/logging/debugger/rpc.ts', 'src/vs/base/test/browser/ui/grid/util.ts', // Platform 'src/vs/platform/accessibility/browser/accessibleView.ts', 'src/vs/platform/accessibility/common/accessibility.ts', 'src/vs/platform/action/common/action.ts', 'src/vs/platform/actions/common/actions.ts', 'src/vs/platform/assignment/common/assignment.ts', 'src/vs/platform/browserElements/electron-main/nativeBrowserElementsMainService.ts', 'src/vs/platform/commands/common/commands.ts', 'src/vs/platform/configuration/common/configuration.ts', 'src/vs/platform/configuration/common/configurationModels.ts', 'src/vs/platform/configuration/common/configurationRegistry.ts', 'src/vs/platform/configuration/common/configurationService.ts', 'src/vs/platform/configuration/common/configurations.ts', 'src/vs/platform/contextkey/browser/contextKeyService.ts', 'src/vs/platform/contextkey/common/contextkey.ts', 'src/vs/platform/contextview/browser/contextView.ts', 'src/vs/platform/contextview/browser/contextViewService.ts', 'src/vs/platform/debug/common/extensionHostDebugIpc.ts', 'src/vs/platform/debug/electron-main/extensionHostDebugIpc.ts', 'src/vs/platform/diagnostics/common/diagnostics.ts', 'src/vs/platform/diagnostics/node/diagnosticsService.ts', 'src/vs/platform/download/common/downloadIpc.ts', 'src/vs/platform/extensionManagement/common/abstractExtensionManagementService.ts', 'src/vs/platform/extensionManagement/common/allowedExtensionsService.ts', 'src/vs/platform/extensionManagement/common/extensionGalleryManifestServiceIpc.ts', 'src/vs/platform/extensionManagement/common/extensionGalleryService.ts', 'src/vs/platform/extensionManagement/common/extensionManagement.ts', 'src/vs/platform/extensionManagement/common/extensionManagementIpc.ts', 'src/vs/platform/extensionManagement/common/extensionManagementUtil.ts', 'src/vs/platform/extensionManagement/common/extensionNls.ts', 'src/vs/platform/extensionManagement/common/extensionStorage.ts', 'src/vs/platform/extensionManagement/common/extensionTipsService.ts', 'src/vs/platform/extensionManagement/common/extensionsProfileScannerService.ts', 'src/vs/platform/extensionManagement/common/implicitActivationEvents.ts', 'src/vs/platform/extensionManagement/node/extensionManagementService.ts', 'src/vs/platform/extensionRecommendations/common/extensionRecommendationsIpc.ts', 'src/vs/platform/extensions/common/extensionHostStarter.ts', 'src/vs/platform/extensions/common/extensionValidator.ts', 'src/vs/platform/extensions/common/extensions.ts', 'src/vs/platform/extensions/electron-main/extensionHostStarter.ts', 'src/vs/platform/externalTerminal/node/externalTerminalService.ts', 'src/vs/platform/instantiation/common/descriptors.ts', 'src/vs/platform/instantiation/common/extensions.ts', 'src/vs/platform/instantiation/common/instantiation.ts', 'src/vs/platform/instantiation/common/instantiationService.ts', 'src/vs/platform/instantiation/common/serviceCollection.ts', 'src/vs/platform/keybinding/common/keybinding.ts', 'src/vs/platform/keybinding/common/keybindingResolver.ts', 'src/vs/platform/keybinding/common/keybindingsRegistry.ts', 'src/vs/platform/keybinding/common/resolvedKeybindingItem.ts', 'src/vs/platform/keyboardLayout/common/keyboardConfig.ts', 'src/vs/platform/languagePacks/node/languagePacks.ts', 'src/vs/platform/list/browser/listService.ts', 'src/vs/platform/log/browser/log.ts', 'src/vs/platform/log/common/log.ts', 'src/vs/platform/log/common/logIpc.ts', 'src/vs/platform/log/electron-main/logIpc.ts', 'src/vs/platform/observable/common/wrapInHotClass.ts', 'src/vs/platform/observable/common/wrapInReloadableClass.ts', 'src/vs/platform/policy/common/policyIpc.ts', 'src/vs/platform/policy/node/nativePolicyService.ts', 'src/vs/platform/profiling/common/profilingTelemetrySpec.ts', 'src/vs/platform/quickinput/browser/quickInputActions.ts', 'src/vs/platform/quickinput/common/quickInput.ts', 'src/vs/platform/registry/common/platform.ts', 'src/vs/platform/remote/browser/browserSocketFactory.ts', 'src/vs/platform/remote/browser/remoteAuthorityResolverService.ts', 'src/vs/platform/remote/common/electronRemoteResources.ts', 'src/vs/platform/remote/common/managedSocket.ts', 'src/vs/platform/remote/common/remoteAgentConnection.ts', 'src/vs/platform/remote/common/remoteAuthorityResolver.ts', 'src/vs/platform/remote/electron-browser/electronRemoteResourceLoader.ts', 'src/vs/platform/remote/electron-browser/remoteAuthorityResolverService.ts', 'src/vs/platform/remoteTunnel/node/remoteTunnelService.ts', 'src/vs/platform/request/common/request.ts', 'src/vs/platform/request/common/requestIpc.ts', 'src/vs/platform/request/electron-utility/requestService.ts', 'src/vs/platform/request/node/proxy.ts', 'src/vs/platform/telemetry/browser/1dsAppender.ts', 'src/vs/platform/telemetry/browser/errorTelemetry.ts', 'src/vs/platform/telemetry/common/1dsAppender.ts', 'src/vs/platform/telemetry/common/errorTelemetry.ts', 'src/vs/platform/telemetry/common/gdprTypings.ts', 'src/vs/platform/telemetry/common/remoteTelemetryChannel.ts', 'src/vs/platform/telemetry/common/telemetry.ts', 'src/vs/platform/telemetry/common/telemetryIpc.ts', 'src/vs/platform/telemetry/common/telemetryLogAppender.ts', 'src/vs/platform/telemetry/common/telemetryService.ts', 'src/vs/platform/telemetry/common/telemetryUtils.ts', 'src/vs/platform/telemetry/node/1dsAppender.ts', 'src/vs/platform/telemetry/node/errorTelemetry.ts', 'src/vs/platform/terminal/common/terminal.ts', 'src/vs/platform/terminal/node/ptyHostService.ts', 'src/vs/platform/terminal/node/ptyService.ts', 'src/vs/platform/terminal/node/terminalProcess.ts', 'src/vs/platform/terminal/node/windowsShellHelper.ts', 'src/vs/platform/theme/common/iconRegistry.ts', 'src/vs/platform/theme/common/tokenClassificationRegistry.ts', 'src/vs/platform/update/common/updateIpc.ts', 'src/vs/platform/update/electron-main/updateService.snap.ts', 'src/vs/platform/url/common/urlIpc.ts', 'src/vs/platform/userDataProfile/common/userDataProfileIpc.ts', 'src/vs/platform/userDataProfile/electron-main/userDataProfileStorageIpc.ts', 'src/vs/platform/userDataSync/common/abstractSynchronizer.ts', 'src/vs/platform/userDataSync/common/extensionsMerge.ts', 'src/vs/platform/userDataSync/common/extensionsSync.ts', 'src/vs/platform/userDataSync/common/globalStateMerge.ts', 'src/vs/platform/userDataSync/common/globalStateSync.ts', 'src/vs/platform/userDataSync/common/ignoredExtensions.ts', 'src/vs/platform/userDataSync/common/settingsMerge.ts', 'src/vs/platform/userDataSync/common/settingsSync.ts', 'src/vs/platform/userDataSync/common/userDataAutoSyncService.ts', 'src/vs/platform/userDataSync/common/userDataSync.ts', 'src/vs/platform/userDataSync/common/userDataSyncAccount.ts', 'src/vs/platform/userDataSync/common/userDataSyncEnablementService.ts', 'src/vs/platform/userDataSync/common/userDataSyncIpc.ts', 'src/vs/platform/userDataSync/common/userDataSyncLocalStoreService.ts', 'src/vs/platform/userDataSync/common/userDataSyncMachines.ts', 'src/vs/platform/userDataSync/common/userDataSyncResourceProvider.ts', 'src/vs/platform/userDataSync/common/userDataSyncService.ts', 'src/vs/platform/userDataSync/common/userDataSyncServiceIpc.ts', 'src/vs/platform/userDataSync/common/userDataSyncStoreService.ts', 'src/vs/platform/webContentExtractor/electron-main/cdpAccessibilityDomain.ts', 'src/vs/platform/webview/common/webviewManagerService.ts', 'src/vs/platform/configuration/test/common/testConfigurationService.ts', 'src/vs/platform/instantiation/test/common/instantiationServiceMock.ts', 'src/vs/platform/keybinding/test/common/mockKeybindingService.ts', 'src/vs/platform/userDataSync/test/common/userDataSyncClient.ts', // Editor 'src/vs/editor/standalone/browser/standaloneEditor.ts', 'src/vs/editor/standalone/browser/standaloneLanguages.ts', 'src/vs/editor/standalone/browser/standaloneServices.ts', 'src/vs/editor/test/browser/testCodeEditor.ts', 'src/vs/editor/test/common/testTextModel.ts', 'src/vs/editor/contrib/bracketMatching/browser/bracketMatching.ts', 'src/vs/editor/contrib/codeAction/browser/codeAction.ts', 'src/vs/editor/contrib/codeAction/browser/codeActionCommands.ts', 'src/vs/editor/contrib/codeAction/common/types.ts', 'src/vs/editor/contrib/codelens/browser/codelens.ts', 'src/vs/editor/contrib/codelens/browser/codelensController.ts', 'src/vs/editor/contrib/colorPicker/browser/colorDetector.ts', 'src/vs/editor/contrib/diffEditorBreadcrumbs/browser/contribution.ts', 'src/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution.ts', 'src/vs/editor/contrib/find/browser/findController.ts', 'src/vs/editor/contrib/find/browser/findModel.ts', 'src/vs/editor/contrib/find/browser/findWidgetSearchHistory.ts', 'src/vs/editor/contrib/find/browser/replaceWidgetHistory.ts', 'src/vs/editor/contrib/folding/browser/folding.ts', 'src/vs/editor/contrib/gotoSymbol/browser/goToCommands.ts', 'src/vs/editor/contrib/gotoSymbol/browser/symbolNavigation.ts', 'src/vs/editor/contrib/hover/browser/hoverActions.ts', 'src/vs/editor/contrib/inlineCompletions/browser/structuredLogger.ts', 'src/vs/editor/contrib/inlineCompletions/browser/utils.ts', 'src/vs/editor/contrib/smartSelect/browser/smartSelect.ts', 'src/vs/editor/contrib/stickyScroll/browser/stickyScrollModelProvider.ts', 'src/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.ts', 'src/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.ts', 'src/vs/editor/standalone/common/monarch/monarchCommon.ts', 'src/vs/editor/standalone/common/monarch/monarchCompile.ts', 'src/vs/editor/standalone/common/monarch/monarchLexer.ts', 'src/vs/editor/standalone/common/monarch/monarchTypes.ts', 'src/vs/editor/contrib/inlineCompletions/browser/controller/commands.ts', 'src/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.ts', 'src/vs/editor/contrib/inlineCompletions/browser/model/typingSpeed.ts', 'src/vs/editor/contrib/inlineCompletions/test/browser/utils.ts', 'src/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.ts', 'src/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.ts', 'src/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/debugVisualization.ts', 'src/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.ts', // Workbench 'src/vs/workbench/api/browser/mainThreadChatSessions.ts', 'src/vs/workbench/api/browser/mainThreadTerminalService.ts', 'src/vs/workbench/api/common/configurationExtensionPoint.ts', 'src/vs/workbench/api/common/extHost.api.impl.ts', 'src/vs/workbench/api/common/extHost.protocol.ts', 'src/vs/workbench/api/common/extHostChatSessions.ts', 'src/vs/workbench/api/common/extHostCodeInsets.ts', 'src/vs/workbench/api/common/extHostCommands.ts', 'src/vs/workbench/api/common/extHostConfiguration.ts', 'src/vs/workbench/api/common/extHostConsoleForwarder.ts', 'src/vs/workbench/api/common/extHostDataChannels.ts', 'src/vs/workbench/api/common/extHostDebugService.ts', 'src/vs/workbench/api/common/extHostDiagnostics.ts', 'src/vs/workbench/api/common/extHostDocumentSaveParticipant.ts', 'src/vs/workbench/api/common/extHostExtensionActivator.ts', 'src/vs/workbench/api/common/extHostExtensionService.ts', 'src/vs/workbench/api/common/extHostFileSystemConsumer.ts', 'src/vs/workbench/api/common/extHostFileSystemEventService.ts', 'src/vs/workbench/api/common/extHostLanguageFeatures.ts', 'src/vs/workbench/api/common/extHostLanguageModelTools.ts', 'src/vs/workbench/api/common/extHostMcp.ts', 'src/vs/workbench/api/common/extHostMemento.ts', 'src/vs/workbench/api/common/extHostMessageService.ts', 'src/vs/workbench/api/common/extHostNotebookDocument.ts', 'src/vs/workbench/api/common/extHostNotebookDocumentSaveParticipant.ts', 'src/vs/workbench/api/common/extHostQuickOpen.ts', 'src/vs/workbench/api/common/extHostRequireInterceptor.ts', 'src/vs/workbench/api/common/extHostRpcService.ts', 'src/vs/workbench/api/common/extHostSCM.ts', 'src/vs/workbench/api/common/extHostSearch.ts', 'src/vs/workbench/api/common/extHostStatusBar.ts', 'src/vs/workbench/api/common/extHostStoragePaths.ts', 'src/vs/workbench/api/common/extHostTelemetry.ts', 'src/vs/workbench/api/common/extHostTerminalService.ts', 'src/vs/workbench/api/common/extHostTesting.ts', 'src/vs/workbench/api/common/extHostTextEditor.ts', 'src/vs/workbench/api/common/extHostTimeline.ts', 'src/vs/workbench/api/common/extHostTreeViews.ts', 'src/vs/workbench/api/common/extHostTypeConverters.ts', 'src/vs/workbench/api/common/extHostTypes.ts', 'src/vs/workbench/api/common/extHostTypes/es5ClassCompat.ts', 'src/vs/workbench/api/common/extHostTypes/location.ts', 'src/vs/workbench/api/common/extHostWebview.ts', 'src/vs/workbench/api/common/extHostWebviewMessaging.ts', 'src/vs/workbench/api/common/extHostWebviewPanels.ts', 'src/vs/workbench/api/common/extHostWebviewView.ts', 'src/vs/workbench/api/common/extHostWorkspace.ts', 'src/vs/workbench/api/common/extensionHostMain.ts', 'src/vs/workbench/api/common/shared/tasks.ts', 'src/vs/workbench/api/node/extHostAuthentication.ts', 'src/vs/workbench/api/node/extHostCLIServer.ts', 'src/vs/workbench/api/node/extHostConsoleForwarder.ts', 'src/vs/workbench/api/node/extHostDownloadService.ts', 'src/vs/workbench/api/node/extHostExtensionService.ts', 'src/vs/workbench/api/node/extHostMcpNode.ts', 'src/vs/workbench/api/node/extensionHostProcess.ts', 'src/vs/workbench/api/node/proxyResolver.ts', 'src/vs/workbench/api/test/common/testRPCProtocol.ts', 'src/vs/workbench/api/worker/extHostConsoleForwarder.ts', 'src/vs/workbench/api/worker/extHostExtensionService.ts', 'src/vs/workbench/api/worker/extensionHostWorker.ts', 'src/vs/workbench/contrib/accessibility/browser/accessibilityConfiguration.ts', 'src/vs/workbench/contrib/accessibilitySignals/browser/commands.ts', 'src/vs/workbench/contrib/authentication/browser/actions/manageTrustedMcpServersForAccountAction.ts', 'src/vs/workbench/contrib/bulkEdit/browser/bulkCellEdits.ts', 'src/vs/workbench/contrib/bulkEdit/browser/bulkTextEdits.ts', 'src/vs/workbench/contrib/bulkEdit/browser/opaqueEdits.ts', 'src/vs/workbench/contrib/bulkEdit/browser/preview/bulkEditPane.ts', 'src/vs/workbench/contrib/bulkEdit/browser/preview/bulkEditPreview.ts', 'src/vs/workbench/contrib/callHierarchy/browser/callHierarchy.contribution.ts', 'src/vs/workbench/contrib/callHierarchy/common/callHierarchy.ts', 'src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.ts', 'src/vs/workbench/contrib/chat/browser/actions/chatContextActions.ts', 'src/vs/workbench/contrib/chat/browser/actions/chatToolActions.ts', 'src/vs/workbench/contrib/chat/browser/chatAttachmentWidgets.ts', 'src/vs/workbench/contrib/chat/browser/chatContentParts/chatConfirmationWidget.ts', 'src/vs/workbench/contrib/chat/browser/chatContentParts/chatMultiDiffContentPart.ts', 'src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.ts', 'src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.ts', 'src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.ts', 'src/vs/workbench/contrib/chat/browser/chatInputPart.ts', 'src/vs/workbench/contrib/chat/browser/chatSessions.contribution.ts', 'src/vs/workbench/contrib/chat/browser/chatSessions/common.ts', 'src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsTreeRenderer.ts', 'src/vs/workbench/contrib/chat/browser/chatWidget.ts', 'src/vs/workbench/contrib/chat/browser/contrib/chatDynamicVariables.ts', 'src/vs/workbench/contrib/chat/common/chatAgents.ts', 'src/vs/workbench/contrib/chat/common/chatModel.ts', 'src/vs/workbench/contrib/chat/common/chatModes.ts', 'src/vs/workbench/contrib/chat/common/chatService.ts', 'src/vs/workbench/contrib/chat/common/chatServiceImpl.ts', 'src/vs/workbench/contrib/chat/common/chatSessionsService.ts', 'src/vs/workbench/contrib/chat/common/chatWidgetHistoryService.ts', 'src/vs/workbench/contrib/chat/common/languageModelToolsService.ts', 'src/vs/workbench/contrib/chat/common/languageModels.ts', 'src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.ts', 'src/vs/workbench/contrib/chat/common/tools/manageTodoListTool.ts', 'src/vs/workbench/contrib/chat/test/common/languageModels.ts', 'src/vs/workbench/contrib/chat/test/common/mockLanguageModelToolsService.ts', 'src/vs/workbench/contrib/chat/test/common/mockPromptsService.ts', 'src/vs/workbench/contrib/codeEditor/browser/inspectEditorTokens/inspectEditorTokens.ts', 'src/vs/workbench/contrib/codeEditor/browser/outline/documentSymbolsOutline.ts', 'src/vs/workbench/contrib/codeEditor/electron-browser/selectionClipboard.ts', 'src/vs/workbench/contrib/commands/common/commands.contribution.ts', 'src/vs/workbench/contrib/comments/browser/commentNode.ts', 'src/vs/workbench/contrib/comments/browser/commentsAccessibleView.ts', 'src/vs/workbench/contrib/comments/browser/commentsTreeViewer.ts', 'src/vs/workbench/contrib/comments/browser/commentsView.ts', 'src/vs/workbench/contrib/comments/browser/reactionsAction.ts', 'src/vs/workbench/contrib/customEditor/browser/customEditorInputFactory.ts', 'src/vs/workbench/contrib/customEditor/browser/customEditors.ts', 'src/vs/workbench/contrib/customEditor/common/customEditor.ts', 'src/vs/workbench/contrib/debug/browser/debugActionViewItems.ts', 'src/vs/workbench/contrib/debug/browser/debugAdapterManager.ts', 'src/vs/workbench/contrib/debug/browser/debugCommands.ts', 'src/vs/workbench/contrib/debug/browser/debugConfigurationManager.ts', 'src/vs/workbench/contrib/debug/browser/debugEditorActions.ts', 'src/vs/workbench/contrib/debug/browser/debugEditorContribution.ts', 'src/vs/workbench/contrib/debug/browser/debugHover.ts', 'src/vs/workbench/contrib/debug/browser/debugService.ts', 'src/vs/workbench/contrib/debug/browser/debugSession.ts', 'src/vs/workbench/contrib/debug/browser/rawDebugSession.ts', 'src/vs/workbench/contrib/debug/browser/repl.ts', 'src/vs/workbench/contrib/debug/browser/replViewer.ts', 'src/vs/workbench/contrib/debug/browser/variablesView.ts', 'src/vs/workbench/contrib/debug/browser/watchExpressionsView.ts', 'src/vs/workbench/contrib/debug/common/abstractDebugAdapter.ts', 'src/vs/workbench/contrib/debug/common/debugger.ts', 'src/vs/workbench/contrib/debug/common/replModel.ts', 'src/vs/workbench/contrib/debug/test/common/mockDebug.ts', 'src/vs/workbench/contrib/editSessions/common/editSessionsStorageClient.ts', 'src/vs/workbench/contrib/editSessions/common/workspaceStateSync.ts', 'src/vs/workbench/contrib/editTelemetry/browser/helpers/documentWithAnnotatedEdits.ts', 'src/vs/workbench/contrib/editTelemetry/browser/helpers/utils.ts', 'src/vs/workbench/contrib/editTelemetry/browser/telemetry/arcTelemetrySender.ts', 'src/vs/workbench/contrib/extensions/browser/extensionEditor.ts', 'src/vs/workbench/contrib/extensions/browser/extensionRecommendationNotificationService.ts', 'src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts', 'src/vs/workbench/contrib/extensions/browser/extensionsActions.ts', 'src/vs/workbench/contrib/extensions/browser/extensionsActivationProgress.ts', 'src/vs/workbench/contrib/extensions/browser/extensionsViewer.ts', 'src/vs/workbench/contrib/extensions/browser/extensionsViews.ts', 'src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts', 'src/vs/workbench/contrib/extensions/common/extensions.ts', 'src/vs/workbench/contrib/extensions/electron-browser/extensionProfileService.ts', 'src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor.ts', 'src/vs/workbench/contrib/format/browser/formatActionsMultiple.ts', 'src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.ts', 'src/vs/workbench/contrib/inlineChat/browser/inlineChatController.ts', 'src/vs/workbench/contrib/inlineChat/browser/inlineChatStrategies.ts', 'src/vs/workbench/contrib/issue/browser/issueReporterModel.ts', 'src/vs/workbench/contrib/list/browser/tableColumnResizeQuickPick.ts', 'src/vs/workbench/contrib/markdown/browser/markdownDocumentRenderer.ts', 'src/vs/workbench/contrib/markdown/browser/markdownSettingRenderer.ts', 'src/vs/workbench/contrib/markers/browser/markers.contribution.ts', 'src/vs/workbench/contrib/markers/browser/markersTable.ts', 'src/vs/workbench/contrib/markers/browser/markersView.ts', 'src/vs/workbench/contrib/mergeEditor/browser/commands/commands.ts', 'src/vs/workbench/contrib/mergeEditor/browser/utils.ts', 'src/vs/workbench/contrib/mergeEditor/browser/view/editorGutter.ts', 'src/vs/workbench/contrib/mergeEditor/browser/view/mergeEditor.ts', 'src/vs/workbench/contrib/notebook/browser/contrib/clipboard/notebookClipboard.ts', 'src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFind.ts', 'src/vs/workbench/contrib/notebook/browser/contrib/layout/layoutActions.ts', 'src/vs/workbench/contrib/notebook/browser/contrib/multicursor/notebookMulticursor.ts', 'src/vs/workbench/contrib/notebook/browser/contrib/profile/notebookProfile.ts', 'src/vs/workbench/contrib/notebook/browser/contrib/troubleshoot/layout.ts', 'src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.ts', 'src/vs/workbench/contrib/notebook/browser/controller/coreActions.ts', 'src/vs/workbench/contrib/notebook/browser/controller/editActions.ts', 'src/vs/workbench/contrib/notebook/browser/controller/notebookIndentationActions.ts', 'src/vs/workbench/contrib/notebook/browser/controller/sectionActions.ts', 'src/vs/workbench/contrib/notebook/browser/diff/diffComponents.ts', 'src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookDeletedCellDecorator.ts', 'src/vs/workbench/contrib/notebook/browser/notebookBrowser.ts', 'src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts', 'src/vs/workbench/contrib/notebook/browser/outputEditor/notebookOutputEditor.ts', 'src/vs/workbench/contrib/notebook/browser/services/notebookEditorServiceImpl.ts', 'src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts', 'src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts', 'src/vs/workbench/contrib/notebook/browser/view/renderers/webviewMessages.ts', 'src/vs/workbench/contrib/notebook/browser/view/renderers/webviewPreloads.ts', 'src/vs/workbench/contrib/notebook/browser/viewModel/cellEditorOptions.ts', 'src/vs/workbench/contrib/notebook/browser/viewModel/markupCellViewModel.ts', 'src/vs/workbench/contrib/notebook/browser/viewParts/notebookEditorStickyScroll.ts', 'src/vs/workbench/contrib/notebook/browser/viewParts/notebookHorizontalTracker.ts', 'src/vs/workbench/contrib/notebook/browser/viewParts/notebookKernelQuickPickStrategy.ts', 'src/vs/workbench/contrib/notebook/browser/viewParts/notebookViewZones.ts', 'src/vs/workbench/contrib/notebook/common/model/notebookCellOutputTextModel.ts', 'src/vs/workbench/contrib/notebook/common/model/notebookCellTextModel.ts', 'src/vs/workbench/contrib/notebook/common/model/notebookMetadataTextModel.ts', 'src/vs/workbench/contrib/notebook/common/model/notebookTextModel.ts', 'src/vs/workbench/contrib/notebook/common/notebookCommon.ts', 'src/vs/workbench/contrib/notebook/common/notebookEditorModelResolverServiceImpl.ts', 'src/vs/workbench/contrib/notebook/common/notebookRange.ts', 'src/vs/workbench/contrib/notebook/test/browser/testNotebookEditor.ts', 'src/vs/workbench/contrib/performance/electron-browser/startupProfiler.ts', 'src/vs/workbench/contrib/preferences/browser/keybindingsEditor.ts', 'src/vs/workbench/contrib/preferences/browser/preferences.contribution.ts', 'src/vs/workbench/contrib/preferences/browser/preferencesRenderers.ts', 'src/vs/workbench/contrib/preferences/browser/settingsEditor2.ts', 'src/vs/workbench/contrib/preferences/browser/settingsTree.ts', 'src/vs/workbench/contrib/preferences/browser/settingsTreeModels.ts', 'src/vs/workbench/contrib/remote/browser/tunnelView.ts', 'src/vs/workbench/contrib/search/browser/AISearch/aiSearchModel.ts', 'src/vs/workbench/contrib/search/browser/AISearch/aiSearchModelBase.ts', 'src/vs/workbench/contrib/search/browser/notebookSearch/notebookSearchModel.ts', 'src/vs/workbench/contrib/search/browser/notebookSearch/notebookSearchModelBase.ts', 'src/vs/workbench/contrib/search/browser/notebookSearch/searchNotebookHelpers.ts', 'src/vs/workbench/contrib/search/browser/replace.ts', 'src/vs/workbench/contrib/search/browser/replaceService.ts', 'src/vs/workbench/contrib/search/browser/searchActionsCopy.ts', 'src/vs/workbench/contrib/search/browser/searchActionsFind.ts', 'src/vs/workbench/contrib/search/browser/searchActionsNav.ts', 'src/vs/workbench/contrib/search/browser/searchActionsRemoveReplace.ts', 'src/vs/workbench/contrib/search/browser/searchActionsTextQuickAccess.ts', 'src/vs/workbench/contrib/search/browser/searchActionsTopBar.ts', 'src/vs/workbench/contrib/search/browser/searchMessage.ts', 'src/vs/workbench/contrib/search/browser/searchResultsView.ts', 'src/vs/workbench/contrib/search/browser/searchTreeModel/fileMatch.ts', 'src/vs/workbench/contrib/search/browser/searchTreeModel/folderMatch.ts', 'src/vs/workbench/contrib/search/browser/searchTreeModel/searchModel.ts', 'src/vs/workbench/contrib/search/browser/searchTreeModel/searchResult.ts', 'src/vs/workbench/contrib/search/browser/searchTreeModel/searchTreeCommon.ts', 'src/vs/workbench/contrib/search/browser/searchTreeModel/textSearchHeading.ts', 'src/vs/workbench/contrib/search/browser/searchView.ts', 'src/vs/workbench/contrib/search/browser/searchWidget.ts', 'src/vs/workbench/contrib/search/common/cacheState.ts', 'src/vs/workbench/contrib/search/test/browser/mockSearchTree.ts', 'src/vs/workbench/contrib/searchEditor/browser/searchEditor.contribution.ts', 'src/vs/workbench/contrib/searchEditor/browser/searchEditorActions.ts', 'src/vs/workbench/contrib/searchEditor/browser/searchEditorInput.ts', 'src/vs/workbench/contrib/snippets/browser/commands/configureSnippets.ts', 'src/vs/workbench/contrib/snippets/browser/commands/insertSnippet.ts', 'src/vs/workbench/contrib/snippets/browser/snippetsFile.ts', 'src/vs/workbench/contrib/snippets/browser/snippetsService.ts', 'src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts', 'src/vs/workbench/contrib/tasks/browser/runAutomaticTasks.ts', 'src/vs/workbench/contrib/tasks/browser/task.contribution.ts', 'src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts', 'src/vs/workbench/contrib/tasks/common/jsonSchema_v1.ts', 'src/vs/workbench/contrib/tasks/common/jsonSchema_v2.ts', 'src/vs/workbench/contrib/tasks/common/problemMatcher.ts', 'src/vs/workbench/contrib/tasks/common/taskConfiguration.ts', 'src/vs/workbench/contrib/tasks/common/taskSystem.ts', 'src/vs/workbench/contrib/tasks/common/tasks.ts', 'src/vs/workbench/contrib/terminal/browser/remoteTerminalBackend.ts', 'src/vs/workbench/contrib/terminal/browser/terminalConfigurationService.ts', 'src/vs/workbench/contrib/terminal/browser/terminalExtensions.ts', 'src/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.ts', 'src/vs/workbench/contrib/terminal/browser/terminalProcessManager.ts', 'src/vs/workbench/contrib/terminal/browser/terminalProfileQuickpick.ts', 'src/vs/workbench/contrib/terminal/browser/terminalProfileService.ts', 'src/vs/workbench/contrib/terminal/browser/xterm/xtermTerminal.ts', 'src/vs/workbench/contrib/terminal/common/basePty.ts', 'src/vs/workbench/contrib/terminal/common/remote/remoteTerminalChannel.ts', 'src/vs/workbench/contrib/terminal/common/terminal.ts', 'src/vs/workbench/contrib/terminalContrib/links/browser/links.ts', 'src/vs/workbench/contrib/terminalContrib/suggest/browser/terminalSuggestAddon.ts', 'src/vs/workbench/contrib/testing/browser/testExplorerActions.ts', 'src/vs/workbench/contrib/testing/browser/testingExplorerView.ts', 'src/vs/workbench/contrib/testing/common/storedValue.ts', 'src/vs/workbench/contrib/testing/common/testItemCollection.ts', 'src/vs/workbench/contrib/testing/test/browser/testObjectTree.ts', 'src/vs/workbench/contrib/timeline/browser/timelinePane.ts', 'src/vs/workbench/contrib/typeHierarchy/browser/typeHierarchy.contribution.ts', 'src/vs/workbench/contrib/typeHierarchy/common/typeHierarchy.ts', 'src/vs/workbench/contrib/update/browser/update.ts', 'src/vs/workbench/contrib/userDataSync/browser/userDataSync.ts', 'src/vs/workbench/contrib/webview/browser/overlayWebview.ts', 'src/vs/workbench/contrib/webview/browser/webview.ts', 'src/vs/workbench/contrib/webview/browser/webviewElement.ts', 'src/vs/workbench/contrib/webviewPanel/browser/webviewEditor.ts', 'src/vs/workbench/contrib/webviewPanel/browser/webviewEditorInputSerializer.ts', 'src/vs/workbench/contrib/webviewPanel/browser/webviewWorkbenchService.ts', 'src/vs/workbench/contrib/webviewView/browser/webviewViewPane.ts', 'src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.ts', 'src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedAccessibleView.ts', 'src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedService.ts', 'src/vs/workbench/contrib/welcomeViews/common/newFile.contribution.ts', 'src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThroughPart.ts', 'src/vs/workbench/services/accounts/common/defaultAccount.ts', 'src/vs/workbench/services/assignment/common/assignmentFilters.ts', 'src/vs/workbench/services/authentication/common/authentication.ts', 'src/vs/workbench/services/authentication/test/browser/authenticationQueryServiceMocks.ts', 'src/vs/workbench/services/commands/common/commandService.ts', 'src/vs/workbench/services/configuration/browser/configuration.ts', 'src/vs/workbench/services/configuration/browser/configurationService.ts', 'src/vs/workbench/services/configuration/common/configurationModels.ts', 'src/vs/workbench/services/configuration/common/jsonEditingService.ts', 'src/vs/workbench/services/configuration/test/common/testServices.ts', 'src/vs/workbench/services/configurationResolver/browser/baseConfigurationResolverService.ts', 'src/vs/workbench/services/configurationResolver/common/configurationResolver.ts', 'src/vs/workbench/services/configurationResolver/common/configurationResolverExpression.ts', 'src/vs/workbench/services/configurationResolver/common/variableResolver.ts', 'src/vs/workbench/services/extensionManagement/browser/builtinExtensionsScannerService.ts', 'src/vs/workbench/services/extensionManagement/browser/webExtensionsScannerService.ts', 'src/vs/workbench/services/extensions/common/extHostCustomers.ts', 'src/vs/workbench/services/extensions/common/extensionHostManager.ts', 'src/vs/workbench/services/extensions/common/extensionHostProtocol.ts', 'src/vs/workbench/services/extensions/common/extensionHostProxy.ts', 'src/vs/workbench/services/extensions/common/extensionsRegistry.ts', 'src/vs/workbench/services/extensions/common/lazyPromise.ts', 'src/vs/workbench/services/extensions/common/polyfillNestedWorker.protocol.ts', 'src/vs/workbench/services/extensions/common/proxyIdentifier.ts', 'src/vs/workbench/services/extensions/common/rpcProtocol.ts', 'src/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.ts', 'src/vs/workbench/services/extensions/electron-browser/localProcessExtensionHost.ts', 'src/vs/workbench/services/extensions/worker/polyfillNestedWorker.ts', 'src/vs/workbench/services/keybinding/browser/keybindingService.ts', 'src/vs/workbench/services/keybinding/browser/keyboardLayoutService.ts', 'src/vs/workbench/services/keybinding/common/keybindingEditing.ts', 'src/vs/workbench/services/keybinding/common/keybindingIO.ts', 'src/vs/workbench/services/keybinding/common/keymapInfo.ts', 'src/vs/workbench/services/language/common/languageService.ts', 'src/vs/workbench/services/languageDetection/browser/languageDetectionWorker.protocol.ts', 'src/vs/workbench/services/outline/browser/outline.ts', 'src/vs/workbench/services/outline/browser/outlineService.ts', 'src/vs/workbench/services/preferences/common/preferences.ts', 'src/vs/workbench/services/preferences/common/preferencesModels.ts', 'src/vs/workbench/services/preferences/common/preferencesValidation.ts', 'src/vs/workbench/services/remote/common/tunnelModel.ts', 'src/vs/workbench/services/search/common/localFileSearchWorkerTypes.ts', 'src/vs/workbench/services/search/common/replace.ts', 'src/vs/workbench/services/search/common/search.ts', 'src/vs/workbench/services/search/common/searchExtConversionTypes.ts', 'src/vs/workbench/services/search/common/searchExtTypes.ts', 'src/vs/workbench/services/search/common/searchService.ts', 'src/vs/workbench/services/search/node/fileSearch.ts', 'src/vs/workbench/services/search/node/rawSearchService.ts', 'src/vs/workbench/services/search/node/ripgrepTextSearchEngine.ts', 'src/vs/workbench/services/search/worker/localFileSearch.ts', 'src/vs/workbench/services/terminal/common/embedderTerminalService.ts', 'src/vs/workbench/services/textMate/browser/backgroundTokenization/worker/textMateTokenizationWorker.worker.ts', 'src/vs/workbench/services/textMate/browser/backgroundTokenization/worker/textMateWorkerHost.ts', 'src/vs/workbench/services/textMate/browser/textMateTokenizationFeatureImpl.ts', 'src/vs/workbench/services/textMate/common/TMGrammarFactory.ts', 'src/vs/workbench/services/themes/browser/fileIconThemeData.ts', 'src/vs/workbench/services/themes/browser/productIconThemeData.ts', 'src/vs/workbench/services/themes/browser/workbenchThemeService.ts', 'src/vs/workbench/services/themes/common/colorThemeData.ts', 'src/vs/workbench/services/themes/common/plistParser.ts', 'src/vs/workbench/services/themes/common/themeExtensionPoints.ts', 'src/vs/workbench/services/themes/common/workbenchThemeService.ts', 'src/vs/workbench/services/userActivity/common/userActivityRegistry.ts', 'src/vs/workbench/services/userData/browser/userDataInit.ts', 'src/vs/workbench/services/userDataProfile/browser/userDataProfileInit.ts', 'src/vs/workbench/services/userDataSync/browser/userDataSyncInit.ts', 'src/vs/workbench/services/userDataSync/browser/userDataSyncWorkbenchService.ts', 'src/vs/workbench/services/userDataSync/common/userDataSync.ts', 'src/vs/workbench/test/browser/workbenchTestServices.ts', 'src/vs/workbench/test/common/workbenchTestServices.ts', 'src/vs/workbench/test/electron-browser/workbenchTestServices.ts', 'src/vs/workbench/workbench.web.main.internal.ts', 'src/vs/workbench/workbench.web.main.ts', // Server 'src/vs/server/node/remoteAgentEnvironmentImpl.ts', 'src/vs/server/node/remoteExtensionHostAgentServer.ts', 'src/vs/server/node/remoteExtensionsScanner.ts', 'src/vs/server/node/remoteTerminalChannel.ts', // Tests '**/*.test.ts', '**/*.integrationTest.ts' ], languageOptions: { parser: tseslint.parser, }, plugins: { '@typescript-eslint': tseslint.plugin, }, rules: { '@typescript-eslint/no-explicit-any': [ 'warn', { 'fixToUnknown': true } ] } }, // Tests { files: [ '**/*.test.ts' ], languageOptions: { parser: tseslint.parser, }, plugins: { 'local': pluginLocal, }, rules: { 'local/code-no-dangerous-type-assertions': 'off', 'local/code-must-use-super-dispose': 'off', 'local/code-no-test-only': 'error', 'local/code-no-test-async-suite': 'warn', 'local/code-must-use-result': [ 'warn', [ { 'message': 'Expression must be awaited', 'functions': [ 'assertSnapshot', 'assertHeap' ] } ] ] } }, // vscode tests specific rules { files: [ 'src/vs/**/*.test.ts' ], languageOptions: { parser: tseslint.parser, }, plugins: { 'local': pluginLocal, }, rules: { 'local/code-ensure-no-disposables-leak-in-test': [ 'warn', { // Files should (only) be removed from the list they adopt the leak detector 'exclude': [ 'src/vs/workbench/services/userActivity/test/browser/domActivityTracker.test.ts', ] } ] } }, // vscode API { files: [ '**/vscode.d.ts', '**/vscode.proposed.*.d.ts' ], languageOptions: { parser: tseslint.parser, }, plugins: { 'local': pluginLocal, }, rules: { 'no-restricted-syntax': [ 'warn', { 'selector': `TSArrayType > TSUnionType`, 'message': 'Use Array<...> for arrays of union types.' }, ], 'local/vscode-dts-create-func': 'warn', 'local/vscode-dts-literal-or-types': 'warn', 'local/vscode-dts-string-type-literals': 'warn', 'local/vscode-dts-interface-naming': 'warn', 'local/vscode-dts-cancellation': 'warn', 'local/vscode-dts-use-export': 'warn', 'local/vscode-dts-use-thenable': 'warn', 'local/vscode-dts-vscode-in-comments': 'warn', 'local/vscode-dts-provider-naming': [ 'warn', { 'allowed': [ 'FileSystemProvider', 'TreeDataProvider', 'TestProvider', 'CustomEditorProvider', 'CustomReadonlyEditorProvider', 'TerminalLinkProvider', 'AuthenticationProvider', 'NotebookContentProvider' ] } ], 'local/vscode-dts-event-naming': [ 'warn', { 'allowed': [ 'onCancellationRequested', 'event' ], 'verbs': [ 'accept', 'change', 'close', 'collapse', 'create', 'delete', 'discover', 'dispose', 'drop', 'edit', 'end', 'execute', 'expand', 'grant', 'hide', 'invalidate', 'open', 'override', 'perform', 'receive', 'register', 'remove', 'rename', 'save', 'send', 'start', 'terminate', 'trigger', 'unregister', 'write', 'commit' ] } ] } }, // vscode.d.ts { files: [ '**/vscode.d.ts' ], languageOptions: { parser: tseslint.parser, }, rules: { 'jsdoc/tag-lines': 'off', 'jsdoc/valid-types': 'off', 'jsdoc/no-multi-asterisks': [ 'warn', { 'allowWhitespace': true } ], 'jsdoc/require-jsdoc': [ 'warn', { 'enableFixer': false, 'contexts': [ 'TSInterfaceDeclaration', 'TSPropertySignature', 'TSMethodSignature', 'TSDeclareFunction', 'ClassDeclaration', 'MethodDefinition', 'PropertyDeclaration', 'TSEnumDeclaration', 'TSEnumMember', 'ExportNamedDeclaration' ] } ], 'jsdoc/check-param-names': [ 'warn', { 'enableFixer': false, 'checkDestructured': false } ], 'jsdoc/require-returns': 'warn' } }, // common/browser layer { files: [ 'src/**/{common,browser}/**/*.ts' ], languageOptions: { parser: tseslint.parser, }, plugins: { 'local': pluginLocal, }, rules: { 'local/code-amd-node-module': 'warn' } }, // node/electron layer { files: [ 'src/*.ts', 'src/**/{node,electron-main,electron-utility}/**/*.ts' ], languageOptions: { parser: tseslint.parser, }, plugins: { 'local': pluginLocal, }, rules: { 'no-restricted-globals': [ 'warn', 'name', 'length', 'event', 'closed', 'external', 'status', 'origin', 'orientation', 'context', // Below are globals that are unsupported in ESM '__dirname', '__filename', 'require' ] } }, // browser/electron-browser layer { files: [ 'src/**/{browser,electron-browser}/**/*.ts' ], languageOptions: { parser: tseslint.parser, }, plugins: { 'local': pluginLocal, }, rules: { 'local/code-no-global-document-listener': 'warn', 'no-restricted-syntax': [ 'warn', { 'selector': `NewExpression[callee.object.name='Intl']`, 'message': 'Use safeIntl helper instead for safe and lazy use of potentially expensive Intl methods.' }, { 'selector': `BinaryExpression[operator='instanceof'][right.name='MouseEvent']`, 'message': 'Use DOM.isMouseEvent() to support multi-window scenarios.' }, { 'selector': `BinaryExpression[operator='instanceof'][right.name=/^HTML\\w+/]`, 'message': 'Use DOM.isHTMLElement() and related methods to support multi-window scenarios.' }, { 'selector': `BinaryExpression[operator='instanceof'][right.name=/^SVG\\w+/]`, 'message': 'Use DOM.isSVGElement() and related methods to support multi-window scenarios.' }, { 'selector': `BinaryExpression[operator='instanceof'][right.name='KeyboardEvent']`, 'message': 'Use DOM.isKeyboardEvent() to support multi-window scenarios.' }, { 'selector': `BinaryExpression[operator='instanceof'][right.name='PointerEvent']`, 'message': 'Use DOM.isPointerEvent() to support multi-window scenarios.' }, { 'selector': `BinaryExpression[operator='instanceof'][right.name='DragEvent']`, 'message': 'Use DOM.isDragEvent() to support multi-window scenarios.' }, { 'selector': `MemberExpression[object.name='document'][property.name='activeElement']`, 'message': 'Use .document.activeElement to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'selector': `MemberExpression[object.name='document'][property.name='contains']`, 'message': 'Use .document.contains to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'selector': `MemberExpression[object.name='document'][property.name='styleSheets']`, 'message': 'Use .document.styleSheets to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'selector': `MemberExpression[object.name='document'][property.name='fullscreenElement']`, 'message': 'Use .document.fullscreenElement to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'selector': `MemberExpression[object.name='document'][property.name='body']`, 'message': 'Use .document.body to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'selector': `MemberExpression[object.name='document'][property.name='addEventListener']`, 'message': 'Use .document.addEventListener to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'selector': `MemberExpression[object.name='document'][property.name='removeEventListener']`, 'message': 'Use .document.removeEventListener to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'selector': `MemberExpression[object.name='document'][property.name='hasFocus']`, 'message': 'Use .document.hasFocus to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'selector': `MemberExpression[object.name='document'][property.name='head']`, 'message': 'Use .document.head to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'selector': `MemberExpression[object.name='document'][property.name='exitFullscreen']`, 'message': 'Use .document.exitFullscreen to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'selector': `MemberExpression[object.name='document'][property.name='getElementById']`, 'message': 'Use .document.getElementById to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'selector': `MemberExpression[object.name='document'][property.name='getElementsByClassName']`, 'message': 'Use .document.getElementsByClassName to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'selector': `MemberExpression[object.name='document'][property.name='getElementsByName']`, 'message': 'Use .document.getElementsByName to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'selector': `MemberExpression[object.name='document'][property.name='getElementsByTagName']`, 'message': 'Use .document.getElementsByTagName to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'selector': `MemberExpression[object.name='document'][property.name='getElementsByTagNameNS']`, 'message': 'Use .document.getElementsByTagNameNS to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'selector': `MemberExpression[object.name='document'][property.name='getSelection']`, 'message': 'Use .document.getSelection to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'selector': `MemberExpression[object.name='document'][property.name='open']`, 'message': 'Use .document.open to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'selector': `MemberExpression[object.name='document'][property.name='close']`, 'message': 'Use .document.close to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'selector': `MemberExpression[object.name='document'][property.name='documentElement']`, 'message': 'Use .document.documentElement to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'selector': `MemberExpression[object.name='document'][property.name='visibilityState']`, 'message': 'Use .document.visibilityState to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'selector': `MemberExpression[object.name='document'][property.name='querySelector']`, 'message': 'Use .document.querySelector to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'selector': `MemberExpression[object.name='document'][property.name='querySelectorAll']`, 'message': 'Use .document.querySelectorAll to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'selector': `MemberExpression[object.name='document'][property.name='elementFromPoint']`, 'message': 'Use .document.elementFromPoint to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'selector': `MemberExpression[object.name='document'][property.name='elementsFromPoint']`, 'message': 'Use .document.elementsFromPoint to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'selector': `MemberExpression[object.name='document'][property.name='onkeydown']`, 'message': 'Use .document.onkeydown to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'selector': `MemberExpression[object.name='document'][property.name='onkeyup']`, 'message': 'Use .document.onkeyup to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'selector': `MemberExpression[object.name='document'][property.name='onmousedown']`, 'message': 'Use .document.onmousedown to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'selector': `MemberExpression[object.name='document'][property.name='onmouseup']`, 'message': 'Use .document.onmouseup to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'selector': `MemberExpression[object.name='document'][property.name='execCommand']`, 'message': 'Use .document.execCommand to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'selector': 'CallExpression[callee.property.name=\'querySelector\']', 'message': 'querySelector should not be used as relying on selectors is very fragile. Use dom.ts h() to build your elements and access them directly.' }, { 'selector': 'CallExpression[callee.property.name=\'querySelectorAll\']', 'message': 'querySelectorAll should not be used as relying on selectors is very fragile. Use dom.ts h() to build your elements and access them directly.' }, { 'selector': 'CallExpression[callee.property.name=\'getElementById\']', 'message': 'getElementById should not be used as relying on selectors is very fragile. Use dom.ts h() to build your elements and access them directly.' }, { 'selector': 'CallExpression[callee.property.name=\'getElementsByClassName\']', 'message': 'getElementsByClassName should not be used as relying on selectors is very fragile. Use dom.ts h() to build your elements and access them directly.' }, { 'selector': 'CallExpression[callee.property.name=\'getElementsByTagName\']', 'message': 'getElementsByTagName should not be used as relying on selectors is very fragile. Use dom.ts h() to build your elements and access them directly.' }, { 'selector': 'CallExpression[callee.property.name=\'getElementsByName\']', 'message': 'getElementsByName should not be used as relying on selectors is very fragile. Use dom.ts h() to build your elements and access them directly.' }, { 'selector': 'CallExpression[callee.property.name=\'getElementsByTagNameNS\']', 'message': 'getElementsByTagNameNS should not be used as relying on selectors is very fragile. Use dom.ts h() to build your elements and access them directly.' } ], 'no-restricted-globals': [ 'warn', 'name', 'length', 'event', 'closed', 'external', 'status', 'origin', 'orientation', 'context', { 'name': 'setInterval', 'message': 'Use .setInterval to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'clearInterval', 'message': 'Use .clearInterval to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'requestAnimationFrame', 'message': 'Use .requestAnimationFrame to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'cancelAnimationFrame', 'message': 'Use .cancelAnimationFrame to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'requestIdleCallback', 'message': 'Use .requestIdleCallback to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'cancelIdleCallback', 'message': 'Use .cancelIdleCallback to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'window', 'message': 'Use to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'addEventListener', 'message': 'Use .addEventListener to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'removeEventListener', 'message': 'Use .removeEventListener to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'getComputedStyle', 'message': 'Use .getComputedStyle to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'focus', 'message': 'Use .focus to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'blur', 'message': 'Use .blur to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'close', 'message': 'Use .close to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'dispatchEvent', 'message': 'Use .dispatchEvent to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'getSelection', 'message': 'Use .getSelection to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'matchMedia', 'message': 'Use .matchMedia to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'open', 'message': 'Use .open to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'parent', 'message': 'Use .parent to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'postMessage', 'message': 'Use .postMessage to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'devicePixelRatio', 'message': 'Use .devicePixelRatio to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'frames', 'message': 'Use .frames to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'frameElement', 'message': 'Use .frameElement to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'innerHeight', 'message': 'Use .innerHeight to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'innerWidth', 'message': 'Use .innerWidth to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'outerHeight', 'message': 'Use .outerHeight to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'outerWidth', 'message': 'Use .outerWidth to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'opener', 'message': 'Use .opener to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'origin', 'message': 'Use .origin to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'screen', 'message': 'Use .screen to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'screenLeft', 'message': 'Use .screenLeft to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'screenTop', 'message': 'Use .screenTop to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'screenX', 'message': 'Use .screenX to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'screenY', 'message': 'Use .screenY to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'scrollX', 'message': 'Use .scrollX to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'scrollY', 'message': 'Use .scrollY to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'top', 'message': 'Use .top to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' }, { 'name': 'visualViewport', 'message': 'Use .visualViewport to support multi-window scenarios. Resolve targetWindow with DOM.getWindow(element) or DOM.getActiveWindow() or use the predefined mainWindow constant.' } ] } }, // electron-utility layer { files: [ 'src/**/electron-utility/**/*.ts' ], languageOptions: { parser: tseslint.parser, }, rules: { 'no-restricted-imports': [ 'warn', { 'paths': [ { 'name': 'electron', 'allowImportNames': [ 'net', 'system-preferences', ], 'message': 'Only net and system-preferences are allowed to be imported from electron' } ] } ] } }, { files: [ 'src/**/*.ts' ], languageOptions: { parser: tseslint.parser, }, plugins: { 'local': pluginLocal, }, rules: { 'no-restricted-imports': [ 'warn', { 'patterns': [ { 'group': ['dompurify*'], 'message': 'Use domSanitize instead of dompurify directly' }, ] } ], 'local/code-import-patterns': [ 'warn', { // imports that are allowed in all files of layers: // - browser // - electron-browser 'when': 'hasBrowser', 'allow': [] }, { // imports that are allowed in all files of layers: // - node // - electron-utility // - electron-main 'when': 'hasNode', 'allow': [ '@parcel/watcher', '@vscode/sqlite3', '@vscode/vscode-languagedetection', '@vscode/ripgrep', '@vscode/iconv-lite-umd', '@vscode/policy-watcher', '@vscode/proxy-agent', '@vscode/spdlog', '@vscode/windows-process-tree', 'assert', 'child_process', 'console', 'cookie', 'crypto', 'dns', 'events', 'fs', 'fs/promises', 'http', 'https', 'minimist', 'node:module', 'native-keymap', 'native-watchdog', 'net', 'node-pty', 'os', // 'path', NOT allowed: use src/vs/base/common/path.ts instead 'perf_hooks', 'readline', 'stream', 'string_decoder', 'tas-client-umd', 'tls', 'undici', 'undici-types', 'url', 'util', 'v8-inspect-profiler', 'vscode-regexpp', 'vscode-textmate', 'worker_threads', '@xterm/addon-clipboard', '@xterm/addon-image', '@xterm/addon-ligatures', '@xterm/addon-search', '@xterm/addon-serialize', '@xterm/addon-unicode11', '@xterm/addon-webgl', '@xterm/headless', '@xterm/xterm', 'yauzl', 'yazl', 'zlib' ] }, { // imports that are allowed in all files of layers: // - electron-utility // - electron-main 'when': 'hasElectron', 'allow': [ 'electron' ] }, { // imports that are allowed in all /test/ files 'when': 'test', 'allow': [ 'assert', 'sinon', 'sinon-test' ] }, // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // !!! Do not relax these rules !!! // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // // A path ending in /~ has a special meaning. It indicates a template position // which will be substituted with one or more layers. // // When /~ is used in the target, the rule will be expanded to 14 distinct rules. // e.g. 'src/vs/base/~' will be expanded to: // - src/vs/base/common // - src/vs/base/worker // - src/vs/base/browser // - src/vs/base/electron-browser // - src/vs/base/node // - src/vs/base/electron-main // - src/vs/base/test/common // - src/vs/base/test/worker // - src/vs/base/test/browser // - src/vs/base/test/electron-browser // - src/vs/base/test/node // - src/vs/base/test/electron-main // // When /~ is used in the restrictions, it will be replaced with the correct // layers that can be used e.g. 'src/vs/base/electron-browser' will be able // to import '{common,browser,electron-sanbox}', etc. // // It is possible to use /~ in the restrictions property even without using it in // the target property by adding a layer property. { 'target': 'src/vs/base/~', 'restrictions': [ 'vs/base/~' ] }, { 'target': 'src/vs/base/parts/*/~', 'restrictions': [ 'vs/base/~', 'vs/base/parts/*/~' ] }, { 'target': 'src/vs/platform/*/~', 'restrictions': [ 'vs/base/~', 'vs/base/parts/*/~', 'vs/platform/*/~', 'tas-client-umd', // node module allowed even in /common/ '@microsoft/1ds-core-js', // node module allowed even in /common/ '@microsoft/1ds-post-js', // node module allowed even in /common/ '@xterm/headless' // node module allowed even in /common/ ] }, { 'target': 'src/vs/editor/~', 'restrictions': [ 'vs/base/~', 'vs/base/parts/*/~', 'vs/platform/*/~', 'vs/editor/~', '@vscode/tree-sitter-wasm' // node module allowed even in /common/ ] }, { 'target': 'src/vs/editor/contrib/*/~', 'restrictions': [ 'vs/base/~', 'vs/base/parts/*/~', 'vs/platform/*/~', 'vs/editor/~', 'vs/editor/contrib/*/~' ] }, { 'target': 'src/vs/editor/standalone/~', 'restrictions': [ 'vs/base/~', 'vs/base/parts/*/~', 'vs/platform/*/~', 'vs/editor/~', 'vs/editor/contrib/*/~', 'vs/editor/standalone/~', '@vscode/tree-sitter-wasm' // type import ] }, { 'target': 'src/vs/editor/editor.all.ts', 'layer': 'browser', 'restrictions': [ 'vs/base/~', 'vs/base/parts/*/~', 'vs/platform/*/~', 'vs/editor/~', 'vs/editor/contrib/*/~' ] }, { 'target': 'src/vs/editor/editor.worker.start.ts', 'layer': 'worker', 'restrictions': [ 'vs/base/~', 'vs/base/parts/*/~', 'vs/platform/*/~', 'vs/editor/~' ] }, { 'target': 'src/vs/editor/{editor.api.ts,editor.main.ts}', 'layer': 'browser', 'restrictions': [ 'vs/base/~', 'vs/base/parts/*/~', 'vs/editor/~', 'vs/editor/contrib/*/~', 'vs/editor/standalone/~', 'vs/editor/*' ] }, { 'target': 'src/vs/workbench/~', 'restrictions': [ 'vs/base/~', 'vs/base/parts/*/~', 'vs/platform/*/~', 'vs/editor/~', 'vs/editor/contrib/*/~', 'vs/workbench/~', 'vs/workbench/services/*/~', 'assert', { 'when': 'test', 'pattern': 'vs/workbench/contrib/*/~' } // TODO@layers ] }, { 'target': 'src/vs/workbench/api/~', 'restrictions': [ 'vscode', 'vs/base/~', 'vs/base/parts/*/~', 'vs/platform/*/~', 'vs/editor/~', 'vs/editor/contrib/*/~', 'vs/workbench/api/~', 'vs/workbench/~', 'vs/workbench/services/*/~', 'vs/workbench/contrib/*/~', 'vs/workbench/contrib/terminalContrib/*/~' ] }, { 'target': 'src/vs/workbench/services/*/~', 'restrictions': [ 'vs/base/~', 'vs/base/parts/*/~', 'vs/platform/*/~', 'vs/editor/~', 'vs/editor/contrib/*/~', 'vs/workbench/~', 'vs/workbench/services/*/~', { 'when': 'test', 'pattern': 'vs/workbench/contrib/*/~' }, // TODO@layers 'tas-client-umd', // node module allowed even in /common/ 'vscode-textmate', // node module allowed even in /common/ '@vscode/vscode-languagedetection', // node module allowed even in /common/ '@vscode/tree-sitter-wasm', // type import { 'when': 'hasBrowser', 'pattern': '@xterm/xterm' } // node module allowed even in /browser/ ] }, { 'target': 'src/vs/workbench/contrib/*/~', 'restrictions': [ 'vs/base/~', 'vs/base/parts/*/~', 'vs/platform/*/~', 'vs/editor/~', 'vs/editor/contrib/*/~', 'vs/workbench/~', 'vs/workbench/services/*/~', 'vs/workbench/contrib/*/~', 'vs/workbench/contrib/terminal/terminalContribChatExports*', 'vs/workbench/contrib/terminal/terminalContribExports*', 'vscode-notebook-renderer', // Type only import '@vscode/tree-sitter-wasm', // type import { 'when': 'hasBrowser', 'pattern': '@xterm/xterm' }, // node module allowed even in /browser/ { 'when': 'hasBrowser', 'pattern': '@xterm/addon-*' }, // node module allowed even in /browser/ { 'when': 'hasBrowser', 'pattern': 'vscode-textmate' } // node module allowed even in /browser/ ] }, { 'target': 'src/vs/workbench/contrib/terminalContrib/*/~', 'restrictions': [ 'vs/base/~', 'vs/base/parts/*/~', 'vs/platform/*/~', 'vs/editor/~', 'vs/editor/contrib/*/~', 'vs/workbench/~', 'vs/workbench/services/*/~', 'vs/workbench/contrib/*/~', // Only allow terminalContrib to import from itself, this works because // terminalContrib is one extra folder deep 'vs/workbench/contrib/terminalContrib/*/~', 'vscode-notebook-renderer', // Type only import '@vscode/tree-sitter-wasm', // type import { 'when': 'hasBrowser', 'pattern': '@xterm/xterm' }, // node module allowed even in /browser/ { 'when': 'hasBrowser', 'pattern': '@xterm/addon-*' }, // node module allowed even in /browser/ { 'when': 'hasBrowser', 'pattern': 'vscode-textmate' }, // node module allowed even in /browser/ '@xterm/headless' // node module allowed even in /common/ and /browser/ ] }, { 'target': 'src/vs/code/~', 'restrictions': [ 'vs/base/~', 'vs/base/parts/*/~', 'vs/platform/*/~', 'vs/editor/~', 'vs/editor/contrib/*/~', 'vs/code/~', { 'when': 'hasBrowser', 'pattern': 'vs/workbench/workbench.web.main.js' }, { 'when': 'hasBrowser', 'pattern': 'vs/workbench/workbench.web.main.internal.js' }, { 'when': 'hasBrowser', 'pattern': 'vs/workbench/~' }, { 'when': 'hasBrowser', 'pattern': 'vs/workbench/services/*/~' } ] }, { 'target': 'src/vs/server/~', 'restrictions': [ 'vs/base/~', 'vs/base/parts/*/~', 'vs/platform/*/~', 'vs/workbench/~', 'vs/workbench/api/~', 'vs/workbench/services/*/~', 'vs/workbench/contrib/*/~', 'vs/server/~' ] }, { 'target': 'src/vs/workbench/contrib/terminal/terminal.all.ts', 'layer': 'browser', 'restrictions': [ 'vs/workbench/contrib/**' ] }, { 'target': 'src/vs/workbench/contrib/terminal/terminalContribChatExports.ts', 'layer': 'browser', 'restrictions': [ 'vs/workbench/contrib/terminalContrib/*/~' ] }, { 'target': 'src/vs/workbench/contrib/terminal/terminalContribExports.ts', 'layer': 'browser', 'restrictions': [ 'vs/platform/*/~', 'vs/workbench/contrib/terminalContrib/*/~' ] }, { 'target': 'src/vs/workbench/workbench.common.main.ts', 'layer': 'browser', 'restrictions': [ 'vs/base/~', 'vs/base/parts/*/~', 'vs/platform/*/~', 'vs/editor/~', 'vs/editor/contrib/*/~', 'vs/editor/editor.all.js', 'vs/workbench/~', 'vs/workbench/api/~', 'vs/workbench/services/*/~', 'vs/workbench/contrib/*/~', 'vs/workbench/contrib/terminal/terminal.all.js' ] }, { 'target': 'src/vs/workbench/workbench.web.main.ts', 'layer': 'browser', 'restrictions': [ 'vs/base/~', 'vs/base/parts/*/~', 'vs/platform/*/~', 'vs/editor/~', 'vs/editor/contrib/*/~', 'vs/editor/editor.all.js', 'vs/workbench/~', 'vs/workbench/api/~', 'vs/workbench/services/*/~', 'vs/workbench/contrib/*/~', 'vs/workbench/workbench.common.main.js' ] }, { 'target': 'src/vs/workbench/workbench.web.main.internal.ts', 'layer': 'browser', 'restrictions': [ 'vs/base/~', 'vs/base/parts/*/~', 'vs/platform/*/~', 'vs/editor/~', 'vs/editor/contrib/*/~', 'vs/editor/editor.all.js', 'vs/workbench/~', 'vs/workbench/api/~', 'vs/workbench/services/*/~', 'vs/workbench/contrib/*/~', 'vs/workbench/workbench.common.main.js' ] }, { 'target': 'src/vs/workbench/workbench.desktop.main.ts', 'layer': 'electron-browser', 'restrictions': [ 'vs/base/*/~', 'vs/base/parts/*/~', 'vs/platform/*/~', 'vs/editor/~', 'vs/editor/contrib/*/~', 'vs/editor/editor.all.js', 'vs/workbench/~', 'vs/workbench/api/~', 'vs/workbench/services/*/~', 'vs/workbench/contrib/*/~', 'vs/workbench/workbench.common.main.js' ] }, { 'target': 'src/vs/amdX.ts', 'restrictions': [ 'vs/base/common/*' ] }, { 'target': 'src/vs/{loader.d.ts,monaco.d.ts,nls.ts,nls.messages.ts}', 'restrictions': [] }, { 'target': 'src/vscode-dts/**', 'restrictions': [] }, { 'target': 'src/vs/nls.ts', 'restrictions': [ 'vs/*' ] }, { 'target': '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}', 'restrictions': [ 'vs/**/common/*', 'vs/**/node/*', 'vs/nls.js', 'src/*.js', '*' // node.js ] } ] } }, { files: [ 'test/**/*.ts' ], languageOptions: { parser: tseslint.parser, }, plugins: { 'local': pluginLocal, }, rules: { 'local/code-import-patterns': [ 'warn', { 'target': 'test/smoke/**', 'restrictions': [ 'test/automation', 'test/smoke/**', '@vscode/*', '@parcel/*', '@playwright/*', '*' // node modules ] }, { 'target': 'test/automation/**', 'restrictions': [ 'test/automation/**', '@vscode/*', '@parcel/*', 'playwright-core/**', '@playwright/*', '*' // node modules ] }, { 'target': 'test/integration/**', 'restrictions': [ 'test/integration/**', '@vscode/*', '@parcel/*', '@playwright/*', '*' // node modules ] }, { 'target': 'test/monaco/**', 'restrictions': [ 'test/monaco/**', '@vscode/*', '@parcel/*', '@playwright/*', '*' // node modules ] }, { 'target': 'test/mcp/**', 'restrictions': [ 'test/automation', 'test/mcp/**', '@vscode/*', '@parcel/*', '@playwright/*', '@modelcontextprotocol/sdk/**/*', '*' // node modules ] } ] } }, { files: [ 'src/vs/workbench/contrib/notebook/browser/view/renderers/*.ts' ], languageOptions: { parser: tseslint.parser, }, plugins: { 'local': pluginLocal, }, rules: { 'local/code-no-runtime-import': [ 'error', { 'src/vs/workbench/contrib/notebook/browser/view/renderers/webviewPreloads.ts': [ '**/*' ] } ], 'local/code-limited-top-functions': [ 'error', { 'src/vs/workbench/contrib/notebook/browser/view/renderers/webviewPreloads.ts': [ 'webviewPreloads', 'preloadsScriptStr' ] } ] } }, // Terminal { files: [ 'src/vs/workbench/contrib/terminal/**/*.ts', 'src/vs/workbench/contrib/terminalContrib/**/*.ts', ], languageOptions: { parser: tseslint.parser, }, rules: { '@typescript-eslint/naming-convention': [ 'warn', // variableLike { 'selector': 'variable', 'format': ['camelCase', 'UPPER_CASE', 'PascalCase'] }, { 'selector': 'variable', 'filter': '^I.+Service$', 'format': ['PascalCase'], 'prefix': ['I'] }, // memberLike { 'selector': 'memberLike', 'modifiers': ['private'], 'format': ['camelCase'], 'leadingUnderscore': 'require' }, { 'selector': 'memberLike', 'modifiers': ['protected'], 'format': ['camelCase'], 'leadingUnderscore': 'require' }, { 'selector': 'enumMember', 'format': ['PascalCase'] }, // memberLike - Allow enum-like objects to use UPPER_CASE { 'selector': 'method', 'modifiers': ['public'], 'format': ['camelCase', 'UPPER_CASE'] }, // typeLike { 'selector': 'typeLike', 'format': ['PascalCase'] }, { 'selector': 'interface', 'format': ['PascalCase'] } ], 'comma-dangle': ['warn', 'only-multiline'] } }, // markdown-language-features { files: [ 'extensions/markdown-language-features/**/*.ts', ], languageOptions: { parser: tseslint.parser, }, plugins: { '@typescript-eslint': tseslint.plugin, }, rules: { '@typescript-eslint/naming-convention': [ 'warn', { 'selector': 'default', 'modifiers': ['private'], 'format': null, 'leadingUnderscore': 'require' }, { 'selector': 'default', 'modifiers': ['public'], 'format': null, 'leadingUnderscore': 'forbid' } ] } }, // Additional extension strictness rules { files: [ 'extensions/markdown-language-features/**/*.ts', 'extensions/mermaid-chat-features/**/*.ts', 'extensions/media-preview/**/*.ts', 'extensions/simple-browser/**/*.ts', 'extensions/typescript-language-features/**/*.ts', ], languageOptions: { parser: tseslint.parser, parserOptions: { project: [ // Markdown 'extensions/markdown-language-features/tsconfig.json', 'extensions/markdown-language-features/notebook/tsconfig.json', 'extensions/markdown-language-features/preview-src/tsconfig.json', // Media preview 'extensions/media-preview/tsconfig.json', // Media preview 'extensions/simple-browser/tsconfig.json', 'extensions/simple-browser/preview-src/tsconfig.json', // Mermaid chat features 'extensions/mermaid-chat-features/tsconfig.json', 'extensions/mermaid-chat-features/chat-webview-src/tsconfig.json', // TypeScript 'extensions/typescript-language-features/tsconfig.json', 'extensions/typescript-language-features/web/tsconfig.json', ], } }, plugins: { '@typescript-eslint': tseslint.plugin, }, rules: { '@typescript-eslint/prefer-optional-chain': 'warn', '@typescript-eslint/prefer-readonly': 'warn', '@typescript-eslint/consistent-generic-constructors': ['warn', 'constructor'], } }, );