@vltpkg/cli-js 1.0.10 → 1.1.1

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 (80) hide show
  1. package/{access-4RPC3X5N.js → access-YYMAAPHV.js} +42 -11
  2. package/{bugs-K6QLQLL4.js → bugs-RK5JBPSC.js} +19 -19
  3. package/{build-VD4L5IED.js → build-DVJSYCNF.js} +8 -9
  4. package/{cache-Q6FUUEQF.js → cache-JKQNGZ7L.js} +21 -15
  5. package/{chunk-5JFRXIK2.js → chunk-2PWSMJD7.js} +20 -1
  6. package/{chunk-5HBKYSTX.js → chunk-34TE4HZS.js} +36 -4
  7. package/{chunk-WAYVHANF.js → chunk-3LUM7NX5.js} +30 -5
  8. package/{chunk-NA732FNL.js → chunk-6FT6K5YN.js} +98 -6
  9. package/{chunk-HAYXR3MW.js → chunk-APMYKJI2.js} +1 -1
  10. package/{chunk-ZNCVQQDT.js → chunk-BWEH7DHQ.js} +2 -2
  11. package/{chunk-5HPGL5WS.js → chunk-CBASIDQH.js} +1 -1
  12. package/{chunk-MNK55XSE.js → chunk-CEHPRPGQ.js} +21 -0
  13. package/{chunk-2YJ5MESP.js → chunk-DF5K4CYR.js} +6 -10
  14. package/{chunk-DAS7TVRN.js → chunk-DR4Z63B6.js} +5 -5
  15. package/{chunk-NWLS3VOQ.js → chunk-DS7YMIHP.js} +239 -131
  16. package/{chunk-XUP35M5Q.js → chunk-GDT6KI4I.js} +4 -4
  17. package/{chunk-FUCQ7ARR.js → chunk-JZJWASXL.js} +36 -25
  18. package/{chunk-B5IILBX7.js → chunk-KDF7PEBY.js} +4 -4
  19. package/{chunk-P5S2TFCF.js → chunk-LN2A74PF.js} +14 -10
  20. package/{chunk-VL7RJVNN.js → chunk-LR42WTKN.js} +20 -11
  21. package/chunk-MZA6N2TA.js +190 -0
  22. package/{chunk-3564IL5W.js → chunk-QQYTPGIL.js} +1 -1
  23. package/chunk-SNOBGFNM.js +129 -0
  24. package/{chunk-LPIBYUMT.js → chunk-U7TEQCBN.js} +27 -1
  25. package/{chunk-TYRKIWGF.js → chunk-V4YCZZHY.js} +3 -3
  26. package/chunk-WD74RJXW.js +75 -0
  27. package/{chunk-XFI4THXZ.js → chunk-WE2TQN32.js} +1 -1
  28. package/{chunk-USTJECVS.js → chunk-X2AWQGYG.js} +1 -1
  29. package/{chunk-BSPUKIWY.js → chunk-XIF734VO.js} +12 -2
  30. package/chunk-YBVTY6ZW.js +91 -0
  31. package/{ci-G4PJWJQE.js → ci-WVYVR4XK.js} +10 -11
  32. package/cli-package.json +1 -1
  33. package/{config-WTIWWXRD.js → config-2MFZVP2N.js} +11 -11
  34. package/{config-66ARNESN.js → config-VYOTYBGS.js} +8 -6
  35. package/{create-DF6RQTHC.js → create-OJPLHBRR.js} +18 -18
  36. package/{deprecate-2KTC2HKH.js → deprecate-V4PKGFF7.js} +22 -19
  37. package/{dist-tag-QKJQIOGN.js → dist-tag-DNLV4VDE.js} +24 -26
  38. package/{docs-YSWJTGYX.js → docs-LXHDCGL5.js} +19 -19
  39. package/{exec-5XIMPSBI.js → exec-P32YSP44.js} +18 -18
  40. package/{exec-cache-OGX7WR5P.js → exec-cache-JZ5PDTOY.js} +16 -16
  41. package/{exec-local-SB7EPYED.js → exec-local-HHA464H4.js} +14 -15
  42. package/{help-GMCQHGVN.js → help-GVTTOYUL.js} +4 -5
  43. package/{init-KXIIWHBA.js → init-RENGG74N.js} +8 -9
  44. package/{install-ODTEMAMS.js → install-V6VXOBH2.js} +38 -15
  45. package/{list-QS4FLJSU.js → list-7N7Y5OXB.js} +42 -30
  46. package/{login-6TGYRY43.js → login-D2QSAUJC.js} +12 -12
  47. package/{logout-GOAB7KHJ.js → logout-QPOYBQNF.js} +8 -8
  48. package/{pack-PJDH6PKP.js → pack-4YYGXP3A.js} +12 -13
  49. package/package.json +1 -1
  50. package/{ping-ANBW2IRW.js → ping-QYRIZONU.js} +8 -8
  51. package/{pkg-GZWUXU65.js → pkg-WQTNABKT.js} +11 -12
  52. package/{profile-BLY74CMB.js → profile-PRI7WXK7.js} +21 -8
  53. package/{publish-W2KOTNMB.js → publish-PSBYJQS7.js} +33 -75
  54. package/{query-3PUMU5ON.js → query-UFYLQW4N.js} +36 -24
  55. package/{registry-ONSDWNPV.js → registry-YTJZ3AQD.js} +3 -3
  56. package/registry-client-src-revalidate.js +426 -217
  57. package/{repo-LZ6STH4C.js → repo-4S6ETFXX.js} +19 -19
  58. package/{reporter-SDMDYYMJ.js → reporter-GLWYHI2Y.js} +23 -1
  59. package/{run-JMIBADHE.js → run-OU7NUB7A.js} +14 -15
  60. package/{run-exec-JEKM2O53.js → run-exec-QPBY7ULE.js} +14 -15
  61. package/security-archive-src-update-expired.js +97 -63
  62. package/{setup-BTBU3NAI.js → setup-23QXG473.js} +43 -24
  63. package/{src-J4BAYOBO.js → src-3GN7TDNH.js} +14 -6
  64. package/{src-23VBKASP.js → src-575IYJOL.js} +17 -18
  65. package/{token-PUJ7QN6D.js → token-FCIA3RGD.js} +9 -9
  66. package/{uninstall-OTISP2T7.js → uninstall-BQVZVKB5.js} +12 -12
  67. package/{unpublish-X75EEQAN.js → unpublish-YGJ5HEYF.js} +43 -40
  68. package/{update-CKXX5POE.js → update-WCGV66JK.js} +35 -13
  69. package/{version-24B2X7M7.js → version-7EA3UQG7.js} +10 -11
  70. package/{view-Q7MAQ6R3.js → view-5FWIENVE.js} +10 -10
  71. package/vlr.js +1 -1
  72. package/vlrx.js +1 -1
  73. package/vlt.js +1 -1
  74. package/vlx.js +1 -1
  75. package/vlxl.js +1 -1
  76. package/{whoami-S6CQZFE3.js → whoami-O4ZTBIC4.js} +29 -13
  77. package/chunk-E74WGW5C.js +0 -49
  78. package/chunk-UBLFPJHV.js +0 -40
  79. package/chunk-Y3QEV76Q.js +0 -75
  80. package/registry-client-package.json +0 -75
@@ -1076,7 +1076,7 @@ var require_util = __commonJS({
1076
1076
  return new BodyAsyncIterable(body);
1077
1077
  } else if (body && isFormDataLike(body)) {
1078
1078
  return body;
1079
- } else if (body && typeof body !== "string" && !ArrayBuffer.isView(body) && isIterable2(body)) {
1079
+ } else if (body && typeof body !== "string" && !ArrayBuffer.isView(body) && isIterable3(body)) {
1080
1080
  return new BodyAsyncIterable(body);
1081
1081
  } else {
1082
1082
  return body;
@@ -1197,7 +1197,7 @@ var require_util = __commonJS({
1197
1197
  function isAsyncIterable(obj) {
1198
1198
  return !!(obj != null && typeof obj[Symbol.asyncIterator] === "function");
1199
1199
  }
1200
- function isIterable2(obj) {
1200
+ function isIterable3(obj) {
1201
1201
  return !!(obj != null && (typeof obj[Symbol.iterator] === "function" || typeof obj[Symbol.asyncIterator] === "function"));
1202
1202
  }
1203
1203
  function hasSafeIterator(obj) {
@@ -1808,7 +1808,7 @@ var require_util = __commonJS({
1808
1808
  parseURL,
1809
1809
  getServerName,
1810
1810
  isStream,
1811
- isIterable: isIterable2,
1811
+ isIterable: isIterable3,
1812
1812
  hasSafeIterator,
1813
1813
  isAsyncIterable,
1814
1814
  isDestroyed,
@@ -1930,14 +1930,14 @@ var require_diagnostics = __commonJS({
1930
1930
  "undici:client:beforeConnect",
1931
1931
  (evt) => {
1932
1932
  const {
1933
- connectParams: { version: version2, protocol, port, host }
1933
+ connectParams: { version, protocol, port, host }
1934
1934
  } = evt;
1935
1935
  debugLog(
1936
1936
  "connecting to %s%s using %s%s",
1937
1937
  host,
1938
1938
  port ? `:${port}` : "",
1939
1939
  protocol,
1940
- version2
1940
+ version
1941
1941
  );
1942
1942
  }
1943
1943
  );
@@ -1945,14 +1945,14 @@ var require_diagnostics = __commonJS({
1945
1945
  "undici:client:connected",
1946
1946
  (evt) => {
1947
1947
  const {
1948
- connectParams: { version: version2, protocol, port, host }
1948
+ connectParams: { version, protocol, port, host }
1949
1949
  } = evt;
1950
1950
  debugLog(
1951
1951
  "connected to %s%s using %s%s",
1952
1952
  host,
1953
1953
  port ? `:${port}` : "",
1954
1954
  protocol,
1955
- version2
1955
+ version
1956
1956
  );
1957
1957
  }
1958
1958
  );
@@ -1960,7 +1960,7 @@ var require_diagnostics = __commonJS({
1960
1960
  "undici:client:connectError",
1961
1961
  (evt) => {
1962
1962
  const {
1963
- connectParams: { version: version2, protocol, port, host },
1963
+ connectParams: { version, protocol, port, host },
1964
1964
  error: error2
1965
1965
  } = evt;
1966
1966
  debugLog(
@@ -1968,7 +1968,7 @@ var require_diagnostics = __commonJS({
1968
1968
  host,
1969
1969
  port ? `:${port}` : "",
1970
1970
  protocol,
1971
- version2,
1971
+ version,
1972
1972
  error2.message
1973
1973
  );
1974
1974
  }
@@ -2117,7 +2117,7 @@ var require_request = __commonJS({
2117
2117
  destroy,
2118
2118
  isBuffer,
2119
2119
  isFormDataLike,
2120
- isIterable: isIterable2,
2120
+ isIterable: isIterable3,
2121
2121
  hasSafeIterator,
2122
2122
  isBlobLike,
2123
2123
  serializePathWithQuery,
@@ -2232,7 +2232,7 @@ var require_request = __commonJS({
2232
2232
  this.body = body.byteLength ? Buffer.from(body) : null;
2233
2233
  } else if (typeof body === "string") {
2234
2234
  this.body = body.length ? Buffer.from(body) : null;
2235
- } else if (isFormDataLike(body) || isIterable2(body) || isBlobLike(body)) {
2235
+ } else if (isFormDataLike(body) || isIterable3(body) || isBlobLike(body)) {
2236
2236
  this.body = body;
2237
2237
  } else {
2238
2238
  throw new InvalidArgumentError("body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable");
@@ -2744,9 +2744,9 @@ var require_dispatcher_base = __commonJS({
2744
2744
  }
2745
2745
  close(callback) {
2746
2746
  if (callback === void 0) {
2747
- return new Promise((resolve11, reject) => {
2747
+ return new Promise((resolve10, reject) => {
2748
2748
  this.close((err, data) => {
2749
- return err ? reject(err) : resolve11(data);
2749
+ return err ? reject(err) : resolve10(data);
2750
2750
  });
2751
2751
  });
2752
2752
  }
@@ -2784,9 +2784,9 @@ var require_dispatcher_base = __commonJS({
2784
2784
  err = null;
2785
2785
  }
2786
2786
  if (callback === void 0) {
2787
- return new Promise((resolve11, reject) => {
2787
+ return new Promise((resolve10, reject) => {
2788
2788
  this.destroy(err, (err2, data) => {
2789
- return err2 ? reject(err2) : resolve11(data);
2789
+ return err2 ? reject(err2) : resolve10(data);
2790
2790
  });
2791
2791
  });
2792
2792
  }
@@ -6283,8 +6283,8 @@ var require_promise = __commonJS({
6283
6283
  function createDeferredPromise() {
6284
6284
  let res;
6285
6285
  let rej;
6286
- const promise = new Promise((resolve11, reject) => {
6287
- res = resolve11;
6286
+ const promise = new Promise((resolve10, reject) => {
6287
+ res = resolve10;
6288
6288
  rej = reject;
6289
6289
  });
6290
6290
  return { promise, resolve: res, reject: rej };
@@ -7688,12 +7688,12 @@ upgrade: ${upgrade}\r
7688
7688
  cb();
7689
7689
  }
7690
7690
  }
7691
- const waitForDrain = () => new Promise((resolve11, reject) => {
7691
+ const waitForDrain = () => new Promise((resolve10, reject) => {
7692
7692
  assert(callback === null);
7693
7693
  if (socket[kError]) {
7694
7694
  reject(socket[kError]);
7695
7695
  } else {
7696
- callback = resolve11;
7696
+ callback = resolve10;
7697
7697
  }
7698
7698
  });
7699
7699
  socket.on("close", onDrain).on("drain", onDrain);
@@ -8538,12 +8538,12 @@ var require_client_h2 = __commonJS({
8538
8538
  cb();
8539
8539
  }
8540
8540
  }
8541
- const waitForDrain = () => new Promise((resolve11, reject) => {
8541
+ const waitForDrain = () => new Promise((resolve10, reject) => {
8542
8542
  assert(callback === null);
8543
8543
  if (socket[kError]) {
8544
8544
  reject(socket[kError]);
8545
8545
  } else {
8546
- callback = resolve11;
8546
+ callback = resolve10;
8547
8547
  }
8548
8548
  });
8549
8549
  h2stream.on("close", onDrain).on("drain", onDrain);
@@ -8859,16 +8859,16 @@ var require_client = __commonJS({
8859
8859
  return this[kNeedDrain] < 2;
8860
8860
  }
8861
8861
  [kClose]() {
8862
- return new Promise((resolve11) => {
8862
+ return new Promise((resolve10) => {
8863
8863
  if (this[kSize]) {
8864
- this[kClosedResolve] = resolve11;
8864
+ this[kClosedResolve] = resolve10;
8865
8865
  } else {
8866
- resolve11(null);
8866
+ resolve10(null);
8867
8867
  }
8868
8868
  });
8869
8869
  }
8870
8870
  [kDestroy](err) {
8871
- return new Promise((resolve11) => {
8871
+ return new Promise((resolve10) => {
8872
8872
  const requests = this[kQueue].splice(this[kPendingIdx]);
8873
8873
  for (let i2 = 0; i2 < requests.length; i2++) {
8874
8874
  const request2 = requests[i2];
@@ -8879,7 +8879,7 @@ var require_client = __commonJS({
8879
8879
  this[kClosedResolve]();
8880
8880
  this[kClosedResolve] = null;
8881
8881
  }
8882
- resolve11(null);
8882
+ resolve10(null);
8883
8883
  };
8884
8884
  if (this[kHTTPContext]) {
8885
8885
  this[kHTTPContext].destroy(err, callback);
@@ -9284,8 +9284,8 @@ var require_pool_base = __commonJS({
9284
9284
  }
9285
9285
  return Promise.all(closeAll);
9286
9286
  } else {
9287
- return new Promise((resolve11) => {
9288
- this[kClosedResolve] = resolve11;
9287
+ return new Promise((resolve10) => {
9288
+ this[kClosedResolve] = resolve10;
9289
9289
  });
9290
9290
  }
9291
9291
  }
@@ -10155,10 +10155,10 @@ var require_socks5_client = __commonJS({
10155
10155
  if (this.buffer.length < 2) {
10156
10156
  return;
10157
10157
  }
10158
- const version2 = this.buffer[0];
10158
+ const version = this.buffer[0];
10159
10159
  const method = this.buffer[1];
10160
- if (version2 !== SOCKS_VERSION) {
10161
- throw new Socks5ProxyError(`Invalid SOCKS version: ${version2}`, "UND_ERR_SOCKS5_VERSION");
10160
+ if (version !== SOCKS_VERSION) {
10161
+ throw new Socks5ProxyError(`Invalid SOCKS version: ${version}`, "UND_ERR_SOCKS5_VERSION");
10162
10162
  }
10163
10163
  if (method === AUTH_METHODS.NO_ACCEPTABLE) {
10164
10164
  throw new Socks5ProxyError("No acceptable authentication method", "UND_ERR_SOCKS5_AUTH_REJECTED");
@@ -10203,10 +10203,10 @@ var require_socks5_client = __commonJS({
10203
10203
  if (this.buffer.length < 2) {
10204
10204
  return;
10205
10205
  }
10206
- const version2 = this.buffer[0];
10206
+ const version = this.buffer[0];
10207
10207
  const status = this.buffer[1];
10208
- if (version2 !== 1) {
10209
- throw new Socks5ProxyError(`Invalid auth sub-negotiation version: ${version2}`, "UND_ERR_SOCKS5_AUTH_VERSION");
10208
+ if (version !== 1) {
10209
+ throw new Socks5ProxyError(`Invalid auth sub-negotiation version: ${version}`, "UND_ERR_SOCKS5_AUTH_VERSION");
10210
10210
  }
10211
10211
  if (status !== 0) {
10212
10212
  throw new Socks5ProxyError("Authentication failed", "UND_ERR_SOCKS5_AUTH_FAILED");
@@ -10253,11 +10253,11 @@ var require_socks5_client = __commonJS({
10253
10253
  if (this.buffer.length < 4) {
10254
10254
  return;
10255
10255
  }
10256
- const version2 = this.buffer[0];
10256
+ const version = this.buffer[0];
10257
10257
  const reply = this.buffer[1];
10258
10258
  const addressType = this.buffer[3];
10259
- if (version2 !== SOCKS_VERSION) {
10260
- throw new Socks5ProxyError(`Invalid SOCKS version in reply: ${version2}`, "UND_ERR_SOCKS5_REPLY_VERSION");
10259
+ if (version !== SOCKS_VERSION) {
10260
+ throw new Socks5ProxyError(`Invalid SOCKS version in reply: ${version}`, "UND_ERR_SOCKS5_REPLY_VERSION");
10261
10261
  }
10262
10262
  let responseLength = 4;
10263
10263
  if (addressType === ADDRESS_TYPES.IPV4) {
@@ -10402,7 +10402,7 @@ var require_socks5_proxy_agent = __commonJS({
10402
10402
  const proxyHost = this[kProxyUrl].hostname;
10403
10403
  const proxyPort = parseInt(this[kProxyUrl].port) || 1080;
10404
10404
  debug2("creating SOCKS5 connection to", proxyHost, proxyPort);
10405
- const socket = await new Promise((resolve11, reject) => {
10405
+ const socket = await new Promise((resolve10, reject) => {
10406
10406
  this[kConnector]({
10407
10407
  hostname: proxyHost,
10408
10408
  host: proxyHost,
@@ -10412,7 +10412,7 @@ var require_socks5_proxy_agent = __commonJS({
10412
10412
  if (err) {
10413
10413
  reject(err);
10414
10414
  } else {
10415
- resolve11(socket2);
10415
+ resolve10(socket2);
10416
10416
  }
10417
10417
  });
10418
10418
  });
@@ -10422,14 +10422,14 @@ var require_socks5_proxy_agent = __commonJS({
10422
10422
  socket.destroy();
10423
10423
  });
10424
10424
  await socks5Client.handshake();
10425
- await new Promise((resolve11, reject) => {
10425
+ await new Promise((resolve10, reject) => {
10426
10426
  const timeout = setTimeout(() => {
10427
10427
  reject(new Error("SOCKS5 authentication timeout"));
10428
10428
  }, 5e3);
10429
10429
  const onAuthenticated = () => {
10430
10430
  clearTimeout(timeout);
10431
10431
  socks5Client.removeListener("error", onError);
10432
- resolve11();
10432
+ resolve10();
10433
10433
  };
10434
10434
  const onError = (err) => {
10435
10435
  clearTimeout(timeout);
@@ -10438,14 +10438,14 @@ var require_socks5_proxy_agent = __commonJS({
10438
10438
  };
10439
10439
  if (socks5Client.state === STATES.AUTHENTICATED) {
10440
10440
  clearTimeout(timeout);
10441
- resolve11();
10441
+ resolve10();
10442
10442
  } else {
10443
10443
  socks5Client.once("authenticated", onAuthenticated);
10444
10444
  socks5Client.once("error", onError);
10445
10445
  }
10446
10446
  });
10447
10447
  await socks5Client.connect(targetHost, targetPort);
10448
- await new Promise((resolve11, reject) => {
10448
+ await new Promise((resolve10, reject) => {
10449
10449
  const timeout = setTimeout(() => {
10450
10450
  reject(new Error("SOCKS5 connection timeout"));
10451
10451
  }, 5e3);
@@ -10453,7 +10453,7 @@ var require_socks5_proxy_agent = __commonJS({
10453
10453
  debug2("SOCKS5 tunnel established to", targetHost, targetPort, "via", info);
10454
10454
  clearTimeout(timeout);
10455
10455
  socks5Client.removeListener("error", onError);
10456
- resolve11();
10456
+ resolve10();
10457
10457
  };
10458
10458
  const onError = (err) => {
10459
10459
  clearTimeout(timeout);
@@ -10496,8 +10496,8 @@ var require_socks5_proxy_agent = __commonJS({
10496
10496
  socket,
10497
10497
  servername: this[kRequestTls]?.servername || targetHost
10498
10498
  });
10499
- await new Promise((resolve11, reject) => {
10500
- finalSocket.once("secureConnect", resolve11);
10499
+ await new Promise((resolve10, reject) => {
10500
+ finalSocket.once("secureConnect", resolve10);
10501
10501
  finalSocket.once("error", reject);
10502
10502
  });
10503
10503
  }
@@ -11553,7 +11553,7 @@ var require_readable = __commonJS({
11553
11553
  if (this._readableState.closeEmitted) {
11554
11554
  return Promise.resolve(null);
11555
11555
  }
11556
- return new Promise((resolve11, reject) => {
11556
+ return new Promise((resolve10, reject) => {
11557
11557
  if (this[kContentLength] && this[kContentLength] > limit || this[kBytesRead] > limit) {
11558
11558
  this.destroy(new AbortError());
11559
11559
  }
@@ -11567,11 +11567,11 @@ var require_readable = __commonJS({
11567
11567
  if (signal.aborted) {
11568
11568
  reject(signal.reason ?? new AbortError());
11569
11569
  } else {
11570
- resolve11(null);
11570
+ resolve10(null);
11571
11571
  }
11572
11572
  });
11573
11573
  } else {
11574
- this.on("close", resolve11);
11574
+ this.on("close", resolve10);
11575
11575
  }
11576
11576
  this.on("error", noop).on("data", () => {
11577
11577
  if (this[kBytesRead] > limit) {
@@ -11599,7 +11599,7 @@ var require_readable = __commonJS({
11599
11599
  }
11600
11600
  function consume(stream, type) {
11601
11601
  assert(!stream[kConsume]);
11602
- return new Promise((resolve11, reject) => {
11602
+ return new Promise((resolve10, reject) => {
11603
11603
  if (isUnusable(stream)) {
11604
11604
  const rState = stream._readableState;
11605
11605
  if (rState.destroyed && rState.closeEmitted === false) {
@@ -11614,7 +11614,7 @@ var require_readable = __commonJS({
11614
11614
  stream[kConsume] = {
11615
11615
  type,
11616
11616
  stream,
11617
- resolve: resolve11,
11617
+ resolve: resolve10,
11618
11618
  reject,
11619
11619
  length: 0,
11620
11620
  body: []
@@ -11688,18 +11688,18 @@ var require_readable = __commonJS({
11688
11688
  return buffer;
11689
11689
  }
11690
11690
  function consumeEnd(consume2, encoding) {
11691
- const { type, body, resolve: resolve11, stream, length } = consume2;
11691
+ const { type, body, resolve: resolve10, stream, length } = consume2;
11692
11692
  try {
11693
11693
  if (type === "text") {
11694
- resolve11(chunksDecode(body, length, encoding));
11694
+ resolve10(chunksDecode(body, length, encoding));
11695
11695
  } else if (type === "json") {
11696
- resolve11(JSON.parse(chunksDecode(body, length, encoding)));
11696
+ resolve10(JSON.parse(chunksDecode(body, length, encoding)));
11697
11697
  } else if (type === "arrayBuffer") {
11698
- resolve11(chunksConcat(body, length).buffer);
11698
+ resolve10(chunksConcat(body, length).buffer);
11699
11699
  } else if (type === "blob") {
11700
- resolve11(new Blob(body, { type: stream[kContentType] }));
11700
+ resolve10(new Blob(body, { type: stream[kContentType] }));
11701
11701
  } else if (type === "bytes") {
11702
- resolve11(chunksConcat(body, length));
11702
+ resolve10(chunksConcat(body, length));
11703
11703
  }
11704
11704
  consumeFinish(consume2);
11705
11705
  } catch (err) {
@@ -11889,9 +11889,9 @@ var require_api_request = __commonJS({
11889
11889
  };
11890
11890
  function request2(opts, callback) {
11891
11891
  if (callback === void 0) {
11892
- return new Promise((resolve11, reject) => {
11892
+ return new Promise((resolve10, reject) => {
11893
11893
  request2.call(this, opts, (err, data) => {
11894
- return err ? reject(err) : resolve11(data);
11894
+ return err ? reject(err) : resolve10(data);
11895
11895
  });
11896
11896
  });
11897
11897
  }
@@ -12103,9 +12103,9 @@ var require_api_stream = __commonJS({
12103
12103
  };
12104
12104
  function stream(opts, factory, callback) {
12105
12105
  if (callback === void 0) {
12106
- return new Promise((resolve11, reject) => {
12106
+ return new Promise((resolve10, reject) => {
12107
12107
  stream.call(this, opts, factory, (err, data) => {
12108
- return err ? reject(err) : resolve11(data);
12108
+ return err ? reject(err) : resolve10(data);
12109
12109
  });
12110
12110
  });
12111
12111
  }
@@ -12393,9 +12393,9 @@ var require_api_upgrade = __commonJS({
12393
12393
  };
12394
12394
  function upgrade(opts, callback) {
12395
12395
  if (callback === void 0) {
12396
- return new Promise((resolve11, reject) => {
12396
+ return new Promise((resolve10, reject) => {
12397
12397
  upgrade.call(this, opts, (err, data) => {
12398
- return err ? reject(err) : resolve11(data);
12398
+ return err ? reject(err) : resolve10(data);
12399
12399
  });
12400
12400
  });
12401
12401
  }
@@ -12488,9 +12488,9 @@ var require_api_connect = __commonJS({
12488
12488
  };
12489
12489
  function connect(opts, callback) {
12490
12490
  if (callback === void 0) {
12491
- return new Promise((resolve11, reject) => {
12491
+ return new Promise((resolve10, reject) => {
12492
12492
  connect.call(this, opts, (err, data) => {
12493
- return err ? reject(err) : resolve11(data);
12493
+ return err ? reject(err) : resolve10(data);
12494
12494
  });
12495
12495
  });
12496
12496
  }
@@ -12599,7 +12599,7 @@ var require_mock_utils = __commonJS({
12599
12599
  kTotalDispatchCount
12600
12600
  } = require_mock_symbols();
12601
12601
  var { serializePathWithQuery } = require_util();
12602
- var { STATUS_CODES: STATUS_CODES2 } = __require("node:http");
12602
+ var { STATUS_CODES: STATUS_CODES3 } = __require("node:http");
12603
12603
  var {
12604
12604
  types: {
12605
12605
  isPromise
@@ -12807,7 +12807,7 @@ var require_mock_utils = __commonJS({
12807
12807
  return result;
12808
12808
  }
12809
12809
  function getStatusText(statusCode) {
12810
- return STATUS_CODES2[statusCode] || "unknown";
12810
+ return STATUS_CODES3[statusCode] || "unknown";
12811
12811
  }
12812
12812
  async function getResponse(body) {
12813
12813
  const buffers = [];
@@ -13764,7 +13764,7 @@ var require_snapshot_recorder = __commonJS({
13764
13764
  "../../node_modules/.vlt/~npm~undici@7.29.0/node_modules/undici/lib/mock/snapshot-recorder.js"(exports, module3) {
13765
13765
  "use strict";
13766
13766
  var { writeFile: writeFile3, readFile: readFile4, mkdir: mkdir3 } = __require("node:fs/promises");
13767
- var { dirname: dirname5, resolve: resolve11 } = __require("node:path");
13767
+ var { dirname: dirname4, resolve: resolve10 } = __require("node:path");
13768
13768
  var { setTimeout: setTimeout4, clearTimeout: clearTimeout2 } = __require("node:timers");
13769
13769
  var { InvalidArgumentError, UndiciError } = require_errors();
13770
13770
  var { hashId, isUrlExcludedFactory, normalizeHeaders, createHeaderFilters } = require_snapshot_utils();
@@ -13965,7 +13965,7 @@ var require_snapshot_recorder = __commonJS({
13965
13965
  throw new InvalidArgumentError("Snapshot path is required");
13966
13966
  }
13967
13967
  try {
13968
- const data = await readFile4(resolve11(path2), "utf8");
13968
+ const data = await readFile4(resolve10(path2), "utf8");
13969
13969
  const parsed = JSON.parse(data);
13970
13970
  if (Array.isArray(parsed)) {
13971
13971
  this.#snapshots.clear();
@@ -13994,8 +13994,8 @@ var require_snapshot_recorder = __commonJS({
13994
13994
  if (!path2) {
13995
13995
  throw new InvalidArgumentError("Snapshot path is required");
13996
13996
  }
13997
- const resolvedPath = resolve11(path2);
13998
- await mkdir3(dirname5(resolvedPath), { recursive: true });
13997
+ const resolvedPath = resolve10(path2);
13998
+ await mkdir3(dirname4(resolvedPath), { recursive: true });
13999
13999
  const data = Array.from(this.#snapshots.entries()).map(([hash2, snapshot]) => ({
14000
14000
  hash: hash2,
14001
14001
  snapshot
@@ -20413,7 +20413,7 @@ var require_fetch = __commonJS({
20413
20413
  var { dataURLProcessor, serializeAMimeType, minimizeSupportedMimeType } = require_data_url();
20414
20414
  var { getGlobalDispatcher } = require_global2();
20415
20415
  var { webidl } = require_webidl();
20416
- var { STATUS_CODES: STATUS_CODES2 } = __require("node:http");
20416
+ var { STATUS_CODES: STATUS_CODES3 } = __require("node:http");
20417
20417
  var { bytesMatch } = require_subresource_integrity();
20418
20418
  var { createDeferredPromise } = require_promise();
20419
20419
  var { isomorphicEncode } = require_infra();
@@ -21307,7 +21307,7 @@ var require_fetch = __commonJS({
21307
21307
  const agent = fetchParams.controller.dispatcher;
21308
21308
  const path2 = url.pathname + url.search;
21309
21309
  const hasTrailingQuestionMark = url.search.length === 0 && url.href[url.href.length - url.hash.length - 1] === "?";
21310
- return new Promise((resolve11, reject) => agent.dispatch(
21310
+ return new Promise((resolve10, reject) => agent.dispatch(
21311
21311
  {
21312
21312
  path: hasTrailingQuestionMark ? `${path2}?` : path2,
21313
21313
  origin: url.origin,
@@ -21395,7 +21395,7 @@ var require_fetch = __commonJS({
21395
21395
  }
21396
21396
  }
21397
21397
  const onError = this.onError.bind(this);
21398
- resolve11({
21398
+ resolve10({
21399
21399
  status,
21400
21400
  statusText,
21401
21401
  headersList,
@@ -21448,9 +21448,9 @@ var require_fetch = __commonJS({
21448
21448
  headersList.append(headerName, String(value), true);
21449
21449
  }
21450
21450
  }
21451
- resolve11({
21451
+ resolve10({
21452
21452
  status,
21453
- statusText: STATUS_CODES2[status],
21453
+ statusText: STATUS_CODES3[status],
21454
21454
  headersList,
21455
21455
  socket
21456
21456
  });
@@ -21472,9 +21472,9 @@ var require_fetch = __commonJS({
21472
21472
  headersList.append(nameStr, value.toString("latin1"), true);
21473
21473
  }
21474
21474
  }
21475
- resolve11({
21475
+ resolve10({
21476
21476
  status,
21477
- statusText: STATUS_CODES2[status],
21477
+ statusText: STATUS_CODES3[status],
21478
21478
  headersList,
21479
21479
  socket
21480
21480
  });
@@ -30402,11 +30402,11 @@ var maybeNumber = (s) => {
30402
30402
  const n7 = Number(s);
30403
30403
  return n7 <= Number.MAX_SAFE_INTEGER ? n7 : s;
30404
30404
  };
30405
- var safeNumber = (s, version2, field) => {
30405
+ var safeNumber = (s, version, field) => {
30406
30406
  const n7 = Number(s);
30407
30407
  if (n7 > Number.MAX_SAFE_INTEGER) {
30408
30408
  throw invalidVersion(
30409
- version2,
30409
+ version,
30410
30410
  `invalid ${field}, must be <= ${Number.MAX_SAFE_INTEGER}`
30411
30411
  );
30412
30412
  }
@@ -30419,10 +30419,10 @@ var re2 = {
30419
30419
  build: /\+([0-9a-zA-Z_.-]+)$/,
30420
30420
  full: /^[ v=]*(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([0-9a-zA-Z_.-]+))?(?:\+([0-9a-zA-Z_.-]+))?$/
30421
30421
  };
30422
- var invalidVersion = (version2, message) => {
30422
+ var invalidVersion = (version, message) => {
30423
30423
  const er = syntaxError(
30424
30424
  `invalid version: ${message}`,
30425
- { version: version2 },
30425
+ { version },
30426
30426
  Version
30427
30427
  );
30428
30428
  return er;
@@ -30454,35 +30454,35 @@ var Version = class _Version {
30454
30454
  return `${this.major}.${this.minor}.${this.patch}${this.prerelease ? "-" + this.prerelease.join(".") : ""}${this.build ? "+" + this.build.join(".") : ""}`;
30455
30455
  }
30456
30456
  /** Generate a `Version` object from a SemVer string */
30457
- static parse(version2) {
30458
- version2 = version2.replace(re2.prefix, "").trim();
30459
- if (version2.length > 256) {
30457
+ static parse(version) {
30458
+ version = version.replace(re2.prefix, "").trim();
30459
+ if (version.length > 256) {
30460
30460
  throw invalidVersion(
30461
- version2,
30461
+ version,
30462
30462
  "must be less than 256 characters"
30463
30463
  );
30464
30464
  }
30465
- const parsed = re2.full.exec(version2);
30465
+ const parsed = re2.full.exec(version);
30466
30466
  if (!parsed) {
30467
- const main2 = re2.main.exec(version2);
30467
+ const main2 = re2.main.exec(version);
30468
30468
  if (!main2) {
30469
30469
  throw invalidVersion(
30470
- version2,
30470
+ version,
30471
30471
  "no Major.minor.patch tuple present"
30472
30472
  );
30473
30473
  } else {
30474
30474
  throw invalidVersion(
30475
- version2,
30475
+ version,
30476
30476
  "invalid build or patch section"
30477
30477
  );
30478
30478
  }
30479
30479
  }
30480
30480
  const [_3, major_, minor_, patch_, prerelease, build] = parsed;
30481
- const major2 = safeNumber(major_, version2, "major");
30482
- const minor2 = safeNumber(minor_, version2, "minor");
30483
- const patch = safeNumber(patch_, version2, "patch");
30481
+ const major2 = safeNumber(major_, version, "major");
30482
+ const minor2 = safeNumber(minor_, version, "minor");
30483
+ const patch = safeNumber(patch_, version, "patch");
30484
30484
  return new _Version(
30485
- version2,
30485
+ version,
30486
30486
  major2,
30487
30487
  minor2,
30488
30488
  patch,
@@ -30490,8 +30490,8 @@ var Version = class _Version {
30490
30490
  build
30491
30491
  );
30492
30492
  }
30493
- constructor(version2, major2, minor2, patch, prerelease, build) {
30494
- this.raw = version2;
30493
+ constructor(version, major2, minor2, patch, prerelease, build) {
30494
+ this.raw = version;
30495
30495
  this.major = major2;
30496
30496
  this.minor = minor2;
30497
30497
  this.patch = patch;
@@ -30499,7 +30499,7 @@ var Version = class _Version {
30499
30499
  this.prerelease = fastSplit(prerelease, ".", -1, (c) => {
30500
30500
  if (!c) {
30501
30501
  throw invalidVersion(
30502
- version2,
30502
+ version,
30503
30503
  "invalid prerelease, empty identifiers not allowed"
30504
30504
  );
30505
30505
  }
@@ -30510,7 +30510,7 @@ var Version = class _Version {
30510
30510
  this.build = fastSplit(build, ".", -1, (c) => {
30511
30511
  if (!c) {
30512
30512
  throw invalidVersion(
30513
- version2,
30513
+ version,
30514
30514
  "invalid build metadata, empty identifiers not allowed"
30515
30515
  );
30516
30516
  }
@@ -32141,7 +32141,7 @@ var SpawnPromise = class extends Promise {
32141
32141
  Object.assign(errorResult, extra);
32142
32142
  rej(error("command failed", errorResult));
32143
32143
  };
32144
- const resolve11 = (status, signal) => {
32144
+ const resolve10 = (status, signal) => {
32145
32145
  const stdio = stdioResult(stdout, stderr, opts);
32146
32146
  const successResult = {
32147
32147
  command,
@@ -32162,7 +32162,7 @@ var SpawnPromise = class extends Promise {
32162
32162
  if ((status || signal) && !opts.acceptFail) {
32163
32163
  reject(void 0, status, signal);
32164
32164
  } else {
32165
- resolve11(status, signal);
32165
+ resolve10(status, signal);
32166
32166
  }
32167
32167
  });
32168
32168
  });
@@ -32440,49 +32440,86 @@ var XDG = class {
32440
32440
  };
32441
32441
 
32442
32442
  // ../../src/registry-client/src/index.ts
32443
+ var import_undici3 = __toESM(require_undici(), 1);
32443
32444
  import { randomUUID } from "node:crypto";
32444
- import { readFileSync as readFileSync3 } from "node:fs";
32445
- import { STATUS_CODES } from "node:http";
32445
+ import { readFileSync as readFileSync2 } from "node:fs";
32446
+ import { STATUS_CODES as STATUS_CODES2 } from "node:http";
32446
32447
  import { availableParallelism } from "node:os";
32447
- import { dirname as dirname4, resolve as resolve10 } from "node:path";
32448
+ import { dirname as dirname3, resolve as resolve9 } from "node:path";
32448
32449
  import { setTimeout as setTimeout3 } from "node:timers/promises";
32449
32450
 
32450
- // ../../node_modules/.vlt/~npm~package-json-from-dist@1.0.1/node_modules/package-json-from-dist/dist/esm/index.js
32451
- import { readFileSync as readFileSync2 } from "node:fs";
32452
- import { dirname as dirname2, resolve as resolve9, sep as sep2 } from "node:path";
32453
- import { fileURLToPath } from "node:url";
32454
- var NM = `${sep2}node_modules${sep2}`;
32455
- var STORE = `.store${sep2}`;
32456
- var PKG = `${sep2}package${sep2}`;
32457
- var DIST = `${sep2}dist${sep2}`;
32458
- var findPackageJson = (from, pathFromSrc = "../package.json") => {
32459
- const f = typeof from === "object" || from.startsWith("file://") ? fileURLToPath(from) : from;
32460
- const __dirname = dirname2(f);
32461
- const nms = __dirname.lastIndexOf(NM);
32462
- if (nms !== -1) {
32463
- const nm = __dirname.substring(0, nms + NM.length);
32464
- const pkgDir = __dirname.substring(nms + NM.length);
32465
- if (pkgDir.startsWith(STORE)) {
32466
- const pkg = pkgDir.indexOf(PKG, STORE.length);
32467
- if (pkg) {
32468
- return resolve9(nm, pkgDir.substring(0, pkg + PKG.length), "package.json");
32469
- }
32470
- }
32471
- const pkgName = pkgDir.startsWith("@") ? pkgDir.split(sep2, 2).join(sep2) : String(pkgDir.split(sep2)[0]);
32472
- return resolve9(nm, pkgName, "package.json");
32473
- } else {
32474
- const d4 = __dirname.lastIndexOf(DIST);
32475
- if (d4 !== -1) {
32476
- return resolve9(__dirname.substring(0, d4), "package.json");
32477
- } else {
32478
- return resolve9(__dirname, pathFromSrc);
32451
+ // ../../src/user-agent/package.json
32452
+ var package_default = {
32453
+ name: "@vltpkg/user-agent",
32454
+ description: "The User-Agent string that vlt sends with every outbound request",
32455
+ version: "1.1.1",
32456
+ repository: {
32457
+ type: "git",
32458
+ url: "git+https://github.com/vltpkg/vltpkg.git",
32459
+ directory: "src/user-agent"
32460
+ },
32461
+ author: "vlt technology inc. <support@vlt.sh> (http://vlt.sh)",
32462
+ devDependencies: {
32463
+ "@eslint/js": "catalog:",
32464
+ "@types/node": "catalog:",
32465
+ eslint: "catalog:",
32466
+ prettier: "catalog:",
32467
+ tap: "catalog:",
32468
+ typedoc: "catalog:",
32469
+ typescript: "catalog:",
32470
+ "typescript-eslint": "catalog:"
32471
+ },
32472
+ license: "BSD-2-Clause-Patent",
32473
+ engines: {
32474
+ node: ">=22.22.0"
32475
+ },
32476
+ scripts: {
32477
+ format: "prettier --write . --log-level warn --ignore-path ../../.prettierignore --cache",
32478
+ "format:check": "prettier --check . --ignore-path ../../.prettierignore --cache",
32479
+ lint: "eslint . --fix",
32480
+ "lint:check": "eslint .",
32481
+ prepack: "tsc -p tsconfig.publish.json && ../../scripts/update-dist-exports.ts",
32482
+ snap: "tap",
32483
+ test: "tap",
32484
+ posttest: "tsc --noEmit",
32485
+ typecheck: "tsc --noEmit"
32486
+ },
32487
+ tap: {
32488
+ extends: "../../tap-config.yaml"
32489
+ },
32490
+ prettier: "../../.prettierrc.js",
32491
+ module: "./src/index.ts",
32492
+ type: "module",
32493
+ exports: {
32494
+ "./package.json": "./package.json",
32495
+ ".": {
32496
+ import: {
32497
+ default: "./src/index.ts"
32498
+ }
32479
32499
  }
32480
- }
32500
+ },
32501
+ files: [
32502
+ "dist"
32503
+ ],
32504
+ bugs: {
32505
+ url: "https://github.com/vltpkg/vltpkg/issues"
32506
+ },
32507
+ homepage: "https://github.com/vltpkg/vltpkg/tree/main/src/user-agent#readme"
32481
32508
  };
32482
- var loadPackageJson = (from, pathFromSrc = "../package.json") => JSON.parse(readFileSync2(findPackageJson(from, pathFromSrc), "utf8"));
32483
32509
 
32484
- // ../../src/registry-client/src/index.ts
32485
- var import_undici3 = __toESM(require_undici(), 1);
32510
+ // ../../src/user-agent/src/index.ts
32511
+ var { navigator: nav, process: proc } = globalThis;
32512
+ var versions = proc?.versions ?? {};
32513
+ var isObj = (v3) => typeof v3 === "object" && !!v3;
32514
+ var { Deno, Bun } = globalThis;
32515
+ var isDeno2 = isObj(Deno);
32516
+ var isBun = !isDeno2 && isObj(Bun);
32517
+ var isNode = !isDeno2 && !isBun && "node" in versions;
32518
+ var bun = isBun ? versions.bun : void 0;
32519
+ var deno = isDeno2 ? versions.deno : void 0;
32520
+ var node = isNode ? versions.node : void 0;
32521
+ var runtime = nav?.userAgent ?? (bun ? `Bun/${bun}` : deno ? `Deno/${deno}` : node ? `Node.js/${node}` : "(unknown platform)");
32522
+ var userAgent = `vlt/${package_default.version} ${runtime}`;
32486
32523
 
32487
32524
  // ../../src/registry-client/src/is-iterable.ts
32488
32525
  var isIterable = (o) => !!o && typeof o === "object" && Symbol.iterator in o;
@@ -32490,27 +32527,23 @@ var isIterable = (o) => !!o && typeof o === "object" && Symbol.iterator in o;
32490
32527
  // ../../src/registry-client/src/delete-header.ts
32491
32528
  var deleteHeader = (headers, key) => {
32492
32529
  if (!headers) return {};
32530
+ const lk = key.toLowerCase();
32493
32531
  if (Array.isArray(headers)) {
32494
32532
  if (!headers.length) return headers;
32495
- if (Array.isArray(headers[0])) {
32496
- const index = headers.findIndex(
32497
- ([k4]) => k4.toLowerCase() === key.toLowerCase()
32498
- );
32499
- if (index !== -1) headers.splice(index, 1);
32500
- } else {
32501
- const h = headers;
32502
- for (let i2 = 0; i2 < h.length; i2 += 2) {
32503
- if (h[i2]?.toLowerCase() === key.toLowerCase()) {
32504
- headers.splice(i2, 2);
32505
- break;
32506
- }
32507
- }
32533
+ const step = Array.isArray(headers[0]) ? 1 : 2;
32534
+ for (let i2 = 0; i2 < headers.length; ) {
32535
+ const h = headers[i2];
32536
+ const k4 = Array.isArray(h) ? h[0] : h;
32537
+ if (k4.toLowerCase() === lk) headers.splice(i2, step);
32538
+ else i2 += step;
32508
32539
  }
32509
32540
  return headers;
32510
32541
  } else if (isIterable(headers)) {
32511
32542
  return deleteHeader([...headers], key);
32512
32543
  } else {
32513
- delete headers[key];
32544
+ for (const k4 of Object.keys(headers)) {
32545
+ if (k4.toLowerCase() === lk) delete headers[k4];
32546
+ }
32514
32547
  return headers;
32515
32548
  }
32516
32549
  };
@@ -32535,7 +32568,7 @@ var addHeader = (headers, key, value) => {
32535
32568
 
32536
32569
  // ../../src/keychain/src/index.ts
32537
32570
  import { mkdir as mkdir2, readFile as readFile2, rename as rename3, writeFile as writeFile2 } from "node:fs/promises";
32538
- import { dirname as dirname3 } from "node:path";
32571
+ import { dirname as dirname2 } from "node:path";
32539
32572
  var Keychain = class {
32540
32573
  #data;
32541
32574
  #didExitSave = false;
@@ -32589,7 +32622,7 @@ var Keychain = class {
32589
32622
  return this.#data ? Object.keys(this.#data) : [];
32590
32623
  }
32591
32624
  async #mkdir() {
32592
- await mkdir2(dirname3(this.#file), {
32625
+ await mkdir2(dirname2(this.#file), {
32593
32626
  recursive: true,
32594
32627
  mode: 448
32595
32628
  });
@@ -32681,18 +32714,11 @@ var getTokenByURL = async (requestUrl, identity) => {
32681
32714
  for (const k4 of await kc.keys()) {
32682
32715
  candidates.push(k4);
32683
32716
  }
32684
- let bestKey;
32685
- let bestLen = 0;
32686
- for (const candidate of candidates) {
32687
- if (candidate.length > bestLen && (normalized === candidate || normalized.startsWith(candidate + "/"))) {
32688
- bestKey = candidate;
32689
- bestLen = candidate.length;
32690
- }
32717
+ const matches = candidates.filter((c) => normalized === c || normalized.startsWith(c + "/")).sort((a2, b) => b.length - a2.length);
32718
+ for (const key of matches) {
32719
+ const tok = await getToken(key, identity);
32720
+ if (tok) return tok;
32691
32721
  }
32692
- if (bestKey) {
32693
- return getToken(bestKey, identity);
32694
- }
32695
- return getToken(requestUrl, identity);
32696
32722
  };
32697
32723
 
32698
32724
  // ../../src/registry-client/src/cache-entry.ts
@@ -32941,6 +32967,19 @@ var CacheEntry = class _CacheEntry {
32941
32967
  get statusCode() {
32942
32968
  return this.#statusCode;
32943
32969
  }
32970
+ /**
32971
+ * True when the registry answered with a 2xx.
32972
+ *
32973
+ * `RegistryClient.request()` resolves for every status, so this is how
32974
+ * code holding a real CacheEntry asks "did it work?".
32975
+ *
32976
+ * Note this is the strict form. Use it only where a genuine CacheEntry
32977
+ * is guaranteed; `assertOk` uses the loose range check because it is
32978
+ * also handed duck-typed responses.
32979
+ */
32980
+ get ok() {
32981
+ return this.#statusCode >= 200 && this.#statusCode < 300;
32982
+ }
32944
32983
  get headers() {
32945
32984
  return this.#headers;
32946
32985
  }
@@ -33284,12 +33323,12 @@ var emptyCacheEntry = new CacheEntry(0, [], { contentLength: 0 });
33284
33323
  // ../../src/registry-client/src/cache-revalidate.ts
33285
33324
  import { spawn as spawn3 } from "node:child_process";
33286
33325
  import module2 from "node:module";
33287
- var isDeno2 = globalThis.Deno != void 0;
33326
+ var isDeno3 = globalThis.Deno != void 0;
33288
33327
  var didProcessBeforeExitHook2 = false;
33289
33328
  var registered2 = /* @__PURE__ */ new Map();
33290
- var register2 = (path2, method, url) => {
33329
+ var register2 = (path2, method, url, accept) => {
33291
33330
  const r = registered2.get(path2) ?? /* @__PURE__ */ new Set();
33292
- const key = `${method} ${url}`;
33331
+ const key = `${method} ${url}${accept ? ` ${String(accept)}` : ""}`;
33293
33332
  r.add(key);
33294
33333
  registered2.set(path2, r);
33295
33334
  if (!didProcessBeforeExitHook2) {
@@ -33304,7 +33343,7 @@ var handleBeforeExit2 = () => {
33304
33343
  const env = { ...process.env };
33305
33344
  if (compileCacheDir) env.NODE_COMPILE_CACHE ??= compileCacheDir;
33306
33345
  const args = [];
33307
- if (isDeno2) {
33346
+ if (isDeno3) {
33308
33347
  args.push(
33309
33348
  "--unstable-node-globals",
33310
33349
  "--unstable-bare-node-builtins"
@@ -33312,7 +33351,7 @@ var handleBeforeExit2 = () => {
33312
33351
  }
33313
33352
  args.push(__CODE_SPLIT_SCRIPT_NAME2, path2);
33314
33353
  registered2.delete(path2);
33315
- const detached = !(isDeno2 && process.platform === "win32");
33354
+ const detached = !(isDeno3 && process.platform === "win32");
33316
33355
  const proc3 = spawn3(process.execPath, args, {
33317
33356
  detached,
33318
33357
  stdio: ["pipe", "ignore", "ignore"],
@@ -33328,16 +33367,32 @@ var handleBeforeExit2 = () => {
33328
33367
  }
33329
33368
  };
33330
33369
 
33331
- // ../../src/registry-client/src/env.ts
33332
- import proc from "node:process";
33333
- var { Deno, Bun } = globalThis;
33334
- var isObj = (v3) => typeof v3 === "object" && !!v3;
33335
- var isDeno3 = isObj(Deno);
33336
- var isBun = !isDeno3 && isObj(Bun);
33337
- var isNode = !isDeno3 && !isBun && "node" in proc.versions;
33338
- var bun = isBun ? proc.versions.bun : void 0;
33339
- var deno = isDeno3 ? proc.versions.deno : void 0;
33340
- var node = isNode ? proc.versions.node : void 0;
33370
+ // ../../src/registry-client/src/get-header.ts
33371
+ var isIterable2 = (o) => !!o && typeof o === "object" && Symbol.iterator in o;
33372
+ var getHeader = (headers, key) => {
33373
+ if (!headers) return void 0;
33374
+ key = key.toLowerCase();
33375
+ if (Array.isArray(headers)) {
33376
+ if (!headers.length) return void 0;
33377
+ if (Array.isArray(headers[0])) {
33378
+ for (const [k4, v3] of headers) {
33379
+ if (k4.toLowerCase() === key) return v3;
33380
+ }
33381
+ } else if (headers.length % 2 === 0) {
33382
+ for (let i2 = 0; i2 < headers.length; i2 += 2) {
33383
+ if (headers[i2]?.toLowerCase() === key) return headers[i2 + 1];
33384
+ }
33385
+ }
33386
+ } else if (isIterable2(headers)) {
33387
+ for (const [k4, v3] of headers) {
33388
+ if (k4.toLowerCase() === key) return v3;
33389
+ }
33390
+ } else {
33391
+ for (const [k4, v3] of Object.entries(headers)) {
33392
+ if (k4.toLowerCase() === key) return v3;
33393
+ }
33394
+ }
33395
+ };
33341
33396
 
33342
33397
  // ../../src/registry-client/src/handle-304-response.ts
33343
33398
  var handleCacheHitResponse = (resp, entry) => {
@@ -33387,6 +33442,9 @@ var otplease = async (client, options, response) => {
33387
33442
  );
33388
33443
  if (wwwAuth.has("ipaddress")) {
33389
33444
  throw error("Authorization is not allowed from your ip address", {
33445
+ code: "ENEEDAUTH",
33446
+ status: response.statusCode,
33447
+ method: options.method,
33390
33448
  response
33391
33449
  });
33392
33450
  }
@@ -33419,17 +33477,30 @@ var otplease = async (client, options, response) => {
33419
33477
  }
33420
33478
  }
33421
33479
  throw error("Unrecognized OTP authentication challenge", {
33480
+ code: "ENEEDAUTH",
33481
+ status: response.statusCode,
33482
+ method: options.method,
33422
33483
  response
33423
33484
  });
33424
33485
  }
33425
33486
  if (wwwAuth.has("bearer")) {
33426
33487
  throw error(
33427
33488
  "Missing or invalid authentication token. Run `vlt login` or `vlt token add` to authenticate.",
33428
- { response }
33489
+ {
33490
+ code: "ENEEDAUTH",
33491
+ status: response.statusCode,
33492
+ method: options.method,
33493
+ response
33494
+ }
33429
33495
  );
33430
33496
  }
33431
33497
  if (wwwAuth.size) {
33432
- throw error("Unknown authentication challenge", { response });
33498
+ throw error("Unknown authentication challenge", {
33499
+ code: "ENEEDAUTH",
33500
+ status: response.statusCode,
33501
+ method: options.method,
33502
+ response
33503
+ });
33433
33504
  }
33434
33505
  const text = await responseBodyText(response).catch(() => "");
33435
33506
  if (text.toLowerCase().includes("one-time pass")) {
@@ -33479,6 +33550,12 @@ var redirect = (options, response, from) => {
33479
33550
  };
33480
33551
  delete nextOptions.path;
33481
33552
  redirections.add(String(nextURL));
33553
+ if (nextURL.origin !== from.origin) {
33554
+ nextOptions.headers = deleteHeader(
33555
+ nextOptions.headers,
33556
+ "authorization"
33557
+ );
33558
+ }
33482
33559
  switch (response.statusCode) {
33483
33560
  case 303: {
33484
33561
  nextOptions.method = "GET";
@@ -33494,6 +33571,68 @@ var redirect = (options, response, from) => {
33494
33571
  }
33495
33572
  };
33496
33573
 
33574
+ // ../../src/registry-client/src/registry-error.ts
33575
+ import { STATUS_CODES } from "node:http";
33576
+ var MAX_DETAIL_LENGTH = 512;
33577
+ var truncate = (s) => s.length <= MAX_DETAIL_LENGTH ? s : `${s.slice(0, MAX_DETAIL_LENGTH - 1)}\u2026`;
33578
+ var isHTML = (s) => /^\s*(<!doctype\s+html|<html\b)/i.test(s);
33579
+ var stripTags = (s) => s.replace(/<(script|style)\b[^>]*>[\s\S]*?<\/\1>/gi, " ").replace(/<[^>]*>/g, " ").replace(/\s+/g, " ").trim();
33580
+ var detailFromJSON = (text) => {
33581
+ let body;
33582
+ try {
33583
+ body = JSON.parse(text);
33584
+ } catch {
33585
+ return void 0;
33586
+ }
33587
+ if (!body || typeof body !== "object") return void 0;
33588
+ const rec = body;
33589
+ const nested = rec.error;
33590
+ for (const v3 of [rec.error, rec.message, nested?.message]) {
33591
+ if (typeof v3 === "string" && v3.trim()) return v3.trim();
33592
+ }
33593
+ return void 0;
33594
+ };
33595
+ var registryErrorMessage = (response) => {
33596
+ const statusMessage = STATUS_CODES[response.statusCode];
33597
+ const status = `${response.statusCode}${statusMessage ? ` ${statusMessage}` : ""}`;
33598
+ let text;
33599
+ try {
33600
+ text = response.text?.().trim() ?? "";
33601
+ } catch {
33602
+ return status;
33603
+ }
33604
+ if (!text) return status;
33605
+ const detail = detailFromJSON(text) ?? (isHTML(text) ? stripTags(text) : text);
33606
+ return detail ? `${status} \u2014 ${truncate(detail)}` : status;
33607
+ };
33608
+ var registryError = (response, { message, url, method = "GET", advice }, from, cause) => {
33609
+ const { statusCode } = response;
33610
+ const denied = statusCode === 401 || statusCode === 403;
33611
+ const extra = advice?.(statusCode);
33612
+ const tips = (Array.isArray(extra) ? extra : [extra]).filter(
33613
+ (t) => !!t
33614
+ );
33615
+ const warn = tips.map((t) => `
33616
+ \u26A0\uFE0F ${t}`).join("");
33617
+ return error(
33618
+ `${message}: ${registryErrorMessage(response)}${warn}`,
33619
+ {
33620
+ code: denied ? "ENEEDAUTH" : "EREQUEST",
33621
+ url,
33622
+ method,
33623
+ status: statusCode,
33624
+ response,
33625
+ ...cause === void 0 ? {} : { cause: asError(cause) }
33626
+ },
33627
+ from
33628
+ );
33629
+ };
33630
+ var assertOk = (response, options) => {
33631
+ const { statusCode } = response;
33632
+ if (!(statusCode < 200 || statusCode >= 300)) return;
33633
+ throw registryError(response, options, assertOk);
33634
+ };
33635
+
33497
33636
  // ../../src/registry-client/src/set-cache-headers.ts
33498
33637
  var setCacheHeaders = (options, entry) => {
33499
33638
  if (!entry) return;
@@ -33551,12 +33690,6 @@ var import_undici2 = __toESM(require_undici(), 1);
33551
33690
  var log3 = (msg) => console.error(msg);
33552
33691
  var isCacheableMethod = (m2) => m2 === "GET" || m2 === "HEAD";
33553
33692
  var cacheKey = (method, url) => `${method !== "GET" ? method + " " : ""}${url}`;
33554
- var { version } = loadPackageJson(
33555
- import.meta.filename,
33556
- "registry-client-package.json"
33557
- );
33558
- var nua = globalThis.navigator?.userAgent ?? (bun ? `Bun/${bun}` : deno ? `Deno/${deno}` : node ? `Node.js/${node}` : "(unknown platform)");
33559
- var userAgent = `@vltpkg/registry-client/${version} ${nua}`;
33560
33693
  var agentOptions = {
33561
33694
  bodyTimeout: 6e5,
33562
33695
  headersTimeout: 6e5,
@@ -33601,7 +33734,7 @@ var RegistryClient = class {
33601
33734
  } = options;
33602
33735
  this.identity = identity;
33603
33736
  this.staleWhileRevalidateFactor = staleWhileRevalidateFactor;
33604
- const path2 = resolve10(cache, "registry-client");
33737
+ const path2 = resolve9(cache, "registry-client");
33605
33738
  this.cache = new Cache({
33606
33739
  path: path2,
33607
33740
  maxSize: parseCacheMaxSize(process.env.VLT_CACHE_MAX_SIZE),
@@ -33635,7 +33768,40 @@ var RegistryClient = class {
33635
33768
  */
33636
33769
  async scroll(url, options = {}, seek) {
33637
33770
  const resp = await this.request(url, options);
33638
- const { objects, urls } = resp.json();
33771
+ const { statusCode } = resp;
33772
+ if (statusCode < 200 || statusCode >= 300) {
33773
+ let detail;
33774
+ try {
33775
+ const body2 = resp.json();
33776
+ if (body2 && typeof body2 === "object" && "error" in body2) {
33777
+ detail = body2.error;
33778
+ }
33779
+ } catch {
33780
+ }
33781
+ const status = STATUS_CODES2[statusCode];
33782
+ throw error(
33783
+ `Failed to fetch paginated results: ${statusCode}${status ? ` ${status}` : ""}${typeof detail === "string" && detail ? `: ${detail}` : ""}`,
33784
+ { code: "EREQUEST", status: statusCode, url: String(url) }
33785
+ );
33786
+ }
33787
+ let body;
33788
+ try {
33789
+ body = resp.json();
33790
+ } catch (cause) {
33791
+ throw error("Invalid JSON in paginated registry response", {
33792
+ code: "EREQUEST",
33793
+ url: String(url),
33794
+ cause
33795
+ });
33796
+ }
33797
+ if (!body || typeof body !== "object" || !("objects" in body) || !Array.isArray(body.objects) || !("urls" in body) || !body.urls || typeof body.urls !== "object" || Array.isArray(body.urls) || "next" in body.urls && body.urls.next !== null && body.urls.next !== void 0 && typeof body.urls.next !== "string") {
33798
+ throw error("Invalid pagination in registry response", {
33799
+ code: "EREQUEST",
33800
+ url: String(url)
33801
+ });
33802
+ }
33803
+ const objects = body.objects;
33804
+ const urls = body.urls;
33639
33805
  return urls.next && !(seek && objects.some(seek)) ? objects.concat(await this.scroll(urls.next, options, seek)) : objects;
33640
33806
  }
33641
33807
  /**
@@ -33654,17 +33820,41 @@ var RegistryClient = class {
33654
33820
  const s = tok.replace(/^(Bearer|Basic) /i, "");
33655
33821
  const base = registryBase(registry);
33656
33822
  const tokensUrl = new URL("-/npm/v1/tokens", base);
33657
- const record = await this.seek(tokensUrl, ({ token }) => s.startsWith(token), {
33658
- useCache: false
33659
- }).catch(() => void 0);
33660
- if (record) {
33661
- const { key } = record;
33662
- await this.request(
33663
- new URL(`-/npm/v1/tokens/token/${key}`, base),
33664
- { useCache: false, method: "DELETE" }
33665
- );
33823
+ const stillLive = `Removing the local credential anyway; revoke the token in the registry UI if it is still live.`;
33824
+ try {
33825
+ let record;
33826
+ try {
33827
+ record = await this.seek(tokensUrl, ({ token }) => s.startsWith(token), {
33828
+ useCache: false
33829
+ });
33830
+ } catch (er) {
33831
+ log3(
33832
+ `Could not list tokens at ${tokensUrl}: ${asError(er).message}
33833
+ ` + stillLive
33834
+ );
33835
+ }
33836
+ if (record) {
33837
+ const deleteUrl = new URL(
33838
+ `-/npm/v1/tokens/token/${record.key}`,
33839
+ base
33840
+ );
33841
+ const failed = (detail) => log3(
33842
+ `Failed to revoke the token on the registry: ${detail}
33843
+ ` + stillLive
33844
+ );
33845
+ try {
33846
+ const response = await this.request(deleteUrl, {
33847
+ useCache: false,
33848
+ method: "DELETE"
33849
+ });
33850
+ if (!response.ok) failed(registryErrorMessage(response));
33851
+ } catch (er) {
33852
+ failed(asError(er).message);
33853
+ }
33854
+ }
33855
+ } finally {
33856
+ await deleteToken(registry, this.identity);
33666
33857
  }
33667
- await deleteToken(registry, this.identity);
33668
33858
  }
33669
33859
  /**
33670
33860
  * Log into the registry specified.
@@ -33705,7 +33895,7 @@ var RegistryClient = class {
33705
33895
  }
33706
33896
  }
33707
33897
  const { statusCode } = response;
33708
- const status = STATUS_CODES[statusCode];
33898
+ const status = STATUS_CODES2[statusCode];
33709
33899
  throw error(
33710
33900
  `Failed to perform web login: ${statusCode}${status ? ` ${status}` : ""}`,
33711
33901
  {
@@ -33768,11 +33958,19 @@ var RegistryClient = class {
33768
33958
  }
33769
33959
  return await this.#checkLogin(url, options);
33770
33960
  }
33961
+ assertOk(response, {
33962
+ message: "Web login failed",
33963
+ url,
33964
+ advice: (statusCode) => statusCode === 404 ? "This registry does not implement the web login endpoint." : void 0
33965
+ });
33771
33966
  if (response.statusCode === 200) {
33772
33967
  const token = getTokenResponse(response.json());
33773
33968
  if (token) return token;
33774
33969
  }
33775
33970
  throw error("Invalid response from web login endpoint", {
33971
+ code: "EREQUEST",
33972
+ url,
33973
+ status: response.statusCode,
33776
33974
  response
33777
33975
  });
33778
33976
  }
@@ -33808,7 +34006,7 @@ var RegistryClient = class {
33808
34006
  for (const path2 of paths) {
33809
34007
  let buf;
33810
34008
  try {
33811
- buf = readFileSync3(path2);
34009
+ buf = readFileSync2(path2);
33812
34010
  } catch {
33813
34011
  continue;
33814
34012
  }
@@ -33846,13 +34044,19 @@ var RegistryClient = class {
33846
34044
  }
33847
34045
  const forcedFallback = forceRevalidate && entry?.staleWhileRevalidate ? entry : void 0;
33848
34046
  if (!forceRevalidate && staleWhileRevalidate && entry?.staleWhileRevalidate && m2) {
33849
- register2(dirname4(this.cache.path()), m2, url);
34047
+ register2(
34048
+ dirname3(this.cache.path()),
34049
+ m2,
34050
+ url,
34051
+ getHeader(options.headers, "accept")
34052
+ );
33850
34053
  logRequest(url, "stale", { method });
33851
34054
  return entry;
33852
34055
  }
33853
34056
  logRequest(url, "start", { method });
33854
34057
  const requestStart = Date.now();
33855
34058
  setCacheHeaders(options, entry);
34059
+ const redirected = redirections.size > 0;
33856
34060
  redirections.add(String(url));
33857
34061
  options.path = u2.pathname.replace(/\/+$/, "") + u2.search;
33858
34062
  options.origin = u2.origin;
@@ -33880,11 +34084,13 @@ var RegistryClient = class {
33880
34084
  );
33881
34085
  }
33882
34086
  options.method = options.method ?? "GET";
33883
- options.headers = addHeader(
33884
- options.headers,
33885
- "authorization",
33886
- await getTokenByURL(String(u2), this.identity)
33887
- );
34087
+ if (!redirected || !getHeader(options.headers, "authorization")) {
34088
+ options.headers = addHeader(
34089
+ options.headers,
34090
+ "authorization",
34091
+ await getTokenByURL(String(u2), this.identity)
34092
+ );
34093
+ }
33888
34094
  let response = null;
33889
34095
  try {
33890
34096
  response = await this.agent.request(
@@ -34017,7 +34223,7 @@ var readHead = async (fh) => {
34017
34223
  const entry = CacheEntry.decodeHead(headBuf);
34018
34224
  return entry.statusCode ? entry : void 0;
34019
34225
  };
34020
- var revalidateEntry = async (rc, method, url) => {
34226
+ var revalidateEntry = async (rc, method, url, accept) => {
34021
34227
  try {
34022
34228
  const u2 = typeof url === "string" ? new URL(url) : url;
34023
34229
  const key = cacheKey(method, u2);
@@ -34046,6 +34252,9 @@ var revalidateEntry = async (rc, method, url) => {
34046
34252
  "npm-session",
34047
34253
  randomUUID2()
34048
34254
  );
34255
+ if (accept) {
34256
+ options.headers = addHeader(options.headers, "accept", accept);
34257
+ }
34049
34258
  setCacheHeaders(options, entry);
34050
34259
  options.headers = addHeader(
34051
34260
  options.headers,
@@ -34109,6 +34318,13 @@ var revalidateConcurrency = (raw) => {
34109
34318
  const n7 = Number(raw);
34110
34319
  return Number.isFinite(n7) && n7 >= 1 ? Math.min(32, Math.floor(n7)) : defaultConcurrency;
34111
34320
  };
34321
+ var parseReq = (line) => {
34322
+ const method = line.startsWith("GET ") ? "GET" : line.startsWith("HEAD ") ? "HEAD" : void 0;
34323
+ if (!method) return void 0;
34324
+ const rest = line.substring(method.length + 1);
34325
+ const sp = rest.indexOf(" ");
34326
+ return sp === -1 ? [method, new URL(rest), void 0] : [method, new URL(rest.substring(0, sp)), rest.substring(sp + 1)];
34327
+ };
34112
34328
  var runPool = async (reqs, concurrency, fn) => {
34113
34329
  let next = 0;
34114
34330
  const n7 = Math.min(concurrency, reqs.length);
@@ -34119,7 +34335,7 @@ var runPool = async (reqs, concurrency, fn) => {
34119
34335
  if (i2 >= reqs.length) return;
34120
34336
  const req = reqs[i2];
34121
34337
  if (req === void 0) return;
34122
- await fn(req[0], req[1]);
34338
+ await fn(...req);
34123
34339
  }
34124
34340
  })
34125
34341
  );
@@ -34136,14 +34352,7 @@ var main = async (cache, input = process.stdin) => {
34136
34352
  chunkLen += chunk.length;
34137
34353
  });
34138
34354
  input.on("end", () => {
34139
- const reqs2 = Buffer.concat(
34140
- chunks,
34141
- chunkLen
34142
- ).toString().split("\0").filter(
34143
- (i2) => !!i2 && (i2.startsWith("GET ") || i2.startsWith("HEAD "))
34144
- ).map(
34145
- (i2) => i2.startsWith("GET ") ? ["GET", new URL(i2.substring("GET ".length))] : ["HEAD", new URL(i2.substring("HEAD ".length))]
34146
- );
34355
+ const reqs2 = Buffer.concat(chunks, chunkLen).toString().split("\0").map(parseReq).filter((req) => req !== void 0);
34147
34356
  res(reqs2);
34148
34357
  });
34149
34358
  });
@@ -34154,7 +34363,7 @@ var main = async (cache, input = process.stdin) => {
34154
34363
  await runPool(
34155
34364
  reqs,
34156
34365
  revalidateConcurrency(process.env.VLT_REVALIDATE_CONCURRENCY),
34157
- (method, url) => revalidateEntry(rc, method, url)
34366
+ (method, url, accept) => revalidateEntry(rc, method, url, accept)
34158
34367
  );
34159
34368
  return true;
34160
34369
  };