@codingame/monaco-vscode-edit-sessions-service-override 11.1.2 → 12.0.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/index.d.ts +2 -1
- package/index.js +21 -1
- package/package.json +21 -7
- package/vscode/src/vs/workbench/contrib/editSessions/browser/editSessions.contribution.d.ts +96 -0
- package/vscode/src/vs/workbench/contrib/editSessions/browser/editSessions.contribution.js +171 -173
- package/vscode/src/vs/workbench/contrib/editSessions/browser/editSessionsFileSystemProvider.d.ts +24 -0
- package/vscode/src/vs/workbench/contrib/editSessions/browser/editSessionsFileSystemProvider.js +4 -3
- package/vscode/src/vs/workbench/contrib/editSessions/browser/editSessionsStorageService.d.ts +80 -0
- package/vscode/src/vs/workbench/contrib/editSessions/browser/editSessionsStorageService.js +72 -78
- package/vscode/src/vs/workbench/contrib/editSessions/browser/editSessionsViews.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/editSessions/browser/editSessionsViews.js +58 -68
- package/vscode/src/vs/workbench/contrib/editSessions/common/editSessions.d.ts +52 -0
- package/vscode/src/vs/workbench/contrib/editSessions/common/editSessions.js +13 -12
- package/vscode/src/vs/workbench/contrib/editSessions/common/editSessionsLogService.d.ts +15 -0
- package/vscode/src/vs/workbench/contrib/editSessions/common/editSessionsLogService.js +7 -6
- package/vscode/src/vs/workbench/contrib/editSessions/common/editSessionsStorageClient.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/editSessions/common/editSessionsStorageClient.js +2 -1
- package/vscode/src/vs/workbench/contrib/editSessions/common/workspaceStateSync.d.ts +33 -0
- package/vscode/src/vs/workbench/contrib/editSessions/common/workspaceStateSync.js +10 -7
- package/vscode/src/vs/workbench/services/workspaces/common/editSessionIdentityService.d.ts +21 -0
- package/vscode/src/vs/workbench/services/workspaces/common/editSessionIdentityService.js +3 -1
- package/vscode/src/vs/workbench/services/workspaces/common/workspaceIdentityService.d.ts +13 -0
- package/vscode/src/vs/workbench/services/workspaces/common/workspaceIdentityService.js +3 -1
- package/editSessions.js +0 -20
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
|
|
1
|
+
|
|
2
|
+
import { __decorate, __param } from 'vscode/external/tslib/tslib.es6';
|
|
2
3
|
import { Disposable } from 'vscode/vscode/vs/base/common/lifecycle';
|
|
3
4
|
import { localize } from 'vscode/vscode/vs/nls';
|
|
4
5
|
import { SyncDescriptor } from 'vscode/vscode/vs/platform/instantiation/common/descriptors';
|
|
5
6
|
import { IInstantiationService } from 'vscode/vscode/vs/platform/instantiation/common/instantiation';
|
|
6
7
|
import { Registry } from 'vscode/vscode/vs/platform/registry/common/platform';
|
|
7
|
-
import { TreeView, TreeViewPane } from 'vscode/vscode/vs/workbench/browser/parts/views/treeView';
|
|
8
|
+
import { TreeView, TreeViewPane } from '@codingame/monaco-vscode-4a316137-39d1-5d77-8b53-112db3547c1e-common/vscode/vs/workbench/browser/parts/views/treeView';
|
|
8
9
|
import { Extensions, TreeItemCollapsibleState } from 'vscode/vscode/vs/workbench/common/views';
|
|
9
10
|
import { EDIT_SESSIONS_DATA_VIEW_ID, EDIT_SESSIONS_TITLE, EDIT_SESSIONS_SHOW_VIEW, EDIT_SESSIONS_SCHEME, ChangeType } from '../common/editSessions.js';
|
|
10
11
|
import { IEditSessionsStorageService } from 'vscode/vscode/vs/workbench/contrib/editSessions/common/editSessions.service';
|
|
11
12
|
import { URI } from 'vscode/vscode/vs/base/common/uri';
|
|
12
13
|
import { fromNow } from 'vscode/vscode/vs/base/common/date';
|
|
13
14
|
import { Codicon } from 'vscode/vscode/vs/base/common/codicons';
|
|
14
|
-
import { API_OPEN_EDITOR_COMMAND_ID } from 'vscode/vscode/vs/workbench/browser/parts/editor/editorCommands';
|
|
15
|
+
import { API_OPEN_EDITOR_COMMAND_ID } from '@codingame/monaco-vscode-f48982c4-9e82-55e2-b800-20e6d1e6096f-common/vscode/vs/workbench/browser/parts/editor/editorCommands';
|
|
15
16
|
import { registerAction2, Action2, MenuId } from 'vscode/vscode/vs/platform/actions/common/actions';
|
|
16
17
|
import { RawContextKey, ContextKeyExpr } from 'vscode/vscode/vs/platform/contextkey/common/contextkey';
|
|
17
18
|
import { IContextKeyService } from 'vscode/vscode/vs/platform/contextkey/common/contextkey.service';
|
|
@@ -23,7 +24,7 @@ import { IFileService } from 'vscode/vscode/vs/platform/files/common/files.servi
|
|
|
23
24
|
import { basename } from 'vscode/vscode/vs/base/common/path';
|
|
24
25
|
|
|
25
26
|
const EDIT_SESSIONS_COUNT_KEY = 'editSessionsCount';
|
|
26
|
-
const EDIT_SESSIONS_COUNT_CONTEXT_KEY = (
|
|
27
|
+
const EDIT_SESSIONS_COUNT_CONTEXT_KEY = ( new RawContextKey(EDIT_SESSIONS_COUNT_KEY, 0));
|
|
27
28
|
let EditSessionsDataViews = class EditSessionsDataViews extends Disposable {
|
|
28
29
|
constructor(container, instantiationService) {
|
|
29
30
|
super();
|
|
@@ -36,46 +37,43 @@ let EditSessionsDataViews = class EditSessionsDataViews extends Disposable {
|
|
|
36
37
|
treeView.showCollapseAllAction = true;
|
|
37
38
|
treeView.showRefreshAction = true;
|
|
38
39
|
treeView.dataProvider = this.instantiationService.createInstance(EditSessionDataViewDataProvider);
|
|
39
|
-
const viewsRegistry = (
|
|
40
|
+
const viewsRegistry = ( Registry.as(Extensions.ViewsRegistry));
|
|
40
41
|
viewsRegistry.registerViews([{
|
|
41
42
|
id: viewId,
|
|
42
43
|
name: EDIT_SESSIONS_TITLE,
|
|
43
|
-
ctorDescriptor: (
|
|
44
|
+
ctorDescriptor: ( new SyncDescriptor(TreeViewPane)),
|
|
44
45
|
canToggleVisibility: true,
|
|
45
46
|
canMoveView: false,
|
|
46
47
|
treeView,
|
|
47
48
|
collapsed: false,
|
|
48
|
-
when: (
|
|
49
|
+
when: ( ContextKeyExpr.and(EDIT_SESSIONS_SHOW_VIEW)),
|
|
49
50
|
order: 100,
|
|
50
51
|
hideByDefault: true,
|
|
51
52
|
}], container);
|
|
52
53
|
viewsRegistry.registerViewWelcomeContent(viewId, {
|
|
53
54
|
content: ( localize(
|
|
54
|
-
|
|
55
|
+
5701,
|
|
55
56
|
'You have no stored changes in the cloud to display.\n{0}',
|
|
56
|
-
`[${( localize(
|
|
57
|
+
`[${( localize(5702, 'Store Working Changes'))}](command:workbench.editSessions.actions.store)`
|
|
57
58
|
)),
|
|
58
|
-
when: (
|
|
59
|
+
when: ( ContextKeyExpr.equals(EDIT_SESSIONS_COUNT_KEY, 0)),
|
|
59
60
|
order: 1
|
|
60
61
|
});
|
|
61
62
|
this._register(registerAction2(class extends Action2 {
|
|
62
63
|
constructor() {
|
|
63
64
|
super({
|
|
64
65
|
id: 'workbench.editSessions.actions.resume',
|
|
65
|
-
title: ( localize(
|
|
66
|
+
title: ( localize(5703, "Resume Working Changes")),
|
|
66
67
|
icon: Codicon.desktopDownload,
|
|
67
68
|
menu: {
|
|
68
69
|
id: MenuId.ViewItemContext,
|
|
69
|
-
when: (
|
|
70
|
-
(ContextKeyExpr.equals('view', viewId)),
|
|
71
|
-
(ContextKeyExpr.regex('viewItem', /edit-session/i))
|
|
72
|
-
))),
|
|
70
|
+
when: ( ContextKeyExpr.and(( ContextKeyExpr.equals('view', viewId)), ( ContextKeyExpr.regex('viewItem', /edit-session/i)))),
|
|
73
71
|
group: 'inline'
|
|
74
72
|
}
|
|
75
73
|
});
|
|
76
74
|
}
|
|
77
75
|
async run(accessor, handle) {
|
|
78
|
-
const editSessionId = (
|
|
76
|
+
const editSessionId = ( URI.parse(handle.$treeItemHandle)).path.substring(1);
|
|
79
77
|
const commandService = accessor.get(ICommandService);
|
|
80
78
|
await commandService.executeCommand('workbench.editSessions.actions.resumeLatest', editSessionId, true);
|
|
81
79
|
await treeView.refresh();
|
|
@@ -85,7 +83,7 @@ let EditSessionsDataViews = class EditSessionsDataViews extends Disposable {
|
|
|
85
83
|
constructor() {
|
|
86
84
|
super({
|
|
87
85
|
id: 'workbench.editSessions.actions.store',
|
|
88
|
-
title: ( localize(
|
|
86
|
+
title: ( localize(5704, "Store Working Changes")),
|
|
89
87
|
icon: Codicon.cloudUpload,
|
|
90
88
|
});
|
|
91
89
|
}
|
|
@@ -99,29 +97,26 @@ let EditSessionsDataViews = class EditSessionsDataViews extends Disposable {
|
|
|
99
97
|
constructor() {
|
|
100
98
|
super({
|
|
101
99
|
id: 'workbench.editSessions.actions.delete',
|
|
102
|
-
title: ( localize(
|
|
100
|
+
title: ( localize(5705, "Delete Working Changes")),
|
|
103
101
|
icon: Codicon.trash,
|
|
104
102
|
menu: {
|
|
105
103
|
id: MenuId.ViewItemContext,
|
|
106
|
-
when: (
|
|
107
|
-
(ContextKeyExpr.equals('view', viewId)),
|
|
108
|
-
(ContextKeyExpr.regex('viewItem', /edit-session/i))
|
|
109
|
-
))),
|
|
104
|
+
when: ( ContextKeyExpr.and(( ContextKeyExpr.equals('view', viewId)), ( ContextKeyExpr.regex('viewItem', /edit-session/i)))),
|
|
110
105
|
group: 'inline'
|
|
111
106
|
}
|
|
112
107
|
});
|
|
113
108
|
}
|
|
114
109
|
async run(accessor, handle) {
|
|
115
|
-
const editSessionId = (
|
|
110
|
+
const editSessionId = ( URI.parse(handle.$treeItemHandle)).path.substring(1);
|
|
116
111
|
const dialogService = accessor.get(IDialogService);
|
|
117
112
|
const editSessionStorageService = accessor.get(IEditSessionsStorageService);
|
|
118
113
|
const result = await dialogService.confirm({
|
|
119
114
|
message: ( localize(
|
|
120
|
-
|
|
115
|
+
5706,
|
|
121
116
|
'Are you sure you want to permanently delete your working changes with ref {0}?',
|
|
122
117
|
editSessionId
|
|
123
118
|
)),
|
|
124
|
-
detail: ( localize(
|
|
119
|
+
detail: ( localize(5707, ' You cannot undo this action.')),
|
|
125
120
|
type: 'warning',
|
|
126
121
|
title: EDIT_SESSIONS_TITLE.value
|
|
127
122
|
});
|
|
@@ -135,14 +130,11 @@ let EditSessionsDataViews = class EditSessionsDataViews extends Disposable {
|
|
|
135
130
|
constructor() {
|
|
136
131
|
super({
|
|
137
132
|
id: 'workbench.editSessions.actions.deleteAll',
|
|
138
|
-
title: ( localize(
|
|
133
|
+
title: ( localize(5708, "Delete All Working Changes from Cloud")),
|
|
139
134
|
icon: Codicon.trash,
|
|
140
135
|
menu: {
|
|
141
136
|
id: MenuId.ViewTitle,
|
|
142
|
-
when: (
|
|
143
|
-
(ContextKeyExpr.equals('view', viewId)),
|
|
144
|
-
ContextKeyExpr.greater(EDIT_SESSIONS_COUNT_KEY, 0)
|
|
145
|
-
))),
|
|
137
|
+
when: ( ContextKeyExpr.and(( ContextKeyExpr.equals('view', viewId)), ContextKeyExpr.greater(EDIT_SESSIONS_COUNT_KEY, 0))),
|
|
146
138
|
}
|
|
147
139
|
});
|
|
148
140
|
}
|
|
@@ -151,10 +143,10 @@ let EditSessionsDataViews = class EditSessionsDataViews extends Disposable {
|
|
|
151
143
|
const editSessionStorageService = accessor.get(IEditSessionsStorageService);
|
|
152
144
|
const result = await dialogService.confirm({
|
|
153
145
|
message: ( localize(
|
|
154
|
-
|
|
146
|
+
5709,
|
|
155
147
|
'Are you sure you want to permanently delete all stored changes from the cloud?'
|
|
156
148
|
)),
|
|
157
|
-
detail: ( localize(
|
|
149
|
+
detail: ( localize(5710, ' You cannot undo this action.')),
|
|
158
150
|
type: 'warning',
|
|
159
151
|
title: EDIT_SESSIONS_TITLE.value
|
|
160
152
|
});
|
|
@@ -166,9 +158,9 @@ let EditSessionsDataViews = class EditSessionsDataViews extends Disposable {
|
|
|
166
158
|
}));
|
|
167
159
|
}
|
|
168
160
|
};
|
|
169
|
-
EditSessionsDataViews = (
|
|
170
|
-
(
|
|
171
|
-
], EditSessionsDataViews))
|
|
161
|
+
EditSessionsDataViews = ( __decorate([
|
|
162
|
+
( __param(1, IInstantiationService))
|
|
163
|
+
], EditSessionsDataViews));
|
|
172
164
|
let EditSessionDataViewDataProvider = class EditSessionDataViewDataProvider {
|
|
173
165
|
constructor(editSessionsStorageService, contextKeyService, workspaceContextService, fileService) {
|
|
174
166
|
this.editSessionsStorageService = editSessionsStorageService;
|
|
@@ -181,7 +173,7 @@ let EditSessionDataViewDataProvider = class EditSessionDataViewDataProvider {
|
|
|
181
173
|
if (!element) {
|
|
182
174
|
return this.getAllEditSessions();
|
|
183
175
|
}
|
|
184
|
-
const [ref, folderName, filePath] = (
|
|
176
|
+
const [ref, folderName, filePath] = ( URI.parse(element.handle)).path.substring(1).split('/');
|
|
185
177
|
if (ref && !folderName) {
|
|
186
178
|
return this.getEditSession(ref);
|
|
187
179
|
}
|
|
@@ -195,20 +187,20 @@ let EditSessionDataViewDataProvider = class EditSessionDataViewDataProvider {
|
|
|
195
187
|
this.editSessionsCount.set(allEditSessions.length);
|
|
196
188
|
const editSessions = [];
|
|
197
189
|
for (const session of allEditSessions) {
|
|
198
|
-
const resource = (
|
|
190
|
+
const resource = ( URI.from(
|
|
199
191
|
{ scheme: EDIT_SESSIONS_SCHEME, authority: 'remote-session-content', path: `/${session.ref}` }
|
|
200
|
-
))
|
|
192
|
+
));
|
|
201
193
|
const sessionData = await this.editSessionsStorageService.read('editSessions', session.ref);
|
|
202
194
|
if (!sessionData) {
|
|
203
195
|
continue;
|
|
204
196
|
}
|
|
205
197
|
const content = JSON.parse(sessionData.content);
|
|
206
|
-
const label = (
|
|
198
|
+
const label = ( content.folders.map((folder) => folder.name)).join(', ') ?? session.ref;
|
|
207
199
|
const machineId = content.machine;
|
|
208
200
|
const machineName = machineId ? await this.editSessionsStorageService.getMachineById(machineId) : undefined;
|
|
209
201
|
const description = machineName === undefined ? fromNow(session.created, true) : `${fromNow(session.created, true)}\u00a0\u00a0\u2022\u00a0\u00a0${machineName}`;
|
|
210
202
|
editSessions.push({
|
|
211
|
-
handle: (
|
|
203
|
+
handle: ( resource.toString()),
|
|
212
204
|
collapsibleState: TreeItemCollapsibleState.Collapsed,
|
|
213
205
|
label: { label },
|
|
214
206
|
description: description,
|
|
@@ -228,19 +220,17 @@ let EditSessionDataViewDataProvider = class EditSessionDataViewDataProvider {
|
|
|
228
220
|
const folder = content.folders[0];
|
|
229
221
|
return this.getEditSessionFolderContents(ref, folder.name);
|
|
230
222
|
}
|
|
231
|
-
return (
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
}))
|
|
243
|
-
);
|
|
223
|
+
return ( content.folders.map((folder) => {
|
|
224
|
+
const resource = ( URI.from(
|
|
225
|
+
{ scheme: EDIT_SESSIONS_SCHEME, authority: 'remote-session-content', path: `/${data.ref}/${folder.name}` }
|
|
226
|
+
));
|
|
227
|
+
return {
|
|
228
|
+
handle: ( resource.toString()),
|
|
229
|
+
collapsibleState: TreeItemCollapsibleState.Collapsed,
|
|
230
|
+
label: { label: folder.name },
|
|
231
|
+
themeIcon: Codicon.folder
|
|
232
|
+
};
|
|
233
|
+
}));
|
|
244
234
|
}
|
|
245
235
|
async getEditSessionFolderContents(ref, folderName) {
|
|
246
236
|
const data = await this.editSessionsStorageService.read('editSessions', ref);
|
|
@@ -253,26 +243,26 @@ let EditSessionDataViewDataProvider = class EditSessionDataViewDataProvider {
|
|
|
253
243
|
if (!editSessionFolder) {
|
|
254
244
|
return [];
|
|
255
245
|
}
|
|
256
|
-
return Promise.all((
|
|
257
|
-
const cloudChangeUri = (
|
|
246
|
+
return Promise.all(( editSessionFolder.workingChanges.map(async (change) => {
|
|
247
|
+
const cloudChangeUri = ( URI.from(
|
|
258
248
|
{ scheme: EDIT_SESSIONS_SCHEME, authority: 'remote-session-content', path: `/${data.ref}/${folderName}/${change.relativeFilePath}` }
|
|
259
|
-
))
|
|
249
|
+
));
|
|
260
250
|
if (currentWorkspaceFolder?.uri) {
|
|
261
251
|
const localCopy = joinPath(currentWorkspaceFolder.uri, change.relativeFilePath);
|
|
262
252
|
if (change.type === ChangeType.Addition && (await this.fileService.exists(localCopy))) {
|
|
263
253
|
return {
|
|
264
|
-
handle: (
|
|
254
|
+
handle: ( cloudChangeUri.toString()),
|
|
265
255
|
resourceUri: cloudChangeUri,
|
|
266
256
|
collapsibleState: TreeItemCollapsibleState.None,
|
|
267
257
|
label: { label: change.relativeFilePath },
|
|
268
258
|
themeIcon: Codicon.file,
|
|
269
259
|
command: {
|
|
270
260
|
id: 'vscode.diff',
|
|
271
|
-
title: ( localize(
|
|
261
|
+
title: ( localize(5711, 'Compare Changes')),
|
|
272
262
|
arguments: [
|
|
273
263
|
localCopy,
|
|
274
264
|
cloudChangeUri,
|
|
275
|
-
`${basename(change.relativeFilePath)} (${( localize(
|
|
265
|
+
`${basename(change.relativeFilePath)} (${( localize(5712, 'Local Copy'))} \u2194 ${( localize(5713, 'Cloud Changes'))})`,
|
|
276
266
|
undefined
|
|
277
267
|
]
|
|
278
268
|
}
|
|
@@ -280,25 +270,25 @@ let EditSessionDataViewDataProvider = class EditSessionDataViewDataProvider {
|
|
|
280
270
|
}
|
|
281
271
|
}
|
|
282
272
|
return {
|
|
283
|
-
handle: (
|
|
273
|
+
handle: ( cloudChangeUri.toString()),
|
|
284
274
|
resourceUri: cloudChangeUri,
|
|
285
275
|
collapsibleState: TreeItemCollapsibleState.None,
|
|
286
276
|
label: { label: change.relativeFilePath },
|
|
287
277
|
themeIcon: Codicon.file,
|
|
288
278
|
command: {
|
|
289
279
|
id: API_OPEN_EDITOR_COMMAND_ID,
|
|
290
|
-
title: ( localize(
|
|
280
|
+
title: ( localize(5714, 'Open File')),
|
|
291
281
|
arguments: [cloudChangeUri, undefined, undefined]
|
|
292
282
|
}
|
|
293
283
|
};
|
|
294
|
-
})))
|
|
284
|
+
})));
|
|
295
285
|
}
|
|
296
286
|
};
|
|
297
|
-
EditSessionDataViewDataProvider = (
|
|
298
|
-
(
|
|
299
|
-
(
|
|
300
|
-
(
|
|
301
|
-
(
|
|
302
|
-
], EditSessionDataViewDataProvider))
|
|
287
|
+
EditSessionDataViewDataProvider = ( __decorate([
|
|
288
|
+
( __param(0, IEditSessionsStorageService)),
|
|
289
|
+
( __param(1, IContextKeyService)),
|
|
290
|
+
( __param(2, IWorkspaceContextService)),
|
|
291
|
+
( __param(3, IFileService))
|
|
292
|
+
], EditSessionDataViewDataProvider));
|
|
303
293
|
|
|
304
294
|
export { EditSessionsDataViews };
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { VSBuffer } from "vscode/vscode/vs/base/common/buffer";
|
|
2
|
+
import { ILocalizedString } from "vscode/vscode/vs/platform/action/common/action";
|
|
3
|
+
import { RawContextKey } from "vscode/vscode/vs/platform/contextkey/common/contextkey";
|
|
4
|
+
export declare const EDIT_SESSION_SYNC_CATEGORY: import("vscode/vscode/vs/nls").ILocalizedString;
|
|
5
|
+
export type SyncResource = "editSessions" | "workspaceState";
|
|
6
|
+
export declare enum ChangeType {
|
|
7
|
+
Addition = 1,
|
|
8
|
+
Deletion = 2
|
|
9
|
+
}
|
|
10
|
+
export declare enum FileType {
|
|
11
|
+
File = 1
|
|
12
|
+
}
|
|
13
|
+
interface Addition {
|
|
14
|
+
relativeFilePath: string;
|
|
15
|
+
fileType: FileType.File;
|
|
16
|
+
contents: string;
|
|
17
|
+
type: ChangeType.Addition;
|
|
18
|
+
}
|
|
19
|
+
interface Deletion {
|
|
20
|
+
relativeFilePath: string;
|
|
21
|
+
fileType: FileType.File;
|
|
22
|
+
contents: undefined;
|
|
23
|
+
type: ChangeType.Deletion;
|
|
24
|
+
}
|
|
25
|
+
export type Change = Addition | Deletion;
|
|
26
|
+
export interface Folder {
|
|
27
|
+
name: string;
|
|
28
|
+
canonicalIdentity: string | undefined;
|
|
29
|
+
workingChanges: Change[];
|
|
30
|
+
absoluteUri: string | undefined;
|
|
31
|
+
}
|
|
32
|
+
export declare const EditSessionSchemaVersion = 3;
|
|
33
|
+
export interface EditSession {
|
|
34
|
+
version: number;
|
|
35
|
+
workspaceStateId?: string;
|
|
36
|
+
machine?: string;
|
|
37
|
+
folders: Folder[];
|
|
38
|
+
}
|
|
39
|
+
export declare const EDIT_SESSIONS_SIGNED_IN_KEY = "editSessionsSignedIn";
|
|
40
|
+
export declare const EDIT_SESSIONS_SIGNED_IN: RawContextKey<boolean>;
|
|
41
|
+
export declare const EDIT_SESSIONS_PENDING_KEY = "editSessionsPending";
|
|
42
|
+
export declare const EDIT_SESSIONS_PENDING: RawContextKey<boolean>;
|
|
43
|
+
export declare const EDIT_SESSIONS_CONTAINER_ID = "workbench.view.editSessions";
|
|
44
|
+
export declare const EDIT_SESSIONS_DATA_VIEW_ID = "workbench.views.editSessions.data";
|
|
45
|
+
export declare const EDIT_SESSIONS_TITLE: ILocalizedString;
|
|
46
|
+
export declare const EDIT_SESSIONS_VIEW_ICON: import("vscode/vscode/vs/base/common/themables").ThemeIcon;
|
|
47
|
+
export declare const EDIT_SESSIONS_SHOW_VIEW: RawContextKey<boolean>;
|
|
48
|
+
export declare const EDIT_SESSIONS_SCHEME = "vscode-edit-sessions";
|
|
49
|
+
export declare function decodeEditSessionFileContent(version: number, content: string): VSBuffer;
|
|
50
|
+
export declare function hashedEditSessionId(editSessionId: string): string;
|
|
51
|
+
export declare const editSessionsLogId = "editSessions";
|
|
52
|
+
export {};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
|
|
1
2
|
import { decodeBase64, VSBuffer } from 'vscode/vscode/vs/base/common/buffer';
|
|
2
3
|
import { Codicon } from 'vscode/vscode/vs/base/common/codicons';
|
|
3
4
|
import { localize2, localize } from 'vscode/vscode/vs/nls';
|
|
@@ -5,26 +6,26 @@ import { RawContextKey } from 'vscode/vscode/vs/platform/contextkey/common/conte
|
|
|
5
6
|
import { registerIcon } from 'vscode/vscode/vs/platform/theme/common/iconRegistry';
|
|
6
7
|
import { StringSHA1 } from 'vscode/vscode/vs/base/common/hash';
|
|
7
8
|
|
|
8
|
-
const EDIT_SESSION_SYNC_CATEGORY = ( localize2(
|
|
9
|
+
const EDIT_SESSION_SYNC_CATEGORY = ( localize2(5715, 'Cloud Changes'));
|
|
9
10
|
var ChangeType;
|
|
10
|
-
( (
|
|
11
|
+
(function (ChangeType) {
|
|
11
12
|
ChangeType[ChangeType["Addition"] = 1] = "Addition";
|
|
12
13
|
ChangeType[ChangeType["Deletion"] = 2] = "Deletion";
|
|
13
|
-
})(ChangeType || (ChangeType = {}))
|
|
14
|
+
})(ChangeType || (ChangeType = {}));
|
|
14
15
|
var FileType;
|
|
15
|
-
( (
|
|
16
|
+
(function (FileType) {
|
|
16
17
|
FileType[FileType["File"] = 1] = "File";
|
|
17
|
-
})(FileType || (FileType = {}))
|
|
18
|
+
})(FileType || (FileType = {}));
|
|
18
19
|
const EditSessionSchemaVersion = 3;
|
|
19
20
|
const EDIT_SESSIONS_SIGNED_IN_KEY = 'editSessionsSignedIn';
|
|
20
|
-
const EDIT_SESSIONS_SIGNED_IN = (
|
|
21
|
+
const EDIT_SESSIONS_SIGNED_IN = ( new RawContextKey(EDIT_SESSIONS_SIGNED_IN_KEY, false));
|
|
21
22
|
const EDIT_SESSIONS_PENDING_KEY = 'editSessionsPending';
|
|
22
|
-
const EDIT_SESSIONS_PENDING = (
|
|
23
|
+
const EDIT_SESSIONS_PENDING = ( new RawContextKey(EDIT_SESSIONS_PENDING_KEY, false));
|
|
23
24
|
const EDIT_SESSIONS_CONTAINER_ID = 'workbench.view.editSessions';
|
|
24
25
|
const EDIT_SESSIONS_DATA_VIEW_ID = 'workbench.views.editSessions.data';
|
|
25
|
-
const EDIT_SESSIONS_TITLE = ( localize2(
|
|
26
|
-
const EDIT_SESSIONS_VIEW_ICON = registerIcon('edit-sessions-view-icon', Codicon.cloudDownload, ( localize(
|
|
27
|
-
const EDIT_SESSIONS_SHOW_VIEW = (
|
|
26
|
+
const EDIT_SESSIONS_TITLE = ( localize2(5715, 'Cloud Changes'));
|
|
27
|
+
const EDIT_SESSIONS_VIEW_ICON = registerIcon('edit-sessions-view-icon', Codicon.cloudDownload, ( localize(5716, 'View icon of the cloud changes view.')));
|
|
28
|
+
const EDIT_SESSIONS_SHOW_VIEW = ( new RawContextKey('editSessionsShowView', false));
|
|
28
29
|
const EDIT_SESSIONS_SCHEME = 'vscode-edit-sessions';
|
|
29
30
|
function decodeEditSessionFileContent(version, content) {
|
|
30
31
|
switch (version) {
|
|
@@ -33,11 +34,11 @@ function decodeEditSessionFileContent(version, content) {
|
|
|
33
34
|
case 2:
|
|
34
35
|
return decodeBase64(content);
|
|
35
36
|
default:
|
|
36
|
-
throw (
|
|
37
|
+
throw ( new Error('Upgrade to a newer version to decode this content.'));
|
|
37
38
|
}
|
|
38
39
|
}
|
|
39
40
|
function hashedEditSessionId(editSessionId) {
|
|
40
|
-
const sha1 = (
|
|
41
|
+
const sha1 = ( new StringSHA1());
|
|
41
42
|
sha1.update(editSessionId);
|
|
42
43
|
return sha1.digest();
|
|
43
44
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { IEnvironmentService } from "vscode/vscode/vs/platform/environment/common/environment.service";
|
|
2
|
+
import { AbstractLogger } from "vscode/vscode/vs/platform/log/common/log";
|
|
3
|
+
import { ILoggerService } from "vscode/vscode/vs/platform/log/common/log.service";
|
|
4
|
+
import { IEditSessionsLogService } from "vscode/vscode/vs/workbench/contrib/editSessions/common/editSessions.service";
|
|
5
|
+
export declare class EditSessionsLogService extends AbstractLogger implements IEditSessionsLogService {
|
|
6
|
+
readonly _serviceBrand: undefined;
|
|
7
|
+
private readonly logger;
|
|
8
|
+
constructor(loggerService: ILoggerService, environmentService: IEnvironmentService);
|
|
9
|
+
trace(message: string, ...args: any[]): void;
|
|
10
|
+
debug(message: string, ...args: any[]): void;
|
|
11
|
+
info(message: string, ...args: any[]): void;
|
|
12
|
+
warn(message: string, ...args: any[]): void;
|
|
13
|
+
error(message: string | Error, ...args: any[]): void;
|
|
14
|
+
flush(): void;
|
|
15
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
|
|
2
|
+
import { __decorate, __param } from 'vscode/external/tslib/tslib.es6';
|
|
2
3
|
import { joinPath } from 'vscode/vscode/vs/base/common/resources';
|
|
3
4
|
import { localize } from 'vscode/vscode/vs/nls';
|
|
4
5
|
import { IEnvironmentService } from 'vscode/vscode/vs/platform/environment/common/environment.service';
|
|
@@ -9,7 +10,7 @@ import { editSessionsLogId } from './editSessions.js';
|
|
|
9
10
|
let EditSessionsLogService = class EditSessionsLogService extends AbstractLogger {
|
|
10
11
|
constructor(loggerService, environmentService) {
|
|
11
12
|
super();
|
|
12
|
-
this.logger = this._register(loggerService.createLogger(joinPath(environmentService.logsHome, `${editSessionsLogId}.log`), { id: editSessionsLogId, name: ( localize(
|
|
13
|
+
this.logger = this._register(loggerService.createLogger(joinPath(environmentService.logsHome, `${editSessionsLogId}.log`), { id: editSessionsLogId, name: ( localize(5717, "Cloud Changes")) }));
|
|
13
14
|
}
|
|
14
15
|
trace(message, ...args) {
|
|
15
16
|
this.logger.trace(message, ...args);
|
|
@@ -30,9 +31,9 @@ let EditSessionsLogService = class EditSessionsLogService extends AbstractLogger
|
|
|
30
31
|
this.logger.flush();
|
|
31
32
|
}
|
|
32
33
|
};
|
|
33
|
-
EditSessionsLogService = (
|
|
34
|
-
(
|
|
35
|
-
(
|
|
36
|
-
], EditSessionsLogService))
|
|
34
|
+
EditSessionsLogService = ( __decorate([
|
|
35
|
+
( __param(0, ILoggerService)),
|
|
36
|
+
( __param(1, IEnvironmentService))
|
|
37
|
+
], EditSessionsLogService));
|
|
37
38
|
|
|
38
39
|
export { EditSessionsLogService };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { UserDataSyncStoreClient } from "@codingame/monaco-vscode-a2719803-af40-5ae9-a29f-8a2231c33056-common/vscode/vs/platform/userDataSync/common/userDataSyncStoreService";
|
|
2
|
+
export declare class EditSessionsStoreClient extends UserDataSyncStoreClient {
|
|
3
|
+
_serviceBrand: any;
|
|
4
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
|
|
2
|
+
import { UserDataSyncStoreClient } from '@codingame/monaco-vscode-a2719803-af40-5ae9-a29f-8a2231c33056-common/vscode/vs/platform/userDataSync/common/userDataSyncStoreService';
|
|
2
3
|
|
|
3
4
|
class EditSessionsStoreClient extends UserDataSyncStoreClient {
|
|
4
5
|
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { CancellationToken } from "vscode/vscode/vs/base/common/cancellation";
|
|
2
|
+
import { URI } from "vscode/vscode/vs/base/common/uri";
|
|
3
|
+
import { IConfigurationService } from "vscode/vscode/vs/platform/configuration/common/configuration.service";
|
|
4
|
+
import { IEnvironmentService } from "vscode/vscode/vs/platform/environment/common/environment.service";
|
|
5
|
+
import { IFileService } from "vscode/vscode/vs/platform/files/common/files.service";
|
|
6
|
+
import { IStorageService } from "vscode/vscode/vs/platform/storage/common/storage.service";
|
|
7
|
+
import { ITelemetryService } from "vscode/vscode/vs/platform/telemetry/common/telemetry.service";
|
|
8
|
+
import { IUriIdentityService } from "vscode/vscode/vs/platform/uriIdentity/common/uriIdentity.service";
|
|
9
|
+
import { IUserDataProfile } from "vscode/vscode/vs/platform/userDataProfile/common/userDataProfile";
|
|
10
|
+
import { AbstractSynchroniser, IAcceptResult, IMergeResult, IResourcePreview, ISyncResourcePreview } from "@codingame/monaco-vscode-a2719803-af40-5ae9-a29f-8a2231c33056-common/vscode/vs/platform/userDataSync/common/abstractSynchronizer";
|
|
11
|
+
import { IRemoteUserData, IUserDataSyncConfiguration, IUserDataSynchroniser } from "vscode/vscode/vs/platform/userDataSync/common/userDataSync";
|
|
12
|
+
import { IUserDataSyncLogService } from "vscode/vscode/vs/platform/userDataSync/common/userDataSync.service";
|
|
13
|
+
import { IUserDataSyncStoreService } from "vscode/vscode/vs/platform/userDataSync/common/userDataSync.service";
|
|
14
|
+
import { IEditSessionsStorageService } from "vscode/vscode/vs/workbench/contrib/editSessions/common/editSessions.service";
|
|
15
|
+
import { IWorkspaceIdentityService } from "vscode/vscode/vs/workbench/services/workspaces/common/workspaceIdentityService.service";
|
|
16
|
+
export declare class WorkspaceStateSynchroniser extends AbstractSynchroniser implements IUserDataSynchroniser {
|
|
17
|
+
private readonly workspaceIdentityService;
|
|
18
|
+
private readonly editSessionsStorageService;
|
|
19
|
+
protected version: number;
|
|
20
|
+
constructor(profile: IUserDataProfile, collection: string | undefined, userDataSyncStoreService: IUserDataSyncStoreService, logService: IUserDataSyncLogService, fileService: IFileService, environmentService: IEnvironmentService, telemetryService: ITelemetryService, configurationService: IConfigurationService, storageService: IStorageService, uriIdentityService: IUriIdentityService, workspaceIdentityService: IWorkspaceIdentityService, editSessionsStorageService: IEditSessionsStorageService);
|
|
21
|
+
sync(): Promise<void>;
|
|
22
|
+
apply(): Promise<ISyncResourcePreview | null>;
|
|
23
|
+
protected applyResult(remoteUserData: IRemoteUserData, lastSyncUserData: IRemoteUserData | null, result: [
|
|
24
|
+
IResourcePreview,
|
|
25
|
+
IAcceptResult
|
|
26
|
+
][], force: boolean): Promise<void>;
|
|
27
|
+
protected generateSyncPreview(remoteUserData: IRemoteUserData, lastSyncUserData: IRemoteUserData | null, isRemoteDataFromCurrentMachine: boolean, userDataSyncConfiguration: IUserDataSyncConfiguration, token: CancellationToken): Promise<IResourcePreview[]>;
|
|
28
|
+
protected getMergeResult(resourcePreview: IResourcePreview, token: CancellationToken): Promise<IMergeResult>;
|
|
29
|
+
protected getAcceptResult(resourcePreview: IResourcePreview, resource: URI, content: string | null | undefined, token: CancellationToken): Promise<IAcceptResult>;
|
|
30
|
+
protected hasRemoteChanged(lastSyncUserData: IRemoteUserData): Promise<boolean>;
|
|
31
|
+
hasLocalData(): Promise<boolean>;
|
|
32
|
+
resolveContent(uri: URI): Promise<string | null>;
|
|
33
|
+
}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
|
|
1
|
+
|
|
2
|
+
import { __decorate, __param } from 'vscode/external/tslib/tslib.es6';
|
|
2
3
|
import { CancellationTokenSource } from 'vscode/vscode/vs/base/common/cancellation';
|
|
3
4
|
import { Emitter } from 'vscode/vscode/vs/base/common/event';
|
|
4
5
|
import { stringify, parse } from 'vscode/vscode/vs/base/common/marshalling';
|
|
5
6
|
import { IConfigurationService } from 'vscode/vscode/vs/platform/configuration/common/configuration.service';
|
|
6
7
|
import { IEnvironmentService } from 'vscode/vscode/vs/platform/environment/common/environment.service';
|
|
7
8
|
import { IFileService } from 'vscode/vscode/vs/platform/files/common/files.service';
|
|
9
|
+
import { StorageScope, StorageTarget } from 'vscode/vscode/vs/platform/storage/common/storage';
|
|
8
10
|
import { IStorageService } from 'vscode/vscode/vs/platform/storage/common/storage.service';
|
|
9
11
|
import { ITelemetryService } from 'vscode/vscode/vs/platform/telemetry/common/telemetry.service';
|
|
10
12
|
import { IUriIdentityService } from 'vscode/vscode/vs/platform/uriIdentity/common/uriIdentity.service';
|
|
11
|
-
import { AbstractSynchroniser } from 'vscode/vscode/vs/platform/userDataSync/common/abstractSynchronizer';
|
|
13
|
+
import { AbstractSynchroniser } from '@codingame/monaco-vscode-a2719803-af40-5ae9-a29f-8a2231c33056-common/vscode/vs/platform/userDataSync/common/abstractSynchronizer';
|
|
14
|
+
import { SyncResource } from 'vscode/vscode/vs/platform/userDataSync/common/userDataSync';
|
|
12
15
|
import { IEditSessionsStorageService } from 'vscode/vscode/vs/workbench/contrib/editSessions/common/editSessions.service';
|
|
13
16
|
import { IWorkspaceIdentityService } from 'vscode/vscode/vs/workbench/services/workspaces/common/workspaceIdentityService.service';
|
|
14
17
|
|
|
@@ -41,7 +44,7 @@ let WorkspaceStateSynchroniser = class WorkspaceStateSynchroniser extends Abstra
|
|
|
41
44
|
constructor(profile, collection, userDataSyncStoreService, logService, fileService, environmentService, telemetryService, configurationService, storageService, uriIdentityService, workspaceIdentityService, editSessionsStorageService) {
|
|
42
45
|
const userDataSyncLocalStoreService = ( new NullBackupStoreService());
|
|
43
46
|
const userDataSyncEnablementService = ( new NullEnablementService());
|
|
44
|
-
super({ syncResource:
|
|
47
|
+
super({ syncResource: SyncResource.WorkspaceState, profile }, collection, fileService, environmentService, storageService, userDataSyncStoreService, userDataSyncLocalStoreService, userDataSyncEnablementService, telemetryService, logService, configurationService, uriIdentityService);
|
|
45
48
|
this.workspaceIdentityService = workspaceIdentityService;
|
|
46
49
|
this.editSessionsStorageService = editSessionsStorageService;
|
|
47
50
|
this.version = 1;
|
|
@@ -53,13 +56,13 @@ let WorkspaceStateSynchroniser = class WorkspaceStateSynchroniser extends Abstra
|
|
|
53
56
|
return;
|
|
54
57
|
}
|
|
55
58
|
await this.storageService.flush();
|
|
56
|
-
const keys = ( this.storageService.keys(
|
|
59
|
+
const keys = ( this.storageService.keys(StorageScope.WORKSPACE, StorageTarget.USER));
|
|
57
60
|
if (!keys.length) {
|
|
58
61
|
return;
|
|
59
62
|
}
|
|
60
63
|
const contributedData = {};
|
|
61
64
|
keys.forEach((key) => {
|
|
62
|
-
const data = this.storageService.get(key,
|
|
65
|
+
const data = this.storageService.get(key, StorageScope.WORKSPACE);
|
|
63
66
|
if (data) {
|
|
64
67
|
contributedData[key] = data;
|
|
65
68
|
}
|
|
@@ -95,10 +98,10 @@ let WorkspaceStateSynchroniser = class WorkspaceStateSynchroniser extends Abstra
|
|
|
95
98
|
try {
|
|
96
99
|
const value = parse(storage[key]);
|
|
97
100
|
replaceUris(value);
|
|
98
|
-
storageEntries.push({ key, value, scope:
|
|
101
|
+
storageEntries.push({ key, value, scope: StorageScope.WORKSPACE, target: StorageTarget.USER });
|
|
99
102
|
}
|
|
100
103
|
catch {
|
|
101
|
-
storageEntries.push({ key, value: storage[key], scope:
|
|
104
|
+
storageEntries.push({ key, value: storage[key], scope: StorageScope.WORKSPACE, target: StorageTarget.USER });
|
|
102
105
|
}
|
|
103
106
|
}
|
|
104
107
|
this.storageService.storeAll(storageEntries, true);
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { CancellationToken } from "vscode/vscode/vs/base/common/cancellation";
|
|
2
|
+
import { IDisposable } from "vscode/vscode/vs/base/common/lifecycle";
|
|
3
|
+
import { ILogService } from "vscode/vscode/vs/platform/log/common/log.service";
|
|
4
|
+
import { EditSessionIdentityMatch, IEditSessionIdentityCreateParticipant, IEditSessionIdentityProvider } from "vscode/vscode/vs/platform/workspace/common/editSessions";
|
|
5
|
+
import { IEditSessionIdentityService } from "vscode/vscode/vs/platform/workspace/common/editSessions.service";
|
|
6
|
+
import { IWorkspaceFolder } from "vscode/vscode/vs/platform/workspace/common/workspace";
|
|
7
|
+
import { IExtensionService } from "vscode/vscode/vs/workbench/services/extensions/common/extensions.service";
|
|
8
|
+
export declare class EditSessionIdentityService implements IEditSessionIdentityService {
|
|
9
|
+
private readonly _extensionService;
|
|
10
|
+
private readonly _logService;
|
|
11
|
+
readonly _serviceBrand: undefined;
|
|
12
|
+
private _editSessionIdentifierProviders;
|
|
13
|
+
constructor(_extensionService: IExtensionService, _logService: ILogService);
|
|
14
|
+
registerEditSessionIdentityProvider(provider: IEditSessionIdentityProvider): IDisposable;
|
|
15
|
+
getEditSessionIdentifier(workspaceFolder: IWorkspaceFolder, token: CancellationToken): Promise<string | undefined>;
|
|
16
|
+
provideEditSessionIdentityMatch(workspaceFolder: IWorkspaceFolder, identity1: string, identity2: string, cancellationToken: CancellationToken): Promise<EditSessionIdentityMatch | undefined>;
|
|
17
|
+
onWillCreateEditSessionIdentity(workspaceFolder: IWorkspaceFolder, cancellationToken: CancellationToken): Promise<void>;
|
|
18
|
+
private _participants;
|
|
19
|
+
addEditSessionIdentityCreateParticipant(participant: IEditSessionIdentityCreateParticipant): IDisposable;
|
|
20
|
+
private activateProvider;
|
|
21
|
+
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
|
|
2
|
+
import { __decorate, __param } from 'vscode/external/tslib/tslib.es6';
|
|
2
3
|
import { insert } from 'vscode/vscode/vs/base/common/arrays';
|
|
3
4
|
import { toDisposable } from 'vscode/vscode/vs/base/common/lifecycle';
|
|
5
|
+
import 'vscode/vscode/vs/platform/instantiation/common/extensions';
|
|
4
6
|
import { ILogService } from 'vscode/vscode/vs/platform/log/common/log.service';
|
|
5
7
|
import 'vscode/vscode/vs/platform/instantiation/common/instantiation';
|
|
6
8
|
import { IExtensionService } from 'vscode/vscode/vs/workbench/services/extensions/common/extensions.service';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CancellationToken } from "vscode/vscode/vs/base/common/cancellation";
|
|
2
|
+
import { IWorkspaceStateFolder } from "vscode/vscode/vs/platform/userDataSync/common/userDataSync";
|
|
3
|
+
import { IEditSessionIdentityService } from "vscode/vscode/vs/platform/workspace/common/editSessions.service";
|
|
4
|
+
import { IWorkspaceContextService } from "vscode/vscode/vs/platform/workspace/common/workspace.service";
|
|
5
|
+
import { IWorkspaceIdentityService } from "vscode/vscode/vs/workbench/services/workspaces/common/workspaceIdentityService.service";
|
|
6
|
+
export declare class WorkspaceIdentityService implements IWorkspaceIdentityService {
|
|
7
|
+
private readonly workspaceContextService;
|
|
8
|
+
private readonly editSessionIdentityService;
|
|
9
|
+
_serviceBrand: undefined;
|
|
10
|
+
constructor(workspaceContextService: IWorkspaceContextService, editSessionIdentityService: IEditSessionIdentityService);
|
|
11
|
+
getWorkspaceStateFolders(cancellationToken: CancellationToken): Promise<IWorkspaceStateFolder[]>;
|
|
12
|
+
matches(incomingWorkspaceFolders: IWorkspaceStateFolder[], cancellationToken: CancellationToken): Promise<((value: any) => unknown) | false>;
|
|
13
|
+
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
|
|
2
|
+
import { __decorate, __param } from 'vscode/external/tslib/tslib.es6';
|
|
2
3
|
import { VSBuffer } from 'vscode/vscode/vs/base/common/buffer';
|
|
3
4
|
import { isEqualOrParent, relativePath, joinPath } from 'vscode/vscode/vs/base/common/resources';
|
|
4
5
|
import { URI } from 'vscode/vscode/vs/base/common/uri';
|
|
6
|
+
import 'vscode/vscode/vs/platform/instantiation/common/extensions';
|
|
5
7
|
import { EditSessionIdentityMatch } from 'vscode/vscode/vs/platform/workspace/common/editSessions';
|
|
6
8
|
import { IEditSessionIdentityService } from 'vscode/vscode/vs/platform/workspace/common/editSessions.service';
|
|
7
9
|
import { IWorkspaceContextService } from 'vscode/vscode/vs/platform/workspace/common/workspace.service';
|