@codingame/monaco-vscode-extensions-service-override 25.1.1 → 26.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/index.js +7 -0
  2. package/package.json +3 -3
  3. package/vscode/src/vs/base/common/console.js +24 -15
  4. package/vscode/src/vs/platform/extensionManagement/common/extensionManagementCLI.d.ts +4 -1
  5. package/vscode/src/vs/platform/extensionManagement/common/extensionManagementCLI.js +149 -84
  6. package/vscode/src/vs/platform/extensionResourceLoader/browser/extensionResourceLoaderService.js +20 -12
  7. package/vscode/src/vs/platform/extensionResourceLoader/common/extensionResourceLoader.js +38 -21
  8. package/vscode/src/vs/platform/remote/common/managedSocket.js +7 -10
  9. package/vscode/src/vs/workbench/api/browser/mainThreadAiEmbeddingVector.js +5 -2
  10. package/vscode/src/vs/workbench/api/browser/mainThreadAiRelatedInformation.js +5 -2
  11. package/vscode/src/vs/workbench/api/browser/mainThreadAiSettingsSearch.js +4 -1
  12. package/vscode/src/vs/workbench/api/browser/mainThreadAuthentication.js +200 -143
  13. package/vscode/src/vs/workbench/api/browser/mainThreadBulkEdits.js +10 -14
  14. package/vscode/src/vs/workbench/api/browser/mainThreadCLICommands.js +41 -31
  15. package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents2.d.ts +9 -12
  16. package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents2.js +168 -115
  17. package/vscode/src/vs/workbench/api/browser/mainThreadChatCodeMapper.js +11 -13
  18. package/vscode/src/vs/workbench/api/browser/mainThreadChatContext.d.ts +5 -5
  19. package/vscode/src/vs/workbench/api/browser/mainThreadChatContext.js +42 -15
  20. package/vscode/src/vs/workbench/api/browser/mainThreadChatOutputRenderer.js +8 -7
  21. package/vscode/src/vs/workbench/api/browser/mainThreadChatSessions.d.ts +4 -2
  22. package/vscode/src/vs/workbench/api/browser/mainThreadChatSessions.js +170 -99
  23. package/vscode/src/vs/workbench/api/browser/mainThreadChatStatus.js +2 -5
  24. package/vscode/src/vs/workbench/api/browser/mainThreadClipboard.js +4 -9
  25. package/vscode/src/vs/workbench/api/browser/mainThreadCodeInsets.js +13 -12
  26. package/vscode/src/vs/workbench/api/browser/mainThreadCommands.js +16 -19
  27. package/vscode/src/vs/workbench/api/browser/mainThreadComments.js +127 -70
  28. package/vscode/src/vs/workbench/api/browser/mainThreadConfiguration.js +80 -26
  29. package/vscode/src/vs/workbench/api/browser/mainThreadConsole.js +5 -11
  30. package/vscode/src/vs/workbench/api/browser/mainThreadCustomEditors.js +199 -97
  31. package/vscode/src/vs/workbench/api/browser/mainThreadDataChannels.js +1 -4
  32. package/vscode/src/vs/workbench/api/browser/mainThreadDebugService.js +88 -73
  33. package/vscode/src/vs/workbench/api/browser/mainThreadDecorations.js +5 -5
  34. package/vscode/src/vs/workbench/api/browser/mainThreadDiagnostics.js +16 -12
  35. package/vscode/src/vs/workbench/api/browser/mainThreadDialogs.js +10 -8
  36. package/vscode/src/vs/workbench/api/browser/mainThreadDocumentContentProviders.js +14 -6
  37. package/vscode/src/vs/workbench/api/browser/mainThreadDocuments.js +52 -37
  38. package/vscode/src/vs/workbench/api/browser/mainThreadDocumentsAndEditors.js +78 -58
  39. package/vscode/src/vs/workbench/api/browser/mainThreadEditSessionIdentityParticipant.js +5 -7
  40. package/vscode/src/vs/workbench/api/browser/mainThreadEditor.js +75 -63
  41. package/vscode/src/vs/workbench/api/browser/mainThreadEditorTabs.js +99 -91
  42. package/vscode/src/vs/workbench/api/browser/mainThreadEditors.js +93 -55
  43. package/vscode/src/vs/workbench/api/browser/mainThreadEmbeddings.js +3 -7
  44. package/vscode/src/vs/workbench/api/browser/mainThreadExtensionService.js +85 -60
  45. package/vscode/src/vs/workbench/api/browser/mainThreadFileSystem.js +49 -45
  46. package/vscode/src/vs/workbench/api/browser/mainThreadFileSystemEventService.js +114 -72
  47. package/vscode/src/vs/workbench/api/browser/mainThreadInteractive.js +4 -7
  48. package/vscode/src/vs/workbench/api/browser/mainThreadLabelService.js +1 -4
  49. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures.d.ts +2 -2
  50. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures.js +381 -238
  51. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModelTools.d.ts +7 -3
  52. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModelTools.js +90 -13
  53. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModels.js +81 -58
  54. package/vscode/src/vs/workbench/api/browser/mainThreadLanguages.js +9 -10
  55. package/vscode/src/vs/workbench/api/browser/mainThreadLocalization.js +2 -7
  56. package/vscode/src/vs/workbench/api/browser/mainThreadLogService.js +6 -10
  57. package/vscode/src/vs/workbench/api/browser/mainThreadManagedSockets.js +12 -10
  58. package/vscode/src/vs/workbench/api/browser/mainThreadMcp.d.ts +3 -2
  59. package/vscode/src/vs/workbench/api/browser/mainThreadMcp.js +162 -97
  60. package/vscode/src/vs/workbench/api/browser/mainThreadMessageService.js +32 -26
  61. package/vscode/src/vs/workbench/api/browser/mainThreadNotebook.js +38 -32
  62. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDocuments.js +48 -46
  63. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDocumentsAndEditors.js +22 -18
  64. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDto.js +5 -8
  65. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookEditors.js +35 -21
  66. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookKernels.js +31 -28
  67. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookSaveParticipant.js +5 -7
  68. package/vscode/src/vs/workbench/api/browser/mainThreadOutputService.js +47 -23
  69. package/vscode/src/vs/workbench/api/browser/mainThreadProfileContentHandlers.js +15 -12
  70. package/vscode/src/vs/workbench/api/browser/mainThreadProgress.js +17 -18
  71. package/vscode/src/vs/workbench/api/browser/mainThreadQuickDiff.js +6 -7
  72. package/vscode/src/vs/workbench/api/browser/mainThreadQuickOpen.js +83 -66
  73. package/vscode/src/vs/workbench/api/browser/mainThreadRemoteConnectionData.js +1 -5
  74. package/vscode/src/vs/workbench/api/browser/mainThreadSCM.js +250 -92
  75. package/vscode/src/vs/workbench/api/browser/mainThreadSaveParticipant.js +6 -8
  76. package/vscode/src/vs/workbench/api/browser/mainThreadSearch.js +37 -26
  77. package/vscode/src/vs/workbench/api/browser/mainThreadSecretState.js +34 -21
  78. package/vscode/src/vs/workbench/api/browser/mainThreadShare.js +3 -6
  79. package/vscode/src/vs/workbench/api/browser/mainThreadSpeech.js +19 -14
  80. package/vscode/src/vs/workbench/api/browser/mainThreadStatusBar.js +41 -16
  81. package/vscode/src/vs/workbench/api/browser/mainThreadStorage.js +18 -17
  82. package/vscode/src/vs/workbench/api/browser/mainThreadTask.js +145 -145
  83. package/vscode/src/vs/workbench/api/browser/mainThreadTelemetry.js +19 -11
  84. package/vscode/src/vs/workbench/api/browser/mainThreadTerminalService.js +176 -80
  85. package/vscode/src/vs/workbench/api/browser/mainThreadTerminalShellIntegration.js +52 -21
  86. package/vscode/src/vs/workbench/api/browser/mainThreadTesting.js +26 -24
  87. package/vscode/src/vs/workbench/api/browser/mainThreadTheming.js +1 -4
  88. package/vscode/src/vs/workbench/api/browser/mainThreadTimeline.js +5 -8
  89. package/vscode/src/vs/workbench/api/browser/mainThreadTreeViews.d.ts +4 -1
  90. package/vscode/src/vs/workbench/api/browser/mainThreadTreeViews.js +106 -46
  91. package/vscode/src/vs/workbench/api/browser/mainThreadTunnelService.js +83 -65
  92. package/vscode/src/vs/workbench/api/browser/mainThreadUriOpeners.js +20 -20
  93. package/vscode/src/vs/workbench/api/browser/mainThreadUrls.js +14 -9
  94. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewManager.js +17 -9
  95. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewPanels.js +49 -38
  96. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewViews.js +10 -13
  97. package/vscode/src/vs/workbench/api/browser/mainThreadWebviews.js +38 -27
  98. package/vscode/src/vs/workbench/api/browser/mainThreadWindow.js +5 -11
  99. package/vscode/src/vs/workbench/api/browser/mainThreadWorkspace.d.ts +4 -1
  100. package/vscode/src/vs/workbench/api/browser/mainThreadWorkspace.js +73 -43
  101. package/vscode/src/vs/workbench/api/common/shared/dataTransferCache.js +2 -2
  102. package/vscode/src/vs/workbench/contrib/customEditor/common/customTextEditorModel.js +17 -10
  103. package/vscode/src/vs/workbench/contrib/externalUriOpener/common/contributedOpeners.js +17 -11
  104. package/vscode/src/vs/workbench/services/extensionManagement/browser/extensionBisect.js +107 -80
  105. package/vscode/src/vs/workbench/services/extensionManagement/browser/webExtensionsScannerService.js +336 -175
  106. package/vscode/src/vs/workbench/services/extensions/browser/extensionService.js +126 -71
  107. package/vscode/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.js +76 -54
  108. package/vscode/src/vs/workbench/services/extensions/browser/webWorkerFileSystemProvider.js +1 -2
  109. package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.d.ts +2 -0
  110. package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.js +343 -192
  111. package/vscode/src/vs/workbench/services/extensions/common/extHostCustomers.js +5 -3
  112. package/vscode/src/vs/workbench/services/extensions/common/extensionHostManager.d.ts +0 -1
  113. package/vscode/src/vs/workbench/services/extensions/common/extensionHostManager.js +75 -68
  114. package/vscode/src/vs/workbench/services/extensions/common/extensionRunningLocationTracker.js +135 -36
  115. package/vscode/src/vs/workbench/services/extensions/common/extensionsProposedApi.js +22 -18
  116. package/vscode/src/vs/workbench/services/extensions/common/extensionsUtil.js +14 -12
  117. package/vscode/src/vs/workbench/services/extensions/common/lazyCreateExtensionHostManager.js +21 -9
  118. package/vscode/src/vs/workbench/services/extensions/common/remoteExtensionHost.js +48 -25
  119. package/vscode/src/vs/workbench/services/themes/browser/cssExtensionPoint.d.ts +24 -0
  120. package/vscode/src/vs/workbench/services/themes/browser/cssExtensionPoint.js +300 -0
@@ -46,20 +46,31 @@ import { IUriIdentityService } from '@codingame/monaco-vscode-api/vscode/vs/plat
46
46
 
47
47
  function isGalleryExtensionInfo(obj) {
48
48
  const galleryExtensionInfo = obj;
49
- return typeof galleryExtensionInfo?.id === 'string'
50
- && (galleryExtensionInfo.preRelease === undefined || typeof galleryExtensionInfo.preRelease === 'boolean')
51
- && (galleryExtensionInfo.migrateStorageFrom === undefined || typeof galleryExtensionInfo.migrateStorageFrom === 'string');
49
+ return typeof galleryExtensionInfo?.id === "string" && (galleryExtensionInfo.preRelease === undefined || typeof galleryExtensionInfo.preRelease === "boolean") && (galleryExtensionInfo.migrateStorageFrom === undefined || typeof galleryExtensionInfo.migrateStorageFrom === "string");
52
50
  }
53
51
  function isUriComponents(obj) {
54
52
  if (!obj) {
55
53
  return false;
56
54
  }
57
55
  const thing = obj;
58
- return typeof thing?.path === 'string' &&
59
- typeof thing?.scheme === 'string';
56
+ return typeof thing?.path === "string" && typeof thing?.scheme === "string";
60
57
  }
61
58
  let WebExtensionsScannerService = class WebExtensionsScannerService extends Disposable {
62
- constructor(environmentService, builtinExtensionsScannerService, fileService, logService, galleryService, extensionManifestPropertiesService, extensionResourceLoaderService, extensionStorageService, storageService, productService, userDataProfilesService, uriIdentityService, lifecycleService) {
59
+ constructor(
60
+ environmentService,
61
+ builtinExtensionsScannerService,
62
+ fileService,
63
+ logService,
64
+ galleryService,
65
+ extensionManifestPropertiesService,
66
+ extensionResourceLoaderService,
67
+ extensionStorageService,
68
+ storageService,
69
+ productService,
70
+ userDataProfilesService,
71
+ uriIdentityService,
72
+ lifecycleService
73
+ ) {
63
74
  super();
64
75
  this.environmentService = environmentService;
65
76
  this.builtinExtensionsScannerService = builtinExtensionsScannerService;
@@ -77,8 +88,11 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
77
88
  this.customBuiltinExtensionsCacheResource = undefined;
78
89
  this.resourcesAccessQueueMap = ( new ResourceMap());
79
90
  if (isWeb) {
80
- this.systemExtensionsCacheResource = joinPath(environmentService.userRoamingDataHome, 'systemExtensionsCache.json');
81
- this.customBuiltinExtensionsCacheResource = joinPath(environmentService.userRoamingDataHome, 'customBuiltinExtensionsCache.json');
91
+ this.systemExtensionsCacheResource = joinPath(environmentService.userRoamingDataHome, "systemExtensionsCache.json");
92
+ this.customBuiltinExtensionsCacheResource = joinPath(
93
+ environmentService.userRoamingDataHome,
94
+ "customBuiltinExtensionsCache.json"
95
+ );
82
96
  lifecycleService.when(LifecyclePhase.Eventually).then(() => this.updateCaches());
83
97
  }
84
98
  this.extensionsEnabledWithApiProposalVersion = productService.extensionsEnabledWithApiProposalVersion?.map(id => id.toLowerCase()) ?? [];
@@ -90,24 +104,23 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
90
104
  const extensionLocations = [];
91
105
  const extensionGalleryResources = [];
92
106
  const extensionsToMigrate = [];
93
- const customBuiltinExtensionsInfo = this.environmentService.options && Array.isArray(this.environmentService.options.additionalBuiltinExtensions)
94
- ? ( this.environmentService.options.additionalBuiltinExtensions.map(
95
- additionalBuiltinExtension => isString(additionalBuiltinExtension) ? { id: additionalBuiltinExtension } : additionalBuiltinExtension
96
- ))
97
- : [];
107
+ const customBuiltinExtensionsInfo = this.environmentService.options && Array.isArray(this.environmentService.options.additionalBuiltinExtensions) ? ( this.environmentService.options.additionalBuiltinExtensions.map(additionalBuiltinExtension => isString(additionalBuiltinExtension) ? {
108
+ id: additionalBuiltinExtension
109
+ } : additionalBuiltinExtension)) : [];
98
110
  for (const e of customBuiltinExtensionsInfo) {
99
111
  if (isGalleryExtensionInfo(e)) {
100
- extensions.push({ id: e.id, preRelease: !!e.preRelease });
112
+ extensions.push({
113
+ id: e.id,
114
+ preRelease: !!e.preRelease
115
+ });
101
116
  if (e.migrateStorageFrom) {
102
117
  extensionsToMigrate.push([e.migrateStorageFrom, e.id]);
103
118
  }
104
- }
105
- else if (isUriComponents(e)) {
119
+ } else if (isUriComponents(e)) {
106
120
  const extensionLocation = URI.revive(e);
107
121
  if (await this.extensionResourceLoaderService.isExtensionGalleryResource(extensionLocation)) {
108
122
  extensionGalleryResources.push(extensionLocation);
109
- }
110
- else {
123
+ } else {
111
124
  extensionLocations.push(extensionLocation);
112
125
  }
113
126
  }
@@ -116,15 +129,23 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
116
129
  extensions = await this.checkAdditionalBuiltinExtensions(extensions);
117
130
  }
118
131
  if (extensions.length) {
119
- this.logService.info('Found additional builtin gallery extensions in env', extensions);
132
+ this.logService.info("Found additional builtin gallery extensions in env", extensions);
120
133
  }
121
134
  if (extensionLocations.length) {
122
- this.logService.info('Found additional builtin location extensions in env', ( extensionLocations.map(e => ( e.toString()))));
135
+ this.logService.info("Found additional builtin location extensions in env", ( extensionLocations.map(e => ( e.toString()))));
123
136
  }
124
137
  if (extensionGalleryResources.length) {
125
- this.logService.info('Found additional builtin extension gallery resources in env', ( extensionGalleryResources.map(e => ( e.toString()))));
138
+ this.logService.info(
139
+ "Found additional builtin extension gallery resources in env",
140
+ ( extensionGalleryResources.map(e => ( e.toString())))
141
+ );
126
142
  }
127
- return { extensions, extensionsToMigrate, extensionLocations, extensionGalleryResources };
143
+ return {
144
+ extensions,
145
+ extensionsToMigrate,
146
+ extensionLocations,
147
+ extensionGalleryResources
148
+ };
128
149
  })();
129
150
  }
130
151
  return this._customBuiltinExtensionsInfoPromise;
@@ -133,17 +154,25 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
133
154
  const extensionsControlManifest = await this.galleryService.getExtensionsControlManifest();
134
155
  const result = [];
135
156
  for (const extension of extensions) {
136
- if (isMalicious({ id: extension.id }, extensionsControlManifest.malicious)) {
137
- this.logService.info(`Checking additional builtin extensions: Ignoring '${extension.id}' because it is reported to be malicious.`);
157
+ if (isMalicious({
158
+ id: extension.id
159
+ }, extensionsControlManifest.malicious)) {
160
+ this.logService.info(
161
+ `Checking additional builtin extensions: Ignoring '${extension.id}' because it is reported to be malicious.`
162
+ );
138
163
  continue;
139
164
  }
140
165
  const deprecationInfo = extensionsControlManifest.deprecated[extension.id.toLowerCase()];
141
166
  if (deprecationInfo?.extension?.autoMigrate) {
142
167
  const preReleaseExtensionId = deprecationInfo.extension.id;
143
- this.logService.info(`Checking additional builtin extensions: '${extension.id}' is deprecated, instead using '${preReleaseExtensionId}'`);
144
- result.push({ id: preReleaseExtensionId, preRelease: !!extension.preRelease });
145
- }
146
- else {
168
+ this.logService.info(
169
+ `Checking additional builtin extensions: '${extension.id}' is deprecated, instead using '${preReleaseExtensionId}'`
170
+ );
171
+ result.push({
172
+ id: preReleaseExtensionId,
173
+ preRelease: !!extension.preRelease
174
+ });
175
+ } else {
147
176
  result.push(extension);
148
177
  }
149
178
  }
@@ -167,30 +196,35 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
167
196
  async readCustomBuiltinExtensions(scanOptions) {
168
197
  const [customBuiltinExtensionsFromLocations, customBuiltinExtensionsFromGallery] = await Promise.all([
169
198
  this.getCustomBuiltinExtensionsFromLocations(scanOptions),
170
- this.getCustomBuiltinExtensionsFromGallery(scanOptions),
199
+ this.getCustomBuiltinExtensionsFromGallery(scanOptions)
171
200
  ]);
172
- const customBuiltinExtensions = [...customBuiltinExtensionsFromLocations, ...customBuiltinExtensionsFromGallery];
201
+ const customBuiltinExtensions = [
202
+ ...customBuiltinExtensionsFromLocations,
203
+ ...customBuiltinExtensionsFromGallery
204
+ ];
173
205
  await this.migrateExtensionsStorage(customBuiltinExtensions);
174
206
  return customBuiltinExtensions;
175
207
  }
176
208
  async getCustomBuiltinExtensionsFromLocations(scanOptions) {
177
- const { extensionLocations } = await this.readCustomBuiltinExtensionsInfoFromEnv();
209
+ const {
210
+ extensionLocations
211
+ } = await this.readCustomBuiltinExtensionsInfoFromEnv();
178
212
  if (!extensionLocations.length) {
179
213
  return [];
180
214
  }
181
215
  const result = [];
182
- await Promise.allSettled(( extensionLocations.map(async (extensionLocation) => {
216
+ await Promise.allSettled(( extensionLocations.map(async extensionLocation => {
183
217
  try {
184
218
  const webExtension = await this.toWebExtension(extensionLocation);
185
219
  const extension = await this.toScannedExtension(webExtension, true);
186
220
  if (extension.isValid || !scanOptions?.skipInvalidExtensions) {
187
221
  result.push(extension);
222
+ } else {
223
+ this.logService.info(
224
+ `Skipping invalid additional builtin extension ${webExtension.identifier.id}`
225
+ );
188
226
  }
189
- else {
190
- this.logService.info(`Skipping invalid additional builtin extension ${webExtension.identifier.id}`);
191
- }
192
- }
193
- catch (error) {
227
+ } catch (error) {
194
228
  this.logService.info(`Error while fetching the additional builtin extension ${( extensionLocation.toString())}.`, getErrorMessage(error));
195
229
  }
196
230
  })));
@@ -198,38 +232,58 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
198
232
  }
199
233
  async getCustomBuiltinExtensionsFromGallery(scanOptions) {
200
234
  if (!this.galleryService.isEnabled()) {
201
- this.logService.info('Ignoring fetching additional builtin extensions from gallery as it is disabled.');
235
+ this.logService.info(
236
+ "Ignoring fetching additional builtin extensions from gallery as it is disabled."
237
+ );
202
238
  return [];
203
239
  }
204
240
  const result = [];
205
- const { extensions, extensionGalleryResources } = await this.readCustomBuiltinExtensionsInfoFromEnv();
241
+ const {
242
+ extensions,
243
+ extensionGalleryResources
244
+ } = await this.readCustomBuiltinExtensionsInfoFromEnv();
206
245
  try {
207
246
  const cacheValue = JSON.stringify({
208
247
  extensions: extensions.sort((a, b) => a.id.localeCompare(b.id)),
209
248
  extensionGalleryResources: ( extensionGalleryResources.map(e => ( e.toString()))).sort()
210
249
  });
211
- const useCache = this.storageService.get('additionalBuiltinExtensions', StorageScope.APPLICATION, '{}') === cacheValue;
250
+ const useCache = this.storageService.get("additionalBuiltinExtensions", StorageScope.APPLICATION, "{}") === cacheValue;
212
251
  const webExtensions = await (useCache ? this.getCustomBuiltinExtensionsFromCache() : this.updateCustomBuiltinExtensionsCache());
213
252
  if (webExtensions.length) {
214
- await Promise.all(( webExtensions.map(async (webExtension) => {
253
+ await Promise.all(( webExtensions.map(async webExtension => {
215
254
  try {
216
255
  const extension = await this.toScannedExtension(webExtension, true);
217
256
  if (extension.isValid || !scanOptions?.skipInvalidExtensions) {
218
257
  result.push(extension);
258
+ } else {
259
+ this.logService.info(
260
+ `Skipping invalid additional builtin gallery extension ${webExtension.identifier.id}`
261
+ );
219
262
  }
220
- else {
221
- this.logService.info(`Skipping invalid additional builtin gallery extension ${webExtension.identifier.id}`);
222
- }
223
- }
224
- catch (error) {
225
- this.logService.info(`Ignoring additional builtin extension ${webExtension.identifier.id} because there is an error while converting it into scanned extension`, getErrorMessage(error));
263
+ } catch (error) {
264
+ this.logService.info(
265
+ `Ignoring additional builtin extension ${webExtension.identifier.id} because there is an error while converting it into scanned extension`,
266
+ getErrorMessage(error)
267
+ );
226
268
  }
227
269
  })));
228
270
  }
229
- this.storageService.store('additionalBuiltinExtensions', cacheValue, StorageScope.APPLICATION, StorageTarget.MACHINE);
230
- }
231
- catch (error) {
232
- this.logService.info('Ignoring following additional builtin extensions as there is an error while fetching them from gallery', ( extensions.map(({ id }) => id)), getErrorMessage(error));
271
+ this.storageService.store(
272
+ "additionalBuiltinExtensions",
273
+ cacheValue,
274
+ StorageScope.APPLICATION,
275
+ StorageTarget.MACHINE
276
+ );
277
+ } catch (error) {
278
+ this.logService.info(
279
+ "Ignoring following additional builtin extensions as there is an error while fetching them from gallery",
280
+ ( extensions.map((
281
+ {
282
+ id
283
+ }
284
+ ) => id)),
285
+ getErrorMessage(error)
286
+ );
233
287
  }
234
288
  return result;
235
289
  }
@@ -253,27 +307,35 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
253
307
  async migrateExtensionsStorage(customBuiltinExtensions) {
254
308
  if (!this._migrateExtensionsStoragePromise) {
255
309
  this._migrateExtensionsStoragePromise = (async () => {
256
- const { extensionsToMigrate } = await this.readCustomBuiltinExtensionsInfoFromEnv();
310
+ const {
311
+ extensionsToMigrate
312
+ } = await this.readCustomBuiltinExtensionsInfoFromEnv();
257
313
  if (!extensionsToMigrate.length) {
258
314
  return;
259
315
  }
260
- const fromExtensions = await this.galleryService.getExtensions(( extensionsToMigrate.map(([id]) => ({ id }))), CancellationToken.None);
316
+ const fromExtensions = await this.galleryService.getExtensions(( extensionsToMigrate.map(([id]) => ({
317
+ id
318
+ }))), CancellationToken.None);
261
319
  try {
262
320
  await Promise.allSettled(( extensionsToMigrate.map(async ([from, to]) => {
263
- const toExtension = customBuiltinExtensions.find(extension => areSameExtensions(extension.identifier, { id: to }));
321
+ const toExtension = customBuiltinExtensions.find(extension => areSameExtensions(extension.identifier, {
322
+ id: to
323
+ }));
264
324
  if (toExtension) {
265
- const fromExtension = fromExtensions.find(extension => areSameExtensions(extension.identifier, { id: from }));
325
+ const fromExtension = fromExtensions.find(extension => areSameExtensions(extension.identifier, {
326
+ id: from
327
+ }));
266
328
  const fromExtensionManifest = fromExtension ? await this.galleryService.getManifest(fromExtension, CancellationToken.None) : null;
267
329
  const fromExtensionId = fromExtensionManifest ? getExtensionId(fromExtensionManifest.publisher, fromExtensionManifest.name) : from;
268
330
  const toExtensionId = getExtensionId(toExtension.manifest.publisher, toExtension.manifest.name);
269
331
  this.extensionStorageService.addToMigrationList(fromExtensionId, toExtensionId);
270
- }
271
- else {
272
- this.logService.info(`Skipped migrating extension storage from '${from}' to '${to}', because the '${to}' extension is not found.`);
332
+ } else {
333
+ this.logService.info(
334
+ `Skipped migrating extension storage from '${from}' to '${to}', because the '${to}' extension is not found.`
335
+ );
273
336
  }
274
337
  })));
275
- }
276
- catch (error) {
338
+ } catch (error) {
277
339
  this.logService.error(error);
278
340
  }
279
341
  })();
@@ -286,8 +348,7 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
286
348
  }
287
349
  async updateSystemExtensionsCache() {
288
350
  const systemExtensions = await this.builtinExtensionsScannerService.scanBuiltinExtensions();
289
- const cachedSystemExtensions = (await this.readSystemExtensionsCache())
290
- .filter(cached => {
351
+ const cachedSystemExtensions = (await this.readSystemExtensionsCache()).filter(cached => {
291
352
  const systemExtension = systemExtensions.find(e => areSameExtensions(e.identifier, cached.identifier));
292
353
  return systemExtension && semverExports.gt(cached.version, systemExtension.manifest.version);
293
354
  });
@@ -296,8 +357,11 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
296
357
  async updateCustomBuiltinExtensionsCache() {
297
358
  if (!this._updateCustomBuiltinExtensionsCachePromise) {
298
359
  this._updateCustomBuiltinExtensionsCachePromise = (async () => {
299
- this.logService.info('Updating additional builtin extensions cache');
300
- const { extensions, extensionGalleryResources } = await this.readCustomBuiltinExtensionsInfoFromEnv();
360
+ this.logService.info("Updating additional builtin extensions cache");
361
+ const {
362
+ extensions,
363
+ extensionGalleryResources
364
+ } = await this.readCustomBuiltinExtensionsInfoFromEnv();
301
365
  const [galleryWebExtensions, extensionGalleryResourceWebExtensions] = await Promise.all([
302
366
  this.resolveBuiltinGalleryExtensions(extensions),
303
367
  this.resolveBuiltinExtensionGalleryResources(extensionGalleryResources)
@@ -320,14 +384,19 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
320
384
  }
321
385
  const result = ( new Map());
322
386
  const extensionInfos = [];
323
- await Promise.all(( extensionGalleryResources.map(async (extensionGalleryResource) => {
387
+ await Promise.all(( extensionGalleryResources.map(async extensionGalleryResource => {
324
388
  try {
325
389
  const webExtension = await this.toWebExtensionFromExtensionGalleryResource(extensionGalleryResource);
326
390
  result.set(webExtension.identifier.id.toLowerCase(), webExtension);
327
- extensionInfos.push({ id: webExtension.identifier.id, version: webExtension.version });
328
- }
329
- catch (error) {
330
- this.logService.info(`Ignoring additional builtin extension from gallery resource ${( extensionGalleryResource.toString())} because there is an error while converting it into web extension`, getErrorMessage(error));
391
+ extensionInfos.push({
392
+ id: webExtension.identifier.id,
393
+ version: webExtension.version
394
+ });
395
+ } catch (error) {
396
+ this.logService.info(
397
+ `Ignoring additional builtin extension from gallery resource ${( extensionGalleryResource.toString())} because there is an error while converting it into web extension`,
398
+ getErrorMessage(error)
399
+ );
331
400
  }
332
401
  })));
333
402
  const galleryExtensions = await this.galleryService.getExtensions(extensionInfos, CancellationToken.None);
@@ -336,10 +405,18 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
336
405
  if (webExtension) {
337
406
  result.set(galleryExtension.identifier.id.toLowerCase(), {
338
407
  ...webExtension,
339
- identifier: { id: webExtension.identifier.id, uuid: galleryExtension.identifier.uuid },
408
+ identifier: {
409
+ id: webExtension.identifier.id,
410
+ uuid: galleryExtension.identifier.uuid
411
+ },
340
412
  readmeUri: galleryExtension.assets.readme ? ( URI.parse(galleryExtension.assets.readme.uri)) : undefined,
341
413
  changelogUri: galleryExtension.assets.changelog ? ( URI.parse(galleryExtension.assets.changelog.uri)) : undefined,
342
- metadata: { isPreReleaseVersion: galleryExtension.properties.isPreReleaseVersion, preRelease: galleryExtension.properties.isPreReleaseVersion, isBuiltin: true, pinned: true }
414
+ metadata: {
415
+ isPreReleaseVersion: galleryExtension.properties.isPreReleaseVersion,
416
+ preRelease: galleryExtension.properties.isPreReleaseVersion,
417
+ isBuiltin: true,
418
+ pinned: true
419
+ }
343
420
  });
344
421
  }
345
422
  }
@@ -351,17 +428,30 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
351
428
  }
352
429
  const webExtensions = [];
353
430
  const galleryExtensionsMap = await this.getExtensionsWithDependenciesAndPackedExtensions(extensions);
354
- const missingExtensions = extensions.filter(({ id }) => !( galleryExtensionsMap.has(id.toLowerCase())));
431
+ const missingExtensions = extensions.filter((
432
+ {
433
+ id
434
+ }
435
+ ) => !( galleryExtensionsMap.has(id.toLowerCase())));
355
436
  if (missingExtensions.length) {
356
- this.logService.info('Skipping the additional builtin extensions because their compatible versions are not found.', missingExtensions);
437
+ this.logService.info(
438
+ "Skipping the additional builtin extensions because their compatible versions are not found.",
439
+ missingExtensions
440
+ );
357
441
  }
358
- await Promise.all(( [...( galleryExtensionsMap.values())].map(async (gallery) => {
442
+ await Promise.all(( [...( galleryExtensionsMap.values())].map(async gallery => {
359
443
  try {
360
- const webExtension = await this.toWebExtensionFromGallery(gallery, { isPreReleaseVersion: gallery.properties.isPreReleaseVersion, preRelease: gallery.properties.isPreReleaseVersion, isBuiltin: true });
444
+ const webExtension = await this.toWebExtensionFromGallery(gallery, {
445
+ isPreReleaseVersion: gallery.properties.isPreReleaseVersion,
446
+ preRelease: gallery.properties.isPreReleaseVersion,
447
+ isBuiltin: true
448
+ });
361
449
  webExtensions.push(webExtension);
362
- }
363
- catch (error) {
364
- this.logService.info(`Ignoring additional builtin extension ${gallery.identifier.id} because there is an error while converting it into web extension`, getErrorMessage(error));
450
+ } catch (error) {
451
+ this.logService.info(
452
+ `Ignoring additional builtin extension ${gallery.identifier.id} because there is an error while converting it into web extension`,
453
+ getErrorMessage(error)
454
+ );
365
455
  }
366
456
  })));
367
457
  return webExtensions;
@@ -369,9 +459,15 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
369
459
  async resolveDependenciesAndPackedExtensions(webExtensions, result) {
370
460
  const extensionInfos = [];
371
461
  for (const webExtension of webExtensions) {
372
- for (const e of [...(webExtension.manifest?.extensionDependencies ?? []), ...(webExtension.manifest?.extensionPack ?? [])]) {
462
+ for (const e of [
463
+ ...(webExtension.manifest?.extensionDependencies ?? []),
464
+ ...(webExtension.manifest?.extensionPack ?? [])
465
+ ]) {
373
466
  if (!( result.has(e.toLowerCase()))) {
374
- extensionInfos.push({ id: e, version: webExtension.version });
467
+ extensionInfos.push({
468
+ id: e,
469
+ version: webExtension.version
470
+ });
375
471
  }
376
472
  }
377
473
  }
@@ -379,32 +475,55 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
379
475
  return;
380
476
  }
381
477
  const galleryExtensions = await this.getExtensionsWithDependenciesAndPackedExtensions(extensionInfos, ( new Set([...( result.keys())])));
382
- await Promise.all(( [...( galleryExtensions.values())].map(async (gallery) => {
478
+ await Promise.all(( [...( galleryExtensions.values())].map(async gallery => {
383
479
  try {
384
- const webExtension = await this.toWebExtensionFromGallery(gallery, { isPreReleaseVersion: gallery.properties.isPreReleaseVersion, preRelease: gallery.properties.isPreReleaseVersion, isBuiltin: true });
480
+ const webExtension = await this.toWebExtensionFromGallery(gallery, {
481
+ isPreReleaseVersion: gallery.properties.isPreReleaseVersion,
482
+ preRelease: gallery.properties.isPreReleaseVersion,
483
+ isBuiltin: true
484
+ });
385
485
  result.set(webExtension.identifier.id.toLowerCase(), webExtension);
386
- }
387
- catch (error) {
388
- this.logService.info(`Ignoring additional builtin extension ${gallery.identifier.id} because there is an error while converting it into web extension`, getErrorMessage(error));
486
+ } catch (error) {
487
+ this.logService.info(
488
+ `Ignoring additional builtin extension ${gallery.identifier.id} because there is an error while converting it into web extension`,
489
+ getErrorMessage(error)
490
+ );
389
491
  }
390
492
  })));
391
493
  }
392
- async getExtensionsWithDependenciesAndPackedExtensions(toGet, seen = ( new Set()), result = ( new Map())) {
494
+ async getExtensionsWithDependenciesAndPackedExtensions(
495
+ toGet,
496
+ seen = ( new Set()),
497
+ result = ( new Map())
498
+ ) {
393
499
  if (toGet.length === 0) {
394
500
  return result;
395
501
  }
396
- const extensions = await this.galleryService.getExtensions(toGet, { compatible: true, targetPlatform: TargetPlatform.WEB }, CancellationToken.None);
502
+ const extensions = await this.galleryService.getExtensions(toGet, {
503
+ compatible: true,
504
+ targetPlatform: TargetPlatform.WEB
505
+ }, CancellationToken.None);
397
506
  const packsAndDependencies = ( new Map());
398
507
  for (const extension of extensions) {
399
508
  result.set(extension.identifier.id.toLowerCase(), extension);
400
- for (const id of [...(isNonEmptyArray(extension.properties.dependencies) ? extension.properties.dependencies : []), ...(isNonEmptyArray(extension.properties.extensionPack) ? extension.properties.extensionPack : [])]) {
509
+ for (const id of [
510
+ ...(isNonEmptyArray(extension.properties.dependencies) ? extension.properties.dependencies : []),
511
+ ...(isNonEmptyArray(extension.properties.extensionPack) ? extension.properties.extensionPack : [])
512
+ ]) {
401
513
  if (!( result.has(id.toLowerCase())) && !( packsAndDependencies.has(id.toLowerCase())) && !( seen.has(id.toLowerCase()))) {
402
514
  const extensionInfo = toGet.find(e => areSameExtensions(e, extension.identifier));
403
- packsAndDependencies.set(id.toLowerCase(), { id, preRelease: extensionInfo?.preRelease });
515
+ packsAndDependencies.set(id.toLowerCase(), {
516
+ id,
517
+ preRelease: extensionInfo?.preRelease
518
+ });
404
519
  }
405
520
  }
406
521
  }
407
- return this.getExtensionsWithDependenciesAndPackedExtensions([...( packsAndDependencies.values())].filter(({ id }) => !( result.has(id.toLowerCase()))), seen, result);
522
+ return this.getExtensionsWithDependenciesAndPackedExtensions([...( packsAndDependencies.values())].filter((
523
+ {
524
+ id
525
+ }
526
+ ) => !( result.has(id.toLowerCase()))), seen, result);
408
527
  }
409
528
  async scanSystemExtensions() {
410
529
  return this.readSystemExtensions();
@@ -425,18 +544,18 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
425
544
  const devExtensions = this.environmentService.options?.developmentOptions?.extensions;
426
545
  const result = [];
427
546
  if (Array.isArray(devExtensions)) {
428
- await Promise.allSettled(( devExtensions.map(async (devExtension) => {
547
+ await Promise.allSettled(( devExtensions.map(async devExtension => {
429
548
  try {
430
549
  const location = URI.revive(devExtension);
431
550
  if (URI.isUri(location)) {
432
551
  const webExtension = await this.toWebExtension(location);
433
552
  result.push(await this.toScannedExtension(webExtension, false));
553
+ } else {
554
+ this.logService.info(
555
+ `Skipping the extension under development ${devExtension} as it is not URI type.`
556
+ );
434
557
  }
435
- else {
436
- this.logService.info(`Skipping the extension under development ${devExtension} as it is not URI type.`);
437
- }
438
- }
439
- catch (error) {
558
+ } catch (error) {
440
559
  this.logService.info(`Error while fetching the extension under development ${( devExtension.toString())}.`, getErrorMessage(error));
441
560
  }
442
561
  })));
@@ -454,8 +573,7 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
454
573
  async scanExtensionManifest(extensionLocation) {
455
574
  try {
456
575
  return await this.getExtensionManifest(extensionLocation);
457
- }
458
- catch (error) {
576
+ } catch (error) {
459
577
  this.logService.warn(`Error while fetching manifest from ${( extensionLocation.toString())}`, getErrorMessage(error));
460
578
  return null;
461
579
  }
@@ -465,13 +583,24 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
465
583
  return this.addWebExtension(webExtension, profileLocation);
466
584
  }
467
585
  async addExtension(location, metadata, profileLocation) {
468
- const webExtension = await this.toWebExtension(location, undefined, undefined, undefined, undefined, undefined, undefined, metadata);
586
+ const webExtension = await this.toWebExtension(
587
+ location,
588
+ undefined,
589
+ undefined,
590
+ undefined,
591
+ undefined,
592
+ undefined,
593
+ undefined,
594
+ metadata
595
+ );
469
596
  const extension = await this.toScannedExtension(webExtension, false);
470
597
  await this.addToInstalledExtensions([webExtension], profileLocation);
471
598
  return extension;
472
599
  }
473
600
  async removeExtension(extension, profileLocation) {
474
- await this.writeInstalledExtensions(profileLocation, installedExtensions => installedExtensions.filter(installedExtension => !areSameExtensions(installedExtension.identifier, extension.identifier)));
601
+ await this.writeInstalledExtensions(profileLocation, installedExtensions => installedExtensions.filter(
602
+ installedExtension => !areSameExtensions(installedExtension.identifier, extension.identifier)
603
+ ));
475
604
  }
476
605
  async updateMetadata(extension, metadata, profileLocation) {
477
606
  let updatedExtension = undefined;
@@ -479,25 +608,27 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
479
608
  const result = [];
480
609
  for (const installedExtension of installedExtensions) {
481
610
  if (areSameExtensions(extension.identifier, installedExtension.identifier)) {
482
- installedExtension.metadata = { ...installedExtension.metadata, ...metadata };
611
+ installedExtension.metadata = {
612
+ ...installedExtension.metadata,
613
+ ...metadata
614
+ };
483
615
  updatedExtension = installedExtension;
484
616
  result.push(installedExtension);
485
- }
486
- else {
617
+ } else {
487
618
  result.push(installedExtension);
488
619
  }
489
620
  }
490
621
  return result;
491
622
  });
492
623
  if (!updatedExtension) {
493
- throw ( new Error('Extension not found'));
624
+ throw ( new Error("Extension not found"));
494
625
  }
495
626
  return this.toScannedExtension(updatedExtension, extension.isBuiltin);
496
627
  }
497
628
  async copyExtensions(fromProfileLocation, toProfileLocation, filter) {
498
629
  const extensionsToCopy = [];
499
630
  const fromWebExtensions = await this.readInstalledExtensions(fromProfileLocation);
500
- await Promise.all(( fromWebExtensions.map(async (webExtension) => {
631
+ await Promise.all(( fromWebExtensions.map(async webExtension => {
501
632
  const scannedExtension = await this.toScannedExtension(webExtension, false);
502
633
  if (filter(scannedExtension)) {
503
634
  extensionsToCopy.push(webExtension);
@@ -513,7 +644,9 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
513
644
  const extension = await this.toScannedExtension(webExtension, isBuiltin);
514
645
  if (isSystem) {
515
646
  await this.writeSystemExtensionsCache(systemExtensions => {
516
- systemExtensions = systemExtensions.filter(extension => !areSameExtensions(extension.identifier, webExtension.identifier));
647
+ systemExtensions = systemExtensions.filter(
648
+ extension => !areSameExtensions(extension.identifier, webExtension.identifier)
649
+ );
517
650
  systemExtensions.push(webExtension);
518
651
  return systemExtensions;
519
652
  });
@@ -521,7 +654,9 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
521
654
  }
522
655
  if (isBuiltin) {
523
656
  await this.writeCustomBuiltinExtensionsCache(customBuiltinExtensions => {
524
- customBuiltinExtensions = customBuiltinExtensions.filter(extension => !areSameExtensions(extension.identifier, webExtension.identifier));
657
+ customBuiltinExtensions = customBuiltinExtensions.filter(
658
+ extension => !areSameExtensions(extension.identifier, webExtension.identifier)
659
+ );
525
660
  customBuiltinExtensions.push(webExtension);
526
661
  return customBuiltinExtensions;
527
662
  });
@@ -545,12 +680,17 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
545
680
  }
546
681
  async scanInstalledExtensions(profileLocation, scanOptions) {
547
682
  let installedExtensions = await this.readInstalledExtensions(profileLocation);
548
- if (!this.uriIdentityService.extUri.isEqual(profileLocation, this.userDataProfilesService.defaultProfile.extensionsResource)) {
683
+ if (!this.uriIdentityService.extUri.isEqual(
684
+ profileLocation,
685
+ this.userDataProfilesService.defaultProfile.extensionsResource
686
+ )) {
549
687
  installedExtensions = installedExtensions.filter(i => !i.metadata?.isApplicationScoped);
550
688
  const defaultProfileExtensions = await this.readInstalledExtensions(this.userDataProfilesService.defaultProfile.extensionsResource);
551
689
  installedExtensions.push(...defaultProfileExtensions.filter(i => i.metadata?.isApplicationScoped));
552
690
  }
553
- installedExtensions.sort((a, b) => a.identifier.id < b.identifier.id ? -1 : a.identifier.id > b.identifier.id ? 1 : semverExports.rcompare(a.version, b.version));
691
+ installedExtensions.sort(
692
+ (a, b) => a.identifier.id < b.identifier.id ? -1 : a.identifier.id > b.identifier.id ? 1 : semverExports.rcompare(a.version, b.version)
693
+ );
554
694
  const result = ( new Map());
555
695
  for (const webExtension of installedExtensions) {
556
696
  const existing = result.get(webExtension.identifier.id.toLowerCase());
@@ -560,8 +700,7 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
560
700
  const extension = await this.toScannedExtension(webExtension, false);
561
701
  if (extension.isValid || !scanOptions?.skipInvalidExtensions) {
562
702
  result.set(extension.identifier.id.toLowerCase(), extension);
563
- }
564
- else {
703
+ } else {
565
704
  this.logService.info(`Skipping invalid installed extension ${webExtension.identifier.id}`);
566
705
  }
567
706
  }
@@ -573,17 +712,32 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
573
712
  name: galleryExtension.name,
574
713
  version: galleryExtension.version,
575
714
  targetPlatform: galleryExtension.properties.targetPlatform === TargetPlatform.WEB ? TargetPlatform.WEB : undefined
576
- }, 'extension');
715
+ }, "extension");
577
716
  if (!extensionLocation) {
578
- throw ( new Error('No extension gallery service configured.'));
717
+ throw ( new Error("No extension gallery service configured."));
579
718
  }
580
- return this.toWebExtensionFromExtensionGalleryResource(extensionLocation, galleryExtension.identifier, galleryExtension.assets.readme ? ( URI.parse(galleryExtension.assets.readme.uri)) : undefined, galleryExtension.assets.changelog ? ( URI.parse(galleryExtension.assets.changelog.uri)) : undefined, metadata);
719
+ return this.toWebExtensionFromExtensionGalleryResource(
720
+ extensionLocation,
721
+ galleryExtension.identifier,
722
+ galleryExtension.assets.readme ? ( URI.parse(galleryExtension.assets.readme.uri)) : undefined,
723
+ galleryExtension.assets.changelog ? ( URI.parse(galleryExtension.assets.changelog.uri)) : undefined,
724
+ metadata
725
+ );
581
726
  }
582
727
  async toWebExtensionFromExtensionGalleryResource(extensionLocation, identifier, readmeUri, changelogUri, metadata) {
583
728
  const extensionResources = await this.listExtensionResources(extensionLocation);
584
729
  const packageNLSResources = this.getPackageNLSResourceMapFromResources(extensionResources);
585
- const fallbackPackageNLSResource = extensionResources.find(e => basename(e) === 'package.nls.json');
586
- return this.toWebExtension(extensionLocation, identifier, undefined, packageNLSResources, fallbackPackageNLSResource ? ( URI.parse(fallbackPackageNLSResource)) : null, readmeUri, changelogUri, metadata);
730
+ const fallbackPackageNLSResource = extensionResources.find(e => basename(e) === "package.nls.json");
731
+ return this.toWebExtension(
732
+ extensionLocation,
733
+ identifier,
734
+ undefined,
735
+ packageNLSResources,
736
+ fallbackPackageNLSResource ? ( URI.parse(fallbackPackageNLSResource)) : null,
737
+ readmeUri,
738
+ changelogUri,
739
+ metadata
740
+ );
587
741
  }
588
742
  getPackageNLSResourceMapFromResources(extensionResources) {
589
743
  const packageNLSResources = ( new Map());
@@ -595,34 +749,44 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
595
749
  });
596
750
  return packageNLSResources;
597
751
  }
598
- async toWebExtension(extensionLocation, identifier, manifest, packageNLSUris, fallbackPackageNLSUri, readmeUri, changelogUri, metadata) {
752
+ async toWebExtension(
753
+ extensionLocation,
754
+ identifier,
755
+ manifest,
756
+ packageNLSUris,
757
+ fallbackPackageNLSUri,
758
+ readmeUri,
759
+ changelogUri,
760
+ metadata
761
+ ) {
599
762
  if (!manifest) {
600
763
  try {
601
764
  manifest = await this.getExtensionManifest(extensionLocation);
602
- }
603
- catch (error) {
765
+ } catch (error) {
604
766
  throw ( new Error(`Error while fetching manifest from the location '${( extensionLocation.toString())}'. ${getErrorMessage(error)}`));
605
767
  }
606
768
  }
607
769
  if (!this.extensionManifestPropertiesService.canExecuteOnWeb(manifest)) {
608
770
  throw ( new Error(( localize(
609
- 13929,
771
+ 14316,
610
772
  "Cannot add '{0}' because this extension is not a web extension.",
611
773
  manifest.displayName || manifest.name
612
774
  ))));
613
775
  }
614
776
  if (fallbackPackageNLSUri === undefined) {
615
777
  try {
616
- fallbackPackageNLSUri = joinPath(extensionLocation, 'package.nls.json');
778
+ fallbackPackageNLSUri = joinPath(extensionLocation, "package.nls.json");
617
779
  await this.extensionResourceLoaderService.readExtensionResource(fallbackPackageNLSUri);
618
- }
619
- catch (error) {
780
+ } catch (error) {
620
781
  fallbackPackageNLSUri = undefined;
621
782
  }
622
783
  }
623
784
  const defaultManifestTranslations = fallbackPackageNLSUri ? URI.isUri(fallbackPackageNLSUri) ? await this.getTranslations(fallbackPackageNLSUri) : fallbackPackageNLSUri : null;
624
785
  return {
625
- identifier: { id: getGalleryExtensionId(manifest.publisher, manifest.name), uuid: identifier?.uuid },
786
+ identifier: {
787
+ id: getGalleryExtensionId(manifest.publisher, manifest.name),
788
+ uuid: identifier?.uuid
789
+ },
626
790
  version: manifest.version,
627
791
  location: extensionLocation,
628
792
  manifest,
@@ -631,7 +795,7 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
631
795
  packageNLSUris,
632
796
  fallbackPackageNLSUri: URI.isUri(fallbackPackageNLSUri) ? fallbackPackageNLSUri : undefined,
633
797
  defaultManifestTranslations,
634
- metadata,
798
+ metadata
635
799
  };
636
800
  }
637
801
  async toScannedExtension(webExtension, isBuiltin, type = ExtensionType.User) {
@@ -640,31 +804,41 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
640
804
  if (!manifest) {
641
805
  try {
642
806
  manifest = await this.getExtensionManifest(webExtension.location);
643
- }
644
- catch (error) {
645
- validations.push([Severity.Error, `Error while fetching manifest from the location '${webExtension.location}'. ${getErrorMessage(error)}`]);
807
+ } catch (error) {
808
+ validations.push([
809
+ Severity.Error,
810
+ `Error while fetching manifest from the location '${webExtension.location}'. ${getErrorMessage(error)}`
811
+ ]);
646
812
  }
647
813
  }
648
814
  if (!manifest) {
649
- const [publisher, name] = webExtension.identifier.id.split('.');
815
+ const [publisher, name] = webExtension.identifier.id.split(".");
650
816
  manifest = {
651
817
  name,
652
818
  publisher,
653
819
  version: webExtension.version,
654
- engines: { vscode: '*' },
820
+ engines: {
821
+ vscode: "*"
822
+ }
655
823
  };
656
824
  }
657
825
  const packageNLSUri = webExtension.packageNLSUris?.get(Language.value().toLowerCase());
658
826
  const fallbackPackageNLS = webExtension.defaultManifestTranslations ?? webExtension.fallbackPackageNLSUri;
659
827
  if (packageNLSUri) {
660
828
  manifest = await this.translateManifest(manifest, packageNLSUri, fallbackPackageNLS);
661
- }
662
- else if (fallbackPackageNLS) {
829
+ } else if (fallbackPackageNLS) {
663
830
  manifest = await this.translateManifest(manifest, fallbackPackageNLS);
664
831
  }
665
832
  const uuid = webExtension.metadata?.id;
666
833
  const validateApiVersion = this.extensionsEnabledWithApiProposalVersion.includes(webExtension.identifier.id.toLowerCase());
667
- validations.push(...validateExtensionManifest(this.productService.version, this.productService.date, webExtension.location, manifest, false, validateApiVersion));
834
+ validations.push(...validateExtensionManifest(
835
+ this.productService.version,
836
+ this.productService.date,
837
+ webExtension.location,
838
+ manifest,
839
+ false,
840
+ validateApiVersion
841
+ ));
668
842
  let isValid = true;
669
843
  for (const [severity, message] of validations) {
670
844
  if (severity === Severity.Error) {
@@ -676,7 +850,10 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
676
850
  manifest.enabledApiProposals = parseEnabledApiProposalNames([...manifest.enabledApiProposals]);
677
851
  }
678
852
  return {
679
- identifier: { id: webExtension.identifier.id, uuid: webExtension.identifier.uuid || uuid },
853
+ identifier: {
854
+ id: webExtension.identifier.id,
855
+ uuid: webExtension.identifier.uuid || uuid
856
+ },
680
857
  location: webExtension.location,
681
858
  manifest,
682
859
  type,
@@ -687,16 +864,15 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
687
864
  targetPlatform: TargetPlatform.WEB,
688
865
  validations,
689
866
  isValid,
690
- preRelease: !!webExtension.metadata?.preRelease,
867
+ preRelease: !!webExtension.metadata?.preRelease
691
868
  };
692
869
  }
693
870
  async listExtensionResources(extensionLocation) {
694
871
  try {
695
872
  const result = await this.extensionResourceLoaderService.readExtensionResource(extensionLocation);
696
873
  return JSON.parse(result);
697
- }
698
- catch (error) {
699
- this.logService.warn('Error while fetching extension resources list', getErrorMessage(error));
874
+ } catch (error) {
875
+ this.logService.warn("Error while fetching extension resources list", getErrorMessage(error));
700
876
  }
701
877
  return [];
702
878
  }
@@ -707,12 +883,11 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
707
883
  if (translations) {
708
884
  manifest = localizeManifest(this.logService, manifest, translations, fallbackTranslations);
709
885
  }
710
- }
711
- catch (error) { }
886
+ } catch (error) {}
712
887
  return manifest;
713
888
  }
714
889
  async getExtensionManifest(location) {
715
- const url = joinPath(location, 'package.json');
890
+ const url = joinPath(location, "package.json");
716
891
  const content = await this.extensionResourceLoaderService.readExtensionResource(url);
717
892
  return JSON.parse(content);
718
893
  }
@@ -720,8 +895,7 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
720
895
  try {
721
896
  const content = await this.extensionResourceLoaderService.readExtensionResource(nlsUrl);
722
897
  return JSON.parse(content);
723
- }
724
- catch (error) {
898
+ } catch (error) {
725
899
  this.logService.error(`Error while fetching translations of an extension`, ( nlsUrl.toString()), getErrorMessage(error));
726
900
  }
727
901
  return undefined;
@@ -755,7 +929,7 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
755
929
  const storedWebExtensions = JSON.parse(( content.value.toString()));
756
930
  for (const e of storedWebExtensions) {
757
931
  if (!e.location || !e.identifier || !e.version) {
758
- this.logService.info('Ignoring invalid extension while scanning', storedWebExtensions);
932
+ this.logService.info("Ignoring invalid extension while scanning", storedWebExtensions);
759
933
  continue;
760
934
  }
761
935
  let packageNLSUris;
@@ -774,17 +948,15 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
774
948
  fallbackPackageNLSUri: URI.revive(e.fallbackPackageNLSUri),
775
949
  defaultManifestTranslations: e.defaultManifestTranslations,
776
950
  packageNLSUri: URI.revive(e.packageNLSUri),
777
- metadata: e.metadata,
951
+ metadata: e.metadata
778
952
  });
779
953
  }
780
954
  try {
781
955
  webExtensions = await this.migrateWebExtensions(webExtensions, file);
782
- }
783
- catch (error) {
956
+ } catch (error) {
784
957
  this.logService.error(`Error while migrating scanned extensions in ${( file.toString())}`, getErrorMessage(error));
785
958
  }
786
- }
787
- catch (error) {
959
+ } catch (error) {
788
960
  if (error.fileOperationResult !== FileOperationResult.FILE_NOT_FOUND) {
789
961
  this.logService.error(error);
790
962
  }
@@ -797,13 +969,12 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
797
969
  }
798
970
  async migrateWebExtensions(webExtensions, file) {
799
971
  let update = false;
800
- webExtensions = await Promise.all(( webExtensions.map(async (webExtension) => {
972
+ webExtensions = await Promise.all(( webExtensions.map(async webExtension => {
801
973
  if (!webExtension.manifest) {
802
974
  try {
803
975
  webExtension.manifest = await this.getExtensionManifest(webExtension.location);
804
976
  update = true;
805
- }
806
- catch (error) {
977
+ } catch (error) {
807
978
  this.logService.error(`Error while updating manifest of an extension in ${( file.toString())}`, webExtension.identifier.id, getErrorMessage(error));
808
979
  }
809
980
  }
@@ -813,12 +984,14 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
813
984
  const content = await this.extensionResourceLoaderService.readExtensionResource(webExtension.fallbackPackageNLSUri);
814
985
  webExtension.defaultManifestTranslations = JSON.parse(content);
815
986
  update = true;
987
+ } catch (error) {
988
+ this.logService.error(
989
+ `Error while fetching default manifest translations of an extension`,
990
+ webExtension.identifier.id,
991
+ getErrorMessage(error)
992
+ );
816
993
  }
817
- catch (error) {
818
- this.logService.error(`Error while fetching default manifest translations of an extension`, webExtension.identifier.id, getErrorMessage(error));
819
- }
820
- }
821
- else {
994
+ } else {
822
995
  update = true;
823
996
  webExtension.defaultManifestTranslations = null;
824
997
  }
@@ -870,27 +1043,13 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
870
1043
  return resourceQueue;
871
1044
  }
872
1045
  };
873
- WebExtensionsScannerService = ( __decorate([
874
- ( __param(0, IBrowserWorkbenchEnvironmentService)),
875
- ( __param(1, IBuiltinExtensionsScannerService)),
876
- ( __param(2, IFileService)),
877
- ( __param(3, ILogService)),
878
- ( __param(4, IExtensionGalleryService)),
879
- ( __param(5, IExtensionManifestPropertiesService)),
880
- ( __param(6, IExtensionResourceLoaderService)),
881
- ( __param(7, IExtensionStorageService)),
882
- ( __param(8, IStorageService)),
883
- ( __param(9, IProductService)),
884
- ( __param(10, IUserDataProfilesService)),
885
- ( __param(11, IUriIdentityService)),
886
- ( __param(12, ILifecycleService))
887
- ], WebExtensionsScannerService));
1046
+ WebExtensionsScannerService = ( __decorate([( __param(0, IBrowserWorkbenchEnvironmentService)), ( __param(1, IBuiltinExtensionsScannerService)), ( __param(2, IFileService)), ( __param(3, ILogService)), ( __param(4, IExtensionGalleryService)), ( __param(5, IExtensionManifestPropertiesService)), ( __param(6, IExtensionResourceLoaderService)), ( __param(7, IExtensionStorageService)), ( __param(8, IStorageService)), ( __param(9, IProductService)), ( __param(10, IUserDataProfilesService)), ( __param(11, IUriIdentityService)), ( __param(12, ILifecycleService))], WebExtensionsScannerService));
888
1047
  if (isWeb) {
889
1048
  registerAction2(class extends Action2 {
890
1049
  constructor() {
891
1050
  super({
892
- id: 'workbench.extensions.action.openInstalledWebExtensionsResource',
893
- title: ( localize2(13930, 'Open Installed Web Extensions Resource')),
1051
+ id: "workbench.extensions.action.openInstalledWebExtensionsResource",
1052
+ title: ( localize2(14317, "Open Installed Web Extensions Resource")),
894
1053
  category: Categories.Developer,
895
1054
  f1: true,
896
1055
  precondition: IsWebContext
@@ -899,7 +1058,9 @@ if (isWeb) {
899
1058
  run(serviceAccessor) {
900
1059
  const editorService = serviceAccessor.get(IEditorService);
901
1060
  const userDataProfileService = serviceAccessor.get(IUserDataProfileService);
902
- editorService.openEditor({ resource: userDataProfileService.currentProfile.extensionsResource });
1061
+ editorService.openEditor({
1062
+ resource: userDataProfileService.currentProfile.extensionsResource
1063
+ });
903
1064
  }
904
1065
  });
905
1066
  }