@codingame/monaco-vscode-user-data-profile-service-override 10.1.4 → 11.0.1

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.
Files changed (26) hide show
  1. package/package.json +3 -2
  2. package/vscode/src/vs/platform/userDataProfile/browser/userDataProfile.js +1 -8
  3. package/vscode/src/vs/workbench/contrib/userDataProfile/browser/userDataProfile.js +84 -27
  4. package/vscode/src/vs/workbench/contrib/userDataProfile/browser/userDataProfileActions.js +4 -7
  5. package/vscode/src/vs/workbench/contrib/userDataProfile/browser/userDataProfilesEditor.js +101 -85
  6. package/vscode/src/vs/workbench/contrib/userDataProfile/browser/userDataProfilesEditorModel.js +27 -27
  7. package/vscode/src/vs/workbench/services/userDataProfile/browser/extensionsResource.js +5 -5
  8. package/vscode/src/vs/workbench/services/userDataProfile/browser/globalStateResource.js +1 -1
  9. package/vscode/src/vs/workbench/services/userDataProfile/browser/keybindingsResource.js +1 -1
  10. package/vscode/src/vs/workbench/services/userDataProfile/browser/settingsResource.js +1 -1
  11. package/vscode/src/vs/workbench/services/userDataProfile/browser/snippetsResource.js +2 -2
  12. package/vscode/src/vs/workbench/services/userDataProfile/browser/tasksResource.js +1 -1
  13. package/vscode/src/vs/workbench/services/userDataProfile/browser/userDataProfileImportExportService.js +40 -41
  14. package/vscode/src/vs/workbench/services/userDataProfile/browser/userDataProfileManagement.js +8 -8
  15. package/vscode/src/vs/workbench/services/userDataSync/browser/userDataSyncInit.js +6 -6
  16. package/_virtual/semver.js +0 -5
  17. package/vscode/src/vs/platform/userDataSync/common/extensionsMerge.js +0 -331
  18. package/vscode/src/vs/platform/userDataSync/common/extensionsSync.js +0 -546
  19. package/vscode/src/vs/platform/userDataSync/common/globalStateMerge.js +0 -102
  20. package/vscode/src/vs/platform/userDataSync/common/globalStateSync.js +0 -431
  21. package/vscode/src/vs/platform/userDataSync/common/keybindingsMerge.js +0 -277
  22. package/vscode/src/vs/platform/userDataSync/common/keybindingsSync.js +0 -325
  23. package/vscode/src/vs/platform/userDataSync/common/settingsSync.js +0 -338
  24. package/vscode/src/vs/platform/userDataSync/common/snippetsMerge.js +0 -126
  25. package/vscode/src/vs/platform/userDataSync/common/snippetsSync.js +0 -478
  26. package/vscode/src/vs/platform/userDataSync/common/tasksSync.js +0 -245
@@ -1,331 +0,0 @@
1
- import { deepClone, equals } from 'vscode/vscode/vs/base/common/objects';
2
- import { semverExports } from '../../../../../../_virtual/semver.js';
3
- import { assertIsDefined } from 'vscode/vscode/vs/base/common/types';
4
-
5
- function merge(localExtensions, remoteExtensions, lastSyncExtensions, skippedExtensions, ignoredExtensions, lastSyncBuiltinExtensions) {
6
- const added = [];
7
- const removed = [];
8
- const updated = [];
9
- if (!remoteExtensions) {
10
- const remote = localExtensions.filter(({ identifier }) => ignoredExtensions.every(id => id.toLowerCase() !== identifier.id.toLowerCase()));
11
- return {
12
- local: {
13
- added,
14
- removed,
15
- updated,
16
- },
17
- remote: remote.length > 0 ? {
18
- added: remote,
19
- updated: [],
20
- removed: [],
21
- all: remote
22
- } : null
23
- };
24
- }
25
- localExtensions = ( localExtensions.map(massageIncomingExtension));
26
- remoteExtensions = ( remoteExtensions.map(massageIncomingExtension));
27
- lastSyncExtensions = lastSyncExtensions ? ( lastSyncExtensions.map(massageIncomingExtension)) : null;
28
- const uuids = ( new Map());
29
- const addUUID = (identifier) => { if (identifier.uuid) {
30
- uuids.set(identifier.id.toLowerCase(), identifier.uuid);
31
- } };
32
- localExtensions.forEach(({ identifier }) => addUUID(identifier));
33
- remoteExtensions.forEach(({ identifier }) => addUUID(identifier));
34
- lastSyncExtensions?.forEach(({ identifier }) => addUUID(identifier));
35
- skippedExtensions?.forEach(({ identifier }) => addUUID(identifier));
36
- lastSyncBuiltinExtensions?.forEach(identifier => addUUID(identifier));
37
- const getKey = (extension) => {
38
- const uuid = extension.identifier.uuid || uuids.get(extension.identifier.id.toLowerCase());
39
- return uuid ? `uuid:${uuid}` : `id:${extension.identifier.id.toLowerCase()}`;
40
- };
41
- const addExtensionToMap = (map, extension) => {
42
- map.set(getKey(extension), extension);
43
- return map;
44
- };
45
- const localExtensionsMap = localExtensions.reduce(addExtensionToMap, ( new Map()));
46
- const remoteExtensionsMap = remoteExtensions.reduce(addExtensionToMap, ( new Map()));
47
- const newRemoteExtensionsMap = remoteExtensions.reduce((map, extension) => addExtensionToMap(map, deepClone(extension)), ( new Map()));
48
- const lastSyncExtensionsMap = lastSyncExtensions ? lastSyncExtensions.reduce(addExtensionToMap, ( new Map())) : null;
49
- const skippedExtensionsMap = skippedExtensions.reduce(addExtensionToMap, ( new Map()));
50
- const ignoredExtensionsSet = ignoredExtensions.reduce((set, id) => {
51
- const uuid = uuids.get(id.toLowerCase());
52
- return set.add(uuid ? `uuid:${uuid}` : `id:${id.toLowerCase()}`);
53
- }, ( new Set()));
54
- const lastSyncBuiltinExtensionsSet = lastSyncBuiltinExtensions ? lastSyncBuiltinExtensions.reduce((set, { id, uuid }) => {
55
- uuid = uuid ?? uuids.get(id.toLowerCase());
56
- return set.add(uuid ? `uuid:${uuid}` : `id:${id.toLowerCase()}`);
57
- }, ( new Set())) : null;
58
- const localToRemote = compare(localExtensionsMap, remoteExtensionsMap, ignoredExtensionsSet, false);
59
- if (localToRemote.added.size > 0 || localToRemote.removed.size > 0 || localToRemote.updated.size > 0) {
60
- const baseToLocal = compare(lastSyncExtensionsMap, localExtensionsMap, ignoredExtensionsSet, false);
61
- const baseToRemote = compare(lastSyncExtensionsMap, remoteExtensionsMap, ignoredExtensionsSet, true);
62
- const merge = (key, localExtension, remoteExtension, preferred) => {
63
- let pinned, version, preRelease;
64
- if (localExtension.installed) {
65
- pinned = preferred.pinned;
66
- preRelease = preferred.preRelease;
67
- if (pinned) {
68
- version = preferred.version;
69
- }
70
- }
71
- else {
72
- pinned = remoteExtension.pinned;
73
- preRelease = remoteExtension.preRelease;
74
- if (pinned) {
75
- version = remoteExtension.version;
76
- }
77
- }
78
- if (pinned === undefined ) {
79
- pinned = localExtension.pinned;
80
- if (pinned) {
81
- version = localExtension.version;
82
- }
83
- }
84
- if (preRelease === undefined ) {
85
- preRelease = localExtension.preRelease;
86
- }
87
- return {
88
- ...preferred,
89
- installed: localExtension.installed || remoteExtension.installed,
90
- pinned,
91
- preRelease,
92
- version: version ?? (remoteExtension.version && (!localExtension.installed || semverExports.gt(remoteExtension.version, localExtension.version)) ? remoteExtension.version : localExtension.version),
93
- state: mergeExtensionState(localExtension, remoteExtension, lastSyncExtensionsMap?.get(key)),
94
- };
95
- };
96
- for (const key of ( baseToRemote.removed.values())) {
97
- const localExtension = localExtensionsMap.get(key);
98
- if (!localExtension) {
99
- continue;
100
- }
101
- const baseExtension = assertIsDefined(lastSyncExtensionsMap?.get(key));
102
- const wasAnInstalledExtensionDuringLastSync = lastSyncBuiltinExtensionsSet && !( lastSyncBuiltinExtensionsSet.has(key)) && baseExtension.installed;
103
- if (localExtension.installed && wasAnInstalledExtensionDuringLastSync ) {
104
- removed.push(localExtension.identifier);
105
- }
106
- else {
107
- newRemoteExtensionsMap.set(key, localExtension);
108
- }
109
- }
110
- for (const key of ( baseToRemote.added.values())) {
111
- const remoteExtension = assertIsDefined(remoteExtensionsMap.get(key));
112
- const localExtension = localExtensionsMap.get(key);
113
- if (localExtension) {
114
- if (( localToRemote.updated.has(key))) {
115
- const mergedExtension = merge(key, localExtension, remoteExtension, remoteExtension);
116
- if (!areSame(localExtension, remoteExtension, false, false)) {
117
- updated.push(massageOutgoingExtension(mergedExtension, key));
118
- }
119
- newRemoteExtensionsMap.set(key, mergedExtension);
120
- }
121
- }
122
- else {
123
- if (remoteExtension.installed) {
124
- added.push(massageOutgoingExtension(remoteExtension, key));
125
- }
126
- }
127
- }
128
- for (const key of ( baseToRemote.updated.values())) {
129
- const remoteExtension = assertIsDefined(remoteExtensionsMap.get(key));
130
- const baseExtension = assertIsDefined(lastSyncExtensionsMap?.get(key));
131
- const localExtension = localExtensionsMap.get(key);
132
- if (localExtension) {
133
- const wasAnInstalledExtensionDuringLastSync = lastSyncBuiltinExtensionsSet && !( lastSyncBuiltinExtensionsSet.has(key)) && baseExtension.installed;
134
- if (wasAnInstalledExtensionDuringLastSync && localExtension.installed && !remoteExtension.installed) {
135
- removed.push(localExtension.identifier);
136
- }
137
- else {
138
- const mergedExtension = merge(key, localExtension, remoteExtension, remoteExtension);
139
- updated.push(massageOutgoingExtension(mergedExtension, key));
140
- newRemoteExtensionsMap.set(key, mergedExtension);
141
- }
142
- }
143
- else if (remoteExtension.installed) {
144
- added.push(massageOutgoingExtension(remoteExtension, key));
145
- }
146
- }
147
- for (const key of ( baseToLocal.added.values())) {
148
- if (( baseToRemote.added.has(key))) {
149
- continue;
150
- }
151
- newRemoteExtensionsMap.set(key, assertIsDefined(localExtensionsMap.get(key)));
152
- }
153
- for (const key of ( baseToLocal.updated.values())) {
154
- if (( baseToRemote.removed.has(key))) {
155
- continue;
156
- }
157
- if (( baseToRemote.updated.has(key))) {
158
- continue;
159
- }
160
- const localExtension = assertIsDefined(localExtensionsMap.get(key));
161
- const remoteExtension = assertIsDefined(remoteExtensionsMap.get(key));
162
- newRemoteExtensionsMap.set(key, merge(key, localExtension, remoteExtension, localExtension));
163
- }
164
- for (const key of ( baseToLocal.removed.values())) {
165
- if (( baseToRemote.updated.has(key))) {
166
- continue;
167
- }
168
- if (( baseToRemote.removed.has(key))) {
169
- continue;
170
- }
171
- if (( skippedExtensionsMap.has(key))) {
172
- continue;
173
- }
174
- if (!assertIsDefined(remoteExtensionsMap.get(key)).installed) {
175
- continue;
176
- }
177
- if (!lastSyncBuiltinExtensionsSet) {
178
- continue;
179
- }
180
- if (( lastSyncBuiltinExtensionsSet.has(key)) || !assertIsDefined(lastSyncExtensionsMap?.get(key)).installed) {
181
- continue;
182
- }
183
- newRemoteExtensionsMap.delete(key);
184
- }
185
- }
186
- const remote = [];
187
- const remoteChanges = compare(remoteExtensionsMap, newRemoteExtensionsMap, ( new Set()), true);
188
- const hasRemoteChanges = remoteChanges.added.size > 0 || remoteChanges.updated.size > 0 || remoteChanges.removed.size > 0;
189
- if (hasRemoteChanges) {
190
- newRemoteExtensionsMap.forEach((value, key) => remote.push(massageOutgoingExtension(value, key)));
191
- }
192
- return {
193
- local: { added, removed, updated },
194
- remote: hasRemoteChanges ? {
195
- added: ( [...remoteChanges.added].map(id => newRemoteExtensionsMap.get(id))),
196
- updated: ( [...remoteChanges.updated].map(id => newRemoteExtensionsMap.get(id))),
197
- removed: ( [...remoteChanges.removed].map(id => remoteExtensionsMap.get(id))),
198
- all: remote
199
- } : null
200
- };
201
- }
202
- function compare(from, to, ignoredExtensions, checkVersionProperty) {
203
- const fromKeys = from ? [...( from.keys())].filter(key => !( ignoredExtensions.has(key))) : [];
204
- const toKeys = [...( to.keys())].filter(key => !( ignoredExtensions.has(key)));
205
- const added = toKeys.filter(key => !fromKeys.includes(key)).reduce((r, key) => { r.add(key); return r; }, ( new Set()));
206
- const removed = fromKeys.filter(key => !toKeys.includes(key)).reduce((r, key) => { r.add(key); return r; }, ( new Set()));
207
- const updated = ( new Set());
208
- for (const key of fromKeys) {
209
- if (( removed.has(key))) {
210
- continue;
211
- }
212
- const fromExtension = from.get(key);
213
- const toExtension = to.get(key);
214
- if (!toExtension || !areSame(fromExtension, toExtension, checkVersionProperty, true)) {
215
- updated.add(key);
216
- }
217
- }
218
- return { added, removed, updated };
219
- }
220
- function areSame(fromExtension, toExtension, checkVersionProperty, checkInstalledProperty) {
221
- if (fromExtension.disabled !== toExtension.disabled) {
222
- return false;
223
- }
224
- if (!!fromExtension.isApplicationScoped !== !!toExtension.isApplicationScoped) {
225
- return false;
226
- }
227
- if (checkInstalledProperty && fromExtension.installed !== toExtension.installed) {
228
- return false;
229
- }
230
- if (fromExtension.installed && toExtension.installed) {
231
- if (fromExtension.preRelease !== toExtension.preRelease) {
232
- return false;
233
- }
234
- if (fromExtension.pinned !== toExtension.pinned) {
235
- return false;
236
- }
237
- if (toExtension.pinned && fromExtension.version !== toExtension.version) {
238
- return false;
239
- }
240
- }
241
- if (!isSameExtensionState(fromExtension.state, toExtension.state)) {
242
- return false;
243
- }
244
- if ((checkVersionProperty && fromExtension.version !== toExtension.version)) {
245
- return false;
246
- }
247
- return true;
248
- }
249
- function mergeExtensionState(localExtension, remoteExtension, lastSyncExtension) {
250
- const localState = localExtension.state;
251
- const remoteState = remoteExtension.state;
252
- const baseState = lastSyncExtension?.state;
253
- if (!remoteExtension.version) {
254
- return localState;
255
- }
256
- if (localState && semverExports.gt(localExtension.version, remoteExtension.version)) {
257
- return localState;
258
- }
259
- if (remoteState && semverExports.gt(remoteExtension.version, localExtension.version)) {
260
- return remoteState;
261
- }
262
- if (!localState) {
263
- return remoteState;
264
- }
265
- if (!remoteState) {
266
- return localState;
267
- }
268
- const mergedState = deepClone(localState);
269
- const baseToRemote = baseState ? compareExtensionState(baseState, remoteState) : { added: ( Object.keys(remoteState)).reduce((r, k) => { r.add(k); return r; }, ( new Set())), removed: ( new Set()), updated: ( new Set()) };
270
- const baseToLocal = baseState ? compareExtensionState(baseState, localState) : { added: ( Object.keys(localState)).reduce((r, k) => { r.add(k); return r; }, ( new Set())), removed: ( new Set()), updated: ( new Set()) };
271
- for (const key of [...( baseToRemote.added.values()), ...( baseToRemote.updated.values())]) {
272
- mergedState[key] = remoteState[key];
273
- }
274
- for (const key of ( baseToRemote.removed.values())) {
275
- if (!( baseToLocal.updated.has(key))) {
276
- delete mergedState[key];
277
- }
278
- }
279
- return mergedState;
280
- }
281
- function compareExtensionState(from, to) {
282
- const fromKeys = ( Object.keys(from));
283
- const toKeys = ( Object.keys(to));
284
- const added = toKeys.filter(key => !fromKeys.includes(key)).reduce((r, key) => { r.add(key); return r; }, ( new Set()));
285
- const removed = fromKeys.filter(key => !toKeys.includes(key)).reduce((r, key) => { r.add(key); return r; }, ( new Set()));
286
- const updated = ( new Set());
287
- for (const key of fromKeys) {
288
- if (( removed.has(key))) {
289
- continue;
290
- }
291
- const value1 = from[key];
292
- const value2 = to[key];
293
- if (!equals(value1, value2)) {
294
- updated.add(key);
295
- }
296
- }
297
- return { added, removed, updated };
298
- }
299
- function isSameExtensionState(a = {}, b = {}) {
300
- const { added, removed, updated } = compareExtensionState(a, b);
301
- return added.size === 0 && removed.size === 0 && updated.size === 0;
302
- }
303
- function massageIncomingExtension(extension) {
304
- return { ...extension, ...{ disabled: !!extension.disabled, installed: !!extension.installed } };
305
- }
306
- function massageOutgoingExtension(extension, key) {
307
- const massagedExtension = {
308
- ...extension,
309
- identifier: {
310
- id: extension.identifier.id,
311
- uuid: key.startsWith('uuid:') ? key.substring('uuid:'.length) : undefined
312
- },
313
- preRelease: !!extension.preRelease,
314
- pinned: !!extension.pinned,
315
- };
316
- if (!extension.disabled) {
317
- delete massagedExtension.disabled;
318
- }
319
- if (!extension.installed) {
320
- delete massagedExtension.installed;
321
- }
322
- if (!extension.state) {
323
- delete massagedExtension.state;
324
- }
325
- if (!extension.isApplicationScoped) {
326
- delete massagedExtension.isApplicationScoped;
327
- }
328
- return massagedExtension;
329
- }
330
-
331
- export { merge };