@codingame/monaco-vscode-api 1.83.1 → 1.83.3-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/extensions.d.ts +3 -3
- package/extensions.js +31 -33
- package/l10n.d.ts +4 -0
- package/l10n.js +10 -0
- package/missing-services.js +4 -2
- package/monaco-editor-treemending.patch +12268 -1070
- package/monaco-treemending.js +8 -2
- package/package.json +8 -1
- package/service-override/extensions.js +2 -2
- package/service-override/layout.js +2 -2
- package/tools/l10n.js +177 -0
- package/tools.js +22 -1
- package/vscode/src/vs/base/browser/ui/menu/menubar.js +1 -1
- package/vscode/src/vs/base/browser/ui/splitview/paneview.js +2 -2
- package/vscode/src/vs/base/common/date.js +55 -55
- package/vscode/src/vs/base/common/jsonErrorMessages.js +10 -10
- package/vscode/src/vs/base/common/tfIdf.js +137 -0
- package/vscode/src/vs/editor/contrib/quickAccess/browser/commandsQuickAccess.js +23 -0
- package/vscode/src/vs/editor/contrib/quickAccess/browser/editorNavigationQuickAccess.js +115 -0
- package/vscode/src/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +112 -0
- package/vscode/src/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +334 -0
- package/vscode/src/vs/platform/dialogs/common/dialogs.js +10 -14
- package/vscode/src/vs/platform/extensionManagement/common/extensionManagement.js +3 -0
- package/vscode/src/vs/platform/extensionManagement/common/extensionNls.js +2 -2
- package/vscode/src/vs/platform/files/common/fileService.js +28 -37
- package/vscode/src/vs/platform/files/common/files.js +6 -6
- package/vscode/src/vs/platform/files/common/io.js +2 -2
- package/vscode/src/vs/platform/keyboardLayout/common/keyboardConfig.js +3 -9
- package/vscode/src/vs/platform/quickinput/browser/commandsQuickAccess.js +300 -0
- package/vscode/src/vs/platform/quickinput/browser/helpQuickAccess.js +59 -0
- package/vscode/src/vs/platform/quickinput/browser/pickerQuickAccess.js +212 -0
- package/vscode/src/vs/platform/request/common/request.js +2 -2
- package/vscode/src/vs/platform/theme/common/tokenClassificationRegistry.js +42 -63
- package/vscode/src/vs/platform/workspaces/common/workspaces.js +15 -15
- package/vscode/src/vs/workbench/api/browser/mainThreadAuthentication.js +13 -32
- package/vscode/src/vs/workbench/api/browser/mainThreadComments.js +2 -2
- package/vscode/src/vs/workbench/api/browser/mainThreadCustomEditors.js +50 -52
- package/vscode/src/vs/workbench/api/browser/mainThreadDocumentsAndEditors.js +58 -69
- package/vscode/src/vs/workbench/api/browser/mainThreadEditSessionIdentityParticipant.js +4 -5
- package/vscode/src/vs/workbench/api/browser/mainThreadExtensionService.js +38 -50
- package/vscode/src/vs/workbench/api/browser/mainThreadFileSystem.js +23 -23
- package/vscode/src/vs/workbench/api/browser/mainThreadFileSystemEventService.js +21 -53
- package/vscode/src/vs/workbench/api/browser/mainThreadMessageService.js +4 -4
- package/vscode/src/vs/workbench/api/browser/mainThreadNotebookSaveParticipant.js +4 -5
- package/vscode/src/vs/workbench/api/browser/mainThreadProgress.js +6 -2
- package/vscode/src/vs/workbench/api/browser/mainThreadSaveParticipant.js +4 -2
- package/vscode/src/vs/workbench/api/browser/mainThreadTask.js +1 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadTunnelService.js +2 -12
- package/vscode/src/vs/workbench/api/browser/mainThreadUriOpeners.js +15 -9
- package/vscode/src/vs/workbench/api/browser/mainThreadWebviews.js +16 -20
- package/vscode/src/vs/workbench/api/browser/mainThreadWorkspace.js +6 -28
- package/vscode/src/vs/workbench/api/browser/statusBarExtensionPoint.js +60 -0
- package/vscode/src/vs/workbench/api/common/extHostChat.js +3 -3
- package/vscode/src/vs/workbench/api/common/extHostCommands.js +59 -65
- package/vscode/src/vs/workbench/api/common/extHostConsoleForwarder.js +8 -8
- package/vscode/src/vs/workbench/api/common/extHostDiagnostics.js +2 -6
- package/vscode/src/vs/workbench/api/common/extHostExtensionService.js +2 -2
- package/vscode/src/vs/workbench/api/common/extHostLanguageFeatures.js +150 -222
- package/vscode/src/vs/workbench/api/common/extHostLogService.js +2 -2
- package/vscode/src/vs/workbench/api/common/extHostNotebook.js +3 -3
- package/vscode/src/vs/workbench/api/common/extHostProgress.js +2 -6
- package/vscode/src/vs/workbench/api/common/extHostSCM.js +54 -58
- package/vscode/src/vs/workbench/api/common/extHostStatusBar.js +3 -7
- package/vscode/src/vs/workbench/api/common/extHostTelemetry.js +2 -6
- package/vscode/src/vs/workbench/api/common/extHostTerminalService.js +2 -6
- package/vscode/src/vs/workbench/api/common/extHostTreeViews.js +55 -57
- package/vscode/src/vs/workbench/api/common/extHostTunnelService.js +28 -28
- package/vscode/src/vs/workbench/api/common/extHostTypeConverters.js +265 -277
- package/vscode/src/vs/workbench/api/common/extHostWorkspace.js +2 -7
- package/vscode/src/vs/workbench/api/common/extensionHostMain.js +17 -19
- package/vscode/src/vs/workbench/api/common/jsonValidationExtensionPoint.js +9 -34
- package/vscode/src/vs/workbench/api/worker/extHostExtensionService.js +5 -5
- package/vscode/src/vs/workbench/browser/actions/layoutActions.js +898 -68
- package/vscode/src/vs/workbench/browser/actions/quickAccessActions.js +7 -7
- package/vscode/src/vs/workbench/browser/actions/windowActions.js +32 -38
- package/vscode/src/vs/workbench/browser/actions/workspaceActions.js +103 -13
- package/vscode/src/vs/workbench/browser/actions/workspaceCommands.js +2 -2
- package/vscode/src/vs/workbench/browser/editor.js +3 -3
- package/vscode/src/vs/workbench/browser/parts/auxiliarybar/auxiliaryBarActions.js +12 -27
- package/vscode/src/vs/workbench/browser/parts/compositeBarActions.js +12 -12
- package/vscode/src/vs/workbench/browser/parts/editor/binaryDiffEditor.js +2 -7
- package/vscode/src/vs/workbench/browser/parts/editor/binaryEditor.js +4 -7
- package/vscode/src/vs/workbench/browser/parts/editor/breadcrumbs.js +42 -90
- package/vscode/src/vs/workbench/browser/parts/editor/editor.contribution.js +140 -272
- package/vscode/src/vs/workbench/browser/parts/editor/editorActions.js +115 -148
- package/vscode/src/vs/workbench/browser/parts/editor/editorCommands.js +21 -33
- package/vscode/src/vs/workbench/browser/parts/editor/editorConfiguration.js +7 -19
- package/vscode/src/vs/workbench/browser/parts/editor/editorPlaceholder.js +10 -26
- package/vscode/src/vs/workbench/browser/parts/editor/editorQuickAccess.js +7 -17
- package/vscode/src/vs/workbench/browser/parts/editor/editorStatus.js +60 -81
- package/vscode/src/vs/workbench/browser/parts/editor/sideBySideEditor.js +27 -33
- package/vscode/src/vs/workbench/browser/parts/editor/textCodeEditor.js +2 -2
- package/vscode/src/vs/workbench/browser/parts/editor/textDiffEditor.js +19 -32
- package/vscode/src/vs/workbench/browser/parts/editor/textEditor.js +2 -2
- package/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands.js +8 -8
- package/vscode/src/vs/workbench/browser/parts/panel/panelActions.js +69 -34
- package/vscode/src/vs/workbench/browser/parts/titlebar/menubarControl.js +58 -34
- package/vscode/src/vs/workbench/browser/parts/views/viewFilter.js +2 -2
- package/vscode/src/vs/workbench/browser/parts/views/viewPane.js +3 -9
- package/vscode/src/vs/workbench/browser/parts/views/viewPaneContainer.js +6 -6
- package/vscode/src/vs/workbench/browser/parts/views/viewsService.js +7 -11
- package/vscode/src/vs/workbench/browser/quickaccess.js +7 -3
- package/vscode/src/vs/workbench/browser/workbench.contribution.js +186 -683
- package/vscode/src/vs/workbench/common/configuration.js +12 -15
- package/vscode/src/vs/workbench/common/contextkeys.js +272 -90
- package/vscode/src/vs/workbench/common/editor/diffEditorInput.js +2 -2
- package/vscode/src/vs/workbench/common/editor/sideBySideEditorInput.js +2 -7
- package/vscode/src/vs/workbench/common/editor/textEditorModel.js +2 -6
- package/vscode/src/vs/workbench/common/editor.js +5 -5
- package/vscode/src/vs/workbench/common/theme.js +137 -527
- package/vscode/src/vs/workbench/common/views.js +4 -8
- package/vscode/src/vs/workbench/contrib/accessibility/browser/accessibilityConfiguration.js +15 -55
- package/vscode/src/vs/workbench/contrib/accessibility/browser/accessibilityContributions.js +3 -8
- package/vscode/src/vs/workbench/contrib/accessibility/browser/accessibleView.js +22 -60
- package/vscode/src/vs/workbench/contrib/accessibility/browser/accessibleViewActions.js +9 -15
- package/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditService.js +18 -48
- package/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkFileEdits.js +58 -74
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatActions.js +2 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatAgents.js +5 -10
- package/vscode/src/vs/workbench/contrib/chat/common/chatSlashCommands.js +5 -13
- package/vscode/src/vs/workbench/contrib/codeActions/browser/codeActionsContribution.js +8 -27
- package/vscode/src/vs/workbench/contrib/codeActions/common/codeActionsExtensionPoint.js +5 -17
- package/vscode/src/vs/workbench/contrib/codeActions/common/documentationExtensionPoint.js +6 -15
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/diffEditorHelper.js +7 -20
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/inspectEditorTokens/inspectEditorTokens.js +2 -2
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/languageConfigurationExtensionPoint.js +63 -216
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/largeFileOptimizations.js +4 -7
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoLineQuickAccess.js +5 -8
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess.js +8 -11
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/saveParticipants.js +5 -15
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleMinimap.js +3 -3
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier.js +5 -5
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleRenderControlCharacter.js +3 -6
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleRenderWhitespace.js +3 -6
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleWordWrap.js +10 -9
- package/vscode/src/vs/workbench/contrib/comments/browser/commentColors.js +6 -15
- package/vscode/src/vs/workbench/contrib/comments/browser/commentGlyphWidget.js +5 -20
- package/vscode/src/vs/workbench/contrib/comments/browser/commentNode.js +3 -10
- package/vscode/src/vs/workbench/contrib/comments/browser/commentReply.js +4 -4
- package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadBody.js +3 -20
- package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadHeader.js +9 -3
- package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadWidget.js +4 -13
- package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadZoneWidget.js +19 -19
- package/vscode/src/vs/workbench/contrib/comments/browser/comments.contribution.js +26 -77
- package/vscode/src/vs/workbench/contrib/comments/browser/commentsController.js +5 -17
- package/vscode/src/vs/workbench/contrib/comments/browser/commentsTreeViewer.js +31 -40
- package/vscode/src/vs/workbench/contrib/comments/browser/commentsView.js +10 -29
- package/vscode/src/vs/workbench/contrib/comments/browser/commentsViewActions.js +10 -10
- package/vscode/src/vs/workbench/contrib/comments/browser/reactionsAction.js +8 -8
- package/vscode/src/vs/workbench/contrib/comments/common/commentContextKeys.js +25 -21
- package/vscode/src/vs/workbench/contrib/comments/common/commentModel.js +2 -2
- package/vscode/src/vs/workbench/contrib/customEditor/common/customEditor.js +1 -4
- package/vscode/src/vs/workbench/contrib/debug/browser/debugColors.js +20 -20
- package/vscode/src/vs/workbench/contrib/debug/browser/debugIcons.js +56 -98
- package/vscode/src/vs/workbench/contrib/debug/common/abstractDebugAdapter.js +2 -2
- package/vscode/src/vs/workbench/contrib/debug/common/debug.js +96 -180
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsIcons.js +25 -79
- package/vscode/src/vs/workbench/contrib/externalUriOpener/common/configuration.js +4 -15
- package/vscode/src/vs/workbench/contrib/externalUriOpener/common/externalUriOpenerService.js +4 -8
- package/vscode/src/vs/workbench/contrib/files/browser/explorerViewlet.js +56 -19
- package/vscode/src/vs/workbench/contrib/files/browser/fileActions.js +76 -230
- package/vscode/src/vs/workbench/contrib/files/browser/fileConstants.js +6 -5
- package/vscode/src/vs/workbench/contrib/files/browser/fileImportExport.js +33 -103
- package/vscode/src/vs/workbench/contrib/files/browser/files.contribution.js +228 -99
- package/vscode/src/vs/workbench/contrib/files/browser/views/emptyView.js +1 -1
- package/vscode/src/vs/workbench/contrib/files/browser/views/explorerDecorationsProvider.js +5 -9
- package/vscode/src/vs/workbench/contrib/files/browser/views/explorerView.js +5 -5
- package/vscode/src/vs/workbench/contrib/files/browser/views/explorerViewer.js +15 -35
- package/vscode/src/vs/workbench/contrib/files/browser/views/openEditorsView.js +5 -8
- package/vscode/src/vs/workbench/contrib/files/common/files.js +27 -48
- package/vscode/src/vs/workbench/contrib/folding/browser/folding.contribution.js +3 -6
- package/vscode/src/vs/workbench/contrib/format/browser/formatModified.js +1 -1
- package/vscode/src/vs/workbench/contrib/inlayHints/browser/inlayHintsAccessibilty.js +5 -8
- package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +112 -52
- package/vscode/src/vs/workbench/contrib/keybindings/browser/keybindings.contribution.js +1 -1
- package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeEditorInput.js +2 -2
- package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeEditorInputModel.js +30 -96
- package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/mapping.js +73 -126
- package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/mergeEditorModel.js +3 -3
- package/vscode/src/vs/workbench/contrib/mergeEditor/common/mergeEditor.js +42 -0
- package/vscode/src/vs/workbench/contrib/output/browser/output.contribution.js +23 -29
- package/vscode/src/vs/workbench/contrib/output/browser/outputView.js +3 -3
- package/vscode/src/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.js +13 -16
- package/vscode/src/vs/workbench/contrib/quickaccess/browser/quickAccess.contribution.js +15 -34
- package/vscode/src/vs/workbench/contrib/quickaccess/browser/viewQuickAccess.js +12 -17
- package/vscode/src/vs/workbench/contrib/scm/browser/dirtyDiffSwitcher.js +2 -2
- package/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator.js +26 -75
- package/vscode/src/vs/workbench/contrib/snippets/browser/snippetCompletionProvider.js +4 -19
- package/vscode/src/vs/workbench/contrib/snippets/browser/snippetsFile.js +4 -4
- package/vscode/src/vs/workbench/contrib/snippets/browser/snippetsService.js +60 -99
- package/vscode/src/vs/workbench/contrib/tasks/common/taskDefinitionRegistry.js +5 -14
- package/vscode/src/vs/workbench/contrib/tasks/common/taskService.js +26 -13
- package/vscode/src/vs/workbench/contrib/tasks/common/tasks.js +88 -96
- package/vscode/src/vs/workbench/contrib/terminal/browser/terminalEditorInput.js +5 -17
- package/vscode/src/vs/workbench/contrib/terminal/common/terminal.js +7 -28
- package/vscode/src/vs/workbench/contrib/terminal/common/terminalColorRegistry.js +21 -78
- package/vscode/src/vs/workbench/contrib/terminal/common/terminalContextKey.js +21 -53
- package/vscode/src/vs/workbench/contrib/testing/common/testResult.js +2 -2
- package/vscode/src/vs/workbench/contrib/webviewPanel/browser/webviewEditor.js +2 -5
- package/vscode/src/vs/workbench/services/actions/common/menusExtensionPoint.js +113 -348
- package/vscode/src/vs/workbench/services/assignment/common/assignmentService.js +2 -5
- package/vscode/src/vs/workbench/services/authentication/browser/authenticationService.js +31 -1
- package/vscode/src/vs/workbench/services/configuration/common/jsonEditingService.js +1 -4
- package/vscode/src/vs/workbench/services/configurationResolver/common/variableResolver.js +16 -16
- package/vscode/src/vs/workbench/services/decorations/browser/decorationsService.js +2 -2
- package/vscode/src/vs/workbench/services/editor/common/editorResolverService.js +2 -5
- package/vscode/src/vs/workbench/services/extensions/browser/extensionUrlHandler.js +4 -4
- package/vscode/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.js +27 -29
- package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.js +104 -141
- package/vscode/src/vs/workbench/services/extensions/common/extensionHostManager.js +35 -39
- package/vscode/src/vs/workbench/services/extensions/common/extensionRunningLocationTracker.js +25 -25
- package/vscode/src/vs/workbench/services/extensions/common/extensionsRegistry.js +80 -296
- package/vscode/src/vs/workbench/services/filesConfiguration/common/filesConfigurationService.js +6 -21
- package/vscode/src/vs/workbench/services/host/browser/browserHostService.js +3 -6
- package/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.js +24 -81
- package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayoutService.js +2 -2
- package/vscode/src/vs/workbench/services/keybinding/common/keybindingEditing.js +11 -17
- package/vscode/src/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper.js +30 -32
- package/vscode/src/vs/workbench/services/language/common/languageService.js +23 -98
- package/vscode/src/vs/workbench/services/remote/common/tunnelModel.js +83 -95
- package/vscode/src/vs/workbench/services/search/common/queryBuilder.js +1 -5
- package/vscode/src/vs/workbench/services/textfile/browser/textFileService.js +11 -23
- package/vscode/src/vs/workbench/services/textfile/common/textFileEditorModel.js +32 -32
- package/vscode/src/vs/workbench/services/textfile/common/textFileEditorModelManager.js +2 -7
- package/vscode/src/vs/workbench/services/textfile/common/textFileSaveParticipant.js +2 -2
- package/vscode/src/vs/workbench/services/themes/common/colorExtensionPoint.js +16 -53
- package/vscode/src/vs/workbench/services/themes/common/iconExtensionPoint.js +50 -1
- package/vscode/src/vs/workbench/services/themes/common/tokenClassificationExtensionPoint.js +25 -99
- package/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorService.js +16 -16
- package/vscode/src/vs/workbench/services/userDataProfile/common/userDataProfile.js +6 -3
- package/vscode/src/vs/workbench/services/userDataSync/common/userDataSync.js +15 -3
- package/vscode/src/vs/workbench/services/workingCopy/common/storedFileWorkingCopySaveParticipant.js +2 -2
- package/vscode/src/vs/workbench/services/workingCopy/common/workingCopyBackupService.js +32 -42
|
@@ -23,11 +23,11 @@ import { IDialogService } from '../../../../platform/dialogs/common/dialogs.js';
|
|
|
23
23
|
const MISMATCH_LOCAL_PORT_COOLDOWN = 10 * 1000;
|
|
24
24
|
const TUNNELS_TO_RESTORE = 'remote.tunnels.toRestore';
|
|
25
25
|
const ACTIVATION_EVENT = 'onTunnel';
|
|
26
|
-
const forwardedPortsViewEnabled = (
|
|
26
|
+
const forwardedPortsViewEnabled = ( new RawContextKey(
|
|
27
27
|
'forwardedPortsViewEnabled',
|
|
28
28
|
false,
|
|
29
|
-
|
|
30
|
-
))
|
|
29
|
+
nls.localizeWithPath('vs/workbench/services/remote/common/tunnelModel', 'tunnel.forwardedPortsViewEnabled', "Whether the Ports view is enabled.")
|
|
30
|
+
));
|
|
31
31
|
function parseAddress(address) {
|
|
32
32
|
const matches = address.match(/^([a-zA-Z0-9_-]+(?:\.[a-zA-Z0-9_-]+)*:)?([0-9]+)$/);
|
|
33
33
|
if (!matches) {
|
|
@@ -36,24 +36,24 @@ function parseAddress(address) {
|
|
|
36
36
|
return { host: matches[1]?.substring(0, matches[1].length - 1) || 'localhost', port: Number(matches[2]) };
|
|
37
37
|
}
|
|
38
38
|
var TunnelCloseReason;
|
|
39
|
-
( (
|
|
39
|
+
( (function(TunnelCloseReason) {
|
|
40
40
|
TunnelCloseReason["Other"] = "Other";
|
|
41
41
|
TunnelCloseReason["User"] = "User";
|
|
42
42
|
TunnelCloseReason["AutoForwardEnd"] = "AutoForwardEnd";
|
|
43
|
-
})(TunnelCloseReason || (TunnelCloseReason = {})))
|
|
43
|
+
})(TunnelCloseReason || (TunnelCloseReason = {})));
|
|
44
44
|
var TunnelSource;
|
|
45
|
-
( (
|
|
45
|
+
( (function(TunnelSource) {
|
|
46
46
|
TunnelSource[TunnelSource["User"] = 0] = "User";
|
|
47
47
|
TunnelSource[TunnelSource["Auto"] = 1] = "Auto";
|
|
48
48
|
TunnelSource[TunnelSource["Extension"] = 2] = "Extension";
|
|
49
|
-
})(TunnelSource || (TunnelSource = {})))
|
|
49
|
+
})(TunnelSource || (TunnelSource = {})));
|
|
50
50
|
const UserTunnelSource = {
|
|
51
51
|
source: TunnelSource.User,
|
|
52
|
-
description:
|
|
52
|
+
description: nls.localizeWithPath('vs/workbench/services/remote/common/tunnelModel', 'tunnel.source.user', "User Forwarded")
|
|
53
53
|
};
|
|
54
54
|
const AutoTunnelSource = {
|
|
55
55
|
source: TunnelSource.Auto,
|
|
56
|
-
description:
|
|
56
|
+
description: nls.localizeWithPath('vs/workbench/services/remote/common/tunnelModel', 'tunnel.source.auto', "Auto Forwarded")
|
|
57
57
|
};
|
|
58
58
|
function mapHasAddress(map, host, port) {
|
|
59
59
|
const initialAddress = map.get(makeAddress(host, port));
|
|
@@ -63,7 +63,7 @@ function mapHasAddress(map, host, port) {
|
|
|
63
63
|
if (isLocalhost(host)) {
|
|
64
64
|
for (const testHost of LOCALHOST_ADDRESSES) {
|
|
65
65
|
const testAddress = makeAddress(testHost, port);
|
|
66
|
-
if ((
|
|
66
|
+
if (( map.has(testAddress))) {
|
|
67
67
|
return map.get(testAddress);
|
|
68
68
|
}
|
|
69
69
|
}
|
|
@@ -71,7 +71,7 @@ function mapHasAddress(map, host, port) {
|
|
|
71
71
|
else if (isAllInterfaces(host)) {
|
|
72
72
|
for (const testHost of ALL_INTERFACES_ADDRESSES) {
|
|
73
73
|
const testAddress = makeAddress(testHost, port);
|
|
74
|
-
if ((
|
|
74
|
+
if (( map.has(testAddress))) {
|
|
75
75
|
return map.get(testAddress);
|
|
76
76
|
}
|
|
77
77
|
}
|
|
@@ -93,14 +93,14 @@ function makeAddress(host, port) {
|
|
|
93
93
|
return host + ':' + port;
|
|
94
94
|
}
|
|
95
95
|
var OnPortForward;
|
|
96
|
-
( (
|
|
96
|
+
( (function(OnPortForward) {
|
|
97
97
|
OnPortForward["Notify"] = "notify";
|
|
98
98
|
OnPortForward["OpenBrowser"] = "openBrowser";
|
|
99
99
|
OnPortForward["OpenBrowserOnce"] = "openBrowserOnce";
|
|
100
100
|
OnPortForward["OpenPreview"] = "openPreview";
|
|
101
101
|
OnPortForward["Silent"] = "silent";
|
|
102
102
|
OnPortForward["Ignore"] = "ignore";
|
|
103
|
-
})(OnPortForward || (OnPortForward = {})))
|
|
103
|
+
})(OnPortForward || (OnPortForward = {})));
|
|
104
104
|
function isCandidatePort(candidate) {
|
|
105
105
|
return candidate && 'host' in candidate && typeof candidate.host === 'string'
|
|
106
106
|
&& 'port' in candidate && typeof candidate.port === 'number'
|
|
@@ -116,7 +116,7 @@ class PortsAttributes extends Disposable {
|
|
|
116
116
|
super();
|
|
117
117
|
this.configurationService = configurationService;
|
|
118
118
|
this.portsAttributes = [];
|
|
119
|
-
this._onDidChangeAttributes = (
|
|
119
|
+
this._onDidChangeAttributes = ( new Emitter());
|
|
120
120
|
this.onDidChangeAttributes = this._onDidChangeAttributes.event;
|
|
121
121
|
this._register(configurationService.onDidChangeConfiguration(e => {
|
|
122
122
|
if (e.affectsConfiguration(PortsAttributes.SETTING) || e.affectsConfiguration(PortsAttributes.DEFAULTS)) {
|
|
@@ -317,38 +317,38 @@ let TunnelModel = class TunnelModel extends Disposable {
|
|
|
317
317
|
this.dialogService = dialogService;
|
|
318
318
|
this.extensionService = extensionService;
|
|
319
319
|
this.contextKeyService = contextKeyService;
|
|
320
|
-
this.inProgress = (
|
|
321
|
-
this._onForwardPort = (
|
|
320
|
+
this.inProgress = ( new Map());
|
|
321
|
+
this._onForwardPort = ( new Emitter());
|
|
322
322
|
this.onForwardPort = this._onForwardPort.event;
|
|
323
|
-
this._onClosePort = (
|
|
323
|
+
this._onClosePort = ( new Emitter());
|
|
324
324
|
this.onClosePort = this._onClosePort.event;
|
|
325
|
-
this._onPortName = (
|
|
325
|
+
this._onPortName = ( new Emitter());
|
|
326
326
|
this.onPortName = this._onPortName.event;
|
|
327
|
-
this._onCandidatesChanged = (
|
|
327
|
+
this._onCandidatesChanged = ( new Emitter());
|
|
328
328
|
this.onCandidatesChanged = this._onCandidatesChanged.event;
|
|
329
|
-
this._onEnvironmentTunnelsSet = (
|
|
329
|
+
this._onEnvironmentTunnelsSet = ( new Emitter());
|
|
330
330
|
this.onEnvironmentTunnelsSet = this._onEnvironmentTunnelsSet.event;
|
|
331
331
|
this._environmentTunnelsSet = false;
|
|
332
332
|
this.restoreListener = undefined;
|
|
333
333
|
this.restoreComplete = false;
|
|
334
|
-
this.onRestoreComplete = (
|
|
335
|
-
this.unrestoredExtensionTunnels = (
|
|
336
|
-
this.sessionCachedProperties = (
|
|
334
|
+
this.onRestoreComplete = ( new Emitter());
|
|
335
|
+
this.unrestoredExtensionTunnels = ( new Map());
|
|
336
|
+
this.sessionCachedProperties = ( new Map());
|
|
337
337
|
this.portAttributesProviders = [];
|
|
338
|
-
this.mismatchCooldown = (
|
|
339
|
-
this.configPortsAttributes = (
|
|
338
|
+
this.mismatchCooldown = ( new Date());
|
|
339
|
+
this.configPortsAttributes = ( new PortsAttributes(configurationService));
|
|
340
340
|
this.tunnelRestoreValue = this.getTunnelRestoreValue();
|
|
341
341
|
this._register(this.configPortsAttributes.onDidChangeAttributes(this.updateAttributes, this));
|
|
342
|
-
this.forwarded = (
|
|
343
|
-
this.remoteTunnels = (
|
|
342
|
+
this.forwarded = ( new Map());
|
|
343
|
+
this.remoteTunnels = ( new Map());
|
|
344
344
|
this.tunnelService.tunnels.then(async (tunnels) => {
|
|
345
|
-
const attributes = await this.getAttributes((
|
|
345
|
+
const attributes = await this.getAttributes(( tunnels.map(tunnel => {
|
|
346
346
|
return { port: tunnel.tunnelRemotePort, host: tunnel.tunnelRemoteHost };
|
|
347
|
-
})))
|
|
347
|
+
})));
|
|
348
348
|
for (const tunnel of tunnels) {
|
|
349
349
|
if (tunnel.localAddress) {
|
|
350
350
|
const key = makeAddress(tunnel.tunnelRemoteHost, tunnel.tunnelRemotePort);
|
|
351
|
-
const matchingCandidate = mapHasAddressLocalhostOrAllInterfaces(this._candidates ?? (
|
|
351
|
+
const matchingCandidate = mapHasAddressLocalhostOrAllInterfaces(this._candidates ?? ( new Map()), tunnel.tunnelRemoteHost, tunnel.tunnelRemotePort);
|
|
352
352
|
this.forwarded.set(key, {
|
|
353
353
|
remotePort: tunnel.tunnelRemotePort,
|
|
354
354
|
remoteHost: tunnel.tunnelRemoteHost,
|
|
@@ -366,14 +366,14 @@ let TunnelModel = class TunnelModel extends Disposable {
|
|
|
366
366
|
}
|
|
367
367
|
}
|
|
368
368
|
});
|
|
369
|
-
this.detected = (
|
|
369
|
+
this.detected = ( new Map());
|
|
370
370
|
this._register(this.tunnelService.onTunnelOpened(async (tunnel) => {
|
|
371
371
|
const key = makeAddress(tunnel.tunnelRemoteHost, tunnel.tunnelRemotePort);
|
|
372
372
|
if (!mapHasAddressLocalhostOrAllInterfaces(this.forwarded, tunnel.tunnelRemoteHost, tunnel.tunnelRemotePort)
|
|
373
373
|
&& !mapHasAddressLocalhostOrAllInterfaces(this.detected, tunnel.tunnelRemoteHost, tunnel.tunnelRemotePort)
|
|
374
374
|
&& !mapHasAddressLocalhostOrAllInterfaces(this.inProgress, tunnel.tunnelRemoteHost, tunnel.tunnelRemotePort)
|
|
375
375
|
&& tunnel.localAddress) {
|
|
376
|
-
const matchingCandidate = mapHasAddressLocalhostOrAllInterfaces(this._candidates ?? (
|
|
376
|
+
const matchingCandidate = mapHasAddressLocalhostOrAllInterfaces(this._candidates ?? ( new Map()), tunnel.tunnelRemoteHost, tunnel.tunnelRemotePort);
|
|
377
377
|
const attributes = (await this.getAttributes([{ port: tunnel.tunnelRemotePort, host: tunnel.tunnelRemoteHost }]))?.get(tunnel.tunnelRemotePort);
|
|
378
378
|
this.forwarded.set(key, {
|
|
379
379
|
remoteHost: tunnel.tunnelRemoteHost,
|
|
@@ -418,7 +418,7 @@ let TunnelModel = class TunnelModel extends Disposable {
|
|
|
418
418
|
}
|
|
419
419
|
async onTunnelClosed(address, reason) {
|
|
420
420
|
const key = makeAddress(address.host, address.port);
|
|
421
|
-
if ((
|
|
421
|
+
if (( this.forwarded.has(key))) {
|
|
422
422
|
this.forwarded.delete(key);
|
|
423
423
|
await this.storeForwarded();
|
|
424
424
|
this._onClosePort.fire(address);
|
|
@@ -426,14 +426,10 @@ let TunnelModel = class TunnelModel extends Disposable {
|
|
|
426
426
|
}
|
|
427
427
|
makeLocalUri(localAddress, attributes) {
|
|
428
428
|
if (localAddress.startsWith('http')) {
|
|
429
|
-
return (
|
|
430
|
-
(URI.parse(localAddress))
|
|
431
|
-
);
|
|
429
|
+
return ( URI.parse(localAddress));
|
|
432
430
|
}
|
|
433
431
|
const protocol = attributes?.protocol ?? 'http';
|
|
434
|
-
return (
|
|
435
|
-
(URI.parse(`${protocol}://${localAddress}`))
|
|
436
|
-
);
|
|
432
|
+
return ( URI.parse(`${protocol}://${localAddress}`));
|
|
437
433
|
}
|
|
438
434
|
async getStorageKey() {
|
|
439
435
|
const workspace = this.workspaceContextService.getWorkspace();
|
|
@@ -462,7 +458,7 @@ let TunnelModel = class TunnelModel extends Disposable {
|
|
|
462
458
|
const tunnelRestoreValue = await this.tunnelRestoreValue;
|
|
463
459
|
if (tunnelRestoreValue && (tunnelRestoreValue !== this.knownPortsRestoreValue)) {
|
|
464
460
|
const tunnels = JSON.parse(tunnelRestoreValue) ?? [];
|
|
465
|
-
this.logService.trace(`ForwardedPorts: (TunnelModel) restoring ports ${(
|
|
461
|
+
this.logService.trace(`ForwardedPorts: (TunnelModel) restoring ports ${( tunnels.map(tunnel => tunnel.remotePort)).join(', ')}`);
|
|
466
462
|
for (const tunnel of tunnels) {
|
|
467
463
|
const alreadyForwarded = mapHasAddressLocalhostOrAllInterfaces(this.detected, tunnel.remoteHost, tunnel.remotePort);
|
|
468
464
|
if ((tunnel.source.source !== TunnelSource.Extension && !alreadyForwarded) || (tunnel.source.source === TunnelSource.Extension && alreadyForwarded)) {
|
|
@@ -485,7 +481,7 @@ let TunnelModel = class TunnelModel extends Disposable {
|
|
|
485
481
|
this.onRestoreComplete.fire();
|
|
486
482
|
if (!this.restoreListener) {
|
|
487
483
|
const key = await this.getStorageKey();
|
|
488
|
-
this.restoreListener = this._register((
|
|
484
|
+
this.restoreListener = this._register(( new DisposableStore()));
|
|
489
485
|
this.restoreListener.add(this.storageService.onDidChangeValue(0 , undefined, this.restoreListener)(async (e) => {
|
|
490
486
|
if (e.key === key) {
|
|
491
487
|
this.tunnelRestoreValue = Promise.resolve(this.storageService.get(key, 0 ));
|
|
@@ -496,7 +492,7 @@ let TunnelModel = class TunnelModel extends Disposable {
|
|
|
496
492
|
}
|
|
497
493
|
async storeForwarded() {
|
|
498
494
|
if (this.configurationService.getValue('remote.restoreForwardedPorts')) {
|
|
499
|
-
const valueToStore = JSON.stringify(Array.from((
|
|
495
|
+
const valueToStore = JSON.stringify(Array.from(( this.forwarded.values())));
|
|
500
496
|
if (valueToStore !== this.knownPortsRestoreValue) {
|
|
501
497
|
this.knownPortsRestoreValue = valueToStore;
|
|
502
498
|
const key = await this.getStorageKey();
|
|
@@ -513,18 +509,12 @@ let TunnelModel = class TunnelModel extends Disposable {
|
|
|
513
509
|
if (tunnel.tunnelLocalPort === expectedLocal) {
|
|
514
510
|
return;
|
|
515
511
|
}
|
|
516
|
-
const newCooldown = (
|
|
512
|
+
const newCooldown = ( new Date());
|
|
517
513
|
if ((this.mismatchCooldown.getTime() + MISMATCH_LOCAL_PORT_COOLDOWN) > newCooldown.getTime()) {
|
|
518
514
|
return;
|
|
519
515
|
}
|
|
520
516
|
this.mismatchCooldown = newCooldown;
|
|
521
|
-
const mismatchString = (
|
|
522
|
-
'remote.localPortMismatch.single',
|
|
523
|
-
"Local port {0} could not be used for forwarding to remote port {1}.\n\nThis usually happens when there is already another process using local port {0}.\n\nPort number {2} has been used instead.",
|
|
524
|
-
expectedLocal,
|
|
525
|
-
tunnel.tunnelRemotePort,
|
|
526
|
-
tunnel.tunnelLocalPort
|
|
527
|
-
)));
|
|
517
|
+
const mismatchString = nls.localizeWithPath('vs/workbench/services/remote/common/tunnelModel', 'remote.localPortMismatch.single', "Local port {0} could not be used for forwarding to remote port {1}.\n\nThis usually happens when there is already another process using local port {0}.\n\nPort number {2} has been used instead.", expectedLocal, tunnel.tunnelRemotePort, tunnel.tunnelLocalPort);
|
|
528
518
|
return this.dialogService.info(mismatchString);
|
|
529
519
|
}
|
|
530
520
|
async forward(tunnelProperties, attributes) {
|
|
@@ -555,7 +545,7 @@ let TunnelModel = class TunnelModel extends Disposable {
|
|
|
555
545
|
noTunnelValue = tunnel;
|
|
556
546
|
}
|
|
557
547
|
else if (tunnel && tunnel.localAddress) {
|
|
558
|
-
const matchingCandidate = mapHasAddressLocalhostOrAllInterfaces(this._candidates ?? (
|
|
548
|
+
const matchingCandidate = mapHasAddressLocalhostOrAllInterfaces(this._candidates ?? ( new Map()), tunnelProperties.remote.host, tunnelProperties.remote.port);
|
|
559
549
|
const protocol = (tunnel.protocol ?
|
|
560
550
|
((tunnel.protocol === TunnelProtocol.Https) ? TunnelProtocol.Https : TunnelProtocol.Http)
|
|
561
551
|
: (attributes?.protocol ?? TunnelProtocol.Http));
|
|
@@ -590,7 +580,7 @@ let TunnelModel = class TunnelModel extends Disposable {
|
|
|
590
580
|
return noTunnelValue;
|
|
591
581
|
}
|
|
592
582
|
mergeCachedAndUnrestoredProperties(key, tunnelProperties) {
|
|
593
|
-
const map = (
|
|
583
|
+
const map = ( this.unrestoredExtensionTunnels.has(key)) ? this.unrestoredExtensionTunnels : (( this.sessionCachedProperties.has(key)) ? this.sessionCachedProperties : undefined);
|
|
594
584
|
if (map) {
|
|
595
585
|
const updateProps = map.get(key);
|
|
596
586
|
map.delete(key);
|
|
@@ -605,11 +595,11 @@ let TunnelModel = class TunnelModel extends Disposable {
|
|
|
605
595
|
async mergeAttributesIntoExistingTunnel(existingTunnel, tunnelProperties, attributes) {
|
|
606
596
|
const newName = attributes?.label ?? tunnelProperties.name;
|
|
607
597
|
let MergedAttributeAction;
|
|
608
|
-
( (
|
|
598
|
+
( (function(MergedAttributeAction) {
|
|
609
599
|
MergedAttributeAction[MergedAttributeAction["None"] = 0] = "None";
|
|
610
600
|
MergedAttributeAction[MergedAttributeAction["Fire"] = 1] = "Fire";
|
|
611
601
|
MergedAttributeAction[MergedAttributeAction["Reopen"] = 2] = "Reopen";
|
|
612
|
-
})(MergedAttributeAction || (MergedAttributeAction = {})))
|
|
602
|
+
})(MergedAttributeAction || (MergedAttributeAction = {})));
|
|
613
603
|
let mergedAction = MergedAttributeAction.None;
|
|
614
604
|
if (newName !== existingTunnel.name) {
|
|
615
605
|
existingTunnel.name = newName;
|
|
@@ -643,7 +633,7 @@ let TunnelModel = class TunnelModel extends Disposable {
|
|
|
643
633
|
this._onPortName.fire({ host, port });
|
|
644
634
|
return;
|
|
645
635
|
}
|
|
646
|
-
else if ((
|
|
636
|
+
else if (( this.detected.has(key))) {
|
|
647
637
|
this.detected.get(key).name = name;
|
|
648
638
|
this._onPortName.fire({ host, port });
|
|
649
639
|
}
|
|
@@ -671,7 +661,7 @@ let TunnelModel = class TunnelModel extends Disposable {
|
|
|
671
661
|
addEnvironmentTunnels(tunnels) {
|
|
672
662
|
if (tunnels) {
|
|
673
663
|
for (const tunnel of tunnels) {
|
|
674
|
-
const matchingCandidate = mapHasAddressLocalhostOrAllInterfaces(this._candidates ?? (
|
|
664
|
+
const matchingCandidate = mapHasAddressLocalhostOrAllInterfaces(this._candidates ?? ( new Map()), tunnel.remoteAddress.host, tunnel.remoteAddress.port);
|
|
675
665
|
const localAddress = typeof tunnel.localAddress === 'string' ? tunnel.localAddress : makeAddress(tunnel.localAddress.host, tunnel.localAddress.port);
|
|
676
666
|
this.detected.set(makeAddress(tunnel.remoteAddress.host, tunnel.remoteAddress.port), {
|
|
677
667
|
remoteHost: tunnel.remoteAddress.host,
|
|
@@ -686,7 +676,7 @@ let TunnelModel = class TunnelModel extends Disposable {
|
|
|
686
676
|
privacy: TunnelPrivacyId.ConstantPrivate,
|
|
687
677
|
source: {
|
|
688
678
|
source: TunnelSource.Extension,
|
|
689
|
-
description:
|
|
679
|
+
description: nls.localizeWithPath('vs/workbench/services/remote/common/tunnelModel', 'tunnel.staticallyForwarded', "Statically Forwarded")
|
|
690
680
|
}
|
|
691
681
|
});
|
|
692
682
|
this.tunnelService.setEnvironmentTunnel(tunnel.remoteAddress.host, tunnel.remoteAddress.port, localAddress, TunnelPrivacyId.ConstantPrivate, TunnelProtocol.Http);
|
|
@@ -705,12 +695,12 @@ let TunnelModel = class TunnelModel extends Disposable {
|
|
|
705
695
|
processedCandidates = await this._candidateFilter(candidates);
|
|
706
696
|
}
|
|
707
697
|
const removedCandidates = this.updateInResponseToCandidates(processedCandidates);
|
|
708
|
-
this.logService.trace(`ForwardedPorts: (TunnelModel) removed candidates ${(
|
|
698
|
+
this.logService.trace(`ForwardedPorts: (TunnelModel) removed candidates ${( Array.from(( removedCandidates.values())).map(candidate => candidate.port)).join(', ')}`);
|
|
709
699
|
this._onCandidatesChanged.fire(removedCandidates);
|
|
710
700
|
}
|
|
711
701
|
updateInResponseToCandidates(candidates) {
|
|
712
|
-
const removedCandidates = this._candidates ?? (
|
|
713
|
-
const candidatesMap = (
|
|
702
|
+
const removedCandidates = this._candidates ?? ( new Map());
|
|
703
|
+
const candidatesMap = ( new Map());
|
|
714
704
|
this._candidates = candidatesMap;
|
|
715
705
|
candidates.forEach(value => {
|
|
716
706
|
const addressKey = makeAddress(value.host, value.port);
|
|
@@ -720,7 +710,7 @@ let TunnelModel = class TunnelModel extends Disposable {
|
|
|
720
710
|
detail: value.detail,
|
|
721
711
|
pid: value.pid
|
|
722
712
|
});
|
|
723
|
-
if ((
|
|
713
|
+
if (( removedCandidates.has(addressKey))) {
|
|
724
714
|
removedCandidates.delete(addressKey);
|
|
725
715
|
}
|
|
726
716
|
const forwardedValue = mapHasAddressLocalhostOrAllInterfaces(this.forwarded, value.host, value.port);
|
|
@@ -751,16 +741,16 @@ let TunnelModel = class TunnelModel extends Disposable {
|
|
|
751
741
|
return removedCandidates;
|
|
752
742
|
}
|
|
753
743
|
get candidates() {
|
|
754
|
-
return this._candidates ? Array.from((
|
|
744
|
+
return this._candidates ? Array.from(( this._candidates.values())) : [];
|
|
755
745
|
}
|
|
756
746
|
get candidatesOrUndefined() {
|
|
757
747
|
return this._candidates ? this.candidates : undefined;
|
|
758
748
|
}
|
|
759
749
|
async updateAttributes() {
|
|
760
|
-
const tunnels = Array.from((
|
|
761
|
-
const allAttributes = await this.getAttributes((
|
|
750
|
+
const tunnels = Array.from(( this.forwarded.values()));
|
|
751
|
+
const allAttributes = await this.getAttributes(( tunnels.map(tunnel => {
|
|
762
752
|
return { port: tunnel.remotePort, host: tunnel.remoteHost };
|
|
763
|
-
}))
|
|
753
|
+
})), false);
|
|
764
754
|
if (!allAttributes) {
|
|
765
755
|
return;
|
|
766
756
|
}
|
|
@@ -783,20 +773,20 @@ let TunnelModel = class TunnelModel extends Disposable {
|
|
|
783
773
|
}
|
|
784
774
|
}
|
|
785
775
|
async getAttributes(forwardedPorts, checkProviders = true) {
|
|
786
|
-
const matchingCandidates = (
|
|
787
|
-
const pidToPortsMapping = (
|
|
776
|
+
const matchingCandidates = ( new Map());
|
|
777
|
+
const pidToPortsMapping = ( new Map());
|
|
788
778
|
forwardedPorts.forEach(forwardedPort => {
|
|
789
|
-
const matchingCandidate = mapHasAddressLocalhostOrAllInterfaces(this._candidates ?? (
|
|
779
|
+
const matchingCandidate = mapHasAddressLocalhostOrAllInterfaces(this._candidates ?? ( new Map()), LOCALHOST_ADDRESSES[0], forwardedPort.port) ?? forwardedPort;
|
|
790
780
|
if (matchingCandidate) {
|
|
791
781
|
matchingCandidates.set(forwardedPort.port, matchingCandidate);
|
|
792
782
|
const pid = isCandidatePort(matchingCandidate) ? matchingCandidate.pid : undefined;
|
|
793
|
-
if (!(
|
|
783
|
+
if (!( pidToPortsMapping.has(pid))) {
|
|
794
784
|
pidToPortsMapping.set(pid, []);
|
|
795
785
|
}
|
|
796
786
|
pidToPortsMapping.get(pid)?.push(forwardedPort.port);
|
|
797
787
|
}
|
|
798
788
|
});
|
|
799
|
-
const configAttributes = (
|
|
789
|
+
const configAttributes = ( new Map());
|
|
800
790
|
forwardedPorts.forEach(forwardedPort => {
|
|
801
791
|
const attributes = this.configPortsAttributes.getAttributes(forwardedPort.port, forwardedPort.host, matchingCandidates.get(forwardedPort.port)?.detail);
|
|
802
792
|
if (attributes) {
|
|
@@ -806,16 +796,14 @@ let TunnelModel = class TunnelModel extends Disposable {
|
|
|
806
796
|
if ((this.portAttributesProviders.length === 0) || !checkProviders) {
|
|
807
797
|
return (configAttributes.size > 0) ? configAttributes : undefined;
|
|
808
798
|
}
|
|
809
|
-
const allProviderResults = await Promise.all(flatten((
|
|
810
|
-
return (
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
})))));
|
|
818
|
-
const providedAttributes = ( (new Map()));
|
|
799
|
+
const allProviderResults = await Promise.all(flatten(( this.portAttributesProviders.map(provider => {
|
|
800
|
+
return ( Array.from(pidToPortsMapping.entries()).map(entry => {
|
|
801
|
+
const portGroup = entry[1];
|
|
802
|
+
const matchingCandidate = matchingCandidates.get(portGroup[0]);
|
|
803
|
+
return provider.providePortAttributes(portGroup, matchingCandidate?.pid, matchingCandidate?.detail, ( new CancellationTokenSource()).token);
|
|
804
|
+
}));
|
|
805
|
+
}))));
|
|
806
|
+
const providedAttributes = ( new Map());
|
|
819
807
|
allProviderResults.forEach(attributes => attributes.forEach(attribute => {
|
|
820
808
|
if (attribute) {
|
|
821
809
|
providedAttributes.set(attribute.port, attribute);
|
|
@@ -824,7 +812,7 @@ let TunnelModel = class TunnelModel extends Disposable {
|
|
|
824
812
|
if (!configAttributes && !providedAttributes) {
|
|
825
813
|
return undefined;
|
|
826
814
|
}
|
|
827
|
-
const mergedAttributes = (
|
|
815
|
+
const mergedAttributes = ( new Map());
|
|
828
816
|
forwardedPorts.forEach(forwardedPorts => {
|
|
829
817
|
const config = configAttributes.get(forwardedPorts.port);
|
|
830
818
|
const provider = providedAttributes.get(forwardedPorts.port);
|
|
@@ -842,19 +830,19 @@ let TunnelModel = class TunnelModel extends Disposable {
|
|
|
842
830
|
this.portAttributesProviders.push(provider);
|
|
843
831
|
}
|
|
844
832
|
};
|
|
845
|
-
TunnelModel.__decorator = (
|
|
833
|
+
TunnelModel.__decorator = ( __decorate([
|
|
846
834
|
debounce(1000)
|
|
847
|
-
], TunnelModel.prototype, "storeForwarded", null))
|
|
848
|
-
TunnelModel = (
|
|
849
|
-
(
|
|
850
|
-
(
|
|
851
|
-
(
|
|
852
|
-
(
|
|
853
|
-
(
|
|
854
|
-
(
|
|
855
|
-
(
|
|
856
|
-
(
|
|
857
|
-
(
|
|
858
|
-
(
|
|
859
|
-
], TunnelModel))
|
|
835
|
+
], TunnelModel.prototype, "storeForwarded", null));
|
|
836
|
+
TunnelModel = ( __decorate([
|
|
837
|
+
( __param(0, ITunnelService)),
|
|
838
|
+
( __param(1, IStorageService)),
|
|
839
|
+
( __param(2, IConfigurationService)),
|
|
840
|
+
( __param(3, IWorkbenchEnvironmentService)),
|
|
841
|
+
( __param(4, IRemoteAuthorityResolverService)),
|
|
842
|
+
( __param(5, IWorkspaceContextService)),
|
|
843
|
+
( __param(6, ILogService)),
|
|
844
|
+
( __param(7, IDialogService)),
|
|
845
|
+
( __param(8, IExtensionService)),
|
|
846
|
+
( __param(9, IContextKeyService))
|
|
847
|
+
], TunnelModel));
|
|
860
848
|
export { ACTIVATION_EVENT, AutoTunnelSource, OnPortForward, PortsAttributes, TunnelCloseReason, TunnelModel, TunnelSource, UserTunnelSource, forwardedPortsViewEnabled, isCandidatePort, makeAddress, mapHasAddress, mapHasAddressLocalhostOrAllInterfaces, parseAddress };
|
|
@@ -327,11 +327,7 @@ let QueryBuilder = class QueryBuilder {
|
|
|
327
327
|
else {
|
|
328
328
|
const probableWorkspaceFolderNameMatch = searchPath.match(/\.[\/\\](.+)[\/\\]?/);
|
|
329
329
|
const probableWorkspaceFolderName = probableWorkspaceFolderNameMatch ? probableWorkspaceFolderNameMatch[1] : searchPath;
|
|
330
|
-
const searchPathNotFoundError = (
|
|
331
|
-
'search.noWorkspaceWithName',
|
|
332
|
-
"Workspace folder does not exist: {0}",
|
|
333
|
-
probableWorkspaceFolderName
|
|
334
|
-
));
|
|
330
|
+
const searchPathNotFoundError = nls.localizeWithPath('vs/workbench/services/search/common/queryBuilder', 'search.noWorkspaceWithName', "Workspace folder does not exist: {0}", probableWorkspaceFolderName);
|
|
335
331
|
throw new Error(searchPathNotFoundError);
|
|
336
332
|
}
|
|
337
333
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
|
|
2
|
-
import {
|
|
2
|
+
import { localizeWithPath } from 'monaco-editor/esm/vs/nls.js';
|
|
3
3
|
import { TextFileOperationError, toBufferOrReadable, stringToSnapshot } from '../common/textfiles.js';
|
|
4
4
|
import { SaveSourceRegistry } from '../../../common/editor.js';
|
|
5
5
|
import { ILifecycleService } from '../../lifecycle/common/lifecycle.js';
|
|
@@ -41,8 +41,8 @@ import { IDialogService, IFileDialogService } from '../../../../platform/dialogs
|
|
|
41
41
|
var AbstractTextFileService_1;
|
|
42
42
|
let AbstractTextFileService = class AbstractTextFileService extends Disposable {
|
|
43
43
|
static { AbstractTextFileService_1 = this; }
|
|
44
|
-
static { this.TEXTFILE_SAVE_CREATE_SOURCE = SaveSourceRegistry.registerSource('textFileCreate.source', (
|
|
45
|
-
static { this.TEXTFILE_SAVE_REPLACE_SOURCE = SaveSourceRegistry.registerSource('textFileOverwrite.source', (
|
|
44
|
+
static { this.TEXTFILE_SAVE_CREATE_SOURCE = SaveSourceRegistry.registerSource('textFileCreate.source', localizeWithPath('vs/workbench/services/textfile/browser/textFileService', 'textFileCreate.source', "File Created")); }
|
|
45
|
+
static { this.TEXTFILE_SAVE_REPLACE_SOURCE = SaveSourceRegistry.registerSource('textFileOverwrite.source', localizeWithPath('vs/workbench/services/textfile/browser/textFileService', 'textFileOverwrite.source', "File Replaced")); }
|
|
46
46
|
constructor(fileService, untitledTextEditorService, lifecycleService, instantiationService, modelService, environmentService, dialogService, fileDialogService, textResourceConfigurationService, filesConfigurationService, codeEditorService, pathService, workingCopyFileService, uriIdentityService, languageService, logService, elevatedFileService, decorationsService) {
|
|
47
47
|
super();
|
|
48
48
|
this.fileService = fileService;
|
|
@@ -72,7 +72,7 @@ let AbstractTextFileService = class AbstractTextFileService extends Disposable {
|
|
|
72
72
|
constructor(files) {
|
|
73
73
|
super();
|
|
74
74
|
this.files = files;
|
|
75
|
-
this.label = (
|
|
75
|
+
this.label = localizeWithPath('vs/workbench/services/textfile/browser/textFileService', 'textFileModelDecorations', "Text File Model Decorations");
|
|
76
76
|
this._onDidChange = this._register(( new Emitter()));
|
|
77
77
|
this.onDidChange = this._onDidChange.event;
|
|
78
78
|
this.registerListeners();
|
|
@@ -99,20 +99,20 @@ let AbstractTextFileService = class AbstractTextFileService extends Disposable {
|
|
|
99
99
|
color: listErrorForeground,
|
|
100
100
|
letter: Codicon.lockSmall,
|
|
101
101
|
strikethrough: true,
|
|
102
|
-
tooltip: (
|
|
102
|
+
tooltip: localizeWithPath('vs/workbench/services/textfile/browser/textFileService', 'readonlyAndDeleted', "Deleted, Read-only"),
|
|
103
103
|
};
|
|
104
104
|
}
|
|
105
105
|
else if (isReadonly) {
|
|
106
106
|
return {
|
|
107
107
|
letter: Codicon.lockSmall,
|
|
108
|
-
tooltip: (
|
|
108
|
+
tooltip: localizeWithPath('vs/workbench/services/textfile/browser/textFileService', 'readonly', "Read-only"),
|
|
109
109
|
};
|
|
110
110
|
}
|
|
111
111
|
else if (isOrphaned) {
|
|
112
112
|
return {
|
|
113
113
|
color: listErrorForeground,
|
|
114
114
|
strikethrough: true,
|
|
115
|
-
tooltip: (
|
|
115
|
+
tooltip: localizeWithPath('vs/workbench/services/textfile/browser/textFileService', 'deleted', "Deleted"),
|
|
116
116
|
};
|
|
117
117
|
}
|
|
118
118
|
return undefined;
|
|
@@ -165,7 +165,7 @@ let AbstractTextFileService = class AbstractTextFileService extends Disposable {
|
|
|
165
165
|
catch (error) {
|
|
166
166
|
cts.dispose(true);
|
|
167
167
|
if (error.decodeStreamErrorKind === 1 ) {
|
|
168
|
-
throw new TextFileOperationError(
|
|
168
|
+
throw new TextFileOperationError(localizeWithPath('vs/workbench/services/textfile/browser/textFileService', 'fileBinaryError', "File seems to be binary and cannot be opened as text"), 0 , options);
|
|
169
169
|
}
|
|
170
170
|
else {
|
|
171
171
|
throw error;
|
|
@@ -364,21 +364,9 @@ let AbstractTextFileService = class AbstractTextFileService extends Disposable {
|
|
|
364
364
|
async confirmOverwrite(resource) {
|
|
365
365
|
const { confirmed } = await this.dialogService.confirm({
|
|
366
366
|
type: 'warning',
|
|
367
|
-
message: (
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
basename(resource)
|
|
371
|
-
)),
|
|
372
|
-
detail: ( localize(
|
|
373
|
-
'irreversible',
|
|
374
|
-
"A file or folder with the name '{0}' already exists in the folder '{1}'. Replacing it will overwrite its current contents.",
|
|
375
|
-
basename(resource),
|
|
376
|
-
basename(dirname(resource))
|
|
377
|
-
)),
|
|
378
|
-
primaryButton: ( localize(
|
|
379
|
-
{ key: 'replaceButtonLabel', comment: ['&& denotes a mnemonic'] },
|
|
380
|
-
"&&Replace"
|
|
381
|
-
)),
|
|
367
|
+
message: localizeWithPath('vs/workbench/services/textfile/browser/textFileService', 'confirmOverwrite', "'{0}' already exists. Do you want to replace it?", basename(resource)),
|
|
368
|
+
detail: localizeWithPath('vs/workbench/services/textfile/browser/textFileService', 'irreversible', "A file or folder with the name '{0}' already exists in the folder '{1}'. Replacing it will overwrite its current contents.", basename(resource), basename(dirname(resource))),
|
|
369
|
+
primaryButton: localizeWithPath('vs/workbench/services/textfile/browser/textFileService', { key: 'replaceButtonLabel', comment: ['&& denotes a mnemonic'] }, "&&Replace"),
|
|
382
370
|
});
|
|
383
371
|
return confirmed;
|
|
384
372
|
}
|