@codingame/monaco-vscode-extension-gallery-service-override 20.4.1 → 21.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codingame/monaco-vscode-extension-gallery-service-override",
3
- "version": "20.4.1",
3
+ "version": "21.0.0",
4
4
  "private": false,
5
5
  "description": "VSCode public API plugged on the monaco editor - extension-gallery service-override",
6
6
  "keywords": [],
@@ -15,16 +15,16 @@
15
15
  },
16
16
  "type": "module",
17
17
  "dependencies": {
18
- "@codingame/monaco-vscode-23aade48-f094-5c08-9555-97fc9cca96c9-common": "20.4.1",
19
- "@codingame/monaco-vscode-249dc928-1da3-51c1-82d0-45e0ba9d08a1-common": "20.4.1",
20
- "@codingame/monaco-vscode-2673c6e2-17c1-5710-b169-46f3d4a28696-common": "20.4.1",
21
- "@codingame/monaco-vscode-34a0ffd3-b9f5-5699-b43b-38af5732f38a-common": "20.4.1",
22
- "@codingame/monaco-vscode-571c8352-7953-5038-9f09-e03bb6219a0e-common": "20.4.1",
23
- "@codingame/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common": "20.4.1",
24
- "@codingame/monaco-vscode-8c844347-a703-5de1-9eeb-5e0c7f503a58-common": "20.4.1",
25
- "@codingame/monaco-vscode-9ed6fe06-a052-57c2-a234-5d9b94d2e7e0-common": "20.4.1",
26
- "@codingame/monaco-vscode-a654b07e-8806-5425-b124-18f03ba8e11a-common": "20.4.1",
27
- "@codingame/monaco-vscode-api": "20.4.1"
18
+ "@codingame/monaco-vscode-23aade48-f094-5c08-9555-97fc9cca96c9-common": "21.0.0",
19
+ "@codingame/monaco-vscode-249dc928-1da3-51c1-82d0-45e0ba9d08a1-common": "21.0.0",
20
+ "@codingame/monaco-vscode-2673c6e2-17c1-5710-b169-46f3d4a28696-common": "21.0.0",
21
+ "@codingame/monaco-vscode-34a0ffd3-b9f5-5699-b43b-38af5732f38a-common": "21.0.0",
22
+ "@codingame/monaco-vscode-571c8352-7953-5038-9f09-e03bb6219a0e-common": "21.0.0",
23
+ "@codingame/monaco-vscode-5e2c24a1-3217-55e8-bc90-521eaf7df5a6-common": "21.0.0",
24
+ "@codingame/monaco-vscode-8c844347-a703-5de1-9eeb-5e0c7f503a58-common": "21.0.0",
25
+ "@codingame/monaco-vscode-9ed6fe06-a052-57c2-a234-5d9b94d2e7e0-common": "21.0.0",
26
+ "@codingame/monaco-vscode-a654b07e-8806-5425-b124-18f03ba8e11a-common": "21.0.0",
27
+ "@codingame/monaco-vscode-api": "21.0.0"
28
28
  },
29
29
  "main": "index.js",
30
30
  "module": "index.js",
@@ -33,7 +33,7 @@ let CommontExtensionManagementService = class CommontExtensionManagementService
33
33
  const allowedToInstall = this.allowedExtensionsService.isAllowed({ id: extension.identifier.id, publisherDisplayName: extension.publisherDisplayName });
34
34
  if (allowedToInstall !== true) {
35
35
  return (new MarkdownString(localize(
36
- 1777,
36
+ 1781,
37
37
  "This extension cannot be installed because {0}",
38
38
  allowedToInstall.value
39
39
  )));
@@ -41,12 +41,12 @@ let CommontExtensionManagementService = class CommontExtensionManagementService
41
41
  if (!(await this.isExtensionPlatformCompatible(extension))) {
42
42
  const learnLink = isWeb ? 'https://aka.ms/vscode-web-extensions-guide' : 'https://aka.ms/vscode-platform-specific-extensions';
43
43
  return (new MarkdownString(`${( localize(
44
- 1778,
44
+ 1782,
45
45
  "The '{0}' extension is not available in {1} for the {2}.",
46
46
  extension.displayName ?? extension.identifier.id,
47
47
  this.productService.nameLong,
48
48
  TargetPlatformToString(await this.getTargetPlatform())
49
- ))} [${( localize(1779, "Learn Why"))}](${learnLink})`));
49
+ ))} [${( localize(1783, "Learn Why"))}](${learnLink})`));
50
50
  }
51
51
  return true;
52
52
  }
@@ -111,7 +111,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
111
111
  }
112
112
  async installGalleryExtensions(extensions) {
113
113
  if (!this.galleryService.isEnabled()) {
114
- throw ( new ExtensionManagementError(( localize(1780, "Marketplace is not enabled")), ExtensionManagementErrorCode.NotAllowed));
114
+ throw ( new ExtensionManagementError(( localize(1784, "Marketplace is not enabled")), ExtensionManagementErrorCode.NotAllowed));
115
115
  }
116
116
  const results = [];
117
117
  const installableExtensions = [];
@@ -547,7 +547,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
547
547
  const extensionsControlManifest = await this.getExtensionsControlManifest();
548
548
  if (isMalicious(extension.identifier, extensionsControlManifest.malicious)) {
549
549
  throw ( new ExtensionManagementError(( localize(
550
- 1781,
550
+ 1785,
551
551
  "Can't install '{0}' extension since it was reported to be problematic.",
552
552
  extension.identifier.id
553
553
  )), ExtensionManagementErrorCode.Malicious));
@@ -558,7 +558,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
558
558
  compatibleExtension = (await this.galleryService.getExtensions([{ id: deprecationInfo.extension.id, preRelease: deprecationInfo.extension.preRelease }], { targetPlatform: await this.getTargetPlatform(), compatible: true, productVersion }, CancellationToken.None))[0];
559
559
  if (!compatibleExtension) {
560
560
  throw ( new ExtensionManagementError(( localize(
561
- 1782,
561
+ 1786,
562
562
  "Can't install '{0}' extension since it was deprecated and the replacement extension '{1}' can't be found.",
563
563
  extension.identifier.id,
564
564
  deprecationInfo.extension.id
@@ -569,7 +569,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
569
569
  if ((await this.canInstall(extension)) !== true) {
570
570
  const targetPlatform = await this.getTargetPlatform();
571
571
  throw ( new ExtensionManagementError(( localize(
572
- 1778,
572
+ 1782,
573
573
  "The '{0}' extension is not available in {1} for the {2}.",
574
574
  extension.identifier.id,
575
575
  this.productService.nameLong,
@@ -581,7 +581,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
581
581
  const incompatibleApiProposalsMessages = [];
582
582
  if (!areApiProposalsCompatible(extension.properties.enabledApiProposals ?? [], incompatibleApiProposalsMessages)) {
583
583
  throw ( new ExtensionManagementError(( localize(
584
- 1783,
584
+ 1787,
585
585
  "Can't install '{0}' extension. {1}",
586
586
  extension.displayName ?? extension.identifier.id,
587
587
  incompatibleApiProposalsMessages[0]
@@ -589,13 +589,13 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
589
589
  }
590
590
  if (!installPreRelease && extension.hasPreReleaseVersion && extension.properties.isPreReleaseVersion && (await this.galleryService.getExtensions([extension.identifier], CancellationToken.None))[0]) {
591
591
  throw ( new ExtensionManagementError(( localize(
592
- 1784,
592
+ 1788,
593
593
  "Can't install release version of '{0}' extension because it has no release version.",
594
594
  extension.displayName ?? extension.identifier.id
595
595
  )), ExtensionManagementErrorCode.ReleaseVersionNotFound));
596
596
  }
597
597
  throw ( new ExtensionManagementError(( localize(
598
- 1785,
598
+ 1789,
599
599
  "Can't install '{0}' extension because it is not compatible with the current version of {1} (version {2}).",
600
600
  extension.identifier.id,
601
601
  this.productService.nameLong,
@@ -820,7 +820,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
820
820
  if (extensionToUninstall === dependingExtension) {
821
821
  if (dependents.length === 1) {
822
822
  return localize(
823
- 1786,
823
+ 1790,
824
824
  "Cannot uninstall '{0}' extension. '{1}' extension depends on this.",
825
825
  extensionToUninstall.manifest.displayName || extensionToUninstall.manifest.name,
826
826
  dependents[0].manifest.displayName || dependents[0].manifest.name
@@ -828,7 +828,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
828
828
  }
829
829
  if (dependents.length === 2) {
830
830
  return localize(
831
- 1787,
831
+ 1791,
832
832
  "Cannot uninstall '{0}' extension. '{1}' and '{2}' extensions depend on this.",
833
833
  extensionToUninstall.manifest.displayName || extensionToUninstall.manifest.name,
834
834
  dependents[0].manifest.displayName || dependents[0].manifest.name,
@@ -836,7 +836,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
836
836
  );
837
837
  }
838
838
  return localize(
839
- 1788,
839
+ 1792,
840
840
  "Cannot uninstall '{0}' extension. '{1}', '{2}' and other extension depend on this.",
841
841
  extensionToUninstall.manifest.displayName || extensionToUninstall.manifest.name,
842
842
  dependents[0].manifest.displayName || dependents[0].manifest.name,
@@ -845,7 +845,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
845
845
  }
846
846
  if (dependents.length === 1) {
847
847
  return localize(
848
- 1789,
848
+ 1793,
849
849
  "Cannot uninstall '{0}' extension . It includes uninstalling '{1}' extension and '{2}' extension depends on this.",
850
850
  extensionToUninstall.manifest.displayName || extensionToUninstall.manifest.name,
851
851
  dependingExtension.manifest.displayName
@@ -855,7 +855,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
855
855
  }
856
856
  if (dependents.length === 2) {
857
857
  return localize(
858
- 1790,
858
+ 1794,
859
859
  "Cannot uninstall '{0}' extension. It includes uninstalling '{1}' extension and '{2}' and '{3}' extensions depend on this.",
860
860
  extensionToUninstall.manifest.displayName || extensionToUninstall.manifest.name,
861
861
  dependingExtension.manifest.displayName
@@ -865,7 +865,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
865
865
  );
866
866
  }
867
867
  return localize(
868
- 1791,
868
+ 1795,
869
869
  "Cannot uninstall '{0}' extension. It includes uninstalling '{1}' extension and '{2}', '{3}' and other extensions depend on this.",
870
870
  extensionToUninstall.manifest.displayName || extensionToUninstall.manifest.name,
871
871
  dependingExtension.manifest.displayName
@@ -80,14 +80,14 @@ let AllowedExtensionsService = class AllowedExtensionsService extends Disposable
80
80
  `command:workbench.action.openSettings?${encodeURIComponent(JSON.stringify({ query: `@id:${AllowedExtensionsConfigKey}` }))}`
81
81
  )).toString());
82
82
  const extensionValue = this._allowedExtensionsConfigValue[id];
83
- const extensionReason = ( new MarkdownString(( localize(1792, "it is not in the [allowed list]({0})", settingsCommandLink))));
83
+ const extensionReason = ( new MarkdownString(( localize(1796, "it is not in the [allowed list]({0})", settingsCommandLink))));
84
84
  if (!isUndefined(extensionValue)) {
85
85
  if (isBoolean(extensionValue)) {
86
86
  return extensionValue ? true : extensionReason;
87
87
  }
88
88
  if (extensionValue === 'stable' && prerelease) {
89
89
  return (new MarkdownString(localize(
90
- 1793,
90
+ 1797,
91
91
  "the pre-release versions of this extension are not in the [allowed list]({0})",
92
92
  settingsCommandLink
93
93
  )));
@@ -107,7 +107,7 @@ let AllowedExtensionsService = class AllowedExtensionsService extends Disposable
107
107
  return false;
108
108
  }))) {
109
109
  return (new MarkdownString(localize(
110
- 1794,
110
+ 1798,
111
111
  "the version {0} of this extension is not in the [allowed list]({1})",
112
112
  version,
113
113
  settingsCommandLink
@@ -120,7 +120,7 @@ let AllowedExtensionsService = class AllowedExtensionsService extends Disposable
120
120
  if (!isUndefined(publisherValue)) {
121
121
  if (isBoolean(publisherValue)) {
122
122
  return publisherValue ? true : ( new MarkdownString(( localize(
123
- 1795,
123
+ 1799,
124
124
  "the extensions from this publisher are not in the [allowed list]({1})",
125
125
  publisherKey,
126
126
  settingsCommandLink
@@ -128,7 +128,7 @@ let AllowedExtensionsService = class AllowedExtensionsService extends Disposable
128
128
  }
129
129
  if (publisherValue === 'stable' && prerelease) {
130
130
  return (new MarkdownString(localize(
131
- 1796,
131
+ 1800,
132
132
  "the pre-release versions from this publisher are not in the [allowed list]({1})",
133
133
  publisherKey,
134
134
  settingsCommandLink
@@ -13,7 +13,7 @@ import { IProductService } from "@codingame/monaco-vscode-api/vscode/vs/platform
13
13
  import { IRequestService } from "@codingame/monaco-vscode-api/vscode/vs/platform/request/common/request.service";
14
14
  import { IStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service";
15
15
  import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
16
- import { IAssignmentService } from "@codingame/monaco-vscode-configuration-service-override/vscode/vs/platform/assignment/common/assignment";
16
+ import { IAssignmentService } from "@codingame/monaco-vscode-api/vscode/vs/platform/assignment/common/assignment";
17
17
  import { IExtensionGalleryManifestService } from "@codingame/monaco-vscode-api/vscode/vs/platform/extensionManagement/common/extensionGalleryManifest.service";
18
18
  interface IRawGalleryExtensionFile {
19
19
  readonly assetType: string;
@@ -69,6 +69,7 @@ export declare abstract class AbstractExtensionGalleryService implements IExtens
69
69
  private getRawGalleryExtensionVersion;
70
70
  private queryRawGalleryExtensions;
71
71
  private getHeaderValue;
72
+ private getLatestRawGalleryExtensionWithFallback;
72
73
  private getLatestRawGalleryExtension;
73
74
  reportStatistic(publisher: string, name: string, version: string, type: StatisticType): Promise<void>;
74
75
  download(extension: IGalleryExtension, location: URI, operation: InstallOperation): Promise<void>;
@@ -11,7 +11,7 @@ import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
11
11
  import { isOfflineError } from '@codingame/monaco-vscode-23aade48-f094-5c08-9555-97fc9cca96c9-common/vscode/vs/base/parts/request/common/request';
12
12
  import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
13
13
  import { IEnvironmentService } from '@codingame/monaco-vscode-api/vscode/vs/platform/environment/common/environment.service';
14
- import { getTargetPlatform, SortOrder, SortBy, FilterType, toTargetPlatform, WEB_EXTENSION_TAG, EXTENSION_IDENTIFIER_REGEX, isNotWebExtensionInWebTargetPlatform, isTargetPlatformCompatible, ExtensionGalleryErrorCode, ExtensionGalleryError, StatisticType, InstallOperation } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensionManagement/common/extensionManagement';
14
+ import { getTargetPlatform, SortOrder, SortBy, FilterType, toTargetPlatform, WEB_EXTENSION_TAG, EXTENSION_IDENTIFIER_REGEX, ExtensionGalleryError, ExtensionGalleryErrorCode, isNotWebExtensionInWebTargetPlatform, isTargetPlatformCompatible, StatisticType, InstallOperation } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensionManagement/common/extensionManagement';
15
15
  import { IAllowedExtensionsService } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensionManagement/common/extensionManagement.service';
16
16
  import { adoptToGalleryExtensionId, getGalleryExtensionId, areSameExtensions, getGalleryExtensionTelemetryData } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensionManagement/common/extensionManagementUtil';
17
17
  import { TargetPlatform } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensions/common/extensions';
@@ -19,7 +19,7 @@ import { areApiProposalsCompatible, isEngineValid } from '@codingame/monaco-vsco
19
19
  import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
20
20
  import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
21
21
  import { IProductService } from '@codingame/monaco-vscode-api/vscode/vs/platform/product/common/productService.service';
22
- import { asJson, isSuccess, asTextOrError } from '@codingame/monaco-vscode-api/vscode/vs/platform/request/common/request';
22
+ import { asJson, isSuccess, isClientError, isServerError, asTextOrError } from '@codingame/monaco-vscode-api/vscode/vs/platform/request/common/request';
23
23
  import { IRequestService } from '@codingame/monaco-vscode-api/vscode/vs/platform/request/common/request.service';
24
24
  import { resolveMarketplaceHeaders } from '../../externalServices/common/marketplace.js';
25
25
  import '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
@@ -351,10 +351,6 @@ let AbstractExtensionGalleryService = class AbstractExtensionGalleryService {
351
351
  return result;
352
352
  }
353
353
  async getResourceApi(extensionGalleryManifest) {
354
- const value = (await this.assignmentService?.getTreatment('extensions.gallery.useResourceApi')) ?? 'marketplace';
355
- if (value === 'unpkg' && this.unpkgResourceApi) {
356
- return { uri: this.unpkgResourceApi };
357
- }
358
354
  const latestVersionResource = getExtensionGalleryManifestResourceUri(extensionGalleryManifest, ExtensionGalleryResourceType.ExtensionLatestVersionUri);
359
355
  if (latestVersionResource) {
360
356
  return {
@@ -426,24 +422,10 @@ let AbstractExtensionGalleryService = class AbstractExtensionGalleryService {
426
422
  toFetchLatest.push(extensionInfo);
427
423
  }
428
424
  }
429
- await Promise.allSettled(( toFetchLatest.map(async (extensionInfo) => {
425
+ await Promise.all(( toFetchLatest.map(async (extensionInfo) => {
430
426
  let galleryExtension;
431
427
  try {
432
- try {
433
- galleryExtension = await this.getLatestGalleryExtension(extensionInfo, options, resourceApi.uri, extensionGalleryManifest, token);
434
- }
435
- catch (error) {
436
- if (!resourceApi.fallback) {
437
- throw error;
438
- }
439
- this.logService.error(`Error while getting the latest version for the extension ${extensionInfo.id} from ${resourceApi.uri}. Trying the fallback ${resourceApi.fallback}`, getErrorMessage(error));
440
- this.telemetryService.publicLog2('galleryService:fallbacktounpkg', {
441
- extension: extensionInfo.id,
442
- preRelease: !!extensionInfo.preRelease,
443
- compatible: !!options.compatible
444
- });
445
- galleryExtension = await this.getLatestGalleryExtension(extensionInfo, options, resourceApi.fallback, extensionGalleryManifest, token);
446
- }
428
+ galleryExtension = await this.getLatestGalleryExtension(extensionInfo, options, resourceApi, extensionGalleryManifest, token);
447
429
  if (galleryExtension === 'NOT_FOUND') {
448
430
  if (extensionInfo.uuid) {
449
431
  toQuery.push(extensionInfo);
@@ -455,12 +437,20 @@ let AbstractExtensionGalleryService = class AbstractExtensionGalleryService {
455
437
  }
456
438
  }
457
439
  catch (error) {
440
+ if (error instanceof ExtensionGalleryError) {
441
+ switch (error.code) {
442
+ case ExtensionGalleryErrorCode.Offline:
443
+ case ExtensionGalleryErrorCode.Cancelled:
444
+ case ExtensionGalleryErrorCode.Timeout:
445
+ throw error;
446
+ }
447
+ }
458
448
  this.logService.error(`Error while getting the latest version for the extension ${extensionInfo.id}.`, getErrorMessage(error));
459
449
  this.telemetryService.publicLog2('galleryService:fallbacktoquery', {
460
450
  extension: extensionInfo.id,
461
451
  preRelease: !!extensionInfo.preRelease,
462
452
  compatible: !!options.compatible,
463
- fromFallback: !!resourceApi.fallback
453
+ errorCode: error instanceof ExtensionGalleryError ? error.code : 'Unknown'
464
454
  });
465
455
  toQuery.push(extensionInfo);
466
456
  }
@@ -471,10 +461,8 @@ let AbstractExtensionGalleryService = class AbstractExtensionGalleryService {
471
461
  }
472
462
  return result;
473
463
  }
474
- async getLatestGalleryExtension(extensionInfo, options, resourceUriTemplate, extensionGalleryManifest, token) {
475
- const [publisher, name] = extensionInfo.id.split('.');
476
- const uri = ( URI.parse(format2(resourceUriTemplate, { publisher, name })));
477
- const rawGalleryExtension = await this.getLatestRawGalleryExtension(extensionInfo.id, uri, token);
464
+ async getLatestGalleryExtension(extensionInfo, options, resourceApi, extensionGalleryManifest, token) {
465
+ const rawGalleryExtension = await this.getLatestRawGalleryExtensionWithFallback(extensionInfo, resourceApi, token);
478
466
  if (!rawGalleryExtension) {
479
467
  return 'NOT_FOUND';
480
468
  }
@@ -936,10 +924,57 @@ let AbstractExtensionGalleryService = class AbstractExtensionGalleryService {
936
924
  const value = Array.isArray(headerValue) ? headerValue[0] : headerValue;
937
925
  return value ? ( new TelemetryTrustedValue(value)) : undefined;
938
926
  }
927
+ async getLatestRawGalleryExtensionWithFallback(extensionInfo, resourceApi, token) {
928
+ const [publisher, name] = extensionInfo.id.split('.');
929
+ let errorCode;
930
+ try {
931
+ const uri = ( URI.parse(format2(resourceApi.uri, { publisher, name })));
932
+ return await this.getLatestRawGalleryExtension(extensionInfo.id, uri, token);
933
+ }
934
+ catch (error) {
935
+ if (error instanceof ExtensionGalleryError) {
936
+ errorCode = error.code;
937
+ switch (error.code) {
938
+ case ExtensionGalleryErrorCode.Offline:
939
+ case ExtensionGalleryErrorCode.Cancelled:
940
+ case ExtensionGalleryErrorCode.Timeout:
941
+ case ExtensionGalleryErrorCode.ClientError:
942
+ throw error;
943
+ }
944
+ }
945
+ else {
946
+ errorCode = 'Unknown';
947
+ }
948
+ if (!resourceApi.fallback) {
949
+ throw error;
950
+ }
951
+ }
952
+ finally {
953
+ this.telemetryService.publicLog2('galleryService:getmarketplacelatest', {
954
+ extension: extensionInfo.id,
955
+ errorCode,
956
+ });
957
+ }
958
+ this.logService.error(`Error while getting the latest version for the extension ${extensionInfo.id} from ${resourceApi.uri}. Trying the fallback ${resourceApi.fallback}`, errorCode);
959
+ try {
960
+ const uri = ( URI.parse(format2(resourceApi.fallback, { publisher, name })));
961
+ return await this.getLatestRawGalleryExtension(extensionInfo.id, uri, token);
962
+ }
963
+ catch (error) {
964
+ errorCode = error instanceof ExtensionGalleryError ? error.code : 'Unknown';
965
+ throw error;
966
+ }
967
+ finally {
968
+ this.telemetryService.publicLog2('galleryService:fallbacktounpkg', {
969
+ extension: extensionInfo.id,
970
+ errorCode,
971
+ });
972
+ }
973
+ }
939
974
  async getLatestRawGalleryExtension(extension, uri, token) {
975
+ let context;
940
976
  let errorCode;
941
977
  const stopWatch = ( new StopWatch());
942
- let context;
943
978
  try {
944
979
  const commonHeaders = await this.commonHeadersPromise;
945
980
  const headers = {
@@ -959,7 +994,6 @@ let AbstractExtensionGalleryService = class AbstractExtensionGalleryService {
959
994
  return null;
960
995
  }
961
996
  if (context.res.statusCode && context.res.statusCode !== 200) {
962
- errorCode = `GalleryServiceError:` + context.res.statusCode;
963
997
  throw ( new Error('Unexpected HTTP response: ' + context.res.statusCode));
964
998
  }
965
999
  const result = await asJson(context);
@@ -969,19 +1003,27 @@ let AbstractExtensionGalleryService = class AbstractExtensionGalleryService {
969
1003
  return result;
970
1004
  }
971
1005
  catch (error) {
1006
+ let galleryErrorCode;
972
1007
  if (isCancellationError(error)) {
973
- errorCode = ExtensionGalleryErrorCode.Cancelled;
1008
+ galleryErrorCode = ExtensionGalleryErrorCode.Cancelled;
974
1009
  }
975
1010
  else if (isOfflineError(error)) {
976
- errorCode = ExtensionGalleryErrorCode.Offline;
1011
+ galleryErrorCode = ExtensionGalleryErrorCode.Offline;
977
1012
  }
978
1013
  else if (getErrorMessage(error).startsWith('XHR timeout')) {
979
- errorCode = ExtensionGalleryErrorCode.Timeout;
1014
+ galleryErrorCode = ExtensionGalleryErrorCode.Timeout;
980
1015
  }
981
- else if (!errorCode) {
982
- errorCode = ExtensionGalleryErrorCode.Failed;
1016
+ else if (context && isClientError(context)) {
1017
+ galleryErrorCode = ExtensionGalleryErrorCode.ClientError;
983
1018
  }
984
- throw error;
1019
+ else if (context && isServerError(context)) {
1020
+ galleryErrorCode = ExtensionGalleryErrorCode.ServerError;
1021
+ }
1022
+ else {
1023
+ galleryErrorCode = ExtensionGalleryErrorCode.Failed;
1024
+ }
1025
+ errorCode = galleryErrorCode;
1026
+ throw ( new ExtensionGalleryError(error, galleryErrorCode));
985
1027
  }
986
1028
  finally {
987
1029
  this.telemetryService.publicLog2('galleryService:getLatest', {
@@ -989,6 +1031,7 @@ let AbstractExtensionGalleryService = class AbstractExtensionGalleryService {
989
1031
  host: uri.authority,
990
1032
  duration: stopWatch.elapsed(),
991
1033
  errorCode,
1034
+ statusCode: context?.res.statusCode && context?.res.statusCode !== 200 ? `${context.res.statusCode}` : undefined,
992
1035
  server: this.getHeaderValue(context?.res.headers, SERVER_HEADER_NAME),
993
1036
  activityId: this.getHeaderValue(context?.res.headers, ACTIVITY_HEADER_NAME),
994
1037
  endToEndId: this.getHeaderValue(context?.res.headers, END_END_ID_HEADER_NAME),
@@ -2,6 +2,7 @@
2
2
  import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
3
3
  import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
4
4
  import { reviveProfile } from '@codingame/monaco-vscode-api/vscode/vs/platform/userDataProfile/common/userDataProfile';
5
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/lazy';
5
6
  import '@codingame/monaco-vscode-api/vscode/vs/base/common/errors';
6
7
  import '@codingame/monaco-vscode-api/vscode/vs/base/common/marshallingIds';
7
8
  import '@codingame/monaco-vscode-api/vscode/vs/base/common/charCode';
@@ -2,9 +2,9 @@
2
2
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
3
3
  import { Registry } from '@codingame/monaco-vscode-api/vscode/vs/platform/registry/common/platform';
4
4
  import { SyncDescriptor } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/descriptors';
5
- import { EditorPaneDescriptor } from '@codingame/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common/vscode/vs/workbench/browser/editor';
5
+ import { EditorPaneDescriptor } from '@codingame/monaco-vscode-5e2c24a1-3217-55e8-bc90-521eaf7df5a6-common/vscode/vs/workbench/browser/editor';
6
6
  import { RuntimeExtensionsEditor } from './browserRuntimeExtensionsEditor.js';
7
7
  import { RuntimeExtensionsInput } from '@codingame/monaco-vscode-2673c6e2-17c1-5710-b169-46f3d4a28696-common/vscode/vs/workbench/contrib/extensions/common/runtimeExtensionsInput';
8
8
  import { EditorExtensions } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/editor';
9
9
 
10
- ( Registry.as(EditorExtensions.EditorPane)).registerEditorPane(EditorPaneDescriptor.create(RuntimeExtensionsEditor, RuntimeExtensionsEditor.ID, ( localize(6854, "Running Extensions"))), [( new SyncDescriptor(RuntimeExtensionsInput))]);
10
+ ( Registry.as(EditorExtensions.EditorPane)).registerEditorPane(EditorPaneDescriptor.create(RuntimeExtensionsEditor, RuntimeExtensionsEditor.ID, ( localize(7000, "Running Extensions"))), [( new SyncDescriptor(RuntimeExtensionsInput))]);
@@ -8,7 +8,7 @@ var ReportExtensionIssueAction_1;
8
8
  let ReportExtensionIssueAction = class ReportExtensionIssueAction extends Action {
9
9
  static { ReportExtensionIssueAction_1 = this; }
10
10
  static { this._id = 'workbench.extensions.action.reportExtensionIssue'; }
11
- static { this._label = ( localize(7220, "Report Issue")); }
11
+ static { this._label = ( localize(7366, "Report Issue")); }
12
12
  constructor(extension, issueService) {
13
13
  super(ReportExtensionIssueAction_1._id, ReportExtensionIssueAction_1._label, 'extension-action report-issue');
14
14
  this.extension = extension;
@@ -78,8 +78,8 @@ let ExtensionEnablementService = class ExtensionEnablementService extends Dispos
78
78
  this._register(allowedExtensionsService.onDidChangeAllowedExtensionsConfigValue(() => this._onDidChangeExtensions([], [], false)));
79
79
  if (this.allUserExtensionsDisabled) {
80
80
  this.lifecycleService.when(LifecyclePhase.Eventually).then(() => {
81
- this.notificationService.prompt(Severity.Info, ( localize(13037, "All installed extensions are temporarily disabled.")), [{
82
- label: ( localize(13038, "Reload and Enable Extensions")),
81
+ this.notificationService.prompt(Severity.Info, ( localize(13235, "All installed extensions are temporarily disabled.")), [{
82
+ label: ( localize(13236, "Reload and Enable Extensions")),
83
83
  run: () => hostService.reload({ disableExtensions: false })
84
84
  }], {
85
85
  sticky: true,
@@ -131,7 +131,7 @@ let ExtensionEnablementService = class ExtensionEnablementService extends Dispos
131
131
  throwErrorIfCannotChangeEnablement(extension, donotCheckDependencies) {
132
132
  if (isLanguagePackExtension(extension.manifest)) {
133
133
  throw ( new Error(( localize(
134
- 13039,
134
+ 13237,
135
135
  "Cannot change enablement of {0} extension because it contributes language packs.",
136
136
  extension.manifest.displayName || extension.identifier.id
137
137
  ))));
@@ -141,14 +141,14 @@ let ExtensionEnablementService = class ExtensionEnablementService extends Dispos
141
141
  a => a.id === this.userDataSyncAccountService.account.authenticationProviderId
142
142
  ))) {
143
143
  throw ( new Error(( localize(
144
- 13040,
144
+ 13238,
145
145
  "Cannot change enablement {0} extension because Settings Sync depends on it.",
146
146
  extension.manifest.displayName || extension.identifier.id
147
147
  ))));
148
148
  }
149
149
  if (this._isEnabledInEnv(extension)) {
150
150
  throw ( new Error(( localize(
151
- 13041,
151
+ 13239,
152
152
  "Cannot change enablement of {0} extension because it is enabled in environment",
153
153
  extension.manifest.displayName || extension.identifier.id
154
154
  ))));
@@ -159,37 +159,37 @@ let ExtensionEnablementService = class ExtensionEnablementService extends Dispos
159
159
  switch (enablementStateOfExtension) {
160
160
  case EnablementState.DisabledByEnvironment:
161
161
  throw ( new Error(( localize(
162
- 13042,
162
+ 13240,
163
163
  "Cannot change enablement of {0} extension because it is disabled in environment",
164
164
  extension.manifest.displayName || extension.identifier.id
165
165
  ))));
166
166
  case EnablementState.DisabledByMalicious:
167
167
  throw ( new Error(( localize(
168
- 13043,
168
+ 13241,
169
169
  "Cannot change enablement of {0} extension because it is malicious",
170
170
  extension.manifest.displayName || extension.identifier.id
171
171
  ))));
172
172
  case EnablementState.DisabledByVirtualWorkspace:
173
173
  throw ( new Error(( localize(
174
- 13044,
174
+ 13242,
175
175
  "Cannot change enablement of {0} extension because it does not support virtual workspaces",
176
176
  extension.manifest.displayName || extension.identifier.id
177
177
  ))));
178
178
  case EnablementState.DisabledByExtensionKind:
179
179
  throw ( new Error(( localize(
180
- 13045,
180
+ 13243,
181
181
  "Cannot change enablement of {0} extension because of its extension kind",
182
182
  extension.manifest.displayName || extension.identifier.id
183
183
  ))));
184
184
  case EnablementState.DisabledByAllowlist:
185
185
  throw ( new Error(( localize(
186
- 13046,
186
+ 13244,
187
187
  "Cannot change enablement of {0} extension because it is disallowed",
188
188
  extension.manifest.displayName || extension.identifier.id
189
189
  ))));
190
190
  case EnablementState.DisabledByInvalidExtension:
191
191
  throw ( new Error(( localize(
192
- 13047,
192
+ 13245,
193
193
  "Cannot change enablement of {0} extension because of it is invalid",
194
194
  extension.manifest.displayName || extension.identifier.id
195
195
  ))));
@@ -202,7 +202,7 @@ let ExtensionEnablementService = class ExtensionEnablementService extends Dispos
202
202
  continue;
203
203
  }
204
204
  throw ( new Error(( localize(
205
- 13048,
205
+ 13246,
206
206
  "Cannot enable '{0}' extension because it depends on '{1}' extension that cannot be enabled",
207
207
  extension.manifest.displayName || extension.identifier.id,
208
208
  dependency.manifest.displayName || dependency.identifier.id
@@ -212,11 +212,11 @@ let ExtensionEnablementService = class ExtensionEnablementService extends Dispos
212
212
  }
213
213
  throwErrorIfCannotChangeWorkspaceEnablement(extension) {
214
214
  if (!this.hasWorkspace) {
215
- throw ( new Error(( localize(13049, "No workspace."))));
215
+ throw ( new Error(( localize(13247, "No workspace."))));
216
216
  }
217
217
  if (isAuthenticationProviderExtension(extension.manifest)) {
218
218
  throw ( new Error(( localize(
219
- 13050,
219
+ 13248,
220
220
  "Cannot change enablement of {0} extension in workspace because it contributes authentication providers",
221
221
  extension.manifest.displayName || extension.identifier.id
222
222
  ))));
@@ -605,7 +605,7 @@ let WebExtensionsScannerService = class WebExtensionsScannerService extends Disp
605
605
  }
606
606
  if (!this.extensionManifestPropertiesService.canExecuteOnWeb(manifest)) {
607
607
  throw ( new Error(( localize(
608
- 13051,
608
+ 13249,
609
609
  "Cannot add '{0}' because this extension is not a web extension.",
610
610
  manifest.displayName || manifest.name
611
611
  ))));
@@ -889,7 +889,7 @@ if (isWeb) {
889
889
  constructor() {
890
890
  super({
891
891
  id: 'workbench.extensions.action.openInstalledWebExtensionsResource',
892
- title: ( localize2(13052, 'Open Installed Web Extensions Resource')),
892
+ title: ( localize2(13250, 'Open Installed Web Extensions Resource')),
893
893
  category: Categories.Developer,
894
894
  f1: true,
895
895
  precondition: IsWebContext
@@ -87,17 +87,17 @@ let ExtensionFeaturesManagementService = class ExtensionFeaturesManagementServic
87
87
  if (feature.access.requireUserConsent) {
88
88
  const extensionDescription = this.extensionService.extensions.find(e => ExtensionIdentifier.equals(e.identifier, extension));
89
89
  const confirmationResult = await this.dialogService.confirm({
90
- title: ( localize(13053, "Access '{0}' Feature", feature.label)),
90
+ title: ( localize(13251, "Access '{0}' Feature", feature.label)),
91
91
  message: ( localize(
92
- 13054,
92
+ 13252,
93
93
  "'{0}' extension would like to access the '{1}' feature.",
94
94
  extensionDescription?.displayName ?? extension._lower,
95
95
  feature.label
96
96
  )),
97
97
  detail: justification ?? feature.description,
98
98
  custom: true,
99
- primaryButton: ( localize(13055, "Allow")),
100
- cancelButton: ( localize(13056, "Don't Allow")),
99
+ primaryButton: ( localize(13253, "Allow")),
100
+ cancelButton: ( localize(13254, "Don't Allow")),
101
101
  });
102
102
  enabled = confirmationResult.confirmed;
103
103
  }
@@ -22,7 +22,7 @@ let ExtensionManagementServerService = class ExtensionManagementServerService {
22
22
  this.remoteExtensionManagementServer = {
23
23
  id: 'remote',
24
24
  extensionManagementService,
25
- get label() { return labelService.getHostLabel(Schemas.vscodeRemote, remoteAgentConnection.remoteAuthority) || ( localize(13057, "Remote")); },
25
+ get label() { return labelService.getHostLabel(Schemas.vscodeRemote, remoteAgentConnection.remoteAuthority) || ( localize(13255, "Remote")); },
26
26
  };
27
27
  }
28
28
  if (isWeb) {
@@ -30,7 +30,7 @@ let ExtensionManagementServerService = class ExtensionManagementServerService {
30
30
  this.webExtensionManagementServer = {
31
31
  id: 'web',
32
32
  extensionManagementService,
33
- label: ( localize(13058, "Browser")),
33
+ label: ( localize(13256, "Browser")),
34
34
  };
35
35
  }
36
36
  }
@@ -222,7 +222,7 @@ let ExtensionManagementService = class ExtensionManagementService extends Common
222
222
  getDependentsErrorMessage(extension, dependents) {
223
223
  if (dependents.length === 1) {
224
224
  return localize(
225
- 13059,
225
+ 13257,
226
226
  "Cannot uninstall extension '{0}'. Extension '{1}' depends on this.",
227
227
  extension.manifest.displayName || extension.manifest.name,
228
228
  dependents[0].manifest.displayName || dependents[0].manifest.name
@@ -230,7 +230,7 @@ let ExtensionManagementService = class ExtensionManagementService extends Common
230
230
  }
231
231
  if (dependents.length === 2) {
232
232
  return localize(
233
- 13060,
233
+ 13258,
234
234
  "Cannot uninstall extension '{0}'. Extensions '{1}' and '{2}' depend on this.",
235
235
  extension.manifest.displayName || extension.manifest.name,
236
236
  dependents[0].manifest.displayName || dependents[0].manifest.name,
@@ -238,7 +238,7 @@ let ExtensionManagementService = class ExtensionManagementService extends Common
238
238
  );
239
239
  }
240
240
  return localize(
241
- 13061,
241
+ 13259,
242
242
  "Cannot uninstall extension '{0}'. Extensions '{1}', '{2}' and others depend on this.",
243
243
  extension.manifest.displayName || extension.manifest.name,
244
244
  dependents[0].manifest.displayName || dependents[0].manifest.name,
@@ -348,7 +348,7 @@ let ExtensionManagementService = class ExtensionManagementService extends Common
348
348
  }
349
349
  const manifest = await this.extensionGalleryService.getManifest(gallery, CancellationToken.None);
350
350
  if (!manifest) {
351
- return ( new MarkdownString()).appendText(( localize(13062, "Manifest is not found")));
351
+ return ( new MarkdownString()).appendText(( localize(13260, "Manifest is not found")));
352
352
  }
353
353
  if (this.extensionManagementServerService.remoteExtensionManagementServer
354
354
  && (await this.extensionManagementServerService.remoteExtensionManagementServer.extensionManagementService.canInstall(gallery)) === true
@@ -361,7 +361,7 @@ let ExtensionManagementService = class ExtensionManagementService extends Common
361
361
  return true;
362
362
  }
363
363
  return ( new MarkdownString()).appendText(( localize(
364
- 13063,
364
+ 13261,
365
365
  "Cannot install the '{0}' extension because it is not available in this setup.",
366
366
  gallery.displayName || gallery.name
367
367
  )));
@@ -377,7 +377,7 @@ let ExtensionManagementService = class ExtensionManagementService extends Common
377
377
  return true;
378
378
  }
379
379
  return ( new MarkdownString()).appendText(( localize(
380
- 13063,
380
+ 13261,
381
381
  "Cannot install the '{0}' extension because it is not available in this setup.",
382
382
  extension.manifest.displayName ?? extension.identifier.id
383
383
  )));
@@ -406,7 +406,7 @@ let ExtensionManagementService = class ExtensionManagementService extends Common
406
406
  const manifest = await this.extensionGalleryService.getManifest(extension, CancellationToken.None);
407
407
  if (!manifest) {
408
408
  throw ( new Error(( localize(
409
- 13064,
409
+ 13262,
410
410
  "Installing Extension {0} failed: Manifest is not found.",
411
411
  extension.displayName || extension.name
412
412
  ))));
@@ -425,7 +425,7 @@ let ExtensionManagementService = class ExtensionManagementService extends Common
425
425
  const manifest = await this.extensionGalleryService.getManifest(extension, CancellationToken.None);
426
426
  if (!manifest) {
427
427
  throw ( new Error(( localize(
428
- 13064,
428
+ 13262,
429
429
  "Installing Extension {0} failed: Manifest is not found.",
430
430
  extension.displayName || extension.name
431
431
  ))));
@@ -473,7 +473,7 @@ let ExtensionManagementService = class ExtensionManagementService extends Common
473
473
  const manifest = await this.extensionGalleryService.getManifest(gallery, CancellationToken.None);
474
474
  if (!manifest) {
475
475
  throw ( new Error(( localize(
476
- 13064,
476
+ 13262,
477
477
  "Installing Extension {0} failed: Manifest is not found.",
478
478
  gallery.displayName || gallery.name
479
479
  ))));
@@ -577,7 +577,7 @@ let ExtensionManagementService = class ExtensionManagementService extends Common
577
577
  const manifest = await this.extensionGalleryService.getManifest(gallery, CancellationToken.None);
578
578
  if (!manifest) {
579
579
  return Promise.reject(( localize(
580
- 13064,
580
+ 13262,
581
581
  "Installing Extension {0} failed: Manifest is not found.",
582
582
  gallery.displayName || gallery.name
583
583
  )));
@@ -627,7 +627,7 @@ let ExtensionManagementService = class ExtensionManagementService extends Common
627
627
  for (const server of servers) {
628
628
  if (!installableServers.includes(server)) {
629
629
  const error = ( new Error(( localize(
630
- 13065,
630
+ 13263,
631
631
  "Cannot install the '{0}' extension because it is not available in the '{1}' setup.",
632
632
  gallery.displayName || gallery.name,
633
633
  server.label
@@ -651,7 +651,7 @@ let ExtensionManagementService = class ExtensionManagementService extends Common
651
651
  }
652
652
  if (!servers.length) {
653
653
  const error = ( new Error(( localize(
654
- 13063,
654
+ 13261,
655
655
  "Cannot install the '{0}' extension because it is not available in this setup.",
656
656
  gallery.displayName || gallery.name
657
657
  ))));
@@ -689,24 +689,24 @@ let ExtensionManagementService = class ExtensionManagementService extends Common
689
689
  if (this.isExtensionsSyncEnabled()) {
690
690
  const { result } = await this.dialogService.prompt({
691
691
  type: Severity.Info,
692
- message: extensions.length === 1 ? ( localize(13066, "Install Extension")) : ( localize(13067, "Install Extensions")),
692
+ message: extensions.length === 1 ? ( localize(13264, "Install Extension")) : ( localize(13265, "Install Extensions")),
693
693
  detail: extensions.length === 1
694
694
  ? ( localize(
695
- 13068,
695
+ 13266,
696
696
  "Would you like to install and synchronize '{0}' extension across your devices?",
697
697
  extensions[0].displayName
698
698
  ))
699
699
  : ( localize(
700
- 13069,
700
+ 13267,
701
701
  "Would you like to install and synchronize extensions across your devices?"
702
702
  )),
703
703
  buttons: [
704
704
  {
705
- label: ( localize(13070, "&&Install")),
705
+ label: ( localize(13268, "&&Install")),
706
706
  run: () => false
707
707
  },
708
708
  {
709
- label: ( localize(13071, "Install (Do &&not sync)")),
709
+ label: ( localize(13269, "Install (Do &&not sync)")),
710
710
  run: () => true
711
711
  }
712
712
  ],
@@ -755,7 +755,7 @@ let ExtensionManagementService = class ExtensionManagementService extends Common
755
755
  const manifest = await this.extensionGalleryService.getManifest(extension, CancellationToken.None);
756
756
  if (!manifest) {
757
757
  throw ( new Error(( localize(
758
- 13064,
758
+ 13262,
759
759
  "Installing Extension {0} failed: Manifest is not found.",
760
760
  extension.displayName || extension.name
761
761
  ))));
@@ -787,7 +787,7 @@ let ExtensionManagementService = class ExtensionManagementService extends Common
787
787
  const unverfiiedPublishers = allPublishers.filter(p => !p.publisherDomain?.verified);
788
788
  const verifiedPublishers = allPublishers.filter(p => p.publisherDomain?.verified);
789
789
  const installButton = {
790
- label: allPublishers.length > 1 ? ( localize(13072, "Trust Publishers & &&Install")) : ( localize(13073, "Trust Publisher & &&Install")),
790
+ label: allPublishers.length > 1 ? ( localize(13270, "Trust Publishers & &&Install")) : ( localize(13271, "Trust Publisher & &&Install")),
791
791
  run: () => {
792
792
  this.telemetryService.publicLog2('extensions:trustPublisher', { action: 'trust', extensionId: ( untrustedExtensions.map(e => e.identifier.id)).join(',') });
793
793
  this.trustPublishers(...( allPublishers.map(
@@ -796,7 +796,7 @@ let ExtensionManagementService = class ExtensionManagementService extends Common
796
796
  }
797
797
  };
798
798
  const learnMoreButton = {
799
- label: ( localize(13074, "&&Learn More")),
799
+ label: ( localize(13272, "&&Learn More")),
800
800
  run: () => {
801
801
  this.telemetryService.publicLog2('extensions:trustPublisher', { action: 'learn', extensionId: ( untrustedExtensions.map(e => e.identifier.id)).join(',') });
802
802
  this.instantiationService.invokeFunction(accessor => accessor.get(ICommandService).executeCommand('vscode.open', ( URI.parse('https://aka.ms/vscode-extension-security'))));
@@ -809,19 +809,19 @@ let ExtensionManagementService = class ExtensionManagementService extends Common
809
809
  const unverifiedLink = 'https://aka.ms/vscode-verify-publisher';
810
810
  const title = allPublishers.length === 1
811
811
  ? ( localize(
812
- 13075,
812
+ 13273,
813
813
  "Do you trust the publisher \"{0}\"?",
814
814
  allPublishers[0].publisherDisplayName
815
815
  ))
816
816
  : allPublishers.length === 2
817
817
  ? ( localize(
818
- 13076,
818
+ 13274,
819
819
  "Do you trust publishers \"{0}\" and \"{1}\"?",
820
820
  allPublishers[0].publisherDisplayName,
821
821
  allPublishers[1].publisherDisplayName
822
822
  ))
823
823
  : ( localize(
824
- 13077,
824
+ 13275,
825
825
  "Do you trust the publisher \"{0}\" and {1} others?",
826
826
  allPublishers[0].publisherDisplayName,
827
827
  allPublishers.length - 1
@@ -832,7 +832,7 @@ let ExtensionManagementService = class ExtensionManagementService extends Common
832
832
  const manifest = untrustedExtensionManifests[0];
833
833
  if (otherUntrustedPublishers.length) {
834
834
  customMessage.appendMarkdown(( localize(
835
- 13078,
835
+ 13276,
836
836
  "The extension {0} is published by {1}.",
837
837
  `[${extension.displayName}](${extension.detailsLink})`,
838
838
  getPublisherLink(extension)
@@ -843,7 +843,7 @@ let ExtensionManagementService = class ExtensionManagementService extends Common
843
843
  )).toString());
844
844
  if (otherUntrustedPublishers.length === 1) {
845
845
  customMessage.appendMarkdown(( localize(
846
- 13079,
846
+ 13277,
847
847
  "Installing this extension will also install [extensions]({0}) published by {1}.",
848
848
  commandUri,
849
849
  getPublisherLink(otherUntrustedPublishers[0])
@@ -851,7 +851,7 @@ let ExtensionManagementService = class ExtensionManagementService extends Common
851
851
  }
852
852
  else {
853
853
  customMessage.appendMarkdown(( localize(
854
- 13080,
854
+ 13278,
855
855
  "Installing this extension will also install [extensions]({0}) published by {1} and {2}.",
856
856
  commandUri,
857
857
  ( otherUntrustedPublishers.slice(0, otherUntrustedPublishers.length - 1).map(p => getPublisherLink(p))).join(', '),
@@ -860,13 +860,13 @@ let ExtensionManagementService = class ExtensionManagementService extends Common
860
860
  }
861
861
  customMessage.appendMarkdown('&nbsp;');
862
862
  customMessage.appendMarkdown(( localize(
863
- 13081,
863
+ 13279,
864
864
  "This is the first time you're installing extensions from these publishers."
865
865
  )));
866
866
  }
867
867
  else {
868
868
  customMessage.appendMarkdown(( localize(
869
- 13082,
869
+ 13280,
870
870
  "The extension {0} is published by {1}. This is the first extension you're installing from this publisher.",
871
871
  `[${extension.displayName}](${extension.detailsLink})`,
872
872
  getPublisherLink(extension)
@@ -875,7 +875,7 @@ let ExtensionManagementService = class ExtensionManagementService extends Common
875
875
  }
876
876
  else {
877
877
  customMessage.appendMarkdown(( localize(
878
- 13083,
878
+ 13281,
879
879
  "This is the first time you're installing extensions from publishers {0} and {1}.",
880
880
  getPublisherLink(allPublishers[0]),
881
881
  getPublisherLink(allPublishers[allPublishers.length - 1])
@@ -885,7 +885,7 @@ let ExtensionManagementService = class ExtensionManagementService extends Common
885
885
  for (const publisher of verifiedPublishers) {
886
886
  customMessage.appendText('\n');
887
887
  const publisherVerifiedMessage = ( localize(
888
- 13084,
888
+ 13282,
889
889
  "{0} has verified ownership of {1}.",
890
890
  getPublisherLink(publisher),
891
891
  `[$(link-external) ${( URI.parse(publisher.publisherDomain.link)).authority}](${publisher.publisherDomain.link})`
@@ -896,7 +896,7 @@ let ExtensionManagementService = class ExtensionManagementService extends Common
896
896
  customMessage.appendText('\n');
897
897
  if (unverfiiedPublishers.length === 1) {
898
898
  customMessage.appendMarkdown(`$(${Codicon.unverified.id})&nbsp;${( localize(
899
- 13085,
899
+ 13283,
900
900
  "{0} is [**not** verified]({1}).",
901
901
  getPublisherLink(unverfiiedPublishers[0]),
902
902
  unverifiedLink
@@ -904,7 +904,7 @@ let ExtensionManagementService = class ExtensionManagementService extends Common
904
904
  }
905
905
  else {
906
906
  customMessage.appendMarkdown(`$(${Codicon.unverified.id})&nbsp;${( localize(
907
- 13086,
907
+ 13284,
908
908
  "{0} and {1} are [**not** verified]({2}).",
909
909
  ( unverfiiedPublishers.slice(0, unverfiiedPublishers.length - 1).map(p => getPublisherLink(p))).join(', '),
910
910
  getPublisherLink(unverfiiedPublishers[unverfiiedPublishers.length - 1]),
@@ -915,19 +915,19 @@ let ExtensionManagementService = class ExtensionManagementService extends Common
915
915
  }
916
916
  else {
917
917
  customMessage.appendText('\n');
918
- customMessage.appendMarkdown(`$(${Codicon.unverified.id})&nbsp;${( localize(13087, "All publishers are [**not** verified]({0}).", unverifiedLink))}`);
918
+ customMessage.appendMarkdown(`$(${Codicon.unverified.id})&nbsp;${( localize(13285, "All publishers are [**not** verified]({0}).", unverifiedLink))}`);
919
919
  }
920
920
  customMessage.appendText('\n');
921
921
  if (allPublishers.length > 1) {
922
922
  customMessage.appendMarkdown(( localize(
923
- 13088,
923
+ 13286,
924
924
  "{0} has no control over the behavior of third-party extensions, including how they manage your personal data. Proceed only if you trust the publishers.",
925
925
  this.productService.nameLong
926
926
  )));
927
927
  }
928
928
  else {
929
929
  customMessage.appendMarkdown(( localize(
930
- 13089,
930
+ 13287,
931
931
  "{0} has no control over the behavior of third-party extensions, including how they manage your personal data. Proceed only if you trust the publisher.",
932
932
  this.productService.nameLong
933
933
  )));
@@ -1006,13 +1006,13 @@ let ExtensionManagementService = class ExtensionManagementService extends Common
1006
1006
  async checkForWorkspaceTrust(manifest, requireTrust) {
1007
1007
  if (requireTrust || this.extensionManifestPropertiesService.getExtensionUntrustedWorkspaceSupportType(manifest) === false) {
1008
1008
  const buttons = [];
1009
- buttons.push({ label: ( localize(13090, "Trust Workspace & Install")), type: 'ContinueWithTrust' });
1009
+ buttons.push({ label: ( localize(13288, "Trust Workspace & Install")), type: 'ContinueWithTrust' });
1010
1010
  if (!requireTrust) {
1011
- buttons.push({ label: ( localize(13091, "Install")), type: 'ContinueWithoutTrust' });
1011
+ buttons.push({ label: ( localize(13289, "Install")), type: 'ContinueWithoutTrust' });
1012
1012
  }
1013
- buttons.push({ label: ( localize(13092, "Learn More")), type: 'Manage' });
1013
+ buttons.push({ label: ( localize(13290, "Learn More")), type: 'Manage' });
1014
1014
  const trustState = await this.workspaceTrustRequestService.requestWorkspaceTrust({
1015
- message: ( localize(13093, "Enabling this extension requires a trusted workspace.")),
1015
+ message: ( localize(13291, "Enabling this extension requires a trusted workspace.")),
1016
1016
  buttons
1017
1017
  });
1018
1018
  if (trustState === undefined) {
@@ -1036,7 +1036,7 @@ let ExtensionManagementService = class ExtensionManagementService extends Common
1036
1036
  throw ( new ExtensionManagementError('Not supported in Web', ExtensionManagementErrorCode.Unsupported));
1037
1037
  }
1038
1038
  }
1039
- const productName = ( localize(13094, "{0} for the Web", this.productService.nameLong));
1039
+ const productName = ( localize(13292, "{0} for the Web", this.productService.nameLong));
1040
1040
  const virtualWorkspaceSupport = this.extensionManifestPropertiesService.getExtensionVirtualWorkspaceSupportType(manifest);
1041
1041
  const virtualWorkspaceSupportReason = getWorkspaceSupportTypeMessage(manifest.capabilities?.virtualWorkspaces);
1042
1042
  const hasLimitedSupport = virtualWorkspaceSupport === 'limited' || !!virtualWorkspaceSupportReason;
@@ -1044,7 +1044,7 @@ let ExtensionManagementService = class ExtensionManagementService extends Common
1044
1044
  return;
1045
1045
  }
1046
1046
  const limitedSupportMessage = ( localize(
1047
- 13095,
1047
+ 13293,
1048
1048
  "'{0}' has limited functionality in {1}.",
1049
1049
  extension.displayName || extension.identifier.id,
1050
1050
  productName
@@ -1053,16 +1053,16 @@ let ExtensionManagementService = class ExtensionManagementService extends Common
1053
1053
  let buttons = [];
1054
1054
  let detail;
1055
1055
  const installAnywayButton = {
1056
- label: ( localize(13096, "&&Install Anyway")),
1056
+ label: ( localize(13294, "&&Install Anyway")),
1057
1057
  run: () => { }
1058
1058
  };
1059
1059
  const showExtensionsButton = {
1060
- label: ( localize(13097, "&&Show Extensions")),
1060
+ label: ( localize(13295, "&&Show Extensions")),
1061
1061
  run: () => this.instantiationService.invokeFunction(accessor => accessor.get(ICommandService).executeCommand('extension.open', extension.identifier.id, 'extensionPack'))
1062
1062
  };
1063
1063
  if (nonWebExtensions.length && hasLimitedSupport) {
1064
1064
  message = limitedSupportMessage;
1065
- detail = `${virtualWorkspaceSupportReason ? `${virtualWorkspaceSupportReason}\n` : ''}${( localize(13098, "Contains extensions which are not supported."))}`;
1065
+ detail = `${virtualWorkspaceSupportReason ? `${virtualWorkspaceSupportReason}\n` : ''}${( localize(13296, "Contains extensions which are not supported."))}`;
1066
1066
  buttons = [
1067
1067
  installAnywayButton,
1068
1068
  showExtensionsButton
@@ -1075,7 +1075,7 @@ let ExtensionManagementService = class ExtensionManagementService extends Common
1075
1075
  }
1076
1076
  else {
1077
1077
  message = ( localize(
1078
- 13099,
1078
+ 13297,
1079
1079
  "'{0}' contains extensions which are not supported in {1}.",
1080
1080
  extension.displayName || extension.identifier.id,
1081
1081
  productName
@@ -1362,7 +1362,7 @@ let WorkspaceExtensionsManagementService = class WorkspaceExtensionsManagementSe
1362
1362
  if (extension.manifest.main) {
1363
1363
  if (!(await this.fileService.exists(this.uriIdentityService.extUri.joinPath(extension.location, extension.manifest.main)))) {
1364
1364
  isValid = false;
1365
- validations.push([Severity.Error, ( localize(13100, "Cannot activate because {0} not found", extension.manifest.main))]);
1365
+ validations.push([Severity.Error, ( localize(13298, "Cannot activate because {0} not found", extension.manifest.main))]);
1366
1366
  }
1367
1367
  }
1368
1368
  return {