@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.
Files changed (29) hide show
  1. package/package.json +3 -2
  2. package/userDataSync.js +5 -76
  3. package/vscode/src/vs/platform/userDataSync/common/userDataSyncResourceProvider.js +6 -6
  4. package/vscode/src/vs/platform/userDataSync/common/userDataSyncService.js +6 -6
  5. package/vscode/src/vs/workbench/services/userDataSync/browser/userDataSyncWorkbenchService.js +1 -1
  6. package/vscode/src/vs/platform/userDataProfile/browser/userDataProfile.js +0 -95
  7. package/vscode/src/vs/platform/userDataProfile/common/userDataProfileStorageService.service.js +0 -5
  8. package/vscode/src/vs/platform/userDataSync/common/extensionsMerge.js +0 -331
  9. package/vscode/src/vs/platform/userDataSync/common/extensionsSync.js +0 -545
  10. package/vscode/src/vs/platform/userDataSync/common/globalStateMerge.js +0 -102
  11. package/vscode/src/vs/platform/userDataSync/common/globalStateSync.js +0 -431
  12. package/vscode/src/vs/platform/userDataSync/common/keybindingsMerge.js +0 -277
  13. package/vscode/src/vs/platform/userDataSync/common/keybindingsSync.js +0 -328
  14. package/vscode/src/vs/platform/userDataSync/common/settingsSync.js +0 -322
  15. package/vscode/src/vs/platform/userDataSync/common/snippetsMerge.js +0 -126
  16. package/vscode/src/vs/platform/userDataSync/common/snippetsSync.js +0 -478
  17. package/vscode/src/vs/platform/userDataSync/common/tasksSync.js +0 -245
  18. package/vscode/src/vs/workbench/services/userData/browser/userDataInit.js +0 -62
  19. package/vscode/src/vs/workbench/services/userDataProfile/browser/extensionsResource.js +0 -328
  20. package/vscode/src/vs/workbench/services/userDataProfile/browser/globalStateResource.js +0 -144
  21. package/vscode/src/vs/workbench/services/userDataProfile/browser/keybindingsResource.js +0 -119
  22. package/vscode/src/vs/workbench/services/userDataProfile/browser/media/userDataProfileView.css.js +0 -6
  23. package/vscode/src/vs/workbench/services/userDataProfile/browser/settingsResource.js +0 -140
  24. package/vscode/src/vs/workbench/services/userDataProfile/browser/snippetsResource.js +0 -155
  25. package/vscode/src/vs/workbench/services/userDataProfile/browser/tasksResource.js +0 -118
  26. package/vscode/src/vs/workbench/services/userDataProfile/browser/userDataProfileImportExportService.js +0 -1453
  27. package/vscode/src/vs/workbench/services/userDataProfile/browser/userDataProfileInit.js +0 -151
  28. package/vscode/src/vs/workbench/services/userDataProfile/browser/userDataProfileManagement.js +0 -180
  29. 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.2.0",
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.2.0"
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 { IUserDataSyncStoreManagementService, IUserDataAutoSyncService, IUserDataSyncStoreService, IUserDataSyncEnablementService, IUserDataSyncService, IUserDataSyncLogService, IUserDataSyncResourceProviderService, IUserDataSyncLocalStoreService, IUserDataSyncUtilService } from 'vscode/vscode/vs/platform/userDataSync/common/userDataSync.service';
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 { UserDataProfileImportExportService } from './vscode/src/vs/workbench/services/userDataProfile/browser/userDataProfileImportExportService.js';
38
- import { UserDataProfileManagementService } from './vscode/src/vs/workbench/services/userDataProfile/browser/userDataProfileManagement.js';
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
- [( IUserDataInitializationService.toString())]: new SyncDescriptor(InjectedUserDataInitializationService, [], true),
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 './snippetsSync.js';
14
- import { parseSettingsSyncContent } from './settingsSync.js';
15
- import { getKeybindingsContentFromSyncContent } from './keybindingsSync.js';
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 './tasksSync.js';
18
- import { stringify, parseExtensions, LocalExtensionsProvider } from './extensionsSync.js';
19
- import { stringify as stringify$1, LocalGlobalStateProvider } from './globalStateSync.js';
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 './extensionsSync.js';
19
- import { GlobalStateSynchroniser } from './globalStateSync.js';
20
- import { KeybindingsSynchroniser } from './keybindingsSync.js';
21
- import { SettingsSynchroniser } from './settingsSync.js';
22
- import { SnippetsSynchroniser } from './snippetsSync.js';
23
- import { TasksSynchroniser } from './tasksSync.js';
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';
@@ -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 '../../../../platform/userDataSync/common/globalStateSync.js';
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,5 +0,0 @@
1
- import { createDecorator } from 'vscode/vscode/vs/platform/instantiation/common/instantiation';
2
-
3
- const IUserDataProfileStorageService = ( createDecorator('IUserDataProfileStorageService'));
4
-
5
- export { IUserDataProfileStorageService };
@@ -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 };