@codingame/monaco-vscode-api 1.82.6 → 1.83.0-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/api.js +5 -5
- package/assets/index-no-csp.html +2 -1
- package/assets/index.html +3 -2
- package/extensions.js +17 -14
- package/external/xterm/typings/xterm.d.ts +171 -109
- package/missing-services.js +33 -22
- package/monaco-editor-treemending.patch +1745 -1628
- package/monaco-treemending.js +2 -2
- package/monaco.js +2 -2
- package/package.json +2 -2
- package/service-override/extensions.js +10 -11
- package/services.d.ts +1 -1
- package/vscode/src/vs/base/browser/ui/menu/menubar.js +1 -1
- package/vscode/src/vs/base/common/event.d.ts +13 -17
- package/vscode/src/vs/base/common/keyCodes.d.ts +18 -18
- package/vscode/src/vs/base/common/lifecycle.d.ts +9 -0
- package/vscode/src/vs/base/common/observableInternal/base.d.ts +2 -0
- package/vscode/src/vs/base/common/product.d.ts +1 -0
- package/vscode/src/vs/base/parts/ipc/common/ipc.js +6 -2
- package/vscode/src/vs/base/parts/storage/common/storage.d.ts +1 -0
- package/vscode/src/vs/editor/common/config/editorOptions.d.ts +12 -3
- package/vscode/src/vs/editor/common/core/lineRange.d.ts +0 -5
- package/vscode/src/vs/editor/common/core/offsetRange.d.ts +9 -2
- package/vscode/src/vs/editor/common/diff/documentDiffProvider.d.ts +6 -20
- package/vscode/src/vs/editor/common/diff/legacyLinesDiffComputer.d.ts +2 -2
- package/vscode/src/vs/editor/common/diff/linesDiffComputer.d.ts +5 -55
- package/vscode/src/vs/editor/common/diff/rangeMapping.d.ts +55 -0
- package/vscode/src/vs/editor/common/languages.d.ts +7 -10
- package/vscode/src/vs/editor/common/model.d.ts +1 -1
- package/vscode/src/vs/platform/actions/common/actions.d.ts +1 -0
- package/vscode/src/vs/platform/extensionManagement/common/extensionNls.js +5 -5
- package/vscode/src/vs/platform/files/common/fileService.js +46 -40
- package/vscode/src/vs/platform/files/common/files.d.ts +46 -1
- package/vscode/src/vs/platform/files/common/inMemoryFilesystemProvider.js +45 -0
- package/vscode/src/vs/platform/storage/common/storage.d.ts +5 -0
- package/vscode/src/vs/platform/storage/common/storage.js +4 -0
- package/vscode/src/vs/platform/telemetry/common/telemetryUtils.js +4 -1
- package/vscode/src/vs/platform/terminal/common/terminal.js +1 -3
- package/vscode/src/vs/platform/tunnel/common/tunnel.d.ts +1 -1
- package/vscode/src/vs/platform/userDataProfile/common/userDataProfile.d.ts +1 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadChat.js +11 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents.js +50 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadChatSlashCommands.js +3 -2
- package/vscode/src/vs/workbench/api/browser/mainThreadComments.js +16 -11
- package/vscode/src/vs/workbench/api/browser/mainThreadDebugService.js +20 -6
- package/vscode/src/vs/workbench/api/browser/mainThreadEditor.js +2 -2
- package/vscode/src/vs/workbench/api/browser/mainThreadEditorTabs.js +1 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadEditors.js +8 -8
- package/vscode/src/vs/workbench/api/browser/mainThreadExtensionService.js +3 -2
- package/vscode/src/vs/workbench/api/browser/mainThreadSCM.js +93 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadSecretState.js +3 -166
- package/vscode/src/vs/workbench/api/browser/mainThreadTask.js +3 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadTreeViews.js +18 -11
- package/vscode/src/vs/workbench/api/common/extHost.api.impl.js +14 -9
- package/vscode/src/vs/workbench/api/common/extHost.protocol.js +2 -1
- package/vscode/src/vs/workbench/api/common/extHostApiCommands.js +11 -2
- package/vscode/src/vs/workbench/api/common/extHostChat.js +10 -1
- package/vscode/src/vs/workbench/api/common/extHostChatAgents.js +62 -0
- package/vscode/src/vs/workbench/api/common/extHostChatSlashCommand.js +13 -4
- package/vscode/src/vs/workbench/api/common/extHostCommands.js +4 -4
- package/vscode/src/vs/workbench/api/common/extHostComments.js +1 -1
- package/vscode/src/vs/workbench/api/common/extHostExtensionService.js +36 -4
- package/vscode/src/vs/workbench/api/common/extHostInlineChat.js +6 -29
- package/vscode/src/vs/workbench/api/common/extHostLanguageFeatures.js +24 -12
- package/vscode/src/vs/workbench/api/common/extHostNotebookKernels.js +0 -2
- package/vscode/src/vs/workbench/api/common/extHostRequireInterceptor.js +0 -63
- package/vscode/src/vs/workbench/api/common/extHostSCM.js +80 -0
- package/vscode/src/vs/workbench/api/common/extHostTerminalService.js +24 -0
- package/vscode/src/vs/workbench/api/common/extHostTesting.js +14 -10
- package/vscode/src/vs/workbench/api/common/extHostTextEditor.js +4 -4
- package/vscode/src/vs/workbench/api/common/extHostTreeViews.js +11 -7
- package/vscode/src/vs/workbench/api/common/extHostTypeConverters.js +34 -16
- package/vscode/src/vs/workbench/api/common/extHostTypes.js +31 -13
- package/vscode/src/vs/workbench/api/common/extHostWebview.js +14 -2
- package/vscode/src/vs/workbench/api/common/extHostWebviewPanels.js +11 -5
- package/vscode/src/vs/workbench/api/common/extensionHostMain.js +1 -1
- package/vscode/src/vs/workbench/browser/actions/layoutActions.js +32 -9
- package/vscode/src/vs/workbench/browser/actions/quickAccessActions.js +3 -1
- package/vscode/src/vs/workbench/browser/codeeditor.js +1 -1
- package/vscode/src/vs/workbench/browser/dnd.js +7 -6
- package/vscode/src/vs/workbench/browser/media/part.css.js +1 -1
- package/vscode/src/vs/workbench/browser/parts/editor/editor.contribution.js +7 -10
- package/vscode/src/vs/workbench/browser/parts/editor/editor.js +7 -1
- package/vscode/src/vs/workbench/browser/parts/editor/editorActions.js +9 -3
- package/vscode/src/vs/workbench/browser/parts/editor/editorAutoSave.js +1 -1
- package/vscode/src/vs/workbench/browser/parts/editor/editorCommands.js +9 -2
- package/vscode/src/vs/workbench/browser/parts/editor/editorStatus.js +44 -14
- package/vscode/src/vs/workbench/browser/parts/editor/media/editorplaceholder.css.js +1 -1
- package/vscode/src/vs/workbench/browser/parts/editor/textDiffEditor.js +3 -19
- package/vscode/src/vs/workbench/browser/parts/editor/textResourceEditor.js +1 -1
- package/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands.js +9 -3
- package/vscode/src/vs/workbench/browser/parts/statusbar/statusbarPart.d.ts +1 -1
- package/vscode/src/vs/workbench/browser/parts/titlebar/menubarControl.js +10 -9
- package/vscode/src/vs/workbench/browser/parts/views/viewFilter.js +2 -0
- package/vscode/src/vs/workbench/browser/parts/views/viewPane.js +2 -2
- package/vscode/src/vs/workbench/browser/parts/views/viewPaneContainer.js +6 -5
- package/vscode/src/vs/workbench/browser/web.api.d.ts +0 -6
- package/vscode/src/vs/workbench/browser/workbench.contribution.js +34 -3
- package/vscode/src/vs/workbench/common/contextkeys.js +2 -1
- package/vscode/src/vs/workbench/common/editor/editorGroupModel.js +4 -4
- package/vscode/src/vs/workbench/common/editor/editorInput.d.ts +0 -1
- package/vscode/src/vs/workbench/common/editor/editorInput.js +2 -4
- package/vscode/src/vs/workbench/common/editor/editorModel.d.ts +0 -1
- package/vscode/src/vs/workbench/common/editor/editorModel.js +1 -3
- package/vscode/src/vs/workbench/common/editor.d.ts +2 -0
- package/vscode/src/vs/workbench/common/theme.js +21 -1
- package/vscode/src/vs/workbench/common/views.d.ts +1 -1
- package/vscode/src/vs/workbench/common/views.js +1 -2
- package/vscode/src/vs/workbench/contrib/accessibility/browser/accessibilityConfiguration.js +12 -4
- package/vscode/src/vs/workbench/contrib/accessibility/browser/accessibilityContributions.js +335 -0
- package/vscode/src/vs/workbench/contrib/accessibility/browser/accessibleView.js +81 -27
- package/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditService.js +1 -1
- package/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkTextEdits.js +22 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatActions.js +2 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatAgents.js +136 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatModel.js +14 -3
- package/vscode/src/vs/workbench/contrib/chat/common/chatSlashCommands.js +78 -1
- package/vscode/src/vs/workbench/contrib/codeActions/browser/codeActionsContribution.js +43 -17
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/diffEditorHelper.js +30 -26
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/largeFileOptimizations.js +1 -1
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/saveParticipants.js +23 -18
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleWordWrap.js +8 -8
- package/vscode/src/vs/workbench/contrib/comments/browser/commentNode.js +55 -20
- package/vscode/src/vs/workbench/contrib/comments/browser/commentReply.js +26 -10
- package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadBody.js +7 -6
- package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadWidget.js +58 -9
- package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadZoneWidget.js +9 -6
- package/vscode/src/vs/workbench/contrib/comments/browser/comments.contribution.js +171 -0
- package/vscode/src/vs/workbench/contrib/comments/browser/commentsController.js +204 -33
- package/vscode/src/vs/workbench/contrib/comments/browser/commentsTreeViewer.js +3 -7
- package/vscode/src/vs/workbench/contrib/comments/browser/commentsView.js +2 -2
- package/vscode/src/vs/workbench/contrib/comments/browser/media/review.css.js +1 -1
- package/vscode/src/vs/workbench/contrib/comments/browser/simpleCommentEditor.js +21 -4
- package/vscode/src/vs/workbench/contrib/comments/common/commentContextKeys.js +22 -0
- package/vscode/src/vs/workbench/contrib/debug/common/debug.d.ts +5 -2
- package/vscode/src/vs/workbench/contrib/debug/common/debugUtils.js +2 -1
- package/vscode/src/vs/workbench/contrib/files/browser/explorerViewlet.js +1 -1
- package/vscode/src/vs/workbench/contrib/files/browser/fileImportExport.js +2 -2
- package/vscode/src/vs/workbench/contrib/files/browser/files.contribution.js +4 -4
- package/vscode/src/vs/workbench/contrib/files/browser/views/emptyView.js +1 -1
- package/vscode/src/vs/workbench/contrib/files/browser/views/explorerViewer.js +7 -4
- package/vscode/src/vs/workbench/contrib/files/browser/views/openEditorsView.js +2 -1
- package/vscode/src/vs/workbench/contrib/files/common/files.js +7 -5
- package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeEditorInputModel.js +2 -2
- package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/diffComputer.js +2 -2
- package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/mapping.js +2 -1
- package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/mergeEditorModel.js +17 -17
- package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/textModelDiffs.js +2 -2
- package/vscode/src/vs/workbench/contrib/notebook/common/notebookCommon.js +4 -1
- package/vscode/src/vs/workbench/contrib/output/browser/output.contribution.js +22 -19
- package/vscode/src/vs/workbench/contrib/output/browser/outputServices.js +2 -38
- package/vscode/src/vs/workbench/contrib/preferences/common/preferences.js +14 -1
- package/vscode/src/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.js +3 -8
- package/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator.js +10 -12
- package/vscode/src/vs/workbench/contrib/snippets/browser/tabCompletion.js +2 -2
- package/vscode/src/vs/workbench/contrib/terminal/browser/xterm/xtermTerminal.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/terminal/common/terminalContextKey.js +0 -16
- package/vscode/src/vs/workbench/contrib/testing/common/observableValue.js +2 -1
- package/vscode/src/vs/workbench/contrib/testing/common/testResult.js +8 -6
- package/vscode/src/vs/workbench/services/actions/common/menusExtensionPoint.js +2 -4
- package/vscode/src/vs/workbench/services/authentication/browser/authenticationService.js +2 -4
- package/vscode/src/vs/workbench/services/decorations/browser/decorationsService.js +7 -3
- package/vscode/src/vs/workbench/services/editor/common/editorGroupsService.d.ts +2 -6
- package/vscode/src/vs/workbench/services/extensions/browser/extensionService.js +18 -20
- package/vscode/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.js +9 -13
- package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.d.ts +2 -1
- package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.js +47 -15
- package/vscode/src/vs/workbench/services/extensions/common/extensionDescriptionRegistry.d.ts +14 -4
- package/vscode/src/vs/workbench/services/extensions/common/extensionDescriptionRegistry.js +22 -3
- package/vscode/src/vs/workbench/services/extensions/common/extensionHostManager.d.ts +1 -1
- package/vscode/src/vs/workbench/services/extensions/common/extensionHostManager.js +15 -14
- package/vscode/src/vs/workbench/services/extensions/common/extensionHostProtocol.d.ts +12 -7
- package/vscode/src/vs/workbench/services/extensions/common/extensions.d.ts +10 -6
- package/vscode/src/vs/workbench/services/extensions/common/extensions.js +27 -11
- package/vscode/src/vs/workbench/services/extensions/common/extensionsApiProposals.js +2 -5
- package/vscode/src/vs/workbench/services/extensions/common/remoteExtensionHost.js +7 -11
- package/vscode/src/vs/workbench/services/extensions/common/rpcProtocol.js +20 -4
- package/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.js +24 -16
- package/vscode/src/vs/workbench/services/output/common/output.js +1 -2
- package/vscode/src/vs/workbench/services/preferences/common/preferences.d.ts +6 -6
- package/vscode/src/vs/workbench/services/preferences/common/preferences.js +4 -3
- package/vscode/src/vs/workbench/services/preferences/common/preferencesModels.d.ts +0 -1
- package/vscode/src/vs/workbench/services/search/common/fileSearchManager.js +3 -1
- package/vscode/src/vs/workbench/services/search/common/search.js +2 -1
- package/vscode/src/vs/workbench/services/search/common/textSearchManager.js +1 -2
- package/vscode/src/vs/workbench/services/textfile/common/textFileEditorModel.js +2 -2
- package/vscode/src/vs/workbench/services/userDataProfile/common/userDataProfileService.js +3 -8
- package/vscode/src/vs/workbench/services/workingCopy/common/resourceWorkingCopy.js +3 -4
- package/vscode/src/vs/workbench/services/workingCopy/common/storedFileWorkingCopySaveParticipant.js +1 -0
- package/vscode/src/vs/workbench/services/workingCopy/common/workingCopyBackupService.js +2 -1
- package/vscode/src/vs/workbench/services/workingCopy/common/workingCopyService.js +4 -2
- package/vscode/src/vs/editor/browser/widget/diffEditorWidget2/diffEditorWidget2.contribution.js +0 -180
- package/vscode/src/vs/platform/credentials/common/credentials.d.ts +0 -13
- package/vscode/src/vs/platform/credentials/common/credentials.js +0 -3
- package/vscode/src/vs/workbench/api/browser/mainThreadKeytar.js +0 -31
- package/vscode/src/vs/workbench/browser/iframe.js +0 -16
- package/vscode/src/vs/workbench/browser/parts/editor/accessibilityStatus.js +0 -90
- package/vscode/src/vs/workbench/browser/parts/editor/tabFocus.js +0 -77
- package/vscode/src/vs/workbench/contrib/output/browser/logViewer.js +0 -67
|
@@ -5,6 +5,7 @@ import { Emitter } from 'monaco-editor/esm/vs/base/common/event.js';
|
|
|
5
5
|
import { Disposable } from 'monaco-editor/esm/vs/base/common/lifecycle.js';
|
|
6
6
|
import { Schemas } from 'monaco-editor/esm/vs/base/common/network.js';
|
|
7
7
|
import * as performance from 'monaco-editor/esm/vs/base/common/performance.js';
|
|
8
|
+
import { isCI } from 'monaco-editor/esm/vs/base/common/platform.js';
|
|
8
9
|
import { isEqualOrParent } from 'monaco-editor/esm/vs/base/common/resources.js';
|
|
9
10
|
import { StopWatch } from 'monaco-editor/esm/vs/base/common/stopwatch.js';
|
|
10
11
|
import * as nls from 'monaco-editor/esm/vs/nls.js';
|
|
@@ -109,10 +110,16 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
|
|
|
109
110
|
toRemove.push(extension);
|
|
110
111
|
}
|
|
111
112
|
}
|
|
113
|
+
if (isCI) {
|
|
114
|
+
this._logService.info(`AbstractExtensionService.onEnablementChanged fired for ${( ( extensions.map(e => e.identifier.id))).join(', ')}`);
|
|
115
|
+
}
|
|
112
116
|
this._handleDeltaExtensions(( (new DeltaExtensionsQueueItem(toAdd, toRemove))));
|
|
113
117
|
}));
|
|
114
118
|
this._register(this._extensionManagementService.onDidChangeProfile(({ added, removed }) => {
|
|
115
119
|
if (added.length || removed.length) {
|
|
120
|
+
if (isCI) {
|
|
121
|
+
this._logService.info(`AbstractExtensionService.onDidChangeProfile fired`);
|
|
122
|
+
}
|
|
116
123
|
this._handleDeltaExtensions(( (new DeltaExtensionsQueueItem(added, removed))));
|
|
117
124
|
}
|
|
118
125
|
}));
|
|
@@ -124,11 +131,17 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
|
|
|
124
131
|
}
|
|
125
132
|
}
|
|
126
133
|
if (extensions.length) {
|
|
134
|
+
if (isCI) {
|
|
135
|
+
this._logService.info(`AbstractExtensionService.onDidInstallExtensions fired for ${( ( extensions.map(e => e.identifier.id))).join(', ')}`);
|
|
136
|
+
}
|
|
127
137
|
this._handleDeltaExtensions(( (new DeltaExtensionsQueueItem(extensions, []))));
|
|
128
138
|
}
|
|
129
139
|
}));
|
|
130
140
|
this._register(this._extensionManagementService.onDidUninstallExtension((event) => {
|
|
131
141
|
if (!event.error) {
|
|
142
|
+
if (isCI) {
|
|
143
|
+
this._logService.info(`AbstractExtensionService.onDidUninstallExtension fired for ${event.identifier.id}`);
|
|
144
|
+
}
|
|
132
145
|
this._handleDeltaExtensions(( (new DeltaExtensionsQueueItem([], [event.identifier.id]))));
|
|
133
146
|
}
|
|
134
147
|
}));
|
|
@@ -170,6 +183,9 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
|
|
|
170
183
|
}
|
|
171
184
|
}
|
|
172
185
|
async _deltaExtensions(lock, _toAdd, _toRemove) {
|
|
186
|
+
if (isCI) {
|
|
187
|
+
this._logService.info(`AbstractExtensionService._deltaExtensions: toAdd: [${( ( _toAdd.map(e => e.identifier.id))).join(',')}] toRemove: [${( ( _toRemove.map(e => typeof e === 'string' ? e : e.identifier.id))).join(',')}]`);
|
|
188
|
+
}
|
|
173
189
|
let toRemove = [];
|
|
174
190
|
for (let i = 0, len = _toRemove.length; i < len; i++) {
|
|
175
191
|
const extensionOrId = _toRemove[i];
|
|
@@ -216,23 +232,28 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
|
|
|
216
232
|
});
|
|
217
233
|
}
|
|
218
234
|
this._doHandleExtensionPoints([].concat(toAdd).concat(toRemove));
|
|
219
|
-
await this._updateExtensionsOnExtHosts(toAdd, ( (toRemove.map(e => e.identifier))));
|
|
235
|
+
await this._updateExtensionsOnExtHosts(result.versionId, toAdd, ( (toRemove.map(e => e.identifier))));
|
|
220
236
|
for (let i = 0; i < toAdd.length; i++) {
|
|
221
237
|
this._activateAddedExtensionIfNeeded(toAdd[i]);
|
|
222
238
|
}
|
|
223
239
|
}
|
|
224
|
-
async _updateExtensionsOnExtHosts(toAdd, toRemove) {
|
|
240
|
+
async _updateExtensionsOnExtHosts(versionId, toAdd, toRemove) {
|
|
225
241
|
const removedRunningLocation = this._runningLocations.deltaExtensions(toAdd, toRemove);
|
|
226
242
|
const promises = ( (this._extensionHostManagers.map(
|
|
227
|
-
extHostManager => this._updateExtensionsOnExtHost(extHostManager, toAdd, toRemove, removedRunningLocation)
|
|
243
|
+
extHostManager => this._updateExtensionsOnExtHost(extHostManager, versionId, toAdd, toRemove, removedRunningLocation)
|
|
228
244
|
)));
|
|
229
245
|
await Promise.all(promises);
|
|
230
246
|
}
|
|
231
|
-
async _updateExtensionsOnExtHost(extensionHostManager, toAdd, toRemove, removedRunningLocation) {
|
|
247
|
+
async _updateExtensionsOnExtHost(extensionHostManager, versionId, toAdd, toRemove, removedRunningLocation) {
|
|
232
248
|
const myToAdd = this._runningLocations.filterByExtensionHostManager(toAdd, extensionHostManager);
|
|
233
249
|
const myToRemove = filterExtensionIdentifiers(toRemove, removedRunningLocation, extRunningLocation => extensionHostManager.representsRunningLocation(extRunningLocation));
|
|
234
250
|
const addActivationEvents = ImplicitActivationEvents.createActivationEventsMap(toAdd);
|
|
235
|
-
|
|
251
|
+
if (isCI) {
|
|
252
|
+
const printExtIds = (extensions) => ( (extensions.map(e => e.identifier.value))).join(',');
|
|
253
|
+
const printIds = (extensions) => ( (extensions.map(e => e.value))).join(',');
|
|
254
|
+
this._logService.info(`AbstractExtensionService: Calling deltaExtensions: toRemove: [${printIds(toRemove)}], toAdd: [${printExtIds(toAdd)}], myToRemove: [${printIds(myToRemove)}], myToAdd: [${printExtIds(myToAdd)}],`);
|
|
255
|
+
}
|
|
256
|
+
await extensionHostManager.deltaExtensions({ versionId, toRemove, toAdd, addActivationEvents, myToRemove, myToAdd: ( (myToAdd.map(extension => extension.identifier))) });
|
|
236
257
|
}
|
|
237
258
|
canAddExtension(extension) {
|
|
238
259
|
return this._canAddExtension(extension, []);
|
|
@@ -324,11 +345,11 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
|
|
|
324
345
|
try {
|
|
325
346
|
const resolvedExtensions = await this._resolveExtensions();
|
|
326
347
|
this._processExtensions(lock, resolvedExtensions);
|
|
327
|
-
const
|
|
348
|
+
const snapshot = this._registry.getSnapshot();
|
|
328
349
|
for (const extHostManager of this._extensionHostManagers) {
|
|
329
350
|
if (extHostManager.startup !== 1 ) {
|
|
330
|
-
const extensions = this._runningLocations.filterByExtensionHostManager(
|
|
331
|
-
extHostManager.start(
|
|
351
|
+
const extensions = this._runningLocations.filterByExtensionHostManager(snapshot.extensions, extHostManager);
|
|
352
|
+
extHostManager.start(snapshot.versionId, snapshot.extensions, ( (extensions.map(extension => extension.identifier))));
|
|
332
353
|
}
|
|
333
354
|
}
|
|
334
355
|
}
|
|
@@ -341,8 +362,8 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
|
|
|
341
362
|
}
|
|
342
363
|
_processExtensions(lock, resolvedExtensions) {
|
|
343
364
|
const { allowRemoteExtensionsInLocalWebWorker, hasLocalProcess } = resolvedExtensions;
|
|
344
|
-
const localExtensions = checkEnabledAndProposedAPI(this._extensionEnablementService, this._extensionsProposedApi, resolvedExtensions.local, false);
|
|
345
|
-
let remoteExtensions = checkEnabledAndProposedAPI(this._extensionEnablementService, this._extensionsProposedApi, resolvedExtensions.remote, false);
|
|
365
|
+
const localExtensions = checkEnabledAndProposedAPI(this._logService, this._extensionEnablementService, this._extensionsProposedApi, resolvedExtensions.local, false);
|
|
366
|
+
let remoteExtensions = checkEnabledAndProposedAPI(this._logService, this._extensionEnablementService, this._extensionsProposedApi, resolvedExtensions.remote, false);
|
|
346
367
|
this._runningLocations.initializeRunningLocation(localExtensions, remoteExtensions);
|
|
347
368
|
this._startExtensionHostsIfNecessary(true, []);
|
|
348
369
|
const remoteExtensionsThatNeedToRunLocally = (allowRemoteExtensionsInLocalWebWorker ? this._runningLocations.filterByExtensionHostKind(remoteExtensions, 2 ) : []);
|
|
@@ -386,8 +407,14 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
|
|
|
386
407
|
let exitCode;
|
|
387
408
|
try {
|
|
388
409
|
exitCode = await extensionHostManager.extensionTestsExecute();
|
|
410
|
+
if (isCI) {
|
|
411
|
+
this._logService.info(`Extension host test runner exit code: ${exitCode}`);
|
|
412
|
+
}
|
|
389
413
|
}
|
|
390
414
|
catch (err) {
|
|
415
|
+
if (isCI) {
|
|
416
|
+
this._logService.error(`Extension host test runner error`, err);
|
|
417
|
+
}
|
|
391
418
|
console.error(err);
|
|
392
419
|
exitCode = 1 ;
|
|
393
420
|
}
|
|
@@ -746,8 +773,8 @@ let AbstractExtensionService = AbstractExtensionService_1 = class AbstractExtens
|
|
|
746
773
|
get extensions() {
|
|
747
774
|
return this._registry.getAllExtensionDescriptions();
|
|
748
775
|
}
|
|
749
|
-
|
|
750
|
-
return this._installedExtensionsReady.wait().then(() => this.
|
|
776
|
+
_getExtensionRegistrySnapshotWhenReady() {
|
|
777
|
+
return this._installedExtensionsReady.wait().then(() => this._registry.getSnapshot());
|
|
751
778
|
}
|
|
752
779
|
getExtension(id) {
|
|
753
780
|
return this._installedExtensionsReady.wait().then(() => {
|
|
@@ -951,10 +978,10 @@ class DeltaExtensionsQueueItem {
|
|
|
951
978
|
this.toRemove = toRemove;
|
|
952
979
|
}
|
|
953
980
|
}
|
|
954
|
-
function checkEnabledAndProposedAPI(extensionEnablementService, extensionsProposedApi, extensions, ignoreWorkspaceTrust) {
|
|
955
|
-
return filterEnabledExtensions(extensionEnablementService, extensions, ignoreWorkspaceTrust);
|
|
981
|
+
function checkEnabledAndProposedAPI(logService, extensionEnablementService, extensionsProposedApi, extensions, ignoreWorkspaceTrust) {
|
|
982
|
+
return filterEnabledExtensions(logService, extensionEnablementService, extensions, ignoreWorkspaceTrust);
|
|
956
983
|
}
|
|
957
|
-
function filterEnabledExtensions(extensionEnablementService, extensions, ignoreWorkspaceTrust) {
|
|
984
|
+
function filterEnabledExtensions(logService, extensionEnablementService, extensions, ignoreWorkspaceTrust) {
|
|
958
985
|
const enabledExtensions = [], extensionsToCheck = [], mappedExtensions = [];
|
|
959
986
|
for (const extension of extensions) {
|
|
960
987
|
if (extension.isUnderDevelopment) {
|
|
@@ -970,6 +997,11 @@ function filterEnabledExtensions(extensionEnablementService, extensions, ignoreW
|
|
|
970
997
|
if (extensionEnablementService.isEnabledEnablementState(enablementStates[index])) {
|
|
971
998
|
enabledExtensions.push(extensionsToCheck[index]);
|
|
972
999
|
}
|
|
1000
|
+
else {
|
|
1001
|
+
if (isCI) {
|
|
1002
|
+
logService.info(`filterEnabledExtensions: extension '${extensionsToCheck[index].identifier.value}' is disabled`);
|
|
1003
|
+
}
|
|
1004
|
+
}
|
|
973
1005
|
}
|
|
974
1006
|
return enabledExtensions;
|
|
975
1007
|
}
|
package/vscode/src/vs/workbench/services/extensions/common/extensionDescriptionRegistry.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { Event } from '../../../../base/common/event.js';
|
|
2
|
-
import {
|
|
2
|
+
import { IExtensionDescription, ExtensionIdentifier } from '../../../../platform/extensions/common/extensions.js';
|
|
3
3
|
|
|
4
4
|
declare class DeltaExtensionsResult {
|
|
5
|
+
readonly versionId: number;
|
|
5
6
|
readonly removedDueToLooping: IExtensionDescription[];
|
|
6
|
-
constructor(removedDueToLooping: IExtensionDescription[]);
|
|
7
|
+
constructor(versionId: number, removedDueToLooping: IExtensionDescription[]);
|
|
7
8
|
}
|
|
8
9
|
interface IReadOnlyExtensionDescriptionRegistry {
|
|
9
10
|
containsActivationEvent(activationEvent: string): boolean;
|
|
@@ -19,25 +20,34 @@ declare class ExtensionDescriptionRegistry implements IReadOnlyExtensionDescript
|
|
|
19
20
|
static isHostExtension(extensionId: ExtensionIdentifier | string, myRegistry: ExtensionDescriptionRegistry, globalRegistry: ExtensionDescriptionRegistry): boolean;
|
|
20
21
|
private readonly _onDidChange;
|
|
21
22
|
readonly onDidChange: Event<void>;
|
|
23
|
+
private _versionId;
|
|
22
24
|
private _extensionDescriptions;
|
|
23
25
|
private _extensionsMap;
|
|
24
26
|
private _extensionsArr;
|
|
25
27
|
private _activationMap;
|
|
26
28
|
constructor(_activationEventsReader: IActivationEventsReader, extensionDescriptions: IExtensionDescription[]);
|
|
27
29
|
private _initialize;
|
|
28
|
-
set(extensionDescriptions: IExtensionDescription[]):
|
|
30
|
+
set(extensionDescriptions: IExtensionDescription[]): {
|
|
31
|
+
versionId: number;
|
|
32
|
+
};
|
|
29
33
|
deltaExtensions(toAdd: IExtensionDescription[], toRemove: ExtensionIdentifier[]): DeltaExtensionsResult;
|
|
30
34
|
private static _findLoopingExtensions;
|
|
31
35
|
containsActivationEvent(activationEvent: string): boolean;
|
|
32
36
|
containsExtension(extensionId: ExtensionIdentifier): boolean;
|
|
33
37
|
getExtensionDescriptionsForActivationEvent(activationEvent: string): IExtensionDescription[];
|
|
34
38
|
getAllExtensionDescriptions(): IExtensionDescription[];
|
|
39
|
+
getSnapshot(): ExtensionDescriptionRegistrySnapshot;
|
|
35
40
|
getExtensionDescription(extensionId: ExtensionIdentifier | string): IExtensionDescription | undefined;
|
|
36
41
|
getExtensionDescriptionByUUID(uuid: string): IExtensionDescription | undefined;
|
|
37
42
|
getExtensionDescriptionByIdOrUUID(extensionId: ExtensionIdentifier | string, uuid: string | undefined): IExtensionDescription | undefined;
|
|
38
43
|
}
|
|
44
|
+
declare class ExtensionDescriptionRegistrySnapshot {
|
|
45
|
+
readonly versionId: number;
|
|
46
|
+
readonly extensions: readonly IExtensionDescription[];
|
|
47
|
+
constructor(versionId: number, extensions: readonly IExtensionDescription[]);
|
|
48
|
+
}
|
|
39
49
|
interface IActivationEventsReader {
|
|
40
50
|
readActivationEvents(extensionDescription: IExtensionDescription): string[] | undefined;
|
|
41
51
|
}
|
|
42
52
|
|
|
43
|
-
export { DeltaExtensionsResult, ExtensionDescriptionRegistry, type IActivationEventsReader, type IReadOnlyExtensionDescriptionRegistry };
|
|
53
|
+
export { DeltaExtensionsResult, ExtensionDescriptionRegistry, ExtensionDescriptionRegistrySnapshot, type IActivationEventsReader, type IReadOnlyExtensionDescriptionRegistry };
|
|
@@ -3,7 +3,8 @@ import { Emitter } from 'monaco-editor/esm/vs/base/common/event.js';
|
|
|
3
3
|
import * as path from 'monaco-editor/esm/vs/base/common/path.js';
|
|
4
4
|
import { Disposable, toDisposable } from 'monaco-editor/esm/vs/base/common/lifecycle.js';
|
|
5
5
|
class DeltaExtensionsResult {
|
|
6
|
-
constructor(removedDueToLooping) {
|
|
6
|
+
constructor(versionId, removedDueToLooping) {
|
|
7
|
+
this.versionId = versionId;
|
|
7
8
|
this.removedDueToLooping = removedDueToLooping;
|
|
8
9
|
}
|
|
9
10
|
}
|
|
@@ -25,6 +26,7 @@ class ExtensionDescriptionRegistry {
|
|
|
25
26
|
this._activationEventsReader = _activationEventsReader;
|
|
26
27
|
this._onDidChange = ( new Emitter());
|
|
27
28
|
this.onDidChange = this._onDidChange.event;
|
|
29
|
+
this._versionId = 0;
|
|
28
30
|
this._extensionDescriptions = extensionDescriptions;
|
|
29
31
|
this._initialize();
|
|
30
32
|
}
|
|
@@ -57,7 +59,11 @@ class ExtensionDescriptionRegistry {
|
|
|
57
59
|
set(extensionDescriptions) {
|
|
58
60
|
this._extensionDescriptions = extensionDescriptions;
|
|
59
61
|
this._initialize();
|
|
62
|
+
this._versionId++;
|
|
60
63
|
this._onDidChange.fire(undefined);
|
|
64
|
+
return {
|
|
65
|
+
versionId: this._versionId
|
|
66
|
+
};
|
|
61
67
|
}
|
|
62
68
|
deltaExtensions(toAdd, toRemove) {
|
|
63
69
|
this._extensionDescriptions = removeExtensions(this._extensionDescriptions, toRemove);
|
|
@@ -65,8 +71,9 @@ class ExtensionDescriptionRegistry {
|
|
|
65
71
|
const looping = ExtensionDescriptionRegistry._findLoopingExtensions(this._extensionDescriptions);
|
|
66
72
|
this._extensionDescriptions = removeExtensions(this._extensionDescriptions, ( looping.map(ext => ext.identifier)));
|
|
67
73
|
this._initialize();
|
|
74
|
+
this._versionId++;
|
|
68
75
|
this._onDidChange.fire(undefined);
|
|
69
|
-
return ( new DeltaExtensionsResult(looping));
|
|
76
|
+
return ( new DeltaExtensionsResult(this._versionId, looping));
|
|
70
77
|
}
|
|
71
78
|
static _findLoopingExtensions(extensionDescriptions) {
|
|
72
79
|
const G = new (class {
|
|
@@ -150,6 +157,9 @@ class ExtensionDescriptionRegistry {
|
|
|
150
157
|
getAllExtensionDescriptions() {
|
|
151
158
|
return this._extensionsArr.slice(0);
|
|
152
159
|
}
|
|
160
|
+
getSnapshot() {
|
|
161
|
+
return ( new ExtensionDescriptionRegistrySnapshot(this._versionId, this.getAllExtensionDescriptions()));
|
|
162
|
+
}
|
|
153
163
|
getExtensionDescription(extensionId) {
|
|
154
164
|
const extension = this._extensionsMap.get(extensionId);
|
|
155
165
|
return extension ? extension : undefined;
|
|
@@ -167,6 +177,12 @@ class ExtensionDescriptionRegistry {
|
|
|
167
177
|
?? (uuid ? this.getExtensionDescriptionByUUID(uuid) : undefined));
|
|
168
178
|
}
|
|
169
179
|
}
|
|
180
|
+
class ExtensionDescriptionRegistrySnapshot {
|
|
181
|
+
constructor(versionId, extensions) {
|
|
182
|
+
this.versionId = versionId;
|
|
183
|
+
this.extensions = extensions;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
170
186
|
class LockableExtensionDescriptionRegistry {
|
|
171
187
|
constructor(activationEventsReader) {
|
|
172
188
|
this._lock = ( new Lock());
|
|
@@ -194,6 +210,9 @@ class LockableExtensionDescriptionRegistry {
|
|
|
194
210
|
getAllExtensionDescriptions() {
|
|
195
211
|
return this._actual.getAllExtensionDescriptions();
|
|
196
212
|
}
|
|
213
|
+
getSnapshot() {
|
|
214
|
+
return this._actual.getSnapshot();
|
|
215
|
+
}
|
|
197
216
|
getExtensionDescription(extensionId) {
|
|
198
217
|
return this._actual.getExtensionDescription(extensionId);
|
|
199
218
|
}
|
|
@@ -284,4 +303,4 @@ function removeExtensions(arr, toRemove) {
|
|
|
284
303
|
const toRemoveSet = ( new ExtensionIdentifierSet(toRemove));
|
|
285
304
|
return arr.filter(extension => !( toRemoveSet.has(extension.identifier)));
|
|
286
305
|
}
|
|
287
|
-
export { DeltaExtensionsResult, ExtensionDescriptionRegistry, ExtensionDescriptionRegistryLock, LockableExtensionDescriptionRegistry };
|
|
306
|
+
export { DeltaExtensionsResult, ExtensionDescriptionRegistry, ExtensionDescriptionRegistryLock, ExtensionDescriptionRegistrySnapshot, LockableExtensionDescriptionRegistry };
|
|
@@ -27,7 +27,7 @@ interface IExtensionHostManager {
|
|
|
27
27
|
* Returns `null` if no resolver for `remoteAuthority` is found.
|
|
28
28
|
*/
|
|
29
29
|
getCanonicalURI(remoteAuthority: string, uri: URI): Promise<URI | null>;
|
|
30
|
-
start(allExtensions: IExtensionDescription[], myExtensions: ExtensionIdentifier[]): Promise<void>;
|
|
30
|
+
start(extensionRegistryVersionId: number, allExtensions: readonly IExtensionDescription[], myExtensions: ExtensionIdentifier[]): Promise<void>;
|
|
31
31
|
extensionTestsExecute(): Promise<number>;
|
|
32
32
|
setRemoteEnvironment(env: {
|
|
33
33
|
[key: string]: string | null;
|
|
@@ -312,12 +312,12 @@ let ExtensionHostManager = ExtensionHostManager_1 = class ExtensionHostManager e
|
|
|
312
312
|
}
|
|
313
313
|
return proxy.getCanonicalURI(remoteAuthority, uri);
|
|
314
314
|
}
|
|
315
|
-
async start(allExtensions, myExtensions) {
|
|
315
|
+
async start(extensionRegistryVersionId, allExtensions, myExtensions) {
|
|
316
316
|
const proxy = await this._proxy;
|
|
317
317
|
if (!proxy) {
|
|
318
318
|
return;
|
|
319
319
|
}
|
|
320
|
-
const deltaExtensions = this._extensionHost.extensions.set(allExtensions, myExtensions);
|
|
320
|
+
const deltaExtensions = this._extensionHost.extensions.set(extensionRegistryVersionId, allExtensions, myExtensions);
|
|
321
321
|
return proxy.startExtensionHost(deltaExtensions);
|
|
322
322
|
}
|
|
323
323
|
async extensionTestsExecute() {
|
|
@@ -330,16 +330,19 @@ let ExtensionHostManager = ExtensionHostManager_1 = class ExtensionHostManager e
|
|
|
330
330
|
representsRunningLocation(runningLocation) {
|
|
331
331
|
return this._extensionHost.runningLocation.equals(runningLocation);
|
|
332
332
|
}
|
|
333
|
-
async deltaExtensions(
|
|
333
|
+
async deltaExtensions(incomingExtensionsDelta) {
|
|
334
334
|
const proxy = await this._proxy;
|
|
335
335
|
if (!proxy) {
|
|
336
336
|
return;
|
|
337
337
|
}
|
|
338
|
-
this._extensionHost.extensions.delta(
|
|
339
|
-
|
|
338
|
+
const outgoingExtensionsDelta = this._extensionHost.extensions.delta(incomingExtensionsDelta);
|
|
339
|
+
if (!outgoingExtensionsDelta) {
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
342
|
+
return proxy.deltaExtensions(outgoingExtensionsDelta);
|
|
340
343
|
}
|
|
341
344
|
containsExtension(extensionId) {
|
|
342
|
-
return this._extensionHost.extensions
|
|
345
|
+
return this._extensionHost.extensions?.containsExtension(extensionId) ?? false;
|
|
343
346
|
}
|
|
344
347
|
async setRemoteEnvironment(env) {
|
|
345
348
|
const proxy = await this._proxy;
|
|
@@ -386,7 +389,7 @@ let LazyCreateExtensionHostManager = class LazyCreateExtensionHostManager extend
|
|
|
386
389
|
return this._actual;
|
|
387
390
|
}
|
|
388
391
|
const actual = this._createActual(reason);
|
|
389
|
-
await actual.start(
|
|
392
|
+
await actual.start(this._lazyStartExtensions.versionId, this._lazyStartExtensions.allExtensions, this._lazyStartExtensions.myExtensions);
|
|
390
393
|
return actual;
|
|
391
394
|
}
|
|
392
395
|
async ready() {
|
|
@@ -406,13 +409,12 @@ let LazyCreateExtensionHostManager = class LazyCreateExtensionHostManager extend
|
|
|
406
409
|
this._lazyStartExtensions.delta(extensionsDelta);
|
|
407
410
|
if (extensionsDelta.myToAdd.length > 0) {
|
|
408
411
|
const actual = this._createActual(`contains ${extensionsDelta.myToAdd.length} new extension(s) (installed or enabled): ${( ( extensionsDelta.myToAdd.map(extId => extId.value)))}`);
|
|
409
|
-
|
|
410
|
-
actual.start(toAdd, myToAdd);
|
|
412
|
+
await actual.start(this._lazyStartExtensions.versionId, this._lazyStartExtensions.allExtensions, this._lazyStartExtensions.myExtensions);
|
|
411
413
|
return;
|
|
412
414
|
}
|
|
413
415
|
}
|
|
414
416
|
containsExtension(extensionId) {
|
|
415
|
-
return this._extensionHost.extensions
|
|
417
|
+
return this._extensionHost.extensions?.containsExtension(extensionId) ?? false;
|
|
416
418
|
}
|
|
417
419
|
async activate(extension, reason) {
|
|
418
420
|
await this._startCalled.wait();
|
|
@@ -470,15 +472,14 @@ let LazyCreateExtensionHostManager = class LazyCreateExtensionHostManager extend
|
|
|
470
472
|
}
|
|
471
473
|
throw new Error(`Cannot resolve canonical URI`);
|
|
472
474
|
}
|
|
473
|
-
async start(allExtensions, myExtensions) {
|
|
475
|
+
async start(extensionRegistryVersionId, allExtensions, myExtensions) {
|
|
474
476
|
if (myExtensions.length > 0) {
|
|
475
477
|
const actual = this._createActual(`contains ${myExtensions.length} extension(s): ${( ( myExtensions.map(extId => extId.value)))}.`);
|
|
476
|
-
const result = actual.start(allExtensions, myExtensions);
|
|
478
|
+
const result = actual.start(extensionRegistryVersionId, allExtensions, myExtensions);
|
|
477
479
|
this._startCalled.open();
|
|
478
480
|
return result;
|
|
479
481
|
}
|
|
480
|
-
this._lazyStartExtensions = ( (new ExtensionHostExtensions()));
|
|
481
|
-
this._lazyStartExtensions.set(allExtensions, myExtensions);
|
|
482
|
+
this._lazyStartExtensions = ( (new ExtensionHostExtensions(extensionRegistryVersionId, allExtensions, myExtensions)));
|
|
482
483
|
this._startCalled.open();
|
|
483
484
|
}
|
|
484
485
|
async extensionTestsExecute() {
|
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
import { URI, UriDto, UriComponents } from '../../../../base/common/uri.js';
|
|
2
|
-
import {
|
|
2
|
+
import { IExtensionDescription, ExtensionIdentifier } from '../../../../platform/extensions/common/extensions.js';
|
|
3
3
|
import { LogLevel, ILoggerResource } from '../../../../platform/log/common/log.js';
|
|
4
4
|
import { IRemoteConnectionData } from '../../../../platform/remote/common/remoteAuthorityResolver.js';
|
|
5
5
|
|
|
6
|
+
interface IExtensionDescriptionSnapshot {
|
|
7
|
+
readonly versionId: number;
|
|
8
|
+
readonly allExtensions: IExtensionDescription[];
|
|
9
|
+
readonly activationEvents: {
|
|
10
|
+
[extensionId: string]: string[];
|
|
11
|
+
};
|
|
12
|
+
readonly myExtensions: ExtensionIdentifier[];
|
|
13
|
+
}
|
|
6
14
|
interface IExtensionDescriptionDelta {
|
|
15
|
+
readonly versionId: number;
|
|
7
16
|
readonly toRemove: ExtensionIdentifier[];
|
|
8
17
|
readonly toAdd: IExtensionDescription[];
|
|
9
18
|
readonly addActivationEvents: {
|
|
@@ -22,11 +31,7 @@ interface IExtensionHostInitData {
|
|
|
22
31
|
parentPid: number | 0;
|
|
23
32
|
environment: IEnvironment;
|
|
24
33
|
workspace?: IStaticWorkspaceData | null;
|
|
25
|
-
|
|
26
|
-
[extensionId: string]: string[];
|
|
27
|
-
};
|
|
28
|
-
allExtensions: IExtensionDescription[];
|
|
29
|
-
myExtensions: ExtensionIdentifier[];
|
|
34
|
+
extensions: IExtensionDescriptionSnapshot;
|
|
30
35
|
nlsBaseUrl?: URI;
|
|
31
36
|
telemetryInfo: {
|
|
32
37
|
readonly sessionId: string;
|
|
@@ -85,4 +90,4 @@ declare enum UIKind {
|
|
|
85
90
|
Web = 2
|
|
86
91
|
}
|
|
87
92
|
|
|
88
|
-
export { type IEnvironment, type IExtensionDescriptionDelta, type IExtensionHostInitData, type IStaticWorkspaceData, type MessagePortLike, UIKind };
|
|
93
|
+
export { type IEnvironment, type IExtensionDescriptionDelta, type IExtensionDescriptionSnapshot, type IExtensionHostInitData, type IStaticWorkspaceData, type MessagePortLike, UIKind };
|
|
@@ -4,7 +4,7 @@ import { Event } from '../../../../base/common/event.js';
|
|
|
4
4
|
import Severity from '../../../../base/common/severity.js';
|
|
5
5
|
import { IMessagePassingProtocol } from '../../../../base/parts/ipc/common/ipc.js';
|
|
6
6
|
import { ExtensionHostKind } from './extensionHostKind.js';
|
|
7
|
-
import { IExtensionDescriptionDelta } from './extensionHostProtocol.js';
|
|
7
|
+
import { IExtensionDescriptionSnapshot, IExtensionDescriptionDelta } from './extensionHostProtocol.js';
|
|
8
8
|
import { ExtensionRunningLocation } from './extensionRunningLocation.js';
|
|
9
9
|
import { IExtensionPoint } from './extensionsRegistry.js';
|
|
10
10
|
|
|
@@ -49,7 +49,7 @@ interface IExtensionHost {
|
|
|
49
49
|
* extension will execute or is executing on this extension host.
|
|
50
50
|
* **NOTE**: this will reflect extensions correctly only after `start()` resolves.
|
|
51
51
|
*/
|
|
52
|
-
readonly extensions: ExtensionHostExtensions;
|
|
52
|
+
readonly extensions: ExtensionHostExtensions | null;
|
|
53
53
|
readonly onExit: Event<[number, string | null]>;
|
|
54
54
|
start(): Promise<IMessagePassingProtocol>;
|
|
55
55
|
getInspectPort(): number | undefined;
|
|
@@ -57,12 +57,16 @@ interface IExtensionHost {
|
|
|
57
57
|
dispose(): void;
|
|
58
58
|
}
|
|
59
59
|
declare class ExtensionHostExtensions {
|
|
60
|
+
private _versionId;
|
|
60
61
|
private _allExtensions;
|
|
61
62
|
private _myExtensions;
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
get versionId(): number;
|
|
64
|
+
get allExtensions(): IExtensionDescription[];
|
|
65
|
+
get myExtensions(): ExtensionIdentifier[];
|
|
66
|
+
constructor(versionId: number, allExtensions: readonly IExtensionDescription[], myExtensions: ExtensionIdentifier[]);
|
|
67
|
+
toSnapshot(): IExtensionDescriptionSnapshot;
|
|
68
|
+
set(versionId: number, allExtensions: IExtensionDescription[], myExtensions: ExtensionIdentifier[]): IExtensionDescriptionDelta;
|
|
69
|
+
delta(extensionsDelta: IExtensionDescriptionDelta): IExtensionDescriptionDelta | null;
|
|
66
70
|
containsExtension(extensionId: ExtensionIdentifier): boolean;
|
|
67
71
|
}
|
|
68
72
|
interface ExtensionActivationReason {
|
|
@@ -23,20 +23,32 @@ class MissingExtensionDependency {
|
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
class ExtensionHostExtensions {
|
|
26
|
-
|
|
27
|
-
this.
|
|
28
|
-
|
|
26
|
+
get versionId() {
|
|
27
|
+
return this._versionId;
|
|
28
|
+
}
|
|
29
|
+
get allExtensions() {
|
|
30
|
+
return this._allExtensions;
|
|
31
|
+
}
|
|
32
|
+
get myExtensions() {
|
|
33
|
+
return this._myExtensions;
|
|
29
34
|
}
|
|
30
|
-
|
|
35
|
+
constructor(versionId, allExtensions, myExtensions) {
|
|
36
|
+
this._versionId = versionId;
|
|
37
|
+
this._allExtensions = allExtensions.slice(0);
|
|
38
|
+
this._myExtensions = myExtensions.slice(0);
|
|
39
|
+
}
|
|
40
|
+
toSnapshot() {
|
|
31
41
|
return {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
myToAdd: this._myExtensions
|
|
42
|
+
versionId: this._versionId,
|
|
43
|
+
allExtensions: this._allExtensions,
|
|
44
|
+
myExtensions: this._myExtensions,
|
|
45
|
+
activationEvents: ImplicitActivationEvents.createActivationEventsMap(this._allExtensions)
|
|
37
46
|
};
|
|
38
47
|
}
|
|
39
|
-
set(allExtensions, myExtensions) {
|
|
48
|
+
set(versionId, allExtensions, myExtensions) {
|
|
49
|
+
if (this._versionId > versionId) {
|
|
50
|
+
throw new Error(`ExtensionHostExtensions: invalid versionId ${versionId} (current: ${this._versionId})`);
|
|
51
|
+
}
|
|
40
52
|
const toRemove = [];
|
|
41
53
|
const toAdd = [];
|
|
42
54
|
const myToRemove = [];
|
|
@@ -86,11 +98,14 @@ class ExtensionHostExtensions {
|
|
|
86
98
|
}
|
|
87
99
|
}
|
|
88
100
|
const addActivationEvents = ImplicitActivationEvents.createActivationEventsMap(toAdd);
|
|
89
|
-
const delta = { toRemove, toAdd, addActivationEvents, myToRemove, myToAdd };
|
|
101
|
+
const delta = { versionId, toRemove, toAdd, addActivationEvents, myToRemove, myToAdd };
|
|
90
102
|
this.delta(delta);
|
|
91
103
|
return delta;
|
|
92
104
|
}
|
|
93
105
|
delta(extensionsDelta) {
|
|
106
|
+
if (this._versionId >= extensionsDelta.versionId) {
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
94
109
|
const { toRemove, toAdd, myToRemove, myToAdd } = extensionsDelta;
|
|
95
110
|
const toRemoveSet = ( new ExtensionIdentifierSet(toRemove));
|
|
96
111
|
const myToRemoveSet = ( new ExtensionIdentifierSet(myToRemove));
|
|
@@ -112,6 +127,7 @@ class ExtensionHostExtensions {
|
|
|
112
127
|
for (const extensionId of myToAdd) {
|
|
113
128
|
this._myExtensions.push(extensionId);
|
|
114
129
|
}
|
|
130
|
+
return extensionsDelta;
|
|
115
131
|
}
|
|
116
132
|
containsExtension(extensionId) {
|
|
117
133
|
for (const myExtensionId of this._myExtensions) {
|
|
@@ -4,6 +4,7 @@ const allApiProposals = ( Object.freeze({
|
|
|
4
4
|
authSession: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.authSession.d.ts',
|
|
5
5
|
canonicalUriProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.canonicalUriProvider.d.ts',
|
|
6
6
|
chat: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.chat.d.ts',
|
|
7
|
+
chatAgents: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.chatAgents.d.ts',
|
|
7
8
|
chatProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.chatProvider.d.ts',
|
|
8
9
|
chatRequestAccess: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.chatRequestAccess.d.ts',
|
|
9
10
|
chatSlashCommands: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.chatSlashCommands.d.ts',
|
|
@@ -33,7 +34,6 @@ const allApiProposals = ( Object.freeze({
|
|
|
33
34
|
dropMetadata: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.dropMetadata.d.ts',
|
|
34
35
|
editSessionIdentityProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.editSessionIdentityProvider.d.ts',
|
|
35
36
|
editorInsets: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.editorInsets.d.ts',
|
|
36
|
-
envShellEvent: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.envShellEvent.d.ts',
|
|
37
37
|
extensionRuntime: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.extensionRuntime.d.ts',
|
|
38
38
|
extensionsAny: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.extensionsAny.d.ts',
|
|
39
39
|
externalUriOpener: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.externalUriOpener.d.ts',
|
|
@@ -43,16 +43,13 @@ const allApiProposals = ( Object.freeze({
|
|
|
43
43
|
fsChunks: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.fsChunks.d.ts',
|
|
44
44
|
handleIssueUri: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.handleIssueUri.d.ts',
|
|
45
45
|
idToken: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.idToken.d.ts',
|
|
46
|
-
indentSize: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.indentSize.d.ts',
|
|
47
46
|
inlineCompletionsAdditions: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.inlineCompletionsAdditions.d.ts',
|
|
48
47
|
interactive: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.interactive.d.ts',
|
|
49
48
|
interactiveUserActions: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.interactiveUserActions.d.ts',
|
|
50
49
|
interactiveWindow: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.interactiveWindow.d.ts',
|
|
51
50
|
ipc: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.ipc.d.ts',
|
|
52
|
-
languageConfigurationAutoClosingPairs: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.languageConfigurationAutoClosingPairs.d.ts',
|
|
53
51
|
mappedEditsProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.mappedEditsProvider.d.ts',
|
|
54
52
|
notebookCellExecutionState: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookCellExecutionState.d.ts',
|
|
55
|
-
notebookCodeActions: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookCodeActions.d.ts',
|
|
56
53
|
notebookControllerAffinityHidden: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookControllerAffinityHidden.d.ts',
|
|
57
54
|
notebookDeprecated: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookDeprecated.d.ts',
|
|
58
55
|
notebookExecution: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.notebookExecution.d.ts',
|
|
@@ -69,6 +66,7 @@ const allApiProposals = ( Object.freeze({
|
|
|
69
66
|
resolvers: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.resolvers.d.ts',
|
|
70
67
|
saveEditor: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.saveEditor.d.ts',
|
|
71
68
|
scmActionButton: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.scmActionButton.d.ts',
|
|
69
|
+
scmHistoryProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.scmHistoryProvider.d.ts',
|
|
72
70
|
scmSelectedProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.scmSelectedProvider.d.ts',
|
|
73
71
|
scmTextDocument: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.scmTextDocument.d.ts',
|
|
74
72
|
scmValidation: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.scmValidation.d.ts',
|
|
@@ -77,7 +75,6 @@ const allApiProposals = ( Object.freeze({
|
|
|
77
75
|
tabInputTextMerge: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.tabInputTextMerge.d.ts',
|
|
78
76
|
taskPresentationGroup: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.taskPresentationGroup.d.ts',
|
|
79
77
|
telemetry: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.telemetry.d.ts',
|
|
80
|
-
terminalContextMenu: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.terminalContextMenu.d.ts',
|
|
81
78
|
terminalDataWriteEvent: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.terminalDataWriteEvent.d.ts',
|
|
82
79
|
terminalDimensions: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.terminalDimensions.d.ts',
|
|
83
80
|
terminalExecuteCommandEvent: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.terminalExecuteCommandEvent.d.ts',
|