@vltpkg/cli-js 1.0.1 → 1.0.3

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 (83) hide show
  1. package/{access-SXQICNAN.js → access-5WETTBDZ.js} +9 -7
  2. package/{bugs-OOPMFRCI.js → bugs-KONFLIQQ.js} +19 -18
  3. package/{build-HDXI5OA7.js → build-S7G2DU7I.js} +12 -10
  4. package/{cache-RW4Y4XNQ.js → cache-Z4OIMLXQ.js} +23 -21
  5. package/{chunk-RXNA2XCX.js → chunk-4KCU2KZL.js} +8 -1
  6. package/{chunk-F2FKLPZD.js → chunk-5B23EKN4.js} +4 -4
  7. package/{chunk-4ZXA6RLP.js → chunk-5QJEOGEM.js} +3 -1
  8. package/{chunk-CCQYIYTA.js → chunk-5UPPEUG2.js} +11 -11
  9. package/chunk-BJBFEQRR.js +667 -0
  10. package/{chunk-MU7Y4R5E.js → chunk-DYCF76WI.js} +4 -4
  11. package/{chunk-EHEVBLDB.js → chunk-E737X73P.js} +38 -24
  12. package/{chunk-ICJRCXSG.js → chunk-FFOXTPQA.js} +12 -9
  13. package/chunk-G7UPIJAP.js +903 -0
  14. package/{chunk-CNSTFT7U.js → chunk-HAYXR3MW.js} +1 -1
  15. package/{chunk-U6DM3ROE.js → chunk-HNCE3YE5.js} +1649 -1569
  16. package/{chunk-2PLIV3N3.js → chunk-IITIX4ID.js} +740 -6
  17. package/chunk-LPIBYUMT.js +854 -0
  18. package/{chunk-E5YE7UTZ.js → chunk-LZGKX7JI.js} +114 -50
  19. package/{chunk-3SQ5Y324.js → chunk-NXEH3NQZ.js} +11 -13
  20. package/{chunk-MT76WHSM.js → chunk-OCJDISSI.js} +12 -6
  21. package/chunk-RNJSI3NZ.js +75 -0
  22. package/{chunk-FAG776ZD.js → chunk-T4GYDWUJ.js} +1 -1
  23. package/{chunk-VM2RMMY4.js → chunk-TMBNGWXK.js} +3 -3
  24. package/{chunk-EQ633HIM.js → chunk-UAAZW4N6.js} +4 -4
  25. package/{chunk-D5CP6O6G.js → chunk-UXIRAU5T.js} +4 -4
  26. package/{chunk-EFWPI6IY.js → chunk-VB3IWNHX.js} +1 -1
  27. package/chunk-VE6CCH33.js +3000 -0
  28. package/{chunk-UCD3RJYG.js → chunk-W2Q5EIMH.js} +8 -8
  29. package/{chunk-VZ7UNZHR.js → chunk-XQSBCMSC.js} +5 -5
  30. package/{reporter-2XBYWAVU.js → chunk-XU5SMHXP.js} +35 -10
  31. package/{ci-MTYU2K2A.js → ci-RZZE375O.js} +17 -16
  32. package/cli-package.json +1 -1
  33. package/{config-TVAXCTQO.js → config-LL3RLMZG.js} +9 -12
  34. package/{config-6NXV2BXW.js → config-MDFY3ORD.js} +15 -18
  35. package/{create-LXI5DCDW.js → create-GVSDTOGQ.js} +23 -23
  36. package/{deprecate-2AQBL5XT.js → deprecate-T4TQLGXQ.js} +16 -14
  37. package/{dist-tag-BFSYLRIH.js → dist-tag-GO46UQUN.js} +11 -9
  38. package/{docs-ADPJ4B4C.js → docs-FJME563T.js} +19 -18
  39. package/{exec-GMS54RAC.js → exec-M22KBPCK.js} +23 -23
  40. package/{exec-cache-R5LVZL5Z.js → exec-cache-3UNLDUAP.js} +22 -22
  41. package/{exec-local-TVCLZGIM.js → exec-local-YHVO5RLU.js} +20 -18
  42. package/{help-6CECUD6C.js → help-ZEWMLOJX.js} +3 -3
  43. package/{init-XXFLGYVP.js → init-4HPZY2KN.js} +12 -10
  44. package/{install-6KMXYSF5.js → install-2TZIP4PJ.js} +18 -17
  45. package/{list-RUO3SUKY.js → list-NFFXER43.js} +20 -18
  46. package/{login-6I2CGO7I.js → login-KV5YC5Z2.js} +9 -7
  47. package/{logout-JTU4BJKH.js → logout-I2VT3NAR.js} +9 -7
  48. package/{pack-NCWH2TUA.js → pack-47ZKFSHI.js} +16 -14
  49. package/package.json +6 -6
  50. package/{ping-4MEAC2WD.js → ping-Q7Y7QV63.js} +9 -7
  51. package/{pkg-ENSKG6G7.js → pkg-VTJS2ISJ.js} +13 -11
  52. package/{profile-62YHNFSO.js → profile-YXZYVEUX.js} +9 -7
  53. package/{publish-PPY724N2.js → publish-CBN67KN2.js} +21 -19
  54. package/{query-NLWXKOOT.js → query-U3QHF3ZE.js} +20 -18
  55. package/{registry-QGI44LG4.js → registry-CZPFR3OF.js} +3 -3
  56. package/registry-client-package.json +1 -1
  57. package/registry-client-src-revalidate.js +2080 -349
  58. package/{repo-BFRAXIVU.js → repo-4UIQRBI7.js} +19 -18
  59. package/{chunk-4RZDJQ5U.js → reporter-DKZTTACW.js} +5 -5
  60. package/{run-7O65747G.js → run-5DUYI6GL.js} +20 -18
  61. package/{run-exec-2OYWHL6K.js → run-exec-HPNBVAXH.js} +20 -18
  62. package/security-archive-src-update-expired.js +39 -4
  63. package/{setup-MMIDAIJI.js → setup-23W5FQVW.js} +24 -15
  64. package/{src-OK3KHDYR.js → src-2NB67FPG.js} +22 -23
  65. package/src-6OKPBJJT.js +59 -0
  66. package/src-M5RRGKUM.js +913 -0
  67. package/{token-VLVXUW54.js → token-SRCS5CRU.js} +9 -7
  68. package/{uninstall-TAG6QIAG.js → uninstall-JXHAFXZ2.js} +18 -17
  69. package/{unpublish-Y4L5J2IA.js → unpublish-GRYB5KQH.js} +12 -10
  70. package/{update-RYH4RKBS.js → update-GDLL4ER6.js} +17 -16
  71. package/{version-COHB32ON.js → version-JVG4CI4L.js} +13 -11
  72. package/{view-P7U4MF43.js → view-ABQLVL4L.js} +13 -15
  73. package/vlr.js +1 -1
  74. package/vlrx.js +1 -1
  75. package/vlt.js +1 -1
  76. package/vlx.js +1 -1
  77. package/vlxl.js +1 -1
  78. package/{whoami-47MVFMZC.js → whoami-RCCZ7BXI.js} +9 -7
  79. package/chunk-7NHXV6AH.js +0 -4488
  80. package/chunk-HB7CKTYO.js +0 -75
  81. package/chunk-PW6S6AIO.js +0 -716
  82. package/chunk-WXMYKCQW.js +0 -1640
  83. package/{chunk-Y7CQIZ7Y.js → chunk-FEIPJIEN.js} +3 -3
@@ -0,0 +1,913 @@
1
+ var global = globalThis;
2
+ import {Buffer} from "node:buffer";
3
+ import {setTimeout as _vlt_setTimeout,clearTimeout as _vlt_clearTimeout,setImmediate as _vlt_setImmediate,clearImmediate as _vlt_clearImmediate,setInterval as _vlt_setInterval,clearInterval as _vlt_clearInterval} from "node:timers";
4
+ globalThis.setTimeout = _vlt_setTimeout;
5
+ globalThis.clearTimeout = _vlt_clearTimeout;
6
+ globalThis.setImmediate = _vlt_setImmediate;
7
+ globalThis.clearImmediate = _vlt_clearImmediate;
8
+ globalThis.setInterval = _vlt_setInterval;
9
+ globalThis.clearInterval = _vlt_clearInterval;
10
+ import {createRequire as _vlt_createRequire} from "node:module";
11
+ var require = _vlt_createRequire(import.meta.filename);
12
+ import {
13
+ rimraf
14
+ } from "./chunk-BJBFEQRR.js";
15
+ import "./chunk-VE6CCH33.js";
16
+ import {
17
+ asError
18
+ } from "./chunk-IITIX4ID.js";
19
+ import {
20
+ error
21
+ } from "./chunk-WZWDS3W4.js";
22
+ import "./chunk-PZLD7RTK.js";
23
+
24
+ // ../../src/tar/src/unpack.ts
25
+ import { randomBytes } from "node:crypto";
26
+ import { lstat, mkdir, rename, writeFile } from "node:fs/promises";
27
+ import {
28
+ basename as basename2,
29
+ dirname,
30
+ isAbsolute,
31
+ relative,
32
+ resolve,
33
+ sep
34
+ } from "node:path";
35
+
36
+ // ../../node_modules/.vlt/~npm~tar@7.5.20/node_modules/tar/dist/esm/header.js
37
+ import { posix as pathModule } from "node:path";
38
+
39
+ // ../../node_modules/.vlt/~npm~tar@7.5.20/node_modules/tar/dist/esm/large-numbers.js
40
+ var encode = (num, buf) => {
41
+ if (!Number.isSafeInteger(num)) {
42
+ throw Error("cannot encode number outside of javascript safe integer range");
43
+ } else if (num < 0) {
44
+ encodeNegative(num, buf);
45
+ } else {
46
+ encodePositive(num, buf);
47
+ }
48
+ return buf;
49
+ };
50
+ var encodePositive = (num, buf) => {
51
+ buf[0] = 128;
52
+ for (var i = buf.length; i > 1; i--) {
53
+ buf[i - 1] = num & 255;
54
+ num = Math.floor(num / 256);
55
+ }
56
+ };
57
+ var encodeNegative = (num, buf) => {
58
+ buf[0] = 255;
59
+ var flipped = false;
60
+ num = num * -1;
61
+ for (var i = buf.length; i > 1; i--) {
62
+ var byte = num & 255;
63
+ num = Math.floor(num / 256);
64
+ if (flipped) {
65
+ buf[i - 1] = onesComp(byte);
66
+ } else if (byte === 0) {
67
+ buf[i - 1] = 0;
68
+ } else {
69
+ flipped = true;
70
+ buf[i - 1] = twosComp(byte);
71
+ }
72
+ }
73
+ };
74
+ var parse = (buf) => {
75
+ const pre = buf[0];
76
+ const value = pre === 128 ? pos(buf.subarray(1, buf.length)) : pre === 255 ? twos(buf) : null;
77
+ if (value === null) {
78
+ throw Error("invalid base256 encoding");
79
+ }
80
+ if (!Number.isSafeInteger(value)) {
81
+ throw Error("parsed number outside of javascript safe integer range");
82
+ }
83
+ return value;
84
+ };
85
+ var twos = (buf) => {
86
+ var len = buf.length;
87
+ var sum = 0;
88
+ var flipped = false;
89
+ for (var i = len - 1; i > -1; i--) {
90
+ var byte = Number(buf[i]);
91
+ var f;
92
+ if (flipped) {
93
+ f = onesComp(byte);
94
+ } else if (byte === 0) {
95
+ f = byte;
96
+ } else {
97
+ flipped = true;
98
+ f = twosComp(byte);
99
+ }
100
+ if (f !== 0) {
101
+ sum -= f * Math.pow(256, len - i - 1);
102
+ }
103
+ }
104
+ return sum;
105
+ };
106
+ var pos = (buf) => {
107
+ var len = buf.length;
108
+ var sum = 0;
109
+ for (var i = len - 1; i > -1; i--) {
110
+ var byte = Number(buf[i]);
111
+ if (byte !== 0) {
112
+ sum += byte * Math.pow(256, len - i - 1);
113
+ }
114
+ }
115
+ return sum;
116
+ };
117
+ var onesComp = (byte) => (255 ^ byte) & 255;
118
+ var twosComp = (byte) => (255 ^ byte) + 1 & 255;
119
+
120
+ // ../../node_modules/.vlt/~npm~tar@7.5.20/node_modules/tar/dist/esm/types.js
121
+ var isCode = (c) => name.has(c);
122
+ var normalFsTypes = /* @__PURE__ */ new Set([
123
+ "0",
124
+ "",
125
+ "1",
126
+ "2",
127
+ "3",
128
+ "4",
129
+ "5",
130
+ "6",
131
+ "7",
132
+ "D"
133
+ ]);
134
+ var name = /* @__PURE__ */ new Map([
135
+ ["0", "File"],
136
+ // same as File
137
+ ["", "OldFile"],
138
+ ["1", "Link"],
139
+ ["2", "SymbolicLink"],
140
+ // Devices and FIFOs aren't fully supported
141
+ // they are parsed, but skipped when unpacking
142
+ ["3", "CharacterDevice"],
143
+ ["4", "BlockDevice"],
144
+ ["5", "Directory"],
145
+ ["6", "FIFO"],
146
+ // same as File
147
+ ["7", "ContiguousFile"],
148
+ // pax headers
149
+ ["g", "GlobalExtendedHeader"],
150
+ ["x", "ExtendedHeader"],
151
+ // vendor-specific stuff
152
+ // skip
153
+ ["A", "SolarisACL"],
154
+ // like 5, but with data, which should be skipped
155
+ ["D", "GNUDumpDir"],
156
+ // metadata only, skip
157
+ ["I", "Inode"],
158
+ // data = link path of next file
159
+ ["K", "NextFileHasLongLinkpath"],
160
+ // data = path of next file
161
+ ["L", "NextFileHasLongPath"],
162
+ // skip
163
+ ["M", "ContinuationFile"],
164
+ // like L
165
+ ["N", "OldGnuLongPath"],
166
+ // skip
167
+ ["S", "SparseFile"],
168
+ // skip
169
+ ["V", "TapeVolumeHeader"],
170
+ // like x
171
+ ["X", "OldExtendedHeader"]
172
+ ]);
173
+ var code = new Map(Array.from(name).map((kv) => [kv[1], kv[0]]));
174
+
175
+ // ../../node_modules/.vlt/~npm~tar@7.5.20/node_modules/tar/dist/esm/header.js
176
+ var notNegative = (n) => n === void 0 || n < 0 ? void 0 : n;
177
+ var Header = class {
178
+ cksumValid = false;
179
+ needPax = false;
180
+ nullBlock = false;
181
+ block;
182
+ path;
183
+ mode;
184
+ uid;
185
+ gid;
186
+ size;
187
+ cksum;
188
+ #type = "Unsupported";
189
+ linkpath;
190
+ uname;
191
+ gname;
192
+ devmaj = 0;
193
+ devmin = 0;
194
+ atime;
195
+ ctime;
196
+ mtime;
197
+ charset;
198
+ comment;
199
+ constructor(data, off = 0, ex, gex) {
200
+ if (Buffer.isBuffer(data)) {
201
+ this.decode(data, off || 0, ex, gex);
202
+ } else if (data) {
203
+ this.#slurp(data);
204
+ }
205
+ }
206
+ decode(buf, off, ex, gex) {
207
+ if (!off) {
208
+ off = 0;
209
+ }
210
+ if (!buf || !(buf.length >= off + 512)) {
211
+ throw new Error("need 512 bytes for header");
212
+ }
213
+ const t = decString(buf, off + 156, 1);
214
+ const isNormalFS = normalFsTypes.has(t);
215
+ const exForFields = isNormalFS ? ex : void 0;
216
+ const gexForFields = isNormalFS ? gex : void 0;
217
+ this.path = exForFields?.path ?? decString(buf, off, 100);
218
+ this.mode = exForFields?.mode ?? gexForFields?.mode ?? decNumber(buf, off + 100, 8);
219
+ this.uid = exForFields?.uid ?? gexForFields?.uid ?? decNumber(buf, off + 108, 8);
220
+ this.gid = exForFields?.gid ?? gexForFields?.gid ?? decNumber(buf, off + 116, 8);
221
+ this.size = notNegative(exForFields?.size ?? gexForFields?.size ?? decNumber(buf, off + 124, 12));
222
+ this.mtime = exForFields?.mtime ?? gexForFields?.mtime ?? decDate(buf, off + 136, 12);
223
+ this.cksum = decNumber(buf, off + 148, 12);
224
+ if (gexForFields)
225
+ this.#slurp(gexForFields, true);
226
+ if (exForFields)
227
+ this.#slurp(exForFields);
228
+ if (isCode(t)) {
229
+ this.#type = t || "0";
230
+ }
231
+ if (this.#type === "0" && this.path.slice(-1) === "/") {
232
+ this.#type = "5";
233
+ }
234
+ if (this.#type === "5") {
235
+ this.size = 0;
236
+ }
237
+ this.linkpath = decString(buf, off + 157, 100);
238
+ if (buf.subarray(off + 257, off + 265).toString() === "ustar\x0000") {
239
+ this.uname = exForFields?.uname ?? gexForFields?.uname ?? decString(buf, off + 265, 32);
240
+ this.gname = exForFields?.gname ?? gexForFields?.gname ?? decString(buf, off + 297, 32);
241
+ this.devmaj = exForFields?.devmaj ?? gexForFields?.devmaj ?? decNumber(buf, off + 329, 8) ?? 0;
242
+ this.devmin = exForFields?.devmin ?? gexForFields?.devmin ?? decNumber(buf, off + 337, 8) ?? 0;
243
+ if (buf[off + 475] !== 0) {
244
+ const prefix = decString(buf, off + 345, 155);
245
+ this.path = prefix + "/" + this.path;
246
+ } else {
247
+ const prefix = decString(buf, off + 345, 130);
248
+ if (prefix) {
249
+ this.path = prefix + "/" + this.path;
250
+ }
251
+ this.atime = ex?.atime ?? gex?.atime ?? decDate(buf, off + 476, 12);
252
+ this.ctime = ex?.ctime ?? gex?.ctime ?? decDate(buf, off + 488, 12);
253
+ }
254
+ }
255
+ let sum = 8 * 32;
256
+ for (let i = off; i < off + 148; i++) {
257
+ sum += buf[i];
258
+ }
259
+ for (let i = off + 156; i < off + 512; i++) {
260
+ sum += buf[i];
261
+ }
262
+ this.cksumValid = sum === this.cksum;
263
+ if (this.cksum === void 0 && sum === 8 * 32) {
264
+ this.nullBlock = true;
265
+ }
266
+ }
267
+ #slurp(ex, gex = false) {
268
+ Object.assign(this, Object.fromEntries(Object.entries(ex).filter(([k, v]) => {
269
+ return !(v === null || v === void 0 || k === "size" && Number(v) < 0 || k === "path" && gex || k === "linkpath" && gex || k === "global");
270
+ })));
271
+ }
272
+ encode(buf, off = 0) {
273
+ if (!buf) {
274
+ buf = this.block = Buffer.alloc(512);
275
+ }
276
+ if (this.#type === "Unsupported") {
277
+ this.#type = "0";
278
+ }
279
+ if (!(buf.length >= off + 512)) {
280
+ throw new Error("need 512 bytes for header");
281
+ }
282
+ const prefixSize = this.ctime || this.atime ? 130 : 155;
283
+ const split = splitPrefix(this.path || "", prefixSize);
284
+ const path = split[0];
285
+ const prefix = split[1];
286
+ this.needPax = !!split[2];
287
+ this.needPax = encString(buf, off, 100, path) || this.needPax;
288
+ this.needPax = encNumber(buf, off + 100, 8, this.mode) || this.needPax;
289
+ this.needPax = encNumber(buf, off + 108, 8, this.uid) || this.needPax;
290
+ this.needPax = encNumber(buf, off + 116, 8, this.gid) || this.needPax;
291
+ this.needPax = encNumber(buf, off + 124, 12, this.size) || this.needPax;
292
+ this.needPax = encDate(buf, off + 136, 12, this.mtime) || this.needPax;
293
+ buf[off + 156] = Number(this.#type.codePointAt(0));
294
+ this.needPax = encString(buf, off + 157, 100, this.linkpath) || this.needPax;
295
+ buf.write("ustar\x0000", off + 257, 8);
296
+ this.needPax = encString(buf, off + 265, 32, this.uname) || this.needPax;
297
+ this.needPax = encString(buf, off + 297, 32, this.gname) || this.needPax;
298
+ this.needPax = encNumber(buf, off + 329, 8, this.devmaj) || this.needPax;
299
+ this.needPax = encNumber(buf, off + 337, 8, this.devmin) || this.needPax;
300
+ this.needPax = encString(buf, off + 345, prefixSize, prefix) || this.needPax;
301
+ if (buf[off + 475] !== 0) {
302
+ this.needPax = encString(buf, off + 345, 155, prefix) || this.needPax;
303
+ } else {
304
+ this.needPax = encString(buf, off + 345, 130, prefix) || this.needPax;
305
+ this.needPax = encDate(buf, off + 476, 12, this.atime) || this.needPax;
306
+ this.needPax = encDate(buf, off + 488, 12, this.ctime) || this.needPax;
307
+ }
308
+ let sum = 8 * 32;
309
+ for (let i = off; i < off + 148; i++) {
310
+ sum += buf[i];
311
+ }
312
+ for (let i = off + 156; i < off + 512; i++) {
313
+ sum += buf[i];
314
+ }
315
+ this.cksum = sum;
316
+ encNumber(buf, off + 148, 8, this.cksum);
317
+ this.cksumValid = true;
318
+ return this.needPax;
319
+ }
320
+ get type() {
321
+ return this.#type === "Unsupported" ? this.#type : name.get(this.#type);
322
+ }
323
+ get typeKey() {
324
+ return this.#type;
325
+ }
326
+ set type(type) {
327
+ const c = String(code.get(type));
328
+ if (isCode(c) || c === "Unsupported") {
329
+ this.#type = c;
330
+ } else if (isCode(type)) {
331
+ this.#type = type;
332
+ } else {
333
+ throw new TypeError("invalid entry type: " + type);
334
+ }
335
+ }
336
+ };
337
+ var splitPrefix = (p, prefixSize) => {
338
+ const pathSize = 100;
339
+ let pp = p;
340
+ let prefix = "";
341
+ let ret = void 0;
342
+ const root = pathModule.parse(p).root || ".";
343
+ if (Buffer.byteLength(pp) < pathSize) {
344
+ ret = [pp, prefix, false];
345
+ } else {
346
+ prefix = pathModule.dirname(pp);
347
+ pp = pathModule.basename(pp);
348
+ do {
349
+ if (Buffer.byteLength(pp) <= pathSize && Buffer.byteLength(prefix) <= prefixSize) {
350
+ ret = [pp, prefix, false];
351
+ } else if (Buffer.byteLength(pp) > pathSize && Buffer.byteLength(prefix) <= prefixSize) {
352
+ ret = [pp.slice(0, pathSize - 1), prefix, true];
353
+ } else {
354
+ pp = pathModule.join(pathModule.basename(prefix), pp);
355
+ prefix = pathModule.dirname(prefix);
356
+ }
357
+ } while (prefix !== root && ret === void 0);
358
+ if (!ret) {
359
+ ret = [p.slice(0, pathSize - 1), "", true];
360
+ }
361
+ }
362
+ return ret;
363
+ };
364
+ var decString = (buf, off, size) => buf.subarray(off, off + size).toString("utf8").replace(/\0.*/, "");
365
+ var decDate = (buf, off, size) => numToDate(decNumber(buf, off, size));
366
+ var numToDate = (num) => num === void 0 ? void 0 : new Date(num * 1e3);
367
+ var decNumber = (buf, off, size) => Number(buf[off]) & 128 ? parse(buf.subarray(off, off + size)) : decSmallNumber(buf, off, size);
368
+ var nanUndef = (value) => isNaN(value) ? void 0 : value;
369
+ var decSmallNumber = (buf, off, size) => nanUndef(parseInt(buf.subarray(off, off + size).toString("utf8").replace(/\0.*$/, "").trim(), 8));
370
+ var MAXNUM = {
371
+ 12: 8589934591,
372
+ 8: 2097151
373
+ };
374
+ var encNumber = (buf, off, size, num) => num === void 0 ? false : num > MAXNUM[size] || num < 0 ? (encode(num, buf.subarray(off, off + size)), true) : (encSmallNumber(buf, off, size, num), false);
375
+ var encSmallNumber = (buf, off, size, num) => buf.write(octalString(num, size), off, size, "ascii");
376
+ var octalString = (num, size) => padOctal(Math.floor(num).toString(8), size);
377
+ var padOctal = (str, size) => (str.length === size - 1 ? str : new Array(size - str.length - 1).join("0") + str + " ") + "\0";
378
+ var encDate = (buf, off, size, date) => date === void 0 ? false : encNumber(buf, off, size, date.getTime() / 1e3);
379
+ var NULLS = new Array(156).join("\0");
380
+ var encString = (buf, off, size, str) => str === void 0 ? false : (buf.write(str + NULLS, off, size, "utf8"), str.length !== Buffer.byteLength(str) || str.length > size);
381
+
382
+ // ../../node_modules/.vlt/~npm~tar@7.5.20/node_modules/tar/dist/esm/pax.js
383
+ import { basename } from "node:path";
384
+ var Pax = class _Pax {
385
+ atime;
386
+ mtime;
387
+ ctime;
388
+ charset;
389
+ comment;
390
+ gid;
391
+ uid;
392
+ gname;
393
+ uname;
394
+ linkpath;
395
+ dev;
396
+ ino;
397
+ nlink;
398
+ path;
399
+ size;
400
+ mode;
401
+ global;
402
+ constructor(obj, global = false) {
403
+ this.atime = obj.atime;
404
+ this.charset = obj.charset;
405
+ this.comment = obj.comment;
406
+ this.ctime = obj.ctime;
407
+ this.dev = obj.dev;
408
+ this.gid = obj.gid;
409
+ this.global = global;
410
+ this.gname = obj.gname;
411
+ this.ino = obj.ino;
412
+ this.linkpath = obj.linkpath;
413
+ this.mtime = obj.mtime;
414
+ this.nlink = obj.nlink;
415
+ this.path = obj.path;
416
+ this.size = obj.size;
417
+ this.uid = obj.uid;
418
+ this.uname = obj.uname;
419
+ }
420
+ encode() {
421
+ const body = this.encodeBody();
422
+ if (body === "") {
423
+ return Buffer.allocUnsafe(0);
424
+ }
425
+ const bodyLen = Buffer.byteLength(body);
426
+ const bufLen = 512 * Math.ceil(1 + bodyLen / 512);
427
+ const buf = Buffer.allocUnsafe(bufLen);
428
+ for (let i = 0; i < 512; i++) {
429
+ buf[i] = 0;
430
+ }
431
+ new Header({
432
+ // XXX split the path
433
+ // then the path should be PaxHeader + basename, but less than 99,
434
+ // prepend with the dirname
435
+ /* c8 ignore start */
436
+ path: ("PaxHeader/" + basename(this.path ?? "")).slice(0, 99),
437
+ /* c8 ignore stop */
438
+ mode: this.mode || 420,
439
+ uid: this.uid,
440
+ gid: this.gid,
441
+ size: bodyLen,
442
+ mtime: this.mtime,
443
+ type: this.global ? "GlobalExtendedHeader" : "ExtendedHeader",
444
+ linkpath: "",
445
+ uname: this.uname || "",
446
+ gname: this.gname || "",
447
+ devmaj: 0,
448
+ devmin: 0,
449
+ atime: this.atime,
450
+ ctime: this.ctime
451
+ }).encode(buf);
452
+ buf.write(body, 512, bodyLen, "utf8");
453
+ for (let i = bodyLen + 512; i < buf.length; i++) {
454
+ buf[i] = 0;
455
+ }
456
+ return buf;
457
+ }
458
+ encodeBody() {
459
+ return this.encodeField("path") + this.encodeField("ctime") + this.encodeField("atime") + this.encodeField("dev") + this.encodeField("ino") + this.encodeField("nlink") + this.encodeField("charset") + this.encodeField("comment") + this.encodeField("gid") + this.encodeField("gname") + this.encodeField("linkpath") + this.encodeField("mtime") + this.encodeField("size") + this.encodeField("uid") + this.encodeField("uname");
460
+ }
461
+ encodeField(field) {
462
+ if (this[field] === void 0) {
463
+ return "";
464
+ }
465
+ const r = this[field];
466
+ const v = r instanceof Date ? r.getTime() / 1e3 : r;
467
+ const s = " " + (field === "dev" || field === "ino" || field === "nlink" ? "SCHILY." : "") + field + "=" + v + "\n";
468
+ const byteLen = Buffer.byteLength(s);
469
+ let digits = Math.floor(Math.log(byteLen) / Math.log(10)) + 1;
470
+ if (byteLen + digits >= Math.pow(10, digits)) {
471
+ digits += 1;
472
+ }
473
+ const len = digits + byteLen;
474
+ return len + s;
475
+ }
476
+ static parse(str, ex, g = false) {
477
+ return new _Pax(merge(parseKV(str), ex), g);
478
+ }
479
+ };
480
+ var merge = (a, b) => b ? Object.assign({}, b, a) : a;
481
+ var parseKV = (str) => str.replace(/\n$/, "").split("\n").reduce(parseKVLine, /* @__PURE__ */ Object.create(null));
482
+ var parseKVLine = (set, line) => {
483
+ const n = parseInt(line, 10);
484
+ if (n !== Buffer.byteLength(line) + 1) {
485
+ return set;
486
+ }
487
+ line = line.slice((n + " ").length);
488
+ const kv = line.split("=");
489
+ const r = kv.shift();
490
+ if (!r) {
491
+ return set;
492
+ }
493
+ const k = r.replace(/^SCHILY\.(dev|ino|nlink)/, "$1");
494
+ const v = kv.join("=").replace(/\0.*/, "");
495
+ switch (k) {
496
+ case "path":
497
+ case "linkpath":
498
+ case "type":
499
+ case "charset":
500
+ case "comment":
501
+ case "gname":
502
+ case "uname":
503
+ set[k] = v;
504
+ break;
505
+ case "ctime":
506
+ case "atime":
507
+ case "mtime":
508
+ set[k] = new Date(Number(v) * 1e3);
509
+ break;
510
+ case "size":
511
+ const s = +v;
512
+ if (s >= 0)
513
+ set[k] = s;
514
+ break;
515
+ case "gid":
516
+ case "uid":
517
+ case "dev":
518
+ case "ino":
519
+ case "nlink":
520
+ case "mode":
521
+ set[k] = +v;
522
+ break;
523
+ }
524
+ return set;
525
+ };
526
+
527
+ // ../../src/tar/src/unpack.ts
528
+ import { unzip as unzipCB } from "node:zlib";
529
+
530
+ // ../../src/tar/src/find-tar-dir.ts
531
+ var findTarDir = (path, tarDir) => {
532
+ if (tarDir !== void 0) return tarDir;
533
+ if (!path) return void 0;
534
+ const i = path.indexOf("/", path.startsWith("./") ? 2 : 0);
535
+ if (i === -1) return void 0;
536
+ const chomp = path.substring(0, i);
537
+ if (chomp === "." || chomp === ".." || chomp === "" || chomp === "./." || chomp === "./.." || chomp === "./") {
538
+ return void 0;
539
+ }
540
+ return chomp + "/";
541
+ };
542
+
543
+ // ../../src/tar/src/unpack.ts
544
+ var unzip = async (input) => new Promise(
545
+ (res, rej) => (
546
+ /* c8 ignore start */
547
+ unzipCB(input, (er, result) => er ? rej(er) : res(result))
548
+ )
549
+ /* c8 ignore stop */
550
+ );
551
+ var exists = async (path) => {
552
+ try {
553
+ await lstat(path);
554
+ return true;
555
+ } catch {
556
+ return false;
557
+ }
558
+ };
559
+ var id = 1;
560
+ var tmp = randomBytes(6).toString("hex") + ".";
561
+ var tmpSuffix = () => tmp + String(id++);
562
+ var foldKeys = process.platform === "darwin" || process.platform === "win32";
563
+ var entryKey = (p) => foldKeys ? p.toLowerCase() : p;
564
+ var parseWriteLanes = (raw) => {
565
+ const n = Number(raw);
566
+ return Number.isFinite(n) && n >= 1 ? Math.floor(n) : 64;
567
+ };
568
+ var writeLaneLimit = parseWriteLanes(
569
+ process.env.VLT_TAR_WRITE_LANES
570
+ );
571
+ var writeLanesUsed = 0;
572
+ var writeLaneWaiters = [];
573
+ var writeLaneHead = 0;
574
+ var acquireWriteLane = async () => {
575
+ if (writeLanesUsed < writeLaneLimit) {
576
+ writeLanesUsed++;
577
+ return;
578
+ }
579
+ await new Promise((res) => writeLaneWaiters.push(res));
580
+ };
581
+ var releaseWriteLane = () => {
582
+ const next = writeLaneWaiters[writeLaneHead];
583
+ if (next) {
584
+ writeLaneWaiters[writeLaneHead] = void 0;
585
+ writeLaneHead++;
586
+ if (writeLaneHead === writeLaneWaiters.length) {
587
+ writeLaneWaiters.length = 0;
588
+ writeLaneHead = 0;
589
+ }
590
+ next();
591
+ } else {
592
+ writeLanesUsed--;
593
+ }
594
+ };
595
+ var withWriteLane = async (fn) => {
596
+ await acquireWriteLane();
597
+ try {
598
+ return await fn();
599
+ } finally {
600
+ releaseWriteLane();
601
+ }
602
+ };
603
+ var rethrowFirst = (results) => {
604
+ for (const result of results) {
605
+ if (result.status === "rejected") throw result.reason;
606
+ }
607
+ };
608
+ var isClearlySafeRelPath = (sub) => {
609
+ const len = sub.length;
610
+ if (len === 0) return true;
611
+ if (sub.charCodeAt(0) === 47) return false;
612
+ if (len >= 2 && sub.charCodeAt(1) === 58) {
613
+ const c = sub.charCodeAt(0);
614
+ if (c >= 65 && c <= 90 || c >= 97 && c <= 122) {
615
+ return false;
616
+ }
617
+ }
618
+ let i = 0;
619
+ while (i < len) {
620
+ let j = i;
621
+ while (j < len && sub.charCodeAt(j) !== 47) j++;
622
+ const slen = j - i;
623
+ if (slen === 1 && sub.charCodeAt(i) === 46) return false;
624
+ if (slen === 2 && sub.charCodeAt(i) === 46 && sub.charCodeAt(i + 1) === 46) {
625
+ return false;
626
+ }
627
+ i = j + 1;
628
+ }
629
+ return true;
630
+ };
631
+ var checkFs = (h, tarDir, target) => {
632
+ if (!h.path) return false;
633
+ if (!tarDir) return false;
634
+ h.path = h.path.replace(/[\\/]+/g, "/");
635
+ if (!h.path.startsWith(tarDir)) return false;
636
+ const sub = h.path.slice(tarDir.length);
637
+ if (isClearlySafeRelPath(sub)) return true;
638
+ const rel = relative(target, resolve(target, sub));
639
+ if (rel === ".." || rel.startsWith(`..${sep}`) || isAbsolute(rel)) {
640
+ return false;
641
+ }
642
+ return true;
643
+ };
644
+ var write = async (path, body, executable = false) => {
645
+ await writeFile(path, body, {
646
+ mode: executable ? 511 : 438
647
+ });
648
+ };
649
+ var unpack = async (tarData, target) => {
650
+ const isGzip = tarData[0] === 31 && tarData[1] === 139;
651
+ await unpackUnzipped(
652
+ isGzip ? await unzip(tarData) : tarData,
653
+ target
654
+ );
655
+ };
656
+ var unpackUnzipped = async (buffer, target) => {
657
+ const isGzip = buffer[0] === 31 && buffer[1] === 139;
658
+ if (isGzip) {
659
+ throw error("still gzipped after unzipping", {
660
+ found: isGzip,
661
+ wanted: false
662
+ });
663
+ }
664
+ if (buffer.length % 512 !== 0) {
665
+ throw error("Invalid tarball: length not divisible by 512", {
666
+ found: buffer.length
667
+ });
668
+ }
669
+ if (buffer.length < 1024) {
670
+ throw error(
671
+ "Invalid tarball: not terminated by 1024 null bytes",
672
+ { found: buffer.length }
673
+ );
674
+ }
675
+ for (let i = buffer.length - 1024; i < buffer.length; i++) {
676
+ if (buffer[i] !== 0) {
677
+ throw error(
678
+ "Invalid tarball: not terminated by 1024 null bytes",
679
+ { found: buffer.subarray(i, i + 10) }
680
+ );
681
+ }
682
+ }
683
+ const tmp2 = dirname(target) + sep + "." + basename2(target) + "." + tmpSuffix();
684
+ const og = tmp2 + ".ORIGINAL";
685
+ let succeeded = false;
686
+ try {
687
+ const entries = /* @__PURE__ */ new Map();
688
+ let tarDir = void 0;
689
+ let offset = 0;
690
+ let h;
691
+ let ex = void 0;
692
+ let gex = void 0;
693
+ while (offset < buffer.length && !(h = new Header(buffer, offset, ex, gex)).nullBlock) {
694
+ offset += 512;
695
+ ex = void 0;
696
+ gex = void 0;
697
+ const size = h.size ?? 0;
698
+ const body = buffer.subarray(offset, offset + size);
699
+ if (!h.cksumValid) continue;
700
+ offset += 512 * Math.ceil(size / 512);
701
+ switch (h.type) {
702
+ case "File":
703
+ if (!tarDir) tarDir = findTarDir(h.path, tarDir);
704
+ if (!tarDir) continue;
705
+ if (!checkFs(h, tarDir, tmp2)) continue;
706
+ {
707
+ const dest = resolve(tmp2, h.path.substring(tarDir.length));
708
+ const key = entryKey(dest);
709
+ if (entries.get(key)?.dir === true) {
710
+ throw error("file/directory collision in tarball", {
711
+ path: dest
712
+ });
713
+ }
714
+ entries.set(key, {
715
+ path: dest,
716
+ body,
717
+ executable: 1 === ((h.mode ?? 1638) & 1),
718
+ dir: false
719
+ });
720
+ }
721
+ break;
722
+ case "Directory":
723
+ if (!tarDir) tarDir = findTarDir(h.path, tarDir);
724
+ if (!tarDir) continue;
725
+ if (!checkFs(h, tarDir, tmp2)) continue;
726
+ {
727
+ const dest = resolve(tmp2, h.path.substring(tarDir.length));
728
+ const key = entryKey(dest);
729
+ if (entries.get(key)?.dir === false) {
730
+ throw error("file/directory collision in tarball", {
731
+ path: dest
732
+ });
733
+ }
734
+ entries.set(key, {
735
+ path: dest,
736
+ dir: true
737
+ });
738
+ }
739
+ break;
740
+ case "GlobalExtendedHeader":
741
+ gex = Pax.parse(body.toString(), gex, true);
742
+ break;
743
+ case "ExtendedHeader":
744
+ case "OldExtendedHeader":
745
+ ex = Pax.parse(body.toString(), ex, false);
746
+ break;
747
+ case "NextFileHasLongPath":
748
+ case "OldGnuLongPath":
749
+ ex ??= /* @__PURE__ */ Object.create(null);
750
+ ex.path = body.toString().replace(/\0.*/, "");
751
+ break;
752
+ }
753
+ }
754
+ const dirs = /* @__PURE__ */ new Set();
755
+ const files = [];
756
+ for (const e of entries.values()) {
757
+ if (e.dir) dirs.add(e.path);
758
+ else {
759
+ dirs.add(dirname(e.path));
760
+ files.push(e);
761
+ }
762
+ }
763
+ rethrowFirst(
764
+ await Promise.allSettled(
765
+ [...dirs].map(
766
+ (d) => mkdir(d, { recursive: true, mode: 511 })
767
+ )
768
+ )
769
+ );
770
+ rethrowFirst(
771
+ await Promise.allSettled(
772
+ files.map(
773
+ (f) => withWriteLane(() => write(f.path, f.body, f.executable))
774
+ )
775
+ )
776
+ );
777
+ const targetExists = await exists(target);
778
+ if (targetExists) await rename(target, og);
779
+ await rename(tmp2, target);
780
+ if (targetExists) await rimraf(og);
781
+ succeeded = true;
782
+ } finally {
783
+ if (!succeeded) {
784
+ if (await exists(og)) {
785
+ await rimraf(target);
786
+ await rename(og, target);
787
+ }
788
+ await rimraf(tmp2);
789
+ }
790
+ }
791
+ };
792
+
793
+ // ../../src/tar/src/pool.ts
794
+ import os from "node:os";
795
+
796
+ // ../../src/tar/src/unpack-request.ts
797
+ var ID = 1;
798
+ var UnpackRequest = class {
799
+ id = ID++;
800
+ tarData;
801
+ target;
802
+ resolve;
803
+ reject;
804
+ promise = new Promise((res, rej) => {
805
+ this.resolve = res;
806
+ this.reject = rej;
807
+ });
808
+ constructor(tarData, target) {
809
+ this.tarData = tarData;
810
+ this.target = target;
811
+ }
812
+ };
813
+
814
+ // ../../src/tar/src/worker.ts
815
+ var isObj = (o) => !!o && typeof o === "object";
816
+ var isResponseOK = (o) => isObj(o) && typeof o.id === "number" && o.ok === true;
817
+ var Worker = class {
818
+ onMessage;
819
+ constructor(onMessage) {
820
+ this.onMessage = onMessage;
821
+ }
822
+ async process(req) {
823
+ const { target, tarData, id: id2 } = req;
824
+ try {
825
+ await unpack(tarData, target);
826
+ const m = { id: id2, ok: true };
827
+ this.onMessage(m);
828
+ } catch (error2) {
829
+ const m = { id: id2, error: error2 };
830
+ this.onMessage(m);
831
+ }
832
+ }
833
+ };
834
+
835
+ // ../../src/tar/src/pool.ts
836
+ var Pool = class {
837
+ /**
838
+ * Number of workers to emplly. Defaults to 1 less than the number of
839
+ * CPUs, or 1.
840
+ */
841
+ /* c8 ignore next */
842
+ jobs = 8 * (Math.max(os.availableParallelism(), 2) - 1);
843
+ /**
844
+ * Set of currently active worker threads
845
+ */
846
+ workers = /* @__PURE__ */ new Set();
847
+ /**
848
+ * Queue of requests awaiting an available worker
849
+ */
850
+ queue = [];
851
+ /**
852
+ * Requests that have been assigned to a worker, but have not yet
853
+ * been confirmed completed.
854
+ */
855
+ pending = /* @__PURE__ */ new Map();
856
+ // handle a message from the worker
857
+ #onMessage(w, m) {
858
+ const { id: id2 } = m;
859
+ const ur = this.pending.get(id2);
860
+ if (!ur) return;
861
+ if (isResponseOK(m)) {
862
+ ur.resolve();
863
+ } else {
864
+ ur.reject(
865
+ error(
866
+ asError(m.error, "failed without error message").message,
867
+ {
868
+ found: m,
869
+ cause: m.error
870
+ }
871
+ )
872
+ );
873
+ }
874
+ const next = this.queue.shift();
875
+ if (!next) {
876
+ this.workers.delete(w);
877
+ } else {
878
+ void w.process(next);
879
+ }
880
+ }
881
+ // create a new worker
882
+ #createWorker(req) {
883
+ const w = new Worker(
884
+ (m) => this.#onMessage(w, m)
885
+ );
886
+ this.workers.add(w);
887
+ void w.process(req);
888
+ }
889
+ /**
890
+ * Provide the tardata to be unpacked, and the location where it's to be
891
+ * placed. Will create a new worker up to the `jobs` value, and then start
892
+ * pushing in the queue for workers to pick up as they become available.
893
+ *
894
+ * Returned promise resolves when the provided tarball has been extracted.
895
+ */
896
+ async unpack(tarData, target) {
897
+ const ur = new UnpackRequest(tarData, target);
898
+ this.pending.set(ur.id, ur);
899
+ if (this.workers.size < this.jobs) {
900
+ this.#createWorker(ur);
901
+ } else {
902
+ this.queue.push(ur);
903
+ }
904
+ return ur.promise;
905
+ }
906
+ };
907
+ export {
908
+ Pool,
909
+ UnpackRequest,
910
+ Worker,
911
+ isResponseOK,
912
+ unpack
913
+ };