@codingame/monaco-vscode-extension-gallery-service-override 22.1.8 → 23.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/index.js CHANGED
@@ -11,7 +11,7 @@ import { IExtensionRecommendationNotificationService } from '@codingame/monaco-v
11
11
  import { SyncDescriptor } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/descriptors';
12
12
  import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
13
13
  import { ILabelService } from '@codingame/monaco-vscode-api/vscode/vs/platform/label/common/label.service';
14
- import { getLocale } from '@codingame/monaco-vscode-a654b07e-8806-5425-b124-18f03ba8e11a-common/vscode/vs/platform/languagePacks/common/languagePacks';
14
+ import { getLocale } from '@codingame/monaco-vscode-2a04f0cd-b806-5886-909e-418183d32279-common/vscode/vs/platform/languagePacks/common/languagePacks';
15
15
  import { IgnoredExtensionsManagementService } from './vscode/src/vs/platform/userDataSync/common/ignoredExtensions.js';
16
16
  import { IIgnoredExtensionsManagementService } from '@codingame/monaco-vscode-api/vscode/vs/platform/userDataSync/common/ignoredExtensions.service';
17
17
  import { ExtensionRecommendationNotificationService } from '@codingame/monaco-vscode-2673c6e2-17c1-5710-b169-46f3d4a28696-common/vscode/vs/workbench/contrib/extensions/browser/extensionRecommendationNotificationService';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codingame/monaco-vscode-extension-gallery-service-override",
3
- "version": "22.1.8",
3
+ "version": "23.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,15 +15,16 @@
15
15
  },
16
16
  "type": "module",
17
17
  "dependencies": {
18
- "@codingame/monaco-vscode-23aade48-f094-5c08-9555-97fc9cca96c9-common": "22.1.8",
19
- "@codingame/monaco-vscode-249dc928-1da3-51c1-82d0-45e0ba9d08a1-common": "22.1.8",
20
- "@codingame/monaco-vscode-2673c6e2-17c1-5710-b169-46f3d4a28696-common": "22.1.8",
21
- "@codingame/monaco-vscode-571c8352-7953-5038-9f09-e03bb6219a0e-common": "22.1.8",
22
- "@codingame/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common": "22.1.8",
23
- "@codingame/monaco-vscode-8c844347-a703-5de1-9eeb-5e0c7f503a58-common": "22.1.8",
24
- "@codingame/monaco-vscode-9ed6fe06-a052-57c2-a234-5d9b94d2e7e0-common": "22.1.8",
25
- "@codingame/monaco-vscode-a654b07e-8806-5425-b124-18f03ba8e11a-common": "22.1.8",
26
- "@codingame/monaco-vscode-api": "22.1.8"
18
+ "@codingame/monaco-vscode-23aade48-f094-5c08-9555-97fc9cca96c9-common": "23.0.0",
19
+ "@codingame/monaco-vscode-249dc928-1da3-51c1-82d0-45e0ba9d08a1-common": "23.0.0",
20
+ "@codingame/monaco-vscode-2673c6e2-17c1-5710-b169-46f3d4a28696-common": "23.0.0",
21
+ "@codingame/monaco-vscode-2a04f0cd-b806-5886-909e-418183d32279-common": "23.0.0",
22
+ "@codingame/monaco-vscode-571c8352-7953-5038-9f09-e03bb6219a0e-common": "23.0.0",
23
+ "@codingame/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common": "23.0.0",
24
+ "@codingame/monaco-vscode-7b19b93e-7a49-5c48-81f5-091a64f468d2-common": "23.0.0",
25
+ "@codingame/monaco-vscode-8c844347-a703-5de1-9eeb-5e0c7f503a58-common": "23.0.0",
26
+ "@codingame/monaco-vscode-9ed6fe06-a052-57c2-a234-5d9b94d2e7e0-common": "23.0.0",
27
+ "@codingame/monaco-vscode-api": "23.0.0"
27
28
  },
28
29
  "main": "index.js",
29
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
- 1783,
36
+ 1790,
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
- 1784,
44
+ 1791,
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(1785, "Learn Why"))}](${learnLink})`));
49
+ ))} [${( localize(1792, "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(1786, "Marketplace is not enabled")), ExtensionManagementErrorCode.NotAllowed));
114
+ throw ( new ExtensionManagementError(( localize(1793, "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
- 1787,
550
+ 1794,
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
- 1788,
561
+ 1795,
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
- 1784,
572
+ 1791,
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
- 1789,
584
+ 1796,
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
- 1790,
592
+ 1797,
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
- 1791,
598
+ 1798,
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
- 1792,
823
+ 1799,
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
- 1793,
831
+ 1800,
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
- 1794,
839
+ 1801,
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
- 1795,
848
+ 1802,
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
- 1796,
858
+ 1803,
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
- 1797,
868
+ 1804,
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
@@ -77,14 +77,14 @@ let AllowedExtensionsService = class AllowedExtensionsService extends Disposable
77
77
  }
78
78
  const settingsCommandLink = ( createCommandUri('workbench.action.openSettings', { query: `@id:${AllowedExtensionsConfigKey}` }).toString());
79
79
  const extensionValue = this._allowedExtensionsConfigValue[id];
80
- const extensionReason = ( new MarkdownString(( localize(1798, "it is not in the [allowed list]({0})", settingsCommandLink))));
80
+ const extensionReason = ( new MarkdownString(( localize(1805, "it is not in the [allowed list]({0})", settingsCommandLink))));
81
81
  if (!isUndefined(extensionValue)) {
82
82
  if (isBoolean(extensionValue)) {
83
83
  return extensionValue ? true : extensionReason;
84
84
  }
85
85
  if (extensionValue === 'stable' && prerelease) {
86
86
  return (new MarkdownString(localize(
87
- 1799,
87
+ 1806,
88
88
  "the pre-release versions of this extension are not in the [allowed list]({0})",
89
89
  settingsCommandLink
90
90
  )));
@@ -104,7 +104,7 @@ let AllowedExtensionsService = class AllowedExtensionsService extends Disposable
104
104
  return false;
105
105
  }))) {
106
106
  return (new MarkdownString(localize(
107
- 1800,
107
+ 1807,
108
108
  "the version {0} of this extension is not in the [allowed list]({1})",
109
109
  version,
110
110
  settingsCommandLink
@@ -117,7 +117,7 @@ let AllowedExtensionsService = class AllowedExtensionsService extends Disposable
117
117
  if (!isUndefined(publisherValue)) {
118
118
  if (isBoolean(publisherValue)) {
119
119
  return publisherValue ? true : ( new MarkdownString(( localize(
120
- 1801,
120
+ 1808,
121
121
  "the extensions from this publisher are not in the [allowed list]({1})",
122
122
  publisherKey,
123
123
  settingsCommandLink
@@ -125,7 +125,7 @@ let AllowedExtensionsService = class AllowedExtensionsService extends Disposable
125
125
  }
126
126
  if (publisherValue === 'stable' && prerelease) {
127
127
  return (new MarkdownString(localize(
128
- 1802,
128
+ 1809,
129
129
  "the pre-release versions from this publisher are not in the [allowed list]({1})",
130
130
  publisherKey,
131
131
  settingsCommandLink
@@ -1,5 +1,5 @@
1
1
  import { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation";
2
- import { IPager } from "@codingame/monaco-vscode-62190c26-af1c-5f7a-a364-e05a59cfb7c7-common/vscode/vs/base/common/paging";
2
+ import { IPager } from "@codingame/monaco-vscode-2eda793f-4b5b-58e8-83c5-1bfd3bad15f1-common/vscode/vs/base/common/paging";
3
3
  import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
4
4
  import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
5
5
  import { IEnvironmentService } from "@codingame/monaco-vscode-api/vscode/vs/platform/environment/common/environment.service";
@@ -13,7 +13,6 @@ 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-api/vscode/vs/platform/assignment/common/assignment";
17
16
  import { IExtensionGalleryManifestService } from "@codingame/monaco-vscode-api/vscode/vs/platform/extensionManagement/common/extensionGalleryManifest.service";
18
17
  interface IRawGalleryExtensionFile {
19
18
  readonly assetType: string;
@@ -33,8 +32,8 @@ export interface IRawGalleryExtensionVersion {
33
32
  readonly targetPlatform?: string;
34
33
  }
35
34
  export declare function sortExtensionVersions(versions: IRawGalleryExtensionVersion[], preferredTargetPlatform: TargetPlatform): IRawGalleryExtensionVersion[];
35
+ export declare function filterLatestExtensionVersionsForTargetPlatform(versions: IRawGalleryExtensionVersion[], targetPlatform: TargetPlatform, allTargetPlatforms: TargetPlatform[]): IRawGalleryExtensionVersion[];
36
36
  export declare abstract class AbstractExtensionGalleryService implements IExtensionGalleryService {
37
- private readonly assignmentService;
38
37
  private readonly requestService;
39
38
  private readonly logService;
40
39
  private readonly environmentService;
@@ -49,7 +48,7 @@ export declare abstract class AbstractExtensionGalleryService implements IExtens
49
48
  private readonly unpkgResourceApi;
50
49
  private readonly commonHeadersPromise;
51
50
  private readonly extensionsEnabledWithApiProposalVersion;
52
- constructor(storageService: IStorageService | undefined, assignmentService: IAssignmentService | undefined, requestService: IRequestService, logService: ILogService, environmentService: IEnvironmentService, telemetryService: ITelemetryService, fileService: IFileService, productService: IProductService, configurationService: IConfigurationService, allowedExtensionsService: IAllowedExtensionsService, extensionGalleryManifestService: IExtensionGalleryManifestService);
51
+ constructor(storageService: IStorageService | undefined, requestService: IRequestService, logService: ILogService, environmentService: IEnvironmentService, telemetryService: ITelemetryService, fileService: IFileService, productService: IProductService, configurationService: IConfigurationService, allowedExtensionsService: IAllowedExtensionsService, extensionGalleryManifestService: IExtensionGalleryManifestService);
53
52
  isEnabled(): boolean;
54
53
  getExtensions(extensionInfos: ReadonlyArray<IExtensionInfo>, token: CancellationToken): Promise<IGalleryExtension[]>;
55
54
  getExtensions(extensionInfos: ReadonlyArray<IExtensionInfo>, options: IExtensionQueryOptions, token: CancellationToken): Promise<IGalleryExtension[]>;
@@ -64,10 +63,7 @@ export declare abstract class AbstractExtensionGalleryService implements IExtens
64
63
  private isEngineValid;
65
64
  query(options: IQueryOptions, token: CancellationToken): Promise<IPager<IGalleryExtension>>;
66
65
  private queryGalleryExtensions;
67
- private queryGalleryExtensionsWithAllVersionsAsFallback;
68
- private queryGalleryExtensionsUsingIncludeLatestPrereleaseAndStableVersionFlag;
69
- private getRawGalleryExtensionVersionsToValidate;
70
- private getRawGalleryExtensionVersion;
66
+ private getValidRawGalleryExtensionVersion;
71
67
  private queryRawGalleryExtensions;
72
68
  private getHeaderValue;
73
69
  private getLatestRawGalleryExtensionWithFallback;
@@ -84,6 +80,7 @@ export declare abstract class AbstractExtensionGalleryService implements IExtens
84
80
  private getVersions;
85
81
  private getAsset;
86
82
  getExtensionsControlManifest(): Promise<IExtensionsControlManifest>;
83
+ private getRequestTimeout;
87
84
  }
88
85
  export declare class ExtensionGalleryService extends AbstractExtensionGalleryService {
89
86
  constructor(storageService: IStorageService, requestService: IRequestService, logService: ILogService, environmentService: IEnvironmentService, telemetryService: ITelemetryService, fileService: IFileService, productService: IProductService, configurationService: IConfigurationService, allowedExtensionsService: IAllowedExtensionsService, extensionGalleryManifestService: IExtensionGalleryManifestService);
@@ -6,12 +6,12 @@ import { semverExports } from '@codingame/monaco-vscode-api/_virtual/semver';
6
6
  import { getErrorMessage, CancellationError, isCancellationError } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errors';
7
7
  import { isWeb, platform } from '@codingame/monaco-vscode-api/vscode/vs/base/common/platform';
8
8
  import { arch } from '@codingame/monaco-vscode-api/vscode/vs/base/common/process';
9
- import { isString, isBoolean } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
9
+ import { isString, isBoolean, isNumber } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
10
10
  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, ExtensionGalleryError, ExtensionGalleryErrorCode, isNotWebExtensionInWebTargetPlatform, isTargetPlatformCompatible, StatisticType, InstallOperation } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensionManagement/common/extensionManagement';
14
+ import { getTargetPlatform, SortOrder, SortBy, FilterType, toTargetPlatform, WEB_EXTENSION_TAG, isTargetPlatformCompatible, EXTENSION_IDENTIFIER_REGEX, ExtensionGalleryError, ExtensionGalleryErrorCode, isNotWebExtensionInWebTargetPlatform, StatisticType, InstallOperation, ExtensionRequestsTimeoutConfigKey } 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';
@@ -35,7 +35,6 @@ const SEARCH_ACTIVITY_HEADER_NAME = 'X-Market-Search-Activity-Id';
35
35
  const ACTIVITY_HEADER_NAME = 'Activityid';
36
36
  const SERVER_HEADER_NAME = 'Server';
37
37
  const END_END_ID_HEADER_NAME = 'X-Vss-E2eid';
38
- const REQUEST_TIME_OUT = 10_000;
39
38
  const AssetType = {
40
39
  Icon: 'Microsoft.VisualStudio.Services.Icons.Default',
41
40
  Details: 'Microsoft.VisualStudio.Services.Content.Details',
@@ -237,6 +236,32 @@ function sortExtensionVersions(versions, preferredTargetPlatform) {
237
236
  }
238
237
  return versions;
239
238
  }
239
+ function filterLatestExtensionVersionsForTargetPlatform(versions, targetPlatform, allTargetPlatforms) {
240
+ const latestVersions = [];
241
+ let preReleaseVersionFoundForTargetPlatform = false;
242
+ let releaseVersionFoundForTargetPlatform = false;
243
+ for (const version of versions) {
244
+ const versionTargetPlatform = getTargetPlatformForExtensionVersion(version);
245
+ const isCompatibleWithTargetPlatform = isTargetPlatformCompatible(versionTargetPlatform, allTargetPlatforms, targetPlatform);
246
+ if (!isCompatibleWithTargetPlatform) {
247
+ latestVersions.push(version);
248
+ continue;
249
+ }
250
+ if (isPreReleaseVersion(version)) {
251
+ if (!preReleaseVersionFoundForTargetPlatform) {
252
+ preReleaseVersionFoundForTargetPlatform = true;
253
+ latestVersions.push(version);
254
+ }
255
+ }
256
+ else {
257
+ if (!releaseVersionFoundForTargetPlatform) {
258
+ releaseVersionFoundForTargetPlatform = true;
259
+ latestVersions.push(version);
260
+ }
261
+ }
262
+ }
263
+ return latestVersions;
264
+ }
240
265
  function setTelemetry(extension, index, querySource) {
241
266
  extension.telemetryData = { index, querySource, queryActivityId: extension.queryContext?.[SEARCH_ACTIVITY_HEADER_NAME] };
242
267
  }
@@ -304,8 +329,7 @@ function toExtension(galleryExtension, version, allTargetPlatforms, extensionGal
304
329
  };
305
330
  }
306
331
  let AbstractExtensionGalleryService = class AbstractExtensionGalleryService {
307
- constructor(storageService, assignmentService, requestService, logService, environmentService, telemetryService, fileService, productService, configurationService, allowedExtensionsService, extensionGalleryManifestService) {
308
- this.assignmentService = assignmentService;
332
+ constructor(storageService, requestService, logService, environmentService, telemetryService, fileService, productService, configurationService, allowedExtensionsService, extensionGalleryManifestService) {
309
333
  this.requestService = requestService;
310
334
  this.logService = logService;
311
335
  this.environmentService = environmentService;
@@ -426,13 +450,16 @@ let AbstractExtensionGalleryService = class AbstractExtensionGalleryService {
426
450
  let galleryExtension;
427
451
  try {
428
452
  galleryExtension = await this.getLatestGalleryExtension(extensionInfo, options, resourceApi, extensionGalleryManifest, token);
429
- if (galleryExtension === 'NOT_FOUND') {
430
- if (extensionInfo.uuid) {
431
- toQuery.push(extensionInfo);
432
- }
433
- return;
453
+ if (isString(galleryExtension)) {
454
+ this.telemetryService.publicLog2('galleryService:fallbacktoquery', {
455
+ extension: extensionInfo.id,
456
+ preRelease: !!extensionInfo.preRelease,
457
+ compatible: !!options.compatible,
458
+ errorCode: galleryExtension
459
+ });
460
+ toQuery.push(extensionInfo);
434
461
  }
435
- if (galleryExtension) {
462
+ else {
436
463
  result.push(galleryExtension);
437
464
  }
438
465
  }
@@ -466,20 +493,21 @@ let AbstractExtensionGalleryService = class AbstractExtensionGalleryService {
466
493
  if (!rawGalleryExtension) {
467
494
  return 'NOT_FOUND';
468
495
  }
496
+ const targetPlatform = options.targetPlatform ?? CURRENT_TARGET_PLATFORM;
469
497
  const allTargetPlatforms = getAllTargetPlatforms(rawGalleryExtension);
470
- const rawGalleryExtensionVersion = await this.getRawGalleryExtensionVersion(rawGalleryExtension, {
471
- targetPlatform: options.targetPlatform ?? CURRENT_TARGET_PLATFORM,
498
+ const rawGalleryExtensionVersion = await this.getValidRawGalleryExtensionVersion(rawGalleryExtension, filterLatestExtensionVersionsForTargetPlatform(rawGalleryExtension.versions, targetPlatform, allTargetPlatforms), {
499
+ targetPlatform,
472
500
  compatible: !!options.compatible,
473
501
  productVersion: options.productVersion ?? {
474
502
  version: this.productService.version,
475
503
  date: this.productService.date
476
504
  },
477
505
  version: extensionInfo.preRelease ? VersionKind.Latest : VersionKind.Release
478
- }, allTargetPlatforms, true);
506
+ }, allTargetPlatforms);
479
507
  if (rawGalleryExtensionVersion) {
480
508
  return toExtension(rawGalleryExtension, rawGalleryExtensionVersion, allTargetPlatforms, extensionGalleryManifest, this.productService);
481
509
  }
482
- return null;
510
+ return 'NOT_COMPATIBLE';
483
511
  }
484
512
  async getCompatibleExtension(extension, includePreRelease, targetPlatform, productVersion = { version: this.productService.version, date: this.productService.date }) {
485
513
  if (isNotWebExtensionInWebTargetPlatform(extension.allTargetPlatforms, targetPlatform)) {
@@ -648,13 +676,6 @@ let AbstractExtensionGalleryService = class AbstractExtensionGalleryService {
648
676
  return { firstPage: extensions, total, pageSize: query.pageSize, getPage };
649
677
  }
650
678
  async queryGalleryExtensions(query, criteria, extensionGalleryManifest, token) {
651
- if (this.productService.quality !== 'stable'
652
- && (await this.assignmentService?.getTreatment('useLatestPrereleaseAndStableVersionFlag'))) {
653
- return this.queryGalleryExtensionsUsingIncludeLatestPrereleaseAndStableVersionFlag(query, criteria, extensionGalleryManifest, token);
654
- }
655
- return this.queryGalleryExtensionsWithAllVersionsAsFallback(query, criteria, extensionGalleryManifest, token);
656
- }
657
- async queryGalleryExtensionsWithAllVersionsAsFallback(query, criteria, extensionGalleryManifest, token) {
658
679
  const flags = query.flags;
659
680
  if (query.flags.includes(Flag.IncludeLatestVersionOnly) && query.flags.includes(Flag.IncludeVersions)) {
660
681
  query = query.withFlags(...query.flags.filter(flag => flag !== Flag.IncludeVersions));
@@ -674,7 +695,7 @@ let AbstractExtensionGalleryService = class AbstractExtensionGalleryService {
674
695
  const allTargetPlatforms = getAllTargetPlatforms(rawGalleryExtension);
675
696
  const extensionIdentifier = { id: getGalleryExtensionId(rawGalleryExtension.publisher.publisherName, rawGalleryExtension.extensionName), uuid: rawGalleryExtension.extensionId };
676
697
  const includePreRelease = isBoolean(criteria.includePreRelease) ? criteria.includePreRelease : !!criteria.includePreRelease.find(extensionIdentifierWithPreRelease => areSameExtensions(extensionIdentifierWithPreRelease, extensionIdentifier))?.includePreRelease;
677
- const rawGalleryExtensionVersion = await this.getRawGalleryExtensionVersion(rawGalleryExtension, {
698
+ const rawGalleryExtensionVersion = await this.getValidRawGalleryExtensionVersion(rawGalleryExtension, rawGalleryExtension.versions, {
678
699
  compatible: criteria.compatible,
679
700
  targetPlatform: criteria.targetPlatform,
680
701
  productVersion: criteria.productVersion,
@@ -702,7 +723,7 @@ let AbstractExtensionGalleryService = class AbstractExtensionGalleryService {
702
723
  continue;
703
724
  }
704
725
  }
705
- const rawGalleryExtensionVersion = await this.getRawGalleryExtensionVersion(rawGalleryExtension, {
726
+ const rawGalleryExtensionVersion = await this.getValidRawGalleryExtensionVersion(rawGalleryExtension, rawGalleryExtension.versions, {
706
727
  compatible: criteria.compatible,
707
728
  targetPlatform: criteria.targetPlatform,
708
729
  productVersion: criteria.productVersion,
@@ -737,77 +758,9 @@ let AbstractExtensionGalleryService = class AbstractExtensionGalleryService {
737
758
  }
738
759
  return { extensions: ( result.sort((a, b) => a[0] - b[0]).map(([, extension]) => extension)), total };
739
760
  }
740
- async queryGalleryExtensionsUsingIncludeLatestPrereleaseAndStableVersionFlag(query, criteria, extensionGalleryManifest, token) {
741
- if (criteria.versions?.length) {
742
- query = query.withFlags(...query.flags.filter(flag => flag !== Flag.IncludeLatestVersionOnly && flag !== Flag.IncludeLatestPrereleaseAndStableVersionOnly), Flag.IncludeVersions);
743
- }
744
- else if (!query.flags.includes(Flag.IncludeVersions)) {
745
- const includeLatest = isBoolean(criteria.includePreRelease) ? criteria.includePreRelease : criteria.includePreRelease.every(({ includePreRelease }) => includePreRelease);
746
- query = includeLatest ? query.withFlags(...query.flags.filter(flag => flag !== Flag.IncludeLatestPrereleaseAndStableVersionOnly), Flag.IncludeLatestVersionOnly) : query.withFlags(...query.flags.filter(flag => flag !== Flag.IncludeLatestVersionOnly), Flag.IncludeLatestPrereleaseAndStableVersionOnly);
747
- }
748
- if (query.flags.includes(Flag.IncludeVersions) && (query.flags.includes(Flag.IncludeLatestVersionOnly) || query.flags.includes(Flag.IncludeLatestPrereleaseAndStableVersionOnly))) {
749
- query = query.withFlags(...query.flags.filter(flag => flag !== Flag.IncludeLatestVersionOnly && flag !== Flag.IncludeLatestPrereleaseAndStableVersionOnly), Flag.IncludeVersions);
750
- }
751
- query = query.withFlags(...query.flags, Flag.IncludeAssetUri, Flag.IncludeCategoryAndTags, Flag.IncludeFiles, Flag.IncludeStatistics, Flag.IncludeVersionProperties);
752
- const { galleryExtensions: rawGalleryExtensions, total, context } = await this.queryRawGalleryExtensions(query, extensionGalleryManifest, token);
753
- const extensions = [];
754
- for (let index = 0; index < rawGalleryExtensions.length; index++) {
755
- const rawGalleryExtension = rawGalleryExtensions[index];
756
- const extensionIdentifier = { id: getGalleryExtensionId(rawGalleryExtension.publisher.publisherName, rawGalleryExtension.extensionName), uuid: rawGalleryExtension.extensionId };
757
- const allTargetPlatforms = getAllTargetPlatforms(rawGalleryExtension);
758
- if (criteria.compatible) {
759
- if (isNotWebExtensionInWebTargetPlatform(allTargetPlatforms, criteria.targetPlatform)) {
760
- continue;
761
- }
762
- if (this.allowedExtensionsService.isAllowed({ id: extensionIdentifier.id, publisherDisplayName: rawGalleryExtension.publisher.displayName }) !== true) {
763
- continue;
764
- }
765
- }
766
- const version = criteria.versions?.find(extensionIdentifierWithVersion => areSameExtensions(extensionIdentifierWithVersion, extensionIdentifier))?.version
767
- ?? ((isBoolean(criteria.includePreRelease) ? criteria.includePreRelease : !!criteria.includePreRelease.find(extensionIdentifierWithPreRelease => areSameExtensions(extensionIdentifierWithPreRelease, extensionIdentifier))?.includePreRelease) ? VersionKind.Latest : VersionKind.Release);
768
- const rawGalleryExtensionVersion = await this.getRawGalleryExtensionVersion(rawGalleryExtension, {
769
- compatible: criteria.compatible,
770
- targetPlatform: criteria.targetPlatform,
771
- productVersion: criteria.productVersion,
772
- version
773
- }, allTargetPlatforms);
774
- if (rawGalleryExtensionVersion) {
775
- extensions.push(toExtension(rawGalleryExtension, rawGalleryExtensionVersion, allTargetPlatforms, extensionGalleryManifest, this.productService, context));
776
- }
777
- }
778
- return { extensions, total };
779
- }
780
- getRawGalleryExtensionVersionsToValidate(rawGalleryExtensionVersions, targetPlatform, allTargetPlatforms, hasOnlylatestVersions) {
781
- const sorted = sortExtensionVersions(rawGalleryExtensionVersions, targetPlatform);
782
- if (!hasOnlylatestVersions) {
783
- return sorted;
784
- }
785
- const result = [];
786
- let preReleaseVersionForTargetPlatformFound = false;
787
- let releaseVersionForTargetPlatformFound = false;
788
- for (const rawGalleryExtensionVersion of sorted) {
789
- if (!isTargetPlatformCompatible(getTargetPlatformForExtensionVersion(rawGalleryExtensionVersion), allTargetPlatforms, targetPlatform)) {
790
- result.push(rawGalleryExtensionVersion);
791
- continue;
792
- }
793
- if (isPreReleaseVersion(rawGalleryExtensionVersion)) {
794
- if (!preReleaseVersionForTargetPlatformFound) {
795
- result.push(rawGalleryExtensionVersion);
796
- preReleaseVersionForTargetPlatformFound = true;
797
- }
798
- }
799
- else {
800
- if (!releaseVersionForTargetPlatformFound) {
801
- result.push(rawGalleryExtensionVersion);
802
- releaseVersionForTargetPlatformFound = true;
803
- }
804
- }
805
- }
806
- return result;
807
- }
808
- async getRawGalleryExtensionVersion(rawGalleryExtension, criteria, allTargetPlatforms, hasOnlylatestVersions) {
761
+ async getValidRawGalleryExtensionVersion(rawGalleryExtension, versions, criteria, allTargetPlatforms) {
809
762
  const extensionIdentifier = { id: getGalleryExtensionId(rawGalleryExtension.publisher.publisherName, rawGalleryExtension.extensionName)};
810
- const rawGalleryExtensionVersions = this.getRawGalleryExtensionVersionsToValidate(rawGalleryExtension.versions, criteria.targetPlatform, allTargetPlatforms, hasOnlylatestVersions);
763
+ const rawGalleryExtensionVersions = sortExtensionVersions(versions, criteria.targetPlatform);
811
764
  if (criteria.compatible && isNotWebExtensionInWebTargetPlatform(allTargetPlatforms, criteria.targetPlatform)) {
812
765
  return null;
813
766
  }
@@ -1015,7 +968,7 @@ let AbstractExtensionGalleryService = class AbstractExtensionGalleryService {
1015
968
  type: 'GET',
1016
969
  url: ( uri.toString(true)),
1017
970
  headers,
1018
- timeout: REQUEST_TIME_OUT
971
+ timeout: this.getRequestTimeout()
1019
972
  }, token);
1020
973
  if (context.res.statusCode === 404) {
1021
974
  errorCode = 'NotFound';
@@ -1249,7 +1202,7 @@ let AbstractExtensionGalleryService = class AbstractExtensionGalleryService {
1249
1202
  options = { ...options, ...baseOptions, headers };
1250
1203
  const url = asset.uri;
1251
1204
  const fallbackUrl = asset.fallbackUri;
1252
- const firstOptions = { ...options, url, timeout: REQUEST_TIME_OUT };
1205
+ const firstOptions = { ...options, url, timeout: this.getRequestTimeout() };
1253
1206
  let context;
1254
1207
  try {
1255
1208
  context = await this.requestService.request(firstOptions, token);
@@ -1273,7 +1226,7 @@ let AbstractExtensionGalleryService = class AbstractExtensionGalleryService {
1273
1226
  activityId: this.getHeaderValue(context?.res.headers, ACTIVITY_HEADER_NAME),
1274
1227
  endToEndId: this.getHeaderValue(context?.res.headers, END_END_ID_HEADER_NAME),
1275
1228
  });
1276
- const fallbackOptions = { ...options, url: fallbackUrl, timeout: REQUEST_TIME_OUT };
1229
+ const fallbackOptions = { ...options, url: fallbackUrl, timeout: this.getRequestTimeout() };
1277
1230
  return this.requestService.request(fallbackOptions, token);
1278
1231
  }
1279
1232
  }
@@ -1288,7 +1241,7 @@ let AbstractExtensionGalleryService = class AbstractExtensionGalleryService {
1288
1241
  const context = await this.requestService.request({
1289
1242
  type: 'GET',
1290
1243
  url: this.extensionsControlUrl,
1291
- timeout: REQUEST_TIME_OUT
1244
+ timeout: this.getRequestTimeout()
1292
1245
  }, CancellationToken.None);
1293
1246
  if (context.res.statusCode !== 200) {
1294
1247
  throw ( new Error('Could not get extensions report.'));
@@ -1336,17 +1289,21 @@ let AbstractExtensionGalleryService = class AbstractExtensionGalleryService {
1336
1289
  }
1337
1290
  return { malicious, deprecated, search, autoUpdate };
1338
1291
  }
1292
+ getRequestTimeout() {
1293
+ const configuredTimeout = this.configurationService.getValue(ExtensionRequestsTimeoutConfigKey);
1294
+ return isNumber(configuredTimeout) && configuredTimeout >= 0 ? configuredTimeout : 60_000;
1295
+ }
1339
1296
  };
1340
1297
  AbstractExtensionGalleryService = ( __decorate([
1341
- ( __param(2, IRequestService)),
1342
- ( __param(3, ILogService)),
1343
- ( __param(4, IEnvironmentService)),
1344
- ( __param(5, ITelemetryService)),
1345
- ( __param(6, IFileService)),
1346
- ( __param(7, IProductService)),
1347
- ( __param(8, IConfigurationService)),
1348
- ( __param(9, IAllowedExtensionsService)),
1349
- ( __param(10, IExtensionGalleryManifestService))
1298
+ ( __param(1, IRequestService)),
1299
+ ( __param(2, ILogService)),
1300
+ ( __param(3, IEnvironmentService)),
1301
+ ( __param(4, ITelemetryService)),
1302
+ ( __param(5, IFileService)),
1303
+ ( __param(6, IProductService)),
1304
+ ( __param(7, IConfigurationService)),
1305
+ ( __param(8, IAllowedExtensionsService)),
1306
+ ( __param(9, IExtensionGalleryManifestService))
1350
1307
  ], AbstractExtensionGalleryService));
1351
1308
 
1352
- export { AbstractExtensionGalleryService, sortExtensionVersions };
1309
+ export { AbstractExtensionGalleryService, filterLatestExtensionVersionsForTargetPlatform, sortExtensionVersions };
@@ -12,11 +12,11 @@ import { CommontExtensionManagementService } from "./abstractExtensionManagement
12
12
  export declare class ExtensionManagementChannel implements IServerChannel {
13
13
  private service;
14
14
  private getUriTransformer;
15
- onInstallExtension: Event<InstallExtensionEvent>;
16
- onDidInstallExtensions: Event<readonly InstallExtensionResult[]>;
17
- onUninstallExtension: Event<UninstallExtensionEvent>;
18
- onDidUninstallExtension: Event<DidUninstallExtensionEvent>;
19
- onDidUpdateExtensionMetadata: Event<DidUpdateExtensionMetadata>;
15
+ readonly onInstallExtension: Event<InstallExtensionEvent>;
16
+ readonly onDidInstallExtensions: Event<readonly InstallExtensionResult[]>;
17
+ readonly onUninstallExtension: Event<UninstallExtensionEvent>;
18
+ readonly onDidUninstallExtension: Event<DidUninstallExtensionEvent>;
19
+ readonly onDidUpdateExtensionMetadata: Event<DidUpdateExtensionMetadata>;
20
20
  constructor(service: IExtensionManagementService, getUriTransformer: (requestContext: any) => IURITransformer | null);
21
21
  listen(context: any, event: string): Event<any>;
22
22
  call(context: any, command: string, args?: any): Promise<any>;
@@ -7,4 +7,4 @@ 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(7075, "Running Extensions"))), [( new SyncDescriptor(RuntimeExtensionsInput))]);
10
+ ( Registry.as(EditorExtensions.EditorPane)).registerEditorPane(EditorPaneDescriptor.create(RuntimeExtensionsEditor, RuntimeExtensionsEditor.ID, ( localize(7319, "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(7441, "Report Issue")); }
11
+ static { this._label = ( localize(7686, "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;