ovsx 1.2.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/README.md +7 -1
  2. package/lib/check-license.d.ts.map +1 -1
  3. package/lib/check-license.js +5 -4
  4. package/lib/check-license.js.map +1 -1
  5. package/lib/create-namespace.d.ts.map +1 -1
  6. package/lib/create-namespace.js +3 -1
  7. package/lib/create-namespace.js.map +1 -1
  8. package/lib/get.js +5 -5
  9. package/lib/get.js.map +1 -1
  10. package/lib/http.d.ts +32 -0
  11. package/lib/http.d.ts.map +1 -0
  12. package/lib/http.js +170 -0
  13. package/lib/http.js.map +1 -0
  14. package/lib/index.d.ts +0 -3
  15. package/lib/index.d.ts.map +1 -1
  16. package/lib/index.js +0 -3
  17. package/lib/index.js.map +1 -1
  18. package/lib/main.js +50 -61
  19. package/lib/main.js.map +1 -1
  20. package/lib/oidc.d.ts.map +1 -1
  21. package/lib/oidc.js +5 -47
  22. package/lib/oidc.js.map +1 -1
  23. package/lib/pat.d.ts +6 -1
  24. package/lib/pat.d.ts.map +1 -1
  25. package/lib/pat.js +16 -7
  26. package/lib/pat.js.map +1 -1
  27. package/lib/publish.d.ts +6 -0
  28. package/lib/publish.d.ts.map +1 -1
  29. package/lib/publish.js +147 -40
  30. package/lib/publish.js.map +1 -1
  31. package/lib/registry.d.ts +50 -12
  32. package/lib/registry.d.ts.map +1 -1
  33. package/lib/registry.js +131 -126
  34. package/lib/registry.js.map +1 -1
  35. package/lib/trusted-publishing-options.d.ts +5 -0
  36. package/lib/trusted-publishing-options.d.ts.map +1 -1
  37. package/lib/trusted-publishing.js +28 -4
  38. package/lib/trusted-publishing.js.map +1 -1
  39. package/lib/unpublish.d.ts.map +1 -1
  40. package/lib/unpublish.js +5 -8
  41. package/lib/unpublish.js.map +1 -1
  42. package/lib/util.d.ts +19 -15
  43. package/lib/util.d.ts.map +1 -1
  44. package/lib/util.js +51 -71
  45. package/lib/util.js.map +1 -1
  46. package/lib/verify-pat.d.ts.map +1 -1
  47. package/lib/verify-pat.js +3 -1
  48. package/lib/verify-pat.js.map +1 -1
  49. package/lib/verify.js +2 -2
  50. package/lib/verify.js.map +1 -1
  51. package/lib/zip.d.ts.map +1 -1
  52. package/lib/zip.js +2 -10
  53. package/lib/zip.js.map +1 -1
  54. package/package.json +19 -14
  55. package/src/check-license.ts +5 -4
  56. package/src/create-namespace.ts +3 -1
  57. package/src/get.ts +6 -6
  58. package/src/http.ts +176 -0
  59. package/src/index.ts +0 -3
  60. package/src/main.ts +54 -63
  61. package/src/oidc.ts +5 -47
  62. package/src/pat.ts +22 -9
  63. package/src/publish.ts +187 -44
  64. package/src/registry.ts +153 -126
  65. package/src/trusted-publishing-options.ts +5 -0
  66. package/src/trusted-publishing.ts +33 -5
  67. package/src/unpublish.ts +4 -7
  68. package/src/util.ts +47 -73
  69. package/src/verify-pat.ts +3 -1
  70. package/src/verify.ts +3 -3
  71. package/src/zip.ts +2 -12
  72. package/lib/version.d.ts +0 -2
  73. package/lib/version.d.ts.map +0 -1
  74. package/lib/version.js +0 -5
  75. package/lib/version.js.map +0 -1
  76. package/src/version.ts +0 -1
package/lib/registry.js CHANGED
@@ -9,10 +9,11 @@
9
9
  * SPDX-License-Identifier: EPL-2.0
10
10
  ********************************************************************************/
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.Registry = exports.DEFAULT_DELETE_SIZE = exports.DEFAULT_TOKEN_REQUEST_SIZE = exports.DEFAULT_TIMEOUT = exports.DEFAULT_PUBLISH_SIZE = exports.DEFAULT_NAMESPACE_SIZE = exports.DEFAULT_URL = void 0;
12
+ exports.Registry = exports.MIN_TOKEN_HEADER_REGISTRY_VERSION = exports.DEFAULT_DELETE_SIZE = exports.DEFAULT_TOKEN_REQUEST_SIZE = exports.DEFAULT_TIMEOUT = exports.DEFAULT_PUBLISH_SIZE = exports.DEFAULT_NAMESPACE_SIZE = exports.DEFAULT_URL = void 0;
13
13
  const fs = require("fs");
14
+ const semver = require("semver");
14
15
  const stream_1 = require("stream");
15
- const followRedirects = require("follow-redirects");
16
+ const http_1 = require("./http");
16
17
  const util_1 = require("./util");
17
18
  Object.defineProperty(exports, "DEFAULT_TIMEOUT", { enumerable: true, get: function () { return util_1.DEFAULT_TIMEOUT; } });
18
19
  exports.DEFAULT_URL = 'https://open-vsx.org';
@@ -20,6 +21,16 @@ exports.DEFAULT_NAMESPACE_SIZE = 1024;
20
21
  exports.DEFAULT_PUBLISH_SIZE = 512 * 1024 * 1024;
21
22
  exports.DEFAULT_TOKEN_REQUEST_SIZE = 8 * 1024;
22
23
  exports.DEFAULT_DELETE_SIZE = 64 * 1024;
24
+ // Fallback only, for when Authorization is already claimed by Basic auth to a fronting proxy (see
25
+ // tokenHeaders/getRequestOptions).
26
+ // Must stay in the credential headers http.ts drops on a cross-origin redirect.
27
+ const TOKEN_HEADER = 'X-OpenVSX-Token';
28
+ /**
29
+ * Oldest registry version that resolves the personal access token from a header (see #1344).
30
+ * Registries older than this only look at the `token` query parameter, so `tokenQuery` keeps
31
+ * sending it to anything below this version.
32
+ */
33
+ exports.MIN_TOKEN_HEADER_REGISTRY_VERSION = '1.3.0';
23
34
  class Registry {
24
35
  constructor(options = {}) {
25
36
  if (options.registryUrl?.endsWith('/'))
@@ -29,6 +40,7 @@ class Registry {
29
40
  else
30
41
  this.url = exports.DEFAULT_URL;
31
42
  this.maxNamespaceSize = options.maxNamespaceSize ?? exports.DEFAULT_NAMESPACE_SIZE;
43
+ this.publishSizePinned = options.maxPublishSize !== undefined;
32
44
  this.maxPublishSize = options.maxPublishSize ?? exports.DEFAULT_PUBLISH_SIZE;
33
45
  this.timeout = options.timeout ?? util_1.DEFAULT_TIMEOUT;
34
46
  this.username = options.username;
@@ -38,49 +50,95 @@ class Registry {
38
50
  const url = new URL(this.url);
39
51
  return url.hostname === 'open-vsx.org' || url.hostname.endsWith('.open-vsx.org');
40
52
  }
41
- createNamespace(name, pat) {
53
+ async createNamespace(name, pat) {
42
54
  try {
43
- const url = this.getUrl(['api', '-', 'namespace', 'create'], { token: pat });
55
+ const url = this.getUrl(['api', '-', 'namespace', 'create'], await this.tokenQuery(pat));
44
56
  const namespace = { name };
45
- return this.post(JSON.stringify(namespace), url, {
46
- 'Content-Type': 'application/json'
57
+ return await this.post(JSON.stringify(namespace), url, {
58
+ 'Content-Type': 'application/json',
59
+ ...this.tokenHeaders(pat)
47
60
  }, this.maxNamespaceSize);
48
61
  }
49
62
  catch (err) {
50
63
  return (0, util_1.rejectError)(err);
51
64
  }
52
65
  }
53
- verifyPat(namespace, pat) {
66
+ async verifyPat(namespace, pat) {
67
+ try {
68
+ const url = this.getUrl(['api', namespace, 'verify-pat'], await this.tokenQuery(pat));
69
+ return await this.getJson(url, this.tokenHeaders(pat));
70
+ }
71
+ catch (err) {
72
+ return (0, util_1.rejectError)(err);
73
+ }
74
+ }
75
+ /**
76
+ * The size limit that applies to this namespace/extension, which a size override can raise above
77
+ * the registry default. Neither needs to exist yet - a first publish asks about both before
78
+ * creating either.
79
+ */
80
+ async getSizeLimit(namespace, extension, pat) {
54
81
  try {
55
- return this.getJson(this.getUrl(['api', namespace, 'verify-pat'], { token: pat }));
82
+ const query = { namespace, extension, ...(await this.tokenQuery(pat)) };
83
+ const url = this.getUrl(['api', '-', 'size-limit'], query);
84
+ return await this.getJson(url, this.tokenHeaders(pat));
56
85
  }
57
86
  catch (err) {
58
87
  return (0, util_1.rejectError)(err);
59
88
  }
60
89
  }
90
+ /**
91
+ * Cached per `Registry` instance once it has succeeded - callers like `tokenQuery` and `unpublish`'s own version check
92
+ * would otherwise each fetch it separately, doubling the round trip for a single command.
93
+ */
61
94
  getRegistryVersion() {
62
95
  try {
63
- return this.getJson(this.getUrl(['api', 'version']));
96
+ if (this.registryVersion) {
97
+ return this.registryVersion;
98
+ }
99
+ const pending = this.getJson(this.getUrl(['api', 'version']));
100
+ this.registryVersion = pending;
101
+ // A failure is not remembered, so a later caller asks again rather than inheriting it.
102
+ pending.catch(() => {
103
+ if (this.registryVersion === pending) {
104
+ this.registryVersion = undefined;
105
+ }
106
+ });
107
+ return pending;
64
108
  }
65
109
  catch (err) {
66
110
  return (0, util_1.rejectError)(err);
67
111
  }
68
112
  }
69
- publish(file, pat) {
113
+ /**
114
+ * `sizeLimit` is the limit the registry reports for this package, when it could report one. The
115
+ * transport body cap is raised to it, because a namespace granted more than the default would
116
+ * otherwise have its upload refused here - by the body size check, before anything reached the
117
+ * registry that allowed it.
118
+ */
119
+ async publish(file, pat, sizeLimit) {
70
120
  try {
71
- const url = this.getUrl(['api', '-', 'publish'], { token: pat });
72
- return this.postFile(file, url, {
73
- 'Content-Type': 'application/octet-stream'
74
- }, this.maxPublishSize);
121
+ const url = this.getUrl(['api', '-', 'publish'], await this.tokenQuery(pat));
122
+ return await this.postFile(file, url, {
123
+ 'Content-Type': 'application/octet-stream',
124
+ ...this.tokenHeaders(pat)
125
+ }, this.publishBodyLimit(sizeLimit));
75
126
  }
76
127
  catch (err) {
77
128
  return (0, util_1.rejectError)(err);
78
129
  }
79
130
  }
80
- requestTrustedPublishingToken(namespace, extension, idToken) {
131
+ /** The body cap for a publish. A pinned `maxPublishSize` wins; otherwise it never sits below the registry's own limit. */
132
+ publishBodyLimit(sizeLimit) {
133
+ if (this.publishSizePinned || sizeLimit === undefined) {
134
+ return this.maxPublishSize;
135
+ }
136
+ return Math.max(this.maxPublishSize, sizeLimit);
137
+ }
138
+ requestTrustedPublishingToken(namespace, extension, idToken, registrationCode) {
81
139
  try {
82
140
  const url = this.getUrl(['api', '-', 'trusted-publishing', 'token']);
83
- const request = { namespace, extension, token: idToken };
141
+ const request = { namespace, extension, token: idToken, registrationCode };
84
142
  return this.post(JSON.stringify(request), url, {
85
143
  'Content-Type': 'application/json'
86
144
  }, exports.DEFAULT_TOKEN_REQUEST_SIZE);
@@ -93,15 +151,17 @@ class Registry {
93
151
  * Deletes extension versions. Omitting `targetVersions` deletes the extension as a whole,
94
152
  * i.e. all versions the personal access token's user is allowed to delete.
95
153
  */
96
- deleteExtension(namespace, extension, targetVersions, pat) {
154
+ async deleteExtension(namespace, extension, targetVersions, pat) {
97
155
  try {
98
156
  if (!targetVersions) {
99
- const url = this.getUrl(['api', namespace, extension, 'delete'], { token: pat, allVersions: 'true' });
100
- return this.post('', url, undefined, exports.DEFAULT_DELETE_SIZE);
157
+ const query = { ...await this.tokenQuery(pat), allVersions: 'true' };
158
+ const url = this.getUrl(['api', namespace, extension, 'delete'], query);
159
+ return await this.post('', url, this.tokenHeaders(pat), exports.DEFAULT_DELETE_SIZE);
101
160
  }
102
- const url = this.getUrl(['api', namespace, extension, 'delete'], { token: pat });
103
- return this.post(JSON.stringify(targetVersions), url, {
104
- 'Content-Type': 'application/json'
161
+ const url = this.getUrl(['api', namespace, extension, 'delete'], await this.tokenQuery(pat));
162
+ return await this.post(JSON.stringify(targetVersions), url, {
163
+ 'Content-Type': 'application/json',
164
+ ...this.tokenHeaders(pat)
105
165
  }, exports.DEFAULT_DELETE_SIZE);
106
166
  }
107
167
  catch (err) {
@@ -205,11 +265,12 @@ class Registry {
205
265
  stream?.destroy();
206
266
  fs.rm(partial, { force: true }, () => reject(err));
207
267
  };
208
- const requestOptions = this.getRequestOptions();
209
- const request = this.getProtocol(url)
210
- .request(url, requestOptions, response => {
268
+ (0, http_1.send)(url, this.getRequestOptions(), undefined, response => {
211
269
  if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode > 299)) {
212
270
  response.resume();
271
+ // Claimed here so a timeout or reset while the error body drains does not run fail().
272
+ // Nothing was written yet, so there is nothing to clean up.
273
+ failed = true;
213
274
  reject((0, util_1.statusError)(response));
214
275
  return;
215
276
  }
@@ -234,51 +295,56 @@ class Registry {
234
295
  fs.rename(partial, file, renameErr => renameErr ? fail(renameErr) : resolve());
235
296
  }
236
297
  });
237
- });
238
- request.on('error', (err) => fail(err));
239
- this.failOnTimeout(request, url, fail);
240
- request.end();
298
+ }, fail);
241
299
  });
242
300
  }
243
- getJson(url) {
301
+ getJson(url, headers) {
244
302
  return new Promise((resolve, reject) => {
245
- const requestOptions = this.getRequestOptions();
246
- const request = this.getProtocol(url)
247
- .request(url, requestOptions, this.getJsonResponse(resolve, reject));
248
- request.on('error', reject);
249
- this.failOnTimeout(request, url, reject);
250
- request.end();
303
+ (0, http_1.send)(url, this.getRequestOptions('GET', headers), undefined, (0, http_1.jsonResponse)(resolve, reject), reject);
251
304
  });
252
305
  }
253
306
  post(content, url, headers, maxBodyLength) {
254
307
  return new Promise((resolve, reject) => {
255
- const requestOptions = this.getRequestOptions('POST', headers, maxBodyLength);
256
- const request = this.getProtocol(url)
257
- .request(url, requestOptions, this.getJsonResponse(resolve, reject));
258
- request.on('error', reject);
259
- this.failOnTimeout(request, url, reject);
260
- request.write(content);
261
- request.end();
308
+ const size = typeof content === 'string' ? Buffer.byteLength(content) : content.byteLength;
309
+ checkBodySize(size, maxBodyLength);
310
+ (0, http_1.send)(url, this.getRequestOptions('POST', headers), () => content, (0, http_1.jsonResponse)(resolve, reject), reject);
262
311
  });
263
312
  }
264
- postFile(file, url, headers, maxBodyLength) {
313
+ async postFile(file, url, headers, maxBodyLength) {
314
+ checkBodySize((await fs.promises.stat(file)).size, maxBodyLength);
265
315
  return new Promise((resolve, reject) => {
266
- const stream = fs.createReadStream(file);
267
- const requestOptions = this.getRequestOptions('POST', headers, maxBodyLength);
268
- const request = this.getProtocol(url)
269
- .request(url, requestOptions, this.getJsonResponse(resolve, reject));
270
- stream.on('error', (err) => {
271
- request.destroy();
272
- reject(err);
273
- });
274
- request.on('error', (err) => {
275
- stream.close();
276
- reject(err);
277
- });
278
- this.failOnTimeout(request, url, reject);
279
- stream.on('open', () => stream.pipe(request));
316
+ // a stream can be read once, so each redirect hop opens the file again
317
+ (0, http_1.send)(url, this.getRequestOptions('POST', headers), () => fs.createReadStream(file), (0, http_1.jsonResponse)(resolve, reject), reject);
280
318
  });
281
319
  }
320
+ /**
321
+ * The header a personal access token travels in. `Authorization: Bearer` is standard and what
322
+ * log/proxy redaction and secret scanners already expect, so it's preferred - except when
323
+ * `username`/`password` are set, where `Authorization` is already claimed by Basic auth to a
324
+ * fronting reverse proxy (see `getRequestOptions`) and the token falls back to `TOKEN_HEADER`.
325
+ */
326
+ tokenHeaders(pat) {
327
+ return (this.username && this.password)
328
+ ? { [TOKEN_HEADER]: pat }
329
+ : { Authorization: `Bearer ${pat}` };
330
+ }
331
+ /**
332
+ * The `token` query parameter to add alongside the header, for registries that predate header
333
+ * support (see #1344) - empty once the registry is known to be new enough to not need it.
334
+ *
335
+ * Best-effort and cached per `Registry` instance: a registry that doesn't expose `/api/version`,
336
+ * or reports a version that doesn't parse as semver, is assumed too old to know about the header,
337
+ * same as before this method existed - the query parameter is kept rather than risking a request
338
+ * that only carries a header such a registry never looks at.
339
+ */
340
+ tokenQuery(pat) {
341
+ return (this.tokenHeaderSupport ?? (this.tokenHeaderSupport = this.getRegistryVersion()
342
+ .then(({ version }) => {
343
+ const parsed = semver.coerce(version);
344
+ return !!parsed && semver.gte(parsed, exports.MIN_TOKEN_HEADER_REGISTRY_VERSION);
345
+ })
346
+ .catch(() => false))).then(supported => supported ? {} : { token: pat });
347
+ }
282
348
  getUrl(segments, query) {
283
349
  const url = new URL(this.url);
284
350
  const basePath = url.pathname.replace(/\/+$/, '');
@@ -289,31 +355,7 @@ class Registry {
289
355
  }
290
356
  return url;
291
357
  }
292
- getProtocol(url) {
293
- return url.protocol === 'https:' ? followRedirects.https : followRedirects.http;
294
- }
295
- /**
296
- * Node's `timeout` option only raises an event - the request stays open, which is why a server
297
- * that accepts a connection and then says nothing used to hold a command open indefinitely.
298
- * Destroying the request with an error routes through the error handling each caller already
299
- * has, so a stalled request rejects the way any other failure does. With a timeout of zero the
300
- * event never fires and this does nothing.
301
- */
302
- // Typed on Writable because both http.ClientRequest and follow-redirects' wrapper are ones, and
303
- // all this needs is the timeout event and destroy.
304
- failOnTimeout(request, url, fail) {
305
- request.on('timeout', () => {
306
- // Reported before the request is torn down, rather than by destroying it with the error.
307
- // Destroying raises errors of its own - ECONNRESET on the response, a premature close
308
- // from pipeline - and node guarantees no order between those and the request's own. In
309
- // practice the request's arrives first, so this is belt and braces rather than the thing
310
- // that stops the wrong error being reported; that is the caller claiming the failure
311
- // before it does any asynchronous cleanup.
312
- fail(new Error(`No response from ${(0, util_1.redactUrl)(url)} for ${this.timeout} ms.`));
313
- request.destroy();
314
- });
315
- }
316
- getRequestOptions(method, headers, maxBodyLength) {
358
+ getRequestOptions(method, headers) {
317
359
  if (this.username && this.password) {
318
360
  headers ?? (headers = {});
319
361
  const credentials = Buffer.from(this.username + ':' + this.password).toString('base64');
@@ -322,52 +364,15 @@ class Registry {
322
364
  return {
323
365
  method,
324
366
  headers,
325
- maxBodyLength,
326
367
  timeout: this.timeout
327
368
  };
328
369
  }
329
- getJsonResponse(resolve, reject) {
330
- return response => {
331
- response.setEncoding('utf-8');
332
- let json = '';
333
- // A connection lost after the headers have arrived ends the response without 'end' ever
334
- // firing, so without this the promise is never settled and the command waits on a body
335
- // that is not coming. The configured timeout would eventually rescue it, but rejecting
336
- // here reports what actually happened instead of thirty seconds of silence.
337
- response.on('error', reject);
338
- response.on('data', chunk => json += chunk);
339
- response.on('end', () => {
340
- if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode > 299)) {
341
- if (json.startsWith('{')) {
342
- try {
343
- const parsed = JSON.parse(json);
344
- const message = parsed.message || parsed.error;
345
- if (message) {
346
- // keep the status: the message alone cannot say whether retrying is worth it
347
- reject((0, util_1.withStatus)(new Error(message), response.statusCode));
348
- return;
349
- }
350
- }
351
- catch (err) {
352
- // Ignore the error and reject with response status
353
- }
354
- }
355
- reject((0, util_1.statusError)(response));
356
- }
357
- else if (json.startsWith('<!DOCTYPE html>')) {
358
- reject(json);
359
- }
360
- else {
361
- try {
362
- resolve(JSON.parse(json));
363
- }
364
- catch (err) {
365
- reject(err);
366
- }
367
- }
368
- });
369
- };
370
- }
371
370
  }
372
371
  exports.Registry = Registry;
372
+ /** Refuses a request body larger than `maxBodyLength` before anything is sent. */
373
+ function checkBodySize(size, maxBodyLength) {
374
+ if (maxBodyLength !== undefined && size > maxBodyLength) {
375
+ throw new Error(`The request body of ${size} bytes is larger than the limit of ${maxBodyLength} bytes.`);
376
+ }
377
+ }
373
378
  //# sourceMappingURL=registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
@@ -26,5 +26,10 @@ export interface TrustedPublishingOptions {
26
26
  * the audience the registry expects.
27
27
  */
28
28
  oidcAudience?: string;
29
+ /**
30
+ * The registration code shown when the trusted publisher of a private repository was registered.
31
+ * Only the first publish needs it: it completes the registration, and the code is used up.
32
+ */
33
+ registrationCode?: string;
29
34
  }
30
35
  //# sourceMappingURL=trusted-publishing-options.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"trusted-publishing-options.d.ts","sourceRoot":"","sources":["../src/trusted-publishing-options.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;+EAW+E;AAE/E,MAAM,WAAW,wBAAwB;IACrC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB"}
1
+ {"version":3,"file":"trusted-publishing-options.d.ts","sourceRoot":"","sources":["../src/trusted-publishing-options.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;+EAW+E;AAE/E,MAAM,WAAW,wBAAwB;IACrC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B"}
@@ -16,6 +16,7 @@ exports.useTrustedPublishing = useTrustedPublishing;
16
16
  exports.getTrustedPublishingToken = getTrustedPublishingToken;
17
17
  exports.refreshTrustedPublishingToken = refreshTrustedPublishingToken;
18
18
  const oidc_1 = require("./oidc");
19
+ const util_1 = require("./util");
19
20
  const tokens = new Map();
20
21
  // The value each cached exchange resolved to, so a token a publish was refused with can be told from one
21
22
  // another publish has already replaced. Cleared while an exchange is in flight.
@@ -70,11 +71,12 @@ function exchange(key, registry, namespace, extension, options) {
70
71
  const RETRYABLE_STATUS = [502, 503, 504];
71
72
  const RETRY_DELAYS_MS = [1000, 4000];
72
73
  async function requestToken(registry, namespace, extension, options) {
73
- const audience = options.oidcAudience ?? registry.url;
74
+ requireSecureRegistry(registry);
75
+ const audience = options.oidcAudience ?? await expectedAudience(registry);
74
76
  const idToken = await (0, oidc_1.getIdToken)(audience, options);
75
77
  let result;
76
78
  try {
77
- result = await exchangeWithRetry(registry, namespace, extension, idToken);
79
+ result = await exchangeWithRetry(registry, namespace, extension, idToken, options.registrationCode);
78
80
  }
79
81
  catch (err) {
80
82
  throw new Error(`${err.message}\n${registrationHint(registry, namespace, extension)}`);
@@ -89,10 +91,10 @@ async function requestToken(registry, namespace, extension, options) {
89
91
  console.log(`\ud83d\udd10 Trusted publishing token issued for ${namespace}.${extension}${expires}`);
90
92
  return result.value;
91
93
  }
92
- async function exchangeWithRetry(registry, namespace, extension, idToken) {
94
+ async function exchangeWithRetry(registry, namespace, extension, idToken, registrationCode) {
93
95
  for (let attempt = 0;; attempt++) {
94
96
  try {
95
- return await registry.requestTrustedPublishingToken(namespace, extension, idToken);
97
+ return await registry.requestTrustedPublishingToken(namespace, extension, idToken, registrationCode);
96
98
  }
97
99
  catch (err) {
98
100
  const status = err?.status;
@@ -105,6 +107,28 @@ async function exchangeWithRetry(registry, namespace, extension, idToken) {
105
107
  }
106
108
  }
107
109
  }
110
+ /**
111
+ * The ID token is a bearer credential for publishing, and the registry also chooses the audience it
112
+ * is minted for, so both only travel over https. A loopback registry is exempt, as for a browser's
113
+ * secure contexts: nothing leaves the machine.
114
+ */
115
+ function requireSecureRegistry(registry) {
116
+ const { protocol, hostname } = new URL(registry.url);
117
+ if (protocol === 'https:' || hostname === 'localhost' || hostname === '[::1]' || /^127\./.test(hostname)) {
118
+ return;
119
+ }
120
+ throw new Error(`Trusted publishing sends an ID token to the registry, so the registry URL must use https, `
121
+ + `but it is ${(0, util_1.redactUrl)(registry.url)}. Use an https URL, or publish with an access token.`);
122
+ }
123
+ /**
124
+ * The audience a registry validates is its own configuration, defaulting to the URL of its web UI
125
+ * rather than the API URL this CLI talks to, so it is read from where the registry publishes it.
126
+ * A registry that reports nothing there is asked for the registry URL.
127
+ */
128
+ async function expectedAudience(registry) {
129
+ const reported = await registry.getRegistryVersion().catch(() => undefined);
130
+ return reported?.trustedPublishingAudience ?? registry.url;
131
+ }
108
132
  function registrationHint(registry, namespace, extension) {
109
133
  return `Check the trusted publishers registered for '${namespace}.${extension}' at `
110
134
  + `${registry.url}/user-settings/trusted-publishers.`;
@@ -1 +1 @@
1
- {"version":3,"file":"trusted-publishing.js","sourceRoot":"","sources":["../src/trusted-publishing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trusted-publishing.js","sourceRoot":"","sources":["../src/trusted-publishing.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"unpublish.d.ts","sourceRoot":"","sources":["../src/unpublish.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;+EAW+E;AAY/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD;;GAEG;AACH,eAAO,MAAM,8BAA8B,UAAU,CAAC;AAEtD;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B7E"}
1
+ {"version":3,"file":"unpublish.d.ts","sourceRoot":"","sources":["../src/unpublish.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;+EAW+E;AAO/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD;;GAEG;AACH,eAAO,MAAM,8BAA8B,UAAU,CAAC;AAEtD;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6B7E"}
package/lib/unpublish.js CHANGED
@@ -15,12 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.MIN_UNPUBLISH_REGISTRY_VERSION = void 0;
16
16
  exports.unpublish = unpublish;
17
17
  const prompts_1 = require("@inquirer/prompts");
18
- // `import * as isCI from 'is-ci'` would bind to a namespace object instead of the boolean `is-ci`
19
- // exports whenever the importer applies ES module interop (e.g. a bundler, or vitest's own
20
- // transform), making the truthiness check below always true. `import = require` always binds
21
- // directly to the exported value, regardless of how the importing tool handles interop.
22
- // eslint-disable-next-line @typescript-eslint/no-require-imports
23
- const isCI = require("is-ci");
18
+ const ci_info_1 = require("ci-info");
24
19
  const semver = require("semver");
25
20
  const pat_1 = require("./pat");
26
21
  const registry_1 = require("./registry");
@@ -45,13 +40,15 @@ async function unpublish(options = {}) {
45
40
  const [, namespace, extension] = match;
46
41
  const registry = new registry_1.Registry(options);
47
42
  await ensureUnpublishSupported(registry);
48
- options.pat = await (0, pat_1.getPAT)(namespace, { ...options, namespace }, false);
43
+ const { pat, save } = await (0, pat_1.getPAT)(namespace, { ...options, namespace }, false);
44
+ options.pat = pat;
49
45
  const targetVersions = getTargetVersions(options);
50
46
  await confirmUnpublish(`${namespace}.${extension}`, targetVersions, registry.url, options.force);
51
47
  const result = await registry.deleteExtension(namespace, extension, targetVersions, options.pat);
52
48
  if (result.error) {
53
49
  throw new Error(result.error);
54
50
  }
51
+ await save();
55
52
  // the registry reports one line per deleted version, and nothing at all if there was nothing to delete
56
53
  console.log(`🗑 ${result.success || `Nothing to delete for ${namespace}.${extension}`}`);
57
54
  }
@@ -116,7 +113,7 @@ async function confirmUnpublish(extensionId, targetVersions, registryUrl, force)
116
113
  if (force) {
117
114
  return;
118
115
  }
119
- if (isCI || !process.stdin.isTTY) {
116
+ if (ci_info_1.isCI || !process.stdin.isTTY) {
120
117
  throw new Error("Aborted. Use '--force' to delete without confirmation.");
121
118
  }
122
119
  const what = targetVersions
@@ -1 +1 @@
1
- {"version":3,"file":"unpublish.js","sourceRoot":"","sources":["../src/unpublish.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"unpublish.js","sourceRoot":"","sources":["../src/unpublish.ts"],"names":[],"mappings":"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"}