@vltpkg/cli-js 1.1.1 → 1.3.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 (85) hide show
  1. package/{access-YYMAAPHV.js → access-HIVJOWXZ.js} +10 -10
  2. package/{bugs-RK5JBPSC.js → bugs-2KFUYMPS.js} +19 -19
  3. package/{build-DVJSYCNF.js → build-CX6YZ4LS.js} +12 -12
  4. package/{cache-JKQNGZ7L.js → cache-I6L5ZRGD.js} +145 -16
  5. package/cache-unzip-src-unzip.js +2953 -164
  6. package/{src-MOKZQTH2.js → chunk-263MHLR3.js} +299 -43
  7. package/{chunk-3LUM7NX5.js → chunk-2HXJ4ZSF.js} +3 -3
  8. package/{chunk-GDJ7JT2R.js → chunk-33HBY5CF.js} +1 -1
  9. package/{chunk-MZA6N2TA.js → chunk-C6LK7C3L.js} +4 -4
  10. package/{chunk-34TE4HZS.js → chunk-CU752KW7.js} +2 -2
  11. package/{chunk-2PWSMJD7.js → chunk-D2LEK7VS.js} +1 -1
  12. package/{chunk-CEHPRPGQ.js → chunk-ENSGPOLR.js} +46 -0
  13. package/{chunk-V4YCZZHY.js → chunk-EP7AVBIO.js} +16 -8
  14. package/{chunk-DS7YMIHP.js → chunk-FHMIECHI.js} +158 -59
  15. package/chunk-GDV5LSQ2.js +75 -0
  16. package/{chunk-BWEH7DHQ.js → chunk-HCZOVC3Y.js} +1 -1
  17. package/{chunk-CBASIDQH.js → chunk-I6QGYSB4.js} +1 -1
  18. package/{chunk-KDF7PEBY.js → chunk-ILRJWH6A.js} +5 -5
  19. package/{chunk-JZJWASXL.js → chunk-J2WL3A3C.js} +134 -68
  20. package/{chunk-YOE3VZFX.js → chunk-J3R4XWB3.js} +2 -2
  21. package/{chunk-DF5K4CYR.js → chunk-JFHEXCG5.js} +5 -5
  22. package/{chunk-LR42WTKN.js → chunk-MJWUULO6.js} +14 -12
  23. package/{chunk-QQYTPGIL.js → chunk-N4RCKCHY.js} +1 -1
  24. package/{chunk-X2AWQGYG.js → chunk-P4LLYWCG.js} +112 -23
  25. package/{chunk-BHJT53TP.js → chunk-PDWPFR5T.js} +1 -1
  26. package/{chunk-XIF734VO.js → chunk-QETVMIIT.js} +4 -4
  27. package/{chunk-WE2TQN32.js → chunk-QWJDHBV7.js} +4 -3
  28. package/{chunk-VFBCWAOC.js → chunk-RH2Y7MPW.js} +29 -0
  29. package/{chunk-LN2A74PF.js → chunk-SVMH3NDM.js} +277 -50
  30. package/{chunk-DR4Z63B6.js → chunk-TYLYZKVA.js} +14 -11
  31. package/{chunk-XKVU23NC.js → chunk-V7EQZOO5.js} +1 -1
  32. package/{chunk-YBVTY6ZW.js → chunk-VBADA6QU.js} +1 -1
  33. package/{chunk-GDT6KI4I.js → chunk-W6UMN2YJ.js} +4 -4
  34. package/{chunk-VE6CCH33.js → chunk-Y5PA7DVK.js} +1 -0
  35. package/{chunk-6FT6K5YN.js → chunk-YZWFWSY7.js} +25 -7
  36. package/{chunk-SNOBGFNM.js → chunk-ZNUXDX6R.js} +50 -8
  37. package/{ci-WVYVR4XK.js → ci-BX54SEU3.js} +12 -12
  38. package/cli-package.json +3 -2
  39. package/{config-VYOTYBGS.js → config-HFF6XDCV.js} +9 -9
  40. package/{config-2MFZVP2N.js → config-WBVJX42R.js} +12 -12
  41. package/{create-OJPLHBRR.js → create-W67HRHWZ.js} +20 -20
  42. package/{deprecate-V4PKGFF7.js → deprecate-5T6JTGJ3.js} +14 -14
  43. package/{devtools-UEMPW5GG.js → devtools-UMJUK42W.js} +2 -2
  44. package/{dist-tag-DNLV4VDE.js → dist-tag-YIZTS7GF.js} +10 -10
  45. package/{docs-LXHDCGL5.js → docs-G7CKMPCL.js} +19 -19
  46. package/{exec-P32YSP44.js → exec-YYCAZZ6Z.js} +20 -20
  47. package/{exec-cache-JZ5PDTOY.js → exec-cache-6ENHAGC6.js} +18 -18
  48. package/{exec-local-HHA464H4.js → exec-local-OXG3PSLF.js} +17 -17
  49. package/{help-GVTTOYUL.js → help-RMOIAILM.js} +4 -4
  50. package/{init-RENGG74N.js → init-UPEQXC4D.js} +12 -12
  51. package/{install-V6VXOBH2.js → install-U7LLEQU6.js} +18 -18
  52. package/{list-7N7Y5OXB.js → list-N6CKPXTK.js} +20 -20
  53. package/{login-D2QSAUJC.js → login-MCO4ZLVF.js} +14 -14
  54. package/{logout-QPOYBQNF.js → logout-BJ4QRZYG.js} +10 -10
  55. package/{pack-4YYGXP3A.js → pack-U6PYRFZ6.js} +13 -13
  56. package/package.json +1 -1
  57. package/{ping-QYRIZONU.js → ping-VFB6SCMH.js} +10 -10
  58. package/{pkg-WQTNABKT.js → pkg-ZNK5SCF4.js} +13 -13
  59. package/{profile-PRI7WXK7.js → profile-TW32HLYA.js} +10 -10
  60. package/{publish-PSBYJQS7.js → publish-AHOITWZQ.js} +36 -21
  61. package/{query-UFYLQW4N.js → query-KKP5PNSQ.js} +20 -20
  62. package/{registry-YTJZ3AQD.js → registry-VHB65BWD.js} +5 -5
  63. package/registry-client-src-revalidate.js +5936 -5801
  64. package/{repo-4S6ETFXX.js → repo-BHTVK5KE.js} +19 -19
  65. package/{reporter-GLWYHI2Y.js → reporter-VQU7HYKM.js} +77 -77
  66. package/{run-OU7NUB7A.js → run-UD32OTUJ.js} +17 -17
  67. package/{run-exec-QPBY7ULE.js → run-exec-NOCIUNGL.js} +17 -17
  68. package/security-archive-src-update-expired.js +1 -1
  69. package/{setup-23QXG473.js → setup-PBCWOSTV.js} +18 -18
  70. package/{src-575IYJOL.js → src-LRKPUV4J.js} +16 -16
  71. package/src-T5FBZFMV.js +222 -0
  72. package/{src-3GN7TDNH.js → src-Z44JKVWS.js} +9 -7
  73. package/{token-FCIA3RGD.js → token-PCPB6NOL.js} +10 -10
  74. package/{uninstall-BQVZVKB5.js → uninstall-LOGSQXFS.js} +14 -14
  75. package/{unpublish-YGJ5HEYF.js → unpublish-O3UFCTEJ.js} +10 -10
  76. package/{update-WCGV66JK.js → update-WBCLWGLN.js} +17 -17
  77. package/{version-7EA3UQG7.js → version-S3LCB2TQ.js} +13 -13
  78. package/{view-5FWIENVE.js → view-LMPENVAJ.js} +12 -12
  79. package/vlr.js +1 -1
  80. package/vlrx.js +1 -1
  81. package/vlt.js +1 -1
  82. package/vlx.js +1 -1
  83. package/vlxl.js +1 -1
  84. package/{whoami-O4ZTBIC4.js → whoami-LYMG7R3P.js} +10 -10
  85. package/chunk-WD74RJXW.js +0 -75
@@ -11,25 +11,25 @@ import {createRequire as _vlt_createRequire} from "node:module";
11
11
  var require = _vlt_createRequire(import.meta.filename);
12
12
  import {
13
13
  resolveRegistry
14
- } from "./chunk-2PWSMJD7.js";
14
+ } from "./chunk-D2LEK7VS.js";
15
15
  import {
16
16
  commandUsage
17
- } from "./chunk-CBASIDQH.js";
18
- import "./chunk-XKVU23NC.js";
19
- import "./chunk-CEHPRPGQ.js";
17
+ } from "./chunk-I6QGYSB4.js";
18
+ import "./chunk-V7EQZOO5.js";
19
+ import "./chunk-ENSGPOLR.js";
20
20
  import {
21
21
  RegistryClient
22
- } from "./chunk-DS7YMIHP.js";
22
+ } from "./chunk-FHMIECHI.js";
23
23
  import "./chunk-APMYKJI2.js";
24
24
  import {
25
25
  assertOk
26
- } from "./chunk-SNOBGFNM.js";
27
- import "./chunk-YBVTY6ZW.js";
26
+ } from "./chunk-ZNUXDX6R.js";
27
+ import "./chunk-VBADA6QU.js";
28
28
  import "./chunk-U7TEQCBN.js";
29
- import "./chunk-VFBCWAOC.js";
30
29
  import "./chunk-XNLSTHDK.js";
31
- import "./chunk-BHJT53TP.js";
32
- import "./chunk-VE6CCH33.js";
30
+ import "./chunk-PDWPFR5T.js";
31
+ import "./chunk-Y5PA7DVK.js";
32
+ import "./chunk-RH2Y7MPW.js";
33
33
  import {
34
34
  error
35
35
  } from "./chunk-WZWDS3W4.js";
@@ -14,46 +14,46 @@ import {
14
14
  } from "./chunk-CLVRCGOZ.js";
15
15
  import {
16
16
  openUrl
17
- } from "./chunk-BWEH7DHQ.js";
17
+ } from "./chunk-HCZOVC3Y.js";
18
18
  import {
19
19
  createHostContextsMap
20
- } from "./chunk-3LUM7NX5.js";
21
- import "./chunk-LR42WTKN.js";
22
- import "./chunk-34TE4HZS.js";
20
+ } from "./chunk-2HXJ4ZSF.js";
21
+ import "./chunk-MJWUULO6.js";
22
+ import "./chunk-CU752KW7.js";
23
23
  import "./chunk-G2YT2GWF.js";
24
- import "./chunk-GDJ7JT2R.js";
24
+ import "./chunk-33HBY5CF.js";
25
25
  import {
26
26
  PackageInfoClient
27
- } from "./chunk-LN2A74PF.js";
27
+ } from "./chunk-SVMH3NDM.js";
28
28
  import "./chunk-ZWKI5OSF.js";
29
29
  import "./chunk-WGDTG44V.js";
30
- import "./chunk-2PWSMJD7.js";
30
+ import "./chunk-D2LEK7VS.js";
31
31
  import {
32
32
  Query,
33
33
  actual
34
- } from "./chunk-JZJWASXL.js";
34
+ } from "./chunk-J2WL3A3C.js";
35
35
  import {
36
36
  SecurityArchive
37
- } from "./chunk-DF5K4CYR.js";
37
+ } from "./chunk-JFHEXCG5.js";
38
38
  import {
39
39
  commandUsage
40
- } from "./chunk-CBASIDQH.js";
41
- import "./chunk-X2AWQGYG.js";
40
+ } from "./chunk-I6QGYSB4.js";
41
+ import "./chunk-P4LLYWCG.js";
42
42
  import "./chunk-4KCU2KZL.js";
43
- import "./chunk-YOE3VZFX.js";
43
+ import "./chunk-J3R4XWB3.js";
44
44
  import {
45
45
  Spec
46
- } from "./chunk-XKVU23NC.js";
47
- import "./chunk-CEHPRPGQ.js";
46
+ } from "./chunk-V7EQZOO5.js";
47
+ import "./chunk-ENSGPOLR.js";
48
48
  import "./chunk-HTOTG4TS.js";
49
49
  import "./chunk-APMYKJI2.js";
50
- import "./chunk-SNOBGFNM.js";
51
- import "./chunk-YBVTY6ZW.js";
50
+ import "./chunk-ZNUXDX6R.js";
51
+ import "./chunk-VBADA6QU.js";
52
52
  import "./chunk-U7TEQCBN.js";
53
- import "./chunk-VFBCWAOC.js";
54
53
  import "./chunk-XNLSTHDK.js";
55
- import "./chunk-BHJT53TP.js";
56
- import "./chunk-VE6CCH33.js";
54
+ import "./chunk-PDWPFR5T.js";
55
+ import "./chunk-Y5PA7DVK.js";
56
+ import "./chunk-RH2Y7MPW.js";
57
57
  import {
58
58
  error
59
59
  } from "./chunk-WZWDS3W4.js";
@@ -11,24 +11,24 @@ import {createRequire as _vlt_createRequire} from "node:module";
11
11
  var require = _vlt_createRequire(import.meta.filename);
12
12
  import {
13
13
  build
14
- } from "./chunk-JZJWASXL.js";
15
- import "./chunk-DF5K4CYR.js";
14
+ } from "./chunk-J2WL3A3C.js";
15
+ import "./chunk-JFHEXCG5.js";
16
16
  import {
17
17
  commandUsage
18
- } from "./chunk-CBASIDQH.js";
19
- import "./chunk-X2AWQGYG.js";
20
- import "./chunk-YOE3VZFX.js";
21
- import "./chunk-XKVU23NC.js";
22
- import "./chunk-CEHPRPGQ.js";
18
+ } from "./chunk-I6QGYSB4.js";
19
+ import "./chunk-P4LLYWCG.js";
20
+ import "./chunk-J3R4XWB3.js";
21
+ import "./chunk-V7EQZOO5.js";
22
+ import "./chunk-ENSGPOLR.js";
23
23
  import "./chunk-HTOTG4TS.js";
24
- import "./chunk-YBVTY6ZW.js";
24
+ import "./chunk-VBADA6QU.js";
25
25
  import "./chunk-U7TEQCBN.js";
26
+ import "./chunk-XNLSTHDK.js";
27
+ import "./chunk-PDWPFR5T.js";
28
+ import "./chunk-Y5PA7DVK.js";
26
29
  import {
27
30
  isErrorWithCause
28
- } from "./chunk-VFBCWAOC.js";
29
- import "./chunk-XNLSTHDK.js";
30
- import "./chunk-BHJT53TP.js";
31
- import "./chunk-VE6CCH33.js";
31
+ } from "./chunk-RH2Y7MPW.js";
32
32
  import {
33
33
  error
34
34
  } from "./chunk-WZWDS3W4.js";
@@ -15,43 +15,56 @@ import {
15
15
  import {
16
16
  stderr,
17
17
  stdout
18
- } from "./chunk-LR42WTKN.js";
19
- import "./chunk-34TE4HZS.js";
18
+ } from "./chunk-MJWUULO6.js";
19
+ import "./chunk-CU752KW7.js";
20
20
  import "./chunk-G2YT2GWF.js";
21
- import "./chunk-GDJ7JT2R.js";
21
+ import "./chunk-33HBY5CF.js";
22
22
  import "./chunk-WGDTG44V.js";
23
- import "./chunk-2PWSMJD7.js";
23
+ import "./chunk-D2LEK7VS.js";
24
24
  import {
25
25
  commandUsage
26
- } from "./chunk-CBASIDQH.js";
26
+ } from "./chunk-I6QGYSB4.js";
27
27
  import {
28
28
  ViewClass
29
29
  } from "./chunk-4KCU2KZL.js";
30
- import "./chunk-YOE3VZFX.js";
30
+ import "./chunk-J3R4XWB3.js";
31
31
  import {
32
32
  Spec
33
- } from "./chunk-XKVU23NC.js";
34
- import "./chunk-CEHPRPGQ.js";
33
+ } from "./chunk-V7EQZOO5.js";
34
+ import "./chunk-ENSGPOLR.js";
35
35
  import {
36
36
  CacheEntry
37
- } from "./chunk-DS7YMIHP.js";
37
+ } from "./chunk-FHMIECHI.js";
38
38
  import "./chunk-APMYKJI2.js";
39
39
  import {
40
40
  assertOk
41
- } from "./chunk-SNOBGFNM.js";
42
- import "./chunk-YBVTY6ZW.js";
41
+ } from "./chunk-ZNUXDX6R.js";
42
+ import "./chunk-VBADA6QU.js";
43
43
  import "./chunk-U7TEQCBN.js";
44
- import "./chunk-VFBCWAOC.js";
45
44
  import "./chunk-XNLSTHDK.js";
46
- import "./chunk-BHJT53TP.js";
47
- import "./chunk-VE6CCH33.js";
45
+ import {
46
+ readStoreIndex,
47
+ removeStoreEntry,
48
+ storeEntryCopied,
49
+ storeEntryLinked,
50
+ storeEntryNames,
51
+ storeEntryTime,
52
+ verifyStoreEntry
53
+ } from "./chunk-263MHLR3.js";
54
+ import "./chunk-PDWPFR5T.js";
55
+ import "./chunk-Y5PA7DVK.js";
56
+ import {
57
+ integrityHex
58
+ } from "./chunk-RH2Y7MPW.js";
48
59
  import {
49
60
  error
50
61
  } from "./chunk-WZWDS3W4.js";
51
62
  import "./chunk-PZLD7RTK.js";
52
63
 
53
64
  // ../../src/cli-sdk/src/commands/cache.ts
65
+ import { readFileSync } from "node:fs";
54
66
  import { mkdir, rm } from "node:fs/promises";
67
+ import { resolve } from "node:path";
55
68
  var view;
56
69
  var CacheView = class extends ViewClass {
57
70
  constructor(options, conf) {
@@ -101,12 +114,27 @@ var usageDef = {
101
114
  },
102
115
  "delete-before": {
103
116
  usage: "<date>",
104
- description: `Purge all cache items from before a given date. Date can be
117
+ description: `Purge all cache items from before a given date, and
118
+ global store entries written before it. Date can be
105
119
  provided in any format that JavaScript can parse.`
106
120
  },
107
121
  "delete-all": {
108
122
  usage: "",
109
123
  description: `Delete the entire cache folder to make vlt slower.`
124
+ },
125
+ verify: {
126
+ usage: ["<package-spec> [<package-spec>...]", "--all"],
127
+ description: `Check global store entries against their cached
128
+ tarballs (file list, contents, exec bits) and remove
129
+ any that differ or have no cached tarball, e.g. after
130
+ a file in \`node_modules\` was edited in place.`
131
+ },
132
+ "prune-store": {
133
+ usage: "",
134
+ description: `Remove global store entries that no \`node_modules\`
135
+ folder links to. Entries ever copied from (install
136
+ scripts, \`store-linker=copy\`, a cache on another
137
+ drive) stay: copies do not show use.`
110
138
  }
111
139
  },
112
140
  examples: {
@@ -123,6 +151,14 @@ var usageDef = {
123
151
  },
124
152
  "vlt cache delete-before 2025-01-01": {
125
153
  description: "Delete all entries created before Jan 1, 2025"
154
+ },
155
+ "verify --all": {
156
+ description: "Check every global store entry"
157
+ }
158
+ },
159
+ options: {
160
+ all: {
161
+ description: "With `verify`, check every global store entry."
126
162
  }
127
163
  }
128
164
  };
@@ -145,6 +181,10 @@ var command = async (conf) => {
145
181
  return deleteBefore(conf, args, view);
146
182
  case "delete-all":
147
183
  return deleteAll(conf, args, view);
184
+ case "verify":
185
+ return verify(conf, args, view);
186
+ case "prune-store":
187
+ return pruneStore(conf, args, view);
148
188
  default: {
149
189
  throw error("Unrecognized cache command", {
150
190
  code: "EUSAGE",
@@ -265,12 +305,23 @@ var deleteBefore = async (conf, args, view2) => {
265
305
  found: before
266
306
  });
267
307
  }
268
- return deleteEntries(
308
+ const map = await deleteEntries(
269
309
  conf,
270
310
  [],
271
311
  (entry) => !!entry.date && entry.date < before,
272
312
  view2
273
313
  );
314
+ const { storeRoot } = conf.options;
315
+ let count = 0;
316
+ for (const hex of storeEntryNames(storeRoot)) {
317
+ const entry = resolve(storeRoot, hex);
318
+ if (storeEntryTime(entry) < before.getTime()) {
319
+ removeStoreEntry(entry);
320
+ count++;
321
+ }
322
+ }
323
+ view2?.stdout(`Removed ${entries(count)}`);
324
+ return map;
274
325
  };
275
326
  var deleteKeys = async (conf, keys, view2) => {
276
327
  if (!keys.length) {
@@ -283,9 +334,87 @@ var deleteKeys = async (conf, keys, view2) => {
283
334
  var deleteAll = async (conf, _, view2) => {
284
335
  const { cache } = await conf.options.packageInfo.getRegistryClient();
285
336
  await rm(cache.path(), { recursive: true, force: true });
337
+ const rf = { recursive: true, force: true };
338
+ await rm(resolve(conf.options.cache, "store"), rf);
339
+ if (cache.store) await rm(cache.store, rf);
286
340
  await mkdir(cache.path(), { recursive: true });
287
341
  view2?.stdout("Deleted all cache entries.");
288
342
  };
343
+ var entries = (n) => `${n} global store entr${n === 1 ? "y" : "ies"}`;
344
+ var entryLabel = (entry, hex) => {
345
+ const i = readStoreIndex(entry);
346
+ return i?.name && i.version ? `${i.name}@${i.version}` : hex;
347
+ };
348
+ var verify = async (conf, specs, view2) => {
349
+ const all = !!conf.values.all;
350
+ if (!specs.length && !all) {
351
+ throw error("Must provide specs to verify, or --all", {
352
+ code: "EUSAGE"
353
+ });
354
+ }
355
+ const { packageInfo, storeRoot } = conf.options;
356
+ const cachePath = (await packageInfo.getRegistryClient()).cache.path();
357
+ const present = new Set(storeEntryNames(storeRoot));
358
+ const checks = [];
359
+ const missing = [];
360
+ if (all) {
361
+ for (const hex of present) checks.push([hex, hex]);
362
+ } else {
363
+ for (const spec of specs) {
364
+ const { integrity } = await packageInfo.resolve(
365
+ Spec.parseArgs(spec, conf.options)
366
+ );
367
+ const hex = integrityHex(integrity);
368
+ if (hex && present.has(hex)) checks.push([spec, hex]);
369
+ else {
370
+ missing.push(spec);
371
+ view2?.stdout("Not in the global store:", spec);
372
+ }
373
+ }
374
+ }
375
+ const removed = {};
376
+ for (const [key, hex] of checks) {
377
+ const entry = resolve(storeRoot, hex);
378
+ let tarball;
379
+ try {
380
+ tarball = CacheEntry.decode(
381
+ readFileSync(resolve(cachePath, hex))
382
+ ).buffer();
383
+ } catch {
384
+ }
385
+ const reason = tarball ? verifyStoreEntry(entry, tarball) : "no cached tarball";
386
+ if (reason) {
387
+ const label = all ? entryLabel(entry, hex) : key;
388
+ removeStoreEntry(entry);
389
+ removed[key] = reason;
390
+ view2?.stdout("-", label, reason);
391
+ }
392
+ }
393
+ const n = Object.keys(removed).length;
394
+ view2?.stdout(`Checked ${entries(checks.length)}, removed ${n}`);
395
+ return {
396
+ checked: checks.length,
397
+ removed,
398
+ ...!all && { missing }
399
+ };
400
+ };
401
+ var pruneStore = async (conf, _, view2) => {
402
+ const { storeRoot } = conf.options;
403
+ const names = storeEntryNames(storeRoot);
404
+ const removed = {};
405
+ for (const hex of names) {
406
+ const entry = resolve(storeRoot, hex);
407
+ const index = readStoreIndex(entry);
408
+ if (storeEntryCopied(entry, index) || storeEntryLinked(entry, index)) {
409
+ continue;
410
+ }
411
+ removeStoreEntry(entry);
412
+ removed[hex] = "unused";
413
+ }
414
+ const n = Object.keys(removed).length;
415
+ view2?.stdout(`Removed ${n} of ${entries(names.length)}`);
416
+ return { checked: names.length, removed };
417
+ };
289
418
  var add = async (conf, specs, view2) => {
290
419
  if (!specs.length) {
291
420
  throw error("Must provide specs to add to the cache", {