@codingame/monaco-vscode-user-data-sync-service-override 5.2.0 → 5.3.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/package.json +3 -2
- package/userDataSync.js +5 -76
- package/vscode/src/vs/platform/userDataSync/common/userDataSyncResourceProvider.js +6 -6
- package/vscode/src/vs/platform/userDataSync/common/userDataSyncService.js +6 -6
- package/vscode/src/vs/workbench/services/userDataSync/browser/userDataSyncWorkbenchService.js +1 -1
- package/vscode/src/vs/platform/userDataProfile/browser/userDataProfile.js +0 -95
- package/vscode/src/vs/platform/userDataProfile/common/userDataProfileStorageService.service.js +0 -5
- package/vscode/src/vs/platform/userDataSync/common/extensionsMerge.js +0 -331
- package/vscode/src/vs/platform/userDataSync/common/extensionsSync.js +0 -545
- package/vscode/src/vs/platform/userDataSync/common/globalStateMerge.js +0 -102
- package/vscode/src/vs/platform/userDataSync/common/globalStateSync.js +0 -431
- package/vscode/src/vs/platform/userDataSync/common/keybindingsMerge.js +0 -277
- package/vscode/src/vs/platform/userDataSync/common/keybindingsSync.js +0 -328
- package/vscode/src/vs/platform/userDataSync/common/settingsSync.js +0 -322
- package/vscode/src/vs/platform/userDataSync/common/snippetsMerge.js +0 -126
- package/vscode/src/vs/platform/userDataSync/common/snippetsSync.js +0 -478
- package/vscode/src/vs/platform/userDataSync/common/tasksSync.js +0 -245
- package/vscode/src/vs/workbench/services/userData/browser/userDataInit.js +0 -62
- package/vscode/src/vs/workbench/services/userDataProfile/browser/extensionsResource.js +0 -328
- package/vscode/src/vs/workbench/services/userDataProfile/browser/globalStateResource.js +0 -144
- package/vscode/src/vs/workbench/services/userDataProfile/browser/keybindingsResource.js +0 -119
- package/vscode/src/vs/workbench/services/userDataProfile/browser/media/userDataProfileView.css.js +0 -6
- package/vscode/src/vs/workbench/services/userDataProfile/browser/settingsResource.js +0 -140
- package/vscode/src/vs/workbench/services/userDataProfile/browser/snippetsResource.js +0 -155
- package/vscode/src/vs/workbench/services/userDataProfile/browser/tasksResource.js +0 -118
- package/vscode/src/vs/workbench/services/userDataProfile/browser/userDataProfileImportExportService.js +0 -1453
- package/vscode/src/vs/workbench/services/userDataProfile/browser/userDataProfileInit.js +0 -151
- package/vscode/src/vs/workbench/services/userDataProfile/browser/userDataProfileManagement.js +0 -180
- package/vscode/src/vs/workbench/services/userDataSync/browser/userDataSyncInit.js +0 -448
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codingame/monaco-vscode-user-data-sync-service-override",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.3.0",
|
|
4
4
|
"keywords": [],
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "CodinGame",
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
}
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"vscode": "npm:@codingame/monaco-vscode-api@5.
|
|
29
|
+
"vscode": "npm:@codingame/monaco-vscode-api@5.3.0",
|
|
30
|
+
"@codingame/monaco-vscode-user-data-profile-service-override": "5.3.0"
|
|
30
31
|
}
|
|
31
32
|
}
|
package/userDataSync.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { __decorate, __param } from 'vscode/external/tslib/tslib.es6.js';
|
|
2
1
|
import { SyncDescriptor } from 'vscode/vscode/vs/platform/instantiation/common/descriptors';
|
|
3
|
-
import {
|
|
2
|
+
import { IUserDataAutoSyncService, IUserDataSyncStoreManagementService, IUserDataSyncStoreService, IUserDataSyncEnablementService, IUserDataSyncService, IUserDataSyncLogService, IUserDataSyncResourceProviderService, IUserDataSyncLocalStoreService, IUserDataSyncUtilService } from 'vscode/vscode/vs/platform/userDataSync/common/userDataSync.service';
|
|
4
3
|
import { UserDataSyncAccountService } from './vscode/src/vs/platform/userDataSync/common/userDataSyncAccount.js';
|
|
5
4
|
import { IUserDataSyncAccountService } from 'vscode/vscode/vs/platform/userDataSync/common/userDataSyncAccount.service';
|
|
6
5
|
import { UserDataSyncMachinesService } from 'vscode/vscode/vs/platform/userDataSync/common/userDataSyncMachines';
|
|
@@ -10,83 +9,17 @@ import { UserDataAutoSyncService } from './vscode/src/vs/platform/userDataSync/c
|
|
|
10
9
|
import { WebUserDataSyncEnablementService } from './vscode/src/vs/workbench/services/userDataSync/browser/webUserDataSyncEnablementService.js';
|
|
11
10
|
import { UserDataSyncService } from './vscode/src/vs/platform/userDataSync/common/userDataSyncService.js';
|
|
12
11
|
import { UserDataSyncLogService } from './vscode/src/vs/platform/userDataSync/common/userDataSyncLog.js';
|
|
13
|
-
import { BrowserUserDataProfilesService } from './vscode/src/vs/platform/userDataProfile/browser/userDataProfile.js';
|
|
14
|
-
import { IUserDataProfilesService } from 'vscode/vscode/vs/platform/userDataProfile/common/userDataProfile.service';
|
|
15
12
|
import { UserDataSyncResourceProviderService } from './vscode/src/vs/platform/userDataSync/common/userDataSyncResourceProvider.js';
|
|
16
13
|
import { UserDataSyncLocalStoreService } from './vscode/src/vs/platform/userDataSync/common/userDataSyncLocalStoreService.js';
|
|
17
14
|
import { UserDataSyncWorkbenchService } from './vscode/src/vs/workbench/services/userDataSync/browser/userDataSyncWorkbenchService.js';
|
|
18
15
|
import { IUserDataSyncWorkbenchService } from 'vscode/vscode/vs/workbench/services/userDataSync/common/userDataSync.service';
|
|
19
|
-
import './vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSync.contribution.js';
|
|
20
|
-
import { UserDataInitializationService } from './vscode/src/vs/workbench/services/userData/browser/userDataInit.js';
|
|
21
|
-
import { IUserDataInitializationService } from 'vscode/vscode/vs/workbench/services/userData/browser/userDataInit.service';
|
|
22
|
-
import { UserDataSyncInitializer } from './vscode/src/vs/workbench/services/userDataSync/browser/userDataSyncInit.js';
|
|
23
|
-
import { UserDataProfileInitializer } from './vscode/src/vs/workbench/services/userDataProfile/browser/userDataProfileInit.js';
|
|
24
|
-
import { IBrowserWorkbenchEnvironmentService } from 'vscode/vscode/vs/workbench/services/environment/browser/environmentService.service';
|
|
25
|
-
import { ISecretStorageService } from 'vscode/vscode/vs/platform/secrets/common/secrets.service';
|
|
26
|
-
import { IFileService } from 'vscode/vscode/vs/platform/files/common/files.service';
|
|
27
|
-
import { IStorageService } from 'vscode/vscode/vs/platform/storage/common/storage.service';
|
|
28
|
-
import { IProductService } from 'vscode/vscode/vs/platform/product/common/productService.service';
|
|
29
|
-
import { IRequestService } from 'vscode/vscode/vs/platform/request/common/request.service';
|
|
30
|
-
import { ILogService } from 'vscode/vscode/vs/platform/log/common/log.service';
|
|
31
|
-
import { IUriIdentityService } from 'vscode/vscode/vs/platform/uriIdentity/common/uriIdentity.service';
|
|
32
|
-
import { IUserDataProfileService, IUserDataProfileImportExportService, IUserDataProfileManagementService } from 'vscode/vscode/vs/workbench/services/userDataProfile/common/userDataProfile.service';
|
|
33
|
-
import { mark } from 'vscode/vscode/vs/base/common/performance';
|
|
34
|
-
import { timeout } from 'vscode/vscode/vs/base/common/async';
|
|
35
|
-
import { IWorkbenchConfigurationService } from 'vscode/vscode/vs/workbench/services/configuration/common/configuration.service';
|
|
36
16
|
import { UserDataSyncUtilService } from './vscode/src/vs/workbench/services/userDataSync/common/userDataSyncUtil.js';
|
|
37
|
-
import
|
|
38
|
-
import
|
|
39
|
-
import { registerServiceInitializePostParticipant } from 'vscode/lifecycle';
|
|
17
|
+
import getServiceOverride$1 from '@codingame/monaco-vscode-user-data-profile-service-override';
|
|
18
|
+
import './vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSync.contribution.js';
|
|
40
19
|
|
|
41
|
-
function isWorkspaceService(configurationService) {
|
|
42
|
-
return 'reloadLocalUserConfiguration' in configurationService;
|
|
43
|
-
}
|
|
44
|
-
async function initializeUserData(userDataInitializationService, configurationService) {
|
|
45
|
-
if (await userDataInitializationService.requiresInitialization()) {
|
|
46
|
-
mark('code/willInitRequiredUserData');
|
|
47
|
-
await userDataInitializationService.initializeRequiredResources();
|
|
48
|
-
if (isWorkspaceService(configurationService)) {
|
|
49
|
-
await configurationService.reloadLocalUserConfiguration();
|
|
50
|
-
}
|
|
51
|
-
mark('code/didInitRequiredUserData');
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
registerServiceInitializePostParticipant(async (accessor) => {
|
|
55
|
-
try {
|
|
56
|
-
await Promise.race([
|
|
57
|
-
timeout(5000),
|
|
58
|
-
initializeUserData(accessor.get(IUserDataInitializationService), accessor.get(IWorkbenchConfigurationService))
|
|
59
|
-
]);
|
|
60
|
-
}
|
|
61
|
-
catch (error) {
|
|
62
|
-
accessor.get(ILogService).error(error);
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
|
-
let InjectedUserDataInitializationService = class InjectedUserDataInitializationService extends UserDataInitializationService {
|
|
66
|
-
constructor(environmentService, secretStorageService, userDataSyncStoreManagementService, fileService, userDataProfilesService, storageService, productService, requestService, logService, uriIdentityService, userDataProfileService) {
|
|
67
|
-
const userDataInitializers = [];
|
|
68
|
-
userDataInitializers.push(new UserDataSyncInitializer(environmentService, secretStorageService, userDataSyncStoreManagementService, fileService, userDataProfilesService, storageService, productService, requestService, logService, uriIdentityService));
|
|
69
|
-
if (environmentService.options?.profile != null) {
|
|
70
|
-
userDataInitializers.push(new UserDataProfileInitializer(environmentService, fileService, userDataProfileService, storageService, logService, uriIdentityService, requestService));
|
|
71
|
-
}
|
|
72
|
-
super(userDataInitializers);
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
InjectedUserDataInitializationService = __decorate([
|
|
76
|
-
( __param(0, IBrowserWorkbenchEnvironmentService)),
|
|
77
|
-
( __param(1, ISecretStorageService)),
|
|
78
|
-
( __param(2, IUserDataSyncStoreManagementService)),
|
|
79
|
-
( __param(3, IFileService)),
|
|
80
|
-
( __param(4, IUserDataProfilesService)),
|
|
81
|
-
( __param(5, IStorageService)),
|
|
82
|
-
( __param(6, IProductService)),
|
|
83
|
-
( __param(7, IRequestService)),
|
|
84
|
-
( __param(8, ILogService)),
|
|
85
|
-
( __param(9, IUriIdentityService)),
|
|
86
|
-
( __param(10, IUserDataProfileService))
|
|
87
|
-
], InjectedUserDataInitializationService);
|
|
88
20
|
function getServiceOverride() {
|
|
89
21
|
return {
|
|
22
|
+
...getServiceOverride$1(),
|
|
90
23
|
[( IUserDataAutoSyncService.toString())]: new SyncDescriptor(UserDataAutoSyncService, [], true),
|
|
91
24
|
[( IUserDataSyncStoreManagementService.toString())]: new SyncDescriptor(UserDataSyncStoreManagementService, [], true),
|
|
92
25
|
[( IUserDataSyncStoreService.toString())]: new SyncDescriptor(UserDataSyncStoreService, [], true),
|
|
@@ -95,14 +28,10 @@ function getServiceOverride() {
|
|
|
95
28
|
[( IUserDataSyncLogService.toString())]: new SyncDescriptor(UserDataSyncLogService, [], true),
|
|
96
29
|
[( IUserDataSyncAccountService.toString())]: new SyncDescriptor(UserDataSyncAccountService, [], true),
|
|
97
30
|
[( IUserDataSyncMachinesService.toString())]: new SyncDescriptor(UserDataSyncMachinesService, [], true),
|
|
98
|
-
[( IUserDataProfilesService.toString())]: new SyncDescriptor(BrowserUserDataProfilesService, [], true),
|
|
99
31
|
[( IUserDataSyncResourceProviderService.toString())]: new SyncDescriptor(UserDataSyncResourceProviderService, [], true),
|
|
100
32
|
[( IUserDataSyncLocalStoreService.toString())]: new SyncDescriptor(UserDataSyncLocalStoreService, [], true),
|
|
101
33
|
[( IUserDataSyncWorkbenchService.toString())]: new SyncDescriptor(UserDataSyncWorkbenchService, [], true),
|
|
102
|
-
[(
|
|
103
|
-
[( IUserDataSyncUtilService.toString())]: new SyncDescriptor(UserDataSyncUtilService, [], true),
|
|
104
|
-
[( IUserDataProfileImportExportService.toString())]: new SyncDescriptor(UserDataProfileImportExportService, [], true),
|
|
105
|
-
[( IUserDataProfileManagementService.toString())]: new SyncDescriptor(UserDataProfileManagementService, [], true)
|
|
34
|
+
[( IUserDataSyncUtilService.toString())]: new SyncDescriptor(UserDataSyncUtilService, [], true)
|
|
106
35
|
};
|
|
107
36
|
}
|
|
108
37
|
|
|
@@ -10,13 +10,13 @@ import { CONFIG_SYNC_KEYBINDINGS_PER_PLATFORM, USER_DATA_SYNC_SCHEME, UserDataSy
|
|
|
10
10
|
import { IUserDataSyncStoreService, IUserDataSyncLocalStoreService, IUserDataSyncLogService } from 'vscode/vscode/vs/platform/userDataSync/common/userDataSync.service';
|
|
11
11
|
import { IUserDataProfilesService } from 'vscode/vscode/vs/platform/userDataProfile/common/userDataProfile.service';
|
|
12
12
|
import { isSyncData } from 'vscode/vscode/vs/platform/userDataSync/common/abstractSynchronizer';
|
|
13
|
-
import { parseSnippets } from '
|
|
14
|
-
import { parseSettingsSyncContent } from '
|
|
15
|
-
import { getKeybindingsContentFromSyncContent } from '
|
|
13
|
+
import { parseSnippets } from '@codingame/monaco-vscode-user-data-profile-service-override/vscode/vs/platform/userDataSync/common/snippetsSync';
|
|
14
|
+
import { parseSettingsSyncContent } from '@codingame/monaco-vscode-user-data-profile-service-override/vscode/vs/platform/userDataSync/common/settingsSync';
|
|
15
|
+
import { getKeybindingsContentFromSyncContent } from '@codingame/monaco-vscode-user-data-profile-service-override/vscode/vs/platform/userDataSync/common/keybindingsSync';
|
|
16
16
|
import { IConfigurationService } from 'vscode/vscode/vs/platform/configuration/common/configuration.service';
|
|
17
|
-
import { getTasksContentFromSyncContent } from '
|
|
18
|
-
import { stringify, parseExtensions, LocalExtensionsProvider } from '
|
|
19
|
-
import { stringify as stringify$1, LocalGlobalStateProvider } from '
|
|
17
|
+
import { getTasksContentFromSyncContent } from '@codingame/monaco-vscode-user-data-profile-service-override/vscode/vs/platform/userDataSync/common/tasksSync';
|
|
18
|
+
import { stringify, parseExtensions, LocalExtensionsProvider } from '@codingame/monaco-vscode-user-data-profile-service-override/vscode/vs/platform/userDataSync/common/extensionsSync';
|
|
19
|
+
import { stringify as stringify$1, LocalGlobalStateProvider } from '@codingame/monaco-vscode-user-data-profile-service-override/vscode/vs/platform/userDataSync/common/globalStateSync';
|
|
20
20
|
import { IInstantiationService } from 'vscode/vscode/vs/platform/instantiation/common/instantiation';
|
|
21
21
|
import { parseUserDataProfilesManifest, stringifyLocalProfiles } from './userDataProfilesManifestSync.js';
|
|
22
22
|
import { toFormattedString } from 'vscode/vscode/vs/base/common/jsonFormatter';
|
|
@@ -15,12 +15,12 @@ import { IInstantiationService } from 'vscode/vscode/vs/platform/instantiation/c
|
|
|
15
15
|
import { IStorageService } from 'vscode/vscode/vs/platform/storage/common/storage.service';
|
|
16
16
|
import { ITelemetryService } from 'vscode/vscode/vs/platform/telemetry/common/telemetry.service';
|
|
17
17
|
import { IUserDataProfilesService } from 'vscode/vscode/vs/platform/userDataProfile/common/userDataProfile.service';
|
|
18
|
-
import { ExtensionsSynchroniser } from '
|
|
19
|
-
import { GlobalStateSynchroniser } from '
|
|
20
|
-
import { KeybindingsSynchroniser } from '
|
|
21
|
-
import { SettingsSynchroniser } from '
|
|
22
|
-
import { SnippetsSynchroniser } from '
|
|
23
|
-
import { TasksSynchroniser } from '
|
|
18
|
+
import { ExtensionsSynchroniser } from '@codingame/monaco-vscode-user-data-profile-service-override/vscode/vs/platform/userDataSync/common/extensionsSync';
|
|
19
|
+
import { GlobalStateSynchroniser } from '@codingame/monaco-vscode-user-data-profile-service-override/vscode/vs/platform/userDataSync/common/globalStateSync';
|
|
20
|
+
import { KeybindingsSynchroniser } from '@codingame/monaco-vscode-user-data-profile-service-override/vscode/vs/platform/userDataSync/common/keybindingsSync';
|
|
21
|
+
import { SettingsSynchroniser } from '@codingame/monaco-vscode-user-data-profile-service-override/vscode/vs/platform/userDataSync/common/settingsSync';
|
|
22
|
+
import { SnippetsSynchroniser } from '@codingame/monaco-vscode-user-data-profile-service-override/vscode/vs/platform/userDataSync/common/snippetsSync';
|
|
23
|
+
import { TasksSynchroniser } from '@codingame/monaco-vscode-user-data-profile-service-override/vscode/vs/platform/userDataSync/common/tasksSync';
|
|
24
24
|
import { UserDataProfilesManifestSynchroniser } from './userDataProfilesManifestSync.js';
|
|
25
25
|
import { createSyncHeaders, UserDataSyncError, ALL_SYNC_RESOURCES, USER_DATA_SYNC_CONFIGURATION_SCOPE, UserDataSyncStoreError } from 'vscode/vscode/vs/platform/userDataSync/common/userDataSync';
|
|
26
26
|
import { IUserDataSyncStoreService, IUserDataSyncStoreManagementService, IUserDataSyncLogService, IUserDataSyncEnablementService, IUserDataSyncResourceProviderService, IUserDataSyncLocalStoreService } from 'vscode/vscode/vs/platform/userDataSync/common/userDataSync.service';
|
package/vscode/src/vs/workbench/services/userDataSync/browser/userDataSyncWorkbenchService.js
CHANGED
|
@@ -26,7 +26,7 @@ import { IViewsService } from 'vscode/vscode/vs/workbench/services/views/common/
|
|
|
26
26
|
import { ILifecycleService } from 'vscode/vscode/vs/workbench/services/lifecycle/common/lifecycle.service';
|
|
27
27
|
import { isWeb } from 'vscode/vscode/vs/base/common/platform';
|
|
28
28
|
import { UserDataSyncStoreClient } from 'vscode/vscode/vs/platform/userDataSync/common/userDataSyncStoreService';
|
|
29
|
-
import { UserDataSyncStoreTypeSynchronizer } from '
|
|
29
|
+
import { UserDataSyncStoreTypeSynchronizer } from '@codingame/monaco-vscode-user-data-profile-service-override/vscode/vs/platform/userDataSync/common/globalStateSync';
|
|
30
30
|
import { CancellationError } from 'vscode/vscode/vs/base/common/errors';
|
|
31
31
|
import { raceCancellationError } from 'vscode/vscode/vs/base/common/async';
|
|
32
32
|
import { CancellationTokenSource } from 'vscode/vscode/vs/base/common/cancellation';
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { __decorate, __param } from 'vscode/external/tslib/tslib.es6.js';
|
|
2
|
-
import { BroadcastDataChannel } from 'vscode/vscode/vs/base/browser/broadcast';
|
|
3
|
-
import { revive } from 'vscode/vscode/vs/base/common/marshalling';
|
|
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 { ILogService } from 'vscode/vscode/vs/platform/log/common/log.service';
|
|
7
|
-
import { IUriIdentityService } from 'vscode/vscode/vs/platform/uriIdentity/common/uriIdentity.service';
|
|
8
|
-
import { UserDataProfilesService, reviveProfile } from 'vscode/vscode/vs/platform/userDataProfile/common/userDataProfile';
|
|
9
|
-
|
|
10
|
-
let BrowserUserDataProfilesService = class BrowserUserDataProfilesService extends UserDataProfilesService {
|
|
11
|
-
constructor(environmentService, fileService, uriIdentityService, logService) {
|
|
12
|
-
super(environmentService, fileService, uriIdentityService, logService);
|
|
13
|
-
this.changesBroadcastChannel = this._register(( new BroadcastDataChannel(`${UserDataProfilesService.PROFILES_KEY}.changes`)));
|
|
14
|
-
this._register(this.changesBroadcastChannel.onDidReceiveData(changes => {
|
|
15
|
-
try {
|
|
16
|
-
this._profilesObject = undefined;
|
|
17
|
-
const added = ( changes.added.map(p => reviveProfile(p, this.profilesHome.scheme)));
|
|
18
|
-
const removed = ( changes.removed.map(p => reviveProfile(p, this.profilesHome.scheme)));
|
|
19
|
-
const updated = ( changes.updated.map(p => reviveProfile(p, this.profilesHome.scheme)));
|
|
20
|
-
this.updateTransientProfiles(added.filter(a => a.isTransient), removed.filter(a => a.isTransient), updated.filter(a => a.isTransient));
|
|
21
|
-
this._onDidChangeProfiles.fire({
|
|
22
|
-
added,
|
|
23
|
-
removed,
|
|
24
|
-
updated,
|
|
25
|
-
all: this.profiles
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
catch (error) { }
|
|
29
|
-
}));
|
|
30
|
-
}
|
|
31
|
-
updateTransientProfiles(added, removed, updated) {
|
|
32
|
-
if (added.length) {
|
|
33
|
-
this.transientProfilesObject.profiles.push(...added);
|
|
34
|
-
}
|
|
35
|
-
if (removed.length || updated.length) {
|
|
36
|
-
const allTransientProfiles = this.transientProfilesObject.profiles;
|
|
37
|
-
this.transientProfilesObject.profiles = [];
|
|
38
|
-
for (const profile of allTransientProfiles) {
|
|
39
|
-
if (( removed.some(p => profile.id === p.id))) {
|
|
40
|
-
continue;
|
|
41
|
-
}
|
|
42
|
-
this.transientProfilesObject.profiles.push(updated.find(p => profile.id === p.id) ?? profile);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
getStoredProfiles() {
|
|
47
|
-
try {
|
|
48
|
-
const value = localStorage.getItem(UserDataProfilesService.PROFILES_KEY);
|
|
49
|
-
if (value) {
|
|
50
|
-
return revive(JSON.parse(value));
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
catch (error) {
|
|
54
|
-
this.logService.error(error);
|
|
55
|
-
}
|
|
56
|
-
return [];
|
|
57
|
-
}
|
|
58
|
-
triggerProfilesChanges(added, removed, updated) {
|
|
59
|
-
super.triggerProfilesChanges(added, removed, updated);
|
|
60
|
-
this.changesBroadcastChannel.postData({ added, removed, updated });
|
|
61
|
-
}
|
|
62
|
-
saveStoredProfiles(storedProfiles) {
|
|
63
|
-
localStorage.setItem(UserDataProfilesService.PROFILES_KEY, JSON.stringify(storedProfiles));
|
|
64
|
-
}
|
|
65
|
-
getStoredProfileAssociations() {
|
|
66
|
-
const migrateKey = 'profileAssociationsMigration';
|
|
67
|
-
try {
|
|
68
|
-
const value = localStorage.getItem(UserDataProfilesService.PROFILE_ASSOCIATIONS_KEY);
|
|
69
|
-
if (value) {
|
|
70
|
-
let associations = JSON.parse(value);
|
|
71
|
-
if (!localStorage.getItem(migrateKey)) {
|
|
72
|
-
associations = this.migrateStoredProfileAssociations(associations);
|
|
73
|
-
this.saveStoredProfileAssociations(associations);
|
|
74
|
-
localStorage.setItem(migrateKey, 'true');
|
|
75
|
-
}
|
|
76
|
-
return associations;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
catch (error) {
|
|
80
|
-
this.logService.error(error);
|
|
81
|
-
}
|
|
82
|
-
return {};
|
|
83
|
-
}
|
|
84
|
-
saveStoredProfileAssociations(storedProfileAssociations) {
|
|
85
|
-
localStorage.setItem(UserDataProfilesService.PROFILE_ASSOCIATIONS_KEY, JSON.stringify(storedProfileAssociations));
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
BrowserUserDataProfilesService = ( __decorate([
|
|
89
|
-
( __param(0, IEnvironmentService)),
|
|
90
|
-
( __param(1, IFileService)),
|
|
91
|
-
( __param(2, IUriIdentityService)),
|
|
92
|
-
( __param(3, ILogService))
|
|
93
|
-
], BrowserUserDataProfilesService));
|
|
94
|
-
|
|
95
|
-
export { BrowserUserDataProfilesService };
|
|
@@ -1,331 +0,0 @@
|
|
|
1
|
-
import { deepClone, equals } from 'vscode/vscode/vs/base/common/objects';
|
|
2
|
-
import { semverExports } from 'vscode/external/vscode-semver/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 };
|