diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index cd41eaa33c4..00000000000 --- a/.eslintrc.json +++ /dev/null @@ -1,1242 +0,0 @@ -{ - "root": true, - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": 2022, - "sourceType": "module" - }, - "plugins": [ - "@typescript-eslint", - "jsdoc", - "header", - "local" - ], - "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-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", - "jsdoc/no-types": "warn", - "semi": "off", - "@typescript-eslint/semi": "warn", - "@typescript-eslint/member-delimiter-style": "warn", - "@typescript-eslint/naming-convention": [ - "warn", - { - "selector": "class", - "format": [ - "PascalCase" - ] - } - ], - "local/code-no-unused-expressions": [ - "warn", - { - "allowTernary": true - } - ], - "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": "off", - "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-layering": [ - "warn", - { - "common": [], - "node": [ - "common" - ], - "browser": [ - "common" - ], - "electron-sandbox": [ - "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.", - " *--------------------------------------------------------------------------------------------" - ] - ] - }, - "overrides": [ - { - "files": [ - "*.js" - ], - "rules": { - "jsdoc/no-types": "off" - } - }, - { - "files": [ - "**/*.test.ts" - ], - "rules": { - "local/code-must-use-super-dispose": "off", - "local/code-no-test-only": "error", - "local/code-no-test-async-suite": "warn", - "local/code-no-unexternalized-strings": "off", - "local/code-must-use-result": [ - "warn", - [ - { - "message": "Expression must be awaited", - "functions": [ - "assertSnapshot", - "assertHeap" - ] - } - ] - ] - } - }, - { - "files": [ - "src/**/*.ts" - ], - "rules": { - "local/code-no-static-self-ref": "warn" - } - }, - { - "files": [ - "src/vs/**/*.test.ts" - ], - "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/editor/contrib/codeAction/test/browser/codeActionModel.test.ts", - "src/vs/platform/configuration/test/common/configuration.test.ts", - "src/vs/platform/opener/test/common/opener.test.ts", - "src/vs/platform/registry/test/common/platform.test.ts", - "src/vs/platform/workspace/test/common/workspace.test.ts", - "src/vs/platform/workspaces/test/electron-main/workspaces.test.ts", - "src/vs/workbench/api/test/browser/mainThreadConfiguration.test.ts", - "src/vs/workbench/api/test/node/extHostTunnelService.test.ts", - "src/vs/workbench/contrib/bulkEdit/test/browser/bulkCellEdits.test.ts", - "src/vs/workbench/contrib/chat/test/common/chatWordCounter.test.ts", - "src/vs/workbench/contrib/editSessions/test/browser/editSessions.test.ts", - "src/vs/workbench/contrib/extensions/test/common/extensionQuery.test.ts", - "src/vs/workbench/contrib/notebook/test/browser/notebookExecutionService.test.ts", - "src/vs/workbench/contrib/notebook/test/browser/notebookExecutionStateService.test.ts", - "src/vs/workbench/contrib/tasks/test/common/problemMatcher.test.ts", - "src/vs/workbench/contrib/tasks/test/common/taskConfiguration.test.ts", - "src/vs/workbench/services/commands/test/common/commandService.test.ts", - "src/vs/workbench/services/userActivity/test/browser/domActivityTracker.test.ts", - "src/vs/workbench/test/browser/quickAccess.test.ts" - ] - } - ] - } - }, - { - "files": [ - "**/vscode.d.ts", - "**/vscode.proposed.*.d.ts" - ], - "rules": { - "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-thenable": "warn", - "local/vscode-dts-region-comments": "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" - ] - } - ] - } - }, - { - "files": [ - "**/vscode.d.ts" - ], - "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" - } - }, - { - "files": [ - "src/**/{common,browser}/**/*.ts" - ], - "rules": { - "local/code-amd-node-module": "warn" - } - }, - { - "files": [ - "src/**/{browser,electron-sandbox}/**/*.ts" - ], - "rules": { - "local/code-no-global-document-listener": "warn", - "no-restricted-syntax": [ - "warn", - { - "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='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." - } - ], - "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." - } - ] - } - }, - { - "files": [ - "src/**/electron-utility/**/*.ts" - ], - "rules": { - "no-restricted-imports": [ - "warn", - { - "paths": [ - { - "name": "electron", - "importNames": [ - "app", - "autoUpdater", - "BaseWindow", - "BrowserWindow", - "contentTracing", - "desktopCapturer", - "dialog", - "globalShortcut", - "inAppPurchase", - "ipcMain", - "Menu", - "MenuItem", - "MessageChannelMain", - "MessagePortMain", - "nativeTheme", - "netLog", - "Notification", - "powerMonitor", - "powerSaveBlocker", - "protocol", - "pushNotifications", - "safeStorage", - "screen", - "session", - "ShareMenu", - "TouchBar", - "Tray", - "utilityProcess", - "View", - "webContents", - "webFrameMain", - "webContentsView", - "default" - ], - "message": "Only net and system-preferences are allowed to be imported from electron" - } - ] - } - ] - } - }, - { - "files": [ - "src/**/*.ts" - ], - "rules": { - "local/code-import-patterns": [ - "warn", - { - // imports that are allowed in all files of layers: - // - browser - // - electron-sandbox - "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", - "perf_hooks", - "readline", - "stream", - "string_decoder", - "tas-client-umd", - "tls", - "url", - "util", - "v8-inspect-profiler", - "vscode-regexpp", - "vscode-textmate", - "worker_threads", - "@xterm/addon-clipboard", - "@xterm/addon-image", - "@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-sandbox - // - 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-sandbox - // - 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-sandbox" 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.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 - { - "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-sandbox", - "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/nls.ts", - "restrictions": [ - "vs/*" - ] - }, - { - "target": "src/vs/{monaco.d.ts,nls.ts,nls.messages.ts}", - "restrictions": [] - }, - { - "target": "src/vscode-dts/**", - "restrictions": [] - }, - { - "target": "src/bootstrap-window.ts", - "restrictions": [] - }, - { - "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" - ], - "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 - ] - } - ] - } - }, - { - "files": [ - "src/vs/workbench/contrib/notebook/browser/view/renderers/*.ts" - ], - "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" - ] - } - ] - } - } - ] -} diff --git a/build/filters.js b/build/filters.js index 01b635d4a89..fb6f00c78fb 100644 --- a/build/filters.js +++ b/build/filters.js @@ -194,6 +194,8 @@ module.exports.tsFormattingFilter = [ module.exports.eslintFilter = [ '**/*.js', + '**/*.cjs', + '**/*.mjs', '**/*.ts', ...require(join(__dirname, '..', '.eslintignore.json')) .map(line => line.startsWith('!') ? line.slice(1) : `!${line}`) diff --git a/build/gulp-eslint.js b/build/gulp-eslint.js index 3373171671b..902c7b47003 100644 --- a/build/gulp-eslint.js +++ b/build/gulp-eslint.js @@ -15,7 +15,7 @@ const fancyLog = require('fancy-log'); * @returns {stream} gulp file stream */ function eslint(action) { - const linter = new ESLint(); + const linter = new ESLint({}); const formatter = linter.loadFormatter('compact'); const results = []; diff --git a/build/gulpfile.editor.js b/build/gulpfile.editor.js index 0a6231dbfb0..a293da33638 100644 --- a/build/gulpfile.editor.js +++ b/build/gulpfile.editor.js @@ -411,7 +411,6 @@ function createTscCompileTask(watch) { /** @type {NodeJS.ReadWriteStream | undefined} */ let report; - // eslint-disable-next-line no-control-regex const magic = /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g; // https://stackoverflow.com/questions/25245716/remove-all-ansi-colors-styles-from-strings child.stdout.on('data', data => { diff --git a/build/hygiene.js b/build/hygiene.js index 2edd9470c0b..fe32fe33e12 100644 --- a/build/hygiene.js +++ b/build/hygiene.js @@ -62,6 +62,7 @@ function hygiene(some, linting = true) { } } // Please do not add symbols that resemble ASCII letters! + // eslint-disable-next-line no-misleading-character-class const m = /([^\t\n\r\x20-\x7E⊃⊇✔︎✓🎯⚠️🛑🔴🚗🚙🚕🎉✨❗⇧⌥⌘×÷¦⋯…↑↓→→←↔⟷·•●◆▼⟪⟫┌└├⏎↩√φ]+)/g.exec(line); if (m) { console.error( diff --git a/eslint.config.cjs b/eslint.config.cjs index fbfdb329c58..6464e462b3d 100644 --- a/eslint.config.cjs +++ b/eslint.config.cjs @@ -2,7 +2,6 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ - //@ts-check const fs = require('fs'); const path = require('path'); @@ -15,41 +14,26 @@ pluginHeader.rules.header.meta.schema = false; const ignores = JSON.parse(fs.readFileSync(path.join(__dirname, '.eslintignore.json'), 'utf8').toString()); module.exports = tseslint.config( - // Global ignores { + // Global ignores ignores, }, { files: [ - 'src/**/*.ts', + '**/*.ts', ], languageOptions: { parser: tseslint.parser, - parserOptions: { - ecmaVersion: 2020, - sourceType: 'module', - project: path.join(__dirname, 'src', 'tsconfig.json'), - } }, plugins: { '@stylistic/ts': stylisticTs, '@typescript-eslint': tseslint.plugin, 'local': require('eslint-plugin-local'), - 'header': pluginHeader, 'jsdoc': require('eslint-plugin-jsdoc'), }, rules: { '@stylistic/ts/semi': 'warn', '@stylistic/ts/member-delimiter-style': 'warn', - '@typescript-eslint/naming-convention': [ - 'warn', - { - 'selector': 'class', - 'format': [ - 'PascalCase' - ] - } - ], 'local/code-no-unused-expressions': [ 'warn', { @@ -61,6 +45,34 @@ module.exports = tseslint.config( } }, { + files: [ + 'src/**/*.ts', + ], + languageOptions: { + parser: tseslint.parser, + parserOptions: { + project: path.join(__dirname, 'src', 'tsconfig.json'), + } + }, + plugins: { + '@typescript-eslint': tseslint.plugin, + }, + rules: { + '@typescript-eslint/naming-convention': [ + 'warn', + { + 'selector': 'class', + 'format': [ + 'PascalCase' + ] + } + ] + } + }, + { + languageOptions: { + parser: tseslint.parser, + }, plugins: { 'local': require('eslint-plugin-local'), 'header': pluginHeader, @@ -90,7 +102,6 @@ module.exports = tseslint.config( 'no-throw-literal': 'warn', 'no-unsafe-finally': 'warn', 'no-unused-labels': 'warn', - 'no-control-regex': 'warn', 'no-misleading-character-class': 'warn', 'no-restricted-globals': [ 'warn', @@ -380,6 +391,10 @@ module.exports = tseslint.config( '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.' @@ -1313,5 +1328,82 @@ module.exports = tseslint.config( } ] } + }, + // Terminal + { + files: [ + 'src/vs/workbench/contrib/terminal/**/*.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'] } + ] + } + }, + // 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' + } + ] + } + }, + // typescript-language-features + { + files: [ + 'extensions/typescript-language-features/**/*.ts', + ], + languageOptions: { + parser: tseslint.parser, + parserOptions: { + project: [ + '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', + } } ); diff --git a/extensions/markdown-language-features/.eslintignore b/extensions/markdown-language-features/.eslintignore deleted file mode 100644 index ab39cbce5a3..00000000000 --- a/extensions/markdown-language-features/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -server/ diff --git a/extensions/markdown-language-features/.eslintrc.json b/extensions/markdown-language-features/.eslintrc.json deleted file mode 100644 index 51ba9a41d84..00000000000 --- a/extensions/markdown-language-features/.eslintrc.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "rules": { - "@typescript-eslint/naming-convention": [ - "warn", - { - "selector": "default", - "modifiers": ["private"], - "format": null, - "leadingUnderscore": "require" - }, - { - "selector": "default", - "modifiers": ["public"], - "format": null, - "leadingUnderscore": "forbid" - } - ] - } -} diff --git a/extensions/typescript-language-features/.eslintrc.js b/extensions/typescript-language-features/.eslintrc.js deleted file mode 100644 index e910c2f2510..00000000000 --- a/extensions/typescript-language-features/.eslintrc.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - "parserOptions": { - "tsconfigRootDir": __dirname, - "project": "./tsconfig.json" - }, - "rules": { - "@typescript-eslint/prefer-optional-chain": "warn", - "@typescript-eslint/prefer-readonly": "warn" - } -}; diff --git a/extensions/typescript-language-features/src/utils/objects.ts b/extensions/typescript-language-features/src/utils/objects.ts index 88c5a435e1c..a31467bd8d6 100644 --- a/extensions/typescript-language-features/src/utils/objects.ts +++ b/extensions/typescript-language-features/src/utils/objects.ts @@ -9,7 +9,6 @@ export function equals(one: any, other: any): boolean { if (one === other) { return true; } - // eslint-disable-next-line @typescript-eslint/prefer-optional-chain if (one === null || one === undefined || other === null || other === undefined) { return false; } diff --git a/extensions/typescript-language-features/web/.eslintrc.js b/extensions/typescript-language-features/web/.eslintrc.js deleted file mode 100644 index e910c2f2510..00000000000 --- a/extensions/typescript-language-features/web/.eslintrc.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - "parserOptions": { - "tsconfigRootDir": __dirname, - "project": "./tsconfig.json" - }, - "rules": { - "@typescript-eslint/prefer-optional-chain": "warn", - "@typescript-eslint/prefer-readonly": "warn" - } -}; diff --git a/src/bootstrap-window.ts b/src/bootstrap-window.ts index 1b2cedf68b4..3c127002603 100644 --- a/src/bootstrap-window.ts +++ b/src/bootstrap-window.ts @@ -3,8 +3,6 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -/* eslint-disable no-restricted-globals */ - (function () { type ISandboxConfiguration = import('vs/base/parts/sandbox/common/sandboxTypes.js').ISandboxConfiguration; diff --git a/src/vs/amdX.ts b/src/vs/amdX.ts index 8646f0b7b95..ee149951b54 100644 --- a/src/vs/amdX.ts +++ b/src/vs/amdX.ts @@ -70,10 +70,8 @@ class AMDModuleImporter { (globalThis as any).define.amd = true; if (this._isRenderer) { - // eslint-disable-next-line no-restricted-globals this._amdPolicy = (globalThis as any)._VSCODE_WEB_PACKAGE_TTP ?? window.trustedTypes?.createPolicy('amdLoader', { createScriptURL(value) { - // eslint-disable-next-line no-restricted-globals if (value.startsWith(window.location.origin)) { return value; } @@ -162,7 +160,6 @@ class AMDModuleImporter { scriptSrc = this._amdPolicy.createScriptURL(scriptSrc) as any as string; } scriptElement.setAttribute('src', scriptSrc); - // eslint-disable-next-line no-restricted-globals window.document.getElementsByTagName('head')[0].appendChild(scriptElement); }); } diff --git a/src/vs/base/common/errors.ts b/src/vs/base/common/errors.ts index 07e7b2acd91..fb18cb9b2e5 100644 --- a/src/vs/base/common/errors.ts +++ b/src/vs/base/common/errors.ts @@ -307,7 +307,6 @@ export class BugIndicatingError extends Error { // Because we know for sure only buggy code throws this, // we definitely want to break here and fix the bug. - // eslint-disable-next-line no-debugger // debugger; } } diff --git a/src/vs/base/parts/ipc/common/ipc.ts b/src/vs/base/parts/ipc/common/ipc.ts index 3f75e084d27..2f8819f2443 100644 --- a/src/vs/base/parts/ipc/common/ipc.ts +++ b/src/vs/base/parts/ipc/common/ipc.ts @@ -553,6 +553,7 @@ export class ChannelClient implements IChannelClient, IDisposable { getChannel(channelName: string): T { const that = this; + // eslint-disable-next-line local/code-no-dangerous-type-assertions return { call(command: string, arg?: any, cancellationToken?: CancellationToken) { if (that.isDisposed) { @@ -845,6 +846,7 @@ export class IPCServer implements IChannelServer, I getChannel(channelName: string, routerOrClientFilter: IClientRouter | ((client: Client) => boolean)): T { const that = this; + // eslint-disable-next-line local/code-no-dangerous-type-assertions return { call(command: string, arg?: any, cancellationToken?: CancellationToken): Promise { let connectionPromise: Promise>; @@ -994,6 +996,7 @@ export class IPCClient implements IChannelClient, IChannelSer } export function getDelayedChannel(promise: Promise): T { + // eslint-disable-next-line local/code-no-dangerous-type-assertions return { call(command: string, arg?: any, cancellationToken?: CancellationToken): Promise { return promise.then(c => c.call(command, arg, cancellationToken)); @@ -1010,6 +1013,7 @@ export function getDelayedChannel(promise: Promise): T { export function getNextTickChannel(channel: T): T { let didTick = false; + // eslint-disable-next-line local/code-no-dangerous-type-assertions return { call(command: string, arg?: any, cancellationToken?: CancellationToken): Promise { if (didTick) { diff --git a/src/vs/nls.ts b/src/vs/nls.ts index 8cf5158f96a..e730d0a761e 100644 --- a/src/vs/nls.ts +++ b/src/vs/nls.ts @@ -3,7 +3,9 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ +// eslint-disable-next-line local/code-import-patterns import { getNLSLanguage, getNLSMessages } from './nls.messages.js'; +// eslint-disable-next-line local/code-import-patterns export { getNLSLanguage, getNLSMessages } from './nls.messages.js'; const isPseudo = getNLSLanguage() === 'pseudo' || (typeof document !== 'undefined' && document.location && typeof document.location.hash === 'string' && document.location.hash.indexOf('pseudo=true') >= 0); diff --git a/src/vs/platform/environment/node/argv.ts b/src/vs/platform/environment/node/argv.ts index f0cec3398a7..379e327c646 100644 --- a/src/vs/platform/environment/node/argv.ts +++ b/src/vs/platform/environment/node/argv.ts @@ -272,6 +272,7 @@ export function parseArgs(args: string[], options: OptionDescriptions, err const newArgs = args.filter(a => a !== firstArg); const reporter = errorReporter.getSubcommandReporter ? errorReporter.getSubcommandReporter(firstArg) : undefined; const subcommandOptions = parseArgs(newArgs, options, reporter); + // eslint-disable-next-line local/code-no-dangerous-type-assertions return { [firstArg]: subcommandOptions, _: [] diff --git a/src/vs/platform/files/test/node/nodejsWatcher.test.ts b/src/vs/platform/files/test/node/nodejsWatcher.test.ts index 4b42b0b0900..a46279aaf50 100644 --- a/src/vs/platform/files/test/node/nodejsWatcher.test.ts +++ b/src/vs/platform/files/test/node/nodejsWatcher.test.ts @@ -30,8 +30,6 @@ import { TestParcelWatcher } from './parcelWatcher.test.js'; // mocha but generally). as such they will run only on demand // whenever we update the watcher library. -/* eslint-disable local/code-ensure-no-disposables-leak-in-test */ - suite.skip('File Watcher (node.js)', function () { this.timeout(10000); diff --git a/src/vs/platform/files/test/node/parcelWatcher.test.ts b/src/vs/platform/files/test/node/parcelWatcher.test.ts index c25c061fbed..7a9533e0d8a 100644 --- a/src/vs/platform/files/test/node/parcelWatcher.test.ts +++ b/src/vs/platform/files/test/node/parcelWatcher.test.ts @@ -65,8 +65,6 @@ export class TestParcelWatcher extends ParcelWatcher { // mocha but generally). as such they will run only on demand // whenever we update the watcher library. -/* eslint-disable local/code-ensure-no-disposables-leak-in-test */ - suite.skip('File Watcher (parcel)', function () { this.timeout(10000); diff --git a/src/vs/platform/list/browser/listService.ts b/src/vs/platform/list/browser/listService.ts index 7a03fcb4bab..f93947e26bd 100644 --- a/src/vs/platform/list/browser/listService.ts +++ b/src/vs/platform/list/browser/listService.ts @@ -1146,6 +1146,7 @@ function workbenchTreeDataPreamble(Extensions.ViewsRegistry); + // eslint-disable-next-line local/code-no-dangerous-type-assertions viewsRegistry.registerViews([{ id: viewId, name: EDIT_SESSIONS_TITLE, diff --git a/src/vs/workbench/contrib/extensions/electron-sandbox/debugExtensionHostAction.ts b/src/vs/workbench/contrib/extensions/electron-sandbox/debugExtensionHostAction.ts index 71291a40f8e..65e957e8802 100644 --- a/src/vs/workbench/contrib/extensions/electron-sandbox/debugExtensionHostAction.ts +++ b/src/vs/workbench/contrib/extensions/electron-sandbox/debugExtensionHostAction.ts @@ -105,6 +105,7 @@ export class DebugExtensionsContribution extends Disposable implements IWorkbenc location: ProgressLocation.Notification, title: nls.localize('debugExtensionHost.progress', "Attaching Debugger To Extension Host"), }, async p => { + // eslint-disable-next-line local/code-no-dangerous-type-assertions await this._debugService.startDebugging(undefined, { type: 'node', name: nls.localize('debugExtensionHost.launch.name', "Attach Extension Host"), diff --git a/src/vs/workbench/contrib/markdown/browser/markedGfmHeadingIdPlugin.ts b/src/vs/workbench/contrib/markdown/browser/markedGfmHeadingIdPlugin.ts index 39ed0d95270..1603f7b21ef 100644 --- a/src/vs/workbench/contrib/markdown/browser/markedGfmHeadingIdPlugin.ts +++ b/src/vs/workbench/contrib/markdown/browser/markedGfmHeadingIdPlugin.ts @@ -5,7 +5,7 @@ import * as marked from '../../../../base/common/marked/marked.js'; // Copied from https://github.com/Flet/github-slugger since we can't use esm yet. -// eslint-disable-next-line no-control-regex, no-misleading-character-class +// eslint-disable-next-line no-misleading-character-class const githubSlugReplaceRegex = /[\0-\x1F!-,\.\/:-@\[-\^`\{-\xA9\xAB-\xB4\xB6-\xB9\xBB-\xBF\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0378\u0379\u037E\u0380-\u0385\u0387\u038B\u038D\u03A2\u03F6\u0482\u0530\u0557\u0558\u055A-\u055F\u0589-\u0590\u05BE\u05C0\u05C3\u05C6\u05C8-\u05CF\u05EB-\u05EE\u05F3-\u060F\u061B-\u061F\u066A-\u066D\u06D4\u06DD\u06DE\u06E9\u06FD\u06FE\u0700-\u070F\u074B\u074C\u07B2-\u07BF\u07F6-\u07F9\u07FB\u07FC\u07FE\u07FF\u082E-\u083F\u085C-\u085F\u086B-\u089F\u08B5\u08C8-\u08D2\u08E2\u0964\u0965\u0970\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09F2-\u09FB\u09FD\u09FF\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A76-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF0-\u0AF8\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B54\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B70\u0B72-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BF0-\u0BFF\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5B-\u0C5F\u0C64\u0C65\u0C70-\u0C7F\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0CFF\u0D0D\u0D11\u0D45\u0D49\u0D4F-\u0D53\u0D58-\u0D5E\u0D64\u0D65\u0D70-\u0D79\u0D80\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DE5\u0DF0\u0DF1\u0DF4-\u0E00\u0E3B-\u0E3F\u0E4F\u0E5A-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F01-\u0F17\u0F1A-\u0F1F\u0F2A-\u0F34\u0F36\u0F38\u0F3A-\u0F3D\u0F48\u0F6D-\u0F70\u0F85\u0F98\u0FBD-\u0FC5\u0FC7-\u0FFF\u104A-\u104F\u109E\u109F\u10C6\u10C8-\u10CC\u10CE\u10CF\u10FB\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u1360-\u137F\u1390-\u139F\u13F6\u13F7\u13FE-\u1400\u166D\u166E\u1680\u169B-\u169F\u16EB-\u16ED\u16F9-\u16FF\u170D\u1715-\u171F\u1735-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17D4-\u17D6\u17D8-\u17DB\u17DE\u17DF\u17EA-\u180A\u180E\u180F\u181A-\u181F\u1879-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191F\u192C-\u192F\u193C-\u1945\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DA-\u19FF\u1A1C-\u1A1F\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1AA6\u1AA8-\u1AAF\u1AC1-\u1AFF\u1B4C-\u1B4F\u1B5A-\u1B6A\u1B74-\u1B7F\u1BF4-\u1BFF\u1C38-\u1C3F\u1C4A-\u1C4C\u1C7E\u1C7F\u1C89-\u1C8F\u1CBB\u1CBC\u1CC0-\u1CCF\u1CD3\u1CFB-\u1CFF\u1DFA\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FBD\u1FBF-\u1FC1\u1FC5\u1FCD-\u1FCF\u1FD4\u1FD5\u1FDC-\u1FDF\u1FED-\u1FF1\u1FF5\u1FFD-\u203E\u2041-\u2053\u2055-\u2070\u2072-\u207E\u2080-\u208F\u209D-\u20CF\u20F1-\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F-\u215F\u2189-\u24B5\u24EA-\u2BFF\u2C2F\u2C5F\u2CE5-\u2CEA\u2CF4-\u2CFF\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D70-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E00-\u2E2E\u2E30-\u3004\u3008-\u3020\u3030\u3036\u3037\u303D-\u3040\u3097\u3098\u309B\u309C\u30A0\u30FB\u3100-\u3104\u3130\u318F-\u319F\u31C0-\u31EF\u3200-\u33FF\u4DC0-\u4DFF\u9FFD-\u9FFF\uA48D-\uA4CF\uA4FE\uA4FF\uA60D-\uA60F\uA62C-\uA63F\uA673\uA67E\uA6F2-\uA716\uA720\uA721\uA789\uA78A\uA7C0\uA7C1\uA7CB-\uA7F4\uA828-\uA82B\uA82D-\uA83F\uA874-\uA87F\uA8C6-\uA8CF\uA8DA-\uA8DF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA954-\uA95F\uA97D-\uA97F\uA9C1-\uA9CE\uA9DA-\uA9DF\uA9FF\uAA37-\uAA3F\uAA4E\uAA4F\uAA5A-\uAA5F\uAA77-\uAA79\uAAC3-\uAADA\uAADE\uAADF\uAAF0\uAAF1\uAAF7-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB5B\uAB6A-\uAB6F\uABEB\uABEE\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uE000-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB29\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBB2-\uFBD2\uFD3E-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFC-\uFDFF\uFE10-\uFE1F\uFE30-\uFE32\uFE35-\uFE4C\uFE50-\uFE6F\uFE75\uFEFD-\uFF0F\uFF1A-\uFF20\uFF3B-\uFF3E\uFF40\uFF5B-\uFF65\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFFF]|\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDD3F\uDD75-\uDDFC\uDDFE-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEDF\uDEE1-\uDEFF\uDF20-\uDF2C\uDF4B-\uDF4F\uDF7B-\uDF7F\uDF9E\uDF9F\uDFC4-\uDFC7\uDFD0\uDFD6-\uDFFF]|\uD801[\uDC9E\uDC9F\uDCAA-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56-\uDC5F\uDC77-\uDC7F\uDC9F-\uDCDF\uDCF3\uDCF6-\uDCFF\uDD16-\uDD1F\uDD3A-\uDD7F\uDDB8-\uDDBD\uDDC0-\uDDFF\uDE04\uDE07-\uDE0B\uDE14\uDE18\uDE36\uDE37\uDE3B-\uDE3E\uDE40-\uDE5F\uDE7D-\uDE7F\uDE9D-\uDEBF\uDEC8\uDEE7-\uDEFF\uDF36-\uDF3F\uDF56-\uDF5F\uDF73-\uDF7F\uDF92-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCFF\uDD28-\uDD2F\uDD3A-\uDE7F\uDEAA\uDEAD-\uDEAF\uDEB2-\uDEFF\uDF1D-\uDF26\uDF28-\uDF2F\uDF51-\uDFAF\uDFC5-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC47-\uDC65\uDC70-\uDC7E\uDCBB-\uDCCF\uDCE9-\uDCEF\uDCFA-\uDCFF\uDD35\uDD40-\uDD43\uDD48-\uDD4F\uDD74\uDD75\uDD77-\uDD7F\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDFF\uDE12\uDE38-\uDE3D\uDE3F-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEA9-\uDEAF\uDEEB-\uDEEF\uDEFA-\uDEFF\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A\uDF45\uDF46\uDF49\uDF4A\uDF4E\uDF4F\uDF51-\uDF56\uDF58-\uDF5C\uDF64\uDF65\uDF6D-\uDF6F\uDF75-\uDFFF]|\uD805[\uDC4B-\uDC4F\uDC5A-\uDC5D\uDC62-\uDC7F\uDCC6\uDCC8-\uDCCF\uDCDA-\uDD7F\uDDB6\uDDB7\uDDC1-\uDDD7\uDDDE-\uDDFF\uDE41-\uDE43\uDE45-\uDE4F\uDE5A-\uDE7F\uDEB9-\uDEBF\uDECA-\uDEFF\uDF1B\uDF1C\uDF2C-\uDF2F\uDF3A-\uDFFF]|\uD806[\uDC3B-\uDC9F\uDCEA-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD36\uDD39\uDD3A\uDD44-\uDD4F\uDD5A-\uDD9F\uDDA8\uDDA9\uDDD8\uDDD9\uDDE2\uDDE5-\uDDFF\uDE3F-\uDE46\uDE48-\uDE4F\uDE9A-\uDE9C\uDE9E-\uDEBF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC37\uDC41-\uDC4F\uDC5A-\uDC71\uDC90\uDC91\uDCA8\uDCB7-\uDCFF\uDD07\uDD0A\uDD37-\uDD39\uDD3B\uDD3E\uDD48-\uDD4F\uDD5A-\uDD5F\uDD66\uDD69\uDD8F\uDD92\uDD99-\uDD9F\uDDAA-\uDEDF\uDEF7-\uDFAF\uDFB1-\uDFFF]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC6F-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80B\uD80E-\uD810\uD812-\uD819\uD824-\uD82B\uD82D\uD82E\uD830-\uD833\uD837\uD839\uD83D\uD83F\uD87B-\uD87D\uD87F\uD885-\uDB3F\uDB41-\uDBFF][\uDC00-\uDFFF]|\uD80D[\uDC2F-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F\uDE6A-\uDECF\uDEEE\uDEEF\uDEF5-\uDEFF\uDF37-\uDF3F\uDF44-\uDF4F\uDF5A-\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDE3F\uDE80-\uDEFF\uDF4B-\uDF4E\uDF88-\uDF8E\uDFA0-\uDFDF\uDFE2\uDFE5-\uDFEF\uDFF2-\uDFFF]|\uD821[\uDFF8-\uDFFF]|\uD823[\uDCD6-\uDCFF\uDD09-\uDFFF]|\uD82C[\uDD1F-\uDD4F\uDD53-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A-\uDC9C\uDC9F-\uDFFF]|\uD834[\uDC00-\uDD64\uDD6A-\uDD6C\uDD73-\uDD7A\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDE41\uDE45-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3\uDFCC\uDFCD]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85-\uDE9A\uDEA0\uDEB0-\uDFFF]|\uD838[\uDC07\uDC19\uDC1A\uDC22\uDC25\uDC2B-\uDCFF\uDD2D-\uDD2F\uDD3E\uDD3F\uDD4A-\uDD4D\uDD4F-\uDEBF\uDEFA-\uDFFF]|\uD83A[\uDCC5-\uDCCF\uDCD7-\uDCFF\uDD4C-\uDD4F\uDD5A-\uDFFF]|\uD83B[\uDC00-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDFFF]|\uD83C[\uDC00-\uDD2F\uDD4A-\uDD4F\uDD6A-\uDD6F\uDD8A-\uDFFF]|\uD83E[\uDC00-\uDFEF\uDFFA-\uDFFF]|\uD869[\uDEDE-\uDEFF]|\uD86D[\uDF35-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDEAF]|\uD87A[\uDFE1-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDFFF]|\uDB40[\uDC00-\uDCFF\uDDF0-\uDFFF]/g; function slugify(heading: string): string { diff --git a/src/vs/workbench/contrib/preferences/browser/keybindingsEditor.ts b/src/vs/workbench/contrib/preferences/browser/keybindingsEditor.ts index d8719d3ff19..3c6e11132b3 100644 --- a/src/vs/workbench/contrib/preferences/browser/keybindingsEditor.ts +++ b/src/vs/workbench/contrib/preferences/browser/keybindingsEditor.ts @@ -2,6 +2,7 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ +/* eslint-disable local/code-no-dangerous-type-assertions */ import './media/keybindingsEditor.css'; import { localize } from '../../../../nls.js'; diff --git a/src/vs/workbench/contrib/preferences/browser/settingsWidgets.ts b/src/vs/workbench/contrib/preferences/browser/settingsWidgets.ts index 14a0dec4a1e..e7b237c0530 100644 --- a/src/vs/workbench/contrib/preferences/browser/settingsWidgets.ts +++ b/src/vs/workbench/contrib/preferences/browser/settingsWidgets.ts @@ -463,6 +463,7 @@ export class ListSettingWidget extends Abst } protected getEmptyItem(): TListDataItem { + // eslint-disable-next-line local/code-no-dangerous-type-assertions return { value: { type: 'string', @@ -624,6 +625,7 @@ export class ListSettingWidget extends Abst const updatedInputBoxItem = (): TListDataItem => { const inputBox = valueInput as InputBox; + // eslint-disable-next-line local/code-no-dangerous-type-assertions return { value: { type: 'string', @@ -633,6 +635,7 @@ export class ListSettingWidget extends Abst } as TListDataItem; }; const updatedSelectBoxItem = (selectedValue: string): TListDataItem => { + // eslint-disable-next-line local/code-no-dangerous-type-assertions return { value: { type: 'enum', diff --git a/src/vs/workbench/contrib/terminal/.eslintrc.json b/src/vs/workbench/contrib/terminal/.eslintrc.json deleted file mode 100644 index ddd49198e1d..00000000000 --- a/src/vs/workbench/contrib/terminal/.eslintrc.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "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"] } - ] - } -} diff --git a/src/vs/workbench/contrib/terminal/browser/terminalExtensions.ts b/src/vs/workbench/contrib/terminal/browser/terminalExtensions.ts index 80dc9f7c9b9..d37dcbd684d 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalExtensions.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalExtensions.ts @@ -42,6 +42,7 @@ export type ITerminalContributionDescription = { readonly id: string } & ( export function registerTerminalContribution(id: string, ctor: { new(ctx: ITerminalContributionContext, ...services: Services): ITerminalContribution }, canRunInDetachedTerminals?: false): void; export function registerTerminalContribution(id: string, ctor: { new(ctx: IDetachedCompatibleTerminalContributionContext, ...services: Services): ITerminalContribution }, canRunInDetachedTerminals: true): void; export function registerTerminalContribution(id: string, ctor: { new(ctx: any, ...services: Services): ITerminalContribution }, canRunInDetachedTerminals: boolean = false): void { + // eslint-disable-next-line local/code-no-dangerous-type-assertions TerminalContributionRegistry.INSTANCE.registerTerminalContribution({ id, ctor, canRunInDetachedTerminals } as ITerminalContributionDescription); } diff --git a/src/vs/workbench/services/preferences/browser/keybindingsEditorModel.ts b/src/vs/workbench/services/preferences/browser/keybindingsEditorModel.ts index 6f20836a584..ef7326a0b28 100644 --- a/src/vs/workbench/services/preferences/browser/keybindingsEditorModel.ts +++ b/src/vs/workbench/services/preferences/browser/keybindingsEditorModel.ts @@ -273,6 +273,7 @@ export class KeybindingsEditorModel extends EditorModel { const extensionId = keybindingItem.extensionId ?? (keybindingItem.resolvedKeybinding ? undefined : menuCommand?.source?.id); source = extensionId ? extensions.get(extensionId) ?? SOURCE_EXTENSION : SOURCE_SYSTEM; } + // eslint-disable-next-line local/code-no-dangerous-type-assertions return { keybinding: keybindingItem.resolvedKeybinding, keybindingItem, diff --git a/src/vscode-dts/vscode.d.ts b/src/vscode-dts/vscode.d.ts index b00b7506cab..ec203e749da 100644 --- a/src/vscode-dts/vscode.d.ts +++ b/src/vscode-dts/vscode.d.ts @@ -3655,6 +3655,7 @@ declare module 'vscode' { * * @param document The document in which the command was invoked. * @param position The position at which the command was invoked. + * @param context Additional information about the references request. * @param token A cancellation token. * * @returns An array of locations or a thenable that resolves to such. The lack of a result can be @@ -7505,7 +7506,7 @@ declare module 'vscode' { * must be activated. Check whether {@link TerminalShellExecution.exitCode} is rejected to * verify whether it was successful. * - * @param command A command to run. + * @param executable A command to run. * @param args Arguments to launch the executable with which will be automatically escaped * based on the executable type. * @@ -11693,8 +11694,8 @@ declare module 'vscode' { * * Extensions should fire {@link TreeDataProvider.onDidChangeTreeData onDidChangeTreeData} for any elements that need to be refreshed. * - * @param dataTransfer The data transfer items of the source of the drag. * @param target The target tree element that the drop is occurring on. When undefined, the target is the root. + * @param dataTransfer The data transfer items of the source of the drag. * @param token A cancellation token indicating that the drop has been cancelled. */ handleDrop?(target: T | undefined, dataTransfer: DataTransfer, token: CancellationToken): Thenable | void; @@ -17780,7 +17781,7 @@ declare module 'vscode' { * runs which may still be ongoing, will be marked as outdated and deprioritized * in the editor's UI. * - * @param item Item to mark as outdated. If undefined, all the controller's items are marked outdated. + * @param items Item to mark as outdated. If undefined, all the controller's items are marked outdated. */ invalidateTestResults(items?: TestItem | readonly TestItem[]): void; @@ -18966,7 +18967,9 @@ declare module 'vscode' { export interface ChatFollowupProvider { /** * Provide followups for the given result. + * * @param result This object has the same properties as the result returned from the participant callback, including `metadata`, but is not the same instance. + * @param context Extra context passed to a participant. * @param token A cancellation token. */ provideFollowups(result: ChatResult, context: ChatContext, token: CancellationToken): ProviderResult; diff --git a/src/vscode-dts/vscode.proposed.chatParticipantAdditions.d.ts b/src/vscode-dts/vscode.proposed.chatParticipantAdditions.d.ts index ac61fa01582..070114cbefb 100644 --- a/src/vscode-dts/vscode.proposed.chatParticipantAdditions.d.ts +++ b/src/vscode-dts/vscode.proposed.chatParticipantAdditions.d.ts @@ -353,6 +353,7 @@ declare module 'vscode' { } export interface ChatEditorAction { + // eslint-disable-next-line local/vscode-dts-string-type-literals kind: 'editor'; accepted: boolean; } diff --git a/src/vscode-dts/vscode.proposed.mappedEditsProvider.d.ts b/src/vscode-dts/vscode.proposed.mappedEditsProvider.d.ts index 69061d64ffd..7cc3c7ff45a 100644 --- a/src/vscode-dts/vscode.proposed.mappedEditsProvider.d.ts +++ b/src/vscode-dts/vscode.proposed.mappedEditsProvider.d.ts @@ -12,11 +12,13 @@ declare module 'vscode' { } export interface ConversationRequest { + // eslint-disable-next-line local/vscode-dts-string-type-literals readonly type: 'request'; readonly message: string; } export interface ConversationResponse { + // eslint-disable-next-line local/vscode-dts-string-type-literals readonly type: 'response'; readonly message: string; readonly result?: ChatResult;