@theia/vsx-registry 1.67.0-next.56 → 1.67.0-next.59

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/lib/browser/recommended-extensions/preference-provider-overrides.d.ts +19 -0
  2. package/lib/browser/recommended-extensions/preference-provider-overrides.d.ts.map +1 -0
  3. package/lib/browser/recommended-extensions/preference-provider-overrides.js +92 -0
  4. package/lib/browser/recommended-extensions/preference-provider-overrides.js.map +1 -0
  5. package/lib/browser/recommended-extensions/recommended-extensions-json-schema.d.ts +13 -0
  6. package/lib/browser/recommended-extensions/recommended-extensions-json-schema.d.ts.map +1 -0
  7. package/lib/browser/recommended-extensions/recommended-extensions-json-schema.js +87 -0
  8. package/lib/browser/recommended-extensions/recommended-extensions-json-schema.js.map +1 -0
  9. package/lib/browser/vsx-extension-argument-processor.d.ts +5 -0
  10. package/lib/browser/vsx-extension-argument-processor.d.ts.map +1 -0
  11. package/lib/browser/vsx-extension-argument-processor.js +34 -0
  12. package/lib/browser/vsx-extension-argument-processor.js.map +1 -0
  13. package/lib/browser/vsx-extension-commands.d.ts +17 -0
  14. package/lib/browser/vsx-extension-commands.d.ts.map +1 -0
  15. package/lib/browser/vsx-extension-commands.js +75 -0
  16. package/lib/browser/vsx-extension-commands.js.map +1 -0
  17. package/lib/browser/vsx-extension-editor-manager.d.ts +11 -0
  18. package/lib/browser/vsx-extension-editor-manager.d.ts.map +1 -0
  19. package/lib/browser/vsx-extension-editor-manager.js +45 -0
  20. package/lib/browser/vsx-extension-editor-manager.js.map +1 -0
  21. package/lib/browser/vsx-extension-editor.d.ts +22 -0
  22. package/lib/browser/vsx-extension-editor.d.ts.map +1 -0
  23. package/lib/browser/vsx-extension-editor.js +102 -0
  24. package/lib/browser/vsx-extension-editor.js.map +1 -0
  25. package/lib/browser/vsx-extension.d.ts +162 -0
  26. package/lib/browser/vsx-extension.d.ts.map +1 -0
  27. package/lib/browser/vsx-extension.js +647 -0
  28. package/lib/browser/vsx-extension.js.map +1 -0
  29. package/lib/browser/vsx-extensions-contribution.d.ts +74 -0
  30. package/lib/browser/vsx-extensions-contribution.d.ts.map +1 -0
  31. package/lib/browser/vsx-extensions-contribution.js +405 -0
  32. package/lib/browser/vsx-extensions-contribution.js.map +1 -0
  33. package/lib/browser/vsx-extensions-model.d.ts +100 -0
  34. package/lib/browser/vsx-extensions-model.d.ts.map +1 -0
  35. package/lib/browser/vsx-extensions-model.js +522 -0
  36. package/lib/browser/vsx-extensions-model.js.map +1 -0
  37. package/lib/browser/vsx-extensions-preferences.d.ts +12 -0
  38. package/lib/browser/vsx-extensions-preferences.d.ts.map +1 -0
  39. package/lib/browser/vsx-extensions-preferences.js +46 -0
  40. package/lib/browser/vsx-extensions-preferences.js.map +1 -0
  41. package/lib/browser/vsx-extensions-search-bar.d.ts +23 -0
  42. package/lib/browser/vsx-extensions-search-bar.d.ts.map +1 -0
  43. package/lib/browser/vsx-extensions-search-bar.js +99 -0
  44. package/lib/browser/vsx-extensions-search-bar.js.map +1 -0
  45. package/lib/browser/vsx-extensions-search-model.d.ts +22 -0
  46. package/lib/browser/vsx-extensions-search-model.d.ts.map +1 -0
  47. package/lib/browser/vsx-extensions-search-model.js +66 -0
  48. package/lib/browser/vsx-extensions-search-model.js.map +1 -0
  49. package/lib/browser/vsx-extensions-source.d.ts +21 -0
  50. package/lib/browser/vsx-extensions-source.d.ts.map +1 -0
  51. package/lib/browser/vsx-extensions-source.js +102 -0
  52. package/lib/browser/vsx-extensions-source.js.map +1 -0
  53. package/lib/browser/vsx-extensions-view-container.d.ts +50 -0
  54. package/lib/browser/vsx-extensions-view-container.d.ts.map +1 -0
  55. package/lib/browser/vsx-extensions-view-container.js +185 -0
  56. package/lib/browser/vsx-extensions-view-container.js.map +1 -0
  57. package/lib/browser/vsx-extensions-widget.d.ts +36 -0
  58. package/lib/browser/vsx-extensions-widget.d.ts.map +1 -0
  59. package/lib/browser/vsx-extensions-widget.js +157 -0
  60. package/lib/browser/vsx-extensions-widget.js.map +1 -0
  61. package/lib/browser/vsx-language-quick-pick-service.d.ts +16 -0
  62. package/lib/browser/vsx-language-quick-pick-service.d.ts.map +1 -0
  63. package/lib/browser/vsx-language-quick-pick-service.js +117 -0
  64. package/lib/browser/vsx-language-quick-pick-service.js.map +1 -0
  65. package/lib/browser/vsx-registry-frontend-module.d.ts +5 -0
  66. package/lib/browser/vsx-registry-frontend-module.d.ts.map +1 -0
  67. package/lib/browser/vsx-registry-frontend-module.js +109 -0
  68. package/lib/browser/vsx-registry-frontend-module.js.map +1 -0
  69. package/lib/common/index.d.ts +4 -0
  70. package/lib/common/index.d.ts.map +1 -0
  71. package/lib/common/index.js +26 -0
  72. package/lib/common/index.js.map +1 -0
  73. package/lib/common/ovsx-client-provider.d.ts +14 -0
  74. package/lib/common/ovsx-client-provider.d.ts.map +1 -0
  75. package/lib/common/ovsx-client-provider.js +30 -0
  76. package/lib/common/ovsx-client-provider.js.map +1 -0
  77. package/lib/common/recommended-extensions-preference-contribution.d.ts +13 -0
  78. package/lib/common/recommended-extensions-preference-contribution.d.ts.map +1 -0
  79. package/lib/common/recommended-extensions-preference-contribution.js +53 -0
  80. package/lib/common/recommended-extensions-preference-contribution.js.map +1 -0
  81. package/lib/common/vsx-environment.d.ts +11 -0
  82. package/lib/common/vsx-environment.d.ts.map +1 -0
  83. package/lib/common/vsx-environment.js +21 -0
  84. package/lib/common/vsx-environment.js.map +1 -0
  85. package/lib/common/vsx-extension-uri.d.ts +4 -0
  86. package/lib/common/vsx-extension-uri.d.ts.map +1 -0
  87. package/lib/common/vsx-extension-uri.js +21 -0
  88. package/lib/common/vsx-extension-uri.js.map +1 -0
  89. package/lib/common/vsx-registry-common-module.d.ts +4 -0
  90. package/lib/common/vsx-registry-common-module.d.ts.map +1 -0
  91. package/lib/common/vsx-registry-common-module.js +77 -0
  92. package/lib/common/vsx-registry-common-module.js.map +1 -0
  93. package/lib/node/vsx-cli-deployer-participant.d.ts +7 -0
  94. package/lib/node/vsx-cli-deployer-participant.d.ts.map +1 -0
  95. package/lib/node/vsx-cli-deployer-participant.js +52 -0
  96. package/lib/node/vsx-cli-deployer-participant.js.map +1 -0
  97. package/lib/node/vsx-cli.d.ts +12 -0
  98. package/lib/node/vsx-cli.d.ts.map +1 -0
  99. package/lib/node/vsx-cli.js +56 -0
  100. package/lib/node/vsx-cli.js.map +1 -0
  101. package/lib/node/vsx-environment-impl.d.ts +16 -0
  102. package/lib/node/vsx-environment-impl.d.ts.map +1 -0
  103. package/lib/node/vsx-environment-impl.js +57 -0
  104. package/lib/node/vsx-environment-impl.js.map +1 -0
  105. package/lib/node/vsx-extension-resolver.d.ts +22 -0
  106. package/lib/node/vsx-extension-resolver.d.ts.map +1 -0
  107. package/lib/node/vsx-extension-resolver.js +156 -0
  108. package/lib/node/vsx-extension-resolver.js.map +1 -0
  109. package/lib/node/vsx-registry-backend-module.d.ts +4 -0
  110. package/lib/node/vsx-registry-backend-module.d.ts.map +1 -0
  111. package/lib/node/vsx-registry-backend-module.js +41 -0
  112. package/lib/node/vsx-registry-backend-module.js.map +1 -0
  113. package/lib/node/vsx-remote-cli.d.ts +7 -0
  114. package/lib/node/vsx-remote-cli.d.ts.map +1 -0
  115. package/lib/node/vsx-remote-cli.js +40 -0
  116. package/lib/node/vsx-remote-cli.js.map +1 -0
  117. package/lib/package.spec.d.ts +1 -0
  118. package/lib/package.spec.d.ts.map +1 -0
  119. package/lib/package.spec.js +26 -0
  120. package/lib/package.spec.js.map +1 -0
  121. package/package.json +10 -10
@@ -0,0 +1,100 @@
1
+ import { Emitter, Event } from '@theia/core/lib/common/event';
2
+ import { CancellationToken, CancellationTokenSource } from '@theia/core/lib/common/cancellation';
3
+ import { HostedPluginSupport } from '@theia/plugin-ext/lib/hosted/browser/hosted-plugin';
4
+ import { VSXExtension, VSXExtensionFactory } from './vsx-extension';
5
+ import { ProgressService } from '@theia/core/lib/common/progress-service';
6
+ import { VSXExtensionsSearchModel } from './vsx-extensions-search-model';
7
+ import { PreferenceInspectionScope, PreferenceService } from '@theia/core/lib/common/preferences/preference-service';
8
+ import { WorkspaceService } from '@theia/workspace/lib/browser';
9
+ import { RecommendedExtensions } from '../common/recommended-extensions-preference-contribution';
10
+ import URI from '@theia/core/lib/common/uri';
11
+ import { OVSXClient, VSXAllVersions, VSXSearchEntry, VSXSearchOptions } from '@theia/ovsx-client/lib/ovsx-types';
12
+ import { OVSXClientProvider } from '../common/ovsx-client-provider';
13
+ import { RequestService } from '@theia/core/shared/@theia/request';
14
+ import { OVSXApiFilterProvider } from '@theia/ovsx-client';
15
+ import { ApplicationServer } from '@theia/core/lib/common/application-protocol';
16
+ import { HostedPluginServer } from '@theia/plugin-ext';
17
+ import { HostedPluginWatcher } from '@theia/plugin-ext/lib/hosted/browser/hosted-plugin-watcher';
18
+ export declare class VSXExtensionsModel {
19
+ protected initialized: Promise<void>;
20
+ /**
21
+ * Single source for all extensions
22
+ */
23
+ protected readonly extensions: Map<string, VSXExtension>;
24
+ protected readonly onDidChangeEmitter: Emitter<void>;
25
+ protected disabled: Set<`${string}.${string}`>;
26
+ protected uninstalled: Set<`${string}.${string}@${string}`>;
27
+ protected deployed: Set<`${string}.${string}@${string}`>;
28
+ protected _versionedInstalled: Set<`${string}.${string}@${string}`>;
29
+ protected _unversionedInstalled: Set<`${string}.${string}`>;
30
+ protected _recommended: Set<string>;
31
+ protected _searchResult: Set<string>;
32
+ protected builtins: Set<`${string}.${string}`>;
33
+ protected _searchError?: string;
34
+ protected searchCancellationTokenSource: CancellationTokenSource;
35
+ protected updateSearchResult: () => Promise<void>;
36
+ protected clientProvider: OVSXClientProvider;
37
+ protected readonly pluginSupport: HostedPluginSupport;
38
+ protected pluginWatcher: HostedPluginWatcher;
39
+ protected readonly pluginServer: HostedPluginServer;
40
+ protected readonly extensionFactory: VSXExtensionFactory;
41
+ protected readonly progressService: ProgressService;
42
+ protected readonly preferences: PreferenceService;
43
+ protected readonly workspaceService: WorkspaceService;
44
+ readonly search: VSXExtensionsSearchModel;
45
+ protected request: RequestService;
46
+ protected vsxApiFilter: OVSXApiFilterProvider;
47
+ protected readonly applicationServer: ApplicationServer;
48
+ protected init(): void;
49
+ protected doInit(): Promise<void>;
50
+ get onDidChange(): Event<void>;
51
+ get installed(): IterableIterator<string>;
52
+ get searchError(): string | undefined;
53
+ get searchResult(): IterableIterator<string>;
54
+ get recommended(): IterableIterator<string>;
55
+ setOnlyShowVerifiedExtensions(bool: boolean): void;
56
+ isBuiltIn(id: string): boolean;
57
+ /**
58
+ * @param id should be a ${@link PluginIdentifiers.VersionedId}
59
+ * @returns `true` if the specific version queried installed
60
+ */
61
+ isInstalledAtSpecificVersion(id: string): boolean;
62
+ /**
63
+ * @param id should be an unversioned Identifier
64
+ * @returns `true` if any version of the plugin is installed
65
+ */
66
+ isInstalled(id: string): boolean;
67
+ isUninstalled(id: string): boolean;
68
+ isDeployed(id: string): boolean;
69
+ isDisabled(id: string): boolean;
70
+ getExtension(id: string): VSXExtension | undefined;
71
+ resolve(id: string): Promise<VSXExtension>;
72
+ protected initInstalled(): Promise<void>;
73
+ protected initSearchResult(): Promise<void>;
74
+ protected initRecommended(): Promise<void>;
75
+ protected resetSearchCancellationTokenSource(): CancellationTokenSource;
76
+ protected setExtension(id: string, version?: string): VSXExtension;
77
+ protected doChange<T>(task: () => Promise<T>): Promise<T>;
78
+ protected doChange<T>(task: () => Promise<T>, token: CancellationToken): Promise<T | undefined>;
79
+ protected doUpdateSearchResult(param: VSXSearchOptions, token: CancellationToken): Promise<void>;
80
+ protected fetchVerifiedStatus(id: string, client: OVSXClient, allVersions: VSXAllVersions): Promise<boolean | undefined>;
81
+ protected addExtensions(data: VSXSearchEntry, id: string, allVersions: VSXAllVersions, verified?: boolean): void;
82
+ protected updateInstalled(): Promise<void>;
83
+ protected updateRecommended(): Promise<Array<VSXExtension | undefined>>;
84
+ protected getRecommendationsForScope(scope: PreferenceInspectionScope, root?: URI): Required<RecommendedExtensions>;
85
+ protected compileReadme(readmeMarkdown: string): string;
86
+ protected refresh(id: string, version?: string): Promise<VSXExtension | undefined>;
87
+ /**
88
+ * Determines if the given extension should be refreshed.
89
+ * @param extension the extension to refresh.
90
+ */
91
+ protected shouldRefresh(extension?: VSXExtension): boolean;
92
+ protected onDidFailRefresh(id: string, error: unknown): VSXExtension | undefined;
93
+ /**
94
+ * Compare two extensions based on their display name, and publisher if applicable.
95
+ * @param a the first extension id for comparison.
96
+ * @param b the second extension id for comparison.
97
+ */
98
+ protected compareExtensions(a: string, b: string): number;
99
+ }
100
+ //# sourceMappingURL=vsx-extensions-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vsx-extensions-model.d.ts","sourceRoot":"","sources":["../../src/browser/vsx-extensions-model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,522 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2020 TypeFox and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.VSXExtensionsModel = void 0;
19
+ const tslib_1 = require("tslib");
20
+ const inversify_1 = require("@theia/core/shared/inversify");
21
+ const p_debounce_1 = require("p-debounce");
22
+ const markdownit = require("@theia/core/shared/markdown-it");
23
+ const DOMPurify = require("@theia/core/shared/dompurify");
24
+ const event_1 = require("@theia/core/lib/common/event");
25
+ const cancellation_1 = require("@theia/core/lib/common/cancellation");
26
+ const hosted_plugin_1 = require("@theia/plugin-ext/lib/hosted/browser/hosted-plugin");
27
+ const vsx_extension_1 = require("./vsx-extension");
28
+ const progress_service_1 = require("@theia/core/lib/common/progress-service");
29
+ const vsx_extensions_search_model_1 = require("./vsx-extensions-search-model");
30
+ const preference_service_1 = require("@theia/core/lib/common/preferences/preference-service");
31
+ const browser_1 = require("@theia/workspace/lib/browser");
32
+ const ovsx_types_1 = require("@theia/ovsx-client/lib/ovsx-types");
33
+ const ovsx_client_provider_1 = require("../common/ovsx-client-provider");
34
+ const request_1 = require("@theia/core/shared/@theia/request");
35
+ const ovsx_client_1 = require("@theia/ovsx-client");
36
+ const application_protocol_1 = require("@theia/core/lib/common/application-protocol");
37
+ const plugin_ext_1 = require("@theia/plugin-ext");
38
+ const hosted_plugin_watcher_1 = require("@theia/plugin-ext/lib/hosted/browser/hosted-plugin-watcher");
39
+ let VSXExtensionsModel = class VSXExtensionsModel {
40
+ constructor() {
41
+ /**
42
+ * Single source for all extensions
43
+ */
44
+ this.extensions = new Map();
45
+ this.onDidChangeEmitter = new event_1.Emitter();
46
+ this.disabled = new Set();
47
+ this.uninstalled = new Set();
48
+ this.deployed = new Set();
49
+ this._versionedInstalled = new Set();
50
+ this._unversionedInstalled = new Set();
51
+ this._recommended = new Set();
52
+ this._searchResult = new Set();
53
+ this.builtins = new Set();
54
+ this.searchCancellationTokenSource = new cancellation_1.CancellationTokenSource();
55
+ this.updateSearchResult = (0, p_debounce_1.default)(async () => {
56
+ const { token } = this.resetSearchCancellationTokenSource();
57
+ await this.doUpdateSearchResult({ query: this.search.query, includeAllVersions: true }, token);
58
+ }, 500);
59
+ }
60
+ init() {
61
+ this.initialized = this.doInit().catch(console.error);
62
+ }
63
+ async doInit() {
64
+ await Promise.all([
65
+ this.initInstalled(),
66
+ this.initSearchResult(),
67
+ this.initRecommended(),
68
+ ]);
69
+ }
70
+ get onDidChange() {
71
+ return this.onDidChangeEmitter.event;
72
+ }
73
+ get installed() {
74
+ return this._versionedInstalled.values();
75
+ }
76
+ get searchError() {
77
+ return this._searchError;
78
+ }
79
+ get searchResult() {
80
+ return this._searchResult.values();
81
+ }
82
+ get recommended() {
83
+ return this._recommended.values();
84
+ }
85
+ setOnlyShowVerifiedExtensions(bool) {
86
+ if (this.preferences.get('extensions.onlyShowVerifiedExtensions') !== bool) {
87
+ this.preferences.updateValue('extensions.onlyShowVerifiedExtensions', bool);
88
+ }
89
+ this.updateSearchResult();
90
+ }
91
+ isBuiltIn(id) {
92
+ return this.builtins.has(id);
93
+ }
94
+ /**
95
+ * @param id should be a ${@link PluginIdentifiers.VersionedId}
96
+ * @returns `true` if the specific version queried installed
97
+ */
98
+ isInstalledAtSpecificVersion(id) {
99
+ return this._versionedInstalled.has(id);
100
+ }
101
+ /**
102
+ * @param id should be an unversioned Identifier
103
+ * @returns `true` if any version of the plugin is installed
104
+ */
105
+ isInstalled(id) {
106
+ return this._unversionedInstalled.has(id);
107
+ }
108
+ isUninstalled(id) {
109
+ return this.uninstalled.has(id);
110
+ }
111
+ isDeployed(id) {
112
+ return this.deployed.has(id);
113
+ }
114
+ isDisabled(id) {
115
+ return this.disabled.has(id);
116
+ }
117
+ getExtension(id) {
118
+ return this.extensions.get(id);
119
+ }
120
+ resolve(id) {
121
+ return this.doChange(async () => {
122
+ await this.initialized;
123
+ const extension = await this.refresh(id);
124
+ if (!extension) {
125
+ throw new Error(`Failed to resolve ${id} extension.`);
126
+ }
127
+ if (extension.readme === undefined && extension.readmeUrl) {
128
+ try {
129
+ const rawReadme = request_1.RequestContext.asText(await this.request.request({ url: extension.readmeUrl }));
130
+ const readme = this.compileReadme(rawReadme);
131
+ extension.update({ readme });
132
+ }
133
+ catch (e) {
134
+ if (!ovsx_types_1.VSXResponseError.is(e) || e.statusCode !== 404) {
135
+ console.error(`[${id}]: failed to compile readme, reason:`, e);
136
+ }
137
+ }
138
+ }
139
+ return extension;
140
+ });
141
+ }
142
+ async initInstalled() {
143
+ await this.pluginSupport.willStart;
144
+ try {
145
+ await this.updateInstalled();
146
+ }
147
+ catch (e) {
148
+ console.error(e);
149
+ }
150
+ this.pluginWatcher.onDidDeploy(() => {
151
+ this.updateInstalled();
152
+ });
153
+ }
154
+ async initSearchResult() {
155
+ this.search.onDidChangeQuery(() => this.updateSearchResult());
156
+ try {
157
+ await this.updateSearchResult();
158
+ }
159
+ catch (e) {
160
+ console.error(e);
161
+ }
162
+ }
163
+ async initRecommended() {
164
+ this.preferences.onPreferenceChanged(change => {
165
+ if (change.preferenceName === 'extensions') {
166
+ this.updateRecommended();
167
+ }
168
+ });
169
+ await this.preferences.ready;
170
+ try {
171
+ await this.updateRecommended();
172
+ }
173
+ catch (e) {
174
+ console.error(e);
175
+ }
176
+ }
177
+ resetSearchCancellationTokenSource() {
178
+ this.searchCancellationTokenSource.cancel();
179
+ return this.searchCancellationTokenSource = new cancellation_1.CancellationTokenSource();
180
+ }
181
+ setExtension(id, version) {
182
+ let extension = this.extensions.get(id);
183
+ if (!extension) {
184
+ extension = this.extensionFactory({ id, version, model: this });
185
+ this.extensions.set(id, extension);
186
+ }
187
+ return extension;
188
+ }
189
+ doChange(task, token = cancellation_1.CancellationToken.None) {
190
+ return this.progressService.withProgress('', 'extensions', async () => {
191
+ if (token && token.isCancellationRequested) {
192
+ return;
193
+ }
194
+ const result = await task();
195
+ if (token && token.isCancellationRequested) {
196
+ return;
197
+ }
198
+ this.onDidChangeEmitter.fire();
199
+ return result;
200
+ });
201
+ }
202
+ doUpdateSearchResult(param, token) {
203
+ return this.doChange(async () => {
204
+ this._searchResult = new Set();
205
+ if (!param.query) {
206
+ return;
207
+ }
208
+ const client = await this.clientProvider();
209
+ const filter = await this.vsxApiFilter();
210
+ try {
211
+ const result = await client.search(param);
212
+ if (token.isCancellationRequested) {
213
+ return;
214
+ }
215
+ for (const data of result.extensions) {
216
+ const id = data.namespace.toLowerCase() + '.' + data.name.toLowerCase();
217
+ const allVersions = filter.getLatestCompatibleVersion(data);
218
+ if (!allVersions) {
219
+ continue;
220
+ }
221
+ if (this.preferences.get('extensions.onlyShowVerifiedExtensions')) {
222
+ this.fetchVerifiedStatus(id, client, allVersions).then(verified => {
223
+ this.doChange(() => {
224
+ this.addExtensions(data, id, allVersions, !!verified);
225
+ return Promise.resolve();
226
+ });
227
+ });
228
+ }
229
+ else {
230
+ this.addExtensions(data, id, allVersions);
231
+ this.fetchVerifiedStatus(id, client, allVersions).then(verified => {
232
+ this.doChange(() => {
233
+ let extension = this.getExtension(id);
234
+ extension = this.setExtension(id);
235
+ extension.update(Object.assign({
236
+ verified: verified
237
+ }));
238
+ return Promise.resolve();
239
+ });
240
+ });
241
+ }
242
+ }
243
+ }
244
+ catch (error) {
245
+ this._searchError = (error === null || error === void 0 ? void 0 : error.message) || String(error);
246
+ }
247
+ }, token);
248
+ }
249
+ async fetchVerifiedStatus(id, client, allVersions) {
250
+ var _a;
251
+ try {
252
+ const res = await client.query({ extensionId: id, extensionVersion: allVersions.version, includeAllVersions: true });
253
+ const extension = (_a = res.extensions) === null || _a === void 0 ? void 0 : _a[0];
254
+ let verified = extension === null || extension === void 0 ? void 0 : extension.verified;
255
+ if (!verified && (extension === null || extension === void 0 ? void 0 : extension.publishedBy.loginName) === 'open-vsx') {
256
+ verified = true;
257
+ }
258
+ return verified;
259
+ }
260
+ catch (error) {
261
+ console.error(error);
262
+ return false;
263
+ }
264
+ }
265
+ addExtensions(data, id, allVersions, verified) {
266
+ if (!this.preferences.get('extensions.onlyShowVerifiedExtensions') || verified) {
267
+ const extension = this.setExtension(id);
268
+ extension.update(Object.assign(data, {
269
+ publisher: data.namespace,
270
+ downloadUrl: data.files.download,
271
+ iconUrl: data.files.icon,
272
+ readmeUrl: data.files.readme,
273
+ licenseUrl: data.files.license,
274
+ version: allVersions.version,
275
+ verified: verified
276
+ }));
277
+ this._searchResult.add(id);
278
+ }
279
+ }
280
+ async updateInstalled() {
281
+ const [deployed, uninstalled, disabled, currInstalled] = await Promise.all([
282
+ this.pluginServer.getDeployedPluginIds(),
283
+ this.pluginServer.getUninstalledPluginIds(),
284
+ this.pluginServer.getDisabledPluginIds(),
285
+ this.pluginServer.getInstalledPluginIds()
286
+ ]);
287
+ this.uninstalled = new Set();
288
+ uninstalled.forEach(id => this.uninstalled.add(id));
289
+ this.disabled = new Set(disabled);
290
+ this.deployed = new Set();
291
+ deployed.forEach(id => this.deployed.add(id));
292
+ const prevInstalled = this._versionedInstalled;
293
+ const installedVersioned = new Set();
294
+ return this.doChange(async () => {
295
+ const refreshing = [];
296
+ for (const versionedId of currInstalled) {
297
+ installedVersioned.add(versionedId);
298
+ const idAndVersion = plugin_ext_1.PluginIdentifiers.idAndVersionFromVersionedId(versionedId);
299
+ if (idAndVersion) {
300
+ this._versionedInstalled.delete(versionedId);
301
+ this.setExtension(idAndVersion.id, idAndVersion.version);
302
+ refreshing.push(this.refresh(idAndVersion.id, idAndVersion.version));
303
+ }
304
+ }
305
+ for (const id of this._versionedInstalled) {
306
+ const extension = this.getExtension(id);
307
+ if (!extension) {
308
+ continue;
309
+ }
310
+ refreshing.push(this.refresh(id, extension.version));
311
+ }
312
+ await Promise.all(refreshing);
313
+ const installed = new Set([...prevInstalled, ...currInstalled]);
314
+ const installedSorted = Array.from(installed).sort((a, b) => this.compareExtensions(a, b));
315
+ this._versionedInstalled = new Set(installedSorted);
316
+ this._unversionedInstalled = new Set(installedSorted.map(plugin_ext_1.PluginIdentifiers.toUnversioned));
317
+ const missingIds = new Set();
318
+ for (const id of installedVersioned) {
319
+ const unversionedId = plugin_ext_1.PluginIdentifiers.unversionedFromVersioned(id);
320
+ const plugin = this.pluginSupport.getPlugin(unversionedId);
321
+ if (plugin) {
322
+ if (plugin.type === plugin_ext_1.PluginType.System) {
323
+ this.builtins.add(unversionedId);
324
+ }
325
+ else {
326
+ this.builtins.delete(unversionedId);
327
+ }
328
+ }
329
+ else {
330
+ missingIds.add(id);
331
+ }
332
+ }
333
+ const missing = await this.pluginServer.getDeployedPlugins([...missingIds.values()]);
334
+ for (const plugin of missing) {
335
+ if (plugin.type === plugin_ext_1.PluginType.System) {
336
+ this.builtins.add(plugin_ext_1.PluginIdentifiers.componentsToUnversionedId(plugin.metadata.model));
337
+ }
338
+ else {
339
+ this.builtins.delete(plugin_ext_1.PluginIdentifiers.componentsToUnversionedId(plugin.metadata.model));
340
+ }
341
+ }
342
+ });
343
+ }
344
+ updateRecommended() {
345
+ return this.doChange(async () => {
346
+ const allRecommendations = new Set();
347
+ const allUnwantedRecommendations = new Set();
348
+ const updateRecommendationsForScope = (scope, root) => {
349
+ const { recommendations, unwantedRecommendations } = this.getRecommendationsForScope(scope, root);
350
+ recommendations.forEach(recommendation => allRecommendations.add(recommendation.toLowerCase()));
351
+ unwantedRecommendations.forEach(unwantedRecommendation => allUnwantedRecommendations.add(unwantedRecommendation));
352
+ };
353
+ updateRecommendationsForScope('defaultValue'); // In case there are application-default recommendations.
354
+ const roots = await this.workspaceService.roots;
355
+ for (const root of roots) {
356
+ updateRecommendationsForScope('workspaceFolderValue', root.resource);
357
+ }
358
+ if (this.workspaceService.saved) {
359
+ updateRecommendationsForScope('workspaceValue');
360
+ }
361
+ const recommendedSorted = new Set(Array.from(allRecommendations).sort((a, b) => this.compareExtensions(a, b)));
362
+ allUnwantedRecommendations.forEach(unwantedRecommendation => recommendedSorted.delete(unwantedRecommendation));
363
+ this._recommended = recommendedSorted;
364
+ return Promise.all(Array.from(recommendedSorted, plugin => this.refresh(plugin)));
365
+ });
366
+ }
367
+ getRecommendationsForScope(scope, root) {
368
+ var _a, _b;
369
+ const inspection = this.preferences.inspect('extensions', root === null || root === void 0 ? void 0 : root.toString());
370
+ const configuredValue = inspection ? inspection[scope] : undefined;
371
+ return {
372
+ recommendations: (_a = configuredValue === null || configuredValue === void 0 ? void 0 : configuredValue.recommendations) !== null && _a !== void 0 ? _a : [],
373
+ unwantedRecommendations: (_b = configuredValue === null || configuredValue === void 0 ? void 0 : configuredValue.unwantedRecommendations) !== null && _b !== void 0 ? _b : [],
374
+ };
375
+ }
376
+ compileReadme(readmeMarkdown) {
377
+ const readmeHtml = markdownit({ html: true }).render(readmeMarkdown);
378
+ return DOMPurify.sanitize(readmeHtml);
379
+ }
380
+ async refresh(id, version) {
381
+ var _a;
382
+ try {
383
+ let extension = this.getExtension(id);
384
+ if (!this.shouldRefresh(extension)) {
385
+ return extension;
386
+ }
387
+ const filter = await this.vsxApiFilter();
388
+ const targetPlatform = await this.applicationServer.getApplicationPlatform();
389
+ let data;
390
+ if (version === undefined) {
391
+ data = await filter.findLatestCompatibleExtension({
392
+ extensionId: id,
393
+ includeAllVersions: true,
394
+ targetPlatform
395
+ });
396
+ }
397
+ else {
398
+ data = await filter.findLatestCompatibleExtension({
399
+ extensionId: id,
400
+ extensionVersion: version,
401
+ includeAllVersions: true,
402
+ targetPlatform
403
+ });
404
+ }
405
+ if (!data || data.error) {
406
+ return this.onDidFailRefresh(id, (_a = data === null || data === void 0 ? void 0 : data.error) !== null && _a !== void 0 ? _a : 'No data found');
407
+ }
408
+ if (!data.verified) {
409
+ if (data.publishedBy.loginName === 'open-vsx') {
410
+ data.verified = true;
411
+ }
412
+ }
413
+ extension = this.setExtension(id);
414
+ extension.update(Object.assign(data, {
415
+ publisher: data.namespace,
416
+ downloadUrl: data.files.download,
417
+ iconUrl: data.files.icon,
418
+ readmeUrl: data.files.readme,
419
+ licenseUrl: data.files.license,
420
+ version: data.version,
421
+ verified: data.verified
422
+ }));
423
+ return extension;
424
+ }
425
+ catch (e) {
426
+ return this.onDidFailRefresh(id, e);
427
+ }
428
+ }
429
+ /**
430
+ * Determines if the given extension should be refreshed.
431
+ * @param extension the extension to refresh.
432
+ */
433
+ shouldRefresh(extension) {
434
+ return extension === undefined || extension.plugin === undefined;
435
+ }
436
+ onDidFailRefresh(id, error) {
437
+ const cached = this.getExtension(id);
438
+ if (cached && cached.deployed) {
439
+ return cached;
440
+ }
441
+ console.error(`[${id}]: failed to refresh, reason:`, error);
442
+ return undefined;
443
+ }
444
+ /**
445
+ * Compare two extensions based on their display name, and publisher if applicable.
446
+ * @param a the first extension id for comparison.
447
+ * @param b the second extension id for comparison.
448
+ */
449
+ compareExtensions(a, b) {
450
+ const extensionA = this.getExtension(a);
451
+ const extensionB = this.getExtension(b);
452
+ if (!extensionA || !extensionB) {
453
+ return 0;
454
+ }
455
+ if (extensionA.displayName && extensionB.displayName) {
456
+ return extensionA.displayName.localeCompare(extensionB.displayName);
457
+ }
458
+ if (extensionA.publisher && extensionB.publisher) {
459
+ return extensionA.publisher.localeCompare(extensionB.publisher);
460
+ }
461
+ return 0;
462
+ }
463
+ };
464
+ exports.VSXExtensionsModel = VSXExtensionsModel;
465
+ tslib_1.__decorate([
466
+ (0, inversify_1.inject)(ovsx_client_provider_1.OVSXClientProvider),
467
+ tslib_1.__metadata("design:type", Function)
468
+ ], VSXExtensionsModel.prototype, "clientProvider", void 0);
469
+ tslib_1.__decorate([
470
+ (0, inversify_1.inject)(hosted_plugin_1.HostedPluginSupport),
471
+ tslib_1.__metadata("design:type", hosted_plugin_1.HostedPluginSupport)
472
+ ], VSXExtensionsModel.prototype, "pluginSupport", void 0);
473
+ tslib_1.__decorate([
474
+ (0, inversify_1.inject)(hosted_plugin_watcher_1.HostedPluginWatcher),
475
+ tslib_1.__metadata("design:type", hosted_plugin_watcher_1.HostedPluginWatcher)
476
+ ], VSXExtensionsModel.prototype, "pluginWatcher", void 0);
477
+ tslib_1.__decorate([
478
+ (0, inversify_1.inject)(plugin_ext_1.HostedPluginServer),
479
+ tslib_1.__metadata("design:type", Object)
480
+ ], VSXExtensionsModel.prototype, "pluginServer", void 0);
481
+ tslib_1.__decorate([
482
+ (0, inversify_1.inject)(vsx_extension_1.VSXExtensionFactory),
483
+ tslib_1.__metadata("design:type", Function)
484
+ ], VSXExtensionsModel.prototype, "extensionFactory", void 0);
485
+ tslib_1.__decorate([
486
+ (0, inversify_1.inject)(progress_service_1.ProgressService),
487
+ tslib_1.__metadata("design:type", progress_service_1.ProgressService)
488
+ ], VSXExtensionsModel.prototype, "progressService", void 0);
489
+ tslib_1.__decorate([
490
+ (0, inversify_1.inject)(preference_service_1.PreferenceService),
491
+ tslib_1.__metadata("design:type", Object)
492
+ ], VSXExtensionsModel.prototype, "preferences", void 0);
493
+ tslib_1.__decorate([
494
+ (0, inversify_1.inject)(browser_1.WorkspaceService),
495
+ tslib_1.__metadata("design:type", browser_1.WorkspaceService)
496
+ ], VSXExtensionsModel.prototype, "workspaceService", void 0);
497
+ tslib_1.__decorate([
498
+ (0, inversify_1.inject)(vsx_extensions_search_model_1.VSXExtensionsSearchModel),
499
+ tslib_1.__metadata("design:type", vsx_extensions_search_model_1.VSXExtensionsSearchModel)
500
+ ], VSXExtensionsModel.prototype, "search", void 0);
501
+ tslib_1.__decorate([
502
+ (0, inversify_1.inject)(request_1.RequestService),
503
+ tslib_1.__metadata("design:type", Object)
504
+ ], VSXExtensionsModel.prototype, "request", void 0);
505
+ tslib_1.__decorate([
506
+ (0, inversify_1.inject)(ovsx_client_1.OVSXApiFilterProvider),
507
+ tslib_1.__metadata("design:type", Function)
508
+ ], VSXExtensionsModel.prototype, "vsxApiFilter", void 0);
509
+ tslib_1.__decorate([
510
+ (0, inversify_1.inject)(application_protocol_1.ApplicationServer),
511
+ tslib_1.__metadata("design:type", Object)
512
+ ], VSXExtensionsModel.prototype, "applicationServer", void 0);
513
+ tslib_1.__decorate([
514
+ (0, inversify_1.postConstruct)(),
515
+ tslib_1.__metadata("design:type", Function),
516
+ tslib_1.__metadata("design:paramtypes", []),
517
+ tslib_1.__metadata("design:returntype", void 0)
518
+ ], VSXExtensionsModel.prototype, "init", null);
519
+ exports.VSXExtensionsModel = VSXExtensionsModel = tslib_1.__decorate([
520
+ (0, inversify_1.injectable)()
521
+ ], VSXExtensionsModel);
522
+ //# sourceMappingURL=vsx-extensions-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vsx-extensions-model.js","sourceRoot":"","sources":["../../src/browser/vsx-extensions-model.ts"],"names":[],"mappings":"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"}