@theia/cli 1.18.0-next.124 → 1.18.0-next.129

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.
@@ -19,7 +19,6 @@ declare global {
19
19
  }
20
20
  }
21
21
  import { RequestInit, Response } from 'node-fetch';
22
- export declare const extensionPackCacheName = ".packs";
23
22
  /**
24
23
  * Available options when downloading.
25
24
  */
@@ -1 +1 @@
1
- {"version":3,"file":"download-plugins.d.ts","sourceRoot":"","sources":["../src/download-plugins.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAIlF,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,KAAK,CAAC,CAAC;QAEb,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;KAC5B;CACJ;AAOD,OAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAY1D,eAAO,MAAM,sBAAsB,WAAW,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAA8B,eAAe,CAAC,OAAO,GAAE,sBAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAyEjG;AA8FD;;GAEG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAO5E"}
1
+ {"version":3,"file":"download-plugins.d.ts","sourceRoot":"","sources":["../src/download-plugins.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAIlF,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,KAAK,CAAC,CAAC;QAEb,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;KAC5B;CACJ;AAOD,OAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAY1D;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAA8B,eAAe,CAAC,OAAO,GAAE,sBAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAgFjG;AA8FD;;GAEG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAO5E"}
@@ -15,7 +15,7 @@
15
15
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
16
16
  ********************************************************************************/
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.xfetch = exports.extensionPackCacheName = void 0;
18
+ exports.xfetch = void 0;
19
19
  const ovsx_client_1 = require("@theia/ovsx-client/lib/ovsx-client");
20
20
  const safe_1 = require("colors/safe");
21
21
  const decompress = require("decompress");
@@ -30,7 +30,6 @@ const util_1 = require("util");
30
30
  const api_1 = require("@theia/application-package/lib/api");
31
31
  const pipelineAsPromised = util_1.promisify(stream.pipeline);
32
32
  temp.track();
33
- exports.extensionPackCacheName = '.packs';
34
33
  async function downloadPlugins(options = {}) {
35
34
  const { packed = false, ignoreErrors = false, apiVersion = api_1.DEFAULT_SUPPORTED_API_VERSION, apiUrl = 'https://open-vsx.org/api' } = options;
36
35
  // Collect the list of failures to be appended at the end of the script.
@@ -47,18 +46,12 @@ async function downloadPlugins(options = {}) {
47
46
  return;
48
47
  }
49
48
  try {
50
- // Retrieve the cached extension-packs in order to not re-download them.
51
- const extensionPackCachePath = path.resolve(pluginsDir, exports.extensionPackCacheName);
52
- const cachedExtensionPacks = new Set(fs_1.existsSync(extensionPackCachePath)
53
- ? await fs_1.promises.readdir(extensionPackCachePath)
54
- : []);
55
49
  console.warn('--- downloading plugins ---');
56
50
  // Download the raw plugins defined by the `theiaPlugins` property.
57
51
  // This will include both "normal" plugins as well as "extension packs".
58
52
  const downloads = [];
59
53
  for (const [plugin, pluginUrl] of Object.entries(pck.theiaPlugins)) {
60
- // Skip extension packs that were moved to `.packs`:
61
- if (cachedExtensionPacks.has(plugin) || typeof pluginUrl !== 'string') {
54
+ if (typeof pluginUrl !== 'string') {
62
55
  continue;
63
56
  }
64
57
  downloads.push(downloadPluginAsync(failures, plugin, pluginUrl, pluginsDir, packed));
@@ -67,10 +60,7 @@ async function downloadPlugins(options = {}) {
67
60
  console.warn('--- collecting extension-packs ---');
68
61
  const extensionPacks = await collectExtensionPacks(pluginsDir, excludedIds);
69
62
  if (extensionPacks.size > 0) {
70
- console.warn(`--- found ${extensionPacks.size} extension-packs ---`);
71
- // Move extension-packs to `.packs`
72
- await cacheExtensionPacks(pluginsDir, extensionPacks);
73
- console.warn('--- resolving extension-packs ---');
63
+ console.warn(`--- resolving ${extensionPacks.size} extension-packs ---`);
74
64
  const client = new ovsx_client_1.OVSXClient({ apiVersion, apiUrl });
75
65
  // De-duplicate extension ids to only download each once:
76
66
  const ids = new Set(Array.from(extensionPacks.values()).flat());
@@ -82,6 +72,21 @@ async function downloadPlugins(options = {}) {
82
72
  }
83
73
  }));
84
74
  }
75
+ console.warn('--- collecting extension dependencies ---');
76
+ const pluginDependencies = await collectPluginDependencies(pluginsDir, excludedIds);
77
+ if (pluginDependencies.length > 0) {
78
+ console.warn(`--- resolving ${pluginDependencies.length} extension dependencies ---`);
79
+ const client = new ovsx_client_1.OVSXClient({ apiVersion, apiUrl });
80
+ // De-duplicate extension ids to only download each once:
81
+ const ids = new Set(pluginDependencies);
82
+ await Promise.all(Array.from(ids, async (id) => {
83
+ const extension = await client.getLatestCompatibleExtensionVersion(id);
84
+ const downloadUrl = extension === null || extension === void 0 ? void 0 : extension.files.download;
85
+ if (downloadUrl) {
86
+ await downloadPluginAsync(failures, id, downloadUrl, pluginsDir, packed, extension === null || extension === void 0 ? void 0 : extension.version);
87
+ }
88
+ }));
89
+ }
85
90
  }
86
91
  finally {
87
92
  temp.cleanupSync();
@@ -206,8 +211,7 @@ async function collectPackageJsonPaths(pluginDir) {
206
211
  // Recursively fetch the list of extension `package.json` files.
207
212
  for (const file of files) {
208
213
  const filePath = path.join(pluginDir, file);
209
- // Exclude the `.packs` folder used to store extension-packs after being resolved.
210
- if (!filePath.startsWith(exports.extensionPackCacheName) && (await fs_1.promises.stat(filePath)).isDirectory()) {
214
+ if ((await fs_1.promises.stat(filePath)).isDirectory()) {
211
215
  packageJsonPathList.push(...await collectPackageJsonPaths(filePath));
212
216
  }
213
217
  else if (path.basename(filePath) === 'package.json' && !path.dirname(filePath).includes('node_modules')) {
@@ -229,7 +233,7 @@ async function collectExtensionPacks(pluginDir, excludedIds) {
229
233
  await Promise.all(packageJsonPaths.map(async (packageJsonPath) => {
230
234
  const json = JSON.parse(await fs_1.promises.readFile(packageJsonPath, 'utf8'));
231
235
  const extensionPack = json.extensionPack;
232
- if (extensionPack && Array.isArray(extensionPack)) {
236
+ if (Array.isArray(extensionPack)) {
233
237
  extensionPackPaths.set(packageJsonPath, extensionPack.filter(id => {
234
238
  if (excludedIds.has(id)) {
235
239
  console.log(safe_1.yellow(`'${id}' referenced by '${json.name}' (ext pack) is excluded because of 'theiaPluginsExcludeIds'`));
@@ -242,51 +246,29 @@ async function collectExtensionPacks(pluginDir, excludedIds) {
242
246
  return extensionPackPaths;
243
247
  }
244
248
  /**
245
- * Move extension-packs downloaded from `pluginsDir/x` to `pluginsDir/.packs/x`.
246
- *
247
- * The issue we are trying to solve is the following:
248
- * We may skip some extensions declared in a pack due to the `theiaPluginsExcludeIds` list. But once we start
249
- * a Theia application the plugin system will detect the pack and install the missing extensions.
250
- *
251
- * By moving the packs to a subdirectory it should make it invisible to the plugin system, only leaving
252
- * the plugins that were installed under `pluginsDir` directly.
253
- *
254
- * @param extensionPacksPaths the list of extension-pack paths.
249
+ * Get the mapping of paths and their included plugin ids.
250
+ * - If an extension-pack references an explicitly excluded `id` the `id` will be omitted.
251
+ * @param pluginDir the plugin directory.
252
+ * @param excludedIds the list of plugin ids to exclude.
253
+ * @returns the mapping of extension-pack paths and their included plugin ids.
255
254
  */
256
- async function cacheExtensionPacks(pluginsDir, extensionPacks) {
257
- const packsFolderPath = path.resolve(pluginsDir, exports.extensionPackCacheName);
258
- await fs_1.promises.mkdir(packsFolderPath, { recursive: true });
259
- await Promise.all(Array.from(extensionPacks.entries(), async ([extensionPackPath, value]) => {
260
- extensionPackPath = path.resolve(extensionPackPath);
261
- // Skip entries found in `.packs`
262
- if (extensionPackPath.startsWith(packsFolderPath)) {
263
- return; // skip
264
- }
265
- try {
266
- const oldPath = getExtensionRoot(pluginsDir, extensionPackPath);
267
- const newPath = path.resolve(packsFolderPath, path.basename(oldPath));
268
- if (!fs_1.existsSync(newPath)) {
269
- await fs_1.promises.rename(oldPath, newPath);
255
+ async function collectPluginDependencies(pluginDir, excludedIds) {
256
+ const dependencyIds = [];
257
+ const packageJsonPaths = await collectPackageJsonPaths(pluginDir);
258
+ await Promise.all(packageJsonPaths.map(async (packageJsonPath) => {
259
+ const json = JSON.parse(await fs_1.promises.readFile(packageJsonPath, 'utf8'));
260
+ const extensionDependencies = json.extensionDependencies;
261
+ if (Array.isArray(extensionDependencies)) {
262
+ for (const dependency of extensionDependencies) {
263
+ if (excludedIds.has(dependency)) {
264
+ console.log(safe_1.yellow(`'${dependency}' referenced by '${json.name}' is excluded because of 'theiaPluginsExcludeIds'`));
265
+ }
266
+ else {
267
+ dependencyIds.push(dependency);
268
+ }
270
269
  }
271
270
  }
272
- catch (error) {
273
- console.error(error);
274
- }
275
271
  }));
276
- }
277
- /**
278
- * Walk back to the root of an extension starting from its `package.json`. e.g.
279
- *
280
- * ```ts
281
- * getExtensionRoot('/a/b/c', '/a/b/c/EXT/d/e/f/package.json') === '/a/b/c/EXT'
282
- * ```
283
- */
284
- function getExtensionRoot(root, packageJsonPath) {
285
- root = path.resolve(root);
286
- packageJsonPath = path.resolve(packageJsonPath);
287
- if (!packageJsonPath.startsWith(root)) {
288
- throw new Error(`unexpected paths:\n root: ${root}\n package.json: ${packageJsonPath}`);
289
- }
290
- return packageJsonPath.substr(0, packageJsonPath.indexOf(path.sep, root.length + 1));
272
+ return dependencyIds;
291
273
  }
292
274
  //# sourceMappingURL=download-plugins.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"download-plugins.js","sourceRoot":"","sources":["../src/download-plugins.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"download-plugins.js","sourceRoot":"","sources":["../src/download-plugins.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theia/cli",
3
- "version": "1.18.0-next.124+008c2a1bbee",
3
+ "version": "1.18.0-next.129+bf00fd0fcf5",
4
4
  "description": "Theia CLI.",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -29,10 +29,10 @@
29
29
  "clean": "theiaext clean"
30
30
  },
31
31
  "dependencies": {
32
- "@theia/application-manager": "1.18.0-next.124+008c2a1bbee",
33
- "@theia/application-package": "1.18.0-next.124+008c2a1bbee",
34
- "@theia/localization-manager": "1.18.0-next.124+008c2a1bbee",
35
- "@theia/ovsx-client": "1.18.0-next.124+008c2a1bbee",
32
+ "@theia/application-manager": "1.18.0-next.129+bf00fd0fcf5",
33
+ "@theia/application-package": "1.18.0-next.129+bf00fd0fcf5",
34
+ "@theia/localization-manager": "1.18.0-next.129+bf00fd0fcf5",
35
+ "@theia/ovsx-client": "1.18.0-next.129+bf00fd0fcf5",
36
36
  "@types/chai": "^4.2.7",
37
37
  "@types/mkdirp": "^0.5.2",
38
38
  "@types/mocha": "^5.2.7",
@@ -55,5 +55,5 @@
55
55
  "devDependencies": {
56
56
  "@types/proxy-from-env": "^1.0.1"
57
57
  },
58
- "gitHead": "008c2a1bbee0f3294f8f44556b081bd013bb21e6"
58
+ "gitHead": "bf00fd0fcf5b8153178b9bab05212da1ea9ceee8"
59
59
  }
@@ -26,7 +26,7 @@ declare global {
26
26
  import { OVSXClient } from '@theia/ovsx-client/lib/ovsx-client';
27
27
  import { green, red, yellow } from 'colors/safe';
28
28
  import * as decompress from 'decompress';
29
- import { createWriteStream, existsSync, promises as fs } from 'fs';
29
+ import { createWriteStream, promises as fs } from 'fs';
30
30
  import { HttpsProxyAgent } from 'https-proxy-agent';
31
31
  import fetch, { RequestInit, Response } from 'node-fetch';
32
32
  import * as path from 'path';
@@ -40,8 +40,6 @@ const pipelineAsPromised = promisify(stream.pipeline);
40
40
 
41
41
  temp.track();
42
42
 
43
- export const extensionPackCacheName = '.packs';
44
-
45
43
  /**
46
44
  * Available options when downloading.
47
45
  */
@@ -97,32 +95,22 @@ export default async function downloadPlugins(options: DownloadPluginsOptions =
97
95
  return;
98
96
  }
99
97
  try {
100
- // Retrieve the cached extension-packs in order to not re-download them.
101
- const extensionPackCachePath = path.resolve(pluginsDir, extensionPackCacheName);
102
- const cachedExtensionPacks = new Set<string>(
103
- existsSync(extensionPackCachePath)
104
- ? await fs.readdir(extensionPackCachePath)
105
- : []
106
- );
107
98
  console.warn('--- downloading plugins ---');
108
99
  // Download the raw plugins defined by the `theiaPlugins` property.
109
100
  // This will include both "normal" plugins as well as "extension packs".
110
101
  const downloads = [];
111
102
  for (const [plugin, pluginUrl] of Object.entries(pck.theiaPlugins)) {
112
- // Skip extension packs that were moved to `.packs`:
113
- if (cachedExtensionPacks.has(plugin) || typeof pluginUrl !== 'string') {
103
+ if (typeof pluginUrl !== 'string') {
114
104
  continue;
115
105
  }
116
106
  downloads.push(downloadPluginAsync(failures, plugin, pluginUrl, pluginsDir, packed));
117
107
  }
118
108
  await Promise.all(downloads);
109
+
119
110
  console.warn('--- collecting extension-packs ---');
120
111
  const extensionPacks = await collectExtensionPacks(pluginsDir, excludedIds);
121
112
  if (extensionPacks.size > 0) {
122
- console.warn(`--- found ${extensionPacks.size} extension-packs ---`);
123
- // Move extension-packs to `.packs`
124
- await cacheExtensionPacks(pluginsDir, extensionPacks);
125
- console.warn('--- resolving extension-packs ---');
113
+ console.warn(`--- resolving ${extensionPacks.size} extension-packs ---`);
126
114
  const client = new OVSXClient({ apiVersion, apiUrl });
127
115
  // De-duplicate extension ids to only download each once:
128
116
  const ids = new Set<string>(Array.from(extensionPacks.values()).flat());
@@ -134,6 +122,23 @@ export default async function downloadPlugins(options: DownloadPluginsOptions =
134
122
  }
135
123
  }));
136
124
  }
125
+
126
+ console.warn('--- collecting extension dependencies ---');
127
+ const pluginDependencies = await collectPluginDependencies(pluginsDir, excludedIds);
128
+ if (pluginDependencies.length > 0) {
129
+ console.warn(`--- resolving ${pluginDependencies.length} extension dependencies ---`);
130
+ const client = new OVSXClient({ apiVersion, apiUrl });
131
+ // De-duplicate extension ids to only download each once:
132
+ const ids = new Set<string>(pluginDependencies);
133
+ await Promise.all(Array.from(ids, async id => {
134
+ const extension = await client.getLatestCompatibleExtensionVersion(id);
135
+ const downloadUrl = extension?.files.download;
136
+ if (downloadUrl) {
137
+ await downloadPluginAsync(failures, id, downloadUrl, pluginsDir, packed, extension?.version);
138
+ }
139
+ }));
140
+ }
141
+
137
142
  } finally {
138
143
  temp.cleanupSync();
139
144
  }
@@ -260,8 +265,7 @@ async function collectPackageJsonPaths(pluginDir: string): Promise<string[]> {
260
265
  // Recursively fetch the list of extension `package.json` files.
261
266
  for (const file of files) {
262
267
  const filePath = path.join(pluginDir, file);
263
- // Exclude the `.packs` folder used to store extension-packs after being resolved.
264
- if (!filePath.startsWith(extensionPackCacheName) && (await fs.stat(filePath)).isDirectory()) {
268
+ if ((await fs.stat(filePath)).isDirectory()) {
265
269
  packageJsonPathList.push(...await collectPackageJsonPaths(filePath));
266
270
  } else if (path.basename(filePath) === 'package.json' && !path.dirname(filePath).includes('node_modules')) {
267
271
  packageJsonPathList.push(filePath);
@@ -283,7 +287,7 @@ async function collectExtensionPacks(pluginDir: string, excludedIds: Set<string>
283
287
  await Promise.all(packageJsonPaths.map(async packageJsonPath => {
284
288
  const json = JSON.parse(await fs.readFile(packageJsonPath, 'utf8'));
285
289
  const extensionPack: unknown = json.extensionPack;
286
- if (extensionPack && Array.isArray(extensionPack)) {
290
+ if (Array.isArray(extensionPack)) {
287
291
  extensionPackPaths.set(packageJsonPath, extensionPack.filter(id => {
288
292
  if (excludedIds.has(id)) {
289
293
  console.log(yellow(`'${id}' referenced by '${json.name}' (ext pack) is excluded because of 'theiaPluginsExcludeIds'`));
@@ -297,50 +301,27 @@ async function collectExtensionPacks(pluginDir: string, excludedIds: Set<string>
297
301
  }
298
302
 
299
303
  /**
300
- * Move extension-packs downloaded from `pluginsDir/x` to `pluginsDir/.packs/x`.
301
- *
302
- * The issue we are trying to solve is the following:
303
- * We may skip some extensions declared in a pack due to the `theiaPluginsExcludeIds` list. But once we start
304
- * a Theia application the plugin system will detect the pack and install the missing extensions.
305
- *
306
- * By moving the packs to a subdirectory it should make it invisible to the plugin system, only leaving
307
- * the plugins that were installed under `pluginsDir` directly.
308
- *
309
- * @param extensionPacksPaths the list of extension-pack paths.
304
+ * Get the mapping of paths and their included plugin ids.
305
+ * - If an extension-pack references an explicitly excluded `id` the `id` will be omitted.
306
+ * @param pluginDir the plugin directory.
307
+ * @param excludedIds the list of plugin ids to exclude.
308
+ * @returns the mapping of extension-pack paths and their included plugin ids.
310
309
  */
311
- async function cacheExtensionPacks(pluginsDir: string, extensionPacks: Map<string, unknown>): Promise<void> {
312
- const packsFolderPath = path.resolve(pluginsDir, extensionPackCacheName);
313
- await fs.mkdir(packsFolderPath, { recursive: true });
314
- await Promise.all(Array.from(extensionPacks.entries(), async ([extensionPackPath, value]) => {
315
- extensionPackPath = path.resolve(extensionPackPath);
316
- // Skip entries found in `.packs`
317
- if (extensionPackPath.startsWith(packsFolderPath)) {
318
- return; // skip
319
- }
320
- try {
321
- const oldPath = getExtensionRoot(pluginsDir, extensionPackPath);
322
- const newPath = path.resolve(packsFolderPath, path.basename(oldPath));
323
- if (!existsSync(newPath)) {
324
- await fs.rename(oldPath, newPath);
310
+ async function collectPluginDependencies(pluginDir: string, excludedIds: Set<string>): Promise<string[]> {
311
+ const dependencyIds: string[] = [];
312
+ const packageJsonPaths = await collectPackageJsonPaths(pluginDir);
313
+ await Promise.all(packageJsonPaths.map(async packageJsonPath => {
314
+ const json = JSON.parse(await fs.readFile(packageJsonPath, 'utf8'));
315
+ const extensionDependencies: unknown = json.extensionDependencies;
316
+ if (Array.isArray(extensionDependencies)) {
317
+ for (const dependency of extensionDependencies) {
318
+ if (excludedIds.has(dependency)) {
319
+ console.log(yellow(`'${dependency}' referenced by '${json.name}' is excluded because of 'theiaPluginsExcludeIds'`));
320
+ } else {
321
+ dependencyIds.push(dependency);
322
+ }
325
323
  }
326
- } catch (error) {
327
- console.error(error);
328
324
  }
329
325
  }));
330
- }
331
-
332
- /**
333
- * Walk back to the root of an extension starting from its `package.json`. e.g.
334
- *
335
- * ```ts
336
- * getExtensionRoot('/a/b/c', '/a/b/c/EXT/d/e/f/package.json') === '/a/b/c/EXT'
337
- * ```
338
- */
339
- function getExtensionRoot(root: string, packageJsonPath: string): string {
340
- root = path.resolve(root);
341
- packageJsonPath = path.resolve(packageJsonPath);
342
- if (!packageJsonPath.startsWith(root)) {
343
- throw new Error(`unexpected paths:\n root: ${root}\n package.json: ${packageJsonPath}`);
344
- }
345
- return packageJsonPath.substr(0, packageJsonPath.indexOf(path.sep, root.length + 1));
326
+ return dependencyIds;
346
327
  }